use super::*; use ratatui::style::Color; pub fn theme() -> ThemeColors { let crust = Color::Rgb(17, 17, 27); let mantle = Color::Rgb(24, 24, 37); let base = Color::Rgb(30, 30, 46); let surface0 = Color::Rgb(49, 50, 68); let surface1 = Color::Rgb(69, 71, 90); let overlay0 = Color::Rgb(108, 112, 134); let overlay1 = Color::Rgb(127, 132, 156); let subtext0 = Color::Rgb(166, 173, 200); let subtext1 = Color::Rgb(186, 194, 222); let text = Color::Rgb(205, 214, 244); let pink = Color::Rgb(245, 194, 231); let mauve = Color::Rgb(203, 166, 247); let red = Color::Rgb(243, 139, 168); let maroon = Color::Rgb(235, 160, 172); let peach = Color::Rgb(250, 179, 135); let yellow = Color::Rgb(249, 226, 175); let green = Color::Rgb(166, 227, 161); let teal = Color::Rgb(148, 226, 213); let sapphire = Color::Rgb(116, 199, 236); let lavender = Color::Rgb(180, 190, 254); ThemeColors { ui: UiColors { bg: base, bg_rgb: (30, 30, 46), text_primary: text, text_muted: subtext0, text_dim: overlay1, border: surface1, header: lavender, unfocused: overlay0, accent: mauve, surface: surface0, }, status: StatusColors { playing_bg: Color::Rgb(30, 50, 40), playing_fg: green, stopped_bg: Color::Rgb(50, 30, 40), stopped_fg: red, fill_on: green, fill_off: overlay0, fill_bg: surface0, }, selection: SelectionColors { cursor_bg: mauve, cursor_fg: crust, selected_bg: Color::Rgb(60, 60, 90), selected_fg: lavender, in_range_bg: Color::Rgb(50, 50, 75), in_range_fg: subtext1, cursor: mauve, selected: Color::Rgb(60, 60, 90), in_range: Color::Rgb(50, 50, 75), }, tile: TileColors { playing_active_bg: Color::Rgb(80, 50, 60), playing_active_fg: peach, playing_inactive_bg: Color::Rgb(70, 55, 45), playing_inactive_fg: yellow, active_bg: Color::Rgb(40, 55, 55), active_fg: teal, inactive_bg: surface0, inactive_fg: subtext0, active_selected_bg: Color::Rgb(70, 60, 80), active_in_range_bg: Color::Rgb(55, 55, 70), link_bright: [ (203, 166, 247), (245, 194, 231), (250, 179, 135), (137, 220, 235), (166, 227, 161), ], link_dim: [ (70, 55, 85), (85, 65, 80), (85, 60, 45), (45, 75, 80), (55, 80, 55), ], }, header: HeaderColors { tempo_bg: Color::Rgb(50, 40, 60), tempo_fg: mauve, bank_bg: Color::Rgb(35, 50, 55), bank_fg: sapphire, pattern_bg: Color::Rgb(40, 50, 50), pattern_fg: teal, stats_bg: surface0, stats_fg: subtext0, }, modal: ModalColors { border: lavender, border_accent: mauve, border_warn: peach, border_dim: overlay1, confirm: peach, rename: mauve, input: sapphire, editor: lavender, preview: overlay1, }, flash: FlashColors { error_bg: Color::Rgb(50, 30, 40), error_fg: red, success_bg: Color::Rgb(30, 50, 40), success_fg: green, info_bg: surface0, info_fg: text, event_rgb: (55, 45, 70), }, list: ListColors { playing_bg: Color::Rgb(35, 55, 45), playing_fg: green, staged_play_bg: Color::Rgb(55, 45, 65), staged_play_fg: mauve, staged_stop_bg: Color::Rgb(60, 40, 50), staged_stop_fg: maroon, edit_bg: Color::Rgb(40, 55, 55), edit_fg: teal, hover_bg: surface1, hover_fg: text, }, link_status: LinkStatusColors { disabled: red, connected: green, listening: yellow, }, syntax: SyntaxColors { gap_bg: mantle, executed_bg: Color::Rgb(45, 40, 55), selected_bg: Color::Rgb(70, 55, 40), emit: (text, Color::Rgb(80, 50, 60)), number: (peach, Color::Rgb(55, 45, 35)), string: (green, Color::Rgb(35, 50, 40)), comment: (overlay1, crust), keyword: (mauve, Color::Rgb(50, 40, 60)), stack_op: (sapphire, Color::Rgb(35, 45, 55)), operator: (yellow, Color::Rgb(55, 50, 35)), sound: (teal, Color::Rgb(35, 55, 55)), param: (lavender, Color::Rgb(45, 45, 60)), context: (peach, Color::Rgb(55, 45, 35)), note: (green, Color::Rgb(35, 50, 40)), interval: (Color::Rgb(180, 230, 150), Color::Rgb(40, 55, 35)), variable: (pink, Color::Rgb(55, 40, 55)), vary: (yellow, Color::Rgb(55, 50, 35)), generator: (teal, Color::Rgb(35, 55, 50)), default: (subtext0, mantle), }, table: TableColors { row_even: mantle, row_odd: base, }, values: ValuesColors { tempo: peach, value: subtext0, }, hint: HintColors { key: peach, text: overlay1, }, view_badge: ViewBadgeColors { bg: text, fg: crust, }, nav: NavColors { selected_bg: Color::Rgb(60, 50, 75), selected_fg: text, unselected_bg: surface0, unselected_fg: overlay1, }, editor_widget: EditorWidgetColors { cursor_bg: text, cursor_fg: crust, selection_bg: Color::Rgb(50, 60, 90), completion_bg: surface0, completion_fg: text, completion_selected: peach, completion_example: teal, }, browser: BrowserColors { directory: sapphire, project_file: mauve, selected: peach, file: text, focused_border: peach, unfocused_border: overlay0, root: text, file_icon: overlay1, folder_icon: sapphire, empty_text: overlay1, }, input: InputColors { text: sapphire, cursor: text, hint: overlay1, }, search: SearchColors { active: peach, inactive: overlay0, match_bg: yellow, match_fg: crust, }, markdown: MarkdownColors { h1: sapphire, h2: peach, h3: mauve, code: green, code_border: Color::Rgb(60, 60, 70), link: teal, link_url: Color::Rgb(100, 100, 100), quote: overlay1, text, list: text, }, engine: EngineColors { header: Color::Rgb(100, 160, 180), header_focused: yellow, divider: Color::Rgb(60, 65, 70), scroll_indicator: Color::Rgb(80, 85, 95), label: Color::Rgb(120, 125, 135), label_focused: Color::Rgb(150, 155, 165), label_dim: Color::Rgb(100, 105, 115), value: Color::Rgb(180, 180, 190), focused: yellow, normal: text, dim: Color::Rgb(80, 85, 95), path: Color::Rgb(120, 125, 135), border_magenta: mauve, border_green: green, border_cyan: sapphire, separator: Color::Rgb(60, 65, 75), hint_active: Color::Rgb(180, 180, 100), hint_inactive: Color::Rgb(60, 60, 70), }, dict: DictColors { word_name: green, word_bg: Color::Rgb(40, 50, 60), alias: overlay1, stack_sig: mauve, description: text, example: Color::Rgb(120, 130, 140), category_focused: yellow, category_selected: sapphire, category_normal: text, category_dimmed: Color::Rgb(80, 80, 90), border_focused: yellow, border_normal: Color::Rgb(60, 60, 70), header_desc: Color::Rgb(140, 145, 155), }, title: TitleColors { big_title: mauve, author: lavender, link: teal, license: peach, prompt: Color::Rgb(140, 160, 170), subtitle: text, }, meter: MeterColors { low: green, mid: yellow, high: red, low_rgb: (40, 180, 80), mid_rgb: (220, 180, 40), high_rgb: (220, 60, 40), }, sparkle: SparkleColors { colors: [ (200, 220, 255), (250, 179, 135), (166, 227, 161), (245, 194, 231), (203, 166, 247), ], }, confirm: ConfirmColors { border: peach, button_selected_bg: peach, button_selected_fg: crust, }, } }