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, 188, 186); 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, }, 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, muted_bg: Color::Rgb(32, 30, 42), muted_fg: muted, soloed_bg: Color::Rgb(60, 50, 40), soloed_fg: gold, }, 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)), user_defined: (love, Color::Rgb(55, 35, 45)), 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, }, } }