Euclidean + hue rotation
Some checks failed
Deploy Website / deploy (push) Has been cancelled

This commit is contained in:
2026-02-02 13:25:27 +01:00
parent c396c39b6b
commit 4396147a8b
21 changed files with 1338 additions and 53 deletions

View File

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