summaryrefslogtreecommitdiff
path: root/src/themes/ayu_mirage.zig
blob: 23aff67f6c9c5be2dee7b4b5247d1f56310abaf9 (plain) (blame)
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
//! Ayu Mirage: Ayu, as close to the original as pardes can draw it.
//! Every value is the original's own, cited on its line (path:line key); the
//! chrome pardes needs and the original lacks is derived from its palette.
//! Sources:
//!   palette (themes/*.yaml, generated src/generated/*.ts); url https://github.com/ayu-theme/ayu-colors; genizah ~/05-genizah/ayu-colors; commit b0fd979a1ddf050101b43311fa598a1a9c5f1bbc
//!   VS Code port (roles, terminal colours); url https://github.com/ayu-theme/vscode-ayu; genizah ~/05-genizah/vscode-ayu; commit d676974ebb245fa5a7ae4444027f72801017f1b6
//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
//!   - focused tag ground #242936 -> #3f434c: 1.07:1 off the unfocused #1f2430, pardes needs 1.5:1 on a dark page
//!   - unfocused tag text #707a8c -> #848d9c: 3.58:1 on #1f2430, tag text needs 4.5:1 to be read and run
//!   - rules between panes #171b24 -> #46494d: 1.19:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
//! Upstream notes: Roles from vscode-ayu's generated ayu-mirage.json (bordered
//! variant, the one package.json ships as the default); syntax roles are its
//! tokenColors and each is checked equal to ayu-colors syntax.* in
//! src/generated/mirage.ts (that file is ayu-colors' own generator output: `npx
//! tsx scripts/generate-themes.ts` run in the genizah checkout; it resolves the
//! OKLCH l1..l5 steps and -L/A modifiers of themes/mirage.yaml). type =
//! tokenColors "Entity name" (scope entity.name, covers entity.name.type; there
//! is no entity.name.type rule). number and constant share syntax.constant.
//! status_* from VS Code statusBar.* (one status bar: status_nc_* null).
//! tabline_* from tab.*; tabline_fill = editorGroupHeader.tabsBackground. Alpha
//! composited over editor.background (selection, line numbers, cursorline,
//! split, scrollbar thumb). scroll_track null: VS Code has no track key
//! (transparent over the editor). search_fg, selection_fg null: not set.
//! info/hint null: neither vscode-ayu nor ayu-colors defines an info/hint
//! colour (VS Code falls back to its own defaults). accent = focusBorder =
//! common.accent.tint. ansi is vscode-ayu's terminal.ansi*
//! (src/template.ts:458-473: normal = syntax.* darken(0.1) except green =
//! vcs.added, black/white/brightBlack from a fixed table at template.ts:5),
//! which differs from ayu-colors' own terminal.* section (listed in palette as
//! terminal.*). palette = every colour of src/generated/mirage.ts; alpha
//! entries composited over editor.bg (editor.*) or ui.bg (others); skipped
//! shadows: ui.panel.shadow, ui.popup.shadow.
pub const theme = .{
    .name = "ayu_mirage",
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:106 editor.background; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:146 editor.bg #242936
    .bg = .{ 0x24, 0x29, 0x36 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:107 editor.foreground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:128 editor.fg #cccac2
    .fg = .{ 0xcc, 0xca, 0xc2 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:112 editor.selectionBackground #409fff40 composited over editor.background #242936 (~/05-genizah/vscode-ayu/ayu-mirage.json:106 editor.background)
    .sel_bg = .{ 0x2b, 0x47, 0x68 },
    // the original keeps text colours over its selection; its text colour
    .sel_fg = .{ 0xcc, 0xca, 0xc2 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:102 tab.inactiveBackground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:163 ui.bg #1f2430
    .tag_bg = .{ 0x1f, 0x24, 0x30 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:103 tab.inactiveForeground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:149 ui.fg #707a8c #707a8c, adjusted
    .tag_fg = .{ 0x84, 0x8d, 0x9c },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:96 tab.activeBackground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:146 editor.bg #242936 #242936, adjusted
    .tag_active_bg = .{ 0x3f, 0x43, 0x4c },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:97 tab.activeForeground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:128 editor.fg #cccac2
    .tag_active_fg = .{ 0xcc, 0xca, 0xc2 },
    // the focused grip: ~/05-genizah/vscode-ayu/ayu-mirage.json:4 focusBorder [also tab.activeBorderTop]; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:167 common.accent.tint #ffcc66
    .box = .{ 0xff, 0xcc, 0x66 },
    // derived: the grip at rest, the accent #ffcc66 faded toward the unfocused tag #1f2430 as far as 1.6:1 off it (0.20 of the way)
    .box_dim = .{ 0x4c, 0x46, 0x3b },
    // an unsaved grip: the original's modified colour, ~/05-genizah/vscode-ayu/ayu-mirage.json:145 editorGutter.modifiedBackground [also gitDecoration.modifiedResourceForeground]; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:118 vcs.modified #80bfff
    .box_dirty = .{ 0x80, 0xbf, 0xff },
    // derived: the column grip, the original's type colour, ~/05-genizah/vscode-ayu/ayu-mirage.json:622 tokenColors "Entity name" foreground; = syntax.entity (~/05-genizah/ayu-colors/src/generated/mirage.ts:88 syntax.entity)
    .column_box = .{ 0x73, 0xd0, 0xff },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:460 tokenColors "Keyword" foreground; = syntax.keyword (~/05-genizah/ayu-colors/src/generated/mirage.ts:92 syntax.keyword)
    .kw = .{ 0xff, 0xa6, 0x59 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:384 tokenColors "String" foreground; = syntax.string (~/05-genizah/ayu-colors/src/generated/mirage.ts:89 syntax.string)
    .str = .{ 0xd5, 0xff, 0x80 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:404 tokenColors "Number" foreground; = syntax.constant (~/05-genizah/ayu-colors/src/generated/mirage.ts:95 syntax.constant)
    .num = .{ 0xdf, 0xbf, 0xff },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:374 tokenColors "Comment" foreground; = syntax.comment (~/05-genizah/ayu-colors/src/generated/mirage.ts:94 syntax.comment)
    .comment = .{ 0x6e, 0x7c, 0x8f },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:108 editorLineNumber.foreground #707a8c80 composited over editor.background #242936 (~/05-genizah/vscode-ayu/ayu-mirage.json:106 editor.background) [gutter has no own bg, so editor bg]
    .lineno = .{ 0x4a, 0x52, 0x61 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:109 editorLineNumber.activeForeground [gutter has no own bg, so editor bg]
    .lineno_active = .{ 0x70, 0x7a, 0x8c },
    // derived: none in the original; the page
    .scroll_track = .{ 0x24, 0x29, 0x36 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:44 scrollbarSlider.background #707a8c66 composited over editor.background #242936 (~/05-genizah/vscode-ayu/ayu-mirage.json:106 editor.background)
    .scroll_thumb = .{ 0x42, 0x49, 0x58 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:92 editorGroup.border; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:150 ui.line #171b24 #171b24, adjusted
    .border = .{ 0x46, 0x49, 0x4d },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:119 editor.findMatchBackground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:135 editor.findMatch.active #736950
    .search_bg = .{ 0x73, 0x69, 0x50 },
    // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
    .search_fg = .{ 0xcc, 0xca, 0xc2 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:143 editorError.foreground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:170 common.error #ff6666
    .diagnostic_error = .{ 0xff, 0x66, 0x66 },
    // ~/05-genizah/vscode-ayu/ayu-mirage.json:144 editorWarning.foreground; source ~/05-genizah/ayu-colors/src/generated/mirage.ts:167 common.accent.tint #ffcc66
    .diagnostic_warning = .{ 0xff, 0xcc, 0x66 },
    .palette = .{
        .{ 0x17, 0x1b, 0x24 }, // 0: ~/05-genizah/vscode-ayu/ayu-mirage.json:264 terminal.ansiBlack
        .{ 0xf2, 0x82, 0x73 }, // 1: ~/05-genizah/vscode-ayu/ayu-mirage.json:265 terminal.ansiRed
        .{ 0x87, 0xd9, 0x6c }, // 2: ~/05-genizah/vscode-ayu/ayu-mirage.json:266 terminal.ansiGreen
        .{ 0xfc, 0xca, 0x60 }, // 3: ~/05-genizah/vscode-ayu/ayu-mirage.json:267 terminal.ansiYellow
        .{ 0x6a, 0xcd, 0xff }, // 4: ~/05-genizah/vscode-ayu/ayu-mirage.json:268 terminal.ansiBlue
        .{ 0xdd, 0xbb, 0xff }, // 5: ~/05-genizah/vscode-ayu/ayu-mirage.json:269 terminal.ansiMagenta
        .{ 0x93, 0xe2, 0xc8 }, // 6: ~/05-genizah/vscode-ayu/ayu-mirage.json:270 terminal.ansiCyan
        .{ 0xc7, 0xc7, 0xc7 }, // 7: ~/05-genizah/vscode-ayu/ayu-mirage.json:271 terminal.ansiWhite
        .{ 0x68, 0x68, 0x68 }, // 8: ~/05-genizah/vscode-ayu/ayu-mirage.json:272 terminal.ansiBrightBlack
        .{ 0xf2, 0x87, 0x79 }, // 9: ~/05-genizah/vscode-ayu/ayu-mirage.json:273 terminal.ansiBrightRed
        .{ 0xd5, 0xff, 0x80 }, // 10: ~/05-genizah/vscode-ayu/ayu-mirage.json:274 terminal.ansiBrightGreen
        .{ 0xff, 0xcd, 0x66 }, // 11: ~/05-genizah/vscode-ayu/ayu-mirage.json:275 terminal.ansiBrightYellow
        .{ 0x73, 0xd0, 0xff }, // 12: ~/05-genizah/vscode-ayu/ayu-mirage.json:276 terminal.ansiBrightBlue
        .{ 0xdf, 0xbf, 0xff }, // 13: ~/05-genizah/vscode-ayu/ayu-mirage.json:277 terminal.ansiBrightMagenta
        .{ 0x95, 0xe6, 0xcb }, // 14: ~/05-genizah/vscode-ayu/ayu-mirage.json:278 terminal.ansiBrightCyan
        .{ 0xff, 0xff, 0xff }, // 15: ~/05-genizah/vscode-ayu/ayu-mirage.json:279 terminal.ansiBrightWhite
    },
};