@silvery/theme 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +36 -0
- package/src/ThemeContext.tsx +62 -0
- package/src/alias.ts +94 -0
- package/src/auto-generate.ts +126 -0
- package/src/builder.ts +218 -0
- package/src/cli.ts +275 -0
- package/src/color.ts +142 -0
- package/src/contrast.ts +75 -0
- package/src/css.ts +51 -0
- package/src/derive.ts +167 -0
- package/src/detect.ts +263 -0
- package/src/export/base16.ts +64 -0
- package/src/generate.ts +79 -0
- package/src/generators.ts +255 -0
- package/src/import/base16.ts +150 -0
- package/src/import/types.ts +47 -0
- package/src/index.ts +2 -0
- package/src/palettes/ayu.ts +92 -0
- package/src/palettes/catppuccin.ts +118 -0
- package/src/palettes/dracula.ts +34 -0
- package/src/palettes/edge.ts +63 -0
- package/src/palettes/everforest.ts +63 -0
- package/src/palettes/gruvbox.ts +62 -0
- package/src/palettes/horizon.ts +35 -0
- package/src/palettes/index.ts +293 -0
- package/src/palettes/kanagawa.ts +91 -0
- package/src/palettes/material.ts +64 -0
- package/src/palettes/modus.ts +63 -0
- package/src/palettes/monokai.ts +64 -0
- package/src/palettes/moonfly.ts +35 -0
- package/src/palettes/nightfly.ts +35 -0
- package/src/palettes/nightfox.ts +63 -0
- package/src/palettes/nord.ts +34 -0
- package/src/palettes/one-dark.ts +34 -0
- package/src/palettes/oxocarbon.ts +63 -0
- package/src/palettes/palenight.ts +36 -0
- package/src/palettes/rose-pine.ts +90 -0
- package/src/palettes/snazzy.ts +35 -0
- package/src/palettes/solarized.ts +62 -0
- package/src/palettes/sonokai.ts +35 -0
- package/src/palettes/tokyo-night.ts +90 -0
- package/src/resolve.ts +44 -0
- package/src/state.ts +58 -0
- package/src/theme.ts +148 -0
- package/src/types.ts +223 -0
- package/src/validate-theme.ts +100 -0
- package/src/validate.ts +56 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in themes and palette registry.
|
|
3
|
+
*
|
|
4
|
+
* Exports:
|
|
5
|
+
* - Pre-derived Theme objects (ansi16Dark, ansi16Light, defaultDark, defaultLight)
|
|
6
|
+
* - ColorPalette definitions from popular theme systems (45 palettes)
|
|
7
|
+
* - Registry functions (getThemeByName, getPaletteByName)
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { deriveTheme } from "../derive"
|
|
11
|
+
import type { Theme, ColorPalette } from "../types"
|
|
12
|
+
|
|
13
|
+
// ── Re-export all palette definitions ──────────────────────────────
|
|
14
|
+
export { catppuccinMocha, catppuccinFrappe, catppuccinMacchiato, catppuccinLatte } from "./catppuccin"
|
|
15
|
+
export { nord } from "./nord"
|
|
16
|
+
export { dracula } from "./dracula"
|
|
17
|
+
export { solarizedDark, solarizedLight } from "./solarized"
|
|
18
|
+
export { tokyoNight, tokyoNightStorm, tokyoNightDay } from "./tokyo-night"
|
|
19
|
+
export { oneDark } from "./one-dark"
|
|
20
|
+
export { gruvboxDark, gruvboxLight } from "./gruvbox"
|
|
21
|
+
export { rosePine, rosePineMoon, rosePineDawn } from "./rose-pine"
|
|
22
|
+
export { kanagawaWave, kanagawaDragon, kanagawaLotus } from "./kanagawa"
|
|
23
|
+
export { everforestDark, everforestLight } from "./everforest"
|
|
24
|
+
export { monokai, monokaiPro } from "./monokai"
|
|
25
|
+
export { snazzy } from "./snazzy"
|
|
26
|
+
export { materialDark, materialLight } from "./material"
|
|
27
|
+
export { palenight } from "./palenight"
|
|
28
|
+
export { ayuDark, ayuMirage, ayuLight } from "./ayu"
|
|
29
|
+
export { nightfox, dawnfox } from "./nightfox"
|
|
30
|
+
export { horizon } from "./horizon"
|
|
31
|
+
export { moonfly } from "./moonfly"
|
|
32
|
+
export { nightfly } from "./nightfly"
|
|
33
|
+
export { oxocarbonDark, oxocarbonLight } from "./oxocarbon"
|
|
34
|
+
export { sonokai } from "./sonokai"
|
|
35
|
+
export { edgeDark, edgeLight } from "./edge"
|
|
36
|
+
export { modusVivendi, modusOperandi } from "./modus"
|
|
37
|
+
|
|
38
|
+
// ── Import for registry ────────────────────────────────────────────
|
|
39
|
+
import { catppuccinMocha, catppuccinFrappe, catppuccinMacchiato, catppuccinLatte } from "./catppuccin"
|
|
40
|
+
import { nord } from "./nord"
|
|
41
|
+
import { dracula } from "./dracula"
|
|
42
|
+
import { solarizedDark, solarizedLight } from "./solarized"
|
|
43
|
+
import { tokyoNight, tokyoNightStorm, tokyoNightDay } from "./tokyo-night"
|
|
44
|
+
import { oneDark } from "./one-dark"
|
|
45
|
+
import { gruvboxDark, gruvboxLight } from "./gruvbox"
|
|
46
|
+
import { rosePine, rosePineMoon, rosePineDawn } from "./rose-pine"
|
|
47
|
+
import { kanagawaWave, kanagawaDragon, kanagawaLotus } from "./kanagawa"
|
|
48
|
+
import { everforestDark, everforestLight } from "./everforest"
|
|
49
|
+
import { monokai, monokaiPro } from "./monokai"
|
|
50
|
+
import { snazzy } from "./snazzy"
|
|
51
|
+
import { materialDark, materialLight } from "./material"
|
|
52
|
+
import { palenight } from "./palenight"
|
|
53
|
+
import { ayuDark, ayuMirage, ayuLight } from "./ayu"
|
|
54
|
+
import { nightfox, dawnfox } from "./nightfox"
|
|
55
|
+
import { horizon } from "./horizon"
|
|
56
|
+
import { moonfly } from "./moonfly"
|
|
57
|
+
import { nightfly } from "./nightfly"
|
|
58
|
+
import { oxocarbonDark, oxocarbonLight } from "./oxocarbon"
|
|
59
|
+
import { sonokai } from "./sonokai"
|
|
60
|
+
import { edgeDark, edgeLight } from "./edge"
|
|
61
|
+
import { modusVivendi, modusOperandi } from "./modus"
|
|
62
|
+
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// ANSI 16 Themes (no palette required — hardcoded for any terminal)
|
|
65
|
+
// ============================================================================
|
|
66
|
+
|
|
67
|
+
/** Dark ANSI 16 theme — works on any terminal. Primary = yellow. */
|
|
68
|
+
export const ansi16DarkTheme: Theme = {
|
|
69
|
+
name: "dark-ansi16",
|
|
70
|
+
bg: "",
|
|
71
|
+
fg: "whiteBright",
|
|
72
|
+
muted: "white",
|
|
73
|
+
mutedbg: "black",
|
|
74
|
+
surface: "whiteBright",
|
|
75
|
+
surfacebg: "black",
|
|
76
|
+
popover: "whiteBright",
|
|
77
|
+
popoverbg: "black",
|
|
78
|
+
inverse: "black",
|
|
79
|
+
inversebg: "whiteBright",
|
|
80
|
+
cursor: "black",
|
|
81
|
+
cursorbg: "yellow",
|
|
82
|
+
selection: "black",
|
|
83
|
+
selectionbg: "yellow",
|
|
84
|
+
primary: "yellow",
|
|
85
|
+
primaryfg: "black",
|
|
86
|
+
secondary: "yellow",
|
|
87
|
+
secondaryfg: "black",
|
|
88
|
+
accent: "yellow",
|
|
89
|
+
accentfg: "black",
|
|
90
|
+
error: "redBright",
|
|
91
|
+
errorfg: "black",
|
|
92
|
+
warning: "yellow",
|
|
93
|
+
warningfg: "black",
|
|
94
|
+
success: "greenBright",
|
|
95
|
+
successfg: "black",
|
|
96
|
+
info: "cyanBright",
|
|
97
|
+
infofg: "black",
|
|
98
|
+
border: "gray",
|
|
99
|
+
inputborder: "gray",
|
|
100
|
+
focusborder: "blueBright",
|
|
101
|
+
link: "blueBright",
|
|
102
|
+
disabledfg: "gray",
|
|
103
|
+
palette: [
|
|
104
|
+
"black",
|
|
105
|
+
"red",
|
|
106
|
+
"green",
|
|
107
|
+
"yellow",
|
|
108
|
+
"blue",
|
|
109
|
+
"magenta",
|
|
110
|
+
"cyan",
|
|
111
|
+
"white",
|
|
112
|
+
"blackBright",
|
|
113
|
+
"redBright",
|
|
114
|
+
"greenBright",
|
|
115
|
+
"yellowBright",
|
|
116
|
+
"blueBright",
|
|
117
|
+
"magentaBright",
|
|
118
|
+
"cyanBright",
|
|
119
|
+
"whiteBright",
|
|
120
|
+
],
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** Light ANSI 16 theme — works on any terminal. Primary = blue. */
|
|
124
|
+
export const ansi16LightTheme: Theme = {
|
|
125
|
+
name: "light-ansi16",
|
|
126
|
+
bg: "",
|
|
127
|
+
fg: "black",
|
|
128
|
+
muted: "blackBright",
|
|
129
|
+
mutedbg: "white",
|
|
130
|
+
surface: "black",
|
|
131
|
+
surfacebg: "white",
|
|
132
|
+
popover: "black",
|
|
133
|
+
popoverbg: "white",
|
|
134
|
+
inverse: "whiteBright",
|
|
135
|
+
inversebg: "black",
|
|
136
|
+
cursor: "black",
|
|
137
|
+
cursorbg: "blue",
|
|
138
|
+
selection: "black",
|
|
139
|
+
selectionbg: "cyan",
|
|
140
|
+
primary: "blue",
|
|
141
|
+
primaryfg: "black",
|
|
142
|
+
secondary: "blue",
|
|
143
|
+
secondaryfg: "black",
|
|
144
|
+
accent: "cyan",
|
|
145
|
+
accentfg: "black",
|
|
146
|
+
error: "red",
|
|
147
|
+
errorfg: "black",
|
|
148
|
+
warning: "yellow",
|
|
149
|
+
warningfg: "black",
|
|
150
|
+
success: "green",
|
|
151
|
+
successfg: "black",
|
|
152
|
+
info: "cyan",
|
|
153
|
+
infofg: "black",
|
|
154
|
+
border: "gray",
|
|
155
|
+
inputborder: "gray",
|
|
156
|
+
focusborder: "blue",
|
|
157
|
+
link: "blueBright",
|
|
158
|
+
disabledfg: "gray",
|
|
159
|
+
palette: [
|
|
160
|
+
"black",
|
|
161
|
+
"red",
|
|
162
|
+
"green",
|
|
163
|
+
"yellow",
|
|
164
|
+
"blue",
|
|
165
|
+
"magenta",
|
|
166
|
+
"cyan",
|
|
167
|
+
"white",
|
|
168
|
+
"blackBright",
|
|
169
|
+
"redBright",
|
|
170
|
+
"greenBright",
|
|
171
|
+
"yellowBright",
|
|
172
|
+
"blueBright",
|
|
173
|
+
"magentaBright",
|
|
174
|
+
"cyanBright",
|
|
175
|
+
"whiteBright",
|
|
176
|
+
],
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ============================================================================
|
|
180
|
+
// Default Truecolor Themes (derived from Nord palette)
|
|
181
|
+
// ============================================================================
|
|
182
|
+
|
|
183
|
+
/** Dark truecolor theme — derived from Nord. */
|
|
184
|
+
export const defaultDarkTheme: Theme = deriveTheme(nord)
|
|
185
|
+
|
|
186
|
+
/** Light truecolor theme — derived from Catppuccin Latte. */
|
|
187
|
+
export const defaultLightTheme: Theme = deriveTheme(catppuccinLatte)
|
|
188
|
+
|
|
189
|
+
// ============================================================================
|
|
190
|
+
// Registry
|
|
191
|
+
// ============================================================================
|
|
192
|
+
|
|
193
|
+
/** All built-in ColorPalette definitions (45 palettes). */
|
|
194
|
+
export const builtinPalettes: Record<string, ColorPalette> = {
|
|
195
|
+
// Catppuccin
|
|
196
|
+
"catppuccin-mocha": catppuccinMocha,
|
|
197
|
+
"catppuccin-frappe": catppuccinFrappe,
|
|
198
|
+
"catppuccin-macchiato": catppuccinMacchiato,
|
|
199
|
+
"catppuccin-latte": catppuccinLatte,
|
|
200
|
+
// Nord
|
|
201
|
+
nord: nord,
|
|
202
|
+
// Dracula
|
|
203
|
+
dracula: dracula,
|
|
204
|
+
// Solarized
|
|
205
|
+
"solarized-dark": solarizedDark,
|
|
206
|
+
"solarized-light": solarizedLight,
|
|
207
|
+
// Tokyo Night
|
|
208
|
+
"tokyo-night": tokyoNight,
|
|
209
|
+
"tokyo-night-storm": tokyoNightStorm,
|
|
210
|
+
"tokyo-night-day": tokyoNightDay,
|
|
211
|
+
// One Dark
|
|
212
|
+
"one-dark": oneDark,
|
|
213
|
+
// Gruvbox
|
|
214
|
+
"gruvbox-dark": gruvboxDark,
|
|
215
|
+
"gruvbox-light": gruvboxLight,
|
|
216
|
+
// Rose Pine
|
|
217
|
+
"rose-pine": rosePine,
|
|
218
|
+
"rose-pine-moon": rosePineMoon,
|
|
219
|
+
"rose-pine-dawn": rosePineDawn,
|
|
220
|
+
// Kanagawa
|
|
221
|
+
"kanagawa-wave": kanagawaWave,
|
|
222
|
+
"kanagawa-dragon": kanagawaDragon,
|
|
223
|
+
"kanagawa-lotus": kanagawaLotus,
|
|
224
|
+
// Everforest
|
|
225
|
+
"everforest-dark": everforestDark,
|
|
226
|
+
"everforest-light": everforestLight,
|
|
227
|
+
// Monokai
|
|
228
|
+
monokai: monokai,
|
|
229
|
+
"monokai-pro": monokaiPro,
|
|
230
|
+
// Snazzy
|
|
231
|
+
snazzy: snazzy,
|
|
232
|
+
// Material
|
|
233
|
+
"material-dark": materialDark,
|
|
234
|
+
"material-light": materialLight,
|
|
235
|
+
// Palenight
|
|
236
|
+
palenight: palenight,
|
|
237
|
+
// Ayu
|
|
238
|
+
"ayu-dark": ayuDark,
|
|
239
|
+
"ayu-mirage": ayuMirage,
|
|
240
|
+
"ayu-light": ayuLight,
|
|
241
|
+
// Nightfox
|
|
242
|
+
nightfox: nightfox,
|
|
243
|
+
dawnfox: dawnfox,
|
|
244
|
+
// Horizon
|
|
245
|
+
horizon: horizon,
|
|
246
|
+
// Moonfly
|
|
247
|
+
moonfly: moonfly,
|
|
248
|
+
// Nightfly
|
|
249
|
+
nightfly: nightfly,
|
|
250
|
+
// Oxocarbon
|
|
251
|
+
"oxocarbon-dark": oxocarbonDark,
|
|
252
|
+
"oxocarbon-light": oxocarbonLight,
|
|
253
|
+
// Sonokai
|
|
254
|
+
sonokai: sonokai,
|
|
255
|
+
// Edge
|
|
256
|
+
"edge-dark": edgeDark,
|
|
257
|
+
"edge-light": edgeLight,
|
|
258
|
+
// Modus
|
|
259
|
+
"modus-vivendi": modusVivendi,
|
|
260
|
+
"modus-operandi": modusOperandi,
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/** All built-in themes, indexed by name (includes backward-compat aliases). */
|
|
264
|
+
export const builtinThemes: Record<string, Theme> = {
|
|
265
|
+
// ANSI 16
|
|
266
|
+
"dark-ansi16": ansi16DarkTheme,
|
|
267
|
+
"light-ansi16": ansi16LightTheme,
|
|
268
|
+
// Truecolor defaults
|
|
269
|
+
"dark-truecolor": defaultDarkTheme,
|
|
270
|
+
"light-truecolor": defaultLightTheme,
|
|
271
|
+
// Old names as aliases
|
|
272
|
+
dark: defaultDarkTheme,
|
|
273
|
+
light: defaultLightTheme,
|
|
274
|
+
"ansi16-dark": ansi16DarkTheme,
|
|
275
|
+
"ansi16-light": ansi16LightTheme,
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/** Resolve a theme by name. Defaults to dark-ansi16. */
|
|
279
|
+
export function getThemeByName(name?: string): Theme {
|
|
280
|
+
if (!name) return ansi16DarkTheme
|
|
281
|
+
// Check pre-built themes first
|
|
282
|
+
const builtin = builtinThemes[name]
|
|
283
|
+
if (builtin) return builtin
|
|
284
|
+
// Check palettes (derive on first access)
|
|
285
|
+
const palette = builtinPalettes[name]
|
|
286
|
+
if (palette) return deriveTheme(palette)
|
|
287
|
+
return ansi16DarkTheme
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/** Resolve a palette by name. Returns undefined if not found. */
|
|
291
|
+
export function getPaletteByName(name: string): ColorPalette | undefined {
|
|
292
|
+
return builtinPalettes[name]
|
|
293
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kanagawa palettes — inspired by Katsushika Hokusai's famous paintings.
|
|
3
|
+
* Source: https://github.com/rebelot/kanagawa.nvim (palette.lua)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ColorPalette } from "../types"
|
|
7
|
+
import { brighten } from "../color"
|
|
8
|
+
|
|
9
|
+
/** Kanagawa Wave — the default dark variant, inspired by "The Great Wave off Kanagawa". */
|
|
10
|
+
export const kanagawaWave: ColorPalette = {
|
|
11
|
+
name: "kanagawa-wave",
|
|
12
|
+
dark: true,
|
|
13
|
+
black: "#16161D", // sumiInk0
|
|
14
|
+
red: "#C34043", // autumnRed
|
|
15
|
+
green: "#98BB6C", // springGreen
|
|
16
|
+
yellow: "#E6C384", // carpYellow
|
|
17
|
+
blue: "#7E9CD8", // crystalBlue
|
|
18
|
+
magenta: "#957FB8", // oniViolet
|
|
19
|
+
cyan: "#6A9589", // waveAqua1
|
|
20
|
+
white: "#727169", // fujiGray
|
|
21
|
+
brightBlack: "#2A2A37", // sumiInk4
|
|
22
|
+
brightRed: "#FFA066", // surimiOrange
|
|
23
|
+
brightGreen: brighten("#98BB6C", 0.15),
|
|
24
|
+
brightYellow: brighten("#E6C384", 0.15),
|
|
25
|
+
brightBlue: brighten("#7E9CD8", 0.15),
|
|
26
|
+
brightMagenta: "#D27E99", // sakuraPink
|
|
27
|
+
brightCyan: brighten("#6A9589", 0.15),
|
|
28
|
+
brightWhite: "#DCD7BA", // fujiWhite
|
|
29
|
+
foreground: "#DCD7BA", // fujiWhite
|
|
30
|
+
background: "#1F1F28", // sumiInk3
|
|
31
|
+
cursorColor: "#DCD7BA", // fujiWhite
|
|
32
|
+
cursorText: "#1F1F28", // sumiInk3
|
|
33
|
+
selectionBackground: "#54546D", // sumiInk6
|
|
34
|
+
selectionForeground: "#DCD7BA", // fujiWhite
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Kanagawa Dragon — a muted, earthy dark variant. */
|
|
38
|
+
export const kanagawaDragon: ColorPalette = {
|
|
39
|
+
name: "kanagawa-dragon",
|
|
40
|
+
dark: true,
|
|
41
|
+
black: "#0d0c0c", // dragonBlack0
|
|
42
|
+
red: "#c4746e", // dragonRed
|
|
43
|
+
green: "#87a987", // dragonGreen
|
|
44
|
+
yellow: "#c4b28a", // dragonYellow
|
|
45
|
+
blue: "#8ba4b0", // dragonBlue2
|
|
46
|
+
magenta: "#8992a7", // dragonViolet
|
|
47
|
+
cyan: "#8ea4a2", // dragonAqua
|
|
48
|
+
white: "#737c73", // dragonAsh
|
|
49
|
+
brightBlack: "#282727", // dragonBlack4
|
|
50
|
+
brightRed: "#b6927b", // dragonOrange
|
|
51
|
+
brightGreen: brighten("#87a987", 0.15),
|
|
52
|
+
brightYellow: brighten("#c4b28a", 0.15),
|
|
53
|
+
brightBlue: brighten("#8ba4b0", 0.15),
|
|
54
|
+
brightMagenta: "#a292a3", // dragonPink
|
|
55
|
+
brightCyan: brighten("#8ea4a2", 0.15),
|
|
56
|
+
brightWhite: "#c5c9c5", // dragonWhite
|
|
57
|
+
foreground: "#c5c9c5", // dragonWhite
|
|
58
|
+
background: "#181616", // dragonBlack3
|
|
59
|
+
cursorColor: "#c5c9c5", // dragonWhite
|
|
60
|
+
cursorText: "#181616", // dragonBlack3
|
|
61
|
+
selectionBackground: "#625e5a", // dragonBlack6
|
|
62
|
+
selectionForeground: "#c5c9c5", // dragonWhite
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Kanagawa Lotus — the light variant, inspired by lotus flowers. */
|
|
66
|
+
export const kanagawaLotus: ColorPalette = {
|
|
67
|
+
name: "kanagawa-lotus",
|
|
68
|
+
dark: false,
|
|
69
|
+
black: "#e5ddb0", // lotusWhite2
|
|
70
|
+
red: "#c84053", // lotusRed
|
|
71
|
+
green: "#6f894e", // lotusGreen
|
|
72
|
+
yellow: "#de9800", // lotusYellow3
|
|
73
|
+
blue: "#4d699b", // lotusBlue4
|
|
74
|
+
magenta: "#624c83", // lotusViolet4
|
|
75
|
+
cyan: "#597b75", // lotusAqua
|
|
76
|
+
white: "#716e61", // lotusGray2
|
|
77
|
+
brightBlack: "#dcd5ac", // lotusWhite1
|
|
78
|
+
brightRed: "#cc6d00", // lotusOrange
|
|
79
|
+
brightGreen: brighten("#6f894e", 0.15),
|
|
80
|
+
brightYellow: brighten("#de9800", 0.15),
|
|
81
|
+
brightBlue: brighten("#4d699b", 0.15),
|
|
82
|
+
brightMagenta: "#b35b79", // lotusPink
|
|
83
|
+
brightCyan: brighten("#597b75", 0.15),
|
|
84
|
+
brightWhite: "#545464", // lotusInk1
|
|
85
|
+
foreground: "#545464", // lotusInk1
|
|
86
|
+
background: "#f2ecbc", // lotusWhite3
|
|
87
|
+
cursorColor: "#545464", // lotusInk1
|
|
88
|
+
cursorText: "#f2ecbc", // lotusWhite3
|
|
89
|
+
selectionBackground: "#8a8980", // lotusGray3
|
|
90
|
+
selectionForeground: "#545464", // lotusInk1
|
|
91
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Material Theme palettes — material design-inspired editor theme.
|
|
3
|
+
* Source: https://github.com/kaicataldo/material.vim (material.vim)
|
|
4
|
+
* Reference: https://material-theme.com/docs/reference/color-palette/
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { ColorPalette } from "../types"
|
|
8
|
+
import { brighten } from "../color"
|
|
9
|
+
|
|
10
|
+
/** Material Darker — the deep dark Material variant. */
|
|
11
|
+
export const materialDark: ColorPalette = {
|
|
12
|
+
name: "material-dark",
|
|
13
|
+
dark: true,
|
|
14
|
+
black: "#171717", // line_highlight (deepest)
|
|
15
|
+
red: "#ff5370",
|
|
16
|
+
green: "#c3e88d",
|
|
17
|
+
yellow: "#ffcb6b",
|
|
18
|
+
blue: "#82aaff",
|
|
19
|
+
magenta: "#c792ea",
|
|
20
|
+
cyan: "#89ddff", // cyan
|
|
21
|
+
white: "#545454", // comments
|
|
22
|
+
brightBlack: "#2c2c2c", // selection
|
|
23
|
+
brightRed: "#f78c6c",
|
|
24
|
+
brightGreen: brighten("#c3e88d", 0.15),
|
|
25
|
+
brightYellow: brighten("#ffcb6b", 0.15),
|
|
26
|
+
brightBlue: brighten("#82aaff", 0.15),
|
|
27
|
+
brightMagenta: "#f07178",
|
|
28
|
+
brightCyan: brighten("#89ddff", 0.15),
|
|
29
|
+
brightWhite: "#eeffff", // foreground
|
|
30
|
+
foreground: "#eeffff", // foreground
|
|
31
|
+
background: "#212121", // background
|
|
32
|
+
cursorColor: "#eeffff", // foreground
|
|
33
|
+
cursorText: "#212121", // background
|
|
34
|
+
selectionBackground: "#424242", // guides/line_numbers
|
|
35
|
+
selectionForeground: "#eeffff", // foreground
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Material Lighter — the light Material variant. */
|
|
39
|
+
export const materialLight: ColorPalette = {
|
|
40
|
+
name: "material-light",
|
|
41
|
+
dark: false,
|
|
42
|
+
black: "#ecf0f1", // line_highlight
|
|
43
|
+
red: "#e53935",
|
|
44
|
+
green: "#91b859",
|
|
45
|
+
yellow: "#ffb62c",
|
|
46
|
+
blue: "#6182b8",
|
|
47
|
+
magenta: "#7c4dff",
|
|
48
|
+
cyan: "#39adb5", // cyan
|
|
49
|
+
white: "#90a4ae", // comments/fg
|
|
50
|
+
brightBlack: "#ebf4f3", // selection
|
|
51
|
+
brightRed: "#f76d47",
|
|
52
|
+
brightGreen: brighten("#91b859", 0.15),
|
|
53
|
+
brightYellow: brighten("#ffb62c", 0.15),
|
|
54
|
+
brightBlue: brighten("#6182b8", 0.15),
|
|
55
|
+
brightMagenta: "#ff5370",
|
|
56
|
+
brightCyan: brighten("#39adb5", 0.15),
|
|
57
|
+
brightWhite: "#546E7A", // foreground (darker than comments for light theme)
|
|
58
|
+
foreground: "#546E7A", // foreground (darker than comments for light theme)
|
|
59
|
+
background: "#fafafa", // background
|
|
60
|
+
cursorColor: "#546E7A", // foreground
|
|
61
|
+
cursorText: "#fafafa", // background
|
|
62
|
+
selectionBackground: "#cfd8dc", // line_numbers
|
|
63
|
+
selectionForeground: "#546E7A", // foreground
|
|
64
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modus palettes — GNU Emacs themes conforming to WCAG AAA contrast.
|
|
3
|
+
* Source: https://github.com/protesilaos/modus-themes
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ColorPalette } from "../types"
|
|
7
|
+
import { brighten } from "../color"
|
|
8
|
+
|
|
9
|
+
/** Modus Vivendi — elegant dark theme with maximum legibility. */
|
|
10
|
+
export const modusVivendi: ColorPalette = {
|
|
11
|
+
name: "modus-vivendi",
|
|
12
|
+
dark: true,
|
|
13
|
+
black: "#000000",
|
|
14
|
+
red: "#FF5F59",
|
|
15
|
+
green: "#44BC44",
|
|
16
|
+
yellow: "#D0BC00",
|
|
17
|
+
blue: "#2FAFFF",
|
|
18
|
+
magenta: "#B6A0FF",
|
|
19
|
+
cyan: "#00D3D0",
|
|
20
|
+
white: "#989898",
|
|
21
|
+
brightBlack: "#1E1E1E",
|
|
22
|
+
brightRed: "#FEC43F",
|
|
23
|
+
brightGreen: brighten("#44BC44", 0.15),
|
|
24
|
+
brightYellow: brighten("#D0BC00", 0.15),
|
|
25
|
+
brightBlue: brighten("#2FAFFF", 0.15),
|
|
26
|
+
brightMagenta: "#FEACD0",
|
|
27
|
+
brightCyan: brighten("#00D3D0", 0.15),
|
|
28
|
+
brightWhite: "#FFFFFF",
|
|
29
|
+
foreground: "#FFFFFF",
|
|
30
|
+
background: "#000000",
|
|
31
|
+
cursorColor: "#FFFFFF",
|
|
32
|
+
cursorText: "#000000",
|
|
33
|
+
selectionBackground: "#535353",
|
|
34
|
+
selectionForeground: "#FFFFFF",
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Modus Operandi — elegant light theme with maximum legibility. */
|
|
38
|
+
export const modusOperandi: ColorPalette = {
|
|
39
|
+
name: "modus-operandi",
|
|
40
|
+
dark: false,
|
|
41
|
+
black: "#E0E0E0",
|
|
42
|
+
red: "#A60000",
|
|
43
|
+
green: "#006800",
|
|
44
|
+
yellow: "#6F5500",
|
|
45
|
+
blue: "#0031A9",
|
|
46
|
+
magenta: "#531AB6",
|
|
47
|
+
cyan: "#005E8B",
|
|
48
|
+
white: "#595959",
|
|
49
|
+
brightBlack: "#F2F2F2",
|
|
50
|
+
brightRed: "#884900",
|
|
51
|
+
brightGreen: brighten("#006800", 0.15),
|
|
52
|
+
brightYellow: brighten("#6F5500", 0.15),
|
|
53
|
+
brightBlue: brighten("#0031A9", 0.15),
|
|
54
|
+
brightMagenta: "#721045",
|
|
55
|
+
brightCyan: brighten("#005E8B", 0.15),
|
|
56
|
+
brightWhite: "#000000",
|
|
57
|
+
foreground: "#000000",
|
|
58
|
+
background: "#FFFFFF",
|
|
59
|
+
cursorColor: "#000000",
|
|
60
|
+
cursorText: "#FFFFFF",
|
|
61
|
+
selectionBackground: "#9F9F9F",
|
|
62
|
+
selectionForeground: "#000000",
|
|
63
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monokai palettes — the iconic syntax highlighting theme.
|
|
3
|
+
* Classic source: Sublime Text default (Wimer Hazenberg, 2006)
|
|
4
|
+
* Pro source: https://monokai.pro/ (default "Pro" filter)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { ColorPalette } from "../types"
|
|
8
|
+
import { brighten } from "../color"
|
|
9
|
+
|
|
10
|
+
/** Monokai Classic — the original Sublime Text Monokai colors. */
|
|
11
|
+
export const monokai: ColorPalette = {
|
|
12
|
+
name: "monokai",
|
|
13
|
+
dark: true,
|
|
14
|
+
black: "#1a1a1a", // darker than bg
|
|
15
|
+
red: "#F92672", // keywords/pink-red
|
|
16
|
+
green: "#A6E22E", // functions
|
|
17
|
+
yellow: "#E6DB74", // strings
|
|
18
|
+
blue: "#66D9EF", // classic Monokai has no distinct blue; cyan doubles
|
|
19
|
+
magenta: "#AE81FF", // numbers/constants
|
|
20
|
+
cyan: "#66D9EF", // types/builtins (cyan)
|
|
21
|
+
white: "#a59f85", // muted text (between comments and fg)
|
|
22
|
+
brightBlack: "#3e3d32", // line highlight
|
|
23
|
+
brightRed: "#FD971F", // parameters/constants
|
|
24
|
+
brightGreen: brighten("#A6E22E", 0.15),
|
|
25
|
+
brightYellow: brighten("#E6DB74", 0.15),
|
|
26
|
+
brightBlue: brighten("#66D9EF", 0.15),
|
|
27
|
+
brightMagenta: "#F92672", // classic Monokai pink == red
|
|
28
|
+
brightCyan: brighten("#66D9EF", 0.15),
|
|
29
|
+
brightWhite: "#F8F8F2", // foreground
|
|
30
|
+
foreground: "#F8F8F2", // foreground
|
|
31
|
+
background: "#272822", // classic Monokai background
|
|
32
|
+
cursorColor: "#F8F8F2", // foreground
|
|
33
|
+
cursorText: "#272822", // classic Monokai background
|
|
34
|
+
selectionBackground: "#75715E", // comments
|
|
35
|
+
selectionForeground: "#F8F8F2", // foreground
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Monokai Pro — the modern, refined Monokai with balanced colors. */
|
|
39
|
+
export const monokaiPro: ColorPalette = {
|
|
40
|
+
name: "monokai-pro",
|
|
41
|
+
dark: true,
|
|
42
|
+
black: "#221f22", // darker than base
|
|
43
|
+
red: "#ff6188", // keywords
|
|
44
|
+
green: "#a9dc76", // functions
|
|
45
|
+
yellow: "#ffd866", // strings/types
|
|
46
|
+
blue: "#78dce8", // Pro shares cyan as blue
|
|
47
|
+
magenta: "#ab9df2", // decorative/numbers
|
|
48
|
+
cyan: "#78dce8", // cyan — support/builtins
|
|
49
|
+
white: "#939293", // secondary text
|
|
50
|
+
brightBlack: "#403e41", // raised surfaces
|
|
51
|
+
brightRed: "#fc9867", // constants/parameters
|
|
52
|
+
brightGreen: brighten("#a9dc76", 0.15),
|
|
53
|
+
brightYellow: brighten("#ffd866", 0.15),
|
|
54
|
+
brightBlue: brighten("#78dce8", 0.15),
|
|
55
|
+
brightMagenta: "#ff6188", // Pro pink == red
|
|
56
|
+
brightCyan: brighten("#78dce8", 0.15),
|
|
57
|
+
brightWhite: "#fcfcfa", // foreground
|
|
58
|
+
foreground: "#fcfcfa", // foreground
|
|
59
|
+
background: "#2d2a2e", // editor background
|
|
60
|
+
cursorColor: "#fcfcfa", // foreground
|
|
61
|
+
cursorText: "#2d2a2e", // editor background
|
|
62
|
+
selectionBackground: "#727072", // borders/muted chrome
|
|
63
|
+
selectionForeground: "#fcfcfa", // foreground
|
|
64
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Moonfly palette — dark charcoal theme with pastel accents.
|
|
3
|
+
* Source: https://github.com/bluz71/vim-moonfly-colors
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ColorPalette } from "../types"
|
|
7
|
+
import { brighten } from "../color"
|
|
8
|
+
|
|
9
|
+
/** Moonfly — dark charcoal theme. */
|
|
10
|
+
export const moonfly: ColorPalette = {
|
|
11
|
+
name: "moonfly",
|
|
12
|
+
dark: true,
|
|
13
|
+
black: "#121212",
|
|
14
|
+
red: "#FF5D5D",
|
|
15
|
+
green: "#8CC85F",
|
|
16
|
+
yellow: "#E3C78A",
|
|
17
|
+
blue: "#80A0FF",
|
|
18
|
+
magenta: "#AE81FF",
|
|
19
|
+
cyan: "#79DAC8",
|
|
20
|
+
white: "#808080",
|
|
21
|
+
brightBlack: "#1C1C1C",
|
|
22
|
+
brightRed: "#DE935F",
|
|
23
|
+
brightGreen: brighten("#8CC85F", 0.15),
|
|
24
|
+
brightYellow: brighten("#E3C78A", 0.15),
|
|
25
|
+
brightBlue: brighten("#80A0FF", 0.15),
|
|
26
|
+
brightMagenta: "#FF5189",
|
|
27
|
+
brightCyan: brighten("#79DAC8", 0.15),
|
|
28
|
+
brightWhite: "#C6C6C6",
|
|
29
|
+
foreground: "#C6C6C6",
|
|
30
|
+
background: "#080808",
|
|
31
|
+
cursorColor: "#C6C6C6",
|
|
32
|
+
cursorText: "#080808",
|
|
33
|
+
selectionBackground: "#323437",
|
|
34
|
+
selectionForeground: "#C6C6C6",
|
|
35
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nightfly palette — dark midnight-blue theme with neon accents.
|
|
3
|
+
* Source: https://github.com/bluz71/vim-nightfly-colors
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ColorPalette } from "../types"
|
|
7
|
+
import { brighten } from "../color"
|
|
8
|
+
|
|
9
|
+
/** Nightfly — midnight-blue dark theme. */
|
|
10
|
+
export const nightfly: ColorPalette = {
|
|
11
|
+
name: "nightfly",
|
|
12
|
+
dark: true,
|
|
13
|
+
black: "#081E2F",
|
|
14
|
+
red: "#FC514E",
|
|
15
|
+
green: "#A1CD5E",
|
|
16
|
+
yellow: "#E3D18A",
|
|
17
|
+
blue: "#82AAFF",
|
|
18
|
+
magenta: "#C792EA",
|
|
19
|
+
cyan: "#7FDBCA",
|
|
20
|
+
white: "#7C8F8F",
|
|
21
|
+
brightBlack: "#0E293F",
|
|
22
|
+
brightRed: "#F78C6C",
|
|
23
|
+
brightGreen: brighten("#A1CD5E", 0.15),
|
|
24
|
+
brightYellow: brighten("#E3D18A", 0.15),
|
|
25
|
+
brightBlue: brighten("#82AAFF", 0.15),
|
|
26
|
+
brightMagenta: "#FF5874",
|
|
27
|
+
brightCyan: brighten("#7FDBCA", 0.15),
|
|
28
|
+
brightWhite: "#C3CCDC",
|
|
29
|
+
foreground: "#C3CCDC",
|
|
30
|
+
background: "#011627",
|
|
31
|
+
cursorColor: "#C3CCDC",
|
|
32
|
+
cursorText: "#011627",
|
|
33
|
+
selectionBackground: "#2C3043",
|
|
34
|
+
selectionForeground: "#C3CCDC",
|
|
35
|
+
}
|