summaryrefslogtreecommitdiff
path: root/panto-popular-themes/init.lua
blob: 51f3ca5275c74ebc3595321a1f20d43c365d1eca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
-- Popular terminal palettes for pantograph. The first 19 entries are copied
-- from pantograph/src/tui_theme.zig; the final three are Kanagawa reductions.
-- Activation probes panto.ext.style(name) before registering so an existing
-- core or third-party theme wins without hiding validation errors.

local palettes = {
    { name = 'Tokyo Night', palette = {
        canvas_fg = { r = 0xc0, g = 0xca, b = 0xf5 },
        canvas_bg = { r = 0x1a, g = 0x1b, b = 0x26 },
        surface = { r = 0x16, g = 0x16, b = 0x1e },
        accent = { r = 0x7a, g = 0xa2, b = 0xf7 },
        muted = { r = 0x56, g = 0x5f, b = 0x89 },
        success = { r = 0x73, g = 0xda, b = 0xca },
        err = { r = 0xdb, g = 0x4b, b = 0x4b },
        warn = { r = 0xe0, g = 0xaf, b = 0x68 },
        purple = { r = 0xbb, g = 0x9a, b = 0xf7 },
        secondary = { r = 0x7d, g = 0xcf, b = 0xff },
        syntax_string = { r = 0x9e, g = 0xce, b = 0x6a },
        syntax_number = { r = 0xff, g = 0x9e, b = 0x64 },
        syntax_keyword = { r = 0x9d, g = 0x7c, b = 0xd8 },
        syntax_function = { r = 0x7a, g = 0xa2, b = 0xf7 },
        syntax_type = { r = 0x2a, g = 0xc3, b = 0xde },
        syntax_variable = { r = 0xc0, g = 0xca, b = 0xf5 },
        syntax_tag = { r = 0xbb, g = 0x9a, b = 0xf7 },
        diff_add_bg = { r = 0x24, g = 0x3e, b = 0x4a },
        diff_remove_bg = { r = 0x4a, g = 0x27, b = 0x2f },
    } },
    { name = 'Catppuccin Mocha', palette = {
        canvas_fg = { r = 0xcd, g = 0xd6, b = 0xf4 },
        canvas_bg = { r = 0x1e, g = 0x1e, b = 0x2e },
        surface = { r = 0x18, g = 0x18, b = 0x25 },
        accent = { r = 0x89, g = 0xb4, b = 0xfa },
        muted = { r = 0x93, g = 0x99, b = 0xb2 },
        success = { r = 0x94, g = 0xe2, b = 0xd5 },
        err = { r = 0xf3, g = 0x8b, b = 0xa8 },
        warn = { r = 0xf9, g = 0xe2, b = 0xaf },
        purple = { r = 0xcb, g = 0xa6, b = 0xf7 },
        secondary = { r = 0x89, g = 0xdc, b = 0xeb },
        syntax_string = { r = 0xa6, g = 0xe3, b = 0xa1 },
        syntax_number = { r = 0xfa, g = 0xb3, b = 0x87 },
        syntax_keyword = { r = 0xcb, g = 0xa6, b = 0xf7 },
        syntax_function = { r = 0x89, g = 0xb4, b = 0xfa },
        syntax_type = { r = 0xf9, g = 0xe2, b = 0xaf },
        syntax_variable = { r = 0xcd, g = 0xd6, b = 0xf4 },
        syntax_tag = { r = 0x89, g = 0xb4, b = 0xfa },
        diff_add_bg = { r = 0x36, g = 0x41, b = 0x43 },
        diff_remove_bg = { r = 0x44, g = 0x32, b = 0x44 },
    } },
    { name = 'Gruvbox Dark', palette = {
        canvas_fg = { r = 0xeb, g = 0xdb, b = 0xb2 },
        canvas_bg = { r = 0x28, g = 0x28, b = 0x28 },
        surface = { r = 0x3c, g = 0x38, b = 0x36 },
        accent = { r = 0x83, g = 0xa5, b = 0x98 },
        muted = { r = 0x92, g = 0x83, b = 0x74 },
        success = { r = 0xb8, g = 0xbb, b = 0x26 },
        err = { r = 0xfb, g = 0x49, b = 0x34 },
        warn = { r = 0xfa, g = 0xbd, b = 0x2f },
        purple = { r = 0xd3, g = 0x86, b = 0x9b },
        secondary = { r = 0x8e, g = 0xc0, b = 0x7c },
        syntax_string = { r = 0xb8, g = 0xbb, b = 0x26 },
        syntax_number = { r = 0xd3, g = 0x86, b = 0x9b },
        syntax_keyword = { r = 0xfb, g = 0x49, b = 0x34 },
        syntax_function = { r = 0xb8, g = 0xbb, b = 0x26 },
        syntax_type = { r = 0xfa, g = 0xbd, b = 0x2f },
        syntax_variable = { r = 0xeb, g = 0xdb, b = 0xb2 },
        syntax_tag = { r = 0xfe, g = 0x80, b = 0x19 },
        diff_add_bg = { r = 0x62, g = 0x69, b = 0x3e },
        diff_remove_bg = { r = 0x72, g = 0x25, b = 0x29 },
    } },
    { name = 'Solarized Light', palette = {
        canvas_fg = { r = 0x65, g = 0x7b, b = 0x83 },
        canvas_bg = { r = 0xfd, g = 0xf6, b = 0xe3 },
        surface = { r = 0xfb, g = 0xf3, b = 0xdb },
        accent = { r = 0x26, g = 0x8b, b = 0xd2 },
        muted = { r = 0x93, g = 0xa1, b = 0xa1 },
        success = { r = 0x85, g = 0x99, b = 0x00 },
        err = { r = 0xdc, g = 0x32, b = 0x2f },
        warn = { r = 0xb5, g = 0x89, b = 0x00 },
        purple = { r = 0xd3, g = 0x36, b = 0x82 },
        secondary = { r = 0x2a, g = 0xa1, b = 0x98 },
        syntax_string = { r = 0x2a, g = 0xa1, b = 0x98 },
        syntax_number = { r = 0xd3, g = 0x36, b = 0x82 },
        syntax_keyword = { r = 0x58, g = 0x6e, b = 0x75 },
        syntax_function = { r = 0x26, g = 0x8b, b = 0xd2 },
        syntax_type = { r = 0xb5, g = 0x89, b = 0x00 },
        syntax_variable = { r = 0x26, g = 0x8b, b = 0xd2 },
        syntax_tag = { r = 0x26, g = 0x8b, b = 0xd2 },
    } },
    { name = 'Solarized Dark', palette = {
        canvas_fg = { r = 0x83, g = 0x94, b = 0x96 },
        canvas_bg = { r = 0x00, g = 0x2b, b = 0x36 },
        surface = { r = 0x00, g = 0x27, b = 0x31 },
        accent = { r = 0x26, g = 0x8b, b = 0xd2 },
        muted = { r = 0x58, g = 0x6e, b = 0x75 },
        success = { r = 0x85, g = 0x99, b = 0x00 },
        err = { r = 0xdc, g = 0x32, b = 0x2f },
        warn = { r = 0xb5, g = 0x89, b = 0x00 },
        purple = { r = 0x6c, g = 0x71, b = 0xc4 },
        secondary = { r = 0x2a, g = 0xa1, b = 0x98 },
        syntax_string = { r = 0x2a, g = 0xa1, b = 0x98 },
        syntax_number = { r = 0x6c, g = 0x71, b = 0xc4 },
        syntax_keyword = { r = 0x93, g = 0xa1, b = 0xa1 },
        syntax_function = { r = 0x26, g = 0x8b, b = 0xd2 },
        syntax_type = { r = 0xcb, g = 0x4b, b = 0x16 },
        syntax_variable = { r = 0x26, g = 0x8b, b = 0xd2 },
        syntax_tag = { r = 0x26, g = 0x8b, b = 0xd2 },
    } },
    { name = 'Nord', palette = {
        canvas_fg = { r = 0xd8, g = 0xde, b = 0xe9 },
        canvas_bg = { r = 0x2e, g = 0x34, b = 0x40 },
        surface = { r = 0x43, g = 0x4c, b = 0x5e },
        accent = { r = 0x88, g = 0xc0, b = 0xd0 },
        muted = { r = 0x61, g = 0x6e, b = 0x88 },
        success = { r = 0xa3, g = 0xbe, b = 0x8c },
        err = { r = 0xbf, g = 0x61, b = 0x6a },
        warn = { r = 0xeb, g = 0xcb, b = 0x8b },
        purple = { r = 0xb4, g = 0x8e, b = 0xad },
        secondary = { r = 0x5e, g = 0x81, b = 0xac },
        syntax_string = { r = 0xa3, g = 0xbe, b = 0x8c },
        syntax_number = { r = 0xb4, g = 0x8e, b = 0xad },
        syntax_keyword = { r = 0x81, g = 0xa1, b = 0xc1 },
        syntax_function = { r = 0x88, g = 0xc0, b = 0xd0 },
        syntax_type = { r = 0x81, g = 0xa1, b = 0xc1 },
        syntax_variable = { r = 0xd8, g = 0xde, b = 0xe9 },
        syntax_tag = { r = 0xd8, g = 0xde, b = 0xe9 },
    } },
    { name = 'Dracula', palette = {
        canvas_fg = { r = 0xf8, g = 0xf8, b = 0xf2 },
        canvas_bg = { r = 0x28, g = 0x2a, b = 0x36 },
        surface = { r = 0x21, g = 0x22, b = 0x2c },
        accent = { r = 0x8b, g = 0xe9, b = 0xfd },
        muted = { r = 0x62, g = 0x72, b = 0xa4 },
        success = { r = 0x50, g = 0xfa, b = 0x7b },
        err = { r = 0xff, g = 0x55, b = 0x55 },
        warn = { r = 0xf1, g = 0xfa, b = 0x8c },
        purple = { r = 0xbd, g = 0x93, b = 0xf9 },
        secondary = { r = 0xff, g = 0x79, b = 0xc6 },
        syntax_string = { r = 0xf1, g = 0xfa, b = 0x8c },
        syntax_number = { r = 0xbd, g = 0x93, b = 0xf9 },
        syntax_keyword = { r = 0xff, g = 0x79, b = 0xc6 },
        syntax_function = { r = 0x50, g = 0xfa, b = 0x7b },
        syntax_type = { r = 0xa4, g = 0xff, b = 0xff },
        syntax_variable = { r = 0xf8, g = 0xf8, b = 0xf2 },
        syntax_tag = { r = 0x8b, g = 0xe9, b = 0xfd },
    } },
    { name = 'Tokyo Storm', palette = {
        canvas_fg = { r = 0xc0, g = 0xca, b = 0xf5 },
        canvas_bg = { r = 0x24, g = 0x28, b = 0x3b },
        surface = { r = 0x1f, g = 0x23, b = 0x35 },
        accent = { r = 0x7a, g = 0xa2, b = 0xf7 },
        muted = { r = 0x56, g = 0x5f, b = 0x89 },
        success = { r = 0x73, g = 0xda, b = 0xca },
        err = { r = 0xdb, g = 0x4b, b = 0x4b },
        warn = { r = 0xe0, g = 0xaf, b = 0x68 },
        purple = { r = 0xbb, g = 0x9a, b = 0xf7 },
        secondary = { r = 0x7d, g = 0xcf, b = 0xff },
        syntax_string = { r = 0x9e, g = 0xce, b = 0x6a },
        syntax_number = { r = 0xff, g = 0x9e, b = 0x64 },
        syntax_keyword = { r = 0x9d, g = 0x7c, b = 0xd8 },
        syntax_function = { r = 0x7a, g = 0xa2, b = 0xf7 },
        syntax_type = { r = 0x2a, g = 0xc3, b = 0xde },
        syntax_variable = { r = 0xc0, g = 0xca, b = 0xf5 },
        syntax_tag = { r = 0xbb, g = 0x9a, b = 0xf7 },
        diff_add_bg = { r = 0x2b, g = 0x48, b = 0x5a },
        diff_remove_bg = { r = 0x52, g = 0x31, b = 0x3f },
    } },
    { name = 'Tokyo Moon', palette = {
        canvas_fg = { r = 0xc8, g = 0xd3, b = 0xf5 },
        canvas_bg = { r = 0x22, g = 0x24, b = 0x36 },
        surface = { r = 0x1e, g = 0x20, b = 0x30 },
        accent = { r = 0x82, g = 0xaa, b = 0xff },
        muted = { r = 0x63, g = 0x6d, b = 0xa6 },
        success = { r = 0x4f, g = 0xd6, b = 0xbe },
        err = { r = 0xc5, g = 0x3b, b = 0x53 },
        warn = { r = 0xff, g = 0xc7, b = 0x77 },
        purple = { r = 0xc0, g = 0x99, b = 0xff },
        secondary = { r = 0x86, g = 0xe1, b = 0xfc },
        syntax_string = { r = 0xc3, g = 0xe8, b = 0x8d },
        syntax_number = { r = 0xff, g = 0x96, b = 0x6c },
        syntax_keyword = { r = 0xfc, g = 0xa7, b = 0xea },
        syntax_function = { r = 0x82, g = 0xaa, b = 0xff },
        syntax_type = { r = 0x65, g = 0xbc, b = 0xff },
        syntax_variable = { r = 0xc8, g = 0xd3, b = 0xf5 },
        syntax_tag = { r = 0xc0, g = 0x99, b = 0xff },
        diff_add_bg = { r = 0x2a, g = 0x45, b = 0x56 },
        diff_remove_bg = { r = 0x4b, g = 0x2a, b = 0x3d },
    } },
    { name = 'Tokyo Day', palette = {
        canvas_fg = { r = 0x37, g = 0x60, b = 0xbf },
        canvas_bg = { r = 0xe1, g = 0xe2, b = 0xe7 },
        surface = { r = 0xd0, g = 0xd5, b = 0xe3 },
        accent = { r = 0x2e, g = 0x7d, b = 0xe9 },
        muted = { r = 0x84, g = 0x8c, b = 0xb5 },
        success = { r = 0x38, g = 0x70, b = 0x68 },
        err = { r = 0xc6, g = 0x43, b = 0x43 },
        warn = { r = 0x8c, g = 0x6c, b = 0x3e },
        purple = { r = 0x98, g = 0x54, b = 0xf1 },
        secondary = { r = 0x00, g = 0x71, b = 0x97 },
        syntax_string = { r = 0x58, g = 0x75, b = 0x39 },
        syntax_number = { r = 0xb1, g = 0x5c, b = 0x00 },
        syntax_keyword = { r = 0x78, g = 0x47, b = 0xbd },
        syntax_function = { r = 0x2e, g = 0x7d, b = 0xe9 },
        syntax_type = { r = 0x18, g = 0x80, b = 0x92 },
        syntax_variable = { r = 0x37, g = 0x60, b = 0xbf },
        syntax_tag = { r = 0x98, g = 0x54, b = 0xf1 },
        diff_add_bg = { r = 0xb7, g = 0xce, b = 0xd5 },
        diff_remove_bg = { r = 0xda, g = 0xba, b = 0xbe },
    } },
    { name = 'Catppuccin Latte', palette = {
        canvas_fg = { r = 0x4c, g = 0x4f, b = 0x69 },
        canvas_bg = { r = 0xef, g = 0xf1, b = 0xf5 },
        surface = { r = 0xe6, g = 0xe9, b = 0xef },
        accent = { r = 0x1e, g = 0x66, b = 0xf5 },
        muted = { r = 0x7c, g = 0x7f, b = 0x93 },
        success = { r = 0x17, g = 0x92, b = 0x99 },
        err = { r = 0xd2, g = 0x0f, b = 0x39 },
        warn = { r = 0xdf, g = 0x8e, b = 0x1d },
        purple = { r = 0x88, g = 0x39, b = 0xef },
        secondary = { r = 0x04, g = 0xa5, b = 0xe5 },
        syntax_string = { r = 0x40, g = 0xa0, b = 0x2b },
        syntax_number = { r = 0xfe, g = 0x64, b = 0x0b },
        syntax_keyword = { r = 0x88, g = 0x39, b = 0xef },
        syntax_function = { r = 0x1e, g = 0x66, b = 0xf5 },
        syntax_type = { r = 0xdf, g = 0x8e, b = 0x1d },
        syntax_variable = { r = 0x4c, g = 0x4f, b = 0x69 },
        syntax_tag = { r = 0x1e, g = 0x66, b = 0xf5 },
        diff_add_bg = { r = 0xd0, g = 0xe2, b = 0xd1 },
        diff_remove_bg = { r = 0xea, g = 0xc8, b = 0xd3 },
    } },
    { name = 'Catppuccin Frappe', palette = {
        canvas_fg = { r = 0xc6, g = 0xd0, b = 0xf5 },
        canvas_bg = { r = 0x30, g = 0x34, b = 0x46 },
        surface = { r = 0x29, g = 0x2c, b = 0x3c },
        accent = { r = 0x8c, g = 0xaa, b = 0xee },
        muted = { r = 0x94, g = 0x9c, b = 0xbb },
        success = { r = 0x81, g = 0xc8, b = 0xbe },
        err = { r = 0xe7, g = 0x82, b = 0x84 },
        warn = { r = 0xe5, g = 0xc8, b = 0x90 },
        purple = { r = 0xca, g = 0x9e, b = 0xe6 },
        secondary = { r = 0x99, g = 0xd1, b = 0xdb },
        syntax_string = { r = 0xa6, g = 0xd1, b = 0x89 },
        syntax_number = { r = 0xef, g = 0x9f, b = 0x76 },
        syntax_keyword = { r = 0xca, g = 0x9e, b = 0xe6 },
        syntax_function = { r = 0x8c, g = 0xaa, b = 0xee },
        syntax_type = { r = 0xe5, g = 0xc8, b = 0x90 },
        syntax_variable = { r = 0xc6, g = 0xd0, b = 0xf5 },
        syntax_tag = { r = 0x8c, g = 0xaa, b = 0xee },
        diff_add_bg = { r = 0x45, g = 0x50, b = 0x52 },
        diff_remove_bg = { r = 0x51, g = 0x42, b = 0x51 },
    } },
    { name = 'Catppuccin Macchiato', palette = {
        canvas_fg = { r = 0xca, g = 0xd3, b = 0xf5 },
        canvas_bg = { r = 0x24, g = 0x27, b = 0x3a },
        surface = { r = 0x1e, g = 0x20, b = 0x30 },
        accent = { r = 0x8a, g = 0xad, b = 0xf4 },
        muted = { r = 0x93, g = 0x9a, b = 0xb7 },
        success = { r = 0x8b, g = 0xd5, b = 0xca },
        err = { r = 0xed, g = 0x87, b = 0x96 },
        warn = { r = 0xee, g = 0xd4, b = 0x9f },
        purple = { r = 0xc6, g = 0xa0, b = 0xf6 },
        secondary = { r = 0x91, g = 0xd7, b = 0xe3 },
        syntax_string = { r = 0xa6, g = 0xda, b = 0x95 },
        syntax_number = { r = 0xf5, g = 0xa9, b = 0x7f },
        syntax_keyword = { r = 0xc6, g = 0xa0, b = 0xf6 },
        syntax_function = { r = 0x8a, g = 0xad, b = 0xf4 },
        syntax_type = { r = 0xee, g = 0xd4, b = 0x9f },
        syntax_variable = { r = 0xca, g = 0xd3, b = 0xf5 },
        syntax_tag = { r = 0x8a, g = 0xad, b = 0xf4 },
        diff_add_bg = { r = 0x3b, g = 0x47, b = 0x4a },
        diff_remove_bg = { r = 0x48, g = 0x38, b = 0x4b },
    } },
    { name = 'Gruvbox Dark Hard', palette = {
        canvas_fg = { r = 0xeb, g = 0xdb, b = 0xb2 },
        canvas_bg = { r = 0x1d, g = 0x20, b = 0x21 },
        surface = { r = 0x3c, g = 0x38, b = 0x36 },
        accent = { r = 0x83, g = 0xa5, b = 0x98 },
        muted = { r = 0x92, g = 0x83, b = 0x74 },
        success = { r = 0xb8, g = 0xbb, b = 0x26 },
        err = { r = 0xfb, g = 0x49, b = 0x34 },
        warn = { r = 0xfa, g = 0xbd, b = 0x2f },
        purple = { r = 0xd3, g = 0x86, b = 0x9b },
        secondary = { r = 0x8e, g = 0xc0, b = 0x7c },
        syntax_string = { r = 0xb8, g = 0xbb, b = 0x26 },
        syntax_number = { r = 0xd3, g = 0x86, b = 0x9b },
        syntax_keyword = { r = 0xfb, g = 0x49, b = 0x34 },
        syntax_function = { r = 0xb8, g = 0xbb, b = 0x26 },
        syntax_type = { r = 0xfa, g = 0xbd, b = 0x2f },
        syntax_variable = { r = 0xeb, g = 0xdb, b = 0xb2 },
        syntax_tag = { r = 0xfe, g = 0x80, b = 0x19 },
        diff_add_bg = { r = 0x5a, g = 0x63, b = 0x3a },
        diff_remove_bg = { r = 0x79, g = 0x23, b = 0x29 },
    } },
    { name = 'Gruvbox Dark Soft', palette = {
        canvas_fg = { r = 0xeb, g = 0xdb, b = 0xb2 },
        canvas_bg = { r = 0x32, g = 0x30, b = 0x2f },
        surface = { r = 0x3c, g = 0x38, b = 0x36 },
        accent = { r = 0x83, g = 0xa5, b = 0x98 },
        muted = { r = 0x92, g = 0x83, b = 0x74 },
        success = { r = 0xb8, g = 0xbb, b = 0x26 },
        err = { r = 0xfb, g = 0x49, b = 0x34 },
        warn = { r = 0xfa, g = 0xbd, b = 0x2f },
        purple = { r = 0xd3, g = 0x86, b = 0x9b },
        secondary = { r = 0x8e, g = 0xc0, b = 0x7c },
        syntax_string = { r = 0xb8, g = 0xbb, b = 0x26 },
        syntax_number = { r = 0xd3, g = 0x86, b = 0x9b },
        syntax_keyword = { r = 0xfb, g = 0x49, b = 0x34 },
        syntax_function = { r = 0xb8, g = 0xbb, b = 0x26 },
        syntax_type = { r = 0xfa, g = 0xbd, b = 0x2f },
        syntax_variable = { r = 0xeb, g = 0xdb, b = 0xb2 },
        syntax_tag = { r = 0xfe, g = 0x80, b = 0x19 },
        diff_add_bg = { r = 0x68, g = 0x6d, b = 0x43 },
        diff_remove_bg = { r = 0x7b, g = 0x2c, b = 0x2f },
    } },
    { name = 'Gruvbox Light', palette = {
        canvas_fg = { r = 0x3c, g = 0x38, b = 0x36 },
        canvas_bg = { r = 0xfb, g = 0xf1, b = 0xc7 },
        surface = { r = 0xeb, g = 0xdb, b = 0xb2 },
        accent = { r = 0x07, g = 0x66, b = 0x78 },
        muted = { r = 0x92, g = 0x83, b = 0x74 },
        success = { r = 0x79, g = 0x74, b = 0x0e },
        err = { r = 0x9d, g = 0x00, b = 0x06 },
        warn = { r = 0xb5, g = 0x76, b = 0x14 },
        purple = { r = 0x8f, g = 0x3f, b = 0x71 },
        secondary = { r = 0x42, g = 0x7b, b = 0x58 },
        syntax_string = { r = 0x79, g = 0x74, b = 0x0e },
        syntax_number = { r = 0x8f, g = 0x3f, b = 0x71 },
        syntax_keyword = { r = 0x9d, g = 0x00, b = 0x06 },
        syntax_function = { r = 0x79, g = 0x74, b = 0x0e },
        syntax_type = { r = 0xb5, g = 0x76, b = 0x14 },
        syntax_variable = { r = 0x3c, g = 0x38, b = 0x36 },
        syntax_tag = { r = 0xaf, g = 0x3a, b = 0x03 },
        diff_add_bg = { r = 0xd5, g = 0xd3, b = 0x9b },
        diff_remove_bg = { r = 0xfc, g = 0x94, b = 0x87 },
    } },
    { name = 'Gruvbox Light Hard', palette = {
        canvas_fg = { r = 0x3c, g = 0x38, b = 0x36 },
        canvas_bg = { r = 0xf9, g = 0xf5, b = 0xd7 },
        surface = { r = 0xeb, g = 0xdb, b = 0xb2 },
        accent = { r = 0x07, g = 0x66, b = 0x78 },
        muted = { r = 0x92, g = 0x83, b = 0x74 },
        success = { r = 0x79, g = 0x74, b = 0x0e },
        err = { r = 0x9d, g = 0x00, b = 0x06 },
        warn = { r = 0xb5, g = 0x76, b = 0x14 },
        purple = { r = 0x8f, g = 0x3f, b = 0x71 },
        secondary = { r = 0x42, g = 0x7b, b = 0x58 },
        syntax_string = { r = 0x79, g = 0x74, b = 0x0e },
        syntax_number = { r = 0x8f, g = 0x3f, b = 0x71 },
        syntax_keyword = { r = 0x9d, g = 0x00, b = 0x06 },
        syntax_function = { r = 0x79, g = 0x74, b = 0x0e },
        syntax_type = { r = 0xb5, g = 0x76, b = 0x14 },
        syntax_variable = { r = 0x3c, g = 0x38, b = 0x36 },
        syntax_tag = { r = 0xaf, g = 0x3a, b = 0x03 },
        diff_add_bg = { r = 0xd3, g = 0xd6, b = 0xa5 },
        diff_remove_bg = { r = 0xfc, g = 0x96, b = 0x90 },
    } },
    { name = 'Gruvbox Light Soft', palette = {
        canvas_fg = { r = 0x3c, g = 0x38, b = 0x36 },
        canvas_bg = { r = 0xf2, g = 0xe5, b = 0xbc },
        surface = { r = 0xeb, g = 0xdb, b = 0xb2 },
        accent = { r = 0x07, g = 0x66, b = 0x78 },
        muted = { r = 0x92, g = 0x83, b = 0x74 },
        success = { r = 0x79, g = 0x74, b = 0x0e },
        err = { r = 0x9d, g = 0x00, b = 0x06 },
        warn = { r = 0xb5, g = 0x76, b = 0x14 },
        purple = { r = 0x8f, g = 0x3f, b = 0x71 },
        secondary = { r = 0x42, g = 0x7b, b = 0x58 },
        syntax_string = { r = 0x79, g = 0x74, b = 0x0e },
        syntax_number = { r = 0x8f, g = 0x3f, b = 0x71 },
        syntax_keyword = { r = 0x9d, g = 0x00, b = 0x06 },
        syntax_function = { r = 0x79, g = 0x74, b = 0x0e },
        syntax_type = { r = 0xb5, g = 0x76, b = 0x14 },
        syntax_variable = { r = 0x3c, g = 0x38, b = 0x36 },
        syntax_tag = { r = 0xaf, g = 0x3a, b = 0x03 },
        diff_add_bg = { r = 0xce, g = 0xcb, b = 0x94 },
        diff_remove_bg = { r = 0xf7, g = 0x8b, b = 0x7f },
    } },
    { name = 'Dracula Soft', palette = {
        canvas_fg = { r = 0xf6, g = 0xf6, b = 0xf5 },
        canvas_bg = { r = 0x29, g = 0x2a, b = 0x35 },
        surface = { r = 0x21, g = 0x22, b = 0x2c },
        accent = { r = 0xa7, g = 0xdf, b = 0xef },
        muted = { r = 0x70, g = 0x74, b = 0x7f },
        success = { r = 0x87, g = 0xe5, b = 0x8e },
        err = { r = 0xdd, g = 0x6e, b = 0x6b },
        warn = { r = 0xe8, g = 0xed, b = 0xa2 },
        purple = { r = 0xba, g = 0xa0, b = 0xe8 },
        secondary = { r = 0xe4, g = 0x8c, b = 0xc1 },
        syntax_string = { r = 0xe8, g = 0xed, b = 0xa2 },
        syntax_number = { r = 0xba, g = 0xa0, b = 0xe8 },
        syntax_keyword = { r = 0xe4, g = 0x8c, b = 0xc1 },
        syntax_function = { r = 0x87, g = 0xe5, b = 0x8e },
        syntax_type = { r = 0xbc, g = 0xf4, b = 0xf5 },
        syntax_variable = { r = 0xf6, g = 0xf6, b = 0xf5 },
        syntax_tag = { r = 0xa7, g = 0xdf, b = 0xef },
    } },
    { name = 'Kanagawa Wave', palette = {
        canvas_fg = { r = 0xdc, g = 0xd7, b = 0xba },
        canvas_bg = { r = 0x1f, g = 0x1f, b = 0x28 },
        surface = { r = 0x16, g = 0x16, b = 0x1d },
        accent = { r = 0x7e, g = 0x9c, b = 0xd8 },
        muted = { r = 0x72, g = 0x71, b = 0x69 },
        success = { r = 0x98, g = 0xbb, b = 0x6c },
        err = { r = 0xe8, g = 0x24, b = 0x24 },
        warn = { r = 0xff, g = 0x9e, b = 0x3b },
        purple = { r = 0x95, g = 0x7f, b = 0xb8 },
        secondary = { r = 0x7a, g = 0xa8, b = 0x9f },
        syntax_string = { r = 0x98, g = 0xbb, b = 0x6c },
        syntax_number = { r = 0xd2, g = 0x7e, b = 0x99 },
        syntax_keyword = { r = 0x95, g = 0x7f, b = 0xb8 },
        syntax_function = { r = 0x7e, g = 0x9c, b = 0xd8 },
        syntax_type = { r = 0x7a, g = 0xa8, b = 0x9f },
        syntax_variable = { r = 0xdc, g = 0xd7, b = 0xba },
        syntax_tag = { r = 0x7f, g = 0xb4, b = 0xca },
        diff_add_bg = { r = 0x2b, g = 0x33, b = 0x28 },
        diff_remove_bg = { r = 0x43, g = 0x24, b = 0x2b },
    } },
    { name = 'Kanagawa Dragon', palette = {
        canvas_fg = { r = 0xc5, g = 0xc9, b = 0xc5 },
        canvas_bg = { r = 0x18, g = 0x16, b = 0x16 },
        surface = { r = 0x0d, g = 0x0c, b = 0x0c },
        accent = { r = 0x8b, g = 0xa4, b = 0xb0 },
        muted = { r = 0x73, g = 0x7c, b = 0x73 },
        success = { r = 0x98, g = 0xbb, b = 0x6c },
        err = { r = 0xe8, g = 0x24, b = 0x24 },
        warn = { r = 0xff, g = 0x9e, b = 0x3b },
        purple = { r = 0x89, g = 0x92, b = 0xa7 },
        secondary = { r = 0x8e, g = 0xa4, b = 0xa2 },
        syntax_string = { r = 0x8a, g = 0x9a, b = 0x7b },
        syntax_number = { r = 0xa2, g = 0x92, b = 0xa3 },
        syntax_keyword = { r = 0x89, g = 0x92, b = 0xa7 },
        syntax_function = { r = 0x8b, g = 0xa4, b = 0xb0 },
        syntax_type = { r = 0x8e, g = 0xa4, b = 0xa2 },
        syntax_variable = { r = 0xc5, g = 0xc9, b = 0xc5 },
        syntax_tag = { r = 0x94, g = 0x9f, b = 0xb5 },
        diff_add_bg = { r = 0x2b, g = 0x33, b = 0x28 },
        diff_remove_bg = { r = 0x43, g = 0x24, b = 0x2b },
    } },
    { name = 'Kanagawa Lotus', palette = {
        canvas_fg = { r = 0x54, g = 0x54, b = 0x64 },
        canvas_bg = { r = 0xf2, g = 0xec, b = 0xbc },
        surface = { r = 0xd5, g = 0xce, b = 0xa3 },
        accent = { r = 0x4d, g = 0x69, b = 0x9b },
        muted = { r = 0x8a, g = 0x89, b = 0x80 },
        success = { r = 0x6f, g = 0x89, b = 0x4e },
        err = { r = 0xe8, g = 0x24, b = 0x24 },
        warn = { r = 0xe9, g = 0x8a, b = 0x00 },
        purple = { r = 0x62, g = 0x4c, b = 0x83 },
        secondary = { r = 0x59, g = 0x7b, b = 0x75 },
        syntax_string = { r = 0x6f, g = 0x89, b = 0x4e },
        syntax_number = { r = 0xb3, g = 0x5b, b = 0x79 },
        syntax_keyword = { r = 0x62, g = 0x4c, b = 0x83 },
        syntax_function = { r = 0x4d, g = 0x69, b = 0x9b },
        syntax_type = { r = 0x59, g = 0x7b, b = 0x75 },
        syntax_variable = { r = 0x54, g = 0x54, b = 0x64 },
        syntax_tag = { r = 0x66, g = 0x93, b = 0xbf },
        diff_add_bg = { r = 0xb7, g = 0xd0, b = 0xae },
        diff_remove_bg = { r = 0xd9, g = 0xa5, b = 0x94 },
    } },
}

local function blend(base, accent, percent)
    local q = 100 - percent
    return {
        r = math.floor((base.r * q + accent.r * percent) / 100),
        g = math.floor((base.g * q + accent.g * percent) / 100),
        b = math.floor((base.b * q + accent.b * percent) / 100),
    }
end

local function fg(color)
    return string.format("\27[38;2;%d;%d;%dm", color.r, color.g, color.b)
end

local function bg(color)
    return string.format("\27[48;2;%d;%d;%dm", color.r, color.g, color.b)
end

local function derive(p)
    local values = {
        canvas_fg = fg(p.canvas_fg),
        canvas_bg = bg(p.canvas_bg),
        dim = fg(p.muted),
        assistant = fg(p.canvas_fg),
        user = fg(p.canvas_fg),
        tool = fg(p.accent),
        footer = fg(p.muted),
        tool_text = fg(p.canvas_fg),
        tool_pending = fg(p.muted),
        tool_success = fg(p.success),
        tool_error = fg(p.err),
        compaction_header = fg(p.warn),
        thinking_header = fg(p.purple),
        cursor = "\27[7m",
        err = fg(p.err),
        welcome = fg(p.accent),
        waiting_peak = fg(p.canvas_fg),
        waiting_near = fg(p.secondary),
        waiting_far = fg(p.muted),
        err_diff = fg(p.err),
        add_diff = fg(p.success),
        thinking = fg(p.muted),
        compaction = fg(p.muted),

        user_bg = bg(p.surface),
        tool_pending_bg = bg(p.surface),
        tool_success_bg = bg(blend(p.canvas_bg, p.success, 20)),
        tool_error_bg = bg(blend(p.canvas_bg, p.err, 20)),
        diff_remove_bg = bg(p.diff_remove_bg or blend(p.canvas_bg, p.err, 20)),
        diff_add_bg = bg(p.diff_add_bg or blend(p.canvas_bg, p.success, 20)),
        user_text = fg(p.canvas_fg),
        tool_header = fg(p.accent),

        syntax_base = fg(p.canvas_fg),
        syntax_comment = fg(p.muted),
        syntax_string = fg(p.syntax_string),
        syntax_number = fg(p.syntax_number),
        syntax_keyword = fg(p.syntax_keyword),
        syntax_function = fg(p.syntax_function),
        syntax_type = fg(p.syntax_type),
        syntax_variable = fg(p.syntax_variable),
        syntax_tag = fg(p.syntax_tag),

        reset = "\27[0m",
    }
    return values
end

local M = {}

function M.activate()
    local panto = require("panto")
    for _, item in ipairs(palettes) do
        local exists = pcall(panto.ext.style, item.name)
        if not exists then
            panto.ext.style(item.name, derive(item.palette))
        end
    end
end

function M.values(name)
    for _, item in ipairs(palettes) do
        if item.name == name then
            return derive(item.palette)
        end
    end
end

return { name = "themes.popular", activate = M.activate, values = M.values }