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