use asset_macro::bundled_or_fetched_asset; use pathfinder_color::ColorU; use warp_core::ui::{ color::{blend::Blend, coloru_with_opacity, OPAQUE}, theme::{ color::CustomDetails, AnsiColor, AnsiColors, Details, Fill, HorizontalGradient, Image, TerminalColors, VerticalGradient, WarpTheme, }, }; const DARK_MODE_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x616161FF), AnsiColor::from_u32(0xFF8272FF), AnsiColor::from_u32(0xB4FA72FF), AnsiColor::from_u32(0xFEFDC2FF), AnsiColor::from_u32(0xA5D5FEFF), AnsiColor::from_u32(0xFF8FFDFF), AnsiColor::from_u32(0xD0D1FEFF), AnsiColor::from_u32(0xF1F1F1FF), ); const DARK_MODE_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x8E8E8EFF), AnsiColor::from_u32(0xFFC4BDFF), AnsiColor::from_u32(0xD6FCB9FF), AnsiColor::from_u32(0xFEFDD5FF), AnsiColor::from_u32(0xC1E3FEFF), AnsiColor::from_u32(0xFFB1FEFF), AnsiColor::from_u32(0xE5E6FEFF), AnsiColor::from_u32(0xFEFFFFFF), ); const LIGHT_MODE_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x212121FF), AnsiColor::from_u32(0xC30771FF), AnsiColor::from_u32(0x10A778FF), AnsiColor::from_u32(0xA89C14FF), AnsiColor::from_u32(0x008EC4FF), AnsiColor::from_u32(0x523C79FF), AnsiColor::from_u32(0x20A5BAFF), AnsiColor::from_u32(0xE0E0E0FF), ); const LIGHT_MODE_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x212121FF), AnsiColor::from_u32(0xFB007AFF), AnsiColor::from_u32(0x5FD7AFFF), AnsiColor::from_u32(0xF3E430FF), AnsiColor::from_u32(0x20BBFCFF), AnsiColor::from_u32(0x6855DEFF), AnsiColor::from_u32(0x4FB8CCFF), AnsiColor::from_u32(0xF1F1F1FF), ); const SOLARIZED_DARK_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x073642FF), AnsiColor::from_u32(0xDC322FFF), AnsiColor::from_u32(0x859900FF), AnsiColor::from_u32(0xB58900FF), AnsiColor::from_u32(0x268BD2FF), AnsiColor::from_u32(0xD33682FF), AnsiColor::from_u32(0x2AA198FF), AnsiColor::from_u32(0xEEE8D5FF), ); const SOLARIZED_DARK_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x002B36FF), AnsiColor::from_u32(0xCB4B16FF), AnsiColor::from_u32(0x586E75FF), AnsiColor::from_u32(0x657B83FF), AnsiColor::from_u32(0x839496FF), AnsiColor::from_u32(0x6C71C4FF), AnsiColor::from_u32(0x93A1A1FF), AnsiColor::from_u32(0xFDF6E3FF), ); const SOLARIZED_LIGHT_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x073642FF), AnsiColor::from_u32(0xDC322FFF), AnsiColor::from_u32(0x859900FF), AnsiColor::from_u32(0xB58900FF), AnsiColor::from_u32(0x268BD2FF), AnsiColor::from_u32(0xD33682FF), AnsiColor::from_u32(0x2AA198FF), AnsiColor::from_u32(0xEEE8D5FF), ); const SOLARIZED_LIGHT_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x002B36FF), AnsiColor::from_u32(0xCB4B16FF), AnsiColor::from_u32(0x586E75FF), AnsiColor::from_u32(0x657B83FF), AnsiColor::from_u32(0x839496FF), AnsiColor::from_u32(0x6C71C4FF), AnsiColor::from_u32(0x93A1A1FF), AnsiColor::from_u32(0xFDF6E3FF), ); const DRACULA_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x000000FF), AnsiColor::from_u32(0xFF5555FF), AnsiColor::from_u32(0x50FA7BFF), AnsiColor::from_u32(0xF1FA8CFF), AnsiColor::from_u32(0xBD93F9FF), AnsiColor::from_u32(0xFF79C6FF), AnsiColor::from_u32(0x8BE9FDFF), AnsiColor::from_u32(0xBBBBBBFF), ); const DRACULA_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x555555FF), AnsiColor::from_u32(0xFF5555FF), AnsiColor::from_u32(0x50FA7BFF), AnsiColor::from_u32(0xF1FA8CFF), AnsiColor::from_u32(0xCAA9FAFF), AnsiColor::from_u32(0xFF79C6FF), AnsiColor::from_u32(0x8BE9FDFF), AnsiColor::from_u32(0xFFFFFFFF), ); const PHENOMENON_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x121212FF), AnsiColor::from_u32(0xD22D1EFF), AnsiColor::from_u32(0x1CA05AFF), AnsiColor::from_u32(0xE5A01AFF), AnsiColor::from_u32(0x3780E9FF), AnsiColor::from_u32(0xBF409DFF), AnsiColor::from_u32(0x799C92FF), AnsiColor::from_u32(0xFAF9F6FF), ); const PHENOMENON_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x292929FF), AnsiColor::from_u32(0xAE756FFF), AnsiColor::from_u32(0x789B88FF), AnsiColor::from_u32(0xBD9F65FF), AnsiColor::from_u32(0x6F839FFF), AnsiColor::from_u32(0xA57899FF), AnsiColor::from_u32(0xBFC5C3FF), AnsiColor::from_u32(0xFFFFFFFF), ); const GRUVBOX_DARK_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x282828FF), AnsiColor::from_u32(0xCC241DFF), AnsiColor::from_u32(0x98971AFF), AnsiColor::from_u32(0xD79921FF), AnsiColor::from_u32(0x458588FF), AnsiColor::from_u32(0xB16286FF), AnsiColor::from_u32(0x689D6AFF), AnsiColor::from_u32(0xA89984FF), ); const GRUVBOX_DARK_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x928374FF), AnsiColor::from_u32(0xFB4934FF), AnsiColor::from_u32(0xB8BB26FF), AnsiColor::from_u32(0xFABD2FFF), AnsiColor::from_u32(0x83A598FF), AnsiColor::from_u32(0xD3869BFF), AnsiColor::from_u32(0x8EC07CFF), AnsiColor::from_u32(0xEBDBB2FF), ); const GRUVBOX_LIGHT_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0xFBF1C7FF), AnsiColor::from_u32(0xCC241DFF), AnsiColor::from_u32(0x98971AFF), AnsiColor::from_u32(0xD79921FF), AnsiColor::from_u32(0x458588FF), AnsiColor::from_u32(0xB16286FF), AnsiColor::from_u32(0x689D6AFF), AnsiColor::from_u32(0x7C6F64FF), ); const GRUVBOX_LIGHT_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x928374FF), AnsiColor::from_u32(0x9D0006FF), AnsiColor::from_u32(0x79740EFF), AnsiColor::from_u32(0xB57614FF), AnsiColor::from_u32(0x076678FF), AnsiColor::from_u32(0x8F3F71FF), AnsiColor::from_u32(0x427B58FF), AnsiColor::from_u32(0x3C3836FF), ); const SOLARFLARE_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x2E333DFF), AnsiColor::from_u32(0xD66060FF), AnsiColor::from_u32(0x64AF86FF), AnsiColor::from_u32(0xCAA358FF), AnsiColor::from_u32(0x5C80B2FF), AnsiColor::from_u32(0xB766A1FF), AnsiColor::from_u32(0x8069A1FF), AnsiColor::from_u32(0xF0F4F7FF), ); const SOLARFLARE_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x37404AFF), AnsiColor::from_u32(0xEB8282FF), AnsiColor::from_u32(0x64AF86FF), AnsiColor::from_u32(0xCAA358FF), AnsiColor::from_u32(0x5C80B2FF), AnsiColor::from_u32(0xB766A1FF), AnsiColor::from_u32(0x8069A1FF), AnsiColor::from_u32(0xFFFFFFFF), ); const ADEBERRY_NORMAL_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x121212FF), AnsiColor::from_u32(0xC76156FF), AnsiColor::from_u32(0x57C78AFF), AnsiColor::from_u32(0xC8A35AFF), AnsiColor::from_u32(0x5785C7FF), AnsiColor::from_u32(0xC756A9FF), AnsiColor::from_u32(0x57C7C3FF), AnsiColor::from_u32(0xEEEDEBFF), ); const ADEBERRY_BRIGHT_COLORS: AnsiColors = AnsiColors::new( AnsiColor::from_u32(0x292929FF), AnsiColor::from_u32(0xD22D1EFF), AnsiColor::from_u32(0x1CA05AFF), AnsiColor::from_u32(0xE5A01AFF), AnsiColor::from_u32(0x1458B8FF), AnsiColor::from_u32(0xA43787FF), AnsiColor::from_u32(0x4D9989FF), AnsiColor::from_u32(0xFFFFFFFF), ); pub(super) fn light_mode_colors() -> TerminalColors { TerminalColors::new(LIGHT_MODE_NORMAL_COLORS, LIGHT_MODE_BRIGHT_COLORS) } pub(super) fn dark_mode_colors() -> TerminalColors { TerminalColors::new(DARK_MODE_NORMAL_COLORS, DARK_MODE_BRIGHT_COLORS) } pub(super) fn solarized_light_colors() -> TerminalColors { TerminalColors::new(SOLARIZED_LIGHT_NORMAL_COLORS, SOLARIZED_LIGHT_BRIGHT_COLORS) } pub(super) fn solarized_dark_colors() -> TerminalColors { TerminalColors::new(SOLARIZED_DARK_NORMAL_COLORS, SOLARIZED_DARK_BRIGHT_COLORS) } pub(super) fn dracula_colors() -> TerminalColors { TerminalColors::new(DRACULA_NORMAL_COLORS, DRACULA_BRIGHT_COLORS) } pub(super) fn phenomenon_colors() -> TerminalColors { TerminalColors::new(PHENOMENON_NORMAL_COLORS, PHENOMENON_BRIGHT_COLORS) } pub(super) fn gruvbox_dark_colors() -> TerminalColors { TerminalColors::new(GRUVBOX_DARK_NORMAL_COLORS, GRUVBOX_DARK_BRIGHT_COLORS) } pub(super) fn gruvbox_light_colors() -> TerminalColors { TerminalColors::new(GRUVBOX_LIGHT_NORMAL_COLORS, GRUVBOX_LIGHT_BRIGHT_COLORS) } pub(super) fn solarflare_colors() -> TerminalColors { TerminalColors::new(SOLARFLARE_NORMAL_COLORS, SOLARFLARE_BRIGHT_COLORS) } pub(super) fn adeberry_colors() -> TerminalColors { TerminalColors::new(ADEBERRY_NORMAL_COLORS, ADEBERRY_BRIGHT_COLORS) } /// Default bundled themes pub fn dark_theme() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x000000FF)), ColorU::from_u32(0xffffffff), Fill::Solid(ColorU::from_u32(0x19AAD8FF)), None, Some(Details::Darker), dark_mode_colors(), None, Some("Dark".to_string()), ) } pub fn light_theme() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::white()), ColorU::new(17, 17, 17, OPAQUE), Fill::Solid(ColorU::from_u32(0x00c2ffff)), None, Some(Details::Lighter), light_mode_colors(), None, Some("Light".to_string()), ) } pub(super) fn dracula() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x282A36FF)), ColorU::from_u32(0xF8F8F2FF), Fill::Solid(ColorU::from_u32(0xFF79C6FF)), None, Some(Details::Darker), dracula_colors(), None, Some("Dracula".to_string()), ) } pub(super) fn solarized_light() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0xFDF6E3FF)), ColorU::from_u32(0x586E75FF), Fill::Solid(ColorU::from_u32(0x66B5A9FF)), None, Some(Details::Lighter), solarized_light_colors(), None, Some("Solarized Light".to_string()), ) } pub(super) fn solarized_dark() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x002B36FF)), ColorU::from_u32(0xF8F8F2FF), Fill::Solid(ColorU::from_u32(0xCB4B16FF)), None, Some(Details::Darker), solarized_dark_colors(), None, Some("Solarized Dark".to_string()), ) } pub(super) fn gruvbox_dark() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x282828FF)), ColorU::from_u32(0xEBDBB2FF), Fill::Solid(ColorU::from_u32(0xFC802DFF)), None, Some(Details::Darker), gruvbox_dark_colors(), None, Some("Gruvbox Dark".to_string()), ) } pub(super) fn gruvbox_light() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0xFBF1C7FF)), ColorU::from_u32(0x3C3836FF), Fill::Solid(ColorU::from_u32(0xAD3B14FF)), None, Some(Details::Lighter), gruvbox_light_colors(), None, Some("Gruvbox Light".to_string()), ) } /// Bundled gradient themes pub(super) fn cyber_wave() -> WarpTheme { WarpTheme::new( Fill::VerticalGradient(VerticalGradient::new( ColorU::black().blend(&coloru_with_opacity(ColorU::from_u32(0x00C2FFFF), 20)), ColorU::black(), )), ColorU::white(), Fill::HorizontalGradient(HorizontalGradient::new( ColorU::from_u32(0x007972FF), ColorU::from_u32(0x7B008FFF), )), None, Some(Details::Darker), dark_mode_colors(), None, Some("Cyber Wave".to_string()), ) } pub(super) fn willow_dream() -> WarpTheme { WarpTheme::new( Fill::VerticalGradient(VerticalGradient::new( ColorU::from_u32(0x206169FF), ColorU::from_u32(0x022F27FF), )), ColorU::white(), Fill::HorizontalGradient(HorizontalGradient::new( ColorU::from_u32(0xF9AEA8FF), ColorU::from_u32(0xDD6258FF), )), None, Some(Details::Darker), dark_mode_colors(), None, Some("Willow Dream".to_string()), ) } pub(super) fn fancy_dracula() -> WarpTheme { WarpTheme::new( Fill::VerticalGradient(VerticalGradient::new( ColorU::from_u32(0x252630FF), ColorU::from_u32(0x3D3F4FFF), )), ColorU::white(), Fill::HorizontalGradient(HorizontalGradient::new( ColorU::from_u32(0xBCA1F6FF), ColorU::from_u32(0xA3E7FCFF), )), None, Some(Details::Darker), dracula_colors(), None, Some("Fancy Dracula".to_string()), ) } pub(super) fn phenomenon() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x121212FF)), ColorU::from_u32(0xFAF9F6FF), Fill::Solid(ColorU::from_u32(0x2E5D9EFF)), None, Some(Details::Darker), phenomenon_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/phenomenon_bg.jpg"), opacity: 100, }), Some("Phenomenon".to_string()), ) } /// Bundled themes with background images pub(super) fn jellyfish() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x1B1718FF)), ColorU::white(), Fill::Solid(ColorU::from_u32(0x538682FF)), None, Some(Details::Darker), dark_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/jellyfish_bg.jpg"), opacity: 30, }), Some("Jellyfish".to_string()), ) } pub(super) fn koi() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x211719FF)), ColorU::white(), Fill::Solid(ColorU::from_u32(0xFF3131FF)), None, Some(Details::Darker), dark_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/koi_bg.jpg"), opacity: 30, }), Some("Koi".to_string()), ) } pub(super) fn leafy() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::black()), ColorU::white(), Fill::Solid(ColorU::from_u32(0x55972DFF)), None, Some(Details::Darker), dark_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/leafy_bg.jpg"), opacity: 30, }), Some("Leafy".to_string()), ) } pub(super) fn marble() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0xE3E3E3FF)), ColorU::black(), Fill::Solid(ColorU::from_u32(0x585858FF)), None, Some(Details::Lighter), light_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/marble_bg.jpg"), opacity: 50, }), Some("Marble".to_string()), ) } pub(super) fn pink_city() -> WarpTheme { let details = CustomDetails { ..CustomDetails::lighter_details() }; WarpTheme::new( Fill::Solid(ColorU::from_u32(0xFBEFF6FF)), ColorU::black(), Fill::Solid(ColorU::from_u32(0xE10087FF)), None, Some(Details::Custom(details)), light_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/pink_city_bg.jpg"), opacity: 40, }), Some("Pink City".to_string()), ) } pub(super) fn snowy() -> WarpTheme { WarpTheme::new( Fill::VerticalGradient(VerticalGradient::new( ColorU::from_u32(0xFFFFFFFF), ColorU::from_u32(0xDEE6EBFF), )), ColorU::black(), Fill::Solid(ColorU::from_u32(0x647E90FF)), None, Some(Details::Lighter), light_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/snowy_bg.jpg"), opacity: 20, }), Some("Snowy".to_string()), ) } pub(super) fn red_rock() -> WarpTheme { WarpTheme::new( Fill::VerticalGradient(VerticalGradient::new( ColorU::from_u32(0x211719FF) .blend(&coloru_with_opacity(ColorU::from_u32(0x4C3435FF), 45)), ColorU::from_u32(0x211719FF) .blend(&coloru_with_opacity(ColorU::from_u32(0xD3032FF), 45)), )), ColorU::white(), Fill::Solid(ColorU::from_u32(0x9F4147FF)), None, Some(Details::Darker), dark_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/red_rock_bg.jpg"), opacity: 30, }), Some("Red Rock".to_string()), ) } pub(super) fn dark_city() -> WarpTheme { WarpTheme::new( Fill::VerticalGradient(VerticalGradient::new( ColorU::from_u32(0x01181FFF) .blend(&coloru_with_opacity(ColorU::from_u32(0x1A363FFF), 45)), ColorU::from_u32(0x01181FFF) .blend(&coloru_with_opacity(ColorU::from_u32(0x1A4551FF), 45)), )), ColorU::white(), Fill::Solid(ColorU::from_u32(0xE9072DFF)), None, Some(Details::Darker), dark_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/dark_city_bg.jpg"), opacity: 20, }), Some("Dark City".to_string()), ) } pub(super) fn sent_referral_reward() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x334567FF)), ColorU::white(), Fill::Solid(ColorU::from_u32(0xCD51FFFF)), None, Some(Details::Darker), dark_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/sent_referral_reward_bg.jpg"), opacity: 100, }), Some("Warp Referral".to_string()), ) } pub(super) fn solar_flare() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x1B1C18FF)), ColorU::from_u32(0xDDE6EEFF), Fill::Solid(ColorU::from_u32(0x34895CFF)), None, Some(Details::Darker), solarflare_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/solarflare_bg.jpg"), opacity: 20, }), Some("Solar Flare".to_string()), ) } pub(super) fn adeberry() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0x1D2022FF)), ColorU::from_u32(0xE4EEF5FF), Fill::Solid(ColorU::from_u32(0x6C96B4FF)), None, Some(Details::Darker), adeberry_colors(), None, Some("Adeberry".to_string()), ) } pub(super) fn received_referral_reward() -> WarpTheme { WarpTheme::new( Fill::Solid(ColorU::from_u32(0xFFFFFFFF)), ColorU::black(), Fill::Solid(ColorU::from_u32(0xCD51FFFF)), None, Some(Details::Lighter), light_mode_colors(), Some(Image { source: bundled_or_fetched_asset!("jpg/received_referral_reward_bg.jpg"), opacity: 100, }), Some("Received Referral Reward".to_string()), ) }