Feat: refactoring codebase

This commit is contained in:
2026-02-16 16:26:57 +01:00
parent b60703aa16
commit 773c7bbd1c
25 changed files with 1047 additions and 5360 deletions

View File

@@ -1,284 +1,39 @@
use super::*;
use ratatui::style::Color;
use super::palette::Palette;
pub fn theme() -> ThemeColors {
let polar_night0 = Color::Rgb(46, 52, 64);
let polar_night1 = Color::Rgb(59, 66, 82);
let polar_night2 = Color::Rgb(67, 76, 94);
let polar_night3 = Color::Rgb(76, 86, 106);
let snow_storm0 = Color::Rgb(216, 222, 233);
let snow_storm2 = Color::Rgb(236, 239, 244);
let frost0 = Color::Rgb(143, 188, 187);
let frost1 = Color::Rgb(136, 192, 208);
let frost2 = Color::Rgb(129, 161, 193);
let aurora_red = Color::Rgb(191, 97, 106);
let aurora_orange = Color::Rgb(208, 135, 112);
let aurora_yellow = Color::Rgb(235, 203, 139);
let aurora_green = Color::Rgb(163, 190, 140);
let aurora_purple = Color::Rgb(180, 142, 173);
ThemeColors {
ui: UiColors {
bg: polar_night0,
bg_rgb: (46, 52, 64),
text_primary: snow_storm2,
text_muted: snow_storm0,
text_dim: polar_night3,
border: polar_night2,
header: frost1,
unfocused: polar_night3,
accent: frost1,
surface: polar_night1,
},
status: StatusColors {
playing_bg: Color::Rgb(50, 65, 60),
playing_fg: aurora_green,
stopped_bg: Color::Rgb(65, 50, 55),
stopped_fg: aurora_red,
fill_on: aurora_green,
fill_off: polar_night3,
fill_bg: polar_night1,
},
selection: SelectionColors {
cursor_bg: frost1,
cursor_fg: polar_night0,
selected_bg: Color::Rgb(70, 85, 105),
selected_fg: frost1,
in_range_bg: Color::Rgb(60, 70, 90),
in_range_fg: snow_storm0,
cursor: frost1,
selected: Color::Rgb(70, 85, 105),
in_range: Color::Rgb(60, 70, 90),
},
tile: TileColors {
playing_active_bg: Color::Rgb(80, 70, 65),
playing_active_fg: aurora_orange,
playing_inactive_bg: Color::Rgb(75, 70, 55),
playing_inactive_fg: aurora_yellow,
active_bg: Color::Rgb(50, 65, 65),
active_fg: frost0,
content_bg: Color::Rgb(57, 72, 72),
inactive_bg: polar_night1,
inactive_fg: snow_storm0,
active_selected_bg: Color::Rgb(75, 75, 95),
active_in_range_bg: Color::Rgb(60, 70, 85),
link_bright: [
(136, 192, 208),
(180, 142, 173),
(208, 135, 112),
(143, 188, 187),
(163, 190, 140),
],
link_dim: [
(55, 75, 85),
(70, 60, 70),
(75, 55, 50),
(55, 75, 75),
(60, 75, 55),
],
},
header: HeaderColors {
tempo_bg: Color::Rgb(65, 55, 70),
tempo_fg: aurora_purple,
bank_bg: Color::Rgb(45, 60, 70),
bank_fg: frost2,
pattern_bg: Color::Rgb(50, 65, 65),
pattern_fg: frost0,
stats_bg: polar_night1,
stats_fg: snow_storm0,
},
modal: ModalColors {
border: frost1,
border_accent: aurora_purple,
border_warn: aurora_orange,
border_dim: polar_night3,
confirm: aurora_orange,
rename: aurora_purple,
input: frost2,
editor: frost1,
preview: polar_night3,
},
flash: FlashColors {
error_bg: Color::Rgb(65, 50, 55),
error_fg: aurora_red,
success_bg: Color::Rgb(50, 65, 55),
success_fg: aurora_green,
info_bg: polar_night1,
info_fg: snow_storm2,
},
list: ListColors {
playing_bg: Color::Rgb(50, 65, 55),
playing_fg: aurora_green,
staged_play_bg: Color::Rgb(65, 55, 70),
staged_play_fg: aurora_purple,
staged_stop_bg: Color::Rgb(70, 55, 60),
staged_stop_fg: aurora_red,
edit_bg: Color::Rgb(50, 65, 65),
edit_fg: frost0,
hover_bg: polar_night2,
hover_fg: snow_storm2,
muted_bg: Color::Rgb(55, 60, 70),
muted_fg: polar_night3,
soloed_bg: Color::Rgb(70, 65, 50),
soloed_fg: aurora_yellow,
},
link_status: LinkStatusColors {
disabled: aurora_red,
connected: aurora_green,
listening: aurora_yellow,
},
syntax: SyntaxColors {
gap_bg: polar_night1,
executed_bg: Color::Rgb(55, 55, 70),
selected_bg: Color::Rgb(80, 70, 55),
emit: (snow_storm2, Color::Rgb(75, 55, 60)),
number: (aurora_orange, Color::Rgb(65, 55, 50)),
string: (aurora_green, Color::Rgb(50, 60, 50)),
comment: (polar_night3, polar_night0),
keyword: (aurora_purple, Color::Rgb(60, 50, 65)),
stack_op: (frost2, Color::Rgb(45, 55, 70)),
operator: (aurora_yellow, Color::Rgb(65, 60, 45)),
sound: (frost0, Color::Rgb(45, 60, 60)),
param: (frost1, Color::Rgb(50, 60, 70)),
context: (aurora_orange, Color::Rgb(65, 55, 50)),
note: (aurora_green, Color::Rgb(50, 60, 50)),
interval: (Color::Rgb(170, 200, 150), Color::Rgb(50, 60, 45)),
variable: (aurora_purple, Color::Rgb(60, 50, 60)),
vary: (aurora_yellow, Color::Rgb(65, 60, 45)),
generator: (frost0, Color::Rgb(45, 60, 55)),
user_defined: (aurora_orange, Color::Rgb(60, 50, 45)),
default: (snow_storm0, polar_night1),
},
table: TableColors {
row_even: polar_night1,
row_odd: polar_night0,
},
values: ValuesColors {
tempo: aurora_orange,
value: snow_storm0,
},
hint: HintColors {
key: aurora_orange,
text: polar_night3,
},
view_badge: ViewBadgeColors {
bg: snow_storm2,
fg: polar_night0,
},
nav: NavColors {
selected_bg: Color::Rgb(65, 75, 95),
selected_fg: snow_storm2,
unselected_bg: polar_night1,
unselected_fg: polar_night3,
},
editor_widget: EditorWidgetColors {
cursor_bg: snow_storm2,
cursor_fg: polar_night0,
selection_bg: Color::Rgb(60, 75, 100),
completion_bg: polar_night1,
completion_fg: snow_storm2,
completion_selected: aurora_orange,
completion_example: frost0,
},
browser: BrowserColors {
directory: frost2,
project_file: aurora_purple,
selected: aurora_orange,
file: snow_storm2,
focused_border: aurora_orange,
unfocused_border: polar_night3,
root: snow_storm2,
file_icon: polar_night3,
folder_icon: frost2,
empty_text: polar_night3,
},
input: InputColors {
text: frost2,
cursor: snow_storm2,
hint: polar_night3,
},
search: SearchColors {
active: aurora_orange,
inactive: polar_night3,
match_bg: aurora_yellow,
match_fg: polar_night0,
},
markdown: MarkdownColors {
h1: frost2,
h2: aurora_orange,
h3: aurora_purple,
code: aurora_green,
code_border: Color::Rgb(75, 85, 100),
link: frost0,
link_url: Color::Rgb(100, 110, 125),
quote: polar_night3,
text: snow_storm2,
list: snow_storm2,
},
engine: EngineColors {
header: frost1,
header_focused: aurora_yellow,
divider: Color::Rgb(70, 80, 95),
scroll_indicator: Color::Rgb(85, 95, 110),
label: Color::Rgb(130, 140, 155),
label_focused: Color::Rgb(160, 170, 185),
label_dim: Color::Rgb(100, 110, 125),
value: Color::Rgb(190, 200, 215),
focused: aurora_yellow,
normal: snow_storm2,
dim: Color::Rgb(85, 95, 110),
path: Color::Rgb(130, 140, 155),
border_magenta: aurora_purple,
border_green: aurora_green,
border_cyan: frost2,
separator: Color::Rgb(70, 80, 95),
hint_active: Color::Rgb(200, 180, 100),
hint_inactive: Color::Rgb(70, 80, 95),
},
dict: DictColors {
word_name: aurora_green,
word_bg: Color::Rgb(50, 60, 75),
alias: polar_night3,
stack_sig: aurora_purple,
description: snow_storm2,
example: Color::Rgb(130, 140, 155),
category_focused: aurora_yellow,
category_selected: frost2,
category_normal: snow_storm2,
category_dimmed: Color::Rgb(85, 95, 110),
border_focused: aurora_yellow,
border_normal: Color::Rgb(70, 80, 95),
header_desc: Color::Rgb(150, 160, 175),
},
title: TitleColors {
big_title: frost1,
author: frost2,
link: frost0,
license: aurora_orange,
prompt: Color::Rgb(150, 160, 175),
subtitle: snow_storm2,
},
meter: MeterColors {
low: aurora_green,
mid: aurora_yellow,
high: aurora_red,
low_rgb: (140, 180, 130),
mid_rgb: (220, 190, 120),
high_rgb: (180, 90, 100),
},
sparkle: SparkleColors {
colors: [
(136, 192, 208),
(208, 135, 112),
(163, 190, 140),
(180, 142, 173),
(235, 203, 139),
],
},
confirm: ConfirmColors {
border: aurora_orange,
button_selected_bg: aurora_orange,
button_selected_fg: polar_night0,
},
pub fn palette() -> Palette {
Palette {
bg: (46, 52, 64),
surface: (59, 66, 82),
surface2: (67, 76, 94),
fg: (236, 239, 244),
fg_dim: (216, 222, 233),
fg_muted: (76, 86, 106),
accent: (136, 192, 208), // frost1
red: (191, 97, 106),
green: (163, 190, 140),
yellow: (235, 203, 139),
blue: (129, 161, 193), // frost2
purple: (180, 142, 173),
cyan: (143, 188, 187), // frost0
orange: (208, 135, 112),
tempo_color: (180, 142, 173),
bank_color: (129, 161, 193),
pattern_color: (143, 188, 187),
title_accent: (136, 192, 208),
title_author: (129, 161, 193),
secondary: (208, 135, 112),
link_bright: [
(136, 192, 208), (180, 142, 173), (208, 135, 112),
(143, 188, 187), (163, 190, 140),
],
link_dim: [
(55, 75, 85), (70, 60, 70), (75, 55, 50),
(55, 75, 75), (60, 75, 55),
],
sparkle: [
(136, 192, 208), (208, 135, 112), (163, 190, 140),
(180, 142, 173), (235, 203, 139),
],
meter: [(140, 180, 130), (220, 190, 120), (180, 90, 100)],
}
}