Feat: refactoring codebase

This commit is contained in:
2026-02-16 16:26:57 +01:00
parent 58624b64cf
commit 37f5f74ec1
25 changed files with 1047 additions and 5360 deletions

View File

@@ -1,280 +1,39 @@
use super::*;
use ratatui::style::Color;
use super::palette::Palette;
pub fn theme() -> ThemeColors {
let bg = Color::Rgb(0, 0, 0);
let surface = Color::Rgb(18, 18, 18);
let surface2 = Color::Rgb(30, 30, 30);
let border = Color::Rgb(60, 60, 60);
let fg = Color::Rgb(255, 255, 255);
let fg_dim = Color::Rgb(180, 180, 180);
let fg_muted = Color::Rgb(120, 120, 120);
let bright = Color::Rgb(255, 255, 255);
let medium = Color::Rgb(180, 180, 180);
let dim = Color::Rgb(120, 120, 120);
let dark = Color::Rgb(80, 80, 80);
let darker = Color::Rgb(50, 50, 50);
ThemeColors {
ui: UiColors {
bg,
bg_rgb: (0, 0, 0),
text_primary: fg,
text_muted: fg_dim,
text_dim: fg_muted,
border,
header: bright,
unfocused: fg_muted,
accent: bright,
surface,
},
status: StatusColors {
playing_bg: Color::Rgb(40, 40, 40),
playing_fg: bright,
stopped_bg: Color::Rgb(25, 25, 25),
stopped_fg: medium,
fill_on: bright,
fill_off: dark,
fill_bg: surface,
},
selection: SelectionColors {
cursor_bg: bright,
cursor_fg: bg,
selected_bg: Color::Rgb(60, 60, 60),
selected_fg: bright,
in_range_bg: Color::Rgb(40, 40, 40),
in_range_fg: fg,
cursor: bright,
selected: Color::Rgb(60, 60, 60),
in_range: Color::Rgb(40, 40, 40),
},
tile: TileColors {
playing_active_bg: Color::Rgb(70, 70, 70),
playing_active_fg: bright,
playing_inactive_bg: Color::Rgb(50, 50, 50),
playing_inactive_fg: medium,
active_bg: Color::Rgb(45, 45, 45),
active_fg: bright,
content_bg: Color::Rgb(55, 55, 55),
inactive_bg: surface,
inactive_fg: fg_dim,
active_selected_bg: Color::Rgb(80, 80, 80),
active_in_range_bg: Color::Rgb(55, 55, 55),
link_bright: [
(255, 255, 255),
(200, 200, 200),
(160, 160, 160),
(220, 220, 220),
(180, 180, 180),
],
link_dim: [
(60, 60, 60),
(50, 50, 50),
(45, 45, 45),
(55, 55, 55),
(48, 48, 48),
],
},
header: HeaderColors {
tempo_bg: Color::Rgb(50, 50, 50),
tempo_fg: bright,
bank_bg: Color::Rgb(40, 40, 40),
bank_fg: medium,
pattern_bg: Color::Rgb(35, 35, 35),
pattern_fg: medium,
stats_bg: surface,
stats_fg: fg_dim,
},
modal: ModalColors {
border: bright,
border_accent: medium,
border_warn: fg_dim,
border_dim: fg_muted,
confirm: medium,
rename: medium,
input: bright,
editor: bright,
preview: fg_muted,
},
flash: FlashColors {
error_bg: Color::Rgb(60, 60, 60),
error_fg: bright,
success_bg: Color::Rgb(50, 50, 50),
success_fg: bright,
info_bg: surface,
info_fg: fg,
},
list: ListColors {
playing_bg: Color::Rgb(50, 50, 50),
playing_fg: bright,
staged_play_bg: Color::Rgb(45, 45, 45),
staged_play_fg: medium,
staged_stop_bg: Color::Rgb(35, 35, 35),
staged_stop_fg: dim,
edit_bg: Color::Rgb(40, 40, 40),
edit_fg: bright,
hover_bg: surface2,
hover_fg: fg,
muted_bg: Color::Rgb(22, 22, 22),
muted_fg: dark,
soloed_bg: Color::Rgb(60, 60, 60),
soloed_fg: bright,
},
link_status: LinkStatusColors {
disabled: dim,
connected: bright,
listening: medium,
},
syntax: SyntaxColors {
gap_bg: bg,
executed_bg: Color::Rgb(35, 35, 35),
selected_bg: Color::Rgb(55, 55, 55),
emit: (bright, Color::Rgb(45, 45, 45)),
number: (medium, Color::Rgb(35, 35, 35)),
string: (bright, Color::Rgb(40, 40, 40)),
comment: (dark, bg),
keyword: (bright, Color::Rgb(50, 50, 50)),
stack_op: (medium, Color::Rgb(30, 30, 30)),
operator: (medium, Color::Rgb(35, 35, 35)),
sound: (bright, Color::Rgb(45, 45, 45)),
param: (medium, Color::Rgb(35, 35, 35)),
context: (medium, Color::Rgb(30, 30, 30)),
note: (bright, Color::Rgb(40, 40, 40)),
interval: (medium, Color::Rgb(35, 35, 35)),
variable: (medium, Color::Rgb(30, 30, 30)),
vary: (dim, Color::Rgb(25, 25, 25)),
generator: (bright, Color::Rgb(45, 45, 45)),
user_defined: (medium, Color::Rgb(35, 35, 35)),
default: (fg_dim, bg),
},
table: TableColors {
row_even: bg,
row_odd: surface,
},
values: ValuesColors {
tempo: bright,
value: fg_dim,
},
hint: HintColors {
key: bright,
text: fg_muted,
},
view_badge: ViewBadgeColors { bg: fg, fg: bg },
nav: NavColors {
selected_bg: Color::Rgb(60, 60, 60),
selected_fg: fg,
unselected_bg: surface,
unselected_fg: fg_muted,
},
editor_widget: EditorWidgetColors {
cursor_bg: fg,
cursor_fg: bg,
selection_bg: Color::Rgb(60, 60, 60),
completion_bg: surface,
completion_fg: fg,
completion_selected: bright,
completion_example: medium,
},
browser: BrowserColors {
directory: medium,
project_file: bright,
selected: bright,
file: fg,
focused_border: bright,
unfocused_border: fg_muted,
root: fg,
file_icon: fg_muted,
folder_icon: medium,
empty_text: fg_muted,
},
input: InputColors {
text: bright,
cursor: fg,
hint: fg_muted,
},
search: SearchColors {
active: bright,
inactive: fg_muted,
match_bg: bright,
match_fg: bg,
},
markdown: MarkdownColors {
h1: bright,
h2: medium,
h3: dim,
code: medium,
code_border: Color::Rgb(60, 60, 60),
link: bright,
link_url: dim,
quote: fg_muted,
text: fg,
list: fg,
},
engine: EngineColors {
header: bright,
header_focused: bright,
divider: Color::Rgb(50, 50, 50),
scroll_indicator: Color::Rgb(70, 70, 70),
label: dim,
label_focused: medium,
label_dim: dark,
value: fg,
focused: bright,
normal: fg,
dim: dark,
path: dim,
border_magenta: medium,
border_green: medium,
border_cyan: medium,
separator: Color::Rgb(50, 50, 50),
hint_active: bright,
hint_inactive: darker,
},
dict: DictColors {
word_name: bright,
word_bg: Color::Rgb(30, 30, 30),
alias: fg_muted,
stack_sig: medium,
description: fg,
example: dim,
category_focused: bright,
category_selected: medium,
category_normal: fg,
category_dimmed: dark,
border_focused: bright,
border_normal: darker,
header_desc: dim,
},
title: TitleColors {
big_title: bright,
author: medium,
link: medium,
license: dim,
prompt: dim,
subtitle: fg,
},
meter: MeterColors {
low: dim,
mid: medium,
high: bright,
low_rgb: (120, 120, 120),
mid_rgb: (180, 180, 180),
high_rgb: (255, 255, 255),
},
sparkle: SparkleColors {
colors: [
(255, 255, 255),
(200, 200, 200),
(160, 160, 160),
(220, 220, 220),
(180, 180, 180),
],
},
confirm: ConfirmColors {
border: bright,
button_selected_bg: bright,
button_selected_fg: bg,
},
pub fn palette() -> Palette {
Palette {
bg: (0, 0, 0),
surface: (18, 18, 18),
surface2: (30, 30, 30),
fg: (255, 255, 255),
fg_dim: (180, 180, 180),
fg_muted: (120, 120, 120),
accent: (255, 255, 255),
red: (180, 180, 180),
green: (255, 255, 255),
yellow: (180, 180, 180),
blue: (180, 180, 180),
purple: (180, 180, 180),
cyan: (255, 255, 255),
orange: (255, 255, 255),
tempo_color: (255, 255, 255),
bank_color: (180, 180, 180),
pattern_color: (180, 180, 180),
title_accent: (255, 255, 255),
title_author: (180, 180, 180),
secondary: (120, 120, 120),
link_bright: [
(255, 255, 255), (200, 200, 200), (160, 160, 160),
(220, 220, 220), (180, 180, 180),
],
link_dim: [
(60, 60, 60), (50, 50, 50), (45, 45, 45),
(55, 55, 55), (48, 48, 48),
],
sparkle: [
(255, 255, 255), (200, 200, 200), (160, 160, 160),
(220, 220, 220), (180, 180, 180),
],
meter: [(120, 120, 120), (180, 180, 180), (255, 255, 255)],
}
}