use super::*; use ratatui::style::Color; pub fn theme() -> ThemeColors { let bg = Color::Rgb(8, 12, 8); let surface = Color::Rgb(16, 24, 16); let surface2 = Color::Rgb(24, 32, 24); let border = Color::Rgb(32, 48, 32); let fg = Color::Rgb(200, 216, 192); let fg_dim = Color::Rgb(122, 144, 112); let fg_muted = Color::Rgb(64, 88, 56); let green = Color::Rgb(64, 192, 64); let bright_green = Color::Rgb(96, 224, 96); let dark_green = Color::Rgb(48, 128, 48); let cyan = Color::Rgb(80, 168, 144); let yellow = Color::Rgb(160, 160, 64); let red = Color::Rgb(192, 80, 64); let orange = Color::Rgb(176, 128, 48); let blue = Color::Rgb(80, 128, 160); let purple = Color::Rgb(128, 104, 144); ThemeColors { ui: UiColors { bg, bg_rgb: (8, 12, 8), text_primary: fg, text_muted: fg_dim, text_dim: fg_muted, border, header: green, unfocused: fg_muted, accent: green, surface, }, status: StatusColors { playing_bg: Color::Rgb(14, 30, 14), playing_fg: bright_green, stopped_bg: Color::Rgb(36, 16, 14), stopped_fg: red, fill_on: green, fill_off: dark_green, fill_bg: surface, }, selection: SelectionColors { cursor_bg: green, cursor_fg: bg, selected_bg: Color::Rgb(20, 40, 20), selected_fg: bright_green, in_range_bg: Color::Rgb(16, 30, 16), in_range_fg: fg, cursor: green, selected: Color::Rgb(20, 40, 20), in_range: Color::Rgb(16, 30, 16), }, tile: TileColors { playing_active_bg: Color::Rgb(16, 38, 16), playing_active_fg: bright_green, playing_inactive_bg: Color::Rgb(28, 36, 14), playing_inactive_fg: yellow, active_bg: Color::Rgb(14, 28, 26), active_fg: cyan, inactive_bg: surface, inactive_fg: fg_dim, active_selected_bg: Color::Rgb(22, 36, 28), active_in_range_bg: Color::Rgb(16, 28, 20), link_bright: [ (64, 192, 64), (80, 168, 144), (160, 160, 64), (80, 128, 160), (192, 80, 64), ], link_dim: [ (14, 38, 14), (16, 34, 28), (32, 32, 14), (16, 26, 32), (38, 16, 14), ], }, header: HeaderColors { tempo_bg: Color::Rgb(26, 22, 30), tempo_fg: purple, bank_bg: Color::Rgb(16, 26, 32), bank_fg: blue, pattern_bg: Color::Rgb(14, 28, 26), pattern_fg: cyan, stats_bg: surface, stats_fg: fg_dim, }, modal: ModalColors { border: green, border_accent: bright_green, border_warn: yellow, border_dim: fg_muted, confirm: red, rename: green, input: cyan, editor: green, preview: fg_muted, }, flash: FlashColors { error_bg: Color::Rgb(40, 16, 14), error_fg: red, success_bg: Color::Rgb(14, 32, 14), success_fg: bright_green, info_bg: surface, info_fg: fg, }, list: ListColors { playing_bg: Color::Rgb(14, 32, 14), playing_fg: bright_green, staged_play_bg: Color::Rgb(26, 22, 30), staged_play_fg: purple, staged_stop_bg: Color::Rgb(40, 16, 14), staged_stop_fg: red, edit_bg: Color::Rgb(14, 28, 26), edit_fg: cyan, hover_bg: surface2, hover_fg: fg, muted_bg: Color::Rgb(10, 14, 10), muted_fg: fg_muted, soloed_bg: Color::Rgb(30, 30, 14), soloed_fg: yellow, }, link_status: LinkStatusColors { disabled: red, connected: bright_green, listening: yellow, }, syntax: SyntaxColors { gap_bg: bg, executed_bg: Color::Rgb(14, 24, 14), selected_bg: Color::Rgb(20, 40, 16), emit: (fg, Color::Rgb(20, 34, 20)), number: (yellow, Color::Rgb(30, 30, 12)), string: (bright_green, Color::Rgb(16, 32, 16)), comment: (fg_muted, bg), keyword: (red, Color::Rgb(38, 18, 14)), stack_op: (blue, Color::Rgb(16, 26, 32)), operator: (green, Color::Rgb(14, 36, 14)), sound: (cyan, Color::Rgb(16, 30, 28)), param: (purple, Color::Rgb(26, 22, 28)), context: (orange, Color::Rgb(34, 26, 12)), note: (bright_green, Color::Rgb(16, 34, 16)), interval: (Color::Rgb(100, 180, 100), Color::Rgb(18, 34, 18)), variable: (purple, Color::Rgb(26, 22, 28)), vary: (yellow, Color::Rgb(30, 30, 12)), generator: (cyan, Color::Rgb(16, 30, 26)), default: (fg_dim, bg), }, table: TableColors { row_even: bg, row_odd: surface, }, values: ValuesColors { tempo: green, value: fg_dim, }, hint: HintColors { key: green, text: fg_muted, }, view_badge: ViewBadgeColors { bg: fg, fg: bg }, nav: NavColors { selected_bg: Color::Rgb(18, 38, 18), selected_fg: fg, unselected_bg: surface, unselected_fg: fg_muted, }, editor_widget: EditorWidgetColors { cursor_bg: fg, cursor_fg: bg, selection_bg: Color::Rgb(24, 48, 24), completion_bg: surface, completion_fg: fg, completion_selected: green, completion_example: cyan, }, browser: BrowserColors { directory: blue, project_file: green, selected: bright_green, file: fg, focused_border: green, unfocused_border: fg_muted, root: fg, file_icon: fg_muted, folder_icon: blue, empty_text: fg_muted, }, input: InputColors { text: green, cursor: fg, hint: fg_muted, }, search: SearchColors { active: green, inactive: fg_muted, match_bg: yellow, match_fg: bg, }, markdown: MarkdownColors { h1: green, h2: cyan, h3: purple, code: bright_green, code_border: Color::Rgb(28, 42, 28), link: cyan, link_url: Color::Rgb(56, 72, 52), quote: fg_muted, text: fg, list: fg, }, engine: EngineColors { header: green, header_focused: bright_green, divider: Color::Rgb(24, 36, 24), scroll_indicator: Color::Rgb(36, 52, 36), label: Color::Rgb(100, 120, 92), label_focused: Color::Rgb(140, 160, 130), label_dim: Color::Rgb(68, 84, 60), value: Color::Rgb(180, 196, 172), focused: bright_green, normal: fg, dim: Color::Rgb(36, 52, 36), path: Color::Rgb(100, 120, 92), border_magenta: purple, border_green: green, border_cyan: cyan, separator: Color::Rgb(24, 36, 24), hint_active: green, hint_inactive: Color::Rgb(24, 36, 24), }, dict: DictColors { word_name: bright_green, word_bg: Color::Rgb(14, 24, 14), alias: fg_muted, stack_sig: purple, description: fg, example: Color::Rgb(100, 120, 92), category_focused: bright_green, category_selected: green, category_normal: fg, category_dimmed: Color::Rgb(36, 52, 36), border_focused: bright_green, border_normal: Color::Rgb(24, 36, 24), header_desc: Color::Rgb(120, 140, 112), }, title: TitleColors { big_title: green, author: cyan, link: bright_green, license: yellow, prompt: Color::Rgb(100, 120, 92), subtitle: fg, }, meter: MeterColors { low: green, mid: yellow, high: red, low_rgb: (64, 192, 64), mid_rgb: (160, 160, 64), high_rgb: (192, 80, 64), }, sparkle: SparkleColors { colors: [ (64, 192, 64), (96, 224, 96), (80, 168, 144), (160, 160, 64), (48, 128, 48), ], }, confirm: ConfirmColors { border: red, button_selected_bg: green, button_selected_fg: bg, }, } }