use super::style::*;
use super::selector::*;
use serde_derive::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct Theme {
pub name: Option<String>,
pub author: Option<String>,
pub settings: ThemeSettings,
pub scopes: Vec<ThemeItem>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ThemeSettings {
pub foreground: Option<Color>,
pub background: Option<Color>,
pub caret: Option<Color>,
pub line_highlight: Option<Color>,
pub misspelling: Option<Color>,
pub minimap_border: Option<Color>,
pub accent: Option<Color>,
pub popup_css: Option<String>,
pub phantom_css: Option<String>,
pub bracket_contents_foreground: Option<Color>,
pub bracket_contents_options: Option<UnderlineOption>,
pub brackets_foreground: Option<Color>,
pub brackets_background: Option<Color>,
pub brackets_options: Option<UnderlineOption>,
pub tags_foreground: Option<Color>,
pub tags_options: Option<UnderlineOption>,
pub highlight: Option<Color>,
pub find_highlight: Option<Color>,
pub find_highlight_foreground: Option<Color>,
pub gutter: Option<Color>,
pub gutter_foreground: Option<Color>,
pub selection: Option<Color>,
pub selection_foreground: Option<Color>,
pub selection_border: Option<Color>,
pub inactive_selection: Option<Color>,
pub inactive_selection_foreground: Option<Color>,
pub guide: Option<Color>,
pub active_guide: Option<Color>,
pub stack_guide: Option<Color>,
pub shadow: Option<Color>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ThemeItem {
pub scope: ScopeSelectors,
pub style: StyleModifier,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub enum UnderlineOption {
#[default]
None,
Underline,
StippledUnderline,
SquigglyUnderline,
}