use super::*; use ratatui::style::Color; pub fn theme() -> ThemeColors { let bg0 = Color::Rgb(40, 40, 40); let bg1 = Color::Rgb(60, 56, 54); let bg2 = Color::Rgb(80, 73, 69); let fg = Color::Rgb(235, 219, 178); let fg2 = Color::Rgb(213, 196, 161); let fg3 = Color::Rgb(189, 174, 147); let fg4 = Color::Rgb(168, 153, 132); let red = Color::Rgb(251, 73, 52); let green = Color::Rgb(184, 187, 38); let yellow = Color::Rgb(250, 189, 47); let blue = Color::Rgb(131, 165, 152); let purple = Color::Rgb(211, 134, 155); let aqua = Color::Rgb(142, 192, 124); let orange = Color::Rgb(254, 128, 25); let darker_bg = Color::Rgb(29, 32, 33); ThemeColors { ui: UiColors { bg: bg0, bg_rgb: (40, 40, 40), text_primary: fg, text_muted: fg3, text_dim: fg4, border: bg2, header: yellow, unfocused: fg4, accent: orange, surface: bg1, }, status: StatusColors { playing_bg: Color::Rgb(50, 60, 45), playing_fg: green, stopped_bg: Color::Rgb(65, 45, 45), stopped_fg: red, fill_on: green, fill_off: fg4, fill_bg: bg1, }, selection: SelectionColors { cursor_bg: orange, cursor_fg: bg0, selected_bg: Color::Rgb(80, 70, 55), selected_fg: yellow, in_range_bg: Color::Rgb(65, 60, 50), in_range_fg: fg2, cursor: orange, selected: Color::Rgb(80, 70, 55), in_range: Color::Rgb(65, 60, 50), }, tile: TileColors { playing_active_bg: Color::Rgb(90, 65, 50), playing_active_fg: orange, playing_inactive_bg: Color::Rgb(80, 75, 45), playing_inactive_fg: yellow, active_bg: Color::Rgb(50, 65, 55), active_fg: aqua, inactive_bg: bg1, inactive_fg: fg3, active_selected_bg: Color::Rgb(85, 70, 60), active_in_range_bg: Color::Rgb(70, 65, 55), link_bright: [ (254, 128, 25), (211, 134, 155), (250, 189, 47), (131, 165, 152), (184, 187, 38), ], link_dim: [ (85, 55, 35), (75, 55, 65), (80, 70, 40), (50, 60, 60), (60, 65, 35), ], }, header: HeaderColors { tempo_bg: Color::Rgb(75, 55, 40), tempo_fg: orange, bank_bg: Color::Rgb(50, 60, 60), bank_fg: blue, pattern_bg: Color::Rgb(50, 65, 50), pattern_fg: aqua, stats_bg: bg1, stats_fg: fg3, }, modal: ModalColors { border: yellow, border_accent: orange, border_warn: red, border_dim: fg4, confirm: orange, rename: purple, input: blue, editor: yellow, preview: fg4, }, flash: FlashColors { error_bg: Color::Rgb(70, 45, 45), error_fg: red, success_bg: Color::Rgb(50, 65, 45), success_fg: green, info_bg: bg1, info_fg: fg, event_rgb: (70, 55, 45), }, list: ListColors { playing_bg: Color::Rgb(50, 65, 45), playing_fg: green, staged_play_bg: Color::Rgb(70, 55, 60), staged_play_fg: purple, staged_stop_bg: Color::Rgb(75, 50, 50), staged_stop_fg: red, edit_bg: Color::Rgb(50, 65, 55), edit_fg: aqua, hover_bg: bg2, hover_fg: fg, muted_bg: Color::Rgb(50, 50, 55), muted_fg: fg4, soloed_bg: Color::Rgb(70, 65, 40), soloed_fg: yellow, }, link_status: LinkStatusColors { disabled: red, connected: green, listening: yellow, }, syntax: SyntaxColors { gap_bg: darker_bg, executed_bg: Color::Rgb(55, 50, 45), selected_bg: Color::Rgb(85, 70, 45), emit: (fg, Color::Rgb(80, 55, 50)), number: (orange, Color::Rgb(70, 50, 40)), string: (green, Color::Rgb(50, 60, 40)), comment: (fg4, darker_bg), keyword: (red, Color::Rgb(70, 45, 45)), stack_op: (blue, Color::Rgb(50, 55, 60)), operator: (yellow, Color::Rgb(70, 65, 40)), sound: (aqua, Color::Rgb(45, 60, 50)), param: (purple, Color::Rgb(65, 50, 55)), context: (orange, Color::Rgb(70, 50, 40)), note: (green, Color::Rgb(50, 60, 40)), interval: (Color::Rgb(170, 200, 100), Color::Rgb(55, 65, 40)), variable: (purple, Color::Rgb(65, 50, 55)), vary: (yellow, Color::Rgb(70, 65, 40)), generator: (aqua, Color::Rgb(45, 60, 50)), default: (fg3, darker_bg), }, table: TableColors { row_even: darker_bg, row_odd: bg0, }, values: ValuesColors { tempo: orange, value: fg3, }, hint: HintColors { key: orange, text: fg4, }, view_badge: ViewBadgeColors { bg: fg, fg: bg0 }, nav: NavColors { selected_bg: Color::Rgb(80, 65, 50), selected_fg: fg, unselected_bg: bg1, unselected_fg: fg4, }, editor_widget: EditorWidgetColors { cursor_bg: fg, cursor_fg: bg0, selection_bg: Color::Rgb(70, 65, 55), completion_bg: bg1, completion_fg: fg, completion_selected: orange, completion_example: aqua, }, browser: BrowserColors { directory: blue, project_file: purple, selected: orange, file: fg, focused_border: orange, unfocused_border: fg4, root: fg, file_icon: fg4, folder_icon: blue, empty_text: fg4, }, input: InputColors { text: blue, cursor: fg, hint: fg4, }, search: SearchColors { active: orange, inactive: fg4, match_bg: yellow, match_fg: bg0, }, markdown: MarkdownColors { h1: blue, h2: orange, h3: purple, code: green, code_border: Color::Rgb(80, 75, 70), link: aqua, link_url: Color::Rgb(120, 115, 105), quote: fg4, text: fg, list: fg, }, engine: EngineColors { header: blue, header_focused: yellow, divider: Color::Rgb(75, 70, 65), scroll_indicator: Color::Rgb(90, 85, 80), label: Color::Rgb(145, 135, 125), label_focused: Color::Rgb(175, 165, 155), label_dim: Color::Rgb(115, 105, 95), value: Color::Rgb(200, 190, 175), focused: yellow, normal: fg, dim: Color::Rgb(90, 85, 80), path: Color::Rgb(145, 135, 125), border_magenta: purple, border_green: green, border_cyan: aqua, separator: Color::Rgb(75, 70, 65), hint_active: Color::Rgb(220, 180, 80), hint_inactive: Color::Rgb(75, 70, 65), }, dict: DictColors { word_name: green, word_bg: Color::Rgb(55, 60, 55), alias: fg4, stack_sig: purple, description: fg, example: Color::Rgb(145, 135, 125), category_focused: yellow, category_selected: blue, category_normal: fg, category_dimmed: Color::Rgb(90, 85, 80), border_focused: yellow, border_normal: Color::Rgb(75, 70, 65), header_desc: Color::Rgb(165, 155, 145), }, title: TitleColors { big_title: orange, author: yellow, link: aqua, license: purple, prompt: Color::Rgb(165, 155, 145), subtitle: fg, }, meter: MeterColors { low: green, mid: yellow, high: red, low_rgb: (170, 175, 35), mid_rgb: (235, 180, 45), high_rgb: (240, 70, 50), }, sparkle: SparkleColors { colors: [ (250, 189, 47), (254, 128, 25), (184, 187, 38), (211, 134, 155), (131, 165, 152), ], }, confirm: ConfirmColors { border: orange, button_selected_bg: orange, button_selected_fg: bg0, }, } }