返回 CodeWhale
tui_palettes.rs
根目录 / vendor / codewhale-ratatui / src / tui_palettes.rs
1 // Generated from Codewhale crates/palette/src. Use tools/export-tui-palettes.py.
2 use crate::Role;
3 use ratatui::style::Color;
4 /// Named palettes already shipped by the Codewhale TUI.
5 #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
6 pub enum TuiPalette {
7 #[default]
8 Underwater,
9 UnderwaterRetro,
10 Shoreline,
11 ShorelineLight,
12 Whale,
13 WhaleLight,
14 Terminal,
15 Grayscale,
16 CatppuccinMocha,
17 TokyoNight,
18 Dracula,
19 GruvboxDark,
20 Claude,
21 Matrix,
22 SolarizedLight,
23 Uwu,
24 }
25 impl TuiPalette {
26 pub const ALL: [Self; 16] = [
27 Self::Underwater,
28 Self::UnderwaterRetro,
29 Self::Shoreline,
30 Self::ShorelineLight,
31 Self::Whale,
32 Self::WhaleLight,
33 Self::Terminal,
34 Self::Grayscale,
35 Self::CatppuccinMocha,
36 Self::TokyoNight,
37 Self::Dracula,
38 Self::GruvboxDark,
39 Self::Claude,
40 Self::Matrix,
41 Self::SolarizedLight,
42 Self::Uwu,
43 ];
44 pub const fn name(self) -> &'static str {
45 match self {
46 Self::Underwater => "underwater",
47 Self::UnderwaterRetro => "underwater-retro",
48 Self::Shoreline => "shoreline",
49 Self::ShorelineLight => "shoreline-light",
50 Self::Whale => "whale",
51 Self::WhaleLight => "whale-light",
52 Self::Terminal => "terminal",
53 Self::Grayscale => "grayscale",
54 Self::CatppuccinMocha => "catppuccin-mocha",
55 Self::TokyoNight => "tokyo-night",
56 Self::Dracula => "dracula",
57 Self::GruvboxDark => "gruvbox-dark",
58 Self::Claude => "claude",
59 Self::Matrix => "matrix",
60 Self::SolarizedLight => "solarized-light",
61 Self::Uwu => "uwu",
62 }
63 }
64 pub const fn light(self) -> bool {
65 matches!(
66 self,
67 Self::ShorelineLight | Self::WhaleLight | Self::SolarizedLight
68 )
69 }
70 pub const fn color(self, role: Role) -> Color {
71 let colors = match self {
72 Self::Underwater => [
73 Color::Rgb(6, 19, 32),
74 Color::Rgb(10, 30, 51),
75 Color::Rgb(13, 34, 58),
76 Color::Rgb(16, 42, 69),
77 Color::Rgb(35, 45, 65),
78 Color::Rgb(246, 242, 232),
79 Color::Rgb(147, 160, 184),
80 Color::Rgb(42, 63, 114),
81 Color::Rgb(182, 192, 212),
82 Color::Rgb(106, 166, 220),
83 Color::Rgb(10, 30, 51),
84 Color::Rgb(79, 209, 197),
85 Color::Rgb(246, 196, 83),
86 Color::Rgb(255, 134, 178),
87 Color::Rgb(138, 153, 179),
88 Color::Rgb(138, 153, 179),
89 Color::Rgb(18, 42, 34),
90 Color::Rgb(52, 24, 39),
91 ],
92 Self::UnderwaterRetro => [
93 Color::Rgb(3, 12, 19),
94 Color::Rgb(5, 16, 25),
95 Color::Rgb(7, 21, 34),
96 Color::Rgb(10, 28, 44),
97 Color::Rgb(35, 45, 65),
98 Color::Rgb(246, 242, 232),
99 Color::Rgb(147, 160, 184),
100 Color::Rgb(20, 80, 94),
101 Color::Rgb(182, 192, 212),
102 Color::Rgb(106, 166, 220),
103 Color::Rgb(5, 16, 25),
104 Color::Rgb(79, 209, 197),
105 Color::Rgb(246, 196, 83),
106 Color::Rgb(255, 134, 178),
107 Color::Rgb(138, 153, 179),
108 Color::Rgb(138, 153, 179),
109 Color::Rgb(18, 42, 34),
110 Color::Rgb(52, 24, 39),
111 ],
112 Self::Shoreline => [
113 Color::Rgb(26, 24, 28),
114 Color::Rgb(33, 31, 35),
115 Color::Rgb(43, 40, 46),
116 Color::Rgb(53, 49, 58),
117 Color::Rgb(44, 70, 84),
118 Color::Rgb(242, 236, 229),
119 Color::Rgb(176, 167, 178),
120 Color::Rgb(73, 66, 77),
121 Color::Rgb(217, 210, 220),
122 Color::Rgb(103, 184, 214),
123 Color::Rgb(33, 31, 35),
124 Color::Rgb(127, 214, 198),
125 Color::Rgb(246, 196, 83),
126 Color::Rgb(255, 143, 168),
127 Color::Rgb(154, 145, 159),
128 Color::Rgb(126, 117, 131),
129 Color::Rgb(30, 44, 37),
130 Color::Rgb(51, 32, 42),
131 ],
132 Self::ShorelineLight => [
133 Color::Rgb(237, 231, 224),
134 Color::Rgb(245, 240, 233),
135 Color::Rgb(236, 229, 224),
136 Color::Rgb(255, 252, 247),
137 Color::Rgb(201, 224, 231),
138 Color::Rgb(48, 40, 50),
139 Color::Rgb(107, 96, 110),
140 Color::Rgb(215, 206, 213),
141 Color::Rgb(74, 65, 76),
142 Color::Rgb(0, 102, 132),
143 Color::Rgb(245, 240, 233),
144 Color::Rgb(31, 122, 107),
145 Color::Rgb(122, 85, 0),
146 Color::Rgb(180, 35, 90),
147 Color::Rgb(117, 112, 128),
148 Color::Rgb(138, 130, 144),
149 Color::Rgb(226, 242, 230),
150 Color::Rgb(251, 230, 236),
151 ],
152 Self::Whale => [
153 Color::Reset,
154 Color::Reset,
155 Color::Reset,
156 Color::Rgb(26, 44, 99),
157 Color::Rgb(35, 45, 65),
158 Color::Rgb(246, 242, 232),
159 Color::Rgb(147, 160, 184),
160 Color::Rgb(42, 63, 114),
161 Color::Rgb(182, 192, 212),
162 Color::Rgb(106, 166, 220),
163 Color::Reset,
164 Color::Rgb(79, 209, 197),
165 Color::Rgb(246, 196, 83),
166 Color::Rgb(255, 134, 178),
167 Color::Rgb(138, 153, 179),
168 Color::Rgb(138, 153, 179),
169 Color::Rgb(18, 42, 34),
170 Color::Rgb(52, 24, 39),
171 ],
172 Self::WhaleLight => [
173 Color::Reset,
174 Color::Reset,
175 Color::Reset,
176 Color::Rgb(232, 238, 248),
177 Color::Rgb(238, 246, 255),
178 Color::Rgb(20, 33, 58),
179 Color::Rgb(91, 103, 128),
180 Color::Rgb(169, 184, 207),
181 Color::Rgb(69, 81, 104),
182 Color::Rgb(21, 53, 178),
183 Color::Reset,
184 Color::Rgb(8, 118, 109),
185 Color::Rgb(122, 85, 0),
186 Color::Rgb(180, 35, 90),
187 Color::Rgb(95, 107, 129),
188 Color::Rgb(95, 107, 129),
189 Color::Rgb(223, 247, 231),
190 Color::Rgb(252, 235, 242),
191 ],
192 Self::Terminal => [
193 Color::Reset,
194 Color::Reset,
195 Color::Reset,
196 Color::Reset,
197 Color::Reset,
198 Color::Reset,
199 Color::Reset,
200 Color::Reset,
201 Color::Reset,
202 Color::Blue,
203 Color::Reset,
204 Color::Cyan,
205 Color::Yellow,
206 Color::Red,
207 Color::Reset,
208 Color::Reset,
209 Color::Reset,
210 Color::Reset,
211 ],
212 Self::Grayscale => [
213 Color::Rgb(10, 10, 10),
214 Color::Rgb(10, 10, 10),
215 Color::Rgb(18, 18, 18),
216 Color::Rgb(31, 31, 31),
217 Color::Rgb(62, 62, 62),
218 Color::Rgb(236, 236, 236),
219 Color::Rgb(180, 180, 180),
220 Color::Rgb(96, 96, 96),
221 Color::Rgb(220, 220, 220),
222 Color::Rgb(220, 220, 220),
223 Color::Rgb(10, 10, 10),
224 Color::Rgb(180, 180, 180),
225 Color::Rgb(210, 210, 210),
226 Color::Rgb(236, 236, 236),
227 Color::Rgb(138, 138, 138),
228 Color::Rgb(138, 138, 138),
229 Color::Rgb(34, 34, 34),
230 Color::Rgb(42, 42, 42),
231 ],
232 Self::CatppuccinMocha => [
233 Color::Rgb(17, 17, 27),
234 Color::Rgb(30, 30, 46),
235 Color::Rgb(24, 24, 37),
236 Color::Rgb(49, 50, 68),
237 Color::Rgb(69, 71, 90),
238 Color::Rgb(205, 214, 244),
239 Color::Rgb(166, 173, 200),
240 Color::Rgb(69, 71, 90),
241 Color::Rgb(186, 194, 222),
242 Color::Rgb(137, 180, 250),
243 Color::Rgb(30, 30, 46),
244 Color::Rgb(116, 199, 236),
245 Color::Rgb(250, 179, 135),
246 Color::Rgb(243, 139, 168),
247 Color::Rgb(127, 132, 156),
248 Color::Rgb(108, 112, 134),
249 Color::Rgb(31, 51, 41),
250 Color::Rgb(58, 31, 42),
251 ],
252 Self::TokyoNight => [
253 Color::Rgb(22, 22, 30),
254 Color::Rgb(26, 27, 38),
255 Color::Rgb(22, 22, 30),
256 Color::Rgb(41, 46, 66),
257 Color::Rgb(40, 52, 87),
258 Color::Rgb(192, 202, 245),
259 Color::Rgb(169, 177, 214),
260 Color::Rgb(65, 72, 104),
261 Color::Rgb(187, 194, 224),
262 Color::Rgb(122, 162, 247),
263 Color::Rgb(26, 27, 38),
264 Color::Rgb(125, 207, 255),
265 Color::Rgb(255, 158, 100),
266 Color::Rgb(247, 118, 142),
267 Color::Rgb(115, 122, 162),
268 Color::Rgb(92, 101, 141),
269 Color::Rgb(27, 43, 31),
270 Color::Rgb(51, 28, 36),
271 ],
272 Self::Dracula => [
273 Color::Rgb(33, 34, 44),
274 Color::Rgb(40, 42, 54),
275 Color::Rgb(33, 34, 44),
276 Color::Rgb(52, 55, 70),
277 Color::Rgb(68, 71, 90),
278 Color::Rgb(248, 248, 242),
279 Color::Rgb(192, 196, 214),
280 Color::Rgb(68, 71, 90),
281 Color::Rgb(226, 226, 220),
282 Color::Rgb(189, 147, 249),
283 Color::Rgb(40, 42, 54),
284 Color::Rgb(139, 233, 253),
285 Color::Rgb(255, 184, 108),
286 Color::Rgb(255, 85, 85),
287 Color::Rgb(138, 142, 170),
288 Color::Rgb(98, 114, 164),
289 Color::Rgb(33, 58, 42),
290 Color::Rgb(58, 31, 34),
291 ],
292 Self::GruvboxDark => [
293 Color::Rgb(29, 32, 33),
294 Color::Rgb(40, 40, 40),
295 Color::Rgb(60, 56, 54),
296 Color::Rgb(80, 73, 69),
297 Color::Rgb(102, 92, 84),
298 Color::Rgb(235, 219, 178),
299 Color::Rgb(197, 184, 160),
300 Color::Rgb(102, 92, 84),
301 Color::Rgb(213, 196, 161),
302 Color::Rgb(131, 165, 152),
303 Color::Rgb(40, 40, 40),
304 Color::Rgb(142, 192, 124),
305 Color::Rgb(254, 128, 25),
306 Color::Rgb(251, 73, 52),
307 Color::Rgb(168, 153, 132),
308 Color::Rgb(146, 131, 116),
309 Color::Rgb(41, 50, 22),
310 Color::Rgb(53, 28, 24),
311 ],
312 Self::Claude => [
313 Color::Rgb(24, 23, 21),
314 Color::Rgb(24, 23, 21),
315 Color::Rgb(37, 35, 32),
316 Color::Rgb(31, 30, 27),
317 Color::Rgb(48, 45, 40),
318 Color::Rgb(250, 249, 245),
319 Color::Rgb(160, 157, 150),
320 Color::Rgb(48, 45, 40),
321 Color::Rgb(208, 205, 197),
322 Color::Rgb(204, 120, 92),
323 Color::Rgb(24, 23, 21),
324 Color::Rgb(93, 184, 166),
325 Color::Rgb(232, 165, 90),
326 Color::Rgb(224, 96, 96),
327 Color::Rgb(125, 122, 115),
328 Color::Rgb(114, 112, 106),
329 Color::Rgb(26, 36, 29),
330 Color::Rgb(36, 26, 26),
331 ],
332 Self::Matrix => [
333 Color::Rgb(0, 10, 0),
334 Color::Rgb(0, 10, 0),
335 Color::Rgb(0, 10, 0),
336 Color::Rgb(0, 51, 0),
337 Color::Rgb(0, 51, 0),
338 Color::Rgb(136, 255, 136),
339 Color::Rgb(0, 169, 0),
340 Color::Rgb(0, 204, 0),
341 Color::Rgb(221, 255, 221),
342 Color::Rgb(0, 204, 0),
343 Color::Rgb(0, 10, 0),
344 Color::Rgb(0, 153, 0),
345 Color::Rgb(136, 255, 136),
346 Color::Rgb(180, 0, 0),
347 Color::Rgb(0, 135, 0),
348 Color::Rgb(0, 108, 0),
349 Color::Rgb(13, 26, 13),
350 Color::Rgb(26, 13, 13),
351 ],
352 Self::SolarizedLight => [
353 Color::Rgb(253, 246, 227),
354 Color::Rgb(253, 246, 227),
355 Color::Rgb(240, 237, 231),
356 Color::Rgb(228, 223, 207),
357 Color::Rgb(214, 210, 201),
358 Color::Rgb(0, 43, 54),
359 Color::Rgb(82, 102, 109),
360 Color::Rgb(147, 161, 161),
361 Color::Rgb(7, 54, 66),
362 Color::Rgb(38, 139, 210),
363 Color::Rgb(253, 246, 227),
364 Color::Rgb(41, 158, 150),
365 Color::Rgb(203, 75, 22),
366 Color::Rgb(220, 50, 47),
367 Color::Rgb(114, 129, 130),
368 Color::Rgb(101, 123, 131),
369 Color::Rgb(234, 242, 224),
370 Color::Rgb(253, 238, 235),
371 ],
372 Self::Uwu => [
373 Color::Rgb(18, 14, 24),
374 Color::Rgb(22, 18, 28),
375 Color::Rgb(31, 24, 40),
376 Color::Rgb(44, 34, 56),
377 Color::Rgb(61, 46, 78),
378 Color::Rgb(247, 240, 248),
379 Color::Rgb(184, 170, 200),
380 Color::Rgb(74, 58, 92),
381 Color::Rgb(232, 220, 238),
382 Color::Rgb(255, 158, 205),
383 Color::Rgb(22, 18, 28),
384 Color::Rgb(154, 236, 224),
385 Color::Rgb(255, 214, 154),
386 Color::Rgb(255, 107, 138),
387 Color::Rgb(138, 124, 152),
388 Color::Rgb(110, 96, 122),
389 Color::Rgb(26, 42, 36),
390 Color::Rgb(58, 24, 40),
391 ],
392 };
393 colors[role.index()]
394 }
395 pub const fn ink(self, ink: TuiInk) -> Color {
396 let colors = match self {
397 Self::Underwater => [
398 Color::Rgb(79, 209, 197),
399 Color::Rgb(155, 214, 111),
400 Color::Rgb(255, 122, 89),
401 Color::Rgb(224, 153, 72),
402 Color::Rgb(246, 196, 83),
403 Color::Rgb(255, 122, 89),
404 Color::Rgb(126, 180, 232),
405 Color::Rgb(185, 220, 236),
406 Color::Rgb(173, 136, 255),
407 Color::Rgb(182, 192, 212),
408 Color::Rgb(106, 166, 220),
409 ],
410 Self::UnderwaterRetro => [
411 Color::Rgb(79, 209, 197),
412 Color::Rgb(155, 214, 111),
413 Color::Rgb(255, 122, 89),
414 Color::Rgb(224, 153, 72),
415 Color::Rgb(246, 196, 83),
416 Color::Rgb(255, 122, 89),
417 Color::Rgb(126, 180, 232),
418 Color::Rgb(185, 220, 236),
419 Color::Rgb(173, 136, 255),
420 Color::Rgb(182, 192, 212),
421 Color::Rgb(106, 166, 220),
422 ],
423 Self::Shoreline => [
424 Color::Rgb(127, 214, 198),
425 Color::Rgb(163, 217, 119),
426 Color::Rgb(240, 168, 104),
427 Color::Rgb(176, 167, 178),
428 Color::Rgb(246, 196, 83),
429 Color::Rgb(240, 168, 104),
430 Color::Rgb(126, 180, 232),
431 Color::Rgb(185, 220, 236),
432 Color::Rgb(173, 136, 255),
433 Color::Rgb(217, 210, 220),
434 Color::Rgb(103, 184, 214),
435 ],
436 Self::ShorelineLight => [
437 Color::Rgb(31, 122, 107),
438 Color::Rgb(47, 107, 58),
439 Color::Rgb(143, 85, 20),
440 Color::Rgb(107, 96, 110),
441 Color::Rgb(122, 85, 0),
442 Color::Rgb(143, 85, 20),
443 Color::Rgb(22, 54, 178),
444 Color::Rgb(52, 92, 128),
445 Color::Rgb(112, 71, 184),
446 Color::Rgb(74, 65, 76),
447 Color::Rgb(0, 102, 132),
448 ],
449 Self::Whale => [
450 Color::Rgb(79, 209, 197),
451 Color::Rgb(155, 214, 111),
452 Color::Rgb(255, 122, 89),
453 Color::Rgb(224, 153, 72),
454 Color::Rgb(246, 196, 83),
455 Color::Rgb(255, 122, 89),
456 Color::Rgb(126, 180, 232),
457 Color::Rgb(185, 220, 236),
458 Color::Rgb(173, 136, 255),
459 Color::Rgb(182, 192, 212),
460 Color::Rgb(106, 166, 220),
461 ],
462 Self::WhaleLight => [
463 Color::Rgb(8, 118, 109),
464 Color::Rgb(20, 118, 61),
465 Color::Rgb(169, 71, 36),
466 Color::Rgb(146, 64, 14),
467 Color::Rgb(122, 85, 0),
468 Color::Rgb(169, 71, 36),
469 Color::Rgb(22, 54, 178),
470 Color::Rgb(52, 92, 128),
471 Color::Rgb(112, 71, 184),
472 Color::Rgb(69, 81, 104),
473 Color::Rgb(21, 53, 178),
474 ],
475 Self::Terminal => [
476 Color::Cyan,
477 Color::Green,
478 Color::Yellow,
479 Color::Yellow,
480 Color::LightYellow,
481 Color::LightRed,
482 Color::LightBlue,
483 Color::Magenta,
484 Color::LightCyan,
485 Color::Reset,
486 Color::Cyan,
487 ],
488 Self::Grayscale => [
489 Color::Rgb(220, 220, 220),
490 Color::Rgb(220, 220, 220),
491 Color::Rgb(180, 180, 180),
492 Color::Rgb(181, 181, 181),
493 Color::Rgb(210, 210, 210),
494 Color::Rgb(237, 237, 237),
495 Color::Rgb(200, 200, 200),
496 Color::Rgb(181, 181, 181),
497 Color::Rgb(250, 250, 250),
498 Color::Rgb(220, 220, 220),
499 Color::Rgb(180, 180, 180),
500 ],
501 Self::CatppuccinMocha => [
502 Color::Rgb(116, 199, 236),
503 Color::Rgb(166, 227, 161),
504 Color::Rgb(249, 226, 175),
505 Color::Rgb(249, 226, 175),
506 Color::Rgb(250, 179, 135),
507 Color::Rgb(243, 139, 168),
508 Color::Rgb(138, 180, 250),
509 Color::Rgb(250, 180, 135),
510 Color::Rgb(203, 166, 247),
511 Color::Rgb(186, 194, 222),
512 Color::Rgb(137, 217, 235),
513 ],
514 Self::TokyoNight => [
515 Color::Rgb(125, 207, 255),
516 Color::Rgb(158, 206, 106),
517 Color::Rgb(224, 175, 104),
518 Color::Rgb(224, 175, 104),
519 Color::Rgb(255, 158, 100),
520 Color::Rgb(247, 118, 142),
521 Color::Rgb(123, 162, 247),
522 Color::Rgb(255, 159, 100),
523 Color::Rgb(187, 154, 247),
524 Color::Rgb(187, 194, 224),
525 Color::Rgb(125, 207, 255),
526 ],
527 Self::Dracula => [
528 Color::Rgb(139, 233, 253),
529 Color::Rgb(80, 250, 123),
530 Color::Rgb(241, 250, 140),
531 Color::Rgb(241, 250, 140),
532 Color::Rgb(255, 184, 108),
533 Color::Rgb(255, 85, 85),
534 Color::Rgb(190, 147, 249),
535 Color::Rgb(255, 185, 108),
536 Color::Rgb(140, 233, 253),
537 Color::Rgb(226, 226, 220),
538 Color::Rgb(139, 233, 253),
539 ],
540 Self::GruvboxDark => [
541 Color::Rgb(142, 192, 124),
542 Color::Rgb(142, 192, 124),
543 Color::Rgb(250, 189, 47),
544 Color::Rgb(250, 189, 47),
545 Color::Rgb(254, 128, 25),
546 Color::Rgb(251, 73, 52),
547 Color::Rgb(132, 165, 152),
548 Color::Rgb(254, 129, 25),
549 Color::Rgb(211, 134, 155),
550 Color::Rgb(213, 196, 161),
551 Color::Rgb(131, 165, 152),
552 ],
553 Self::Claude => [
554 Color::Rgb(93, 184, 166),
555 Color::Rgb(93, 184, 114),
556 Color::Rgb(212, 160, 23),
557 Color::Rgb(212, 160, 23),
558 Color::Rgb(232, 165, 90),
559 Color::Rgb(224, 96, 96),
560 Color::Rgb(205, 120, 92),
561 Color::Rgb(232, 166, 90),
562 Color::Rgb(138, 99, 210),
563 Color::Rgb(208, 205, 197),
564 Color::Rgb(93, 184, 166),
565 ],
566 Self::Matrix => [
567 Color::Rgb(136, 255, 136),
568 Color::Rgb(136, 255, 136),
569 Color::Rgb(204, 204, 0),
570 Color::Rgb(204, 204, 0),
571 Color::Rgb(255, 170, 60),
572 Color::Rgb(255, 100, 100),
573 Color::Rgb(0, 154, 0),
574 Color::Rgb(255, 170, 60),
575 Color::Rgb(100, 255, 220),
576 Color::Rgb(221, 255, 221),
577 Color::Rgb(0, 204, 0),
578 ],
579 Self::SolarizedLight => [
580 Color::Rgb(41, 158, 150),
581 Color::Rgb(127, 146, 0),
582 Color::Rgb(180, 136, 0),
583 Color::Rgb(180, 136, 0),
584 Color::Rgb(203, 75, 22),
585 Color::Rgb(220, 50, 47),
586 Color::Rgb(39, 139, 210),
587 Color::Rgb(204, 75, 22),
588 Color::Rgb(108, 113, 196),
589 Color::Rgb(7, 54, 66),
590 Color::Rgb(38, 139, 210),
591 ],
592 Self::Uwu => [
593 Color::Rgb(154, 236, 224),
594 Color::Rgb(154, 239, 192),
595 Color::Rgb(255, 224, 138),
596 Color::Rgb(255, 224, 138),
597 Color::Rgb(255, 214, 154),
598 Color::Rgb(255, 107, 138),
599 Color::Rgb(196, 168, 255),
600 Color::Rgb(255, 180, 232),
601 Color::Rgb(138, 212, 255),
602 Color::Rgb(232, 220, 238),
603 Color::Rgb(184, 200, 255),
604 ],
605 };
606 colors[ink as usize]
607 }
608 }
609 /// Distinct ink slots already used by Codewhale's TUI.
610 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
611 pub enum TuiInk {
612 Working,
613 Success,
614 Warning,
615 PermissionAsk,
616 PermissionAutoReview,
617 PermissionFullAccess,
618 ModeWork,
619 ModePlan,
620 ModeOperate,
621 Soft,
622 Info,
623 }
624 impl TuiInk {
625 pub const fn fallback_role(self) -> Role {
626 match self {
627 Self::Working | Self::Success => Role::Live,
628 Self::Warning
629 | Self::PermissionAsk
630 | Self::PermissionAutoReview
631 | Self::PermissionFullAccess => Role::Attention,
632 Self::ModeWork | Self::ModePlan | Self::ModeOperate => Role::Primary,
633 Self::Soft => Role::Muted,
634 Self::Info => Role::Primary,
635 }
636 }
637 }
638 /// Native background slots, retained independently of the shared role theme.
639 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
640 pub enum TuiGround {
641 Surface,
642 Panel,
643 Elevated,
644 Composer,
645 Selection,
646 Header,
647 Footer,
648 DiffAdded,
649 DiffRemoved,
650 }
651 impl TuiGround {
652 pub const fn fallback_role(self) -> Role {
653 match self {
654 Self::Surface | Self::Footer => Role::Background,
655 Self::Panel | Self::Composer => Role::Surface,
656 Self::Elevated => Role::Hover,
657 Self::Selection => Role::Selected,
658 Self::Header => Role::Sidebar,
659 Self::DiffAdded => Role::DiffAddedTint,
660 Self::DiffRemoved => Role::DiffRemovedTint,
661 }
662 }
663 }
664 impl TuiPalette {
665 pub const fn ground(self, ground: TuiGround) -> Color {
666 let colors = match self {
667 Self::Underwater => [
668 Color::Rgb(10, 30, 51),
669 Color::Rgb(13, 34, 58),
670 Color::Rgb(16, 42, 69),
671 Color::Rgb(13, 34, 58),
672 Color::Rgb(35, 45, 65),
673 Color::Rgb(6, 19, 32),
674 Color::Rgb(6, 19, 32),
675 Color::Rgb(18, 42, 34),
676 Color::Rgb(52, 24, 39),
677 ],
678 Self::UnderwaterRetro => [
679 Color::Rgb(5, 16, 25),
680 Color::Rgb(7, 21, 34),
681 Color::Rgb(10, 28, 44),
682 Color::Rgb(7, 21, 34),
683 Color::Rgb(35, 45, 65),
684 Color::Rgb(3, 12, 19),
685 Color::Rgb(3, 12, 19),
686 Color::Rgb(18, 42, 34),
687 Color::Rgb(52, 24, 39),
688 ],
689 Self::Shoreline => [
690 Color::Rgb(33, 31, 35),
691 Color::Rgb(43, 40, 46),
692 Color::Rgb(53, 49, 58),
693 Color::Rgb(43, 40, 46),
694 Color::Rgb(44, 70, 84),
695 Color::Rgb(26, 24, 28),
696 Color::Rgb(26, 24, 28),
697 Color::Rgb(30, 44, 37),
698 Color::Rgb(51, 32, 42),
699 ],
700 Self::ShorelineLight => [
701 Color::Rgb(245, 240, 233),
702 Color::Rgb(236, 229, 224),
703 Color::Rgb(255, 252, 247),
704 Color::Rgb(251, 247, 241),
705 Color::Rgb(201, 224, 231),
706 Color::Rgb(237, 231, 224),
707 Color::Rgb(237, 231, 224),
708 Color::Rgb(226, 242, 230),
709 Color::Rgb(251, 230, 236),
710 ],
711 Self::Whale => [
712 Color::Reset,
713 Color::Reset,
714 Color::Rgb(26, 44, 99),
715 Color::Reset,
716 Color::Rgb(35, 45, 65),
717 Color::Reset,
718 Color::Reset,
719 Color::Rgb(18, 42, 34),
720 Color::Rgb(52, 24, 39),
721 ],
722 Self::WhaleLight => [
723 Color::Reset,
724 Color::Reset,
725 Color::Rgb(232, 238, 248),
726 Color::Reset,
727 Color::Rgb(238, 246, 255),
728 Color::Reset,
729 Color::Reset,
730 Color::Rgb(223, 247, 231),
731 Color::Rgb(252, 235, 242),
732 ],
733 Self::Terminal => [
734 Color::Reset,
735 Color::Reset,
736 Color::Reset,
737 Color::Reset,
738 Color::Reset,
739 Color::Reset,
740 Color::Reset,
741 Color::Reset,
742 Color::Reset,
743 ],
744 Self::Grayscale => [
745 Color::Rgb(10, 10, 10),
746 Color::Rgb(18, 18, 18),
747 Color::Rgb(31, 31, 31),
748 Color::Rgb(18, 18, 18),
749 Color::Rgb(62, 62, 62),
750 Color::Rgb(10, 10, 10),
751 Color::Rgb(10, 10, 10),
752 Color::Rgb(34, 34, 34),
753 Color::Rgb(42, 42, 42),
754 ],
755 Self::CatppuccinMocha => [
756 Color::Rgb(30, 30, 46),
757 Color::Rgb(24, 24, 37),
758 Color::Rgb(49, 50, 68),
759 Color::Rgb(24, 24, 37),
760 Color::Rgb(69, 71, 90),
761 Color::Rgb(17, 17, 27),
762 Color::Rgb(17, 17, 27),
763 Color::Rgb(31, 51, 41),
764 Color::Rgb(58, 31, 42),
765 ],
766 Self::TokyoNight => [
767 Color::Rgb(26, 27, 38),
768 Color::Rgb(22, 22, 30),
769 Color::Rgb(41, 46, 66),
770 Color::Rgb(22, 22, 30),
771 Color::Rgb(40, 52, 87),
772 Color::Rgb(22, 22, 30),
773 Color::Rgb(22, 22, 30),
774 Color::Rgb(27, 43, 31),
775 Color::Rgb(51, 28, 36),
776 ],
777 Self::Dracula => [
778 Color::Rgb(40, 42, 54),
779 Color::Rgb(33, 34, 44),
780 Color::Rgb(52, 55, 70),
781 Color::Rgb(33, 34, 44),
782 Color::Rgb(68, 71, 90),
783 Color::Rgb(33, 34, 44),
784 Color::Rgb(33, 34, 44),
785 Color::Rgb(33, 58, 42),
786 Color::Rgb(58, 31, 34),
787 ],
788 Self::GruvboxDark => [
789 Color::Rgb(40, 40, 40),
790 Color::Rgb(60, 56, 54),
791 Color::Rgb(80, 73, 69),
792 Color::Rgb(60, 56, 54),
793 Color::Rgb(102, 92, 84),
794 Color::Rgb(29, 32, 33),
795 Color::Rgb(29, 32, 33),
796 Color::Rgb(41, 50, 22),
797 Color::Rgb(53, 28, 24),
798 ],
799 Self::Claude => [
800 Color::Rgb(24, 23, 21),
801 Color::Rgb(37, 35, 32),
802 Color::Rgb(31, 30, 27),
803 Color::Rgb(37, 35, 32),
804 Color::Rgb(48, 45, 40),
805 Color::Rgb(24, 23, 21),
806 Color::Rgb(24, 23, 21),
807 Color::Rgb(26, 36, 29),
808 Color::Rgb(36, 26, 26),
809 ],
810 Self::Matrix => [
811 Color::Rgb(0, 10, 0),
812 Color::Rgb(0, 10, 0),
813 Color::Rgb(0, 51, 0),
814 Color::Rgb(0, 10, 0),
815 Color::Rgb(0, 51, 0),
816 Color::Rgb(0, 10, 0),
817 Color::Rgb(0, 10, 0),
818 Color::Rgb(13, 26, 13),
819 Color::Rgb(26, 13, 13),
820 ],
821 Self::SolarizedLight => [
822 Color::Rgb(253, 246, 227),
823 Color::Rgb(240, 237, 231),
824 Color::Rgb(228, 223, 207),
825 Color::Rgb(240, 237, 231),
826 Color::Rgb(214, 210, 201),
827 Color::Rgb(253, 246, 227),
828 Color::Rgb(253, 246, 227),
829 Color::Rgb(234, 242, 224),
830 Color::Rgb(253, 238, 235),
831 ],
832 Self::Uwu => [
833 Color::Rgb(22, 18, 28),
834 Color::Rgb(31, 24, 40),
835 Color::Rgb(44, 34, 56),
836 Color::Rgb(31, 24, 40),
837 Color::Rgb(61, 46, 78),
838 Color::Rgb(18, 14, 24),
839 Color::Rgb(18, 14, 24),
840 Color::Rgb(26, 42, 36),
841 Color::Rgb(58, 24, 40),
842 ],
843 };
844 colors[ground as usize]
845 }
846 }
847
847 lines RUST