// SPDX-FileCopyrightText: 2026, Shaun Reed // // SPDX-License-Identifier: GNU General Public License v3.0 or later pub struct Colors {} impl Colors { pub const HOVERED: &str = "#303234"; pub const UNHOVERED: &str = "#3c3f41"; pub const PRESSED: &str = "#4b4f51"; pub const MENUBAR: &str = "#262626"; pub const MENUBAR_BORDER: &str = "#575757"; pub const SCROLLBAR: &str = "#4b4f51"; pub const SCROLLBAR_ACTIVE: &str = "#4b4f51"; pub const SCROLLBAR_GUTTER: &str = "#3b3b3b"; pub const LINENUMBER: &str = "#94989b"; pub const ACTIVE: &str = "#a9acb0"; pub const INACTIVE: &str = "#FFF"; pub const EDITOR_BACKGROUND: &str = "#1E1F22"; pub const EDITOR_TEXT: &str = "#acaea3"; pub const EDITOR_HIGHLIGHTED_TEXT: &str = "#ccced3"; pub const EDITOR_HIGHLIGHT: &str = "#ccced3"; pub const GUTTER: &str = "#1e1f22"; pub const EXPLORER_HOVERED: &str = "#4c5053"; pub const EXPLORER_TEXT: &str = "#FFF"; pub const EXPLORER_TEXT_SELECTED: &str = "#262626"; pub const EXPLORER_BACKGROUND: &str = "#1E1F22"; pub const EXPLORER_FOLDER: &str = "#54585b"; pub const EXPLORER_FOLDER_OPEN: &str = "#393B40"; pub const TERMINAL_BACKGROUND: &str = "#111111"; pub const INFO_LOG: &str = "#C4FFFF"; pub const DEBUG_LOG: &str = "#9148AF"; pub const WARN_LOG: &str = "#C4A958"; pub const ERROR_LOG: &str = "#ff5555"; pub const TRACE_LOG: &str = "#ffaa00"; pub fn css_to_u32(css: &str) -> Result { let hex = css.trim_start_matches('#'); // Expand shorthand #RGB to #RRGGBB let hex_full = match hex.len() { 3 => hex.chars() .map(|c| std::iter::repeat(c).take(2).collect::()) .collect::(), 6 => hex.to_string(), _ => return Err(format!("Invalid hex color length: {}", hex)), }; // Parse the hex string as u32, masking to ensure the top byte is 0x00. u32::from_str_radix(&hex_full, 16) .map(|rgb| rgb & 0x00FF_FFFF) .map_err(|e| format!("Failed to parse hex: {}", e)) } }