Feat: begin slight refactoring

This commit is contained in:
2026-02-01 12:38:48 +01:00
parent 5b4a6ddd14
commit c356aebfde
39 changed files with 4699 additions and 3168 deletions

View File

@@ -0,0 +1,277 @@
use super::*;
use ratatui::style::Color;
pub fn theme() -> ThemeColors {
let bg = Color::Rgb(25, 23, 36);
let bg_light = Color::Rgb(33, 32, 46);
let bg_lighter = Color::Rgb(42, 39, 63);
let fg = Color::Rgb(224, 222, 244);
let fg_dim = Color::Rgb(144, 140, 170);
let muted = Color::Rgb(110, 106, 134);
let rose = Color::Rgb(235, 111, 146);
let gold = Color::Rgb(246, 193, 119);
let foam = Color::Rgb(156, 207, 216);
let iris = Color::Rgb(196, 167, 231);
let pine = Color::Rgb(49, 116, 143);
let subtle = Color::Rgb(235, 188, 186);
let love = Color::Rgb(235, 111, 146);
let darker_bg = Color::Rgb(21, 19, 30);
ThemeColors {
ui: UiColors {
bg,
bg_rgb: (25, 23, 36),
text_primary: fg,
text_muted: fg_dim,
text_dim: muted,
border: bg_lighter,
header: foam,
unfocused: muted,
accent: rose,
surface: bg_light,
},
status: StatusColors {
playing_bg: Color::Rgb(35, 50, 55),
playing_fg: foam,
stopped_bg: Color::Rgb(55, 40, 50),
stopped_fg: love,
fill_on: foam,
fill_off: muted,
fill_bg: bg_light,
},
selection: SelectionColors {
cursor_bg: rose,
cursor_fg: bg,
selected_bg: Color::Rgb(60, 50, 70),
selected_fg: rose,
in_range_bg: Color::Rgb(50, 45, 60),
in_range_fg: fg,
cursor: rose,
selected: Color::Rgb(60, 50, 70),
in_range: Color::Rgb(50, 45, 60),
},
tile: TileColors {
playing_active_bg: Color::Rgb(65, 55, 50),
playing_active_fg: gold,
playing_inactive_bg: Color::Rgb(55, 55, 55),
playing_inactive_fg: subtle,
active_bg: Color::Rgb(35, 50, 60),
active_fg: foam,
inactive_bg: bg_light,
inactive_fg: fg_dim,
active_selected_bg: Color::Rgb(60, 50, 70),
active_in_range_bg: Color::Rgb(50, 45, 60),
link_bright: [
(235, 111, 146),
(196, 167, 231),
(246, 193, 119),
(156, 207, 216),
(49, 116, 143),
],
link_dim: [
(75, 45, 55),
(60, 50, 75),
(75, 60, 45),
(50, 65, 70),
(30, 50, 55),
],
},
header: HeaderColors {
tempo_bg: Color::Rgb(60, 45, 60),
tempo_fg: iris,
bank_bg: Color::Rgb(35, 50, 60),
bank_fg: foam,
pattern_bg: Color::Rgb(35, 55, 60),
pattern_fg: pine,
stats_bg: bg_light,
stats_fg: fg_dim,
},
modal: ModalColors {
border: foam,
border_accent: rose,
border_warn: gold,
border_dim: muted,
confirm: gold,
rename: iris,
input: foam,
editor: foam,
preview: muted,
},
flash: FlashColors {
error_bg: Color::Rgb(60, 40, 50),
error_fg: love,
success_bg: Color::Rgb(35, 55, 55),
success_fg: foam,
info_bg: bg_light,
info_fg: fg,
event_rgb: (50, 45, 60),
},
list: ListColors {
playing_bg: Color::Rgb(35, 55, 55),
playing_fg: foam,
staged_play_bg: Color::Rgb(55, 50, 70),
staged_play_fg: iris,
staged_stop_bg: Color::Rgb(60, 45, 55),
staged_stop_fg: love,
edit_bg: Color::Rgb(35, 50, 60),
edit_fg: foam,
hover_bg: bg_lighter,
hover_fg: fg,
},
link_status: LinkStatusColors {
disabled: love,
connected: foam,
listening: gold,
},
syntax: SyntaxColors {
gap_bg: darker_bg,
executed_bg: Color::Rgb(40, 40, 55),
selected_bg: Color::Rgb(65, 55, 50),
emit: (fg, Color::Rgb(60, 45, 60)),
number: (iris, Color::Rgb(55, 50, 70)),
string: (gold, Color::Rgb(65, 55, 45)),
comment: (muted, darker_bg),
keyword: (rose, Color::Rgb(60, 45, 55)),
stack_op: (foam, Color::Rgb(40, 55, 60)),
operator: (love, Color::Rgb(60, 45, 55)),
sound: (foam, Color::Rgb(40, 55, 60)),
param: (gold, Color::Rgb(65, 55, 45)),
context: (gold, Color::Rgb(65, 55, 45)),
note: (pine, Color::Rgb(35, 50, 55)),
interval: (Color::Rgb(100, 160, 180), Color::Rgb(35, 55, 60)),
variable: (pine, Color::Rgb(35, 50, 55)),
vary: (subtle, Color::Rgb(60, 55, 55)),
generator: (foam, Color::Rgb(40, 55, 60)),
default: (fg_dim, darker_bg),
},
table: TableColors {
row_even: darker_bg,
row_odd: bg,
},
values: ValuesColors {
tempo: gold,
value: fg_dim,
},
hint: HintColors {
key: gold,
text: muted,
},
view_badge: ViewBadgeColors { bg: fg, fg: bg },
nav: NavColors {
selected_bg: Color::Rgb(60, 50, 70),
selected_fg: fg,
unselected_bg: bg_light,
unselected_fg: muted,
},
editor_widget: EditorWidgetColors {
cursor_bg: fg,
cursor_fg: bg,
selection_bg: Color::Rgb(55, 50, 70),
completion_bg: bg_light,
completion_fg: fg,
completion_selected: gold,
completion_example: foam,
},
browser: BrowserColors {
directory: foam,
project_file: iris,
selected: gold,
file: fg,
focused_border: gold,
unfocused_border: muted,
root: fg,
file_icon: muted,
folder_icon: foam,
empty_text: muted,
},
input: InputColors {
text: foam,
cursor: fg,
hint: muted,
},
search: SearchColors {
active: gold,
inactive: muted,
match_bg: gold,
match_fg: bg,
},
markdown: MarkdownColors {
h1: foam,
h2: gold,
h3: iris,
code: pine,
code_border: Color::Rgb(60, 55, 75),
link: rose,
link_url: Color::Rgb(100, 95, 120),
quote: muted,
text: fg,
list: fg,
},
engine: EngineColors {
header: foam,
header_focused: gold,
divider: Color::Rgb(55, 52, 70),
scroll_indicator: Color::Rgb(70, 65, 90),
label: Color::Rgb(130, 125, 155),
label_focused: Color::Rgb(160, 155, 185),
label_dim: Color::Rgb(100, 95, 125),
value: Color::Rgb(200, 195, 220),
focused: gold,
normal: fg,
dim: Color::Rgb(70, 65, 90),
path: Color::Rgb(130, 125, 155),
border_magenta: iris,
border_green: foam,
border_cyan: pine,
separator: Color::Rgb(55, 52, 70),
hint_active: Color::Rgb(230, 180, 110),
hint_inactive: Color::Rgb(55, 52, 70),
},
dict: DictColors {
word_name: pine,
word_bg: Color::Rgb(40, 50, 55),
alias: muted,
stack_sig: iris,
description: fg,
example: Color::Rgb(130, 125, 155),
category_focused: gold,
category_selected: foam,
category_normal: fg,
category_dimmed: Color::Rgb(70, 65, 90),
border_focused: gold,
border_normal: Color::Rgb(55, 52, 70),
header_desc: Color::Rgb(150, 145, 175),
},
title: TitleColors {
big_title: rose,
author: foam,
link: pine,
license: gold,
prompt: Color::Rgb(150, 145, 175),
subtitle: fg,
},
meter: MeterColors {
low: foam,
mid: gold,
high: love,
low_rgb: (156, 207, 216),
mid_rgb: (246, 193, 119),
high_rgb: (235, 111, 146),
},
sparkle: SparkleColors {
colors: [
(156, 207, 216),
(246, 193, 119),
(49, 116, 143),
(235, 111, 146),
(196, 167, 231),
],
},
confirm: ConfirmColors {
border: gold,
button_selected_bg: gold,
button_selected_fg: bg,
},
}
}