diff --git a/src/app.css b/src/app.css index c0062b5..7d5e682 100644 --- a/src/app.css +++ b/src/app.css @@ -128,8 +128,37 @@ } } -/* Manual dark mode via .dark class */ -.dark { +/* Manual theme override via classes (higher specificity than media query) */ +:root.light { + --color-rosewater: #c14a4a; + --color-flamingo: #c14a4a; + --color-pink: #945e80; + --color-mauve: #945e80; + --color-red: #c14a4a; + --color-maroon: #c14a4a; + --color-peach: #c35e0a; + --color-yellow: #a96b2c; + --color-green: #6c782e; + --color-teal: #4c7a5d; + --color-sky: #4c7a5d; + --color-sapphire: #4c7a5d; + --color-blue: #45707a; + --color-lavender: #45707a; + --color-text: #654735; + --color-subtext1: #7b5d44; + --color-subtext0: #8f6f56; + --color-overlay2: #a28368; + --color-overlay1: #b6977a; + --color-overlay0: #c9aa8c; + --color-surface2: #a79c86; + --color-surface1: #c9c19f; + --color-surface0: #dfd6b1; + --color-base: #fbf1c7; + --color-mantle: #f3eac1; + --color-crust: #e7deb7; +} + +:root.dark { --color-rosewater: #efc9c2; --color-flamingo: #ebb2b2; --color-pink: #f2a7de; @@ -496,11 +525,12 @@ input[type="checkbox"]:checked::before { } /* Hamburger menu button - only show on non-touch devices under mobile breakpoint */ -@media (max-width: 767px) and (hover: hover) and (pointer: fine) { +@media (max-width: 767px) { .hamburger-menu-btn { display: block !important; } } + @keyframes shaker { 0% { transform: rotate(0deg); diff --git a/src/components/Bars.tsx b/src/components/Bars.tsx index 8f7b56a..48deef8 100644 --- a/src/components/Bars.tsx +++ b/src/components/Bars.tsx @@ -9,6 +9,124 @@ import LinkedIn from "./icons/LinkedIn"; import MoonIcon from "./icons/MoonIcon"; import SunIcon from "./icons/SunIcon"; +export function RightBarContent() { + const [isDark, setIsDark] = createSignal(false); + + onMount(() => { + const prefersDark = window.matchMedia( + "(prefers-color-scheme: dark)" + ).matches; + + if (prefersDark) { + setIsDark(true); + document.documentElement.classList.add("dark"); + document.documentElement.classList.remove("light"); + } else { + setIsDark(false); + document.documentElement.classList.add("light"); + document.documentElement.classList.remove("dark"); + } + }); + + const toggleDarkMode = () => { + const newDarkMode = !isDark(); + setIsDark(newDarkMode); + + if (newDarkMode) { + document.documentElement.classList.add("dark"); + document.documentElement.classList.remove("light"); + } else { + document.documentElement.classList.add("light"); + document.documentElement.classList.remove("dark"); + } + }; + + return ( +