Skip to main content

ironcalc_base/
themes.rs

1use crate::types::Theme;
2
3pub fn builtin_themes() -> Vec<Theme> {
4    vec![
5        // IronCalc: branding palette
6        Theme {
7            name: "IronCalc".to_string(),
8            dk1: "#272525".to_string(),
9            lt1: "#FFFFFF".to_string(),
10            dk2: "#333333".to_string(),
11            lt2: "#F8F4F1".to_string(),
12            accent1: "#8CB354".to_string(),
13            accent2: "#F8CD3D".to_string(),
14            accent3: "#F2994A".to_string(),
15            accent4: "#EC5753".to_string(),
16            accent5: "#523E93".to_string(),
17            accent6: "#3458B7".to_string(),
18            hlink: "#F2994A".to_string(),
19            fol_hlink: "#843BBC".to_string(),
20        },
21        // Microsoft Office default: slate navy, warm orange, sky blue
22        Theme {
23            name: "Office".to_string(),
24            dk1: "#000000".to_string(),
25            lt1: "#FFFFFF".to_string(),
26            dk2: "#44546A".to_string(),
27            lt2: "#E7E6E6".to_string(),
28            accent1: "#4472C4".to_string(),
29            accent2: "#ED7D31".to_string(),
30            accent3: "#A5A5A5".to_string(),
31            accent4: "#FFC000".to_string(),
32            accent5: "#5B9BD5".to_string(),
33            accent6: "#70AD47".to_string(),
34            hlink: "#0563C1".to_string(),
35            fol_hlink: "#954F72".to_string(),
36        },
37        // Cold: icy blues and steel
38        Theme {
39            name: "Cold".to_string(),
40            dk1: "#1C1C1E".to_string(),
41            lt1: "#FFFFFF".to_string(),
42            dk2: "#283640".to_string(),
43            lt2: "#F2F7FA".to_string(),
44            accent1: "#2E8BC0".to_string(),
45            accent2: "#5FA8D3".to_string(),
46            accent3: "#A6DCEF".to_string(),
47            accent4: "#D6EBF2".to_string(),
48            accent5: "#90ADC6".to_string(),
49            accent6: "#547AA5".to_string(),
50            hlink: "#843BBC".to_string(),
51            fol_hlink: "#B984E2".to_string(),
52        },
53        // Warm: terracotta, amber, and burnt orange
54        Theme {
55            name: "Warm".to_string(),
56            dk1: "#272525".to_string(),
57            lt1: "#FFFFFF".to_string(),
58            dk2: "#2E1D0B".to_string(),
59            lt2: "#FDFAF6".to_string(),
60            accent1: "#C1440E".to_string(),
61            accent2: "#F26800".to_string(),
62            accent3: "#F89D13".to_string(),
63            accent4: "#FFD56F".to_string(),
64            accent5: "#DDA15E".to_string(),
65            accent6: "#8D4B1F".to_string(),
66            hlink: "#4C4B63".to_string(),
67            fol_hlink: "#9190AD".to_string(),
68        },
69        // Ocean: deep teals and aquamarines
70        Theme {
71            name: "Ocean".to_string(),
72            dk1: "#001A21".to_string(),
73            lt1: "#FFFFFF".to_string(),
74            dk2: "#123637".to_string(),
75            lt2: "#F4FBFB".to_string(),
76            accent1: "#007C91".to_string(),
77            accent2: "#00A6A6".to_string(),
78            accent3: "#58C9B9".to_string(),
79            accent4: "#A0E8E0".to_string(),
80            accent5: "#44BFC8".to_string(),
81            accent6: "#1C7C7D".to_string(),
82            hlink: "#7D1C58".to_string(),
83            fol_hlink: "#994B7B".to_string(),
84        },
85        // Pastel: soft candy tones on white
86        Theme {
87            name: "Pastel".to_string(),
88            dk1: "#2E2E2E".to_string(),
89            lt1: "#FFFFFF".to_string(),
90            dk2: "#434742".to_string(),
91            lt2: "#FBF5FB".to_string(),
92            accent1: "#F4C2CE".to_string(),
93            accent2: "#AAD6F2".to_string(),
94            accent3: "#BBEC7E".to_string(),
95            accent4: "#F4EBB9".to_string(),
96            accent5: "#CCC0EC".to_string(),
97            accent6: "#A2CFEE".to_string(),
98            hlink: "#F6A6B2".to_string(),
99            fol_hlink: "#C9A6F6".to_string(),
100        },
101        // Contrast: inverted base with vivid neon-adjacent accents
102        Theme {
103            name: "Contrast".to_string(),
104            dk1: "#272525".to_string(),
105            lt1: "#FFFFFF".to_string(),
106            dk2: "#373F3E".to_string(),
107            lt2: "#F0F6F6".to_string(),
108            accent1: "#4ECDC4".to_string(),
109            accent2: "#FFDA0B".to_string(),
110            accent3: "#FF8009".to_string(),
111            accent4: "#FF006E".to_string(),
112            accent5: "#AA38EC".to_string(),
113            accent6: "#1255FF".to_string(),
114            hlink: "#FF8009".to_string(),
115            fol_hlink: "#AA38EC".to_string(),
116        },
117        // Forest: mossy greens, parchment, earthy accents
118        Theme {
119            name: "Forest".to_string(),
120            dk1: "#272525".to_string(),
121            lt1: "#FFFFFF".to_string(),
122            dk2: "#28281E".to_string(),
123            lt2: "#F6F6ED".to_string(),
124            accent1: "#3A6B35".to_string(),
125            accent2: "#7DAB5F".to_string(),
126            accent3: "#C8A84B".to_string(),
127            accent4: "#B85C38".to_string(),
128            accent5: "#8C6F48".to_string(),
129            accent6: "#5A462B".to_string(),
130            hlink: "#3F88C5".to_string(),
131            fol_hlink: "#86AFD2".to_string(),
132        },
133        // Greyscale: pure achromatic neutrals
134        Theme {
135            name: "Greyscale".to_string(),
136            dk1: "#000000".to_string(),
137            lt1: "#FFFFFF".to_string(),
138            dk2: "#272525".to_string(),
139            lt2: "#F5F5F5".to_string(),
140            accent1: "#333333".to_string(),
141            accent2: "#989898".to_string(),
142            accent3: "#C7C7C7".to_string(),
143            accent4: "#F2F2F2".to_string(),
144            accent5: "#828282".to_string(),
145            accent6: "#4F4F4F".to_string(),
146            hlink: "#4F4F4F".to_string(),
147            fol_hlink: "#808080".to_string(),
148        },
149        // Sunshine: oranges and golden yellows on warm cream
150        Theme {
151            name: "Sunshine".to_string(),
152            dk1: "#1E1400".to_string(),
153            lt1: "#FFFFFF".to_string(),
154            dk2: "#493502".to_string(),
155            lt2: "#F7F4EE".to_string(),
156            accent1: "#FF7C01".to_string(),
157            accent2: "#FFAA01".to_string(),
158            accent3: "#FFD103".to_string(),
159            accent4: "#FFEC18".to_string(),
160            accent5: "#FFC400".to_string(),
161            accent6: "#FF9502".to_string(),
162            hlink: "#2872FD".to_string(),
163            fol_hlink: "#AC2CFB".to_string(),
164        },
165        // Emerald: forest greens and sage on ivory
166        Theme {
167            name: "Emerald".to_string(),
168            dk1: "#11160D".to_string(),
169            lt1: "#FFFFFF".to_string(),
170            dk2: "#303C22".to_string(),
171            lt2: "#F3F7EF".to_string(),
172            accent1: "#5C8148".to_string(),
173            accent2: "#8BB650".to_string(),
174            accent3: "#B3E093".to_string(),
175            accent4: "#D6ED89".to_string(),
176            accent5: "#A2C181".to_string(),
177            accent6: "#76A45B".to_string(),
178            hlink: "#5A462B".to_string(),
179            fol_hlink: "#98794E".to_string(),
180        },
181    ]
182}