diff --git a/frontend/src/ts/components/mount.tsx b/frontend/src/ts/components/mount.tsx
index 32df23c3b91c..7ece1520efe5 100644
--- a/frontend/src/ts/components/mount.tsx
+++ b/frontend/src/ts/components/mount.tsx
@@ -3,6 +3,7 @@ import { render } from "solid-js/web";
import { qsa } from "../utils/dom";
+import { Theme } from "./core/Theme";
import { Footer } from "./layout/footer/Footer";
import { Overlays } from "./layout/overlays/Overlays";
import { Modals } from "./modals/Modals";
@@ -13,6 +14,7 @@ const components: Record
JSXElement> = {
Modals: () => ,
AboutPage: () => ,
Overlays: () => ,
+ Theme: () => ,
};
function mountToMountpoint(name: string, component: () => JSXElement): void {
diff --git a/frontend/src/ts/components/pages/AboutPage.tsx b/frontend/src/ts/components/pages/AboutPage.tsx
index 29e4d9ad73c3..9edbdd89793a 100644
--- a/frontend/src/ts/components/pages/AboutPage.tsx
+++ b/frontend/src/ts/components/pages/AboutPage.tsx
@@ -1,10 +1,9 @@
import { intervalToDuration } from "date-fns";
-import { createEffect, createResource, For, JSXElement, Show } from "solid-js";
+import { createResource, For, JSXElement, Show } from "solid-js";
import Ape from "../../ape";
import { getAds } from "../../signals/config";
import { getActivePage } from "../../signals/core";
-import { getThemeColors } from "../../signals/theme";
import { showModal } from "../../stores/modals";
import { getContributorsList, getSupportersList } from "../../utils/json-data";
import { getNumberWithMagnitude, numberWithSpaces } from "../../utils/numbers";
@@ -47,10 +46,6 @@ export function AboutPage(): JSXElement {
open ? await fetchSpeedHistogram() : undefined,
);
- createEffect(() => {
- console.log(getThemeColors());
- });
-
return (
diff --git a/frontend/src/ts/constants/themes.ts b/frontend/src/ts/constants/themes.ts
index 9a67df9430de..d91376dc56dc 100644
--- a/frontend/src/ts/constants/themes.ts
+++ b/frontend/src/ts/constants/themes.ts
@@ -1,1153 +1,2347 @@
import { ThemeName } from "@monkeytype/schemas/configs";
import { hexToHSL } from "../utils/colors";
+import { z } from "zod";
-export type Theme = {
- name: ThemeName;
- bgColor: string;
- mainColor: string;
- subColor: string;
- textColor: string;
-};
+const hexColorSchema = z
+ .string()
+ .regex(
+ /^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,
+ "Invalid hex color",
+ );
-export const themes: Record> = {
+export const ThemeSchema = z.object({
+ hasCss: z.boolean().optional(),
+ bg: hexColorSchema,
+ main: hexColorSchema,
+ caret: hexColorSchema,
+ sub: hexColorSchema,
+ subAlt: hexColorSchema,
+ text: hexColorSchema,
+ error: hexColorSchema,
+ errorExtra: hexColorSchema,
+ colorfulError: hexColorSchema,
+ colorfulErrorExtra: hexColorSchema,
+});
+export type Theme = z.infer;
+export type ColorName = keyof Omit;
+export const themes: Record = {
"8008": {
- bgColor: "#333a45",
- mainColor: "#f44c7f",
- subColor: "#939eae",
- textColor: "#e9ecf0",
+ bg: "#333a45",
+ caret: "#f44c7f",
+ main: "#f44c7f",
+ sub: "#939eae",
+ subAlt: "#2e343d",
+ text: "#e9ecf0",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#c5da33",
+ colorfulErrorExtra: "#849224",
},
"9009": {
- bgColor: "#eeebe2",
- mainColor: "#080909",
- subColor: "#99947f",
- textColor: "#080909",
- },
- dark_note: {
- bgColor: "#1f1f1f",
- mainColor: "#f2c17b",
- subColor: "#768f95",
- textColor: "#d2dff4",
- },
- viridescent: {
- bgColor: "#2c3333",
- mainColor: "#95d5b2",
- subColor: "#84a98c",
- textColor: "#e9f5db",
+ bg: "#eeebe2",
+ caret: "#7fa480",
+ main: "#080909",
+ sub: "#99947f",
+ subAlt: "#d3cfc1",
+ text: "#080909",
+ error: "#c87e74",
+ errorExtra: "#a56961",
+ colorfulError: "#c87e74",
+ colorfulErrorExtra: "#a56961",
+ hasCss: true,
},
- dark: {
- bgColor: "#111",
- mainColor: "#eee",
- subColor: "#444",
- textColor: "#eee",
- },
- phantom: {
- bgColor: "#1a1b26",
- mainColor: "#7aa2f7",
- subColor: "#414868",
- textColor: "#c0caf5",
+ "80s_after_dark": {
+ bg: "#1b1d36",
+ caret: "#99d6ea",
+ main: "#fca6d1",
+ sub: "#99d6ea",
+ subAlt: "#17182c",
+ text: "#e1e7ec",
+ error: "#fffb85",
+ errorExtra: "#fffb85",
+ colorfulError: "#fffb85",
+ colorfulErrorExtra: "#fffb85",
},
- muted: {
- bgColor: "#525252",
- mainColor: "#c5b4e3",
- subColor: "#939eae",
- textColor: "#b1e4e3",
+ aether: {
+ bg: "#101820",
+ caret: "#eedaea",
+ main: "#eedaea",
+ sub: "#cf6bdd",
+ subAlt: "#292136",
+ text: "#eedaea",
+ error: "#ff5253",
+ errorExtra: "#e3002b",
+ colorfulError: "#ff5253",
+ colorfulErrorExtra: "#e3002b",
+ hasCss: true,
},
- dark_magic_girl: {
- bgColor: "#091f2c",
- mainColor: "#f5b1cc",
- subColor: "#93e8d3",
- textColor: "#a288d9",
+ alduin: {
+ bg: "#1c1c1c",
+ caret: "#e3e3e3",
+ main: "#dfd7af",
+ sub: "#444444",
+ subAlt: "#242424",
+ text: "#f5f3ed",
+ error: "#af5f5f",
+ errorExtra: "#4d2113",
+ colorfulError: "#af5f5f",
+ colorfulErrorExtra: "#4d2113",
},
- carbon: {
- bgColor: "#313131",
- mainColor: "#f66e0d",
- subColor: "#616161",
- textColor: "#f5e6c8",
+ alpine: {
+ bg: "#6c687f",
+ caret: "#585568",
+ main: "#ffffff",
+ sub: "#9994b8",
+ subAlt: "#77738c",
+ text: "#ffffff",
+ error: "#e32b2b",
+ errorExtra: "#a62626",
+ colorfulError: "#e32b2b",
+ colorfulErrorExtra: "#a62626",
},
- vesper: {
- bgColor: "#101010",
- mainColor: "#ffc799",
- subColor: "#99ffe4",
- textColor: "#ffffff",
+ anti_hero: {
+ bg: "#00002e",
+ caret: "#ffffff",
+ main: "#ffadad",
+ sub: "#ff3d8b",
+ subAlt: "#060548",
+ text: "#f1deef",
+ error: "#8fecff",
+ errorExtra: "#558cab",
+ colorfulError: "#8fecff",
+ colorfulErrorExtra: "#558cab",
},
- our_theme: {
- bgColor: "#ce1226",
- mainColor: "#fcd116",
- subColor: "#6d0f19",
- textColor: "#ffffff",
+ arch: {
+ bg: "#0c0d11",
+ caret: "#7ebab5",
+ main: "#7ebab5",
+ sub: "#454864",
+ subAlt: "#171a25",
+ text: "#f6f5f5",
+ error: "#ff4754",
+ errorExtra: "#b02a33",
+ colorfulError: "#ff4754",
+ colorfulErrorExtra: "#b02a33",
},
- dots: {
- bgColor: "#121520",
- mainColor: "#fff",
- subColor: "#676e8a",
- textColor: "#fff",
+ aurora: {
+ bg: "#011926",
+ caret: "#00e980",
+ main: "#00e980",
+ sub: "#245c69",
+ subAlt: "#000c13",
+ text: "#fff",
+ error: "#b94da1",
+ errorExtra: "#9b3a76",
+ colorfulError: "#b94da1",
+ colorfulErrorExtra: "#9b3a76",
+ hasCss: true,
},
- nautilus: {
- bgColor: "#132237",
- mainColor: "#ebb723",
- subColor: "#0b4c6c",
- textColor: "#1cbaac",
+ beach: {
+ bg: "#ffeead",
+ caret: "#ffcc5c",
+ main: "#96ceb4",
+ sub: "#ffcc5c",
+ subAlt: "#f7dc8f",
+ text: "#5b7869",
+ error: "#ff6f69",
+ errorExtra: "#ff6f69",
+ colorfulError: "#ff6f69",
+ colorfulErrorExtra: "#ff6f69",
+ hasCss: true,
},
- serika: {
- bgColor: "#e1e1e3",
- mainColor: "#e2b714",
- subColor: "#aaaeb3",
- textColor: "#323437",
+ bento: {
+ bg: "#2d394d",
+ caret: "#ff7a90",
+ main: "#ff7a90",
+ sub: "#4a768d",
+ subAlt: "#263041",
+ text: "#fffaf8",
+ error: "#ee2a3a",
+ errorExtra: "#f04040",
+ colorfulError: "#fc2032",
+ colorfulErrorExtra: "#f04040",
},
- serika_dark: {
- bgColor: "#323437",
- mainColor: "#e2b714",
- subColor: "#646669",
- textColor: "#d1d0c5",
+ bingsu: {
+ bg: "#b8a7aa",
+ caret: "#ebe6ea",
+ main: "#83616e",
+ sub: "#48373d",
+ subAlt: "#ab989e",
+ text: "#ebe6ea",
+ error: "#921341",
+ errorExtra: "#640b2c",
+ colorfulError: "#921341",
+ colorfulErrorExtra: "#640b2c",
+ hasCss: true,
},
- bushido: {
- bgColor: "#242933",
- mainColor: "#ec4c56",
- subColor: "#596172",
- textColor: "#f6f0e9",
+ bliss: {
+ bg: "#262727",
+ caret: "#f0d3c9",
+ main: "#f0d3c9",
+ sub: "#665957",
+ subAlt: "#343231",
+ text: "#fff",
+ error: "#bd4141",
+ errorExtra: "#883434",
+ colorfulError: "#bd4141",
+ colorfulErrorExtra: "#883434",
},
- red_samurai: {
- bgColor: "#84202c",
- mainColor: "#c79e6e",
- subColor: "#55131b",
- textColor: "#e2dad0",
+ blue_dolphin: {
+ bg: "#003950",
+ caret: "#00bcd4",
+ main: "#ffcefb",
+ sub: "#00e4ff",
+ subAlt: "#014961",
+ text: "#82eaff",
+ error: "#ffbde6",
+ errorExtra: "#ff8188",
+ colorfulError: "#d1a5fd",
+ colorfulErrorExtra: "#ff8188",
},
- rgb: {
- bgColor: "#111",
- mainColor: "#eee",
- subColor: "#444",
- textColor: "#eee",
+ blueberry_dark: {
+ bg: "#212b42",
+ caret: "#962f7e",
+ main: "#add7ff",
+ sub: "#5c7da5",
+ subAlt: "#1b2334",
+ text: "#91b4d5",
+ error: "#df4576",
+ errorExtra: "#d996ac",
+ colorfulError: "#df4576",
+ colorfulErrorExtra: "#d996ac",
+ hasCss: true,
},
- oblivion: {
- bgColor: "#313231",
- mainColor: "#a5a096",
- subColor: "#5d6263",
- textColor: "#f7f5f1",
+ blueberry_light: {
+ bg: "#dae0f5",
+ caret: "#df4576",
+ main: "#506477",
+ sub: "#92a4be",
+ subAlt: "#c1c7df",
+ text: "#678198",
+ error: "#df4576",
+ errorExtra: "#d996ac",
+ colorfulError: "#df4576",
+ colorfulErrorExtra: "#d996ac",
+ hasCss: true,
},
- magic_girl: {
- bgColor: "#ffffff",
- mainColor: "#f5b1cc",
- subColor: "#93e8d3",
- textColor: "#00ac8c",
+ botanical: {
+ bg: "#7b9c98",
+ caret: "#abc6c4",
+ main: "#eaf1f3",
+ sub: "#495755",
+ subAlt: "#72908d",
+ text: "#eaf1f3",
+ error: "#f6c9b4",
+ errorExtra: "#f59a71",
+ colorfulError: "#f6c9b4",
+ colorfulErrorExtra: "#f59a71",
},
- metropolis: {
- bgColor: "#0f1f2c",
- mainColor: "#56c3b7",
- subColor: "#326984",
- textColor: "#e4edf1",
+ bouquet: {
+ bg: "#173f35",
+ caret: "#eaa09c",
+ main: "#eaa09c",
+ sub: "#408e7b",
+ subAlt: "#1f4e43",
+ text: "#e9e0d2",
+ error: "#d44729",
+ errorExtra: "#8f2f19",
+ colorfulError: "#d44729",
+ colorfulErrorExtra: "#8f2f19",
},
- mountain: {
- bgColor: "#0f0f0f",
- mainColor: "#e7e7e7",
- subColor: "#4c4c4c",
- textColor: "#e7e7e7",
+ breeze: {
+ bg: "#e8d5c4",
+ caret: "#7d67a9",
+ main: "#7d67a9",
+ sub: "#3a98b9",
+ subAlt: "#f6e6da",
+ text: "#1b4c5e",
+ error: "#7d67a9",
+ errorExtra: "#9f3e6d",
+ colorfulError: "#f9f871",
+ colorfulErrorExtra: "#67dfa1",
},
- laser: {
- bgColor: "#221b44",
- mainColor: "#009eaf",
- subColor: "#b82356",
- textColor: "#dbe7e8",
+ bushido: {
+ bg: "#242933",
+ caret: "#ec4c56",
+ main: "#ec4c56",
+ sub: "#596172",
+ subAlt: "#1c222d",
+ text: "#f6f0e9",
+ error: "#ec4c56",
+ errorExtra: "#9b333a",
+ colorfulError: "#ecdc4c",
+ colorfulErrorExtra: "#bdb03d",
},
- retro: {
- bgColor: "#dad3c1",
- mainColor: "#1d1b17",
- subColor: "#918b7d",
- textColor: "#1d1b17",
+ cafe: {
+ bg: "#ceb18d",
+ caret: "#14120f",
+ main: "#14120f",
+ sub: "#d4d2d1",
+ subAlt: "#bba180",
+ text: "#14120f",
+ error: "#c82931",
+ errorExtra: "#ac1823",
+ colorfulError: "#c82931",
+ colorfulErrorExtra: "#ac1823",
},
- dracula: {
- bgColor: "#282a36",
- mainColor: "#bd93f9",
- subColor: "#6272a4",
- textColor: "#f8f8f2",
+ camping: {
+ bg: "#faf1e4",
+ caret: "#618c56",
+ main: "#618c56",
+ sub: "#c2b8aa",
+ subAlt: "#e7dccb",
+ text: "#3c403b",
+ error: "#ad4f4e",
+ errorExtra: "#7e3a39",
+ colorfulError: "#ad4f4e",
+ colorfulErrorExtra: "#7e3a39",
+ hasCss: true,
},
- nord: {
- bgColor: "#242933",
- mainColor: "#88C0D0",
- subColor: "#2E3440",
- textColor: "#88C0D0",
+ carbon: {
+ bg: "#313131",
+ caret: "#f66e0d",
+ main: "#f66e0d",
+ sub: "#616161",
+ subAlt: "#2b2b2b",
+ text: "#f5e6c8",
+ error: "#e72d2d",
+ errorExtra: "#7e2a33",
+ colorfulError: "#e72d2d",
+ colorfulErrorExtra: "#7e2a33",
},
- mr_sleeves: {
- bgColor: "#d1d7da",
- mainColor: "#daa99b",
- subColor: "#9a9fa1",
- textColor: "#1d1d1d",
+ catppuccin: {
+ bg: "#1e1e2e",
+ caret: "#f2cdcd",
+ main: "#cba6f7",
+ sub: "#7f849c",
+ subAlt: "#181825",
+ text: "#cdd6f4",
+ error: "#f38ba8",
+ errorExtra: "#eba0ac",
+ colorfulError: "#f38ba8",
+ colorfulErrorExtra: "#eba0ac",
+ hasCss: true,
},
- olivia: {
- bgColor: "#1c1b1d",
- mainColor: "#deaf9d",
- subColor: "#4e3e3e",
- textColor: "#f2efed",
+ chaos_theory: {
+ bg: "#141221",
+ caret: "#dde5ed",
+ main: "#fd77d7",
+ sub: "#676e8a",
+ subAlt: "#1e1d2f",
+ text: "#dde5ed",
+ error: "#fd77d7",
+ errorExtra: "#b03c47",
+ colorfulError: "#ff5869",
+ colorfulErrorExtra: "#b03c47",
+ hasCss: true,
},
- bliss: {
- bgColor: "#262727",
- mainColor: "#f0d3c9",
- subColor: "#665957",
- textColor: "#fff",
+ cheesecake: {
+ bg: "#fdf0d5",
+ caret: "#892948",
+ main: "#8e2949",
+ sub: "#d91c81",
+ subAlt: "#f3e2bf",
+ text: "#3a3335",
+ error: "#5cf074",
+ errorExtra: "#5cf074",
+ colorfulError: "#5cf074",
+ colorfulErrorExtra: "#5cf074",
+ hasCss: true,
},
- mizu: {
- bgColor: "#afcbdd",
- mainColor: "#fcfbf6",
- subColor: "#85a5bb",
- textColor: "#1a2633",
+ cherry_blossom: {
+ bg: "#323437",
+ caret: "#ffffff",
+ main: "#d65ccc",
+ sub: "#787d82",
+ subAlt: "#2d2f31",
+ text: "#d1d0c5",
+ error: "#ca4754",
+ errorExtra: "#d32738",
+ colorfulError: "#ec182d",
+ colorfulErrorExtra: "#6e0c16",
},
- metaverse: {
- bgColor: "#232323",
- mainColor: "#d82934",
- subColor: "#5e5e5e",
- textColor: "#e8e8e8",
+ comfy: {
+ bg: "#4a5b6e",
+ caret: "#9ec1cc",
+ main: "#f8cdc6",
+ sub: "#9ec1cc",
+ subAlt: "#425366",
+ text: "#f5efee",
+ error: "#c9465e",
+ errorExtra: "#c9465e",
+ colorfulError: "#c9465e",
+ colorfulErrorExtra: "#c9465e",
},
- shadow: {
- bgColor: "#000",
- mainColor: "#eee",
- subColor: "#444",
- textColor: "#eee",
+ copper: {
+ bg: "#442f29",
+ caret: "#c25c42",
+ main: "#b46a55",
+ sub: "#7ebab5",
+ subAlt: "#50362e",
+ text: "#e7e0de",
+ error: "#a32424",
+ errorExtra: "#ec0909",
+ colorfulError: "#a32424",
+ colorfulErrorExtra: "#ec0909",
},
- mint: {
- bgColor: "#05385b",
- mainColor: "#5cdb95",
- subColor: "#20688a",
- textColor: "#edf5e1",
+ creamsicle: {
+ bg: "#ff9869",
+ caret: "#fcfcf8",
+ main: "#fcfcf8",
+ sub: "#ff661f",
+ subAlt: "#fe8954",
+ text: "#fcfcf8",
+ error: "#6a0dad",
+ errorExtra: "#6a0dad",
+ colorfulError: "#6a0dad",
+ colorfulErrorExtra: "#6a0dad",
},
- miami: {
- bgColor: "#f35588",
- mainColor: "#05dfd7",
- subColor: "#94294c",
- textColor: "#f0e9ec",
+ cy_red: {
+ bg: "#6e2626",
+ caret: "#541d1d",
+ main: "#e55050",
+ sub: "#ff6060",
+ subAlt: "#3f1616",
+ text: "#ffaaaa",
+ error: "#919fd9",
+ errorExtra: "#4d5d9e",
+ colorfulError: "#919fd9",
+ colorfulErrorExtra: "#4d5d9e",
},
- miami_nights: {
- bgColor: "#18181a",
- mainColor: "#e4609b",
- subColor: "#47bac0",
- textColor: "#fff",
+ cyberspace: {
+ bg: "#181c18",
+ caret: "#00ce7c",
+ main: "#00ce7c",
+ sub: "#9578d3",
+ subAlt: "#131613",
+ text: "#c2fbe1",
+ error: "#ff5f5f",
+ errorExtra: "#d22a2a",
+ colorfulError: "#ff5f5f",
+ colorfulErrorExtra: "#d22a2a",
},
- modern_dolch: {
- bgColor: "#2d2e30",
- mainColor: "#7eddd3",
- subColor: "#54585c",
- textColor: "#e3e6eb",
+ dark: {
+ bg: "#111",
+ caret: "#eee",
+ main: "#eee",
+ sub: "#444",
+ subAlt: "#191919",
+ text: "#eee",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
},
- botanical: {
- bgColor: "#7b9c98",
- mainColor: "#eaf1f3",
- subColor: "#495755",
- textColor: "#eaf1f3",
+ dark_magic_girl: {
+ bg: "#091f2c",
+ caret: "#a288d9",
+ main: "#f5b1cc",
+ sub: "#93e8d3",
+ subAlt: "#071823",
+ text: "#a288d9",
+ error: "#e45c96",
+ errorExtra: "#e45c96",
+ colorfulError: "#00b398",
+ colorfulErrorExtra: "#e45c96",
},
- bingsu: {
- bgColor: "#b8a7aa",
- mainColor: "#83616e",
- subColor: "#48373d",
- textColor: "#ebe6ea",
+ dark_note: {
+ bg: "#1f1f1f",
+ caret: "#e3dce0",
+ main: "#f2c17b",
+ sub: "#768f95",
+ subAlt: "#141414",
+ text: "#d2dff4",
+ error: "#ff0000",
+ errorExtra: "#588498",
+ colorfulError: "#ff0000",
+ colorfulErrorExtra: "#588498",
+ hasCss: true,
},
- terminal: {
- bgColor: "#191a1b",
- mainColor: "#79a617",
- subColor: "#48494b",
- textColor: "#e7eae0",
+ darling: {
+ bg: "#fec8cd",
+ caret: "#ffffff",
+ main: "#ffffff",
+ sub: "#a30000",
+ subAlt: "#f2babd",
+ text: "#ffffff",
+ error: "#2e7dde",
+ errorExtra: "#2e7dde",
+ colorfulError: "#2e7dde",
+ colorfulErrorExtra: "#2e7dde",
},
- lavender: {
- bgColor: "#ada6c2",
- mainColor: "#e4e3e9",
- subColor: "#e4e3e9",
- textColor: "#2f2a41",
+ deku: {
+ bg: "#058b8c",
+ caret: "#b63530",
+ main: "#b63530",
+ sub: "#255458",
+ subAlt: "#0e7d7e",
+ text: "#f7f2ea",
+ error: "#b63530",
+ errorExtra: "#530e0e",
+ colorfulError: "#ddca1f",
+ colorfulErrorExtra: "#8f8610",
},
- taro: {
- bgColor: "#b3baff",
- mainColor: "#130f1a",
- subColor: "#6f6c91",
- textColor: "#130f1a",
+ desert_oasis: {
+ bg: "#fff2d5",
+ caret: "#3a87fe",
+ main: "#d19d01",
+ sub: "#0061fe",
+ subAlt: "#eddebc",
+ text: "#332800",
+ error: "#76bb40",
+ errorExtra: "#4e7a27",
+ colorfulError: "#76bb40",
+ colorfulErrorExtra: "#4e7a27",
+ hasCss: true,
},
- striker: {
- bgColor: "#124883",
- mainColor: "#d7dcda",
- subColor: "#0f2d4e",
- textColor: "#d6dbd9",
+ dev: {
+ bg: "#1b2028",
+ caret: "#4b5975",
+ main: "#23a9d5",
+ sub: "#4b5975",
+ subAlt: "#151a21",
+ text: "#ccccb5",
+ error: "#b81b2c",
+ errorExtra: "#84131f",
+ colorfulError: "#b81b2c",
+ colorfulErrorExtra: "#84131f",
},
- gruvbox_dark: {
- bgColor: "#282828",
- mainColor: "#d79921",
- subColor: "#665c54",
- textColor: "#ebdbb2",
+ diner: {
+ bg: "#537997",
+ caret: "#ad5145",
+ main: "#c3af5b",
+ sub: "#445c7f",
+ subAlt: "#4d6f8b",
+ text: "#dfdbc8",
+ error: "#ad5145",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ad5145",
+ colorfulErrorExtra: "#7e2a33",
},
- gruvbox_light: {
- bgColor: "#fbf1c7",
- mainColor: "#689d6a",
- subColor: "#a89984",
- textColor: "#3c3836",
+ dino: {
+ bg: "#ffffff",
+ caret: "#40d672",
+ main: "#40d672",
+ sub: "#d5d5d5",
+ subAlt: "#cafad8",
+ text: "#1d221f",
+ error: "#ff5f5f",
+ errorExtra: "#d22a2a",
+ colorfulError: "#ff5f5f",
+ colorfulErrorExtra: "#d22a2a",
},
- monokai: {
- bgColor: "#272822",
- mainColor: "#a6e22e",
- subColor: "#e6db74",
- textColor: "#e2e2dc",
+ discord: {
+ bg: "#313338",
+ caret: "#5a65ea",
+ main: "#5a65ea",
+ sub: "#565861",
+ subAlt: "#2b2d31",
+ text: "#dcdee3",
+ error: "#df4f4b",
+ errorExtra: "#df4f4b",
+ colorfulError: "#df4f4b",
+ colorfulErrorExtra: "#df4f4b",
},
- sonokai: {
- bgColor: "#2c2e34",
- mainColor: "#9ed072",
- subColor: "#e7c664",
- textColor: "#e2e2e3",
+ dmg: {
+ bg: "#dadbdc",
+ caret: "#384693",
+ main: "#ae185e",
+ sub: "#3846b1",
+ subAlt: "#bec1d2",
+ text: "#414141",
+ error: "#ae185e",
+ errorExtra: "#93335c",
+ colorfulError: "#80a053",
+ colorfulErrorExtra: "#306230",
+ hasCss: true,
},
- camping: {
- bgColor: "#faf1e4",
- mainColor: "#618c56",
- subColor: "#c2b8aa",
- textColor: "#3c403b",
+ dollar: {
+ bg: "#e4e4d4",
+ caret: "#424643",
+ main: "#6b886b",
+ sub: "#8a9b69",
+ subAlt: "#cbd0bf",
+ text: "#555a56",
+ error: "#d60000",
+ errorExtra: "#f68484",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
- voc: {
- bgColor: "#190618",
- mainColor: "#e0caac",
- subColor: "#4c1e48",
- textColor: "#eeeae4",
+ dots: {
+ bg: "#121520",
+ caret: "#fff",
+ main: "#fff",
+ sub: "#676e8a",
+ subAlt: "#1b1e2c",
+ text: "#fff",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
+ hasCss: true,
},
- vaporwave: {
- bgColor: "#a4a7ea",
- mainColor: "#e368da",
- subColor: "#7c7faf",
- textColor: "#f1ebf1",
+ dracula: {
+ bg: "#282a36",
+ caret: "#bd93f9",
+ main: "#bd93f9",
+ sub: "#6272a4",
+ subAlt: "#20222c",
+ text: "#f8f8f2",
+ error: "#ff5555",
+ errorExtra: "#f1fa8c",
+ colorfulError: "#ff5555",
+ colorfulErrorExtra: "#f1fa8c",
+ hasCss: true,
},
- pulse: {
- bgColor: "#181818",
- mainColor: "#17b8bd",
- subColor: "#53565a",
- textColor: "#e5f4f4",
+ drowning: {
+ bg: "#191826",
+ caret: "#4f85e8",
+ main: "#4a6fb5",
+ sub: "#50688c",
+ subAlt: "#1e1f2f",
+ text: "#9393a7",
+ error: "#be555f",
+ errorExtra: "#7e2a33",
+ colorfulError: "#be555f",
+ colorfulErrorExtra: "#7e2a33",
},
- matrix: {
- bgColor: "#000000",
- mainColor: "#15ff00",
- subColor: "#006500",
- textColor: "#d1ffcd",
+ dualshot: {
+ bg: "#737373",
+ caret: "#212222",
+ main: "#212222",
+ sub: "#aaaaaa",
+ subAlt: "#646464",
+ text: "#212222",
+ error: "#c82931",
+ errorExtra: "#ac1823",
+ colorfulError: "#c82931",
+ colorfulErrorExtra: "#ac1823",
+ hasCss: true,
},
- olive: {
- bgColor: "#e9e5cc",
- mainColor: "#92946f",
- subColor: "#b7b39e",
- textColor: "#373731",
+ earthsong: {
+ bg: "#292521",
+ caret: "#1298ba",
+ main: "#509452",
+ sub: "#f5ae2d",
+ subAlt: "#1d1b18",
+ text: "#e6c7a8",
+ error: "#7e2a33",
+ errorExtra: "#ff645a",
+ colorfulError: "#7e2a33",
+ colorfulErrorExtra: "#ff645a",
},
- strawberry: {
- bgColor: "#f37f83",
- mainColor: "#fcfcf8",
- subColor: "#e53c58",
- textColor: "#fcfcf8",
+ everblush: {
+ bg: "#141b1e",
+ caret: "#6cbfbf",
+ main: "#8ccf7e",
+ sub: "#838887",
+ subAlt: "#232a2d",
+ text: "#dadada",
+ error: "#e57474",
+ errorExtra: "#ef7e7e",
+ colorfulError: "#e57474",
+ colorfulErrorExtra: "#ef7e7e",
},
- night_runner: {
- bgColor: "#212121",
- mainColor: "#feff04",
- subColor: "#5c4a9c",
- textColor: "#e8e8e8",
+ evil_eye: {
+ bg: "#0084c2",
+ caret: "#f7f2ea",
+ main: "#f7f2ea",
+ sub: "#01589f",
+ subAlt: "#0c79be",
+ text: "#171718",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
- cyberspace: {
- bgColor: "#181c18",
- mainColor: "#00ce7c",
- subColor: "#9578d3",
- textColor: "#c2fbe1",
+ ez_mode: {
+ bg: "#0068c6",
+ caret: "#4ddb47",
+ main: "#fa62d5",
+ sub: "#138bf7",
+ subAlt: "#005bac",
+ text: "#ffffff",
+ error: "#4ddb47",
+ errorExtra: "#42ba3b",
+ colorfulError: "#4ddb47",
+ colorfulErrorExtra: "#42ba3b",
+ hasCss: true,
},
- joker: {
- bgColor: "#1a0e25",
- mainColor: "#99de1e",
- subColor: "#7554a3",
- textColor: "#e9e2f5",
+ fire: {
+ bg: "#0f0000",
+ caret: "#b31313",
+ main: "#b31313",
+ sub: "#683434",
+ subAlt: "#200a0a",
+ text: "#ffffff",
+ error: "#2f3cb6",
+ errorExtra: "#434a8f",
+ colorfulError: "#2f3cb6",
+ colorfulErrorExtra: "#434a8f",
+ hasCss: true,
},
- dualshot: {
- bgColor: "#737373",
- mainColor: "#212222",
- subColor: "#aaaaaa",
- textColor: "#212222",
+ fledgling: {
+ bg: "#3b363f",
+ caret: "#474747",
+ main: "#fc6e83",
+ sub: "#8e5568",
+ subAlt: "#332e38",
+ text: "#e6d5d3",
+ error: "#f52443",
+ errorExtra: "#bd001c",
+ colorfulError: "#ff0a2f",
+ colorfulErrorExtra: "#000000",
},
- solarized_dark: {
- bgColor: "#002b36",
- mainColor: "#859900",
- subColor: "#2aa198",
- textColor: "#268bd2",
+ fleuriste: {
+ bg: "#c6b294",
+ caret: "#8a785b",
+ main: "#405a52",
+ sub: "#64374d",
+ subAlt: "#b4a389",
+ text: "#091914",
+ error: "#990000",
+ errorExtra: "#8a1414",
+ colorfulError: "#a63a3a",
+ colorfulErrorExtra: "#bd4c4c",
},
- solarized_light: {
- bgColor: "#fdf6e3",
- mainColor: "#859900",
- subColor: "#2aa198",
- textColor: "#181819",
+ floret: {
+ bg: "#00272c",
+ caret: "#c3bd40",
+ main: "#ffdd6d",
+ sub: "#779097",
+ subAlt: "#173033",
+ text: "#e5e5e5",
+ error: "#8a4000",
+ errorExtra: "#00708d",
+ colorfulError: "#8a4000",
+ colorfulErrorExtra: "#628b96",
},
- solarized_osaka: {
- bgColor: "#00141a",
- mainColor: "#859900",
- subColor: "#2aa198",
- textColor: "#b58900",
+ froyo: {
+ bg: "#e1dacb",
+ caret: "#7b7d7d",
+ main: "#7b7d7d",
+ sub: "#b29c5e",
+ subAlt: "#d3cdc1",
+ text: "#7b7d7d",
+ error: "#f28578",
+ errorExtra: "#d56558",
+ colorfulError: "#f28578",
+ colorfulErrorExtra: "#d56558",
+ hasCss: true,
},
- terra: {
- bgColor: "#0c100e",
- mainColor: "#89c559",
- subColor: "#436029",
- textColor: "#f0edd1",
+ frozen_llama: {
+ bg: "#9bf2ea",
+ caret: "#ffffff",
+ main: "#6d44a6",
+ sub: "#b690fd",
+ subAlt: "#7fe7dd",
+ text: "#ffffff",
+ error: "#e42629",
+ errorExtra: "#e42629",
+ colorfulError: "#e42629",
+ colorfulErrorExtra: "#e42629",
},
- red_dragon: {
- bgColor: "#1a0b0c",
- mainColor: "#ff3a32",
- subColor: "#e2a528",
- textColor: "#4a4d4e",
+ fruit_chew: {
+ bg: "#d6d3d6",
+ caret: "#b92221",
+ main: "#5c1e5f",
+ sub: "#b49cb5",
+ subAlt: "#cabfca",
+ text: "#282528",
+ error: "#bd2621",
+ errorExtra: "#a62626",
+ colorfulError: "#bd2621",
+ colorfulErrorExtra: "#a62626",
+ hasCss: true,
},
- hammerhead: {
- bgColor: "#030613",
- mainColor: "#4fcdb9",
- subColor: "#213c53",
- textColor: "#e2f1f5",
+ fundamentals: {
+ bg: "#727474",
+ caret: "#196378",
+ main: "#7fa482",
+ sub: "#cac4be",
+ subAlt: "#666868",
+ text: "#131313",
+ error: "#5e477c",
+ errorExtra: "#413157",
+ colorfulError: "#5e477c",
+ colorfulErrorExtra: "#413157",
+ hasCss: true,
},
future_funk: {
- bgColor: "#2e1a47",
- mainColor: "#f7f2ea",
- subColor: "#c18fff",
- textColor: "#f7f2ea",
- },
- milkshake: {
- bgColor: "#ffffff",
- mainColor: "#212b43",
- subColor: "#62cfe6",
- textColor: "#212b43",
+ bg: "#2e1a47",
+ caret: "#f7f2ea",
+ main: "#f7f2ea",
+ sub: "#c18fff",
+ subAlt: "#27173c",
+ text: "#f7f2ea",
+ error: "#f04e98",
+ errorExtra: "#bd1c66",
+ colorfulError: "#f04e98",
+ colorfulErrorExtra: "#bd1c66",
+ hasCss: true,
},
- aether: {
- bgColor: "#101820",
- mainColor: "#eedaea",
- subColor: "#cf6bdd",
- textColor: "#eedaea",
- },
- froyo: {
- bgColor: "#e1dacb",
- mainColor: "#7b7d7d",
- subColor: "#b29c5e",
- textColor: "#7b7d7d",
- },
- retrocast: {
- bgColor: "#07737a",
- mainColor: "#88dbdf",
- subColor: "#f3e03b",
- textColor: "#ffffff",
+ github: {
+ bg: "#212830",
+ caret: "#41ce5c",
+ main: "#41ce5c",
+ sub: "#788386",
+ subAlt: "#141b23",
+ text: "#ccdae6",
+ error: "#c23e3a",
+ errorExtra: "#c23e3a",
+ colorfulError: "#c23e3a",
+ colorfulErrorExtra: "#c23e3a",
},
- luna: {
- bgColor: "#221c35",
- mainColor: "#f67599",
- subColor: "#5a3a7e",
- textColor: "#ffe3eb",
+ godspeed: {
+ bg: "#eae4cf",
+ caret: "#f4d476",
+ main: "#9abbcd",
+ sub: "#ada998",
+ subAlt: "#ded9c9",
+ text: "#646669",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
graen: {
- bgColor: "#303c36",
- mainColor: "#a59682",
- subColor: "#181d1a",
- textColor: "#a59682",
+ bg: "#303c36",
+ caret: "#601420",
+ main: "#a59682",
+ sub: "#181d1a",
+ subAlt: "#36453c",
+ text: "#a59682",
+ error: "#601420",
+ errorExtra: "#5f0715",
+ colorfulError: "#601420",
+ colorfulErrorExtra: "#5f0715",
+ hasCss: true,
},
- bento: {
- bgColor: "#2d394d",
- mainColor: "#ff7a90",
- subColor: "#4a768d",
- textColor: "#fffaf8",
+ grand_prix: {
+ bg: "#36475c",
+ caret: "#c0d036",
+ main: "#c0d036",
+ sub: "#5c6c80",
+ subAlt: "#42536b",
+ text: "#c1c7d7",
+ error: "#fc5727",
+ errorExtra: "#fc5727",
+ colorfulError: "#fc5727",
+ colorfulErrorExtra: "#fc5727",
},
- watermelon: {
- bgColor: "#1f4437",
- mainColor: "#d6686f",
- subColor: "#3e7a65",
- textColor: "#cdc6bc",
+ grape: {
+ bg: "#2c003e",
+ caret: "#ff8f00",
+ main: "#ff8f00",
+ sub: "#6e225e",
+ subAlt: "#1f002d",
+ text: "#fff",
+ error: "#ff4081",
+ errorExtra: "#bf2054",
+ colorfulError: "#ff4081",
+ colorfulErrorExtra: "#bf2054",
+ hasCss: true,
},
- menthol: {
- bgColor: "#00c18c",
- mainColor: "#ffffff",
- subColor: "#186544",
- textColor: "#ffffff",
+ gruvbox_dark: {
+ bg: "#282828",
+ caret: "#fabd2f",
+ main: "#d79921",
+ sub: "#665c54",
+ subAlt: "#212121",
+ text: "#ebdbb2",
+ error: "#fb4934",
+ errorExtra: "#cc241d",
+ colorfulError: "#cc241d",
+ colorfulErrorExtra: "#9d0006",
},
- ishtar: {
- bgColor: "#202020",
- mainColor: "#91170c",
- subColor: "#847869",
- textColor: "#fae1c3",
+ gruvbox_light: {
+ bg: "#fbf1c7",
+ caret: "#689d6a",
+ main: "#689d6a",
+ sub: "#a89984",
+ subAlt: "#daceae",
+ text: "#3c3836",
+ error: "#cc241d",
+ errorExtra: "#9d0006",
+ colorfulError: "#cc241d",
+ colorfulErrorExtra: "#9d0006",
},
- mashu: {
- bgColor: "#2b2b2c",
- mainColor: "#76689a",
- subColor: "#d8a0a6",
- textColor: "#f1e2e4",
+ hammerhead: {
+ bg: "#030613",
+ caret: "#4fcdb9",
+ main: "#4fcdb9",
+ sub: "#213c53",
+ subAlt: "#0a1928",
+ text: "#e2f1f5",
+ error: "#e32b2b",
+ errorExtra: "#a62626",
+ colorfulError: "#e32b2b",
+ colorfulErrorExtra: "#a62626",
},
- deku: {
- bgColor: "#058b8c",
- mainColor: "#b63530",
- subColor: "#255458",
- textColor: "#f7f2ea",
+ hanok: {
+ bg: "#d8d2c3",
+ caret: "#513a2a",
+ main: "#513a2a",
+ sub: "#8b6f5c",
+ subAlt: "#cdc0af",
+ text: "#393b3b",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
+ },
+ hedge: {
+ bg: "#415e31",
+ caret: "#f2efbb",
+ main: "#6a994e",
+ sub: "#ede5b4",
+ subAlt: "#38502a",
+ text: "#f7f1d6",
+ error: "#ca3d3f",
+ errorExtra: "#782832",
+ colorfulError: "#e76f51",
+ colorfulErrorExtra: "#f4a261",
},
honey: {
- bgColor: "#f2aa00",
- mainColor: "#fff546",
- subColor: "#a66b00",
- textColor: "#f3eecb",
+ bg: "#f2aa00",
+ caret: "#795200",
+ main: "#fff546",
+ sub: "#a66b00",
+ subAlt: "#e19e00",
+ text: "#f3eecb",
+ error: "#df3333",
+ errorExtra: "#6d1f1f",
+ colorfulError: "#df3333",
+ colorfulErrorExtra: "#6d1f1f",
},
- shoko: {
- bgColor: "#ced7e0",
- mainColor: "#81c4dd",
- subColor: "#7599b1",
- textColor: "#3b4c58",
+ horizon: {
+ bg: "#1c1e26",
+ caret: "#bbbbbb",
+ main: "#c4a88a",
+ sub: "#db886f",
+ subAlt: "#17181f",
+ text: "#bbbbbb",
+ error: "#d55170",
+ errorExtra: "#ff3d3d",
+ colorfulError: "#d55170",
+ colorfulErrorExtra: "#d55170",
+ hasCss: true,
},
- norse: {
- bgColor: "#242425",
- mainColor: "#2b5f6d",
- subColor: "#505b5e",
- textColor: "#ccc2b1",
+ husqy: {
+ bg: "#000000",
+ caret: "#c58aff",
+ main: "#c58aff",
+ sub: "#972fff",
+ subAlt: "#1e001e",
+ text: "#ebd7ff",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
+ hasCss: true,
},
- matcha_moccha: {
- bgColor: "#523525",
- mainColor: "#7ec160",
- subColor: "#9e6749",
- textColor: "#ecddcc",
+ iceberg_dark: {
+ bg: "#161821",
+ caret: "#d2d4de",
+ main: "#84a0c6",
+ sub: "#595e76",
+ subAlt: "#232531",
+ text: "#c6c8d1",
+ error: "#e27878",
+ errorExtra: "#e2a478",
+ colorfulError: "#e27878",
+ colorfulErrorExtra: "#e2a478",
},
- cafe: {
- bgColor: "#ceb18d",
- mainColor: "#14120f",
- subColor: "#d4d2d1",
- textColor: "#14120f",
+ iceberg_light: {
+ bg: "#e8e9ec",
+ caret: "#262a3f",
+ main: "#2d539e",
+ sub: "#adb1c4",
+ subAlt: "#ccceda",
+ text: "#33374c",
+ error: "#cc517a",
+ errorExtra: "#cc3768",
+ colorfulError: "#cc517a",
+ colorfulErrorExtra: "#cc3768",
},
- alpine: {
- bgColor: "#6c687f",
- mainColor: "#ffffff",
- subColor: "#9994b8",
- textColor: "#ffffff",
+ incognito: {
+ bg: "#0e0e0e",
+ caret: "#ff9900",
+ main: "#ff9900",
+ sub: "#555555",
+ subAlt: "#151515",
+ text: "#c6c6c6",
+ error: "#e44545",
+ errorExtra: "#e44545",
+ colorfulError: "#b13535",
+ colorfulErrorExtra: "#b13535",
+ hasCss: true,
},
- superuser: {
- bgColor: "#262a33",
- mainColor: "#43ffaf",
- subColor: "#526777",
- textColor: "#e5f7ef",
+ ishtar: {
+ bg: "#202020",
+ caret: "#c58940",
+ main: "#91170c",
+ sub: "#847869",
+ subAlt: "#272727",
+ text: "#fae1c3",
+ error: "#bb1e10",
+ errorExtra: "#791717",
+ colorfulError: "#c5da33",
+ colorfulErrorExtra: "#849224",
+ hasCss: true,
},
- ms_cupcakes: {
- bgColor: "#ffffff",
- mainColor: "#5ed5f3",
- subColor: "#d64090",
- textColor: "#0a282f",
+ iv_clover: {
+ bg: "#a0a0a0",
+ caret: "#8d8d8d",
+ main: "#573e40",
+ sub: "#353535",
+ subAlt: "#bebebe",
+ text: "#3b2d3b",
+ error: "#937173",
+ errorExtra: "#987678",
+ colorfulError: "#ad8d60",
+ colorfulErrorExtra: "#b7976a",
},
- dollar: {
- bgColor: "#e4e4d4",
- mainColor: "#6b886b",
- subColor: "#8a9b69",
- textColor: "#555a56",
+ iv_spade: {
+ bg: "#0c0c0c",
+ caret: "#bebebe",
+ main: "#b7976a",
+ sub: "#404040",
+ subAlt: "#121212",
+ text: "#d3c2c3",
+ error: "#9d7b7d",
+ errorExtra: "#a78587",
+ colorfulError: "#b7976a",
+ colorfulErrorExtra: "#c1a174",
},
- lime: {
- bgColor: "#7c878e",
- mainColor: "#93c247",
- subColor: "#4b5257",
- textColor: "#bfcfdc",
+ joker: {
+ bg: "#1a0e25",
+ caret: "#99de1e",
+ main: "#99de1e",
+ sub: "#7554a3",
+ subAlt: "#14081f",
+ text: "#e9e2f5",
+ error: "#e32b2b",
+ errorExtra: "#a62626",
+ colorfulError: "#e32b2b",
+ colorfulErrorExtra: "#a62626",
},
- sweden: {
- bgColor: "#0058a3",
- mainColor: "#ffcc02",
- subColor: "#57abdb",
- textColor: "#ffffff",
+ laser: {
+ bg: "#221b44",
+ caret: "#009eaf",
+ main: "#009eaf",
+ sub: "#b82356",
+ subAlt: "#1e173b",
+ text: "#dbe7e8",
+ error: "#a8d400",
+ errorExtra: "#668000",
+ colorfulError: "#a8d400",
+ colorfulErrorExtra: "#668000",
},
- wavez: {
- bgColor: "#1c292f",
- mainColor: "#6bde3b",
- subColor: "#1f5e6b",
- textColor: "#e9efe6",
+ lavender: {
+ bg: "#ada6c2",
+ caret: "#e4e3e9",
+ main: "#e4e3e9",
+ sub: "#e4e3e9",
+ subAlt: "#a19bb9",
+ text: "#2f2a41",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
+ hasCss: true,
},
- nebula: {
- bgColor: "#212135",
- mainColor: "#be3c88",
- subColor: "#19b3b8",
- textColor: "#838686",
+ leather: {
+ bg: "#a86948",
+ caret: "#ef6d49",
+ main: "#ffe4bc",
+ sub: "#81482b",
+ subAlt: "#9a5f3f",
+ text: "#ffe4bc",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
lil_dragon: {
- bgColor: "#ebe1ef",
- mainColor: "#8a5bd6",
- subColor: "#a28db8",
- textColor: "#212b43",
+ bg: "#ebe1ef",
+ caret: "#212b43",
+ main: "#8a5bd6",
+ sub: "#a28db8",
+ subAlt: "#dac7e2",
+ text: "#212b43",
+ error: "#f794ca",
+ errorExtra: "#f279c2",
+ colorfulError: "#f794ca",
+ colorfulErrorExtra: "#f279c2",
+ hasCss: true,
},
- pastel: {
- bgColor: "#e0b2bd",
- mainColor: "#fbf4b6",
- subColor: "#b4e9ff",
- textColor: "#6d5c6f",
+ lilac_mist: {
+ bg: "#fffbfe",
+ caret: "#e099d6",
+ main: "#b94189",
+ sub: "#e094c2",
+ subAlt: "#ecdcee",
+ text: "#5c2954",
+ error: "#ff6f69",
+ errorExtra: "#ff6f69",
+ colorfulError: "#bc7fc0",
+ colorfulErrorExtra: "#bc41b1",
},
- alduin: {
- bgColor: "#1c1c1c",
- mainColor: "#dfd7af",
- subColor: "#444444",
- textColor: "#f5f3ed",
+ lime: {
+ bg: "#7c878e",
+ caret: "#93c247",
+ main: "#93c247",
+ sub: "#4b5257",
+ subAlt: "#737d82",
+ text: "#bfcfdc",
+ error: "#ea4221",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ea4221",
+ colorfulErrorExtra: "#7e2a33",
},
- paper: {
- bgColor: "#eeeeee",
- mainColor: "#444444",
- subColor: "#b2b2b2",
- textColor: "#444444",
+ luna: {
+ bg: "#221c35",
+ caret: "#f67599",
+ main: "#f67599",
+ sub: "#5a3a7e",
+ subAlt: "#2f2346",
+ text: "#ffe3eb",
+ error: "#efc050",
+ errorExtra: "#c5972c",
+ colorfulError: "#efc050",
+ colorfulErrorExtra: "#c5972c",
},
- fundamentals: {
- bgColor: "#727474",
- mainColor: "#7fa482",
- subColor: "#cac4be",
- textColor: "#131313",
+ macroblank: {
+ bg: "#b2d2c8",
+ caret: "#766f71",
+ main: "#c13117",
+ sub: "#717977",
+ subAlt: "#c6ddd3",
+ text: "#490909",
+ error: "#c13117",
+ errorExtra: "#fff5f5",
+ colorfulError: "#fff5f5",
+ colorfulErrorExtra: "#ffe9c2",
},
- drowning: {
- bgColor: "#191826",
- mainColor: "#4a6fb5",
- subColor: "#50688c",
- textColor: "#9393a7",
+ magic_girl: {
+ bg: "#ffffff",
+ caret: "#e45c96",
+ main: "#f5b1cc",
+ sub: "#93e8d3",
+ subAlt: "#f2f2f2",
+ text: "#00ac8c",
+ error: "#ffe495",
+ errorExtra: "#e45c96",
+ colorfulError: "#ffe485",
+ colorfulErrorExtra: "#e45c96",
},
- iceberg_dark: {
- bgColor: "#161821",
- mainColor: "#84a0c6",
- subColor: "#595e76",
- textColor: "#c6c8d1",
+ mashu: {
+ bg: "#2b2b2c",
+ caret: "#76689a",
+ main: "#76689a",
+ sub: "#d8a0a6",
+ subAlt: "#27242c",
+ text: "#f1e2e4",
+ error: "#d44729",
+ errorExtra: "#8f2f19",
+ colorfulError: "#d44729",
+ colorfulErrorExtra: "#8f2f19",
},
- iceberg_light: {
- bgColor: "#e8e9ec",
- mainColor: "#2d539e",
- subColor: "#adb1c4",
- textColor: "#33374c",
+ matcha_moccha: {
+ bg: "#523525",
+ caret: "#7ec160",
+ main: "#7ec160",
+ sub: "#9e6749",
+ subAlt: "#422b1e",
+ text: "#ecddcc",
+ error: "#fb4934",
+ errorExtra: "#cc241d",
+ colorfulError: "#fb4934",
+ colorfulErrorExtra: "#cc241d",
},
- onedark: {
- bgColor: "#2f343f",
- mainColor: "#61afef",
- subColor: "#eceff4",
- textColor: "#98c379",
+ material: {
+ bg: "#263238",
+ caret: "#80cbc4",
+ main: "#80cbc4",
+ sub: "#4c6772",
+ subAlt: "#2e3c43",
+ text: "#e6edf3",
+ error: "#fb4934",
+ errorExtra: "#cc241d",
+ colorfulError: "#fb4934",
+ colorfulErrorExtra: "#cc241d",
},
- darling: {
- bgColor: "#fec8cd",
- mainColor: "#ffffff",
- subColor: "#a30000",
- textColor: "#ffffff",
+ matrix: {
+ bg: "#000000",
+ caret: "#15ff00",
+ main: "#15ff00",
+ sub: "#006500",
+ subAlt: "#032000",
+ text: "#d1ffcd",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
+ hasCss: true,
},
- repose_dark: {
- bgColor: "#2f3338",
- mainColor: "#d6d2bc",
- subColor: "#8f8e84",
- textColor: "#d6d2bc",
+ menthol: {
+ bg: "#00c18c",
+ caret: "#99fdd8",
+ main: "#ffffff",
+ sub: "#186544",
+ subAlt: "#17ae7d",
+ text: "#ffffff",
+ error: "#e03c3c",
+ errorExtra: "#b12525",
+ colorfulError: "#e03c3c",
+ colorfulErrorExtra: "#b12525",
},
- repose_light: {
- bgColor: "#efead0",
- mainColor: "#5f605e",
- subColor: "#8f8e84",
- textColor: "#333538",
+ metaverse: {
+ bg: "#232323",
+ caret: "#d82934",
+ main: "#d82934",
+ sub: "#5e5e5e",
+ subAlt: "#1d1d1d",
+ text: "#e8e8e8",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#d7da33",
+ colorfulErrorExtra: "#737917",
},
- horizon: {
- bgColor: "#1c1e26",
- mainColor: "#c4a88a",
- subColor: "#db886f",
- textColor: "#bbbbbb",
+ metropolis: {
+ bg: "#0f1f2c",
+ caret: "#56c3b7",
+ main: "#56c3b7",
+ sub: "#326984",
+ subAlt: "#0b1822",
+ text: "#e4edf1",
+ error: "#d44729",
+ errorExtra: "#8f2f19",
+ colorfulError: "#d44729",
+ colorfulErrorExtra: "#8f2f19",
+ hasCss: true,
},
- rudy: {
- bgColor: "#1a2b3e",
- mainColor: "#af8f5c",
- subColor: "#3a506c",
- textColor: "#c9c8bf",
+ mexican: {
+ bg: "#f8ad34",
+ caret: "#eee",
+ main: "#b12189",
+ sub: "#333",
+ subAlt: "#f9b951",
+ text: "#eee",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
},
- stealth: {
- bgColor: "#010203",
- mainColor: "#383e42",
- subColor: "#5e676e",
- textColor: "#383e42",
+ miami: {
+ bg: "#f35588",
+ caret: "#a3f7bf",
+ main: "#05dfd7",
+ sub: "#94294c",
+ subAlt: "#db4979",
+ text: "#f0e9ec",
+ error: "#fff591",
+ errorExtra: "#b9b269",
+ colorfulError: "#fff591",
+ colorfulErrorExtra: "#b9b269",
},
- "80s_after_dark": {
- bgColor: "#1b1d36",
- mainColor: "#fca6d1",
- subColor: "#99d6ea",
- textColor: "#e1e7ec",
+ miami_nights: {
+ bg: "#18181a",
+ caret: "#e4609b",
+ main: "#e4609b",
+ sub: "#47bac0",
+ subAlt: "#0f0f10",
+ text: "#fff",
+ error: "#fff591",
+ errorExtra: "#b6af68",
+ colorfulError: "#fff591",
+ colorfulErrorExtra: "#b6af68",
},
- arch: {
- bgColor: "#0c0d11",
- mainColor: "#7ebab5",
- subColor: "#454864",
- textColor: "#f6f5f5",
+ midnight: {
+ bg: "#0b0e13",
+ caret: "#60759f",
+ main: "#60759f",
+ sub: "#394760",
+ subAlt: "#141a24",
+ text: "#9fadc6",
+ error: "#c27070",
+ errorExtra: "#c28b70",
+ colorfulError: "#c27070",
+ colorfulErrorExtra: "#c28b70",
},
- rose_pine: {
- bgColor: "#1f1d27",
- mainColor: "#9ccfd8",
- subColor: "#c4a7e7",
- textColor: "#e0def4",
+ milkshake: {
+ bg: "#ffffff",
+ caret: "#212b43",
+ main: "#212b43",
+ sub: "#62cfe6",
+ subAlt: "#ddeff3",
+ text: "#212b43",
+ error: "#f19dac",
+ errorExtra: "#e58c9d",
+ colorfulError: "#f19dac",
+ colorfulErrorExtra: "#e58c9d",
+ hasCss: true,
},
- rose_pine_moon: {
- bgColor: "#2a273f",
- mainColor: "#9ccfd8",
- subColor: "#c4a7e7",
- textColor: "#e0def4",
+ mint: {
+ bg: "#05385b",
+ caret: "#5cdb95",
+ main: "#5cdb95",
+ sub: "#20688a",
+ subAlt: "#07324e",
+ text: "#edf5e1",
+ error: "#f35588",
+ errorExtra: "#a3385a",
+ colorfulError: "#f35588",
+ colorfulErrorExtra: "#a3385a",
},
- rose_pine_dawn: {
- bgColor: "#fffaf3",
- mainColor: "#56949f",
- subColor: "#c4a7e7",
- textColor: "#286983",
+ mizu: {
+ bg: "#afcbdd",
+ caret: "#fcfbf6",
+ main: "#fcfbf6",
+ sub: "#85a5bb",
+ subAlt: "#9fc1d4",
+ text: "#1a2633",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#bf616a",
+ colorfulErrorExtra: "#793e44",
},
- copper: {
- bgColor: "#442f29",
- mainColor: "#b46a55",
- subColor: "#7ebab5",
- textColor: "#e7e0de",
+ modern_dolch: {
+ bg: "#2d2e30",
+ caret: "#7eddd3",
+ main: "#7eddd3",
+ sub: "#54585c",
+ subAlt: "#242527",
+ text: "#e3e6eb",
+ error: "#d36a7b",
+ errorExtra: "#994154",
+ colorfulError: "#d36a7b",
+ colorfulErrorExtra: "#994154",
},
- grand_prix: {
- bgColor: "#36475c",
- mainColor: "#c0d036",
- subColor: "#5c6c80",
- textColor: "#c1c7d7",
+ modern_dolch_light: {
+ bg: "#dbdbdb",
+ caret: "#8fd1c3",
+ main: "#8fd1c3",
+ sub: "#a3a2a2",
+ subAlt: "#e8e8e8",
+ text: "#454545",
+ error: "#ea8a9a",
+ errorExtra: "#e0556d",
+ colorfulError: "#ea8a9a",
+ colorfulErrorExtra: "#e0556d",
},
- peaches: {
- bgColor: "#e0d7c1",
- mainColor: "#dd7a5f",
- subColor: "#e7b28e",
- textColor: "#5f4c41",
+ modern_ink: {
+ bg: "#ffffff",
+ caret: "#ff0000",
+ main: "#ff360d",
+ sub: "#b7b7b7",
+ subAlt: "#ececec",
+ text: "#000000",
+ error: "#d70000",
+ errorExtra: "#b00000",
+ colorfulError: "#000000",
+ colorfulErrorExtra: "#000000",
+ hasCss: true,
},
- bouquet: {
- bgColor: "#173f35",
- mainColor: "#eaa09c",
- subColor: "#408e7b",
- textColor: "#e9e0d2",
+ monokai: {
+ bg: "#272822",
+ caret: "#66d9ef",
+ main: "#a6e22e",
+ sub: "#e6db74",
+ subAlt: "#1f201b",
+ text: "#e2e2dc",
+ error: "#f92672",
+ errorExtra: "#fd971f",
+ colorfulError: "#f92672",
+ colorfulErrorExtra: "#fd971f",
},
- midnight: {
- bgColor: "#0b0e13",
- mainColor: "#60759f",
- subColor: "#394760",
- textColor: "#9fadc6",
+ moonlight: {
+ bg: "#191f28",
+ caret: "#8f744b",
+ main: "#c69f68",
+ sub: "#4b5975",
+ subAlt: "#141a22",
+ text: "#ccccb5",
+ error: "#b81b2c",
+ errorExtra: "#84131f",
+ colorfulError: "#b81b2c",
+ colorfulErrorExtra: "#84131f",
+ hasCss: true,
},
- blueberry_light: {
- bgColor: "#dae0f5",
- mainColor: "#506477",
- subColor: "#92a4be",
- textColor: "#678198",
+ mountain: {
+ bg: "#0f0f0f",
+ caret: "#f5f5f5",
+ main: "#e7e7e7",
+ sub: "#4c4c4c",
+ subAlt: "#1a1a1a",
+ text: "#e7e7e7",
+ error: "#ac8c8c",
+ errorExtra: "#c49ea0",
+ colorfulError: "#aca98a",
+ colorfulErrorExtra: "#c4c19e",
},
- blueberry_dark: {
- bgColor: "#212b42",
- mainColor: "#add7ff",
- subColor: "#5c7da5",
- textColor: "#91b4d5",
+ mr_sleeves: {
+ bg: "#d1d7da",
+ caret: "#8fadc9",
+ main: "#daa99b",
+ sub: "#9a9fa1",
+ subAlt: "#bfcbd1",
+ text: "#1d1d1d",
+ error: "#bf6464",
+ errorExtra: "#793e44",
+ colorfulError: "#8fadc9",
+ colorfulErrorExtra: "#667c91",
+ hasCss: true,
},
- fledgling: {
- bgColor: "#3b363f",
- mainColor: "#fc6e83",
- subColor: "#8e5568",
- textColor: "#e6d5d3",
+ ms_cupcakes: {
+ bg: "#ffffff",
+ caret: "#303030",
+ main: "#5ed5f3",
+ sub: "#d64090",
+ subAlt: "#edf8fa",
+ text: "#0a282f",
+ error: "#a4dd32",
+ errorExtra: "#90bd34",
+ colorfulError: "#a4dd32",
+ colorfulErrorExtra: "#87b330",
},
- ez_mode: {
- bgColor: "#0068c6",
- mainColor: "#fa62d5",
- subColor: "#138bf7",
- textColor: "#ffffff",
+ muted: {
+ bg: "#525252",
+ caret: "#b1e4e3",
+ main: "#c5b4e3",
+ sub: "#939eae",
+ subAlt: "#494949",
+ text: "#b1e4e3",
+ error: "#edc1cd",
+ errorExtra: "#edc1cd",
+ colorfulError: "#edc1cd",
+ colorfulErrorExtra: "#edc1cd",
},
- vscode: {
- bgColor: "#1e1e1e",
- mainColor: "#007acc",
- subColor: "#4d4d4d",
- textColor: "#d4d4d4",
+ nautilus: {
+ bg: "#132237",
+ caret: "#ebb723",
+ main: "#ebb723",
+ sub: "#0b4c6c",
+ subAlt: "#0e1a29",
+ text: "#1cbaac",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
},
- material: {
- bgColor: "#263238",
- mainColor: "#80cbc4",
- subColor: "#4c6772",
- textColor: "#e6edf3",
+ nebula: {
+ bg: "#212135",
+ caret: "#78c729",
+ main: "#be3c88",
+ sub: "#19b3b8",
+ subAlt: "#191928",
+ text: "#838686",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
- godspeed: {
- bgColor: "#eae4cf",
- mainColor: "#9abbcd",
- subColor: "#ada998",
- textColor: "#646669",
+ night_runner: {
+ bg: "#212121",
+ caret: "#feff04",
+ main: "#feff04",
+ sub: "#5c4a9c",
+ subAlt: "#1a1a1a",
+ text: "#e8e8e8",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
},
- witch_girl: {
- bgColor: "#f3dbda",
- mainColor: "#56786a",
- subColor: "#ddb4a7",
- textColor: "#56786a",
+ nord: {
+ bg: "#242933",
+ caret: "#eceff4",
+ main: "#88c0d0",
+ sub: "#929aaa",
+ subAlt: "#2e3440",
+ text: "#d8dee9",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#bf616a",
+ colorfulErrorExtra: "#793e44",
},
- terror_below: {
- bgColor: "#0b1e1a",
- mainColor: "#66ac92",
- subColor: "#015c53",
- textColor: "#dceae5",
+ nord_light: {
+ bg: "#eceff4",
+ caret: "#8fbcbb",
+ main: "#8fbcbb",
+ sub: "#6a7791",
+ subAlt: "#d8dee9",
+ text: "#8fbcbb",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#bf616a",
+ colorfulErrorExtra: "#793e44",
},
- sewing_tin: {
- bgColor: "#241963",
- mainColor: "#f2ce83",
- subColor: "#446ad5",
- textColor: "#ffffff",
+ norse: {
+ bg: "#242425",
+ caret: "#2b5f6d",
+ main: "#2b5f6d",
+ sub: "#505b5e",
+ subAlt: "#303333",
+ text: "#ccc2b1",
+ error: "#7e2a2a",
+ errorExtra: "#771d1d",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
- soaring_skies: {
- bgColor: "#fff9f2",
- mainColor: "#55c6f0",
- subColor: "#1e107a",
- textColor: "#1d1e1e",
+ oblivion: {
+ bg: "#313231",
+ caret: "#a5a096",
+ main: "#a5a096",
+ sub: "#5d6263",
+ subAlt: "#3a3b3b",
+ text: "#f7f5f1",
+ error: "#dd452e",
+ errorExtra: "#9e3423",
+ colorfulError: "#dd452e",
+ colorfulErrorExtra: "#9e3423",
+ hasCss: true,
},
- sewing_tin_light: {
- bgColor: "#ffffff",
- mainColor: "#2d2076",
- subColor: "#385eca",
- textColor: "#2d2076",
+ olive: {
+ bg: "#e9e5cc",
+ caret: "#92946f",
+ main: "#92946f",
+ sub: "#b7b39e",
+ subAlt: "#d4cfbc",
+ text: "#373731",
+ error: "#cf2f2f",
+ errorExtra: "#a22929",
+ colorfulError: "#cf2f2f",
+ colorfulErrorExtra: "#a22929",
},
- chaos_theory: {
- bgColor: "#141221",
- mainColor: "#fd77d7",
- subColor: "#676e8a",
- textColor: "#dde5ed",
+ olivia: {
+ bg: "#1c1b1d",
+ caret: "#deaf9d",
+ main: "#deaf9d",
+ sub: "#4e3e3e",
+ subAlt: "#262223",
+ text: "#f2efed",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#e03d4e",
+ colorfulErrorExtra: "#aa2f3b",
},
- hanok: {
- bgColor: "#d8d2c3",
- mainColor: "#513a2a",
- subColor: "#8b6f5c",
- textColor: "#393b3b",
+ onedark: {
+ bg: "#2f343f",
+ caret: "#61afef",
+ main: "#61afef",
+ sub: "#eceff4",
+ subAlt: "#262b34",
+ text: "#98c379",
+ error: "#e06c75",
+ errorExtra: "#d62436",
+ colorfulError: "#d62436",
+ colorfulErrorExtra: "#ff0019",
},
- comfy: {
- bgColor: "#4a5b6e",
- mainColor: "#f8cdc6",
- subColor: "#9ec1cc",
- textColor: "#f5efee",
+ our_theme: {
+ bg: "#ce1226",
+ caret: "#fcd116",
+ main: "#fcd116",
+ sub: "#6d0f19",
+ subAlt: "#9f1020",
+ text: "#ffffff",
+ error: "#fcd116",
+ errorExtra: "#fcd116",
+ colorfulError: "#1672fc",
+ colorfulErrorExtra: "#1672fc",
},
- tiramisu: {
- bgColor: "#cfc6b9",
- mainColor: "#c0976f",
- subColor: "#c0976f",
- textColor: "#7d5448",
+ pale_nimbus: {
+ bg: "#433e4c",
+ caret: "#9efffd",
+ main: "#94ffc2",
+ sub: "#ffaca3",
+ subAlt: "#694f5e",
+ text: "#feffdb",
+ error: "#ff5c5c",
+ errorExtra: "#ff0000",
+ colorfulError: "#ff3874",
+ colorfulErrorExtra: "#c2386f",
},
- diner: {
- bgColor: "#537997",
- mainColor: "#c3af5b",
- subColor: "#445c7f",
- textColor: "#dfdbc8",
+ paper: {
+ bg: "#eeeeee",
+ caret: "#444444",
+ main: "#444444",
+ sub: "#b2b2b2",
+ subAlt: "#dddddd",
+ text: "#444444",
+ error: "#d70000",
+ errorExtra: "#d70000",
+ colorfulError: "#d70000",
+ colorfulErrorExtra: "#d70000",
},
- modern_ink: {
- bgColor: "#ffffff",
- mainColor: "#ff360d",
- subColor: "#b7b7b7",
- textColor: "#000000",
+ passion_fruit: {
+ bg: "#7c2142",
+ caret: "#ffffff",
+ main: "#f4a3b4",
+ sub: "#9994b8",
+ subAlt: "#833c5e",
+ text: "#ffffff",
+ error: "#deb80b",
+ errorExtra: "#deb80b",
+ colorfulError: "#deb80b",
+ colorfulErrorExtra: "#deb80b",
},
- dev: {
- bgColor: "#1b2028",
- mainColor: "#23a9d5",
- subColor: "#4b5975",
- textColor: "#ccccb5",
+ pastel: {
+ bg: "#e0b2bd",
+ caret: "#fbf4b6",
+ main: "#fbf4b6",
+ sub: "#b4e9ff",
+ subAlt: "#d29fab",
+ text: "#6d5c6f",
+ error: "#ff6961",
+ errorExtra: "#c23b22",
+ colorfulError: "#ff6961",
+ colorfulErrorExtra: "#c23b22",
},
- moonlight: {
- bgColor: "#191f28",
- mainColor: "#c69f68",
- subColor: "#4b5975",
- textColor: "#ccccb5",
+ peach_blossom: {
+ bg: "#292929",
+ caret: "#616161",
+ main: "#99b898",
+ sub: "#616161",
+ subAlt: "#2a363b",
+ text: "#fecea8",
+ error: "#ff6961",
+ errorExtra: "#e84a5f",
+ colorfulError: "#ff6961",
+ colorfulErrorExtra: "#e84a5f",
},
- pink_lemonade: {
- bgColor: "#f6d992",
- mainColor: "#f6a192",
- subColor: "#f6b092",
- textColor: "#fcfcf8",
+ peaches: {
+ bg: "#e0d7c1",
+ caret: "#dd7a5f",
+ main: "#dd7a5f",
+ sub: "#e7b28e",
+ subAlt: "#e2caaf",
+ text: "#5f4c41",
+ error: "#ff6961",
+ errorExtra: "#c23b22",
+ colorfulError: "#ff6961",
+ colorfulErrorExtra: "#c23b22",
},
- creamsicle: {
- bgColor: "#ff9869",
- mainColor: "#fcfcf8",
- subColor: "#ff661f",
- textColor: "#fcfcf8",
+ phantom: {
+ bg: "#001",
+ caret: "#bb9af7",
+ main: "#7aa2f7",
+ sub: "#414868",
+ subAlt: "#24283b",
+ text: "#c0caf5",
+ error: "#f7768e",
+ errorExtra: "#db4b4b",
+ colorfulError: "#ff7a93",
+ colorfulErrorExtra: "#ff9e64",
+ hasCss: true,
},
- beach: {
- bgColor: "#ffeead",
- mainColor: "#96ceb4",
- subColor: "#ffcc5c",
- textColor: "#5b7869",
+ pink_lemonade: {
+ bg: "#f6d992",
+ caret: "#fcfcf8",
+ main: "#f6a192",
+ sub: "#f6b092",
+ subAlt: "#f6cc93",
+ text: "#fcfcf8",
+ error: "#ff6f69",
+ errorExtra: "#ff6f69",
+ colorfulError: "#ff6f69",
+ colorfulErrorExtra: "#ff6f69",
},
- desert_oasis: {
- bgColor: "#fff2d5",
- mainColor: "#d19d01",
- subColor: "#0061fe",
- textColor: "#332800",
+ pulse: {
+ bg: "#181818",
+ caret: "#17b8bd",
+ main: "#17b8bd",
+ sub: "#53565a",
+ subAlt: "#121212",
+ text: "#e5f4f4",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
},
- frozen_llama: {
- bgColor: "#9bf2ea",
- mainColor: "#6d44a6",
- subColor: "#b690fd",
- textColor: "#ffffff",
+ purpleish: {
+ bg: "#1e1e32",
+ caret: "#7a52cc",
+ main: "#7a52cc",
+ sub: "#5c5c99",
+ subAlt: "#181829",
+ text: "#a3a3cc",
+ error: "#ff6666",
+ errorExtra: "#ff6666",
+ colorfulError: "#ff6666",
+ colorfulErrorExtra: "#ff6666",
},
- ryujinscales: {
- bgColor: "#081426",
- mainColor: "#f17754",
- subColor: "#ffbc90",
- textColor: "#ffe4bc",
+ rainbow_trail: {
+ bg: "#f5f5f5",
+ caret: "#0d0d0d",
+ main: "#363636",
+ sub: "#4f4f4f",
+ subAlt: "#e0e0e0",
+ text: "#1f1f1f",
+ error: "#ff0008",
+ errorExtra: "#ff0008",
+ colorfulError: "#ff0008",
+ colorfulErrorExtra: "#ff0008",
+ hasCss: true,
},
- trackday: {
- bgColor: "#464d66",
- mainColor: "#e0513e",
- subColor: "#5c7eb9",
- textColor: "#cfcfcf",
+ red_dragon: {
+ bg: "#1a0b0c",
+ caret: "#ff3a32",
+ main: "#ff3a32",
+ sub: "#e2a528",
+ subAlt: "#0e0506",
+ text: "#4a4d4e",
+ error: "#771b1f",
+ errorExtra: "#591317",
+ colorfulError: "#771b1f",
+ colorfulErrorExtra: "#591317",
},
- fruit_chew: {
- bgColor: "#d6d3d6",
- mainColor: "#5c1e5f",
- subColor: "#b49cb5",
- textColor: "#282528",
+ red_samurai: {
+ bg: "#84202c",
+ caret: "#c79e6e",
+ main: "#c79e6e",
+ sub: "#55131b",
+ subAlt: "#751d26",
+ text: "#e2dad0",
+ error: "#33bbda",
+ errorExtra: "#176b79",
+ colorfulError: "#33bbda",
+ colorfulErrorExtra: "#176779",
},
- evil_eye: {
- bgColor: "#0084c2",
- mainColor: "#f7f2ea",
- subColor: "#01589f",
- textColor: "#171718",
+ repose_dark: {
+ bg: "#2f3338",
+ caret: "#d6d2bc",
+ main: "#d6d2bc",
+ sub: "#8f8e84",
+ subAlt: "#3a3c3d",
+ text: "#d6d2bc",
+ error: "#ff4a59",
+ errorExtra: "#c43c53",
+ colorfulError: "#ff4a59",
+ colorfulErrorExtra: "#c43c53",
},
- trance: {
- bgColor: "#00021b",
- mainColor: "#e51376",
- subColor: "#3c4c79",
- textColor: "#fff",
+ repose_light: {
+ bg: "#efead0",
+ caret: "#5f605e",
+ main: "#5f605e",
+ sub: "#8f8e84",
+ subAlt: "#dbd6c4",
+ text: "#333538",
+ error: "#c43c53",
+ errorExtra: "#a52632",
+ colorfulError: "#c43c53",
+ colorfulErrorExtra: "#a52632",
},
- fire: {
- bgColor: "#0f0000",
- mainColor: "#b31313",
- subColor: "#683434",
- textColor: "#ffffff",
+ retro: {
+ bg: "#dad3c1",
+ caret: "#1d1b17",
+ main: "#1d1b17",
+ sub: "#918b7d",
+ subAlt: "#c8c3b3",
+ text: "#1d1b17",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#bf616a",
+ colorfulErrorExtra: "#793e44",
},
- aurora: {
- bgColor: "#011926",
- mainColor: "#00e980",
- subColor: "#245c69",
- textColor: "#fff",
+ retrocast: {
+ bg: "#07737a",
+ caret: "#88dbdf",
+ main: "#88dbdf",
+ sub: "#f3e03b",
+ subAlt: "#26858b",
+ text: "#ffffff",
+ error: "#ff585d",
+ errorExtra: "#c04455",
+ colorfulError: "#ff585d",
+ colorfulErrorExtra: "#c04455",
+ hasCss: true,
},
- leather: {
- bgColor: "#a86948",
- mainColor: "#ffe4bc",
- subColor: "#81482b",
- textColor: "#ffe4bc",
+ rgb: {
+ bg: "#111",
+ caret: "#eee",
+ main: "#eee",
+ sub: "#444",
+ subAlt: "#1a1a1a",
+ text: "#eee",
+ error: "#eee",
+ errorExtra: "#b3b3b3",
+ colorfulError: "#eee",
+ colorfulErrorExtra: "#b3b3b3",
+ hasCss: true,
},
- fleuriste: {
- bgColor: "#c6b294",
- mainColor: "#405a52",
- subColor: "#64374d",
- textColor: "#091914",
+ rose_pine: {
+ bg: "#1f1d27",
+ caret: "#f6c177",
+ main: "#9ccfd8",
+ sub: "#c4a7e7",
+ subAlt: "#282533",
+ text: "#e0def4",
+ error: "#eb6f92",
+ errorExtra: "#ebbcba",
+ colorfulError: "#eb6f92",
+ colorfulErrorExtra: "#ebbcba",
},
- dmg: {
- bgColor: "#dadbdc",
- mainColor: "#ae185e",
- subColor: "#3846b1",
- textColor: "#414141",
+ rose_pine_dawn: {
+ bg: "#fffaf3",
+ caret: "#ea9d34",
+ main: "#56949f",
+ sub: "#c4a7e7",
+ subAlt: "#f0e9df",
+ text: "#286983",
+ error: "#b4637a",
+ errorExtra: "#d7827e",
+ colorfulError: "#b4637a",
+ colorfulErrorExtra: "#d7827e",
},
- catppuccin: {
- bgColor: "#1e1e2e",
- mainColor: "#cba6f7",
- subColor: "#7f849c",
- textColor: "#cdd6f4",
+ rose_pine_moon: {
+ bg: "#2a273f",
+ caret: "#f6c177",
+ main: "#9ccfd8",
+ sub: "#c4a7e7",
+ subAlt: "#211f32",
+ text: "#e0def4",
+ error: "#eb6f92",
+ errorExtra: "#ebbcba",
+ colorfulError: "#eb6f92",
+ colorfulErrorExtra: "#ebbcba",
},
- snes: {
- bgColor: "#bfbec2",
- mainColor: "#553d94",
- subColor: "#9f8ad4",
- textColor: "#2e2e2e",
+ rudy: {
+ bg: "#1a2b3e",
+ caret: "#af8f5c",
+ main: "#af8f5c",
+ sub: "#3a506c",
+ subAlt: "#152231",
+ text: "#c9c8bf",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#bf616a",
+ colorfulErrorExtra: "#793e44",
},
- passion_fruit: {
- bgColor: "#7c2142",
- mainColor: "#f4a3b4",
- subColor: "#9994b8",
- textColor: "#ffffff",
+ ryujinscales: {
+ bg: "#081426",
+ caret: "#ef6d49",
+ main: "#f17754",
+ sub: "#ffbc90",
+ subAlt: "#040e1d",
+ text: "#ffe4bc",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
- blue_dolphin: {
- bgColor: "#003950",
- mainColor: "#ffcefb",
- subColor: "#00e4ff",
- textColor: "#82eaff",
+ serika: {
+ bg: "#e1e1e3",
+ caret: "#e2b714",
+ main: "#e2b714",
+ sub: "#aaaeb3",
+ subAlt: "#d1d3d8",
+ text: "#323437",
+ error: "#da3333",
+ errorExtra: "#791717",
+ colorfulError: "#da3333",
+ colorfulErrorExtra: "#791717",
},
- mexican: {
- bgColor: "#f8ad34",
- mainColor: "#b12189",
- subColor: "#333",
- textColor: "#eee",
+ serika_dark: {
+ bg: "#323437",
+ caret: "#e2b714",
+ main: "#e2b714",
+ sub: "#646669",
+ subAlt: "#2c2e31",
+ text: "#d1d0c5",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
},
- husqy: {
- bgColor: "#000000",
- mainColor: "#c58aff",
- subColor: "#972fff",
- textColor: "#ebd7ff",
+ sewing_tin: {
+ bg: "#241963",
+ caret: "#fbdb8c",
+ main: "#f2ce83",
+ sub: "#446ad5",
+ subAlt: "#2a277a",
+ text: "#ffffff",
+ error: "#c6915e",
+ errorExtra: "#c6915e",
+ colorfulError: "#c6915e",
+ colorfulErrorExtra: "#c6915e",
+ hasCss: true,
},
- peach_blossom: {
- bgColor: "#292929",
- mainColor: "#99b898",
- subColor: "#616161",
- textColor: "#fecea8",
+ sewing_tin_light: {
+ bg: "#ffffff",
+ caret: "#fbdb8c",
+ main: "#2d2076",
+ sub: "#385eca",
+ subAlt: "#c8cedf",
+ text: "#2d2076",
+ error: "#f2ce83",
+ errorExtra: "#f2ce83",
+ colorfulError: "#f2ce83",
+ colorfulErrorExtra: "#f2ce83",
+ hasCss: true,
},
- dino: {
- bgColor: "#ffffff",
- mainColor: "#40d672",
- subColor: "#d5d5d5",
- textColor: "#1d221f",
+ shadow: {
+ bg: "#000",
+ caret: "#eee",
+ main: "#eee",
+ sub: "#444",
+ subAlt: "#171717",
+ text: "#eee",
+ error: "#fff",
+ errorExtra: "#d8d8d8",
+ colorfulError: "#fff",
+ colorfulErrorExtra: "#d8d8d8",
+ hasCss: true,
},
- tron_orange: {
- bgColor: "#0d1c1c",
- mainColor: "#f0e800",
- subColor: "#ff6600",
- textColor: "#ffffff",
+ shoko: {
+ bg: "#ced7e0",
+ caret: "#81c4dd",
+ main: "#81c4dd",
+ sub: "#7599b1",
+ subAlt: "#b7cada",
+ text: "#3b4c58",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#bf616a",
+ colorfulErrorExtra: "#793e44",
},
- hedge: {
- bgColor: "#415e31",
- mainColor: "#6a994e",
- subColor: "#ede5b4",
- textColor: "#f7f1d6",
+ slambook: {
+ bg: "#fffdde",
+ caret: "#367e18",
+ main: "#03001c",
+ sub: "#1c82adc4",
+ subAlt: "#c6dce4",
+ text: "#13005a",
+ error: "#f900bf",
+ errorExtra: "#ce1212",
+ colorfulError: "#ce1212",
+ colorfulErrorExtra: "#3ec70b",
},
- modern_dolch_light: {
- bgColor: "#dbdbdb",
- mainColor: "#8fd1c3",
- subColor: "#acacac",
- textColor: "#454545",
+ snes: {
+ bg: "#bfbec2",
+ caret: "#523793",
+ main: "#553d94",
+ sub: "#9f8ad4",
+ subAlt: "#b5b0c2",
+ text: "#2e2e2e",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
+ hasCss: true,
},
- iv_spade: {
- bgColor: "#0c0c0c",
- mainColor: "#b7976a",
- subColor: "#404040",
- textColor: "#d3c2c3",
+ soaring_skies: {
+ bg: "#fff9f2",
+ caret: "#1e107a",
+ main: "#55c6f0",
+ sub: "#1e107a",
+ subAlt: "#e5ddd4",
+ text: "#1d1e1e",
+ error: "#fb5745",
+ errorExtra: "#b03c30",
+ colorfulError: "#fb5745",
+ colorfulErrorExtra: "#b03c30",
},
- iv_clover: {
- bgColor: "#a0a0a0",
- mainColor: "#573e40",
- subColor: "#353535",
- textColor: "#3b2d3b",
+ solarized_dark: {
+ bg: "#002b36",
+ caret: "#dc322f",
+ main: "#859900",
+ sub: "#2aa198",
+ subAlt: "#00222b",
+ text: "#268bd2",
+ error: "#d33682",
+ errorExtra: "#9b225c",
+ colorfulError: "#d33682",
+ colorfulErrorExtra: "#9b225c",
},
- cheesecake: {
- bgColor: "#fdf0d5",
- mainColor: "#8e2949",
- subColor: "#d91c81",
- textColor: "#3a3335",
+ solarized_light: {
+ bg: "#fdf6e3",
+ caret: "#dc322f",
+ main: "#859900",
+ sub: "#2aa198",
+ subAlt: "#e2d8be",
+ text: "#181819",
+ error: "#d33682",
+ errorExtra: "#9b225c",
+ colorfulError: "#d33682",
+ colorfulErrorExtra: "#9b225c",
},
- earthsong: {
- bgColor: "#292521",
- mainColor: "#509452",
- subColor: "#f5ae2d",
- textColor: "#e6c7a8",
+ solarized_osaka: {
+ bg: "#00141a",
+ caret: "#b58900",
+ main: "#859900",
+ sub: "#2aa198",
+ subAlt: "#00222b",
+ text: "#eee8d5",
+ error: "#dc322f",
+ errorExtra: "#9b225c",
+ colorfulError: "#d33682",
+ colorfulErrorExtra: "#9b225c",
+ hasCss: true,
},
- purpleish: {
- bgColor: "#1e1e32",
- mainColor: "#7a52cc",
- subColor: "#3d3d66",
- textColor: "#7a52cc",
+ sonokai: {
+ bg: "#2c2e34",
+ caret: "#f38c71",
+ main: "#9ed072",
+ sub: "#e7c664",
+ subAlt: "#232429",
+ text: "#e2e2e3",
+ error: "#fc5d7c",
+ errorExtra: "#ecac6a",
+ colorfulError: "#fc5d7c",
+ colorfulErrorExtra: "#ecac6a",
},
- nord_light: {
- bgColor: "#eceff4",
- mainColor: "#8fbcbb",
- subColor: "#6a7791",
- textColor: "#8fbcbb",
+ spiderman: {
+ bg: "#0d1219",
+ caret: "#e23636",
+ main: "#e23636",
+ sub: "#0476f2",
+ subAlt: "#0b1c2e",
+ text: "#f0f0f0",
+ error: "#0476f2",
+ errorExtra: "#0353a8",
+ colorfulError: "#0476f2",
+ colorfulErrorExtra: "#0353a8",
},
- slambook: {
- bgColor: "#FFFDDE",
- mainColor: "#13005A",
- subColor: "#1c82adc4",
- textColor: "#125d98",
+ stealth: {
+ bg: "#010203",
+ caret: "#e25303",
+ main: "#383e42",
+ sub: "#5e676e",
+ subAlt: "#121212",
+ text: "#383e42",
+ error: "#e25303",
+ errorExtra: "#73280c",
+ colorfulError: "#e25303",
+ colorfulErrorExtra: "#73280c",
+ hasCss: true,
},
- breeze: {
- bgColor: "#e8d5c4",
- mainColor: "#7d67a9",
- subColor: "#3a98b9",
- textColor: "#1b4c5e",
+ strawberry: {
+ bg: "#f37f83",
+ caret: "#fcfcf8",
+ main: "#fcfcf8",
+ sub: "#e53c58",
+ subAlt: "#ef6e77",
+ text: "#fcfcf8",
+ error: "#fcd23f",
+ errorExtra: "#d7ae1e",
+ colorfulError: "#fcd23f",
+ colorfulErrorExtra: "#d7ae1e",
},
- cherry_blossom: {
- bgColor: "#323437",
- mainColor: "#d65ccc",
- subColor: "#787d82",
- textColor: "#d1d0c5",
+ striker: {
+ bg: "#124883",
+ caret: "#d7dcda",
+ main: "#d7dcda",
+ sub: "#0f2d4e",
+ subAlt: "#104176",
+ text: "#d6dbd9",
+ error: "#fb4934",
+ errorExtra: "#cc241d",
+ colorfulError: "#fb4934",
+ colorfulErrorExtra: "#cc241d",
},
- everblush: {
- bgColor: "#141b1e",
- mainColor: "#8ccf7e",
- subColor: "#838887",
- textColor: "#dadada",
+ suisei: {
+ bg: "#3b4a62",
+ caret: "#bef0ff",
+ main: "#bef0ff",
+ sub: "#fe9841",
+ subAlt: "#313e55",
+ text: "#dbdeeb",
+ error: "#ed2939",
+ errorExtra: "#ce122c",
+ colorfulError: "#ed2939",
+ colorfulErrorExtra: "#ce122c",
+ hasCss: true,
},
- grape: {
- bgColor: "#2c003e",
- mainColor: "#ff8f00",
- subColor: "#651e56",
- textColor: "#fff",
+ sunset: {
+ bg: "#211e24",
+ caret: "#ffca99",
+ main: "#f79777",
+ sub: "#5b578e",
+ subAlt: "#161319",
+ text: "#f4e0c9",
+ error: "#66a1ff",
+ errorExtra: "#376ca4",
+ colorfulError: "#66a1ff",
+ colorfulErrorExtra: "#376ca4",
+ hasCss: true,
},
- rainbow_trail: {
- bgColor: "#f5f5f5",
- mainColor: "#363636",
- subColor: "#4f4f4f",
- textColor: "#1f1f1f",
+ superuser: {
+ bg: "#262a33",
+ caret: "#43ffaf",
+ main: "#43ffaf",
+ sub: "#526777",
+ subAlt: "#1f232c",
+ text: "#e5f7ef",
+ error: "#ff5f5f",
+ errorExtra: "#d22a2a",
+ colorfulError: "#ff5f5f",
+ colorfulErrorExtra: "#d22a2a",
+ },
+ sweden: {
+ bg: "#0058a3",
+ caret: "#b5b5b5",
+ main: "#ffcc02",
+ sub: "#57abdb",
+ subAlt: "#024f8e",
+ text: "#ffffff",
+ error: "#e74040",
+ errorExtra: "#a22f2f",
+ colorfulError: "#f56674",
+ colorfulErrorExtra: "#e33546",
},
tangerine: {
- bgColor: "#ffede0",
- mainColor: "#fe5503",
- subColor: "#ff9562",
- textColor: "#3d1705",
+ bg: "#ffede0",
+ caret: "#5d8500",
+ main: "#fe5503",
+ sub: "#ff9562",
+ subAlt: "#fdd3bf",
+ text: "#3d1705",
+ error: "#7fb500",
+ errorExtra: "#5f8700",
+ colorfulError: "#7fb500",
+ colorfulErrorExtra: "#5f8700",
},
- macroblank: {
- bgColor: "#b2d2c8",
- mainColor: "#c13117",
- subColor: "#717977",
- textColor: "#490909",
+ taro: {
+ bg: "#b3baff",
+ caret: "#00e9e5",
+ main: "#130f1a",
+ sub: "#6f6c91",
+ subAlt: "#a3a7df",
+ text: "#130f1a",
+ error: "#ffe23e",
+ errorExtra: "#fff1c3",
+ colorfulError: "#ffe23e",
+ colorfulErrorExtra: "#fff1c3",
+ hasCss: true,
},
- anti_hero: {
- bgColor: "#00002e",
- mainColor: "#ffadad",
- subColor: "#ff3d8b",
- textColor: "#f1deef",
+ terminal: {
+ bg: "#191a1b",
+ caret: "#79a617",
+ main: "#79a617",
+ sub: "#48494b",
+ subAlt: "#141516",
+ text: "#e7eae0",
+ error: "#a61717",
+ errorExtra: "#731010",
+ colorfulError: "#a61717",
+ colorfulErrorExtra: "#731010",
},
- incognito: {
- bgColor: "#0e0e0e",
- mainColor: "#ff9900",
- subColor: "#2f2f2f",
- textColor: "#c6c6c6",
+ terra: {
+ bg: "#0c100e",
+ caret: "#89c559",
+ main: "#89c559",
+ sub: "#436029",
+ subAlt: "#0f1d18",
+ text: "#f0edd1",
+ error: "#d3ca78",
+ errorExtra: "#89844d",
+ colorfulError: "#d3ca78",
+ colorfulErrorExtra: "#89844d",
},
- discord: {
- bgColor: "#313338",
- mainColor: "#5a65ea",
- subColor: "#565861",
- textColor: "#dcdee3",
+ terrazzo: {
+ bg: "#f1e5da",
+ caret: "#e0794e",
+ main: "#e0794e",
+ sub: "#688e8f",
+ subAlt: "#e3d3c6",
+ text: "#023e3b",
+ error: "#a01034",
+ errorExtra: "#a01034",
+ colorfulError: "#a01034",
+ colorfulErrorExtra: "#a01034",
+ hasCss: true,
},
- cy_red: {
- bgColor: "#6e2626",
- mainColor: "#e55050",
- subColor: "#ff6060",
- textColor: "#ffaaaa",
+ terror_below: {
+ bg: "#0b1e1a",
+ caret: "#66ac92",
+ main: "#66ac92",
+ sub: "#015c53",
+ subAlt: "#041715",
+ text: "#dceae5",
+ error: "#bf616a",
+ errorExtra: "#793e44",
+ colorfulError: "#bf616a",
+ colorfulErrorExtra: "#793e44",
},
- floret: {
- bgColor: "#00272c",
- mainColor: " #ffdd6d",
- subColor: "#779097",
- textColor: "#E5E5E5",
+ tiramisu: {
+ bg: "#cfc6b9",
+ caret: "#7d5448",
+ main: "#c0976f",
+ sub: "#c0976f",
+ subAlt: "#d0bca7",
+ text: "#7d5448",
+ error: "#e9632d",
+ errorExtra: "#e9632d",
+ colorfulError: "#e9632d",
+ colorfulErrorExtra: "#e9632d",
},
- lilac_mist: {
- bgColor: "#fffbfe",
- mainColor: "#b94189",
- subColor: "#e094c2",
- textColor: "#5c2954",
+ trackday: {
+ bg: "#464d66",
+ caret: "#475782",
+ main: "#e0513e",
+ sub: "#5c7eb9",
+ subAlt: "#3d4359",
+ text: "#cfcfcf",
+ error: "#e44e4e",
+ errorExtra: "#fd3f3f",
+ colorfulError: "#ff2e2e",
+ colorfulErrorExtra: "#bb2525",
+ hasCss: true,
},
- terrazzo: {
- bgColor: "#f1e5da",
- mainColor: "#e0794e",
- subColor: "#688e8f",
- textColor: "#023e3b",
+ trance: {
+ bg: "#00021b",
+ caret: "#e51376",
+ main: "#e51376",
+ sub: "#3c4c79",
+ subAlt: "#18214c",
+ text: "#fff",
+ error: "#02d3b0",
+ errorExtra: "#3f887c",
+ colorfulError: "#02d3b0",
+ colorfulErrorExtra: "#3f887c",
+ hasCss: true,
},
- suisei: {
- bgColor: "#3b4a62",
- mainColor: "#bef0ff",
- subColor: "#fe9841",
- textColor: "#dbdeeb",
+ tron_orange: {
+ bg: "#0d1c1c",
+ caret: "#f0e800",
+ main: "#f0e800",
+ sub: "#ff6600",
+ subAlt: "#9c9191",
+ text: "#ffffff",
+ error: "#ff0000",
+ errorExtra: "#ff0000",
+ colorfulError: "#ff0000",
+ colorfulErrorExtra: "#ff0000",
},
- github: {
- bgColor: "#212830",
- mainColor: "#41ce5c",
- subColor: "#788386",
- textColor: "#ccdae6",
+ vaporwave: {
+ bg: "#a4a7ea",
+ caret: "#28cafe",
+ main: "#e368da",
+ sub: "#7c7faf",
+ subAlt: "#989bd9",
+ text: "#f1ebf1",
+ error: "#573ca9",
+ errorExtra: "#3d2b77",
+ colorfulError: "#28cafe",
+ colorfulErrorExtra: "#25a9ce",
},
- sunset: {
- bgColor: "#211e24",
- mainColor: "#f79777",
- subColor: "#5b578e",
- textColor: "#f4e0c9",
+ vesper: {
+ bg: "#101010",
+ caret: "#99ffe4",
+ main: "#ffc799",
+ sub: "#a0a0a0",
+ subAlt: "#1c1c1c",
+ text: "#ffffff",
+ error: "#ff8080",
+ errorExtra: "#b25959",
+ colorfulError: "#ff8080",
+ colorfulErrorExtra: "#b25959",
+ hasCss: true,
},
vesper_light: {
- bgColor: "#ffffff",
- mainColor: "#fb7100",
- subColor: "#067a6e",
- textColor: "#000000",
+ bg: "#ffffff",
+ caret: "#067a6e",
+ main: "#fb7100",
+ sub: "#a0a0a0",
+ subAlt: "#fff8f4",
+ text: "#000000",
+ error: "#ed2839",
+ errorExtra: "#ff6c72",
+ colorfulError: "#ed2839",
+ colorfulErrorExtra: "#ff6c72",
+ hasCss: true,
},
- pale_nimbus: {
- bgColor: "#433e4c",
- mainColor: "#94ffc2",
- subColor: "#ffaca3",
- textColor: "#feffdb",
+ viridescent: {
+ bg: "#2c3333",
+ caret: "#f0d3c9",
+ main: "#95d5b2",
+ sub: "#84a98c",
+ subAlt: "#232828",
+ text: "#e9f5db",
+ error: "#ff4646",
+ errorExtra: "#ab2f2f",
+ colorfulError: "#bd4141",
+ colorfulErrorExtra: "#883434",
},
- spiderman: {
- bgColor: "#0d1219",
- mainColor: "#e23636",
- subColor: "#0476f2",
- textColor: "#f0f0f0",
+ voc: {
+ bg: "#190618",
+ caret: "#e0caac",
+ main: "#e0caac",
+ sub: "#4c1e48",
+ subAlt: "#2c0c28",
+ text: "#eeeae4",
+ error: "#af3735",
+ errorExtra: "#7e2a29",
+ colorfulError: "#af3735",
+ colorfulErrorExtra: "#7e2a29",
+ },
+ vscode: {
+ bg: "#1e1e1e",
+ caret: "#569cd6",
+ main: "#007acc",
+ sub: "#4d4d4d",
+ subAlt: "#191919",
+ text: "#d4d4d4",
+ error: "#f44747",
+ errorExtra: "#f44747",
+ colorfulError: "#f44747",
+ colorfulErrorExtra: "#f44747",
+ },
+ watermelon: {
+ bg: "#1f4437",
+ caret: "#d6686f",
+ main: "#d6686f",
+ sub: "#3e7a65",
+ subAlt: "#244d3f",
+ text: "#cdc6bc",
+ error: "#c82931",
+ errorExtra: "#ac1823",
+ colorfulError: "#c82931",
+ colorfulErrorExtra: "#ac1823",
+ },
+ wavez: {
+ bg: "#1c292f",
+ caret: "#6bde3b",
+ main: "#6bde3b",
+ sub: "#1f5e6b",
+ subAlt: "#1b3238",
+ text: "#e9efe6",
+ error: "#ca4754",
+ errorExtra: "#7e2a33",
+ colorfulError: "#ca4754",
+ colorfulErrorExtra: "#7e2a33",
+ },
+ witch_girl: {
+ bg: "#f3dbda",
+ caret: "#afc5bd",
+ main: "#56786a",
+ sub: "#ddb4a7",
+ subAlt: "#e7c8be",
+ text: "#56786a",
+ error: "#b29a91",
+ errorExtra: "#b29a91",
+ colorfulError: "#b29a91",
+ colorfulErrorExtra: "#b29a91",
},
};
-export const ThemesList: Theme[] = Object.keys(themes)
+export type ThemeWithName = Theme & { name: ThemeName };
+export const ThemesList: ThemeWithName[] = Object.keys(themes)
.sort()
.map(
(it) =>
({
...themes[it as ThemeName],
- name: it,
- }) as Theme,
+ name: it as ThemeName,
+ }) as Theme & { name: ThemeName },
);
-export const ThemesListSorted = [
+export const ThemesListSorted: ThemeWithName[] = [
...ThemesList.sort((a, b) => {
- const b1 = hexToHSL(a.bgColor);
- const b2 = hexToHSL(b.bgColor);
+ const b1 = hexToHSL(a.bg);
+ const b2 = hexToHSL(b.bg);
return b2.lgt - b1.lgt;
}),
];
diff --git a/frontend/src/ts/controllers/chart-controller.ts b/frontend/src/ts/controllers/chart-controller.ts
index d11ba983667b..3f08b8b96adb 100644
--- a/frontend/src/ts/controllers/chart-controller.ts
+++ b/frontend/src/ts/controllers/chart-controller.ts
@@ -60,7 +60,6 @@ Chart.defaults.elements.line.fill = "origin";
import "chartjs-adapter-date-fns";
import { format } from "date-fns/format";
import Config from "../config";
-import * as ThemeColors from "../elements/theme-colors";
import * as ConfigEvent from "../observables/config-event";
import * as TestInput from "../test/test-input";
import * as DateTime from "../utils/date-and-time";
@@ -69,7 +68,9 @@ import * as Numbers from "@monkeytype/util/numbers";
import { blendTwoHexColors } from "../utils/colors";
import { typedKeys } from "../utils/misc";
import { qs } from "../utils/dom";
-import { ThemeColors as ThemeColorsType } from "../signals/theme";
+import { getTheme } from "../signals/theme";
+import { Theme } from "../constants/themes";
+import { createDebouncedEffectOn } from "../hooks/effects";
export class ChartWithUpdateColors<
TType extends ChartType = ChartType,
@@ -85,9 +86,9 @@ export class ChartWithUpdateColors<
super(item, config);
}
- async updateColors(colors?: ThemeColorsType): Promise {
+ async updateColors(theme: Theme): Promise {
//@ts-expect-error it's too difficult to figure out these types, but this works
- await updateColors(this, colors);
+ await updateColors(this, theme);
}
getDataset(id: DatasetIds): ChartDataset {
@@ -1023,10 +1024,10 @@ type ButtonBelowChart =
| ".toggleAverage100OnChart";
export function updateAccountChartButtons(): void {
- updateResults(false);
- updateAccuracy(false);
- updateAverage10(false);
- updateAverage100(false);
+ updateResults();
+ updateAccuracy();
+ updateAverage10();
+ updateAverage100();
}
function updateAccountChartButton(
@@ -1038,7 +1039,7 @@ function updateAccountChartButton(
: qs(`.pageAccount ${className}`)?.removeClass("active");
}
-function updateResults(updateChart = true): void {
+function updateResults(): void {
const resultsOn = Config.accountChart[0] === "on";
updateAccountChartButton(resultsOn, ".toggleResultsOnChart");
@@ -1047,11 +1048,9 @@ function updateResults(updateChart = true): void {
accountHistory.getDataset("wpmAvgTen").hidden = !resultsOn;
accountHistory.getDataset("wpmAvgHundred").hidden = !resultsOn;
accountHistory.getScale("wpm").display = resultsOn;
-
- if (updateChart) void accountHistory.updateColors();
}
-function updateAccuracy(updateChart = true): void {
+function updateAccuracy(): void {
const resultsOn = Config.accountChart[0] === "on";
const accOn = Config.accountChart[1] === "on";
updateAccountChartButton(accOn, ".toggleAccuracyOnChart");
@@ -1075,11 +1074,9 @@ function updateAccuracy(updateChart = true): void {
accountHistory.getScale("accAvgTen").min = minAccRoundedTo10;
accountHistory.getScale("accAvgHundred").min = minAccRoundedTo10;
}
-
- if (updateChart) void accountHistory.updateColors();
}
-function updateAverage10(updateChart = true): void {
+function updateAverage10(): void {
const resultsOn = Config.accountChart[0] === "on";
const accOn = Config.accountChart[1] === "on";
const avg10On = Config.accountChart[2] === "on";
@@ -1091,10 +1088,9 @@ function updateAverage10(updateChart = true): void {
if (resultsOn) {
accountHistory.getDataset("wpmAvgTen").hidden = !avg10On;
}
- if (updateChart) void accountHistory.updateColors();
}
-function updateAverage100(updateChart = true): void {
+function updateAverage100(): void {
const resultsOn = Config.accountChart[0] === "on";
const accOn = Config.accountChart[1] === "on";
const avg100On = Config.accountChart[3] === "on";
@@ -1106,7 +1102,6 @@ function updateAverage100(updateChart = true): void {
if (resultsOn) {
accountHistory.getDataset("wpmAvgHundred").hidden = !avg100On;
}
- if (updateChart) void accountHistory.updateColors();
}
async function updateColors<
@@ -1119,15 +1114,9 @@ async function updateColors<
TLabel = string,
>(
chart: ChartWithUpdateColors,
- colors?: ThemeColorsType,
+ colors: Theme,
): Promise {
- const bgcolor = colors?.bg ?? (await ThemeColors.get("bg"));
- const subcolor = colors?.sub ?? (await ThemeColors.get("sub"));
- const subaltcolor = colors?.subAlt ?? (await ThemeColors.get("subAlt"));
- const maincolor = colors?.main ?? (await ThemeColors.get("main"));
- const errorcolor = colors?.error ?? (await ThemeColors.get("error"));
- const textcolor = colors?.text ?? (await ThemeColors.get("text"));
- const gridcolor = subaltcolor;
+ const gridcolor = colors.subAlt;
for (const scaleKey of typedKeys(chart.scales)) {
//@ts-expect-error cant figure out this type but it works fine
@@ -1135,8 +1124,8 @@ async function updateColors<
scale.grid.color = gridcolor;
scale.grid.tickColor = gridcolor;
scale.grid.borderColor = gridcolor;
- scale.ticks.color = subcolor;
- scale.title.color = subcolor;
+ scale.ticks.color = colors.sub;
+ scale.title.color = colors.sub;
}
if (chart.id === result.id) {
@@ -1144,31 +1133,31 @@ async function updateColors<
const wpm = c.getDataset("wpm");
wpm.backgroundColor = "transparent";
- wpm.borderColor = maincolor;
- wpm.pointBackgroundColor = maincolor;
- wpm.pointBorderColor = maincolor;
+ wpm.borderColor = colors.main;
+ wpm.pointBackgroundColor = colors.main;
+ wpm.pointBorderColor = colors.main;
const raw = c.getDataset("raw");
raw.backgroundColor = "transparent";
- raw.borderColor = maincolor + "99";
- raw.pointBackgroundColor = maincolor + "99";
- raw.pointBorderColor = maincolor + "99";
+ raw.borderColor = colors.main + "99";
+ raw.pointBackgroundColor = colors.main + "99";
+ raw.pointBorderColor = colors.main + "99";
const error = c.getDataset("error");
- error.backgroundColor = errorcolor;
- error.borderColor = errorcolor;
- error.pointBackgroundColor = errorcolor;
- error.pointBorderColor = errorcolor;
+ error.backgroundColor = colors.error;
+ error.borderColor = colors.error;
+ error.pointBackgroundColor = colors.error;
+ error.pointBorderColor = colors.error;
const burst = c.getDataset("burst");
burst.backgroundColor = blendTwoHexColors(
- subaltcolor,
- subaltcolor + "00",
+ colors.subAlt,
+ colors.subAlt + "00",
0.5,
);
- burst.borderColor = subcolor;
- burst.pointBackgroundColor = subcolor;
- burst.pointBorderColor = subcolor;
+ burst.borderColor = colors.sub;
+ burst.pointBackgroundColor = colors.sub;
+ burst.pointBorderColor = colors.sub;
chart.update("resize");
return;
@@ -1179,25 +1168,25 @@ async function updateColors<
const wpm = c.getDataset("wpm");
wpm.backgroundColor = "transparent";
- wpm.borderColor = maincolor;
- wpm.pointBackgroundColor = maincolor;
- wpm.pointBorderColor = maincolor;
+ wpm.borderColor = colors.main;
+ wpm.pointBackgroundColor = colors.main;
+ wpm.pointBorderColor = colors.main;
const error = c.getDataset("error");
- error.backgroundColor = errorcolor;
- error.borderColor = errorcolor;
- error.pointBackgroundColor = errorcolor;
- error.pointBorderColor = errorcolor;
+ error.backgroundColor = colors.error;
+ error.borderColor = colors.error;
+ error.pointBackgroundColor = colors.error;
+ error.pointBorderColor = colors.error;
const burst = c.getDataset("burst");
burst.backgroundColor = blendTwoHexColors(
- subaltcolor,
- subaltcolor + "00",
+ colors.subAlt,
+ colors.subAlt + "00",
0.75,
);
- burst.borderColor = subcolor;
- burst.pointBackgroundColor = subcolor;
- burst.pointBorderColor = subcolor;
+ burst.borderColor = colors.sub;
+ burst.pointBackgroundColor = colors.sub;
+ burst.pointBorderColor = colors.sub;
chart.update("resize");
return;
@@ -1207,15 +1196,15 @@ async function updateColors<
chart.data.datasets[0].borderColor = (ctx): string => {
// oxlint-disable-next-line no-unsafe-member-access
const isPb = ctx.raw?.isPb as boolean;
- const color = isPb ? textcolor : maincolor;
+ const color = isPb ? colors.text : colors.main;
return color;
};
if (chart.data.datasets[1]) {
- chart.data.datasets[1].borderColor = subcolor;
+ chart.data.datasets[1].borderColor = colors.sub;
}
if (chart.data.datasets[2]) {
- chart.data.datasets[2].borderColor = errorcolor;
+ chart.data.datasets[2].borderColor = colors.error;
}
const dataset0 = (
@@ -1227,16 +1216,16 @@ async function updateColors<
dataset0.pointBackgroundColor = (ctx): string => {
//@ts-expect-error not sure why raw comes out to unknown, but this works
const isPb = ctx.raw?.isPb as boolean;
- const color = isPb ? textcolor : maincolor;
+ const color = isPb ? colors.text : colors.main;
return color;
};
} else if (chart.config.type === "bar") {
- dataset0.backgroundColor = maincolor;
+ dataset0.backgroundColor = colors.main;
}
} else if (chart.data.datasets[0].type === "bar") {
- chart.data.datasets[0].backgroundColor = maincolor;
+ chart.data.datasets[0].backgroundColor = colors.main;
} else if (chart.data.datasets[0].type === "line") {
- dataset0.pointBackgroundColor = maincolor;
+ dataset0.pointBackgroundColor = colors.main;
}
const dataset1 = chart.data.datasets[1] as ChartDataset<"line", TData>;
@@ -1244,19 +1233,19 @@ async function updateColors<
if (dataset1 !== undefined) {
if (dataset1.type === undefined) {
if (chart.config.type === "line") {
- dataset1.pointBackgroundColor = subcolor;
+ dataset1.pointBackgroundColor = colors.sub;
} else if (chart.config.type === "bar") {
- dataset1.backgroundColor = subcolor;
+ dataset1.backgroundColor = colors.sub;
}
} else if ((dataset1?.type as "bar" | "line") === "bar") {
- dataset1.backgroundColor = subcolor;
+ dataset1.backgroundColor = colors.sub;
} else if (dataset1.type === "line") {
- dataset1.pointBackgroundColor = subcolor;
+ dataset1.pointBackgroundColor = colors.sub;
}
}
if (chart.data.datasets.length === 2) {
dataset1.borderColor = (): string => {
- const color = subcolor;
+ const color = colors.sub;
return color;
};
}
@@ -1265,18 +1254,18 @@ async function updateColors<
if (chart.data.datasets.length === 7) {
dataset2.borderColor = (): string => {
- const color = subcolor;
+ const color = colors.sub;
return color;
};
const avg10On = Config.accountChart[2] === "on";
const avg100On = Config.accountChart[3] === "on";
- const text02 = blendTwoHexColors(bgcolor, textcolor, 0.2);
- const main02 = blendTwoHexColors(bgcolor, maincolor, 0.2);
- const main04 = blendTwoHexColors(bgcolor, maincolor, 0.4);
+ const text02 = blendTwoHexColors(colors.bg, colors.text, 0.2);
+ const main02 = blendTwoHexColors(colors.bg, colors.main, 0.2);
+ const main04 = blendTwoHexColors(colors.bg, colors.main, 0.4);
- const sub02 = blendTwoHexColors(bgcolor, subcolor, 0.2);
- const sub04 = blendTwoHexColors(bgcolor, subcolor, 0.4);
+ const sub02 = blendTwoHexColors(colors.bg, colors.sub, 0.2);
+ const sub04 = blendTwoHexColors(colors.bg, colors.sub, 0.4);
const [
wpmDataset,
@@ -1306,28 +1295,28 @@ async function updateColors<
accDataset.pointBackgroundColor = sub02;
ao10wpmDataset.borderColor = main04;
ao10accDataset.borderColor = sub04;
- ao100wpmDataset.borderColor = maincolor;
- ao100accDataset.borderColor = subcolor;
+ ao100wpmDataset.borderColor = colors.main;
+ ao100accDataset.borderColor = colors.sub;
} else if ((avg10On && !avg100On) || (!avg10On && avg100On)) {
pbDataset.borderColor = text02;
wpmDataset.pointBackgroundColor = main04;
accDataset.pointBackgroundColor = sub04;
- ao10wpmDataset.borderColor = maincolor;
- ao100wpmDataset.borderColor = maincolor;
- ao10accDataset.borderColor = subcolor;
- ao100accDataset.borderColor = subcolor;
+ ao10wpmDataset.borderColor = colors.main;
+ ao100wpmDataset.borderColor = colors.main;
+ ao10accDataset.borderColor = colors.sub;
+ ao100accDataset.borderColor = colors.sub;
} else {
pbDataset.borderColor = text02;
- wpmDataset.pointBackgroundColor = maincolor;
- accDataset.pointBackgroundColor = subcolor;
+ wpmDataset.pointBackgroundColor = colors.main;
+ accDataset.pointBackgroundColor = colors.sub;
}
}
const chartScaleOptions = chart.options as ScaleChartOptions;
Object.keys(chartScaleOptions.scales).forEach((scaleID) => {
const axis = chartScaleOptions.scales[scaleID] as CartesianScaleOptions;
- axis.ticks.color = subcolor;
- axis.title.color = subcolor;
+ axis.ticks.color = colors.sub;
+ axis.title.color = colors.sub;
axis.grid.color = gridcolor;
axis.grid.tickColor = gridcolor;
axis.grid.borderColor = gridcolor;
@@ -1336,7 +1325,7 @@ async function updateColors<
try {
(
dataset0.trendlineLinear as TrendlineLinearPlugin.TrendlineLinearOptions
- ).style = subcolor;
+ ).style = colors.sub;
} catch {}
(
@@ -1344,10 +1333,10 @@ async function updateColors<
.annotations as AnnotationOptions<"line">[]
).forEach((annotation) => {
if (annotation.id !== "funbox-label") {
- annotation.borderColor = subcolor;
+ annotation.borderColor = colors.sub;
}
- (annotation.label as LabelOptions).backgroundColor = subcolor;
- (annotation.label as LabelOptions).color = bgcolor;
+ (annotation.label as LabelOptions).backgroundColor = colors.sub;
+ (annotation.label as LabelOptions).color = colors.bg;
});
chart.update("none");
@@ -1357,13 +1346,13 @@ function setDefaultFontFamily(font: string): void {
Chart.defaults.font.family = font.replace(/_/g, " ");
}
-export function updateAllChartColors(): void {
- void result.updateColors();
- void accountHistory.updateColors();
- void accountHistogram.updateColors();
- void accountActivity.updateColors();
- void miniResult.updateColors();
-}
+createDebouncedEffectOn(125, getTheme, (theme) => {
+ void result.updateColors(theme);
+ void accountHistory.updateColors(theme);
+ void accountHistogram.updateColors(theme);
+ void accountActivity.updateColors(theme);
+ void miniResult.updateColors(theme);
+});
ConfigEvent.subscribe(({ key, newValue }) => {
if (key === "accountChart" && getActivePage() === "account") {
diff --git a/frontend/src/ts/controllers/theme-controller.ts b/frontend/src/ts/controllers/theme-controller.ts
index b49d1774b46e..321fe9dc908a 100644
--- a/frontend/src/ts/controllers/theme-controller.ts
+++ b/frontend/src/ts/controllers/theme-controller.ts
@@ -1,6 +1,3 @@
-import * as ThemeColors from "../elements/theme-colors";
-import * as ChartController from "./chart-controller";
-import * as Misc from "../utils/misc";
import * as Arrays from "../utils/arrays";
import { isColorDark, isColorLight } from "../utils/colors";
import Config, { setConfig } from "../config";
@@ -8,195 +5,81 @@ import * as BackgroundFilter from "../elements/custom-background-filter";
import * as ConfigEvent from "../observables/config-event";
import * as DB from "../db";
import * as Notifications from "../elements/notifications";
-
-import { showLoaderBar, hideLoaderBar } from "../signals/loader-bar";
import { debounce } from "throttle-debounce";
-import { ThemeName } from "@monkeytype/schemas/configs";
-import { themes, ThemesList } from "../constants/themes";
+import { CustomThemeColors, ThemeName } from "@monkeytype/schemas/configs";
+import { Theme, themes, ThemesList } from "../constants/themes";
import fileStorage from "../utils/file-storage";
-import { qs, qsa } from "../utils/dom";
+import { qs } from "../utils/dom";
import { setThemeIndicator } from "../signals/core";
+import { setTheme, ThemeIdentifier } from "../signals/theme";
-export let randomTheme: ThemeName | string | null = null;
+export let randomTheme: ThemeIdentifier | null = null;
let isPreviewingTheme = false;
let randomThemeIndex = 0;
-export const colorVars = [
- "--bg-color",
- "--main-color",
- "--caret-color",
- "--sub-color",
- "--sub-alt-color",
- "--text-color",
- "--error-color",
- "--error-extra-color",
- "--colorful-error-color",
- "--colorful-error-extra-color",
-];
-
-async function updateFavicon(): Promise {
- setTimeout(async () => {
- let maincolor, bgcolor;
- bgcolor = await ThemeColors.get("bg");
- maincolor = await ThemeColors.get("main");
- if (Misc.isDevEnvironment()) {
- [maincolor, bgcolor] = [bgcolor, maincolor];
- }
- if (bgcolor === maincolor) {
- bgcolor = "#111";
- maincolor = "#eee";
- }
-
- const svgPre = `
-`;
-
- qs("#favicon")?.setAttribute(
- "href",
- "data:image/svg+xml;base64," + btoa(svgPre),
- );
- }, 125);
+export function applyPreset(name: ThemeName): void {
+ void apply(name);
}
-function clearCustomTheme(): void {
- console.debug("Theme controller clearing custom theme");
- for (const e of colorVars) {
- document.documentElement.style.setProperty(e, "");
- }
+export function convertCustomColorsToTheme(colors: CustomThemeColors): Theme {
+ return {
+ bg: colors[0],
+ main: colors[1],
+ caret: colors[2],
+ sub: colors[3],
+ subAlt: colors[4],
+ text: colors[5],
+ error: colors[6],
+ errorExtra: colors[7],
+ colorfulError: colors[8],
+ colorfulErrorExtra: colors[9],
+ };
}
-
-let loadStyleLoaderTimeouts: NodeJS.Timeout[] = [];
-
-export async function loadStyle(name: string): Promise {
- return new Promise((resolve) => {
- function swapCurrentToNext(): void {
- console.debug("Theme controller swapping elements");
- const current = qs("#currentTheme");
- const next = qs("#nextTheme");
- if (current === null || next === null) {
- console.debug(
- "Theme controller failed to swap elements, next or current is missing",
- );
- return;
- }
- current.remove();
- next.setAttribute("id", "currentTheme");
- }
-
- console.debug("Theme controller loading style", name);
- loadStyleLoaderTimeouts.push(
- setTimeout(() => {
- showLoaderBar();
- }, 100),
- );
- qs("#nextTheme")?.remove();
- const headScript = document.querySelector("#currentTheme");
- const link = document.createElement("link");
- link.type = "text/css";
- link.rel = "stylesheet";
- link.id = "nextTheme";
- link.onload = (): void => {
- console.debug("Theme controller loaded style", name);
- hideLoaderBar();
- swapCurrentToNext();
- loadStyleLoaderTimeouts.map((t) => clearTimeout(t));
- loadStyleLoaderTimeouts = [];
- qsa("#keymap .keymapKey")?.setStyle({});
- resolve();
- };
- link.onerror = (e): void => {
- console.debug("Theme controller failed to load style", name, e);
- console.error(`Failed to load theme ${name}`, e);
- hideLoaderBar();
- Notifications.add("Failed to load theme", 0);
- swapCurrentToNext();
- loadStyleLoaderTimeouts.map((t) => clearTimeout(t));
- loadStyleLoaderTimeouts = [];
- qsa("#keymap .keymapKey")?.setStyle({});
- resolve();
- };
- if (name === "custom") {
- link.href = `/themes/serika_dark.css`;
- } else {
- link.href = `/themes/${name}.css`;
- }
-
- if (headScript === null) {
- console.debug("Theme controller appending link to the head", link);
- document.head.appendChild(link);
- } else {
- console.debug(
- "Theme controller inserting link after current theme",
- link,
- );
- headScript.after(link);
- }
- });
+export function convertThemeToCustomColors(theme: Theme): CustomThemeColors {
+ return [
+ theme.bg,
+ theme.main,
+ theme.caret,
+ theme.sub,
+ theme.subAlt,
+ theme.text,
+ theme.error,
+ theme.errorExtra,
+ theme.colorfulError,
+ theme.colorfulErrorExtra,
+ ];
}
-// export function changeCustomTheme(themeId: string, nosave = false): void {
-// const customThemes = DB.getSnapshot().customThemes;
-// const colors = customThemes.find((e) => e._id === themeId)
-// ?.colors as string[];
-// UpdateConfig.setConfig("customThemeColors", colors,nosave);
-// }
-
async function apply(
- themeName: string,
- customColorsOverride?: string[],
+ themeName: ThemeIdentifier,
+ customColorsOverride?: CustomThemeColors,
isPreview = false,
): Promise {
- console.debug(
- "Theme controller applying theme",
- themeName,
+ console.debug(`Theme controller applying theme ${themeName}`, {
customColorsOverride,
isPreview,
- );
-
- const name = customColorsOverride ? "custom" : themeName;
-
- if ((Config.customTheme && !isPreview) || customColorsOverride) {
- const colors = customColorsOverride ?? Config.customThemeColors;
+ });
- for (let i = 0; i < colorVars.length; i++) {
- const colorVar = colorVars[i] as string;
- document.documentElement.style.setProperty(colorVar, colors[i] as string);
- }
- }
+ const isCustom = themeName === "custom";
- qsa("#keymap .keymapKey")?.setStyle({});
- await loadStyle(name);
+ const themeColors = isCustom
+ ? convertCustomColorsToTheme(
+ customColorsOverride ?? Config.customThemeColors,
+ )
+ : themes[themeName];
- if (name !== "custom") {
- clearCustomTheme();
- }
+ setTheme({ ...themeColors, name: themeName });
- ThemeColors.update();
+ updateThemeIndicator(isPreview ? themeName : undefined);
- // if (!isPreview) {
- const colors = await ThemeColors.getAll();
- qsa("#keymap .keymapKey")?.setStyle({});
- ChartController.updateAllChartColors();
- void updateFavicon();
- qs("#metaThemeColor")?.setAttribute("content", colors.bg);
- updateFooterIndicator(isPreview ? themeName : undefined);
-
- if (isColorDark(await ThemeColors.get("bg"))) {
+ if (isColorDark(themeColors.bg)) {
qs("body")?.addClass("darkMode");
} else {
qs("body")?.removeClass("darkMode");
}
}
-function updateFooterIndicator(nameOverride?: string): void {
+function updateThemeIndicator(nameOverride?: string): void {
//text
let str: string = Config.theme;
if (randomTheme !== null) str = randomTheme;
@@ -215,15 +98,15 @@ function updateFooterIndicator(nameOverride?: string): void {
}
type PreviewState = {
- theme: string;
- colors?: string[];
+ theme: ThemeIdentifier;
+ colors?: CustomThemeColors;
} | null;
let previewState: PreviewState = null;
export function preview(
- themeIdentifier: string,
- customColorsOverride?: string[],
+ themeIdentifier: ThemeIdentifier,
+ customColorsOverride?: CustomThemeColors,
): void {
previewState = { theme: themeIdentifier, colors: customColorsOverride };
debouncedPreview();
@@ -237,14 +120,12 @@ const debouncedPreview = debounce<() => void>(250, () => {
});
async function set(
- themeIdentifier: string,
+ themeIdentifier: ThemeIdentifier,
isAutoSwitch = false,
): Promise {
- console.debug(
- "Theme controller setting theme",
- themeIdentifier,
+ console.debug("Theme controller setting theme", themeIdentifier, {
isAutoSwitch,
- );
+ });
await apply(themeIdentifier, undefined, isAutoSwitch);
if (!isAutoSwitch && Config.autoSwitchTheme) {
@@ -277,13 +158,9 @@ async function changeThemeList(): Promise {
if (Config.randomTheme === "fav" && Config.favThemes.length > 0) {
themesList = Config.favThemes;
} else if (Config.randomTheme === "light") {
- themesList = themes
- .filter((t) => isColorLight(t.bgColor))
- .map((t) => t.name);
+ themesList = themes.filter((t) => isColorLight(t.bg)).map((t) => t.name);
} else if (Config.randomTheme === "dark") {
- themesList = themes
- .filter((t) => isColorDark(t.bgColor))
- .map((t) => t.name);
+ themesList = themes.filter((t) => isColorDark(t.bg)).map((t) => t.name);
} else if (Config.randomTheme === "on" || Config.randomTheme === "auto") {
themesList = themes.map((t) => {
return t.name;
@@ -308,16 +185,16 @@ export async function randomizeTheme(): Promise {
let nextTheme = null;
do {
- randomTheme = themesList[randomThemeIndex] as string;
+ randomTheme = themesList[randomThemeIndex] as ThemeIdentifier;
nextTheme = themes[themesList[randomThemeIndex] as ThemeName];
randomThemeIndex++;
if (randomThemeIndex >= themesList.length) {
Arrays.shuffle(themesList);
randomThemeIndex = 0;
}
- } while (!filter(nextTheme.bgColor));
+ } while (!filter(nextTheme.bg));
- let colorsOverride: string[] | undefined;
+ let colorsOverride: CustomThemeColors | undefined;
if (Config.randomTheme === "custom") {
const theme = DB.getSnapshot()?.customThemes?.find(
@@ -495,7 +372,7 @@ ConfigEvent.subscribe(async ({ key, newValue, nosave }) => {
if (key === "theme") {
await clearRandom();
await clearPreview(false);
- await set(newValue as string);
+ await set(newValue);
}
if (key === "randomTheme" && newValue === "off") await clearRandom();
if (key === "customBackground") await applyCustomBackground();
@@ -538,7 +415,7 @@ ConfigEvent.subscribe(async ({ key, newValue, nosave }) => {
"favThemes",
].includes(key)
) {
- updateFooterIndicator();
+ updateThemeIndicator();
}
});
diff --git a/frontend/src/ts/elements/keymap.ts b/frontend/src/ts/elements/keymap.ts
index 25155e8401a6..19e0add7bf91 100644
--- a/frontend/src/ts/elements/keymap.ts
+++ b/frontend/src/ts/elements/keymap.ts
@@ -1,5 +1,4 @@
import Config from "../config";
-import * as ThemeColors from "./theme-colors";
import * as ConfigEvent from "../observables/config-event";
import * as KeymapEvent from "../observables/keymap-event";
import * as Misc from "../utils/misc";
@@ -18,6 +17,9 @@ import { LayoutObject } from "@monkeytype/schemas/layouts";
import { animate } from "animejs";
import { ElementsWithUtils, qsr } from "../utils/dom";
import { requestDebouncedAnimationFrame } from "../utils/debounced-animation-frame";
+import { getTheme } from "../signals/theme";
+
+import { createEffectOn } from "../hooks/effects";
export const keyDataDelimiter = "\uE000";
const keymap = qsr("#keymap");
@@ -61,6 +63,11 @@ const stenoKeys: LayoutObject = {
},
};
+createEffectOn(getTheme, () => {
+ //reset calculated style on all keys
+ keymap.qsa(".keymapKey").setStyle({});
+});
+
function findKeyElements(char: string): ElementsWithUtils | null {
if (char === "\n") return null;
@@ -106,7 +113,7 @@ async function flashKey(key: string, correct?: boolean): Promise {
const elements = findKeyElements(key);
if (elements === null || elements.length === 0) return;
- const themecolors = await ThemeColors.getAll();
+ const themecolors = getTheme();
try {
let startingStyle = {
diff --git a/frontend/src/ts/elements/monkey-power.ts b/frontend/src/ts/elements/monkey-power.ts
index c5529b4c628e..3878f52f3b66 100644
--- a/frontend/src/ts/elements/monkey-power.ts
+++ b/frontend/src/ts/elements/monkey-power.ts
@@ -1,9 +1,9 @@
-import * as ThemeColors from "./theme-colors";
import * as SlowTimer from "../states/slow-timer";
import Config from "../config";
import { isSafeNumber } from "@monkeytype/util/numbers";
import { requestDebouncedAnimationFrame } from "../utils/debounced-animation-frame";
import { ElementWithUtils, qsr } from "../utils/dom";
+import { getTheme } from "../signals/theme";
const html = qsr("html");
const body = qsr("body");
@@ -238,11 +238,12 @@ export async function addPower(good = true, extra = false): Promise {
i > 0;
i--
) {
+ const { caret, error } = getTheme();
const color = ["2", "4"].includes(Config.monkeyPowerLevel)
? randomColor()
: good
- ? await ThemeColors.get("caret")
- : await ThemeColors.get("error");
+ ? caret
+ : error;
ctx.particles.push(
createParticle(...(coords as [x: number, y: number]), color),
);
diff --git a/frontend/src/ts/elements/result-batches.ts b/frontend/src/ts/elements/result-batches.ts
index 9f129de2b1f4..500c63545abe 100644
--- a/frontend/src/ts/elements/result-batches.ts
+++ b/frontend/src/ts/elements/result-batches.ts
@@ -1,8 +1,8 @@
import * as DB from "../db";
import * as ServerConfiguration from "../ape/server-configuration";
import { blendTwoHexColors } from "../utils/colors";
-import * as ThemeColors from "../elements/theme-colors";
import { mapRange } from "@monkeytype/util/numbers";
+import { getTheme } from "../signals/theme";
export function hide(): void {
$(".pageAccount .resultBatches").addClass("hidden");
@@ -56,7 +56,7 @@ export async function update(): Promise {
`${results?.length} / ${completedTests} (${percentageDownloaded}%)`,
);
- const colors = await ThemeColors.getAll();
+ const colors = getTheme();
bars.limit.fill.css({
width: Math.min(percentageLimit, 100) + "%",
diff --git a/frontend/src/ts/elements/settings/theme-picker.ts b/frontend/src/ts/elements/settings/theme-picker.ts
index 611c9ba30ddd..8d779f3b62e3 100644
--- a/frontend/src/ts/elements/settings/theme-picker.ts
+++ b/frontend/src/ts/elements/settings/theme-picker.ts
@@ -3,17 +3,16 @@ import * as ThemeController from "../../controllers/theme-controller";
import * as Misc from "../../utils/misc";
import * as Colors from "../../utils/colors";
import * as Notifications from "../notifications";
-import * as ThemeColors from "../theme-colors";
-import * as ChartController from "../../controllers/chart-controller";
import { showLoaderBar, hideLoaderBar } from "../../signals/loader-bar";
import * as DB from "../../db";
import * as ConfigEvent from "../../observables/config-event";
import { isAuthenticated } from "../../firebase";
import { getActivePage } from "../../signals/core";
-import { CustomThemeColors, ThemeName } from "@monkeytype/schemas/configs";
+import { ThemeName } from "@monkeytype/schemas/configs";
import { captureException } from "../../sentry";
-import { ThemesListSorted } from "../../constants/themes";
-import { qs } from "../../utils/dom";
+import { ColorName, ThemesListSorted } from "../../constants/themes";
+import { qs, qsa, qsr } from "../../utils/dom";
+import { getTheme, updateThemeColor } from "../../signals/theme";
function updateActiveButton(): void {
let activeThemeName: string = Config.theme;
@@ -37,85 +36,16 @@ function updateActiveButton(): void {
?.classList.add("active");
}
-function updateColors(
- colorPicker: JQuery,
- color: string,
- onlyStyle = false,
- noThemeUpdate = false,
-): void {
- if (onlyStyle) {
- const colorID = colorPicker.find("input.color").attr("id");
- if (colorID === undefined) console.error("Could not find color ID!");
- if (!noThemeUpdate && colorID !== undefined) {
- document.documentElement.style.setProperty(colorID, color);
- }
- const pickerButton = colorPicker.find("label");
- pickerButton.val(color);
- pickerButton.attr("value", color);
- if (pickerButton.attr("for") !== "--bg-color") {
- pickerButton.css("background-color", color);
- }
- colorPicker.find("input.input").val(color);
- colorPicker.find("input.color").attr("value", color);
- colorPicker.find("input.color").val(color);
- return;
- }
- const colorREGEX = [
- {
- rule: /\b[0-9]{1,3},\s?[0-9]{1,3},\s?[0-9]{1,3}\s*\b/,
- start: "rgb(",
- end: ")",
- },
- {
- rule: /\b[A-Z, a-z, 0-9]{6}\b/,
- start: "#",
- end: "",
- },
- {
- rule: /\b[0-9]{1,3},\s?[0-9]{1,3}%,\s?[0-9]{1,3}%?\s*\b/,
- start: "hsl(",
- end: ")",
- },
- ];
-
- color = color.replace("°", "");
-
- for (const regex of colorREGEX) {
- if (color.match(regex.rule)) {
- color = regex.start + color + regex.end;
- break;
- }
- }
-
- color = color.replace("##", "#");
-
- $(".colorConverter").css("color", color);
- const hexColor: string | undefined = Colors.rgbStringtoHex(
- $(".colorConverter").css("color"),
- );
- if (hexColor === undefined) {
- return;
+function updateColorPicker(key: ColorName, color: string): void {
+ const colorPicker = qsr(`.colorPicker[data-key="${key}"]`);
+ const pickerButton = colorPicker.qsr("label");
+ pickerButton.setAttribute("value", color);
+ if (key !== "bg") {
+ //don't update the color for the background picker
+ pickerButton.setStyle({ backgroundColor: color });
}
-
- color = hexColor;
-
- const colorID = colorPicker.find("input.color").attr("id");
-
- if (colorID === undefined) console.error("Could not find color ID!");
- if (!noThemeUpdate && colorID !== undefined) {
- document.documentElement.style.setProperty(colorID, color);
- }
-
- const pickerButton = colorPicker.find("label");
-
- pickerButton.val(color);
- pickerButton.attr("value", color);
- if (pickerButton.attr("for") !== "--bg-color") {
- pickerButton.css("background-color", color);
- }
- colorPicker.find("input.input").val(color);
- colorPicker.find("input.color").attr("value", color);
- colorPicker.find("input.color").val(color);
+ colorPicker.qsr("input.input").setValue(color);
+ colorPicker.qsr("input.color").setAttribute("value", color);
}
export async function fillPresetButtons(): Promise {
@@ -161,23 +91,17 @@ export async function fillPresetButtons(): Promise {
const activeTheme = activeThemeName === theme.name ? "active" : "";
favThemesElHTML += `
`;
@@ -196,17 +120,17 @@ export async function fillPresetButtons(): Promise {
const activeTheme = activeThemeName === theme.name ? "active" : "";
themesElHTML += `
`;
@@ -257,16 +181,16 @@ export async function fillCustomButtons(): Promise {
}
}
-export function setCustomInputs(noThemeUpdate = false): void {
- $(
+export function setCustomInputs(): void {
+ const theme = ThemeController.convertCustomColorsToTheme(
+ Config.customThemeColors,
+ );
+ qsa(
".pageSettings .section.themes .tabContainer .customTheme .colorPicker",
- ).each((_index, element: HTMLElement) => {
- const currentColor = Config.customThemeColors[
- ThemeController.colorVars.indexOf(
- $(element).find("input.color").attr("id") as string,
- )
- ] as string;
- updateColors($(element), currentColor, false, noThemeUpdate);
+ ).forEach((element) => {
+ const key = element.getAttribute("data-key") as ColorName;
+ const color = Colors.convertStringToHex(theme[key]);
+ updateColorPicker(key, color);
});
}
@@ -287,15 +211,9 @@ function toggleFavourite(themeName: ThemeName): void {
}
function saveCustomThemeColors(): void {
- const newColors: string[] = [];
- for (const color of ThemeController.colorVars) {
- newColors.push(
- $(`.pageSettings .tabContent.customTheme #${color}[type='color']`).attr(
- "value",
- ) as string,
- );
- }
- setConfig("customThemeColors", newColors as CustomThemeColors);
+ const colors = ThemeController.convertThemeToCustomColors(getTheme());
+
+ setConfig("customThemeColors", colors);
Notifications.add("Custom theme saved", 1);
}
@@ -390,85 +308,71 @@ $(".pageSettings").on("click", ".section.themes .theme.button", (e) => {
}
});
-$(
- ".pageSettings .section.themes .tabContainer .customTheme input[type=color]",
-).on("input", (e) => {
- const $colorVar = $(e.currentTarget).attr("id") as string;
- const $pickedColor = $(e.currentTarget).val() as string;
+function handleColorInput(props: {
+ convertColor: boolean;
+}): (e: Event) => void {
+ return (e) => {
+ const target = e.target as HTMLInputElement;
+ const key = target
+ ?.closest(".colorPicker")
+ ?.getAttribute("data-key") as ColorName;
+
+ let color: string;
+
+ if (props.convertColor) {
+ try {
+ color = Colors.convertStringToHex(target.value);
+ } catch {
+ Notifications.add("Invalid color format", 0);
+ color = "#000000";
+ }
+ } else {
+ color = target.value;
+ }
- updateColors($(".colorPicker #" + $colorVar).parent(), $pickedColor, true);
-});
+ updateColorPicker(key, color);
+ updateThemeColor(key, color);
+ };
+}
-$(
- ".pageSettings .section.themes .tabContainer .customTheme input[type=color]",
-).on("change", (e) => {
- const $colorVar = $(e.currentTarget).attr("id") as string;
- const $pickedColor = $(e.currentTarget).val() as string;
+const convertColorAndUpdate = handleColorInput({ convertColor: true });
+/*const pickerInputDebounced = debounce(
+ 100,
+ handleColorInput({ convertColor: false }),
+);
+*/
+const pickerInputDebounced = handleColorInput({ convertColor: false });
- updateColors($(".colorPicker #" + $colorVar).parent(), $pickedColor);
-});
+qsa(
+ ".pageSettings .section.themes .tabContainer .customTheme input[type=color]",
+)
+ .on("input", pickerInputDebounced)
+ .on("change", convertColorAndUpdate);
-$(".pageSettings .section.themes .tabContainer .customTheme input.input")
+qsa(".pageSettings .section.themes .tabContainer .customTheme input.input")
.on("blur", (e) => {
- if (e.target.id === "name") return;
- const $colorVar = $(e.currentTarget).attr("id") as string;
- const $pickedColor = $(e.currentTarget).val() as string;
-
- updateColors($(".colorPicker #" + $colorVar).parent(), $pickedColor);
+ if ((e.target as HTMLInputElement).id === "name") return;
+ convertColorAndUpdate(e);
})
.on("keypress", function (e) {
- if (e.target.id === "name") return;
+ const target = e.target as HTMLInputElement;
+ if (target.id === "name") return;
if (e.code === "Enter") {
- $(this).attr("disabled", "disabled");
- const $colorVar = $(e.currentTarget).attr("id") as string;
- const $pickedColor = $(e.currentTarget).val() as string;
-
- updateColors($(".colorPicker #" + $colorVar).parent(), $pickedColor);
- $(this).removeAttr("disabled");
+ target.setAttribute("disabled", "disabled");
+ convertColorAndUpdate(e);
+ target.removeAttribute("disabled");
}
});
$(".pageSettings #loadCustomColorsFromPreset").on("click", async () => {
- // previewTheme(Config.theme);
- // $("#currentTheme").attr("href", `themes/${Config.theme}.css`);
- await ThemeController.loadStyle(Config.theme);
-
- ThemeController.colorVars.forEach((e) => {
- document.documentElement.style.setProperty(e, "");
- });
+ ThemeController.applyPreset(Config.theme);
+ const themeColors = getTheme();
- // setTimeout(async () => {
- ChartController.updateAllChartColors();
-
- const themeColors = await ThemeColors.getAll();
-
- ThemeController.colorVars.forEach((colorName) => {
- let color;
- if (colorName === "--bg-color") {
- color = themeColors.bg;
- } else if (colorName === "--main-color") {
- color = themeColors.main;
- } else if (colorName === "--sub-color") {
- color = themeColors.sub;
- } else if (colorName === "--sub-alt-color") {
- color = themeColors.subAlt;
- } else if (colorName === "--caret-color") {
- color = themeColors.caret;
- } else if (colorName === "--text-color") {
- color = themeColors.text;
- } else if (colorName === "--error-color") {
- color = themeColors.error;
- } else if (colorName === "--error-extra-color") {
- color = themeColors.errorExtra;
- } else if (colorName === "--colorful-error-color") {
- color = themeColors.colorfulError;
- } else if (colorName === "--colorful-error-extra-color") {
- color = themeColors.colorfulErrorExtra;
- }
-
- updateColors($(".colorPicker #" + colorName).parent(), color as string);
- });
- // }, 250);
+ Misc.typedKeys(themeColors)
+ .filter((key) => key !== "hasCss" && key !== "name")
+ .forEach((key) =>
+ updateColorPicker(key, Colors.convertStringToHex(themeColors[key])),
+ );
});
$(".pageSettings #saveCustomThemeButton").on("click", async () => {
diff --git a/frontend/src/ts/elements/theme-colors.ts b/frontend/src/ts/elements/theme-colors.ts
deleted file mode 100644
index d95dc042c912..000000000000
--- a/frontend/src/ts/elements/theme-colors.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import {
- ColorName,
- getThemeColors,
- setThemeColors,
- ThemeColors,
-} from "../signals/theme";
-
-export async function get(color: ColorName): Promise {
- return getThemeColors()[color];
-}
-
-export async function getAll(): Promise {
- return getThemeColors();
-}
-
-export function update(): void {
- const st = getComputedStyle(document.body);
-
- setThemeColors({
- bg: st.getPropertyValue("--bg-color").replace(" ", ""),
- main: st.getPropertyValue("--main-color").replace(" ", ""),
- caret: st.getPropertyValue("--caret-color").replace(" ", ""),
- sub: st.getPropertyValue("--sub-color").replace(" ", ""),
- subAlt: st.getPropertyValue("--sub-alt-color").replace(" ", ""),
- text: st.getPropertyValue("--text-color").replace(" ", ""),
- error: st.getPropertyValue("--error-color").replace(" ", ""),
- errorExtra: st.getPropertyValue("--error-extra-color").replace(" ", ""),
- colorfulError: st
- .getPropertyValue("--colorful-error-color")
- .replace(" ", ""),
- colorfulErrorExtra: st
- .getPropertyValue("--colorful-error-extra-color")
- .replace(" ", ""),
- });
-}
diff --git a/frontend/src/ts/elements/xp-bar.ts b/frontend/src/ts/elements/xp-bar.ts
index 453ff8fc068f..1fcfd41950cc 100644
--- a/frontend/src/ts/elements/xp-bar.ts
+++ b/frontend/src/ts/elements/xp-bar.ts
@@ -1,9 +1,9 @@
import * as Misc from "../utils/misc";
import * as Levels from "../utils/levels";
-import { getAll } from "./theme-colors";
import { XpBreakdown } from "@monkeytype/schemas/results";
import { isSafeNumber } from "@monkeytype/util/numbers";
import { animate } from "animejs";
+import { getTheme } from "../signals/theme";
let breakdownVisible = false;
let skip = false;
@@ -409,7 +409,7 @@ async function animateXpBar(
}
async function flashLevel(): Promise {
- const themecolors = await getAll();
+ const themecolors = getTheme();
levelEl.textContent = `${parseInt(levelEl.textContent ?? "0") + 1}`;
diff --git a/frontend/src/ts/hooks/effects.ts b/frontend/src/ts/hooks/effects.ts
new file mode 100644
index 000000000000..dfee2e45e72e
--- /dev/null
+++ b/frontend/src/ts/hooks/effects.ts
@@ -0,0 +1,38 @@
+import { createEffect, on } from "solid-js";
+import { debounce } from "throttle-debounce";
+
+type Accessor = () => T;
+
+type OnValue = T extends readonly Accessor[]
+ ? //@ts-expect-error huh?
+ { [K in keyof T]: ReturnType }
+ : T extends Accessor
+ ? ReturnType
+ : never;
+
+export function createEffectOn<
+ T extends Accessor | readonly Accessor[],
+ U = void,
+>(
+ deps: T,
+ fn: (value: OnValue, prev: OnValue | undefined, prevValue?: U) => U,
+ options: { defer?: boolean } = {},
+): void {
+ //@ts-expect-error huh?
+ createEffect(on(deps as unknown, fn as unknown, options));
+}
+
+export function createDebouncedEffectOn<
+ T extends Accessor | readonly Accessor[],
+ U = void,
+>(
+ delay: number,
+ deps: T,
+ fn: (value: OnValue, prev: OnValue | undefined, prevValue?: U) => U,
+ options: { defer?: boolean } = {},
+ debounceOptions: { atBegin?: boolean } = {},
+): void {
+ const debouncedFn = debounce(delay, fn, debounceOptions);
+ //@ts-expect-error huh?
+ createEffect(on(deps as unknown, debouncedFn as unknown, options));
+}
diff --git a/frontend/src/ts/modals/mini-result-chart.ts b/frontend/src/ts/modals/mini-result-chart.ts
index 81388b1cc309..14a090d215d9 100644
--- a/frontend/src/ts/modals/mini-result-chart.ts
+++ b/frontend/src/ts/modals/mini-result-chart.ts
@@ -38,8 +38,6 @@ function updateData(data: ChartData): void {
ChartController.miniResult.getScale("wpm").min = 0;
ChartController.miniResult.getScale("burst").min = 0;
}
-
- void ChartController.miniResult.updateColors();
}
export function show(data: ChartData): void {
diff --git a/frontend/src/ts/modals/share-custom-theme.ts b/frontend/src/ts/modals/share-custom-theme.ts
index e50185823474..14133066e408 100644
--- a/frontend/src/ts/modals/share-custom-theme.ts
+++ b/frontend/src/ts/modals/share-custom-theme.ts
@@ -2,7 +2,7 @@ import * as ThemeController from "../controllers/theme-controller";
import Config from "../config";
import * as Notifications from "../elements/notifications";
import AnimatedModal from "../utils/animated-modal";
-import { qsr } from "../utils/dom";
+import { getTheme } from "../signals/theme";
type State = {
includeBackground: boolean;
@@ -28,12 +28,7 @@ async function generateUrl(): Promise {
s?: string; //size
f?: object; //filter
} = {
- c: ThemeController.colorVars.map(
- (color) =>
- qsr(
- `.pageSettings .tabContent.customTheme #${color}[type='color']`,
- ).getValue() as string,
- ),
+ c: ThemeController.convertThemeToCustomColors(getTheme()),
};
if (state.includeBackground) {
diff --git a/frontend/src/ts/modals/simple-modals.ts b/frontend/src/ts/modals/simple-modals.ts
index 8c9f5e6bc616..b9742fda1503 100644
--- a/frontend/src/ts/modals/simple-modals.ts
+++ b/frontend/src/ts/modals/simple-modals.ts
@@ -27,7 +27,6 @@ import {
} from "../utils/misc";
import * as CustomTextState from "../states/custom-text-name";
import * as ThemeController from "../controllers/theme-controller";
-import { CustomThemeColors } from "@monkeytype/schemas/configs";
import * as AccountSettings from "../pages/account-settings";
import {
ExecReturn,
@@ -46,8 +45,8 @@ import { goToPage } from "../pages/leaderboards";
import FileStorage from "../utils/file-storage";
import { z } from "zod";
import { remoteValidation } from "../utils/remote-validation";
-import { qsr } from "../utils/dom";
import { list, PopupKey, showPopup } from "./simple-modals-base";
+import { getTheme } from "../signals/theme";
export { list, showPopup };
export type { PopupKey };
@@ -1091,22 +1090,14 @@ list.updateCustomTheme = new SimpleModal({
};
}
- let newColors: string[] = [];
- if (updateColors === "true") {
- for (const color of ThemeController.colorVars) {
- newColors.push(
- qsr(
- `.pageSettings .tabContent.customTheme #${color}[type='color']`,
- ).getValue() as string,
- );
- }
- } else {
- newColors = customTheme.colors;
- }
+ let newColors =
+ updateColors === "true"
+ ? ThemeController.convertThemeToCustomColors(getTheme())
+ : customTheme.colors;
const newTheme = {
name: name.replaceAll(" ", "_"),
- colors: newColors as CustomThemeColors,
+ colors: newColors,
};
const validation = await DB.editCustomTheme(customTheme._id, newTheme);
if (!validation) {
@@ -1115,7 +1106,7 @@ list.updateCustomTheme = new SimpleModal({
message: "Failed to update custom theme",
};
}
- setConfig("customThemeColors", newColors as CustomThemeColors);
+ setConfig("customThemeColors", newColors);
void ThemePicker.fillCustomButtons();
return {
diff --git a/frontend/src/ts/pages/account.ts b/frontend/src/ts/pages/account.ts
index 10bd0ee800fe..87ad92d7d22a 100644
--- a/frontend/src/ts/pages/account.ts
+++ b/frontend/src/ts/pages/account.ts
@@ -184,15 +184,6 @@ function buildResultRow(result: SnapshotResult): HTMLTableRowElement {
return element;
}
-async function updateChartColors(): Promise {
- await ChartController.accountHistory.updateColors();
- await Misc.sleep(0);
- await ChartController.accountActivity.updateColors();
- await Misc.sleep(0);
- await ChartController.accountHistogram.updateColors();
- await Misc.sleep(0);
-}
-
function reset(): void {
historyTable.setData([]);
historyTable.updateBody();
@@ -1271,7 +1262,6 @@ export const page = new Page({
});
await update().then(() => {
- void updateChartColors();
qs(".pageAccount .content .accountVerificatinNotice")?.remove();
if (getAuthenticatedUser()?.emailVerified === false) {
qs(".pageAccount .content")?.prependHtml(
diff --git a/frontend/src/ts/pages/settings.ts b/frontend/src/ts/pages/settings.ts
index 9fab875178a8..e28ce4e2a464 100644
--- a/frontend/src/ts/pages/settings.ts
+++ b/frontend/src/ts/pages/settings.ts
@@ -30,7 +30,7 @@ import { getActiveFunboxNames } from "../test/funbox/list";
import { SnapshotPreset } from "../constants/default-snapshot";
import { LayoutsList } from "../constants/layouts";
import { DataArrayPartial, Optgroup, OptionOptional } from "slim-select/store";
-import { Theme, ThemesList } from "../constants/themes";
+import { ThemesList, ThemeWithName } from "../constants/themes";
import { areSortedArraysEqual, areUnsortedArraysEqual } from "../utils/arrays";
import { LayoutName } from "@monkeytype/schemas/layouts";
import { LanguageGroupNames, LanguageGroups } from "../constants/languages";
@@ -614,7 +614,7 @@ export async function update(
setActiveFunboxButton();
await Misc.sleep(0);
ThemePicker.updateActiveTab();
- ThemePicker.setCustomInputs(true);
+ ThemePicker.setCustomInputs();
await CustomBackgroundPicker.updateUI();
await updateFilterSectionVisibility();
await CustomFontPicker.updateUI();
@@ -927,7 +927,7 @@ function getLayoutfluidDropdownData(): DataArrayPartial {
}
function getThemeDropdownData(
- isActive: (theme: Theme) => boolean,
+ isActive: (theme: ThemeWithName) => boolean,
): DataArrayPartial {
return ThemesList.map((theme) => ({
value: theme.name,
diff --git a/frontend/src/ts/signals/core.ts b/frontend/src/ts/signals/core.ts
index ff04891be873..8204b30eba81 100644
--- a/frontend/src/ts/signals/core.ts
+++ b/frontend/src/ts/signals/core.ts
@@ -11,10 +11,14 @@ export const [getVersion, setVersion] = createSignal<{
});
export const [getThemeIndicator, setThemeIndicator] = createSignal<{
+ /**
+ * human readable display name, this is not the ThemeName.
+ * e.g. the display is `serika dark` for the ThemeName `serika_dark`
+ */
text: string;
isFavorite: boolean;
}>({
- text: "unknown",
+ text: "serika dark",
isFavorite: false,
});
diff --git a/frontend/src/ts/signals/loader-bar.ts b/frontend/src/ts/signals/loader-bar.ts
index cbefe5071230..c82bade1362e 100644
--- a/frontend/src/ts/signals/loader-bar.ts
+++ b/frontend/src/ts/signals/loader-bar.ts
@@ -8,20 +8,10 @@ type LoaderSignal = null | {
const [getLoaderBarSignal, set] = createSignal(null);
export function showLoaderBar(instant = false): void {
- const current = getLoaderBarSignal();
- // Don't update if already showing (unless instant flag changed)
- if (current?.visible && current.instant === instant) {
- return;
- }
set({ visible: true, instant });
}
export function hideLoaderBar(): void {
- const current = getLoaderBarSignal();
- // Don't update if already hidden
- if (current?.visible === false) {
- return;
- }
set({ visible: false });
}
diff --git a/frontend/src/ts/signals/theme.ts b/frontend/src/ts/signals/theme.ts
index ab8f58adb607..0e1f5e75b743 100644
--- a/frontend/src/ts/signals/theme.ts
+++ b/frontend/src/ts/signals/theme.ts
@@ -1,6 +1,10 @@
import { createSignal } from "solid-js";
+import { ColorName, Theme } from "../constants/themes";
+import { ThemeName } from "@monkeytype/schemas/configs";
-const defaultTheme: ThemeColors = {
+export type ThemeIdentifier = ThemeName | "custom";
+const defaultTheme: Theme & { name: ThemeIdentifier } = {
+ name: "serika_dark",
bg: "#323437",
main: "#e2b714",
caret: "#e2b714",
@@ -13,19 +17,13 @@ const defaultTheme: ThemeColors = {
colorfulErrorExtra: "#7e2a33",
};
-export type ThemeColors = {
- bg: string;
- main: string;
- caret: string;
- sub: string;
- subAlt: string;
- text: string;
- error: string;
- errorExtra: string;
- colorfulError: string;
- colorfulErrorExtra: string;
-};
-export type ColorName = keyof ThemeColors;
+export const [getTheme, setTheme] = createSignal<
+ Theme & { name: ThemeIdentifier }
+>(defaultTheme);
-export const [getThemeColors, setThemeColors] =
- createSignal(defaultTheme);
+export function updateThemeColor(key: ColorName, color: string): void {
+ setTheme((prev) => ({
+ ...prev,
+ [key]: color,
+ }));
+}
diff --git a/frontend/src/ts/test/result.ts b/frontend/src/ts/test/result.ts
index 451887f7d296..f87a752c2cca 100644
--- a/frontend/src/ts/test/result.ts
+++ b/frontend/src/ts/test/result.ts
@@ -8,7 +8,6 @@ import * as DB from "../db";
import { showLoaderBar, hideLoaderBar } from "../signals/loader-bar";
import * as Notifications from "../elements/notifications";
-import * as ThemeColors from "../elements/theme-colors";
import { isAuthenticated } from "../firebase";
import * as quoteRateModal from "../modals/quote-rate";
import * as GlarsesMode from "../states/glarses-mode";
@@ -49,6 +48,7 @@ import * as TestState from "./test-state";
import { blurInputElement } from "../input/input-element";
import * as ConnectionState from "../states/connection";
import { currentQuote } from "./test-words";
+import { getTheme } from "../signals/theme";
let result: CompletedEvent;
let minChartVal: number;
@@ -138,7 +138,7 @@ async function updateChartData(): Promise {
chartData2.pop();
}
- const subcolor = await ThemeColors.get("sub");
+ const subcolor = getTheme().sub;
if (Config.funbox.length > 0) {
let content = "";
@@ -282,7 +282,7 @@ function applyFakeChartData(): void {
}
export async function updateChartPBLine(): Promise {
- const themecolors = await ThemeColors.getAll();
+ const themecolors = getTheme();
const localPb = await DB.getLocalPB(
result.mode,
result.mode2,
@@ -725,7 +725,7 @@ async function updateTags(dontSave: boolean): Promise {
);
// console.log("new pb for tag " + tag.display);
} else {
- const themecolors = await ThemeColors.getAll();
+ const themecolors = getTheme();
resultAnnotation.push({
display: true,
type: "line",
@@ -1000,7 +1000,6 @@ export async function update(
((ChartController.result.options as PluginChartOptions<"line" | "scatter">)
.plugins.annotation.annotations as AnnotationOptions<"line">[]) =
resultAnnotation;
- void ChartController.result.updateColors();
ChartController.result.resize();
if (
@@ -1333,7 +1332,6 @@ $(".pageTest #result .chart .chartLegend button").on("click", async (event) => {
updateResultChartDataVisibility();
updateMinMaxChartValues();
applyMinMaxChartValues();
- void ChartController.result.updateColors();
ChartController.result.update();
});
@@ -1404,7 +1402,6 @@ ConfigEvent.subscribe(async ({ key }) => {
((ChartController.result.options as PluginChartOptions<"line" | "scatter">)
.plugins.annotation.annotations as AnnotationOptions<"line">[]) =
resultAnnotation;
- void ChartController.result.updateColors();
ChartController.result.resize();
}
});
diff --git a/frontend/src/ts/test/test-screenshot.ts b/frontend/src/ts/test/test-screenshot.ts
index eec120b2a2eb..4c660c1ea6c0 100644
--- a/frontend/src/ts/test/test-screenshot.ts
+++ b/frontend/src/ts/test/test-screenshot.ts
@@ -4,13 +4,13 @@ import * as Misc from "../utils/misc";
import { isAuthenticated } from "../firebase";
import { getActiveFunboxesWithFunction } from "./funbox/list";
import * as DB from "../db";
-import * as ThemeColors from "../elements/theme-colors";
import { format } from "date-fns/format";
import { getActivePage } from "../signals/core";
import { getHtmlByUserFlags } from "../controllers/user-flag-controller";
import * as Notifications from "../elements/notifications";
import { convertRemToPixels } from "../utils/numbers";
import * as TestState from "./test-state";
+import { getTheme } from "../signals/theme";
let revealReplay = false;
let revertCookie = false;
@@ -135,7 +135,7 @@ async function generateCanvas(): Promise {
// Target the HTML root to include .customBackground
const fullCanvas = await domToCanvas(root, {
- backgroundColor: await ThemeColors.get("bg"),
+ backgroundColor: getTheme().bg,
// Sharp output
scale: window.devicePixelRatio ?? 1,
style: {
diff --git a/frontend/src/ts/test/test-ui.ts b/frontend/src/ts/test/test-ui.ts
index efbe30db3784..9087193af650 100644
--- a/frontend/src/ts/test/test-ui.ts
+++ b/frontend/src/ts/test/test-ui.ts
@@ -1,5 +1,4 @@
import * as Notifications from "../elements/notifications";
-import * as ThemeColors from "../elements/theme-colors";
import Config, { setConfig } from "../config";
import * as TestWords from "./test-words";
import * as TestInput from "./test-input";
@@ -58,6 +57,7 @@ import * as ModesNotice from "../elements/modes-notice";
import * as Last10Average from "../elements/last-10-average";
import * as MemoryFunboxTimer from "./funbox/memory-funbox-timer";
import { qsr } from "../utils/dom";
+import { getTheme } from "../signals/theme";
export const updateHintsPositionDebounced = Misc.debounceUntilResolved(
updateHintsPosition,
@@ -1421,7 +1421,7 @@ export async function applyBurstHeatmap(): Promise {
burstlist[index] = Math.round(typingSpeedUnit.fromWpm(burst));
});
- const themeColors = await ThemeColors.getAll();
+ const themeColors = getTheme();
let colors = [
themeColors.colorfulError,
diff --git a/frontend/src/ts/utils/colors.ts b/frontend/src/ts/utils/colors.ts
index 2dc62862085e..2a5d0b1ef294 100644
--- a/frontend/src/ts/utils/colors.ts
+++ b/frontend/src/ts/utils/colors.ts
@@ -109,7 +109,7 @@ export function hexToRgb(hex: string):
* @param a The alpha component (0-1), optional.
* @returns The hexadecimal color string (e.g., "#ff0000" for red or "#ff0000ff" for red with full opacity).
*/
-function rgbToHex(r: number, g: number, b: number, a?: number): string {
+export function rgbToHex(r: number, g: number, b: number, a?: number): string {
const hexR = Math.round(r).toString(16).padStart(2, "0");
const hexG = Math.round(g).toString(16).padStart(2, "0");
const hexB = Math.round(b).toString(16).padStart(2, "0");
@@ -238,26 +238,78 @@ export function isColorDark(hex: string): boolean {
return hsl.lgt < 50;
}
+export function hslToRgb(
+ h: number,
+ s: number,
+ l: number,
+): { r: number; g: number; b: number } {
+ const c = (1 - Math.abs(2 * l - 1)) * s;
+ const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
+ const m = l - c / 2;
+
+ let r = 0,
+ g = 0,
+ b = 0;
+
+ if (h < 60) [r, g, b] = [c, x, 0];
+ else if (h < 120) [r, g, b] = [x, c, 0];
+ else if (h < 180) [r, g, b] = [0, c, x];
+ else if (h < 240) [r, g, b] = [0, x, c];
+ else if (h < 300) [r, g, b] = [x, 0, c];
+ else [r, g, b] = [c, 0, x];
+
+ return {
+ r: Math.round((r + m) * 255),
+ g: Math.round((g + m) * 255),
+ b: Math.round((b + m) * 255),
+ };
+}
+
/**
- * Converts an RGB string (e.g., "rgb(255, 0, 0)") to a hexadecimal color string.
- * @param rgb The RGB string.
- * @returns The equivalent hexadecimal color string.
+ * some system color pickers return rgb or hsl values. We need to convert them to hex before storing
+ * @param color as hex, hsl or rgb
+ * @returns hex color
+ * @throws if the input color is not valid
*/
-export function rgbStringtoHex(rgb: string): string | undefined {
- const match: RegExpMatchArray | null = rgb.match(
- /^rgb\((\d+), \s*(\d+), \s*(\d+)\)$/,
- );
- if (match === null) return;
- if (match.length < 3) return;
- function hexCode(i: string): string {
- // Take the last 2 characters and convert
- // them to Hexadecimal.
- return ("0" + parseInt(i).toString(16)).slice(-2);
+export function convertStringToHex(color: string): string {
+ const input = color.trim().toLocaleLowerCase();
+ if (/^#[0-9a-f]{6}$/i.test(input)) {
+ return input;
+ }
+
+ if (/^#[0-9a-f]{3}$/i.test(input)) {
+ // Expand #rgb → #rrggbb
+ return (
+ "#" + input[1] + input[1] + input[2] + input[2] + input[3] + input[3]
+ );
+ }
+
+ const rgbMatch =
+ input.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/) ??
+ input.match(/^(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})$/);
+
+ if (rgbMatch !== null) {
+ const clamp = (n: string): number =>
+ Math.max(0, Math.min(255, Number.parseFloat(n)));
+
+ const r = clamp(rgbMatch[1] as string);
+ const g = clamp(rgbMatch[2] as string);
+ const b = clamp(rgbMatch[3] as string);
+ return rgbToHex(r, g, b);
+ }
+
+ const hslMatch =
+ input.match(/^hsl\(\s*(\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*\)$/) ??
+ input.match(/^(\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%$/);
+
+ if (hslMatch) {
+ const clamp = (n: string): number =>
+ Math.max(0, Math.min(255, Number.parseFloat(n)));
+ const h = Number.parseFloat(hslMatch[1] as string) % 360;
+ const s = clamp(hslMatch[2] as string) / 100;
+ const l = clamp(hslMatch[3] as string) / 100;
+ const { r, g, b } = hslToRgb(h, s, l);
+ return rgbToHex(r, g, b);
}
- return (
- "#" +
- hexCode(match[1] as string) +
- hexCode(match[2] as string) +
- hexCode(match[3] as string)
- );
+ throw new Error(`Invalid color format: ${color}`);
}
diff --git a/frontend/static/themes/8008.css b/frontend/static/themes/8008.css
deleted file mode 100644
index fd4aca04d459..000000000000
--- a/frontend/static/themes/8008.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #333a45;
- --main-color: #f44c7f;
- --caret-color: #f44c7f;
- --sub-color: #939eae;
- --sub-alt-color: #2e343d;
- --text-color: #e9ecf0;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #c5da33;
- --colorful-error-extra-color: #849224;
-}
diff --git a/frontend/static/themes/80s_after_dark.css b/frontend/static/themes/80s_after_dark.css
deleted file mode 100644
index 77f05fac8b69..000000000000
--- a/frontend/static/themes/80s_after_dark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1b1d36;
- --main-color: #fca6d1;
- --caret-color: #99d6ea;
- --sub-color: #99d6ea;
- --sub-alt-color: #17182c;
- --text-color: #e1e7ec;
- --error-color: #fffb85;
- --error-extra-color: #fffb85;
- --colorful-error-color: #fffb85;
- --colorful-error-extra-color: #fffb85;
-}
diff --git a/frontend/static/themes/9009.css b/frontend/static/themes/9009.css
index 436b004b331a..f8162b7ffc41 100644
--- a/frontend/static/themes/9009.css
+++ b/frontend/static/themes/9009.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #eeebe2;
- --main-color: #080909;
- --caret-color: #7fa480;
- --sub-color: #99947f;
- --sub-alt-color: #d3cfc1;
- --text-color: #080909;
- --error-color: #c87e74;
- --error-extra-color: #a56961;
- --colorful-error-color: #c87e74;
- --colorful-error-extra-color: #a56961;
-}
-
.word letter.incorrect {
color: var(--error-color);
}
diff --git a/frontend/static/themes/aether.css b/frontend/static/themes/aether.css
index efec89292264..d1e05f8ed290 100644
--- a/frontend/static/themes/aether.css
+++ b/frontend/static/themes/aether.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #101820;
- --main-color: #eedaea;
- --caret-color: #eedaea;
- --sub-color: #cf6bdd;
- --sub-alt-color: #292136;
- --text-color: #eedaea;
- --error-color: #ff5253;
- --error-extra-color: #e3002b;
- --colorful-error-color: #ff5253;
- --colorful-error-extra-color: #e3002b;
-}
-
nav > .textButton:nth-child(1) {
color: #e4002b;
}
diff --git a/frontend/static/themes/alduin.css b/frontend/static/themes/alduin.css
deleted file mode 100644
index 6bda332f4c94..000000000000
--- a/frontend/static/themes/alduin.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1c1c1c;
- --main-color: #dfd7af;
- --caret-color: #e3e3e3;
- --sub-color: #444444;
- --sub-alt-color: #242424;
- --text-color: #f5f3ed;
- --error-color: #af5f5f;
- --error-extra-color: #4d2113;
- --colorful-error-color: #af5f5f;
- --colorful-error-extra-color: #4d2113;
-}
diff --git a/frontend/static/themes/alpine.css b/frontend/static/themes/alpine.css
deleted file mode 100644
index 63197adbf77d..000000000000
--- a/frontend/static/themes/alpine.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #6c687f; /*Background*/
- --main-color: #ffffff; /*Color after typing, monkeytype logo, WPM Number acc number etc*/
- --caret-color: #585568; /*Cursor Color*/
- --sub-color: #9994b8;
- --sub-alt-color: #77738c; /*WPM text color of scrollbar and general color, before typed color*/
- --text-color: #ffffff; /*Color of text after hovering over it*/
- --error-color: #e32b2b;
- --error-extra-color: #a62626;
- --colorful-error-color: #e32b2b;
- --colorful-error-extra-color: #a62626;
-}
diff --git a/frontend/static/themes/anti_hero.css b/frontend/static/themes/anti_hero.css
deleted file mode 100644
index 6924dfa4a09e..000000000000
--- a/frontend/static/themes/anti_hero.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #00002e;
- --main-color: #ffadad;
- --caret-color: #ffffff;
- --sub-color: #ff3d8b;
- --sub-alt-color: #060548;
- --text-color: #f1deef;
- --error-color: #8fecff;
- --error-extra-color: #558cab;
- --colorful-error-color: #8fecff;
- --colorful-error-extra-color: #558cab;
-}
diff --git a/frontend/static/themes/arch.css b/frontend/static/themes/arch.css
deleted file mode 100644
index ad51ec5db202..000000000000
--- a/frontend/static/themes/arch.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0c0d11;
- --main-color: #7ebab5;
- --caret-color: #7ebab5;
- --sub-color: #454864;
- --sub-alt-color: #171a25;
- --text-color: #f6f5f5;
- --error-color: #ff4754;
- --error-extra-color: #b02a33;
- --colorful-error-color: #ff4754;
- --colorful-error-extra-color: #b02a33;
-}
diff --git a/frontend/static/themes/aurora.css b/frontend/static/themes/aurora.css
index 8a1cefa54046..2e22ecfa0e8e 100644
--- a/frontend/static/themes/aurora.css
+++ b/frontend/static/themes/aurora.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #011926;
- --main-color: #00e980;
- --caret-color: #00e980;
- --sub-color: #245c69;
- --sub-alt-color: #000c13;
- --text-color: #fff;
- --error-color: #b94da1;
- --error-extra-color: #9b3a76;
- --colorful-error-color: #b94da1;
- --colorful-error-extra-color: #9b3a76;
-}
-
@keyframes aurora {
0% {
color: #009fb4;
diff --git a/frontend/static/themes/beach.css b/frontend/static/themes/beach.css
index a742478206a1..8ed2f112d56f 100644
--- a/frontend/static/themes/beach.css
+++ b/frontend/static/themes/beach.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #ffeead;
- --main-color: #96ceb4;
- --caret-color: #ffcc5c;
- --sub-color: #ffcc5c;
- --sub-alt-color: #f7dc8f;
- --text-color: #5b7869;
- --error-color: #ff6f69;
- --error-extra-color: #ff6f69;
- --colorful-error-color: #ff6f69;
- --colorful-error-extra-color: #ff6f69;
-}
-
nav > .textButton:nth-child(1),
nav > .textButton:nth-child(2),
nav > .textButton:nth-child(3),
diff --git a/frontend/static/themes/bento.css b/frontend/static/themes/bento.css
deleted file mode 100644
index 0d4e51bef9b1..000000000000
--- a/frontend/static/themes/bento.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2d394d;
- --main-color: #ff7a90;
- --caret-color: #ff7a90;
- --sub-color: #4a768d;
- --sub-alt-color: #263041;
- --text-color: #fffaf8;
- --error-color: #ee2a3a;
- --error-extra-color: #f04040;
- --colorful-error-color: #fc2032;
- --colorful-error-extra-color: #f04040;
-}
diff --git a/frontend/static/themes/bingsu.css b/frontend/static/themes/bingsu.css
index 9cbd6d133546..fa16bdd1ef2b 100644
--- a/frontend/static/themes/bingsu.css
+++ b/frontend/static/themes/bingsu.css
@@ -1,17 +1,3 @@
-:root {
- /* --bg-color: linear-gradient(215deg, #cbb8ba, #706768); */
- --bg-color: #b8a7aa;
- --main-color: #83616e;
- --caret-color: #ebe6ea;
- --sub-color: #48373d;
- --sub-alt-color: #ab989e;
- --text-color: #ebe6ea;
- --error-color: #921341;
- --error-extra-color: #640b2c;
- --colorful-error-color: #921341;
- --colorful-error-extra-color: #640b2c;
-}
-
/* .word.error{
border-bottom: double 4px var(--error-color);
} */
diff --git a/frontend/static/themes/bliss.css b/frontend/static/themes/bliss.css
deleted file mode 100644
index f6ea01b99ce7..000000000000
--- a/frontend/static/themes/bliss.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #262727;
- --main-color: #f0d3c9;
- --caret-color: #f0d3c9;
- --sub-color: #665957;
- --sub-alt-color: #343231;
- --text-color: #fff;
- --error-color: #bd4141;
- --error-extra-color: #883434;
- --colorful-error-color: #bd4141;
- --colorful-error-extra-color: #883434;
-}
diff --git a/frontend/static/themes/blue_dolphin.css b/frontend/static/themes/blue_dolphin.css
deleted file mode 100644
index 6328341ba60c..000000000000
--- a/frontend/static/themes/blue_dolphin.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #003950;
- --main-color: #ffcefb;
- --caret-color: #00bcd4;
- --sub-color: #00e4ff;
- --sub-alt-color: #014961;
- --text-color: #82eaff;
- --error-color: #ffbde6;
- --error-extra-color: #ff8188;
- --colorful-error-color: #d1a5fd;
- --colorful-error-extra-color: #ff8188;
-}
diff --git a/frontend/static/themes/blueberry_dark.css b/frontend/static/themes/blueberry_dark.css
index 346702c71f6a..4bb07d9f6a91 100644
--- a/frontend/static/themes/blueberry_dark.css
+++ b/frontend/static/themes/blueberry_dark.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #212b42;
- --main-color: #add7ff;
- --caret-color: #962f7e;
- --sub-color: #5c7da5;
- --sub-alt-color: #1b2334;
- --text-color: #91b4d5;
- --error-color: #df4576;
- --error-extra-color: #d996ac;
- --colorful-error-color: #df4576;
- --colorful-error-extra-color: #d996ac;
-}
-
header #logo .bottom {
color: #962f7e;
}
diff --git a/frontend/static/themes/blueberry_light.css b/frontend/static/themes/blueberry_light.css
index 5b5e67b937da..c713fe897986 100644
--- a/frontend/static/themes/blueberry_light.css
+++ b/frontend/static/themes/blueberry_light.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #dae0f5;
- --main-color: #506477;
- --caret-color: #df4576;
- --sub-color: #92a4be;
- --sub-alt-color: #c1c7df;
- --text-color: #678198;
- --error-color: #df4576;
- --error-extra-color: #d996ac;
- --colorful-error-color: #df4576;
- --colorful-error-extra-color: #d996ac;
-}
-
header #logo .bottom {
color: #df4576;
}
diff --git a/frontend/static/themes/botanical.css b/frontend/static/themes/botanical.css
deleted file mode 100644
index 0367232b1e4a..000000000000
--- a/frontend/static/themes/botanical.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #7b9c98;
- --main-color: #eaf1f3;
- --caret-color: #abc6c4;
- --sub-color: #495755;
- --sub-alt-color: #72908d;
- --text-color: #eaf1f3;
- --error-color: #f6c9b4;
- --error-extra-color: #f59a71;
- --colorful-error-color: #f6c9b4;
- --colorful-error-extra-color: #f59a71;
-}
diff --git a/frontend/static/themes/bouquet.css b/frontend/static/themes/bouquet.css
deleted file mode 100644
index e94eae80bf37..000000000000
--- a/frontend/static/themes/bouquet.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #173f35;
- --main-color: #eaa09c;
- --caret-color: #eaa09c;
- --sub-color: #408e7b;
- --sub-alt-color: #1f4e43;
- --text-color: #e9e0d2;
- --error-color: #d44729;
- --error-extra-color: #8f2f19;
- --colorful-error-color: #d44729;
- --colorful-error-extra-color: #8f2f19;
-}
diff --git a/frontend/static/themes/breeze.css b/frontend/static/themes/breeze.css
deleted file mode 100644
index 05b54f679975..000000000000
--- a/frontend/static/themes/breeze.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #e8d5c4;
- --main-color: #7d67a9;
- --caret-color: #7d67a9;
- --sub-color: #3a98b9;
- --sub-alt-color: #f6e6da;
- --text-color: #1b4c5e;
- --error-color: #7d67a9;
- --error-extra-color: #9f3e6d;
- --colorful-error-color: #f9f871;
- --colorful-error-extra-color: #67dfa1;
-}
diff --git a/frontend/static/themes/bushido.css b/frontend/static/themes/bushido.css
deleted file mode 100644
index 6f25cfb1dea7..000000000000
--- a/frontend/static/themes/bushido.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #242933;
- --main-color: #ec4c56;
- --caret-color: #ec4c56;
- --sub-color: #596172;
- --sub-alt-color: #1c222d;
- --text-color: #f6f0e9;
- --error-color: #ec4c56;
- --error-extra-color: #9b333a;
- --colorful-error-color: #ecdc4c;
- --colorful-error-extra-color: #bdb03d;
-}
diff --git a/frontend/static/themes/cafe.css b/frontend/static/themes/cafe.css
deleted file mode 100644
index 402443c17582..000000000000
--- a/frontend/static/themes/cafe.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ceb18d;
- --main-color: #14120f;
- --caret-color: #14120f;
- --sub-color: #d4d2d1;
- --sub-alt-color: #bba180;
- --text-color: #14120f;
- --error-color: #c82931;
- --error-extra-color: #ac1823;
- --colorful-error-color: #c82931;
- --colorful-error-extra-color: #ac1823;
-}
diff --git a/frontend/static/themes/camping.css b/frontend/static/themes/camping.css
index d00258c20583..fb3dbdd0eea8 100644
--- a/frontend/static/themes/camping.css
+++ b/frontend/static/themes/camping.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #faf1e4;
- --main-color: #618c56;
- --caret-color: #618c56;
- --sub-color: #c2b8aa;
- --sub-alt-color: #e7dccb;
- --text-color: #3c403b;
- --error-color: #ad4f4e;
- --error-extra-color: #7e3a39;
- --colorful-error-color: #ad4f4e;
- --colorful-error-extra-color: #7e3a39;
-}
-
header #logo .bottom {
color: #ad4f4e;
}
diff --git a/frontend/static/themes/carbon.css b/frontend/static/themes/carbon.css
deleted file mode 100644
index 73724e4070b7..000000000000
--- a/frontend/static/themes/carbon.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #313131;
- --main-color: #f66e0d;
- --caret-color: #f66e0d;
- --sub-color: #616161;
- --sub-alt-color: #2b2b2b;
- --text-color: #f5e6c8;
- --error-color: #e72d2d;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #e72d2d;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/catppuccin.css b/frontend/static/themes/catppuccin.css
index 9c9218f979a7..d3768ebccf6c 100644
--- a/frontend/static/themes/catppuccin.css
+++ b/frontend/static/themes/catppuccin.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #1e1e2e;
- --caret-color: #f2cdcd;
- --main-color: #cba6f7;
- --sub-color: #7f849c;
- --sub-alt-color: #181825;
- --text-color: #cdd6f4;
- --error-color: #f38ba8;
- --error-extra-color: #eba0ac;
- --colorful-error-color: #f38ba8;
- --colorful-error-extra-color: #eba0ac;
-}
-
nav .view-start {
color: #f38ba8;
}
diff --git a/frontend/static/themes/chaos_theory.css b/frontend/static/themes/chaos_theory.css
index b83c69612526..9f8eb838c9ef 100644
--- a/frontend/static/themes/chaos_theory.css
+++ b/frontend/static/themes/chaos_theory.css
@@ -1,17 +1,3 @@
-:root {
- --bg-color: #141221;
- --main-color: #fd77d7;
- --caret-color: #dde5ed;
- --text-color: #dde5ed;
- --error-color: #fd77d7;
- --sub-color: #676e8a;
- --sub-alt-color: #1e1d2f;
- --error-color: #ff5869;
- --error-extra-color: #b03c47;
- --colorful-error-color: #ff5869;
- --colorful-error-extra-color: #b03c47;
-}
-
header #logo .text {
transform: rotateY(180deg);
unicode-bidi: bidi-override;
diff --git a/frontend/static/themes/cheesecake.css b/frontend/static/themes/cheesecake.css
index b9f7c0669e51..661de9d00804 100644
--- a/frontend/static/themes/cheesecake.css
+++ b/frontend/static/themes/cheesecake.css
@@ -1,16 +1,4 @@
-:root {
- --bg-color: #fdf0d5;
- --main-color: #8e2949;
- --caret-color: #892948;
- --sub-color: #d91c81;
- --sub-alt-color: #f3e2bf;
- --text-color: #3a3335;
- --error-color: #5cf074;
- --error-extra-color: #5cf074;
- --colorful-error-color: #5cf074;
- --colorful-error-extra-color: #5cf074;
-}
-@keyframes rgb {
+@keyframes cheesecake {
0% {
fill: #ff0090;
}
@@ -44,5 +32,5 @@
}
header > div#logo > div.icon > svg path {
- animation: 10s linear infinite 0.1s rgb;
+ animation: 10s linear infinite 0.1s cheesecake;
}
diff --git a/frontend/static/themes/cherry_blossom.css b/frontend/static/themes/cherry_blossom.css
deleted file mode 100644
index 21beeee6ad8f..000000000000
--- a/frontend/static/themes/cherry_blossom.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #323437;
- --main-color: #d65ccc;
- --caret-color: #ffffff;
- --sub-color: #787d82;
- --sub-alt-color: #2d2f31;
- --text-color: #d1d0c5;
- --error-color: #ca4754;
- --error-extra-color: #d32738;
- --colorful-error-color: #ec182d;
- --colorful-error-extra-color: #6e0c16;
-}
diff --git a/frontend/static/themes/comfy.css b/frontend/static/themes/comfy.css
deleted file mode 100644
index 3018531555d6..000000000000
--- a/frontend/static/themes/comfy.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #4a5b6e;
- --main-color: #f8cdc6;
- --caret-color: #9ec1cc;
- --sub-color: #9ec1cc;
- --sub-alt-color: #425366;
- --text-color: #f5efee;
- --error-color: #c9465e;
- --error-extra-color: #c9465e;
- --colorful-error-color: #c9465e;
- --colorful-error-extra-color: #c9465e;
-}
diff --git a/frontend/static/themes/copper.css b/frontend/static/themes/copper.css
deleted file mode 100644
index 0ced080bd018..000000000000
--- a/frontend/static/themes/copper.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #442f29;
- --main-color: #b46a55;
- --caret-color: #c25c42;
- --sub-color: #7ebab5;
- --sub-alt-color: #50362e;
- --text-color: #e7e0de;
- --error-color: #a32424;
- --error-extra-color: #ec0909;
- --colorful-error-color: #a32424;
- --colorful-error-extra-color: #ec0909;
-}
diff --git a/frontend/static/themes/creamsicle.css b/frontend/static/themes/creamsicle.css
deleted file mode 100644
index 49aaad043af6..000000000000
--- a/frontend/static/themes/creamsicle.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ff9869;
- --main-color: #fcfcf8;
- --caret-color: #fcfcf8;
- --sub-color: #ff661f;
- --sub-alt-color: #fe8954;
- --text-color: #fcfcf8;
- --error-color: #6a0dad;
- --error-extra-color: #6a0dad;
- --colorful-error-color: #6a0dad;
- --colorful-error-extra-color: #6a0dad;
-}
diff --git a/frontend/static/themes/cy_red.css b/frontend/static/themes/cy_red.css
deleted file mode 100644
index 0b41818d3d8a..000000000000
--- a/frontend/static/themes/cy_red.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #6e2626;
- --main-color: #e55050;
- --caret-color: #541d1d;
- --sub-color: #ff6060;
- --sub-alt-color: #3f1616;
- --text-color: #ffaaaa;
- --error-color: #919fd9;
- --error-extra-color: #4d5d9e;
- --colorful-error-color: #919fd9;
- --colorful-error-extra-color: #4d5d9e;
-}
diff --git a/frontend/static/themes/cyberspace.css b/frontend/static/themes/cyberspace.css
deleted file mode 100644
index 6c7b3e30c9b4..000000000000
--- a/frontend/static/themes/cyberspace.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #181c18;
- --main-color: #00ce7c;
- --caret-color: #00ce7c;
- --sub-color: #9578d3;
- --sub-alt-color: #131613;
- --text-color: #c2fbe1;
- --error-color: #ff5f5f;
- --error-extra-color: #d22a2a;
- --colorful-error-color: #ff5f5f;
- --colorful-error-extra-color: #d22a2a;
-}
diff --git a/frontend/static/themes/dark.css b/frontend/static/themes/dark.css
deleted file mode 100644
index 591c1fc5b0ee..000000000000
--- a/frontend/static/themes/dark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #111;
- --main-color: #eee;
- --caret-color: #eee;
- --sub-color: #444;
- --sub-alt-color: #191919;
- --text-color: #eee;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
diff --git a/frontend/static/themes/dark_magic_girl.css b/frontend/static/themes/dark_magic_girl.css
deleted file mode 100644
index 2999ff4fac67..000000000000
--- a/frontend/static/themes/dark_magic_girl.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #091f2c;
- --main-color: #f5b1cc;
- --caret-color: #a288d9;
- --sub-color: #93e8d3;
- --sub-alt-color: #071823;
- --text-color: #a288d9;
- --error-color: #e45c96;
- --error-extra-color: #e45c96;
- --colorful-error-color: #00b398;
- --colorful-error-extra-color: #e45c96;
-}
diff --git a/frontend/static/themes/dark_note.css b/frontend/static/themes/dark_note.css
index 5b156b33ebbf..99fa4f7fd1bf 100644
--- a/frontend/static/themes/dark_note.css
+++ b/frontend/static/themes/dark_note.css
@@ -1,21 +1,3 @@
-:root {
- --bg-color: #1f1f1f;
- --main-color: #f2c17b;
- --caret-color: #e3dce0;
- --sub-color: #768f95;
- --sub-alt-color: #141414;
- --text-color: #d2dff4;
- --error-color: #ff0000;
- --error-extra-color: #588498;
- --colorful-error-color: var(--error-color);
- --colorful-error-extra-color: var(--error-extra-color);
- /* custom vars */
- --theme-bg-stripe-color: #434653;
- --theme-bg-stripe-opacity: 0.1;
- --theme-accent-stripe-color: #bf8200;
- --current-color: var(--text-color);
-}
-
.colorfulMode {
--current-color: var(--main-color);
}
diff --git a/frontend/static/themes/darling.css b/frontend/static/themes/darling.css
deleted file mode 100644
index bb0ffea13c3d..000000000000
--- a/frontend/static/themes/darling.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #fec8cd;
- --main-color: #ffffff;
- --caret-color: #ffffff;
- --sub-color: #a30000;
- --sub-alt-color: #f2babd;
- --text-color: #ffffff;
- --error-color: #2e7dde;
- --error-extra-color: #2e7dde;
- --colorful-error-color: #2e7dde;
- --colorful-error-extra-color: #2e7dde;
-}
diff --git a/frontend/static/themes/deku.css b/frontend/static/themes/deku.css
deleted file mode 100644
index a321229d6603..000000000000
--- a/frontend/static/themes/deku.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #058b8c;
- --main-color: #b63530;
- --caret-color: #b63530;
- --sub-color: #255458;
- --sub-alt-color: #0e7d7e;
- --text-color: #f7f2ea;
- --error-color: #b63530;
- --error-extra-color: #530e0e;
- --colorful-error-color: #ddca1f;
- --colorful-error-extra-color: #8f8610;
-}
diff --git a/frontend/static/themes/desert_oasis.css b/frontend/static/themes/desert_oasis.css
index 3be4a540b3b5..ade5493f55c3 100644
--- a/frontend/static/themes/desert_oasis.css
+++ b/frontend/static/themes/desert_oasis.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #fff2d5; /*Background*/
- --main-color: #d19d01; /*Color after typing, monkeytype logo, WPM Number acc number etc*/
- --caret-color: #3a87fe; /*Cursor Color*/
- --sub-color: #0061fe; /*WPM text color of scrollbar and general color, before typed color*/
- --sub-alt-color: #eddebc;
- --text-color: #332800; /*Color of text after hovering over it*/
- --error-color: #76bb40;
- --error-extra-color: #4e7a27;
- --colorful-error-color: #76bb40;
- --colorful-error-extra-color: #4e7a27;
-}
-
nav > .textButton:nth-child(1) {
color: #76bb40;
}
diff --git a/frontend/static/themes/dev.css b/frontend/static/themes/dev.css
deleted file mode 100644
index b43a50b429cd..000000000000
--- a/frontend/static/themes/dev.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/*this theme is based on "Dev theme by KDr3w" color pallet: https://www.deviantart.com/kdr3w/art/Dev-825722799 */
-:root {
- --bg-color: #1b2028;
- --main-color: #23a9d5;
- --caret-color: #4b5975;
- --sub-color: #4b5975;
- --sub-alt-color: #151a21;
- --text-color: #ccccb5;
- --error-color: #b81b2c;
- --error-extra-color: #84131f;
- --colorful-error-color: #b81b2c;
- --colorful-error-extra-color: #84131f;
-}
diff --git a/frontend/static/themes/diner.css b/frontend/static/themes/diner.css
deleted file mode 100644
index 9f218e2fbe61..000000000000
--- a/frontend/static/themes/diner.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #537997;
- --main-color: #c3af5b;
- --caret-color: #ad5145;
- --sub-color: #445c7f;
- --sub-alt-color: #4d6f8b;
- --text-color: #dfdbc8;
- --error-color: #ad5145;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ad5145;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/dino.css b/frontend/static/themes/dino.css
deleted file mode 100644
index 74625a42a5de..000000000000
--- a/frontend/static/themes/dino.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ffffff;
- --main-color: #40d672;
- --caret-color: #40d672;
- --sub-color: #d5d5d5;
- --sub-alt-color: #cafad8;
- --text-color: #1d221f;
- --error-color: #ff5f5f;
- --error-extra-color: #d22a2a;
- --colorful-error-color: #ff5f5f;
- --colorful-error-extra-color: #d22a2a;
-}
diff --git a/frontend/static/themes/discord.css b/frontend/static/themes/discord.css
deleted file mode 100644
index 7384caf097d4..000000000000
--- a/frontend/static/themes/discord.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #313338;
- --main-color: #5a65ea;
- --caret-color: #5a65ea;
- --sub-color: #565861;
- --sub-alt-color: #2b2d31;
- --text-color: #dcdee3;
- --error-color: #df4f4b;
- --error-extra-color: #df4f4b;
- --colorful-error-color: #df4f4b;
- --colorful-error-extra-color: #df4f4b;
-}
diff --git a/frontend/static/themes/dmg.css b/frontend/static/themes/dmg.css
index 265e47bd1243..342d5acc11b9 100644
--- a/frontend/static/themes/dmg.css
+++ b/frontend/static/themes/dmg.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #dadbdc;
- --main-color: #ae185e;
- --caret-color: #384693;
- --sub-color: #3846b1;
- --sub-alt-color: #bec1d2;
- --text-color: #414141;
- --error-color: #ae185e;
- --error-extra-color: #93335c;
- --colorful-error-color: #80a053;
- --colorful-error-extra-color: #306230;
-}
-
nav {
gap: 0.5rem;
}
diff --git a/frontend/static/themes/dollar.css b/frontend/static/themes/dollar.css
deleted file mode 100644
index 07511e4ce4be..000000000000
--- a/frontend/static/themes/dollar.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #e4e4d4;
- --main-color: #6b886b;
- --caret-color: #424643;
- --sub-color: #8a9b69;
- --sub-alt-color: #cbd0bf;
- --text-color: #555a56;
- --error-color: #d60000;
- --error-extra-color: #f68484;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/dots.css b/frontend/static/themes/dots.css
index fc10096afd99..4c6c27df26a7 100644
--- a/frontend/static/themes/dots.css
+++ b/frontend/static/themes/dots.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #121520;
- --caret-color: #fff;
- --main-color: #fff;
- --sub-color: #676e8a;
- --sub-alt-color: #1b1e2c;
- --text-color: #fff;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
-
nav {
gap: 0.5rem;
}
diff --git a/frontend/static/themes/dracula.css b/frontend/static/themes/dracula.css
index c667d3df568d..67871079376b 100644
--- a/frontend/static/themes/dracula.css
+++ b/frontend/static/themes/dracula.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #282a36;
- --main-color: #bd93f9;
- --caret-color: #bd93f9;
- --sub-color: #6272a4;
- --sub-alt-color: #20222c;
- --text-color: #f8f8f2;
- --error-color: #ff5555;
- --error-extra-color: #f1fa8c;
- --colorful-error-color: #ff5555;
- --colorful-error-extra-color: #f1fa8c;
-}
-
nav > .textButton:nth-child(1) {
color: #ec75c4;
}
diff --git a/frontend/static/themes/drowning.css b/frontend/static/themes/drowning.css
deleted file mode 100644
index dc1f1228212e..000000000000
--- a/frontend/static/themes/drowning.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #191826;
- --main-color: #4a6fb5;
- --caret-color: #4f85e8;
- --sub-color: #50688c;
- --sub-alt-color: #1e1f2f;
- --text-color: #9393a7;
- --error-color: #be555f;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #be555f;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/dualshot.css b/frontend/static/themes/dualshot.css
index 1fb26f432af5..a33e7487807d 100644
--- a/frontend/static/themes/dualshot.css
+++ b/frontend/static/themes/dualshot.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #737373;
- --main-color: #212222;
- --caret-color: #212222;
- --sub-color: #aaaaaa;
- --sub-alt-color: #646464;
- --text-color: #212222;
- --error-color: #c82931;
- --error-extra-color: #ac1823;
- --colorful-error-color: #c82931;
- --colorful-error-extra-color: #ac1823;
-}
-
nav > .textButton:nth-child(1) {
color: #2884bb;
}
diff --git a/frontend/static/themes/earthsong.css b/frontend/static/themes/earthsong.css
deleted file mode 100644
index fe2a0dc47b26..000000000000
--- a/frontend/static/themes/earthsong.css
+++ /dev/null
@@ -1,13 +0,0 @@
-:root {
- /*Personal preference: 'flip test colors'= on*/
- --bg-color: #292521;
- --main-color: #509452;
- --caret-color: #1298ba;
- --sub-color: #f5ae2d;
- --sub-alt-color: #1d1b18;
- --text-color: #e6c7a8;
- --error-color: #7e2a33;
- --error-extra-color: #ff645a;
- --colorful-error-color: #7e2a33;
- --colorful-error-extra-color: #ff645a;
-}
diff --git a/frontend/static/themes/everblush.css b/frontend/static/themes/everblush.css
deleted file mode 100644
index 6632386efc6c..000000000000
--- a/frontend/static/themes/everblush.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #141b1e;
- --caret-color: #6cbfbf;
- --main-color: #8ccf7e;
- --sub-color: #838887;
- --sub-alt-color: #232a2d;
- --text-color: #dadada;
- --error-color: #e57474;
- --error-extra-color: #ef7e7e;
- --colorful-error-color: #e57474;
- --colorful-error-extra-color: #ef7e7e;
-}
diff --git a/frontend/static/themes/evil_eye.css b/frontend/static/themes/evil_eye.css
deleted file mode 100644
index 6c69b6c6c907..000000000000
--- a/frontend/static/themes/evil_eye.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0084c2;
- --main-color: #f7f2ea;
- --caret-color: #f7f2ea;
- --sub-color: #01589f;
- --sub-alt-color: #0c79be;
- --text-color: #171718;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/ez_mode.css b/frontend/static/themes/ez_mode.css
index c81d5c1788aa..c84b5bf0bd69 100644
--- a/frontend/static/themes/ez_mode.css
+++ b/frontend/static/themes/ez_mode.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #0068c6;
- --main-color: #fa62d5;
- --caret-color: #4ddb47;
- --sub-color: #138bf7;
- --sub-alt-color: #005bac;
- --text-color: #ffffff;
- --error-color: #4ddb47;
- --error-extra-color: #42ba3b;
- --colorful-error-color: #4ddb47;
- --colorful-error-extra-color: #42ba3b;
-}
-
.pageSettings .section h1 {
color: var(--text-color);
}
diff --git a/frontend/static/themes/fire.css b/frontend/static/themes/fire.css
index 944e384d9a2b..2b93ce928502 100644
--- a/frontend/static/themes/fire.css
+++ b/frontend/static/themes/fire.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #0f0000;
- --main-color: #b31313;
- --caret-color: #b31313;
- --sub-color: #683434;
- --sub-alt-color: #200a0a;
- --text-color: #ffffff;
- --error-color: #2f3cb6;
- --error-extra-color: #434a8f;
- --colorful-error-color: #2f3cb6;
- --colorful-error-extra-color: #434a8f;
-}
-
@keyframes fire {
0% {
color: #b31313;
diff --git a/frontend/static/themes/fledgling.css b/frontend/static/themes/fledgling.css
deleted file mode 100644
index 2fc7ba576eeb..000000000000
--- a/frontend/static/themes/fledgling.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #3b363f;
- --main-color: #fc6e83;
- --caret-color: #474747;
- --sub-color: #8e5568;
- --sub-alt-color: #332e38;
- --text-color: #e6d5d3;
- --error-color: #f52443;
- --error-extra-color: #bd001c;
- --colorful-error-color: #ff0a2f;
- --colorful-error-extra-color: #000000;
-}
diff --git a/frontend/static/themes/fleuriste.css b/frontend/static/themes/fleuriste.css
deleted file mode 100644
index 259db5bc494f..000000000000
--- a/frontend/static/themes/fleuriste.css
+++ /dev/null
@@ -1,19 +0,0 @@
-:root {
- --bg-color: #c6b294;
- --main-color: #405a52;
- --caret-color: #8a785b;
- --sub-color: #64374d;
- --sub-alt-color: #b4a389;
- --text-color: #091914;
- --error-color: #990000;
- --error-extra-color: #8a1414;
- --colorful-error-color: #a63a3a;
- --colorful-error-extra-color: #bd4c4c;
-}
-
-/* nav .textButton:nth-child(1, 3, 5) {
- background: #405a52;
-}
-nav .textButton:nth-child(2, 4) {
- background: #64374d;
-} */
diff --git a/frontend/static/themes/floret.css b/frontend/static/themes/floret.css
deleted file mode 100644
index a070a041105e..000000000000
--- a/frontend/static/themes/floret.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #00272c;
- --main-color: #ffdd6d;
- --caret-color: #c3bd40;
- --sub-color: #779097;
- --sub-alt-color: #173033;
- --text-color: #e5e5e5;
- --error-color: #8a4000;
- --error-extra-color: #00708d;
- --colorful-error-color: #8a4000;
- --colorful-error-extra-color: #628b96;
-}
diff --git a/frontend/static/themes/froyo.css b/frontend/static/themes/froyo.css
index c2852315ebb6..62d3fd73822a 100644
--- a/frontend/static/themes/froyo.css
+++ b/frontend/static/themes/froyo.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #e1dacb;
- --main-color: #7b7d7d;
- --caret-color: #7b7d7d;
- --sub-color: #b29c5e;
- --sub-alt-color: #d3cdc1;
- --text-color: #7b7d7d;
- --error-color: #f28578;
- --error-extra-color: #d56558;
- --colorful-error-color: #f28578;
- --colorful-error-extra-color: #d56558;
-}
-
nav > .textButton:nth-child(1) {
color: #ff7e73;
}
diff --git a/frontend/static/themes/frozen_llama.css b/frontend/static/themes/frozen_llama.css
deleted file mode 100644
index 7b0d39917d9d..000000000000
--- a/frontend/static/themes/frozen_llama.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #9bf2ea;
- --main-color: #6d44a6;
- --caret-color: #ffffff;
- --sub-color: #b690fd;
- --sub-alt-color: #7fe7dd;
- --text-color: #ffffff;
- --error-color: #e42629;
- --error-extra-color: #e42629;
- --colorful-error-color: #e42629;
- --colorful-error-extra-color: #e42629;
-}
diff --git a/frontend/static/themes/fruit_chew.css b/frontend/static/themes/fruit_chew.css
index 07043e552bf6..e62daddc3e19 100644
--- a/frontend/static/themes/fruit_chew.css
+++ b/frontend/static/themes/fruit_chew.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #d6d3d6;
- --main-color: #5c1e5f;
- --caret-color: #b92221;
- --sub-color: #b49cb5;
- --sub-alt-color: #cabfca;
- --text-color: #282528;
- --error-color: #bd2621;
- --error-extra-color: #a62626;
- --colorful-error-color: #bd2621;
- --colorful-error-extra-color: #a62626;
-}
-
nav > .textButton:nth-child(1) {
color: #a6bf50;
}
diff --git a/frontend/static/themes/fundamentals.css b/frontend/static/themes/fundamentals.css
index 7c960443ef61..94cb67db41e2 100644
--- a/frontend/static/themes/fundamentals.css
+++ b/frontend/static/themes/fundamentals.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #727474;
- --main-color: #7fa482;
- --caret-color: #196378;
- --sub-color: #cac4be;
- --sub-alt-color: #666868;
- --text-color: #131313;
- --error-color: #5e477c;
- --error-extra-color: #413157;
- --colorful-error-color: #5e477c;
- --colorful-error-extra-color: #413157;
-}
-
header #logo .bottom {
color: #196378;
}
diff --git a/frontend/static/themes/future_funk.css b/frontend/static/themes/future_funk.css
index ba9e5a5496d0..2be582304cb0 100644
--- a/frontend/static/themes/future_funk.css
+++ b/frontend/static/themes/future_funk.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #2e1a47;
- --main-color: #f7f2ea;
- --caret-color: #f7f2ea;
- --sub-color: #c18fff;
- --sub-alt-color: #27173c;
- --text-color: #f7f2ea;
- --error-color: #f04e98;
- --error-extra-color: #bd1c66;
- --colorful-error-color: #f04e98;
- --colorful-error-extra-color: #bd1c66;
-}
-
nav > .textButton:nth-child(1) {
color: #f04e98;
}
diff --git a/frontend/static/themes/github.css b/frontend/static/themes/github.css
deleted file mode 100644
index c5a670722837..000000000000
--- a/frontend/static/themes/github.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #212830;
- --main-color: #41ce5c;
- --caret-color: #41ce5c;
- --sub-color: #788386;
- --sub-alt-color: #141b23;
- --text-color: #ccdae6;
- --error-color: #c23e3a;
- --error-extra-color: #c23e3a;
- --colorful-error-color: #c23e3a;
- --colorful-error-extra-color: #c23e3a;
-}
diff --git a/frontend/static/themes/godspeed.css b/frontend/static/themes/godspeed.css
deleted file mode 100644
index 079d593dc57c..000000000000
--- a/frontend/static/themes/godspeed.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #eae4cf;
- --main-color: #9abbcd;
- --caret-color: #f4d476;
- --sub-color: #ada998;
- --sub-alt-color: #ded9c9;
- --text-color: #646669;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/graen.css b/frontend/static/themes/graen.css
index 45cb11e214ec..ba4b2cc72b00 100644
--- a/frontend/static/themes/graen.css
+++ b/frontend/static/themes/graen.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #303c36;
- --main-color: #a59682;
- --caret-color: #601420;
- --sub-color: #181d1a;
- --sub-alt-color: #36453c;
- --text-color: #a59682;
- --error-color: #601420;
- --error-extra-color: #5f0715;
- --colorful-error-color: #601420;
- --colorful-error-extra-color: #5f0715;
-}
-
nav > .textButton:nth-child(1),
nav > .textButton:nth-child(2),
nav > .textButton:nth-child(3),
diff --git a/frontend/static/themes/grand_prix.css b/frontend/static/themes/grand_prix.css
deleted file mode 100644
index 5a956a0389f9..000000000000
--- a/frontend/static/themes/grand_prix.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #36475c;
- --main-color: #c0d036;
- --caret-color: #c0d036;
- --sub-color: #5c6c80;
- --sub-alt-color: #42536b;
- --text-color: #c1c7d7;
- --error-color: #fc5727;
- --error-extra-color: #fc5727;
- --colorful-error-color: #fc5727;
- --colorful-error-extra-color: #fc5727;
-}
diff --git a/frontend/static/themes/grape.css b/frontend/static/themes/grape.css
index 92b6b23b5ccc..aae91a27b7e7 100644
--- a/frontend/static/themes/grape.css
+++ b/frontend/static/themes/grape.css
@@ -1,17 +1,4 @@
-:root {
- --bg-color: #2c003e;
- --main-color: #ff8f00;
- --caret-color: #ff8f00;
- --sub-color: #6e225e;
- --sub-alt-color: #1f002d;
- --text-color: #fff;
- --error-color: #ff4081;
- --error-extra-color: #bf2054;
- --colorful-error-color: #ff4081;
- --colorful-error-extra-color: #bf2054;
-}
-
-@keyframes pastel {
+@keyframes grape {
0% {
color: #00b8d4;
}
@@ -29,7 +16,7 @@
}
}
-@keyframes pastel-bg {
+@keyframes grape-bg {
0% {
background: #00b8d4;
}
@@ -52,7 +39,7 @@
.pageSettings .section .buttons .button.active,
.pageSettings .section.languages .buttons .language.active,
.pageAccount .group.filterButtons .buttons .button.active {
- animation: pastel-bg 5s linear infinite;
+ animation: grape-bg 5s linear infinite;
}
header.focus .button.discord::after,
@@ -69,17 +56,17 @@ header .config .group .buttons .textButton:hover,
footer .textButton:hover,
footer button.text:hover,
a:not(.button):hover {
- animation: pastel 5s linear infinite;
+ animation: grape 5s linear infinite;
}
#words {
- --correct-letter-animation: pastel 5s linear infinite;
+ --correct-letter-animation: grape 5s linear infinite;
}
#words.flipped {
--untyped-letter-color: var(--sub-color);
--correct-letter-animation: none;
- --untyped-letter-animation: pastel 5s linear infinite;
+ --untyped-letter-animation: grape 5s linear infinite;
}
#words .word.typed letter.correct,
@@ -87,7 +74,7 @@ a:not(.button):hover {
#words.highlight-next-word .word.typed letter,
#words.highlight-next-two-words .word.typed letter,
#words.highlight-next-three-words .word.typed letter {
- animation: pastel 5s linear infinite;
+ animation: grape 5s linear infinite;
}
#words.flipped .word.typed letter {
@@ -96,5 +83,5 @@ a:not(.button):hover {
#words.highlight-off .word letter,
#words.highlight-off .word.typed letter {
- animation: pastel 5s linear infinite;
+ animation: grape 5s linear infinite;
}
diff --git a/frontend/static/themes/gruvbox_dark.css b/frontend/static/themes/gruvbox_dark.css
deleted file mode 100644
index 3f82cb9eb96e..000000000000
--- a/frontend/static/themes/gruvbox_dark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #282828;
- --main-color: #d79921;
- --caret-color: #fabd2f;
- --sub-color: #665c54;
- --sub-alt-color: #212121;
- --text-color: #ebdbb2;
- --error-color: #fb4934;
- --error-extra-color: #cc241d;
- --colorful-error-color: #cc241d;
- --colorful-error-extra-color: #9d0006;
-}
diff --git a/frontend/static/themes/gruvbox_light.css b/frontend/static/themes/gruvbox_light.css
deleted file mode 100644
index 0138fd32865c..000000000000
--- a/frontend/static/themes/gruvbox_light.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #fbf1c7;
- --main-color: #689d6a;
- --caret-color: #689d6a;
- --sub-color: #a89984;
- --sub-alt-color: #daceae;
- --text-color: #3c3836;
- --error-color: #cc241d;
- --error-extra-color: #9d0006;
- --colorful-error-color: #cc241d;
- --colorful-error-extra-color: #9d0006;
-}
diff --git a/frontend/static/themes/hammerhead.css b/frontend/static/themes/hammerhead.css
deleted file mode 100644
index 5eb2d60f5a73..000000000000
--- a/frontend/static/themes/hammerhead.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #030613;
- --main-color: #4fcdb9;
- --caret-color: #4fcdb9;
- --sub-color: #213c53;
- --sub-alt-color: #0a1928;
- --text-color: #e2f1f5;
- --error-color: #e32b2b;
- --error-extra-color: #a62626;
- --colorful-error-color: #e32b2b;
- --colorful-error-extra-color: #a62626;
-}
diff --git a/frontend/static/themes/hanok.css b/frontend/static/themes/hanok.css
deleted file mode 100644
index 5493fb1fc4f3..000000000000
--- a/frontend/static/themes/hanok.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #d8d2c3;
- --main-color: #513a2a;
- --caret-color: #513a2a;
- --sub-color: #8b6f5c;
- --sub-alt-color: #cdc0af;
- --text-color: #393b3b;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/hedge.css b/frontend/static/themes/hedge.css
deleted file mode 100644
index f71bcf40d7c5..000000000000
--- a/frontend/static/themes/hedge.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #415e31;
- --main-color: #6a994e;
- --caret-color: #f2efbb;
- --sub-color: #ede5b4;
- --sub-alt-color: #38502a;
- --text-color: #f7f1d6;
- --error-color: #ca3d3f;
- --error-extra-color: #782832;
- --colorful-error-color: #e76f51;
- --colorful-error-extra-color: #f4a261;
-}
diff --git a/frontend/static/themes/honey.css b/frontend/static/themes/honey.css
deleted file mode 100644
index 91949cbb1e8b..000000000000
--- a/frontend/static/themes/honey.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #f2aa00;
- --main-color: #fff546;
- --caret-color: #795200;
- --sub-color: #a66b00;
- --sub-alt-color: #e19e00;
- --text-color: #f3eecb;
- --error-color: #df3333;
- --error-extra-color: #6d1f1f;
- --colorful-error-color: #df3333;
- --colorful-error-extra-color: #6d1f1f;
-}
diff --git a/frontend/static/themes/horizon.css b/frontend/static/themes/horizon.css
index 701eecedded8..b430fa2d3a05 100644
--- a/frontend/static/themes/horizon.css
+++ b/frontend/static/themes/horizon.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #1c1e26;
- --main-color: #c4a88a;
- --caret-color: #bbbbbb;
- --sub-color: #db886f;
- --sub-alt-color: #17181f;
- --text-color: #bbbbbb;
- --error-color: #d55170;
- --error-extra-color: #ff3d3d;
- --colorful-error-color: #d55170;
- --colorful-error-extra-color: #d55170;
-}
-
nav > .textButton:nth-child(1) {
color: #d55170;
}
diff --git a/frontend/static/themes/husqy.css b/frontend/static/themes/husqy.css
index 3596750b4503..8eda898afedd 100644
--- a/frontend/static/themes/husqy.css
+++ b/frontend/static/themes/husqy.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #000000;
- --main-color: #c58aff;
- --caret-color: #c58aff;
- --sub-color: #972fff;
- --sub-alt-color: #1e001e;
- --text-color: #ebd7ff;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
-
#liveWpm,
#liveStatsTextTop {
color: #c58aff;
diff --git a/frontend/static/themes/iceberg_dark.css b/frontend/static/themes/iceberg_dark.css
deleted file mode 100644
index 97f9b5f8d0bb..000000000000
--- a/frontend/static/themes/iceberg_dark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #161821;
- --caret-color: #d2d4de;
- --main-color: #84a0c6;
- --sub-color: #595e76;
- --sub-alt-color: #232531;
- --text-color: #c6c8d1;
- --error-color: #e27878;
- --error-extra-color: #e2a478;
- --colorful-error-color: #e27878;
- --colorful-error-extra-color: #e2a478;
-}
diff --git a/frontend/static/themes/iceberg_light.css b/frontend/static/themes/iceberg_light.css
deleted file mode 100644
index 7ab04ef665fd..000000000000
--- a/frontend/static/themes/iceberg_light.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #e8e9ec;
- --caret-color: #262a3f;
- --main-color: #2d539e;
- --sub-color: #adb1c4;
- --sub-alt-color: #ccceda;
- --text-color: #33374c;
- --error-color: #cc517a;
- --error-extra-color: #cc3768;
- --colorful-error-color: #cc517a;
- --colorful-error-extra-color: #cc3768;
-}
diff --git a/frontend/static/themes/incognito.css b/frontend/static/themes/incognito.css
index 60a014ebcfa1..f51a6bef6930 100644
--- a/frontend/static/themes/incognito.css
+++ b/frontend/static/themes/incognito.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #0e0e0e;
- --main-color: #ff9900;
- --caret-color: #ff9900;
- --sub-color: #555555;
- --sub-alt-color: #151515;
- --text-color: #c6c6c6;
- --error-color: #e44545;
- --error-extra-color: #e44545;
- --colorful-error-color: #b13535;
- --colorful-error-extra-color: #b13535;
-}
-
header #logo .text {
background: linear-gradient(
90deg,
diff --git a/frontend/static/themes/ishtar.css b/frontend/static/themes/ishtar.css
index 89b7b8afc7ee..1c0f22be93ed 100644
--- a/frontend/static/themes/ishtar.css
+++ b/frontend/static/themes/ishtar.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #202020;
- --main-color: #91170c;
- --caret-color: #c58940;
- --sub-color: #847869;
- --sub-alt-color: #272727;
- --text-color: #fae1c3;
- --error-color: #bb1e10;
- --error-extra-color: #791717;
- --colorful-error-color: #c5da33;
- --colorful-error-extra-color: #849224;
-}
-
header #logo .bottom {
color: #fae1c3;
}
diff --git a/frontend/static/themes/iv_clover.css b/frontend/static/themes/iv_clover.css
deleted file mode 100644
index f330cfc12a61..000000000000
--- a/frontend/static/themes/iv_clover.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #a0a0a0;
- --main-color: #573e40;
- --caret-color: #8d8d8d;
- --sub-color: #353535;
- --sub-alt-color: #bebebe;
- --text-color: #3b2d3b;
- --error-color: #937173;
- --error-extra-color: #987678;
- --colorful-error-color: #ad8d60;
- --colorful-error-extra-color: #b7976a;
-}
diff --git a/frontend/static/themes/iv_spade.css b/frontend/static/themes/iv_spade.css
deleted file mode 100644
index 8e9a930b0d42..000000000000
--- a/frontend/static/themes/iv_spade.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0c0c0c;
- --main-color: #b7976a;
- --caret-color: #bebebe;
- --sub-color: #404040;
- --sub-alt-color: #121212;
- --text-color: #d3c2c3;
- --error-color: #9d7b7d;
- --error-extra-color: #a78587;
- --colorful-error-color: #b7976a;
- --colorful-error-extra-color: #c1a174;
-}
diff --git a/frontend/static/themes/joker.css b/frontend/static/themes/joker.css
deleted file mode 100644
index 28daf85e1301..000000000000
--- a/frontend/static/themes/joker.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1a0e25;
- --main-color: #99de1e;
- --caret-color: #99de1e;
- --sub-color: #7554a3;
- --sub-alt-color: #14081f;
- --text-color: #e9e2f5;
- --error-color: #e32b2b;
- --error-extra-color: #a62626;
- --colorful-error-color: #e32b2b;
- --colorful-error-extra-color: #a62626;
-}
diff --git a/frontend/static/themes/laser.css b/frontend/static/themes/laser.css
deleted file mode 100644
index de0c7c54cfc5..000000000000
--- a/frontend/static/themes/laser.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #221b44;
- --main-color: #009eaf;
- --caret-color: #009eaf;
- --sub-color: #b82356;
- --sub-alt-color: #1e173b;
- --text-color: #dbe7e8;
- --error-color: #a8d400;
- --error-extra-color: #668000;
- --colorful-error-color: #a8d400;
- --colorful-error-extra-color: #668000;
-}
diff --git a/frontend/static/themes/lavender.css b/frontend/static/themes/lavender.css
index 4c7b513e3ba8..3b95e05fe667 100644
--- a/frontend/static/themes/lavender.css
+++ b/frontend/static/themes/lavender.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #ada6c2;
- --main-color: #e4e3e9;
- --caret-color: #e4e3e9;
- --sub-color: #e4e3e9;
- --sub-alt-color: #a19bb9;
- --text-color: #2f2a41;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
-
nav .textButton {
border-radius: 10rem !important;
background: var(--text-color);
diff --git a/frontend/static/themes/leather.css b/frontend/static/themes/leather.css
deleted file mode 100644
index fd92dd4bb944..000000000000
--- a/frontend/static/themes/leather.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #a86948;
- --main-color: #ffe4bc;
- --caret-color: #ef6d49;
- --sub-color: #81482b;
- --sub-alt-color: #9a5f3f;
- --text-color: #ffe4bc;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/lil_dragon.css b/frontend/static/themes/lil_dragon.css
index d5f8fa0e73a2..aeb13923bc6d 100644
--- a/frontend/static/themes/lil_dragon.css
+++ b/frontend/static/themes/lil_dragon.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #ebe1ef;
- --main-color: #8a5bd6;
- --caret-color: #212b43;
- --sub-color: #a28db8;
- --sub-alt-color: #dac7e2;
- --text-color: #212b43;
- --error-color: #f794ca;
- --error-extra-color: #f279c2;
- --colorful-error-color: #f794ca;
- --colorful-error-extra-color: #f279c2;
-}
-
nav .textButton {
color: #ba96db;
}
diff --git a/frontend/static/themes/lilac_mist.css b/frontend/static/themes/lilac_mist.css
deleted file mode 100644
index 9d8a813d1315..000000000000
--- a/frontend/static/themes/lilac_mist.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #fffbfe;
- --main-color: #b94189;
- --caret-color: #e099d6;
- --sub-color: #e094c2;
- --sub-alt-color: #ecdcee;
- --text-color: #5c2954;
- --error-color: #ff6f69;
- --error-extra-color: #ff6f69;
- --colorful-error-color: #bc7fc0;
- --colorful-error-extra-color: #bc41b1;
-}
diff --git a/frontend/static/themes/lime.css b/frontend/static/themes/lime.css
deleted file mode 100644
index 73243ef94925..000000000000
--- a/frontend/static/themes/lime.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #7c878e;
- --main-color: #93c247;
- --caret-color: #93c247;
- --sub-color: #4b5257;
- --sub-alt-color: #737d82;
- --text-color: #bfcfdc;
- --error-color: #ea4221;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ea4221;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/luna.css b/frontend/static/themes/luna.css
deleted file mode 100644
index ab5bfc35b550..000000000000
--- a/frontend/static/themes/luna.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #221c35;
- --main-color: #f67599;
- --caret-color: #f67599;
- --sub-color: #5a3a7e;
- --sub-alt-color: #2f2346;
- --text-color: #ffe3eb;
- --error-color: #efc050;
- --error-extra-color: #c5972c;
- --colorful-error-color: #efc050;
- --colorful-error-extra-color: #c5972c;
-}
diff --git a/frontend/static/themes/macroblank.css b/frontend/static/themes/macroblank.css
deleted file mode 100644
index 01390d07c80b..000000000000
--- a/frontend/static/themes/macroblank.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #b2d2c8;
- --main-color: #c13117;
- --caret-color: #766f71;
- --sub-color: #717977;
- --sub-alt-color: #c6ddd3;
- --text-color: #490909;
- --error-color: #c13117;
- --error-extra-color: #fff5f5;
- --colorful-error-color: #fff5f5;
- --colorful-error-extra-color: #ffe9c2;
-}
diff --git a/frontend/static/themes/magic_girl.css b/frontend/static/themes/magic_girl.css
deleted file mode 100644
index 63e7a33b9451..000000000000
--- a/frontend/static/themes/magic_girl.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ffffff;
- --main-color: #f5b1cc;
- --caret-color: #e45c96;
- --sub-color: #93e8d3;
- --sub-alt-color: #f2f2f2;
- --text-color: #00ac8c;
- --error-color: #ffe495;
- --error-extra-color: #e45c96;
- --colorful-error-color: #ffe485;
- --colorful-error-extra-color: #e45c96;
-}
diff --git a/frontend/static/themes/mashu.css b/frontend/static/themes/mashu.css
deleted file mode 100644
index 7f18b1571f97..000000000000
--- a/frontend/static/themes/mashu.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2b2b2c;
- --main-color: #76689a;
- --caret-color: #76689a;
- --sub-color: #d8a0a6;
- --sub-alt-color: #27242c;
- --text-color: #f1e2e4;
- --error-color: #d44729;
- --error-extra-color: #8f2f19;
- --colorful-error-color: #d44729;
- --colorful-error-extra-color: #8f2f19;
-}
diff --git a/frontend/static/themes/matcha_moccha.css b/frontend/static/themes/matcha_moccha.css
deleted file mode 100644
index 6adc7f356f69..000000000000
--- a/frontend/static/themes/matcha_moccha.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #523525;
- --main-color: #7ec160;
- --caret-color: #7ec160;
- --sub-color: #9e6749;
- --sub-alt-color: #422b1e;
- --text-color: #ecddcc;
- --error-color: #fb4934;
- --error-extra-color: #cc241d;
- --colorful-error-color: #fb4934;
- --colorful-error-extra-color: #cc241d;
-}
diff --git a/frontend/static/themes/material.css b/frontend/static/themes/material.css
deleted file mode 100644
index e73759a9f3a5..000000000000
--- a/frontend/static/themes/material.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #263238;
- --main-color: #80cbc4;
- --caret-color: #80cbc4;
- --sub-color: #4c6772;
- --sub-alt-color: #2e3c43;
- --text-color: #e6edf3;
- --error-color: #fb4934;
- --error-extra-color: #cc241d;
- --colorful-error-color: #fb4934;
- --colorful-error-extra-color: #cc241d;
-}
diff --git a/frontend/static/themes/matrix.css b/frontend/static/themes/matrix.css
index f6257d885e68..9d39cee42b0e 100644
--- a/frontend/static/themes/matrix.css
+++ b/frontend/static/themes/matrix.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #000000;
- --main-color: #15ff00;
- --caret-color: #15ff00;
- --sub-color: #006500;
- --sub-alt-color: #032000;
- --text-color: #d1ffcd;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
-
#liveWpm,
#liveStatsTextTop {
color: white;
diff --git a/frontend/static/themes/menthol.css b/frontend/static/themes/menthol.css
deleted file mode 100644
index 9882c0fea175..000000000000
--- a/frontend/static/themes/menthol.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #00c18c;
- --main-color: #ffffff;
- --caret-color: #99fdd8;
- --sub-color: #186544;
- --sub-alt-color: #17ae7d;
- --text-color: #ffffff;
- --error-color: #e03c3c;
- --error-extra-color: #b12525;
- --colorful-error-color: #e03c3c;
- --colorful-error-extra-color: #b12525;
-}
diff --git a/frontend/static/themes/metaverse.css b/frontend/static/themes/metaverse.css
deleted file mode 100644
index 8c0ded1cf7e4..000000000000
--- a/frontend/static/themes/metaverse.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #232323;
- --main-color: #d82934;
- --caret-color: #d82934;
- --sub-color: #5e5e5e;
- --sub-alt-color: #1d1d1d;
- --text-color: #e8e8e8;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #d7da33;
- --colorful-error-extra-color: #737917;
-}
diff --git a/frontend/static/themes/metropolis.css b/frontend/static/themes/metropolis.css
index 319aea9775e5..829a0637ffb8 100644
--- a/frontend/static/themes/metropolis.css
+++ b/frontend/static/themes/metropolis.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #0f1f2c;
- --main-color: #56c3b7;
- --caret-color: #56c3b7;
- --sub-color: #326984;
- --sub-alt-color: #0b1822;
- --text-color: #e4edf1;
- --error-color: #d44729;
- --error-extra-color: #8f2f19;
- --colorful-error-color: #d44729;
- --colorful-error-extra-color: #8f2f19;
-}
-
header #logo .bottom {
color: #f4bc46;
}
diff --git a/frontend/static/themes/mexican.css b/frontend/static/themes/mexican.css
deleted file mode 100644
index 31f21b94e5f3..000000000000
--- a/frontend/static/themes/mexican.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #f8ad34;
- --main-color: #b12189;
- --caret-color: #eee;
- --sub-color: #333;
- --sub-alt-color: #f9b951;
- --text-color: #eee;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
diff --git a/frontend/static/themes/miami.css b/frontend/static/themes/miami.css
deleted file mode 100644
index 54bc7cf12194..000000000000
--- a/frontend/static/themes/miami.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #f35588;
- --main-color: #05dfd7;
- --caret-color: #a3f7bf;
- --text-color: #f0e9ec;
- --sub-color: #94294c;
- --sub-alt-color: #db4979;
- --error-color: #fff591;
- --error-extra-color: #b9b269;
- --colorful-error-color: #fff591;
- --colorful-error-extra-color: #b9b269;
-}
diff --git a/frontend/static/themes/miami_nights.css b/frontend/static/themes/miami_nights.css
deleted file mode 100644
index 2e9050819f0d..000000000000
--- a/frontend/static/themes/miami_nights.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #18181a;
- --main-color: #e4609b;
- --caret-color: #e4609b;
- --sub-color: #47bac0;
- --sub-alt-color: #0f0f10;
- --text-color: #fff;
- --error-color: #fff591;
- --error-extra-color: #b6af68;
- --colorful-error-color: #fff591;
- --colorful-error-extra-color: #b6af68;
-}
diff --git a/frontend/static/themes/midnight.css b/frontend/static/themes/midnight.css
deleted file mode 100644
index bbc2de204bbf..000000000000
--- a/frontend/static/themes/midnight.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0b0e13;
- --main-color: #60759f;
- --caret-color: #60759f;
- --sub-color: #394760;
- --sub-alt-color: #141a24;
- --text-color: #9fadc6;
- --error-color: #c27070;
- --error-extra-color: #c28b70;
- --colorful-error-color: #c27070;
- --colorful-error-extra-color: #c28b70;
-}
diff --git a/frontend/static/themes/milkshake.css b/frontend/static/themes/milkshake.css
index 8530bc7d6a81..214f374f92d9 100644
--- a/frontend/static/themes/milkshake.css
+++ b/frontend/static/themes/milkshake.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #ffffff;
- --main-color: #212b43;
- --caret-color: #212b43;
- --sub-color: #62cfe6;
- --sub-alt-color: #ddeff3;
- --text-color: #212b43;
- --error-color: #f19dac;
- --error-extra-color: #e58c9d;
- --colorful-error-color: #f19dac;
- --colorful-error-extra-color: #e58c9d;
-}
-
nav > .textButton:nth-child(1) {
color: #f19dac;
}
diff --git a/frontend/static/themes/mint.css b/frontend/static/themes/mint.css
deleted file mode 100644
index 5970fa0e64a9..000000000000
--- a/frontend/static/themes/mint.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #05385b;
- --main-color: #5cdb95;
- --caret-color: #5cdb95;
- --sub-color: #20688a;
- --sub-alt-color: #07324e;
- --text-color: #edf5e1;
- --error-color: #f35588;
- --error-extra-color: #a3385a;
- --colorful-error-color: #f35588;
- --colorful-error-extra-color: #a3385a;
-}
diff --git a/frontend/static/themes/mizu.css b/frontend/static/themes/mizu.css
deleted file mode 100644
index b454ed416204..000000000000
--- a/frontend/static/themes/mizu.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #afcbdd;
- --main-color: #fcfbf6;
- --caret-color: #fcfbf6;
- --sub-color: #85a5bb;
- --sub-alt-color: #9fc1d4;
- --text-color: #1a2633;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #bf616a;
- --colorful-error-extra-color: #793e44;
-}
diff --git a/frontend/static/themes/modern_dolch.css b/frontend/static/themes/modern_dolch.css
deleted file mode 100644
index 227ca55864de..000000000000
--- a/frontend/static/themes/modern_dolch.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2d2e30;
- --main-color: #7eddd3;
- --caret-color: #7eddd3;
- --sub-color: #54585c;
- --sub-alt-color: #242527;
- --text-color: #e3e6eb;
- --error-color: #d36a7b;
- --error-extra-color: #994154;
- --colorful-error-color: #d36a7b;
- --colorful-error-extra-color: #994154;
-}
diff --git a/frontend/static/themes/modern_dolch_light.css b/frontend/static/themes/modern_dolch_light.css
deleted file mode 100644
index b977e9fbcaba..000000000000
--- a/frontend/static/themes/modern_dolch_light.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #dbdbdb;
- --caret-color: #8fd1c3;
- --main-color: #8fd1c3;
- --sub-color: #a3a2a2;
- --sub-alt-color: #e8e8e8;
- --text-color: #454545;
- --error-color: #ea8a9a;
- --error-extra-color: #e0556d;
- --colorful-error-color: #ea8a9a;
- --colorful-error-extra-color: #e0556d;
-}
diff --git a/frontend/static/themes/modern_ink.css b/frontend/static/themes/modern_ink.css
index e1bfa2c51db1..f36f904cbf12 100644
--- a/frontend/static/themes/modern_ink.css
+++ b/frontend/static/themes/modern_ink.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #ffffff;
- --main-color: #ff360d;
- --caret-color: #ff0000;
- --sub-color: #b7b7b7;
- --sub-alt-color: #ececec;
- --text-color: #000000;
- --error-color: #d70000;
- --error-extra-color: #b00000;
- --colorful-error-color: #000000;
- --colorful-error-extra-color: #000000;
-}
-
nav .textButton:nth-child(1) {
color: #ff0000;
}
diff --git a/frontend/static/themes/monokai.css b/frontend/static/themes/monokai.css
deleted file mode 100644
index 613507252123..000000000000
--- a/frontend/static/themes/monokai.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #272822;
- --main-color: #a6e22e;
- --caret-color: #66d9ef;
- --sub-color: #e6db74;
- --sub-alt-color: #1f201b;
- --text-color: #e2e2dc;
- --error-color: #f92672;
- --error-extra-color: #fd971f;
- --colorful-error-color: #f92672;
- --colorful-error-extra-color: #fd971f;
-}
diff --git a/frontend/static/themes/moonlight.css b/frontend/static/themes/moonlight.css
index 916bae0336b0..f9991696c686 100644
--- a/frontend/static/themes/moonlight.css
+++ b/frontend/static/themes/moonlight.css
@@ -1,16 +1,4 @@
/*inspired by GMK MOONLIGHT*/
-:root {
- --bg-color: #191f28;
- --main-color: #c69f68;
- --caret-color: #8f744b;
- --sub-color: #4b5975;
- --sub-alt-color: #141a22;
- --text-color: #ccccb5;
- --error-color: #b81b2c;
- --error-extra-color: #84131f;
- --colorful-error-color: #b81b2c;
- --colorful-error-extra-color: #84131f;
-}
nav {
gap: 0.5rem;
diff --git a/frontend/static/themes/mountain.css b/frontend/static/themes/mountain.css
deleted file mode 100644
index 2d4d7379f663..000000000000
--- a/frontend/static/themes/mountain.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0f0f0f;
- --main-color: #e7e7e7;
- --caret-color: #f5f5f5;
- --sub-color: #4c4c4c;
- --sub-alt-color: #1a1a1a;
- --text-color: #e7e7e7;
- --error-color: #ac8c8c;
- --error-extra-color: #c49ea0;
- --colorful-error-color: #aca98a;
- --colorful-error-extra-color: #c4c19e;
-}
diff --git a/frontend/static/themes/mr_sleeves.css b/frontend/static/themes/mr_sleeves.css
index b1a6fc742be5..231c2cc78082 100644
--- a/frontend/static/themes/mr_sleeves.css
+++ b/frontend/static/themes/mr_sleeves.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #d1d7da;
- --main-color: #daa99b;
- --caret-color: #8fadc9;
- --sub-color: #9a9fa1;
- --sub-alt-color: #bfcbd1;
- --text-color: #1d1d1d;
- --error-color: #bf6464;
- --error-extra-color: #793e44;
- --colorful-error-color: #8fadc9;
- --colorful-error-extra-color: #667c91;
-}
-
header #logo .bottom {
color: #8fadc9;
}
diff --git a/frontend/static/themes/ms_cupcakes.css b/frontend/static/themes/ms_cupcakes.css
deleted file mode 100644
index a928092cd935..000000000000
--- a/frontend/static/themes/ms_cupcakes.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ffffff;
- --main-color: #5ed5f3;
- --caret-color: #303030;
- --sub-color: #d64090;
- --sub-alt-color: #edf8fa;
- --text-color: #0a282f;
- --error-color: #a4dd32;
- --error-extra-color: #90bd34;
- --colorful-error-color: #a4dd32;
- --colorful-error-extra-color: #87b330;
-}
diff --git a/frontend/static/themes/muted.css b/frontend/static/themes/muted.css
deleted file mode 100644
index e915fffadee8..000000000000
--- a/frontend/static/themes/muted.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #525252;
- --main-color: #c5b4e3;
- --caret-color: #b1e4e3;
- --sub-color: #939eae;
- --sub-alt-color: #494949;
- --text-color: #b1e4e3;
- --error-color: #edc1cd;
- --error-extra-color: #edc1cd;
- --colorful-error-color: #edc1cd;
- --colorful-error-extra-color: #edc1cd;
-}
diff --git a/frontend/static/themes/nautilus.css b/frontend/static/themes/nautilus.css
deleted file mode 100644
index e64863089df8..000000000000
--- a/frontend/static/themes/nautilus.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #132237;
- --main-color: #ebb723;
- --caret-color: #ebb723;
- --sub-color: #0b4c6c;
- --sub-alt-color: #0e1a29;
- --text-color: #1cbaac;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
diff --git a/frontend/static/themes/nebula.css b/frontend/static/themes/nebula.css
deleted file mode 100644
index 340a64b4feff..000000000000
--- a/frontend/static/themes/nebula.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #212135;
- --main-color: #be3c88;
- --caret-color: #78c729;
- --sub-color: #19b3b8;
- --sub-alt-color: #191928;
- --text-color: #838686;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/night_runner.css b/frontend/static/themes/night_runner.css
deleted file mode 100644
index a9588935f30e..000000000000
--- a/frontend/static/themes/night_runner.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #212121;
- --main-color: #feff04;
- --caret-color: #feff04;
- --sub-color: #5c4a9c;
- --sub-alt-color: #1a1a1a;
- --text-color: #e8e8e8;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
diff --git a/frontend/static/themes/nord.css b/frontend/static/themes/nord.css
deleted file mode 100644
index 6ac6ce15e398..000000000000
--- a/frontend/static/themes/nord.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #242933;
- --caret-color: #eceff4;
- --main-color: #88c0d0;
- --sub-color: #929aaa;
- --sub-alt-color: #2e3440;
- --text-color: #d8dee9;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #bf616a;
- --colorful-error-extra-color: #793e44;
-}
diff --git a/frontend/static/themes/nord_light.css b/frontend/static/themes/nord_light.css
deleted file mode 100644
index eafa8b48c889..000000000000
--- a/frontend/static/themes/nord_light.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #eceff4;
- --caret-color: #8fbcbb;
- --main-color: #8fbcbb;
- --sub-color: #6a7791;
- --sub-alt-color: #d8dee9;
- --text-color: #8fbcbb;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #bf616a;
- --colorful-error-extra-color: #793e44;
-}
diff --git a/frontend/static/themes/norse.css b/frontend/static/themes/norse.css
deleted file mode 100644
index 7183b1c2f837..000000000000
--- a/frontend/static/themes/norse.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #242425;
- --main-color: #2b5f6d;
- --caret-color: #2b5f6d;
- --sub-color: #505b5e;
- --sub-alt-color: #303333;
- --text-color: #ccc2b1;
- --error-color: #7e2a2a;
- --error-extra-color: #771d1d;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/oblivion.css b/frontend/static/themes/oblivion.css
index 62fb2d66b85a..70923f48f5ba 100644
--- a/frontend/static/themes/oblivion.css
+++ b/frontend/static/themes/oblivion.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #313231;
- --main-color: #a5a096;
- --caret-color: #a5a096;
- --sub-color: #5d6263;
- --sub-alt-color: #3a3b3b;
- --text-color: #f7f5f1;
- --error-color: #dd452e;
- --error-extra-color: #9e3423;
- --colorful-error-color: #dd452e;
- --colorful-error-extra-color: #9e3423;
-}
-
nav > .textButton:nth-child(1) {
color: #9a90b4;
}
diff --git a/frontend/static/themes/olive.css b/frontend/static/themes/olive.css
deleted file mode 100644
index 79893a223e58..000000000000
--- a/frontend/static/themes/olive.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #e9e5cc;
- --caret-color: #92946f;
- --main-color: #92946f;
- --sub-color: #b7b39e;
- --sub-alt-color: #d4cfbc;
- --text-color: #373731;
- --error-color: #cf2f2f;
- --error-extra-color: #a22929;
- --colorful-error-color: #cf2f2f;
- --colorful-error-extra-color: #a22929;
-}
diff --git a/frontend/static/themes/olivia.css b/frontend/static/themes/olivia.css
deleted file mode 100644
index 06ade62cc5f6..000000000000
--- a/frontend/static/themes/olivia.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1c1b1d;
- --main-color: #deaf9d;
- --caret-color: #deaf9d;
- --sub-color: #4e3e3e;
- --sub-alt-color: #262223;
- --text-color: #f2efed;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #e03d4e;
- --colorful-error-extra-color: #aa2f3b;
-}
diff --git a/frontend/static/themes/onedark.css b/frontend/static/themes/onedark.css
deleted file mode 100644
index 65b5ca176b54..000000000000
--- a/frontend/static/themes/onedark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2f343f;
- --caret-color: #61afef;
- --main-color: #61afef;
- --sub-color: #eceff4;
- --sub-alt-color: #262b34;
- --text-color: #98c379;
- --error-color: #e06c75;
- --error-extra-color: #d62436;
- --colorful-error-color: #d62436;
- --colorful-error-extra-color: #ff0019;
-}
diff --git a/frontend/static/themes/our_theme.css b/frontend/static/themes/our_theme.css
deleted file mode 100644
index ca52bb7b7b40..000000000000
--- a/frontend/static/themes/our_theme.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ce1226;
- --main-color: #fcd116;
- --caret-color: #fcd116;
- --sub-color: #6d0f19;
- --sub-alt-color: #9f1020;
- --text-color: #ffffff;
- --error-color: #fcd116;
- --error-extra-color: #fcd116;
- --colorful-error-color: #1672fc;
- --colorful-error-extra-color: #1672fc;
-}
diff --git a/frontend/static/themes/pale_nimbus.css b/frontend/static/themes/pale_nimbus.css
deleted file mode 100644
index ec639f07ee5c..000000000000
--- a/frontend/static/themes/pale_nimbus.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #433e4c;
- --main-color: #94ffc2;
- --caret-color: #9efffd;
- --sub-color: #ffaca3;
- --sub-alt-color: #694f5e;
- --text-color: #feffdb;
- --error-color: #ff5c5c;
- --error-extra-color: #ff0000;
- --colorful-error-color: #ff3874;
- --colorful-error-extra-color: #c2386f;
-}
diff --git a/frontend/static/themes/paper.css b/frontend/static/themes/paper.css
deleted file mode 100644
index f41d06ac26ca..000000000000
--- a/frontend/static/themes/paper.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #eeeeee;
- --main-color: #444444;
- --caret-color: #444444;
- --sub-color: #b2b2b2;
- --sub-alt-color: #dddddd;
- --text-color: #444444;
- --error-color: #d70000;
- --error-extra-color: #d70000;
- --colorful-error-color: #d70000;
- --colorful-error-extra-color: #d70000;
-}
diff --git a/frontend/static/themes/passion_fruit.css b/frontend/static/themes/passion_fruit.css
deleted file mode 100644
index 0644a7aa8324..000000000000
--- a/frontend/static/themes/passion_fruit.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #7c2142;
- --main-color: #f4a3b4;
- --caret-color: #ffffff;
- --sub-color: #9994b8;
- --sub-alt-color: #833c5e;
- --text-color: #ffffff;
- --error-color: #deb80b;
- --error-extra-color: #deb80b;
- --colorful-error-color: #deb80b;
- --colorful-error-extra-color: #deb80b;
-}
diff --git a/frontend/static/themes/pastel.css b/frontend/static/themes/pastel.css
deleted file mode 100644
index fdbba2690e0c..000000000000
--- a/frontend/static/themes/pastel.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #e0b2bd;
- --main-color: #fbf4b6;
- --caret-color: #fbf4b6;
- --sub-color: #b4e9ff;
- --sub-alt-color: #d29fab;
- --text-color: #6d5c6f;
- --error-color: #ff6961;
- --error-extra-color: #c23b22;
- --colorful-error-color: #ff6961;
- --colorful-error-extra-color: #c23b22;
-}
diff --git a/frontend/static/themes/peach_blossom.css b/frontend/static/themes/peach_blossom.css
deleted file mode 100644
index b0ffdffe70bb..000000000000
--- a/frontend/static/themes/peach_blossom.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #292929;
- --main-color: #99b898;
- --caret-color: #616161;
- --sub-color: #616161;
- --sub-alt-color: #2a363b;
- --text-color: #fecea8;
- --error-color: #ff6961;
- --error-extra-color: #e84a5f;
- --colorful-error-color: #ff6961;
- --colorful-error-extra-color: #e84a5f;
-}
diff --git a/frontend/static/themes/peaches.css b/frontend/static/themes/peaches.css
deleted file mode 100644
index bbaddc8c5b4b..000000000000
--- a/frontend/static/themes/peaches.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #e0d7c1;
- --main-color: #dd7a5f;
- --caret-color: #dd7a5f;
- --sub-color: #e7b28e;
- --sub-alt-color: #e2caaf;
- --text-color: #5f4c41;
- --error-color: #ff6961;
- --error-extra-color: #c23b22;
- --colorful-error-color: #ff6961;
- --colorful-error-extra-color: #c23b22;
-}
diff --git a/frontend/static/themes/phantom.css b/frontend/static/themes/phantom.css
index 718de9968d02..eba732d3098e 100644
--- a/frontend/static/themes/phantom.css
+++ b/frontend/static/themes/phantom.css
@@ -1,17 +1,4 @@
-:root {
- --bg-color: #001;
- --main-color: #7aa2f7;
- --caret-color: #bb9af7;
- --sub-color: #414868;
- --sub-alt-color: #24283b;
- --text-color: #c0caf5;
- --error-color: #f7768e;
- --error-extra-color: #db4b4b;
- --colorful-error-color: #ff7a93;
- --colorful-error-extra-color: #ff9e64;
-}
-
-@keyframes tokyo-glow {
+@keyframes phantom-glow {
0% {
color: #c0caf5;
text-shadow:
@@ -32,7 +19,7 @@
}
}
-@keyframes tokyo-glow-incorrect {
+@keyframes phantom-glow-incorrect {
0% {
text-shadow:
0 0 5px #f7768e,
@@ -50,7 +37,7 @@
}
}
-@keyframes tokyo-bg {
+@keyframes phantom-bg {
0% {
background: #7aa2f7;
}
@@ -69,7 +56,7 @@
header:not(.focus) #logo .text {
color: var(--text-color);
- animation: tokyo-glow 3s infinite alternate;
+ animation: phantom-glow 3s infinite alternate;
}
header #logo .text .top {
@@ -95,11 +82,11 @@ button.text.active,
button.text:hover,
.textButton:hover {
- animation: tokyo-glow 5s linear infinite;
+ animation: phantom-glow 5s linear infinite;
}
.word .active {
- animation: tokyo-glow 5s linear infinite;
+ animation: phantom-glow 5s linear infinite;
}
button:hover,
@@ -117,7 +104,7 @@ input[type="submit"]:hover {
}
#caret {
- animation: tokyo-bg 3s linear infinite;
+ animation: phantom-bg 3s linear infinite;
}
#logo .bottom,
@@ -129,7 +116,7 @@ header .config .group .buttons .textButton:hover,
footer .textButton:hover,
footer button.text:hover,
a:not(.button):hover {
- animation: tokyo-glow 3s linear infinite;
+ animation: phantom-glow 3s linear infinite;
}
.afk,
@@ -140,7 +127,7 @@ a:not(.button):hover {
#words.highlight-next-word .word.typed letter,
#words.highlight-next-two-words .word.typed letter,
#words.highlight-next-three-words .word.typed letter {
- animation: tokyo-glow 5s linear infinite;
+ animation: phantom-glow 5s linear infinite;
}
#words.flipped .word.typed letter {
@@ -148,10 +135,10 @@ a:not(.button):hover {
}
.incorrect {
- animation: tokyo-glow-incorrect 5s linear infinite;
+ animation: phantom-glow-incorrect 5s linear infinite;
}
#words.highlight-off .word letter,
#words.highlight-off .word.typed letter {
- animation: tokyo-glow 5s linear infinite;
+ animation: phantom-glow 5s linear infinite;
}
diff --git a/frontend/static/themes/pink_lemonade.css b/frontend/static/themes/pink_lemonade.css
deleted file mode 100644
index 19f5424d2c13..000000000000
--- a/frontend/static/themes/pink_lemonade.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #f6d992;
- --main-color: #f6a192;
- --caret-color: #fcfcf8;
- --sub-color: #f6b092;
- --sub-alt-color: #f6cc93;
- --text-color: #fcfcf8;
- --error-color: #ff6f69;
- --error-extra-color: #ff6f69;
- --colorful-error-color: #ff6f69;
- --colorful-error-extra-color: #ff6f69;
-}
diff --git a/frontend/static/themes/pulse.css b/frontend/static/themes/pulse.css
deleted file mode 100644
index 604ee84a97fa..000000000000
--- a/frontend/static/themes/pulse.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #181818;
- --main-color: #17b8bd;
- --caret-color: #17b8bd;
- --sub-color: #53565a;
- --sub-alt-color: #121212;
- --text-color: #e5f4f4;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
diff --git a/frontend/static/themes/purpleish.css b/frontend/static/themes/purpleish.css
deleted file mode 100644
index d79dc2875e96..000000000000
--- a/frontend/static/themes/purpleish.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1e1e32;
- --main-color: #7a52cc;
- --caret-color: #7a52cc;
- --sub-color: #5c5c99;
- --sub-alt-color: #181829;
- --text-color: #a3a3cc;
- --error-color: #ff6666;
- --error-extra-color: #ff6666;
- --colorful-error-color: #ff6666;
- --colorful-error-extra-color: #ff6666;
-}
diff --git a/frontend/static/themes/rainbow_trail.css b/frontend/static/themes/rainbow_trail.css
index f7a8c466eb24..6165ae82c35c 100644
--- a/frontend/static/themes/rainbow_trail.css
+++ b/frontend/static/themes/rainbow_trail.css
@@ -1,14 +1,3 @@
-:root {
- --bg-color: #f5f5f5;
- --main-color: #363636;
- --caret-color: #0d0d0d;
- --sub-color: #4f4f4f;
- --sub-alt-color: #e0e0e0;
- --text-color: #1f1f1f;
- --error-color: #ff0008;
- --colorful-error-color: #ff0008;
-}
-
header #logo .text {
background: linear-gradient(
90deg,
@@ -96,8 +85,10 @@ button.text:hover,
#words {
--correct-letter-animation: rainbow-infinite-loop 5s linear infinite;
- --incorrect-letter-animation: error-repeat 1s alternate ease-in-out infinite;
- --extra-letter-animation: error-repeat 1s alternate ease-in-out infinite;
+ --incorrect-letter-animation: rainbow-error-repeat 1s alternate ease-in-out
+ infinite;
+ --extra-letter-animation: rainbow-error-repeat 1s alternate ease-in-out
+ infinite;
}
#words .word.typed letter.correct,
@@ -123,7 +114,7 @@ button.text:hover,
.button:hover,
button:not(.textButton):not(.text):hover {
- animation: glowing-button 2s alternate ease-in-out infinite;
+ animation: rainbow-button 2s alternate ease-in-out infinite;
}
#words.highlight-off .word letter,
@@ -226,7 +217,7 @@ button:not(.textButton):not(.text):hover {
}
}
-@keyframes error-repeat {
+@keyframes rainbow-error-repeat {
0% {
color: #ff0000;
}
@@ -262,7 +253,7 @@ button:not(.textButton):not(.text):hover {
}
}
-@keyframes glowing-button {
+@keyframes rainbow-button {
0% {
box-shadow:
0 0 7.5px 2.5px #60b6ce,
diff --git a/frontend/static/themes/red_dragon.css b/frontend/static/themes/red_dragon.css
deleted file mode 100644
index 78305aad76d7..000000000000
--- a/frontend/static/themes/red_dragon.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1a0b0c;
- --main-color: #ff3a32;
- --caret-color: #ff3a32;
- --sub-color: #e2a528;
- --sub-alt-color: #0e0506;
- --text-color: #4a4d4e;
- --error-color: #771b1f;
- --error-extra-color: #591317;
- --colorful-error-color: #771b1f;
- --colorful-error-extra-color: #591317;
-}
diff --git a/frontend/static/themes/red_samurai.css b/frontend/static/themes/red_samurai.css
deleted file mode 100644
index 959fc24151ab..000000000000
--- a/frontend/static/themes/red_samurai.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #84202c;
- --main-color: #c79e6e;
- --caret-color: #c79e6e;
- --sub-color: #55131b;
- --sub-alt-color: #751d26;
- --text-color: #e2dad0;
- --error-color: #33bbda;
- --error-extra-color: #176b79;
- --colorful-error-color: #33bbda;
- --colorful-error-extra-color: #176779;
-}
diff --git a/frontend/static/themes/repose_dark.css b/frontend/static/themes/repose_dark.css
deleted file mode 100644
index 9d1bb1cef49d..000000000000
--- a/frontend/static/themes/repose_dark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2f3338;
- --main-color: #d6d2bc;
- --caret-color: #d6d2bc;
- --sub-color: #8f8e84;
- --sub-alt-color: #3a3c3d;
- --text-color: #d6d2bc;
- --error-color: #ff4a59;
- --error-extra-color: #c43c53;
- --colorful-error-color: #ff4a59;
- --colorful-error-extra-color: #c43c53;
-}
diff --git a/frontend/static/themes/repose_light.css b/frontend/static/themes/repose_light.css
deleted file mode 100644
index 4dc674274818..000000000000
--- a/frontend/static/themes/repose_light.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #efead0;
- --main-color: #5f605e;
- --caret-color: #5f605e;
- --sub-color: #8f8e84;
- --sub-alt-color: #dbd6c4;
- --text-color: #333538;
- --error-color: #c43c53;
- --error-extra-color: #a52632;
- --colorful-error-color: #c43c53;
- --colorful-error-extra-color: #a52632;
-}
diff --git a/frontend/static/themes/retro.css b/frontend/static/themes/retro.css
deleted file mode 100644
index 3bb6dff213d4..000000000000
--- a/frontend/static/themes/retro.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #dad3c1;
- --main-color: #1d1b17;
- --caret-color: #1d1b17;
- --sub-color: #918b7d;
- --sub-alt-color: #c8c3b3;
- --text-color: #1d1b17;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #bf616a;
- --colorful-error-extra-color: #793e44;
-}
diff --git a/frontend/static/themes/retrocast.css b/frontend/static/themes/retrocast.css
index 405df18e9c2c..f8b8e4159189 100644
--- a/frontend/static/themes/retrocast.css
+++ b/frontend/static/themes/retrocast.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #07737a;
- --main-color: #88dbdf;
- --caret-color: #88dbdf;
- --sub-color: #f3e03b;
- --sub-alt-color: #26858b;
- --text-color: #ffffff;
- --error-color: #ff585d;
- --error-extra-color: #c04455;
- --colorful-error-color: #ff585d;
- --colorful-error-extra-color: #c04455;
-}
-
nav > .textButton:nth-child(1) {
color: #88dbdf;
}
diff --git a/frontend/static/themes/rgb.css b/frontend/static/themes/rgb.css
index e0f71d726bda..4e3f9af09641 100644
--- a/frontend/static/themes/rgb.css
+++ b/frontend/static/themes/rgb.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #111;
- --main-color: #eee;
- --caret-color: #eee;
- --sub-color: #444;
- --sub-alt-color: #1a1a1a;
- --text-color: #eee;
- --error-color: #eee;
- --error-extra-color: #b3b3b3;
- --colorful-error-color: #eee;
- --colorful-error-extra-color: #b3b3b3;
-}
-
@keyframes rgb {
0% {
color: hsl(120, 39%, 49%);
diff --git a/frontend/static/themes/rose_pine.css b/frontend/static/themes/rose_pine.css
deleted file mode 100644
index 9ad9abbeae25..000000000000
--- a/frontend/static/themes/rose_pine.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1f1d27; /*Background*/
- --main-color: #9ccfd8; /*Color after typing, monkeytype logo, WPM Number acc number etc*/
- --caret-color: #f6c177; /*Cursor Color*/
- --sub-color: #c4a7e7;
- --sub-alt-color: #282533; /*WPM text color of scrollbar and general color, before typed color*/
- --text-color: #e0def4; /*Color of text after hovering over it*/
- --error-color: #eb6f92;
- --error-extra-color: #ebbcba;
- --colorful-error-color: #eb6f92;
- --colorful-error-extra-color: #ebbcba;
-}
diff --git a/frontend/static/themes/rose_pine_dawn.css b/frontend/static/themes/rose_pine_dawn.css
deleted file mode 100644
index d3e1eaf2bfe5..000000000000
--- a/frontend/static/themes/rose_pine_dawn.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #fffaf3; /*Background*/
- --main-color: #56949f; /*Color after typing, monkeytype logo, WPM Number acc number etc*/
- --caret-color: #ea9d34; /*Cursor Color*/
- --sub-color: #c4a7e7;
- --sub-alt-color: #f0e9df;
- --text-color: #286983; /*Color of text after hovering over it*/
- --error-color: #b4637a;
- --error-extra-color: #d7827e;
- --colorful-error-color: #b4637a;
- --colorful-error-extra-color: #d7827e;
-}
diff --git a/frontend/static/themes/rose_pine_moon.css b/frontend/static/themes/rose_pine_moon.css
deleted file mode 100644
index 6985a521a5eb..000000000000
--- a/frontend/static/themes/rose_pine_moon.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2a273f; /*Background*/
- --main-color: #9ccfd8; /*Color after typing, monkeytype logo, WPM Number acc number etc*/
- --caret-color: #f6c177; /*Cursor Color*/
- --sub-color: #c4a7e7;
- --sub-alt-color: #211f32; /*WPM text color of scrollbar and general color, before typed color*/
- --text-color: #e0def4; /*Color of text after hovering over it*/
- --error-color: #eb6f92;
- --error-extra-color: #ebbcba;
- --colorful-error-color: #eb6f92;
- --colorful-error-extra-color: #ebbcba;
-}
diff --git a/frontend/static/themes/rudy.css b/frontend/static/themes/rudy.css
deleted file mode 100644
index 3cef564a370e..000000000000
--- a/frontend/static/themes/rudy.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1a2b3e;
- --caret-color: #af8f5c;
- --main-color: #af8f5c;
- --sub-color: #3a506c;
- --sub-alt-color: #152231;
- --text-color: #c9c8bf;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #bf616a;
- --colorful-error-extra-color: #793e44;
-}
diff --git a/frontend/static/themes/ryujinscales.css b/frontend/static/themes/ryujinscales.css
deleted file mode 100644
index 39a8dd1b8658..000000000000
--- a/frontend/static/themes/ryujinscales.css
+++ /dev/null
@@ -1,14 +0,0 @@
-:root {
- --bg-color: #081426;
- --main-color: #f17754;
- --caret-color: #ef6d49;
- --sub-color: #ffbc90;
- --sub-alt-color: #040e1d;
- --text-color: #ffe4bc;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
-
-/* your theme has been added to the _list file and the textColor property is the theme's main color */
diff --git a/frontend/static/themes/serika.css b/frontend/static/themes/serika.css
deleted file mode 100644
index 2a335c5329b8..000000000000
--- a/frontend/static/themes/serika.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --main-color: #e2b714;
- --caret-color: #e2b714;
- --sub-color: #aaaeb3;
- --sub-alt-color: #d1d3d8;
- --bg-color: #e1e1e3;
- --text-color: #323437;
- --error-color: #da3333;
- --error-extra-color: #791717;
- --colorful-error-color: #da3333;
- --colorful-error-extra-color: #791717;
-}
diff --git a/frontend/static/themes/serika_dark.css b/frontend/static/themes/serika_dark.css
deleted file mode 100644
index 8fd02012497a..000000000000
--- a/frontend/static/themes/serika_dark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #323437;
- --main-color: #e2b714;
- --caret-color: #e2b714;
- --sub-color: #646669;
- --sub-alt-color: #2c2e31;
- --text-color: #d1d0c5;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/sewing_tin.css b/frontend/static/themes/sewing_tin.css
index d7843ecb2f24..3b0574b50b41 100644
--- a/frontend/static/themes/sewing_tin.css
+++ b/frontend/static/themes/sewing_tin.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #241963;
- --main-color: #f2ce83;
- --caret-color: #fbdb8c;
- --sub-color: #446ad5;
- --sub-alt-color: #2a277a;
- --text-color: #ffffff;
- --error-color: #c6915e;
- --error-extra-color: #c6915e;
- --colorful-error-color: #c6915e;
- --colorful-error-extra-color: #c6915e;
-}
-
nav > .textButton {
color: #f2ce83;
}
diff --git a/frontend/static/themes/sewing_tin_light.css b/frontend/static/themes/sewing_tin_light.css
index b37243152ccf..1e4fe75292d7 100644
--- a/frontend/static/themes/sewing_tin_light.css
+++ b/frontend/static/themes/sewing_tin_light.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #ffffff;
- --main-color: #2d2076;
- --caret-color: #fbdb8c;
- --sub-color: #385eca;
- --sub-alt-color: #c8cedf;
- --text-color: #2d2076;
- --error-color: #f2ce83;
- --error-extra-color: #f2ce83;
- --colorful-error-color: #f2ce83;
- --colorful-error-extra-color: #f2ce83;
-}
-
nav > .textButton {
color: #f2ce83;
}
diff --git a/frontend/static/themes/shadow.css b/frontend/static/themes/shadow.css
index 411279afdf6a..87db97316095 100644
--- a/frontend/static/themes/shadow.css
+++ b/frontend/static/themes/shadow.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #000;
- --main-color: #eee;
- --caret-color: #eee;
- --sub-color: #444;
- --sub-alt-color: #171717;
- --text-color: #eee;
- --error-color: #fff;
- --error-extra-color: #d8d8d8;
- --colorful-error-color: #fff;
- --colorful-error-extra-color: #d8d8d8;
-}
-
header #logo .icon {
color: #8c3230;
}
diff --git a/frontend/static/themes/shoko.css b/frontend/static/themes/shoko.css
deleted file mode 100644
index 6ddb545ec5a8..000000000000
--- a/frontend/static/themes/shoko.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ced7e0;
- --main-color: #81c4dd;
- --caret-color: #81c4dd;
- --sub-color: #7599b1;
- --sub-alt-color: #b7cada;
- --text-color: #3b4c58;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #bf616a;
- --colorful-error-extra-color: #793e44;
-}
diff --git a/frontend/static/themes/slambook.css b/frontend/static/themes/slambook.css
deleted file mode 100644
index d112cb59d18e..000000000000
--- a/frontend/static/themes/slambook.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #fffdde;
- --main-color: #03001c;
- --caret-color: #367e18;
- --sub-color: #1c82adc4;
- --sub-alt-color: #c6dce4;
- --text-color: #13005a;
- --error-color: #f900bf;
- --error-extra-color: #ce1212;
- --colorful-error-color: #ce1212;
- --colorful-error-extra-color: #3ec70b;
-}
diff --git a/frontend/static/themes/snes.css b/frontend/static/themes/snes.css
index 460250393071..2466c7b7d7f0 100644
--- a/frontend/static/themes/snes.css
+++ b/frontend/static/themes/snes.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #bfbec2;
- --main-color: #553d94;
- --caret-color: #523793;
- --sub-color: #9f8ad4;
- --sub-alt-color: #b5b0c2;
- --text-color: #2e2e2e;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
-
nav {
gap: 0.5rem;
}
diff --git a/frontend/static/themes/soaring_skies.css b/frontend/static/themes/soaring_skies.css
deleted file mode 100644
index a394ed18e370..000000000000
--- a/frontend/static/themes/soaring_skies.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #fff9f2;
- --main-color: #55c6f0;
- --caret-color: #1e107a;
- --sub-color: #1e107a;
- --sub-alt-color: #e5ddd4;
- --text-color: #1d1e1e;
- --error-color: #fb5745;
- --error-extra-color: #b03c30;
- --colorful-error-color: #fb5745;
- --colorful-error-extra-color: #b03c30;
-}
diff --git a/frontend/static/themes/solarized_dark.css b/frontend/static/themes/solarized_dark.css
deleted file mode 100644
index 8af1fe4e5e35..000000000000
--- a/frontend/static/themes/solarized_dark.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #002b36;
- --main-color: #859900;
- --caret-color: #dc322f;
- --sub-color: #2aa198;
- --sub-alt-color: #00222b;
- --text-color: #268bd2;
- --error-color: #d33682;
- --error-extra-color: #9b225c;
- --colorful-error-color: #d33682;
- --colorful-error-extra-color: #9b225c;
-}
diff --git a/frontend/static/themes/solarized_light.css b/frontend/static/themes/solarized_light.css
deleted file mode 100644
index 2705bc764cce..000000000000
--- a/frontend/static/themes/solarized_light.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #fdf6e3;
- --main-color: #859900;
- --caret-color: #dc322f;
- --sub-color: #2aa198;
- --sub-alt-color: #e2d8be;
- --text-color: #181819;
- --error-color: #d33682;
- --error-extra-color: #9b225c;
- --colorful-error-color: #d33682;
- --colorful-error-extra-color: #9b225c;
-}
diff --git a/frontend/static/themes/solarized_osaka.css b/frontend/static/themes/solarized_osaka.css
index c2cfea3469f4..954152ff4daa 100644
--- a/frontend/static/themes/solarized_osaka.css
+++ b/frontend/static/themes/solarized_osaka.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #00141a;
- --main-color: #859900;
- --caret-color: #b58900;
- --sub-color: #2aa198;
- --sub-alt-color: #00222b;
- --text-color: #eee8d5;
- --error-color: #dc322f;
- --error-extra-color: #9b225c;
- --colorful-error-color: #d33682;
- --colorful-error-extra-color: #9b225c;
-}
-
#words {
--correct-letter-color: var(--text-color);
--untyped-letter-color: #586e75;
diff --git a/frontend/static/themes/sonokai.css b/frontend/static/themes/sonokai.css
deleted file mode 100644
index b644953ce3a0..000000000000
--- a/frontend/static/themes/sonokai.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2c2e34;
- --main-color: #9ed072;
- --caret-color: #f38c71;
- --sub-color: #e7c664;
- --sub-alt-color: #232429;
- --text-color: #e2e2e3;
- --error-color: #fc5d7c;
- --error-extra-color: #ecac6a;
- --colorful-error-color: #fc5d7c;
- --colorful-error-extra-color: #ecac6a;
-}
diff --git a/frontend/static/themes/spiderman.css b/frontend/static/themes/spiderman.css
deleted file mode 100644
index 33f5c5dffd66..000000000000
--- a/frontend/static/themes/spiderman.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0d1219;
- --main-color: #e23636;
- --caret-color: #e23636;
- --sub-color: #0476f2;
- --sub-alt-color: #0b1c2e;
- --text-color: #f0f0f0;
- --error-color: #0476f2;
- --error-extra-color: #0353a8;
- --colorful-error-color: #0476f2;
- --colorful-error-extra-color: #0353a8;
-}
diff --git a/frontend/static/themes/stealth.css b/frontend/static/themes/stealth.css
index fb132e95ba9b..83c919f8986e 100644
--- a/frontend/static/themes/stealth.css
+++ b/frontend/static/themes/stealth.css
@@ -1,15 +1,3 @@
-:root {
- --bg-color: #010203;
- --main-color: #383e42;
- --caret-color: #e25303;
- --sub-color: #5e676e;
- --sub-alt-color: #121212;
- --text-color: #383e42;
- --error-color: #e25303;
- --error-extra-color: #73280c;
- --colorful-error-color: #e25303;
- --colorful-error-extra-color: #73280c;
-}
nav .textButton:nth-child(4) {
color: #e25303;
}
diff --git a/frontend/static/themes/strawberry.css b/frontend/static/themes/strawberry.css
deleted file mode 100644
index dacd5c190f56..000000000000
--- a/frontend/static/themes/strawberry.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #f37f83;
- --main-color: #fcfcf8;
- --caret-color: #fcfcf8;
- --sub-color: #e53c58;
- --sub-alt-color: #ef6e77;
- --text-color: #fcfcf8;
- --error-color: #fcd23f;
- --error-extra-color: #d7ae1e;
- --colorful-error-color: #fcd23f;
- --colorful-error-extra-color: #d7ae1e;
-}
diff --git a/frontend/static/themes/striker.css b/frontend/static/themes/striker.css
deleted file mode 100644
index 377b8b2cf404..000000000000
--- a/frontend/static/themes/striker.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #124883;
- --main-color: #d7dcda;
- --caret-color: #d7dcda;
- --sub-color: #0f2d4e;
- --sub-alt-color: #104176;
- --text-color: #d6dbd9;
- --error-color: #fb4934;
- --error-extra-color: #cc241d;
- --colorful-error-color: #fb4934;
- --colorful-error-extra-color: #cc241d;
-}
diff --git a/frontend/static/themes/suisei.css b/frontend/static/themes/suisei.css
index 5923984d8ed8..4f7af8777a88 100644
--- a/frontend/static/themes/suisei.css
+++ b/frontend/static/themes/suisei.css
@@ -1,17 +1,4 @@
-:root {
- --bg-color: #3b4a62;
- --main-color: #bef0ff;
- --caret-color: #bef0ff;
- --sub-color: #fe9841;
- --sub-alt-color: #313e55;
- --text-color: #dbdeeb;
- --error-color: #ed2939;
- --error-extra-color: #ce122c;
- --colorful-error-color: #ed2939;
- --colorful-error-extra-color: #ce122c;
-}
-
-@keyframes pulse {
+@keyframes suisei-pulse {
0% {
transform: scale(1);
}
@@ -62,7 +49,7 @@ header nav > .showAlerts {
}
header nav > .textButton:hover,
header nav > .showAlerts:hover {
- animation: pulse 800ms ease-out infinite;
+ animation: suisei-pulse 800ms ease-out infinite;
color: var(--main-color);
background-color: var(--sub-alt-color);
}
diff --git a/frontend/static/themes/sunset.css b/frontend/static/themes/sunset.css
index 6b867a87f679..a8b8d238f1aa 100644
--- a/frontend/static/themes/sunset.css
+++ b/frontend/static/themes/sunset.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #211e24;
- --main-color: #f79777;
- --caret-color: #ffca99;
- --sub-color: #5b578e;
- --sub-alt-color: #161319;
- --text-color: #f4e0c9;
- --error-color: #66a1ff;
- --error-extra-color: #376ca4;
- --colorful-error-color: #66a1ff;
- --colorful-error-extra-color: #376ca4;
-}
-
nav > .textButton:nth-child(1),
nav > .textButton:nth-child(2),
nav > .textButton:nth-child(3),
diff --git a/frontend/static/themes/superuser.css b/frontend/static/themes/superuser.css
deleted file mode 100644
index a9a1a479c2be..000000000000
--- a/frontend/static/themes/superuser.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #262a33;
- --main-color: #43ffaf;
- --caret-color: #43ffaf;
- --sub-color: #526777;
- --sub-alt-color: #1f232c;
- --text-color: #e5f7ef;
- --error-color: #ff5f5f;
- --error-extra-color: #d22a2a;
- --colorful-error-color: #ff5f5f;
- --colorful-error-extra-color: #d22a2a;
-}
diff --git a/frontend/static/themes/sweden.css b/frontend/static/themes/sweden.css
deleted file mode 100644
index 25aa0a038bf5..000000000000
--- a/frontend/static/themes/sweden.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0058a3;
- --main-color: #ffcc02;
- --caret-color: #b5b5b5;
- --sub-color: #57abdb;
- --sub-alt-color: #024f8e;
- --text-color: #ffffff;
- --error-color: #e74040;
- --error-extra-color: #a22f2f;
- --colorful-error-color: #f56674;
- --colorful-error-extra-color: #e33546;
-}
diff --git a/frontend/static/themes/tangerine.css b/frontend/static/themes/tangerine.css
deleted file mode 100644
index 853d2c26daea..000000000000
--- a/frontend/static/themes/tangerine.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #ffede0;
- --main-color: #fe5503;
- --caret-color: #5d8500;
- --sub-color: #ff9562;
- --sub-alt-color: #fdd3bf;
- --text-color: #3d1705;
- --error-color: #7fb500;
- --error-extra-color: #5f8700;
- --colorful-error-color: #7fb500;
- --colorful-error-extra-color: #5f8700;
-}
diff --git a/frontend/static/themes/taro.css b/frontend/static/themes/taro.css
index 2ba361b2f0c6..85ae4b6eb01b 100644
--- a/frontend/static/themes/taro.css
+++ b/frontend/static/themes/taro.css
@@ -1,17 +1,3 @@
-:root {
- /* --bg-color: linear-gradient(215deg, #cbb8ba, #706768); */
- --bg-color: #b3baff;
- --main-color: #130f1a;
- --caret-color: #00e9e5;
- --sub-color: #6f6c91;
- --sub-alt-color: #a3a7df;
- --text-color: #130f1a;
- --error-color: #ffe23e;
- --error-extra-color: #fff1c3;
- --colorful-error-color: #ffe23e;
- --colorful-error-extra-color: #fff1c3;
-}
-
.word.error {
border-bottom: dotted 2px var(--text-color);
}
diff --git a/frontend/static/themes/terminal.css b/frontend/static/themes/terminal.css
deleted file mode 100644
index 9297ba947b00..000000000000
--- a/frontend/static/themes/terminal.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #191a1b;
- --caret-color: #79a617;
- --main-color: #79a617;
- --sub-color: #48494b;
- --sub-alt-color: #141516;
- --text-color: #e7eae0;
- --error-color: #a61717;
- --error-extra-color: #731010;
- --colorful-error-color: #a61717;
- --colorful-error-extra-color: #731010;
-}
diff --git a/frontend/static/themes/terra.css b/frontend/static/themes/terra.css
deleted file mode 100644
index ebd08c383392..000000000000
--- a/frontend/static/themes/terra.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0c100e;
- --main-color: #89c559;
- --caret-color: #89c559;
- --sub-color: #436029;
- --sub-alt-color: #0f1d18;
- --text-color: #f0edd1;
- --error-color: #d3ca78;
- --error-extra-color: #89844d;
- --colorful-error-color: #d3ca78;
- --colorful-error-extra-color: #89844d;
-}
diff --git a/frontend/static/themes/terrazzo.css b/frontend/static/themes/terrazzo.css
index 852ded94039e..141625d9ef04 100644
--- a/frontend/static/themes/terrazzo.css
+++ b/frontend/static/themes/terrazzo.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #f1e5da;
- --main-color: #e0794e;
- --caret-color: #e0794e;
- --sub-color: #688e8f;
- --sub-alt-color: #e3d3c6;
- --text-color: #023e3b;
- --error-color: #a01034;
- --error-extra-color: #a01034;
- --colorful-error-color: #a01034;
- --colorful-error-extra-color: #a01034;
-}
-
/* hide buttons while typing */
header.focus nav > .textButton {
background: none;
diff --git a/frontend/static/themes/terror_below.css b/frontend/static/themes/terror_below.css
deleted file mode 100644
index 4532483efeed..000000000000
--- a/frontend/static/themes/terror_below.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0b1e1a;
- --caret-color: #66ac92;
- --main-color: #66ac92;
- --sub-color: #015c53;
- --sub-alt-color: #041715;
- --text-color: #dceae5;
- --error-color: #bf616a;
- --error-extra-color: #793e44;
- --colorful-error-color: #bf616a;
- --colorful-error-extra-color: #793e44;
-}
diff --git a/frontend/static/themes/tiramisu.css b/frontend/static/themes/tiramisu.css
deleted file mode 100644
index 8eb2abf46b88..000000000000
--- a/frontend/static/themes/tiramisu.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #cfc6b9;
- --main-color: #c0976f;
- --caret-color: #7d5448;
- --sub-color: #c0976f;
- --sub-alt-color: #d0bca7;
- --text-color: #7d5448;
- --error-color: #e9632d;
- --error-extra-color: #e9632d;
- --colorful-error-color: #e9632d;
- --colorful-error-extra-color: #e9632d;
-}
diff --git a/frontend/static/themes/trackday.css b/frontend/static/themes/trackday.css
index 3eb531213d46..d972d8b1f488 100644
--- a/frontend/static/themes/trackday.css
+++ b/frontend/static/themes/trackday.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #464d66;
- --main-color: #e0513e;
- --caret-color: #475782;
- --sub-color: #5c7eb9;
- --sub-alt-color: #3d4359;
- --text-color: #cfcfcf;
- --error-color: #e44e4e;
- --error-extra-color: #fd3f3f;
- --colorful-error-color: #ff2e2e;
- --colorful-error-extra-color: #bb2525;
-}
-
nav > .textButton:nth-child(1) {
color: #e0513e;
}
diff --git a/frontend/static/themes/trance.css b/frontend/static/themes/trance.css
index 08e1cf37654b..9d314fe4418d 100644
--- a/frontend/static/themes/trance.css
+++ b/frontend/static/themes/trance.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #00021b;
- --main-color: #e51376;
- --caret-color: #e51376;
- --sub-color: #3c4c79;
- --sub-alt-color: #18214c;
- --text-color: #fff;
- --error-color: #02d3b0;
- --error-extra-color: #3f887c;
- --colorful-error-color: #02d3b0;
- --colorful-error-extra-color: #3f887c;
-}
-
@keyframes trance {
0% {
color: #e51376;
diff --git a/frontend/static/themes/tron_orange.css b/frontend/static/themes/tron_orange.css
deleted file mode 100644
index 23dd35d79154..000000000000
--- a/frontend/static/themes/tron_orange.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #0d1c1c;
- --main-color: #f0e800;
- --caret-color: #f0e800;
- --sub-color: #ff6600;
- --sub-alt-color: #9c9191;
- --text-color: #ffffff;
- --error-color: #ff0000;
- --error-extra-color: #ff0000;
- --colorful-error-color: #ff0000;
- --colorful-error-extra-color: #ff0000;
-}
diff --git a/frontend/static/themes/vaporwave.css b/frontend/static/themes/vaporwave.css
deleted file mode 100644
index e9d007c22373..000000000000
--- a/frontend/static/themes/vaporwave.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #a4a7ea;
- --main-color: #e368da;
- --caret-color: #28cafe;
- --sub-color: #7c7faf;
- --sub-alt-color: #989bd9;
- --text-color: #f1ebf1;
- --error-color: #573ca9;
- --error-extra-color: #3d2b77;
- --colorful-error-color: #28cafe;
- --colorful-error-extra-color: #25a9ce;
-}
diff --git a/frontend/static/themes/vesper.css b/frontend/static/themes/vesper.css
index c13b9a85e7fa..daacec339263 100644
--- a/frontend/static/themes/vesper.css
+++ b/frontend/static/themes/vesper.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #101010;
- --main-color: #ffc799;
- --caret-color: #99ffe4;
- --sub-color: #a0a0a0;
- --sub-alt-color: #1c1c1c;
- --text-color: #ffffff;
- --error-color: #ff8080;
- --error-extra-color: #b25959;
- --colorful-error-color: #ff8080;
- --colorful-error-extra-color: #b25959;
-}
-
/* Background & Text Colors */
#notificationCenter .notif.bad {
--notif-border-color: #b25959;
diff --git a/frontend/static/themes/vesper_light.css b/frontend/static/themes/vesper_light.css
index 00e227249399..d8c4e586c75a 100644
--- a/frontend/static/themes/vesper_light.css
+++ b/frontend/static/themes/vesper_light.css
@@ -1,16 +1,3 @@
-:root {
- --bg-color: #ffffff;
- --main-color: #fb7100;
- --caret-color: #067a6e;
- --sub-color: #a0a0a0;
- --sub-alt-color: #fff8f4;
- --text-color: #000000;
- --error-color: #ed2839;
- --error-extra-color: #ff6c72;
- --colorful-error-color: #ed2839;
- --colorful-error-extra-color: #ff6c72;
-}
-
#testConfig .spacer {
background: #efefef;
}
diff --git a/frontend/static/themes/viridescent.css b/frontend/static/themes/viridescent.css
deleted file mode 100644
index f0bcaca8d446..000000000000
--- a/frontend/static/themes/viridescent.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #2c3333;
- --main-color: #95d5b2;
- --caret-color: #f0d3c9;
- --sub-color: #84a98c;
- --sub-alt-color: #232828;
- --text-color: #e9f5db;
- --error-color: #ff4646;
- --error-extra-color: #ab2f2f;
- --colorful-error-color: #bd4141;
- --colorful-error-extra-color: #883434;
-}
diff --git a/frontend/static/themes/voc.css b/frontend/static/themes/voc.css
deleted file mode 100644
index bc80ba861e01..000000000000
--- a/frontend/static/themes/voc.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #190618;
- --main-color: #e0caac;
- --caret-color: #e0caac;
- --sub-color: #4c1e48;
- --sub-alt-color: #2c0c28;
- --text-color: #eeeae4;
- --error-color: #af3735;
- --error-extra-color: #7e2a29;
- --colorful-error-color: #af3735;
- --colorful-error-extra-color: #7e2a29;
-}
diff --git a/frontend/static/themes/vscode.css b/frontend/static/themes/vscode.css
deleted file mode 100644
index 7fd41d46db61..000000000000
--- a/frontend/static/themes/vscode.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1e1e1e;
- --main-color: #007acc;
- --caret-color: #569cd6;
- --sub-color: #4d4d4d;
- --sub-alt-color: #191919;
- --text-color: #d4d4d4;
- --error-color: #f44747;
- --error-extra-color: #f44747;
- --colorful-error-color: #f44747;
- --colorful-error-extra-color: #f44747;
-}
diff --git a/frontend/static/themes/watermelon.css b/frontend/static/themes/watermelon.css
deleted file mode 100644
index c8c40e9459a7..000000000000
--- a/frontend/static/themes/watermelon.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1f4437;
- --main-color: #d6686f;
- --caret-color: #d6686f;
- --sub-color: #3e7a65;
- --sub-alt-color: #244d3f;
- --text-color: #cdc6bc;
- --error-color: #c82931;
- --error-extra-color: #ac1823;
- --colorful-error-color: #c82931;
- --colorful-error-extra-color: #ac1823;
-}
diff --git a/frontend/static/themes/wavez.css b/frontend/static/themes/wavez.css
deleted file mode 100644
index 4b383f00720d..000000000000
--- a/frontend/static/themes/wavez.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #1c292f;
- --main-color: #6bde3b;
- --caret-color: #6bde3b;
- --sub-color: #1f5e6b;
- --sub-alt-color: #1b3238;
- --text-color: #e9efe6;
- --error-color: #ca4754;
- --error-extra-color: #7e2a33;
- --colorful-error-color: #ca4754;
- --colorful-error-extra-color: #7e2a33;
-}
diff --git a/frontend/static/themes/witch_girl.css b/frontend/static/themes/witch_girl.css
deleted file mode 100644
index df603eef4964..000000000000
--- a/frontend/static/themes/witch_girl.css
+++ /dev/null
@@ -1,12 +0,0 @@
-:root {
- --bg-color: #f3dbda;
- --main-color: #56786a;
- --caret-color: #afc5bd;
- --sub-color: #ddb4a7;
- --sub-alt-color: #e7c8be;
- --text-color: #56786a;
- --error-color: #b29a91;
- --error-extra-color: #b29a91;
- --colorful-error-color: #b29a91;
- --colorful-error-extra-color: #b29a91;
-}
diff --git a/frontend/vitest.config.ts b/frontend/vitest.config.ts
index d2801ddf620f..72b4aedbfcfb 100644
--- a/frontend/vitest.config.ts
+++ b/frontend/vitest.config.ts
@@ -37,6 +37,9 @@ export const projects: UserWorkspaceConfig[] = [
plugins,
},
{
+ ssr: {
+ noExternal: ["@solidjs/meta"],
+ },
test: {
name: { label: "jsx", color: "green" },
include: ["__tests__/**/*.spec.tsx"],
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9c0a96742a24..61dd6e740737 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -279,6 +279,9 @@ importers:
'@sentry/vite-plugin':
specifier: 3.3.1
version: 3.3.1(encoding@0.1.13)
+ '@solidjs/meta':
+ specifier: 0.29.4
+ version: 0.29.4(solid-js@1.9.10)
'@ts-rest/core':
specifier: 3.52.1
version: 3.52.1(@types/node@24.9.1)(zod@3.23.8)
@@ -3268,6 +3271,11 @@ packages:
engines: {node: '>=8.10'}
hasBin: true
+ '@solidjs/meta@0.29.4':
+ resolution: {integrity: sha512-zdIWBGpR9zGx1p1bzIPqF5Gs+Ks/BH8R6fWhmUa/dcK1L2rUC8BAcZJzNRYBQv74kScf1TSOs0EY//Vd/I0V8g==}
+ peerDependencies:
+ solid-js: '>=1.8.4'
+
'@solidjs/testing-library@0.8.10':
resolution: {integrity: sha512-qdeuIerwyq7oQTIrrKvV0aL9aFeuwTd86VYD3afdq5HYEwoox1OBTJy4y8A3TFZr8oAR0nujYgCzY/8wgHGfeQ==}
engines: {node: '>= 14'}
@@ -12990,6 +12998,10 @@ snapshots:
ignore: 5.3.2
p-map: 4.0.0
+ '@solidjs/meta@0.29.4(solid-js@1.9.10)':
+ dependencies:
+ solid-js: 1.9.10
+
'@solidjs/testing-library@0.8.10(solid-js@1.9.10)':
dependencies:
'@testing-library/dom': 10.4.1