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}