From a7cbd0549c05641964666bd27cf098fdfe284626 Mon Sep 17 00:00:00 2001 From: JiyaBatra Date: Wed, 28 Jan 2026 09:49:53 +0530 Subject: [PATCH] issue of light/dark theme is resolved --- savebook/app/globals.css | 16 ++++++++++ savebook/components/common/Navbar.js | 46 ++++++++++++++++++++++++++++ savebook/talwind.config.js | 12 ++++++++ 3 files changed, 74 insertions(+) create mode 100644 savebook/talwind.config.js diff --git a/savebook/app/globals.css b/savebook/app/globals.css index 333fcbc..daeb521 100644 --- a/savebook/app/globals.css +++ b/savebook/app/globals.css @@ -9,3 +9,19 @@ input::-ms-reveal, input::-ms-clear { display: none; } + +/* Light mode default */ +body { + @apply bg-white text-gray-900; +} + +/* Dark mode */ +.dark body { + @apply bg-gray-900 text-gray-100; +} + +/* Hide default browser password reveal button */ +input::-ms-reveal, +input::-ms-clear { + display: none; +} diff --git a/savebook/components/common/Navbar.js b/savebook/components/common/Navbar.js index b836db6..93a5b2b 100644 --- a/savebook/components/common/Navbar.js +++ b/savebook/components/common/Navbar.js @@ -9,7 +9,29 @@ export default function Navbar() { const [isMenuOpen, setIsMenuOpen] = useState(false); const [isScrolled, setIsScrolled] = useState(false); const [isClient, setIsClient] = useState(false); + const [theme, setTheme] = useState("light"); const { isAuthenticated, user, logout, loading } = useAuth(); + //dark mode state + useEffect(() => { + if (typeof window !== 'undefined') { + const savedTheme = localStorage.getItem('theme') || 'light'; + setTheme(savedTheme); + } + }, []); + + useEffect(() => { + if (theme === "dark") { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); + } + localStorage.setItem('theme', theme); + }, [theme]); + + const toggleTheme = () => { + setTheme(theme === "light" ? "dark" : "light"); + }; + // Handle client-side mounting useEffect(() => { @@ -77,6 +99,7 @@ export default function Navbar() { SaveBook + {/* Loading skeleton */}
@@ -110,6 +133,16 @@ export default function Navbar() { {/* Desktop Navigation */}
+ {/* Theme Toggle */} + {loading ? ( // Loading skeleton
@@ -169,7 +202,10 @@ export default function Navbar() { )}
) : ( + + // Not authenticated - show login/signup buttons +
+ {/* Theme Toggle */} + {loading ? (
) : isAuthenticated ? ( diff --git a/savebook/talwind.config.js b/savebook/talwind.config.js new file mode 100644 index 0000000..98d7559 --- /dev/null +++ b/savebook/talwind.config.js @@ -0,0 +1,12 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + darkMode: 'class', // class-based dark mode + content: [ + './app/**/*.{js,ts,jsx,tsx}', + './components/**/*.{js,ts,jsx,tsx}', + ], + theme: { + extend: {}, + }, + plugins: [], +}