themes.rs

 1use crate::color::{Hsla, Lerp};
 2use std::ops::Range;
 3
 4pub mod rose_pine;
 5
 6pub struct ThemeColors {
 7    pub base: Range<Hsla>,
 8    pub surface: Range<Hsla>,
 9    pub overlay: Range<Hsla>,
10    pub muted: Range<Hsla>,
11    pub subtle: Range<Hsla>,
12    pub text: Range<Hsla>,
13    pub highlight_low: Range<Hsla>,
14    pub highlight_med: Range<Hsla>,
15    pub highlight_high: Range<Hsla>,
16    pub success: Range<Hsla>,
17    pub warning: Range<Hsla>,
18    pub error: Range<Hsla>,
19    pub inserted: Range<Hsla>,
20    pub deleted: Range<Hsla>,
21    pub modified: Range<Hsla>,
22}
23
24impl ThemeColors {
25    pub fn base(&self, level: f32) -> Hsla {
26        self.base.lerp(level)
27    }
28
29    pub fn surface(&self, level: f32) -> Hsla {
30        self.surface.lerp(level)
31    }
32
33    pub fn overlay(&self, level: f32) -> Hsla {
34        self.overlay.lerp(level)
35    }
36
37    pub fn muted(&self, level: f32) -> Hsla {
38        self.muted.lerp(level)
39    }
40
41    pub fn subtle(&self, level: f32) -> Hsla {
42        self.subtle.lerp(level)
43    }
44
45    pub fn text(&self, level: f32) -> Hsla {
46        self.text.lerp(level)
47    }
48
49    pub fn highlight_low(&self, level: f32) -> Hsla {
50        self.highlight_low.lerp(level)
51    }
52
53    pub fn highlight_med(&self, level: f32) -> Hsla {
54        self.highlight_med.lerp(level)
55    }
56
57    pub fn highlight_high(&self, level: f32) -> Hsla {
58        self.highlight_high.lerp(level)
59    }
60
61    pub fn success(&self, level: f32) -> Hsla {
62        self.success.lerp(level)
63    }
64
65    pub fn warning(&self, level: f32) -> Hsla {
66        self.warning.lerp(level)
67    }
68
69    pub fn error(&self, level: f32) -> Hsla {
70        self.error.lerp(level)
71    }
72
73    pub fn inserted(&self, level: f32) -> Hsla {
74        self.inserted.lerp(level)
75    }
76
77    pub fn deleted(&self, level: f32) -> Hsla {
78        self.deleted.lerp(level)
79    }
80
81    pub fn modified(&self, level: f32) -> Hsla {
82        self.modified.lerp(level)
83    }
84}