Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0:2222/vole.git

A free and open-source forge that lives in your Git repo.

Add Catppuccin, Nord, and Solarized as built-in themes

0584bb700c0b144752ddc29764d697551234f862 · Keenan Nemetz · 1d ago · parent c980fe53

Add Catppuccin, Nord, and Solarized as built-in themes

Ship four more Appearance choices: Catppuccin Mocha, Catppuccin Latte, Nord, and Solarized Light. Each is a token block in static/palettes.css, scoped to its data-theme value and loaded after Everforest, before instance theme packs and profile/custom.css.

The ids join theme.js's allowlist and the account picker, and the instance repository's reserved-name check now covers nord and the catppuccin-/solarized- prefixes so a theme pack cannot shadow a built-in. NOTICE and three MIT license files record the palettes.

server/web/static/palettes.css +179

@@ -0,0 +1,179 @@
1 /* Built-in palettes other than Everforest. Every block is scoped to the
2 data-theme value theme.js writes, so a page loads all of them and only the
3 selected one applies. The tokens are the same names everforest.css defines;
4 a palette that leaves one unset would inherit the fallback from vole.css.
5
6 Catppuccin (MIT), Nord (MIT), and Solarized (MIT) are vendored as colour
7 values. See NOTICE and the matching license files beside this sheet. */
8
9 /* ---------- Catppuccin Mocha ---------- */
10
11 :root[data-theme="catppuccin-mocha"] {
12 color-scheme: dark;
13
14 --bg: #1e1e2e;
15 --bg-panel: #181825;
16 --bg-raised: #313244;
17 --bg-hover: #45475a;
18 --bg-active: #585b70;
19 --border: #313244;
20 --border-strong: #585b70;
21
22 --fg: #cdd6f4;
23 --fg-muted: #a6adc8;
24 --fg-faint: #7f849c;
25
26 --accent: #89b4fa;
27 --accent-fg: #11111b;
28 --accent-soft: color-mix(in srgb, var(--accent) 16%, transparent);
29 --running: #74c7ec;
30 --good: #a6e3a1;
31 --good-soft: rgba(166, 227, 161, 0.14);
32 --bad: #f38ba8;
33 --bad-soft: rgba(243, 139, 168, 0.14);
34 --warn: #f9e2af;
35 --warn-soft: rgba(249, 226, 175, 0.14);
36 --merged: #cba6f7;
37 --merged-soft: rgba(203, 166, 247, 0.14);
38
39 --syn-comment: #7f849c;
40 --syn-punctuation: #9399b2;
41 --syn-operator: #fab387;
42 --syn-number: #cba6f7;
43 --syn-string: #a6e3a1;
44 --syn-keyword: #f38ba8;
45 --syn-function: #89b4fa;
46 --syn-type: #f9e2af;
47 --syn-variable: #cdd6f4;
48 --syn-added: #a6e3a1;
49 --syn-deleted: #f38ba8;
50 }
51
52 /* ---------- Catppuccin Latte ---------- */
53
54 :root[data-theme="catppuccin-latte"] {
55 color-scheme: light;
56
57 --bg: #eff1f5;
58 --bg-panel: #e6e9ef;
59 --bg-raised: #ccd0da;
60 --bg-hover: #bcc0cc;
61 --bg-active: #acb0be;
62 --border: #ccd0da;
63 --border-strong: #acb0be;
64
65 --fg: #4c4f69;
66 --fg-muted: #6c6f85;
67 --fg-faint: #8c8fa1;
68
69 --accent: #1e66f5;
70 --accent-fg: #eff1f5;
71 --accent-soft: rgba(30, 102, 245, 0.12);
72 --running: #04a5e5;
73 --good: #40a02b;
74 --good-soft: rgba(64, 160, 43, 0.12);
75 --bad: #d20f39;
76 --bad-soft: rgba(210, 15, 57, 0.10);
77 --warn: #df8e1d;
78 --warn-soft: rgba(223, 142, 29, 0.12);
79 --merged: #8839ef;
80 --merged-soft: rgba(136, 57, 239, 0.12);
81
82 --syn-comment: #8c8fa1;
83 --syn-punctuation: #7c7f93;
84 --syn-operator: #fe640b;
85 --syn-number: #8839ef;
86 --syn-string: #40a02b;
87 --syn-keyword: #d20f39;
88 --syn-function: #1e66f5;
89 --syn-type: #df8e1d;
90 --syn-variable: #4c4f69;
91 --syn-added: #40a02b;
92 --syn-deleted: #d20f39;
93 }
94
95 /* ---------- Nord ---------- */
96
97 :root[data-theme="nord"] {
98 color-scheme: dark;
99
100 --bg: #2e3440;
101 --bg-panel: #3b4252;
102 --bg-raised: #434c5e;
103 --bg-hover: #4c566a;
104 --bg-active: #4c566a;
105 --border: #434c5e;
106 --border-strong: #4c566a;
107
108 --fg: #d8dee9;
109 --fg-muted: #a3adc2;
110 --fg-faint: #7b88a1;
111
112 --accent: #88c0d0;
113 --accent-fg: #2e3440;
114 --accent-soft: color-mix(in srgb, var(--accent) 16%, transparent);
115 --running: #5e81ac;
116 --good: #a3be8c;
117 --good-soft: rgba(163, 190, 140, 0.14);
118 --bad: #bf616a;
119 --bad-soft: rgba(191, 97, 106, 0.14);
120 --warn: #ebcb8b;
121 --warn-soft: rgba(235, 203, 139, 0.14);
122 --merged: #b48ead;
123 --merged-soft: rgba(180, 142, 173, 0.14);
124
125 --syn-comment: #7b88a1;
126 --syn-punctuation: #a3adc2;
127 --syn-operator: #d08770;
128 --syn-number: #b48ead;
129 --syn-string: #a3be8c;
130 --syn-keyword: #bf616a;
131 --syn-function: #88c0d0;
132 --syn-type: #ebcb8b;
133 --syn-variable: #d8dee9;
134 --syn-added: #a3be8c;
135 --syn-deleted: #bf616a;
136 }
137
138 /* ---------- Solarized Light ---------- */
139
140 :root[data-theme="solarized-light"] {
141 color-scheme: light;
142
143 --bg: #fdf6e3;
144 --bg-panel: #eee8d5;
145 --bg-raised: #e6dfc8;
146 --bg-hover: #ddd6c1;
147 --bg-active: #d5ceb8;
148 --border: #ddd6c1;
149 --border-strong: #c9c2ad;
150
151 --fg: #586e75;
152 --fg-muted: #657b83;
153 --fg-faint: #93a1a1;
154
155 --accent: #268bd2;
156 --accent-fg: #fdf6e3;
157 --accent-soft: rgba(38, 139, 210, 0.12);
158 --running: #2aa198;
159 --good: #859900;
160 --good-soft: rgba(133, 153, 0, 0.12);
161 --bad: #dc322f;
162 --bad-soft: rgba(220, 50, 47, 0.10);
163 --warn: #b58900;
164 --warn-soft: rgba(181, 137, 0, 0.12);
165 --merged: #6c71c4;
166 --merged-soft: rgba(108, 113, 196, 0.12);
167
168 --syn-comment: #93a1a1;
169 --syn-punctuation: #657b83;
170 --syn-operator: #cb4b16;
171 --syn-number: #d33682;
172 --syn-string: #2aa198;
173 --syn-keyword: #859900;
174 --syn-function: #268bd2;
175 --syn-type: #b58900;
176 --syn-variable: #586e75;
177 --syn-added: #859900;
178 --syn-deleted: #dc322f;
179 }