use super::*; use ratatui::style::Color; 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, 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, event_rgb: (40, 40, 40), }, 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, }, 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)), 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, }, } }