feat: implement theming system with persistence and add new themes

This commit is contained in:
letieu
2025-12-10 06:08:01 +07:00
parent db618b99fc
commit 2e91f3a1c1
16 changed files with 457 additions and 16 deletions

25
themes/ayu-dark.css Normal file
View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #0A0E14;
--terminal-fg: #B3B1AD;
/* ANSI Palette */
--terminal-black: #01060E;
--terminal-red: #FF3333;
--terminal-green: #BAE67E;
--terminal-yellow: #FFD580;
--terminal-blue: #73D0FF;
--terminal-magenta: #D4BFFF;
--terminal-cyan: #5FD7FF;
--terminal-white: #D9D7CE;
--terminal-purple: #D4BFFF;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #393b44;
--surface: #1F2229;
--muted: #5C6773;
}

25
themes/ayu-light.css Normal file
View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #fafafa;
--terminal-fg: #5c6773;
/* ANSI Palette */
--terminal-black: #f0f0f0;
--terminal-red: #f51818;
--terminal-green: #5e8504;
--terminal-yellow: #f2ae00;
--terminal-blue: #36a3d9;
--terminal-magenta: #a37acc;
--terminal-cyan: #4cbf99;
--terminal-white: #5c6773;
--terminal-purple: #a37acc;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #e6e6e6;
--surface: #f5f5f5;
--muted: #8a9199;
}

View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #eff1f5;
--terminal-fg: #4c4f69;
/* ANSI Palette */
--terminal-black: #ccd0da;
--terminal-red: #d20f39;
--terminal-green: #40a02b;
--terminal-yellow: #df8e1d;
--terminal-blue: #1e66f5;
--terminal-magenta: #8839ef;
--terminal-cyan: #04a5e5;
--terminal-white: #4c4f69;
--terminal-purple: #8839ef;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #bcc0cc;
--surface: #e6e9ef;
--muted: #acb0be;
}

View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #1e1e2e;
--terminal-fg: #cdd6f4;
/* ANSI Palette */
--terminal-black: #45475a;
--terminal-red: #f38ba8;
--terminal-green: #a6e3a1;
--terminal-yellow: #f9e2af;
--terminal-blue: #89b4fa;
--terminal-magenta: #cba6f7;
--terminal-cyan: #89dceb;
--terminal-white: #bac2de;
--terminal-purple: #cba6f7;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #585b70;
--surface: #313244;
--muted: #a6adc8;
}

24
themes/default.css Normal file
View File

@@ -0,0 +1,24 @@
:root {
--terminal-bg: #050505;
--terminal-fg: #cccccc;
/* ANSI Palette */
--terminal-black: #000000;
--terminal-red: #ff5555;
--terminal-green: #50fa7b;
--terminal-yellow: #f1fa8c;
--terminal-blue: #bd93f9;
--terminal-magenta: #ff79c6;
--terminal-cyan: #8be9fd;
--terminal-white: #ffffff;
/* Semantic Colors */
--primary: var(--terminal-cyan);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-blue);
--border-color: #333333;
--surface: #000000;
--muted: #666666;
}

25
themes/dracula.css Normal file
View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #282a36;
--terminal-fg: #f8f8f2;
/* ANSI Palette */
--terminal-black: #000000;
--terminal-red: #ff5555;
--terminal-green: #50fa7b;
--terminal-yellow: #f1fa8c;
--terminal-blue: #bd93f9;
--terminal-magenta: #ff79c6;
--terminal-cyan: #8be9fd;
--terminal-white: #f8f8f2;
--terminal-purple: #bd93f9;
/* Semantic Colors */
--primary: var(--terminal-purple);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #44475a;
--surface: #282a36;
--muted: #6272a4;
}

25
themes/gruvbox-dark.css Normal file
View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #282828;
--terminal-fg: #ebdbb2;
/* ANSI Palette */
--terminal-black: #282828;
--terminal-red: #cc241d;
--terminal-green: #98971a;
--terminal-yellow: #d79921;
--terminal-blue: #458588;
--terminal-magenta: #b16286;
--terminal-cyan: #689d6a;
--terminal-white: #a89984;
--terminal-purple: #b16286;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #504945;
--surface: #3c3836;
--muted: #928374;
}

25
themes/gruvbox-light.css Normal file
View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #fbf1c7;
--terminal-fg: #3c3836;
/* ANSI Palette */
--terminal-black: #fbf1c7;
--terminal-red: #9d0006;
--terminal-green: #79740e;
--terminal-yellow: #b57614;
--terminal-blue: #076678;
--terminal-magenta: #8f3f71;
--terminal-cyan: #427b58;
--terminal-white: #3c3836;
--terminal-purple: #8f3f71;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #d5c4a1;
--surface: #ebdbb2;
--muted: #7c6f64;
}

24
themes/light.css Normal file
View File

@@ -0,0 +1,24 @@
:root {
--terminal-bg: #f5f5f5;
--terminal-fg: #333333;
/* ANSI Palette */
--terminal-black: #000000;
--terminal-red: #dc3545;
--terminal-green: #28a745;
--terminal-yellow: #ffc107;
--terminal-blue: #007bff;
--terminal-magenta: #e83e8c;
--terminal-cyan: #17a2b8;
--terminal-white: #ffffff;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #dddddd;
--surface: #ffffff;
--muted: #6c757d;
}

View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #faf4ed;
--terminal-fg: #575279;
/* ANSI Palette */
--terminal-black: #f2e9de;
--terminal-red: #d7827e;
--terminal-green: #286983;
--terminal-yellow: #ea9d34;
--terminal-blue: #56949f;
--terminal-magenta: #907aa9;
--terminal-cyan: #d7827e;
--terminal-white: #575279;
--terminal-purple: #907aa9;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #e4e2e0;
--surface: #fffaf3;
--muted: #9893a5;
}

25
themes/rose-pine.css Normal file
View File

@@ -0,0 +1,25 @@
:root {
--terminal-bg: #191724;
--terminal-fg: #e0def4;
/* ANSI Palette */
--terminal-black: #26233a;
--terminal-red: #eb6f92;
--terminal-green: #31748f;
--terminal-yellow: #f6c177;
--terminal-blue: #9ccfd8;
--terminal-magenta: #c4a7e7;
--terminal-cyan: #ebbcba;
--terminal-white: #e0def4;
--terminal-purple: #c4a7e7;
/* Semantic Colors */
--primary: var(--terminal-blue);
--danger: var(--terminal-red);
--success: var(--terminal-green);
--warning: var(--terminal-yellow);
--info: var(--terminal-cyan);
--border-color: #555169;
--surface: #1f1d2e;
--muted: #6e6a86;
}