mirror of
https://github.com/dergigi/boris.git
synced 2026-01-09 18:04:41 +01:00
feat(theme): add color theme variants for light and dark modes
- Add darkColorTheme: black, midnight (default), charcoal - Add lightColorTheme: paper-white (default), sepia, ivory - Extend UserSettings with color theme fields - Update ThemeSettings UI to show color options - Add CSS variables for all color theme variants - Sepia and Ivory have warm, reading-friendly palettes - Black offers true black for OLED screens - All color themes sync via Nostr (NIP-78)
This commit is contained in:
@@ -110,4 +110,125 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* Dark Color Theme Variants */
|
||||
/* Midnight (default) - current zinc palette */
|
||||
:root.dark-midnight {
|
||||
--color-bg: #18181b; /* zinc-900 */
|
||||
--color-bg-elevated: #27272a; /* zinc-800 */
|
||||
--color-bg-subtle: #1e1e1e;
|
||||
--color-border: #3f3f46; /* zinc-700 */
|
||||
--color-border-subtle: #52525b; /* zinc-600 */
|
||||
}
|
||||
|
||||
/* Black - true black for OLED */
|
||||
:root.dark-black {
|
||||
--color-bg: #000000; /* true black */
|
||||
--color-bg-elevated: #0a0a0a; /* very dark gray */
|
||||
--color-bg-subtle: #050505;
|
||||
--color-border: #1a1a1a;
|
||||
--color-border-subtle: #2a2a2a;
|
||||
}
|
||||
|
||||
/* Charcoal - warmer, softer dark */
|
||||
:root.dark-charcoal {
|
||||
--color-bg: #1c1c1e; /* warmer dark */
|
||||
--color-bg-elevated: #2c2c2e;
|
||||
--color-bg-subtle: #242426;
|
||||
--color-border: #3a3a3c;
|
||||
--color-border-subtle: #48484a;
|
||||
}
|
||||
|
||||
/* Light Color Theme Variants */
|
||||
/* Paper White (default) - pure white */
|
||||
:root.light-paper-white {
|
||||
--color-bg: #ffffff; /* white */
|
||||
--color-bg-elevated: #f5f5f5; /* gray-100 */
|
||||
--color-bg-subtle: #fafafa; /* gray-50 */
|
||||
--color-border: #e5e7eb; /* gray-200 */
|
||||
--color-border-subtle: #d1d5db; /* gray-300 */
|
||||
}
|
||||
|
||||
/* Sepia - warm, reading-friendly */
|
||||
:root.light-sepia {
|
||||
--color-bg: #f4f1ea; /* warm beige */
|
||||
--color-bg-elevated: #ebe6db; /* darker beige */
|
||||
--color-bg-subtle: #f9f6f0; /* lighter beige */
|
||||
--color-border: #d4cfc4; /* warm gray border */
|
||||
--color-border-subtle: #c4bfb4;
|
||||
--color-text: #2d2a24; /* warm dark brown */
|
||||
--color-text-secondary: #5d5a54;
|
||||
--color-text-muted: #8d8a84;
|
||||
}
|
||||
|
||||
/* Ivory - soft, creamy */
|
||||
:root.light-ivory {
|
||||
--color-bg: #fffff0; /* ivory */
|
||||
--color-bg-elevated: #faf8f0; /* cream */
|
||||
--color-bg-subtle: #fefef8;
|
||||
--color-border: #e8e6de;
|
||||
--color-border-subtle: #d8d6ce;
|
||||
--color-text: #1a1a18; /* near black with warm tint */
|
||||
--color-text-secondary: #4a4a48;
|
||||
--color-text-muted: #7a7a78;
|
||||
}
|
||||
|
||||
/* System theme color variants */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root.theme-system.dark-midnight {
|
||||
--color-bg: #18181b;
|
||||
--color-bg-elevated: #27272a;
|
||||
--color-bg-subtle: #1e1e1e;
|
||||
--color-border: #3f3f46;
|
||||
--color-border-subtle: #52525b;
|
||||
}
|
||||
|
||||
:root.theme-system.dark-black {
|
||||
--color-bg: #000000;
|
||||
--color-bg-elevated: #0a0a0a;
|
||||
--color-bg-subtle: #050505;
|
||||
--color-border: #1a1a1a;
|
||||
--color-border-subtle: #2a2a2a;
|
||||
}
|
||||
|
||||
:root.theme-system.dark-charcoal {
|
||||
--color-bg: #1c1c1e;
|
||||
--color-bg-elevated: #2c2c2e;
|
||||
--color-bg-subtle: #242426;
|
||||
--color-border: #3a3a3c;
|
||||
--color-border-subtle: #48484a;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
:root.theme-system.light-paper-white {
|
||||
--color-bg: #ffffff;
|
||||
--color-bg-elevated: #f5f5f5;
|
||||
--color-bg-subtle: #fafafa;
|
||||
--color-border: #e5e7eb;
|
||||
--color-border-subtle: #d1d5db;
|
||||
}
|
||||
|
||||
:root.theme-system.light-sepia {
|
||||
--color-bg: #f4f1ea;
|
||||
--color-bg-elevated: #ebe6db;
|
||||
--color-bg-subtle: #f9f6f0;
|
||||
--color-border: #d4cfc4;
|
||||
--color-border-subtle: #c4bfb4;
|
||||
--color-text: #2d2a24;
|
||||
--color-text-secondary: #5d5a54;
|
||||
--color-text-muted: #8d8a84;
|
||||
}
|
||||
|
||||
:root.theme-system.light-ivory {
|
||||
--color-bg: #fffff0;
|
||||
--color-bg-elevated: #faf8f0;
|
||||
--color-bg-subtle: #fefef8;
|
||||
--color-border: #e8e6de;
|
||||
--color-border-subtle: #d8d6ce;
|
||||
--color-text: #1a1a18;
|
||||
--color-text-secondary: #4a4a48;
|
||||
--color-text-muted: #7a7a78;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user