From 2cb0f99d1723b4cc1670da045a90ba5d63b15729 Mon Sep 17 00:00:00 2001 From: Ashrithhn Date: Thu, 9 Oct 2025 13:00:34 +0530 Subject: [PATCH] fix: background not changing in dark/light mode toggle --- backend/node_modules/.package-lock.json | 43 +++++++++++++++++++++++ backend/package-lock.json | 45 +++++++++++++++++++++++++ frontend/src/Componets/ThemeToggle.css | 19 +++++++++++ frontend/src/Pages/Home/Home.jsx | 21 ++++++------ 4 files changed, 118 insertions(+), 10 deletions(-) diff --git a/backend/node_modules/.package-lock.json b/backend/node_modules/.package-lock.json index b314bb8..9fa1226 100644 --- a/backend/node_modules/.package-lock.json +++ b/backend/node_modules/.package-lock.json @@ -534,6 +534,43 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/express-validator": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.1.tgz", + "integrity": "sha512-CjNE6aakfpuwGaHQZ3m8ltCG2Qvivd7RHtVMS/6nVxOM7xVGqr4bhflsm4+N5FP5zI7Zxp+Hae+9RE+o8e3ZOQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "validator": "~13.12.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/express-validator/node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -914,6 +951,12 @@ "node": ">=12.0.0" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", diff --git a/backend/package-lock.json b/backend/package-lock.json index 483e61d..cc7209f 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -16,6 +16,8 @@ "cors": "^2.8.5", "dotenv": "^16.5.0", "express": "^5.1.0", + "express-rate-limit": "^7.1.5", + "express-validator": "^7.0.1", "jsonwebtoken": "^9.0.2", "mongoose": "^8.15.1", "multer": "^2.0.1", @@ -557,6 +559,43 @@ "url": "https://opencollective.com/express" } }, + "node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/express-validator": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.1.tgz", + "integrity": "sha512-CjNE6aakfpuwGaHQZ3m8ltCG2Qvivd7RHtVMS/6nVxOM7xVGqr4bhflsm4+N5FP5zI7Zxp+Hae+9RE+o8e3ZOQ==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "validator": "~13.12.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/express-validator/node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -937,6 +976,12 @@ "node": ">=12.0.0" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", diff --git a/frontend/src/Componets/ThemeToggle.css b/frontend/src/Componets/ThemeToggle.css index deaa7c1..2767305 100644 --- a/frontend/src/Componets/ThemeToggle.css +++ b/frontend/src/Componets/ThemeToggle.css @@ -175,4 +175,23 @@ border-color: #1e90ff; box-shadow: 0 0 5px #1e90ff; } +/* =============================== + Global Light/Dark Background +=============================== */ + +/* Light mode (default) */ +.light body, +.light .Home { + background-color: #ffffff !important; + color: #000000 !important; + transition: background-color 0.4s ease, color 0.4s ease; +} + +/* Dark mode */ +.dark body, +.dark .Home { + background-color: #0d0d0d !important; /* or #121212 for a softer dark */ + color: #f0f0f0 !important; + transition: background-color 0.4s ease, color 0.4s ease; +} diff --git a/frontend/src/Pages/Home/Home.jsx b/frontend/src/Pages/Home/Home.jsx index 8e023fb..ac8468b 100644 --- a/frontend/src/Pages/Home/Home.jsx +++ b/frontend/src/Pages/Home/Home.jsx @@ -19,20 +19,21 @@ export const Home = () => { const token = localStorage.getItem("token"); if (token) { - axios.get(`${import.meta.env.VITE_API_URL}/users/me`, { - headers: { Authorization: `Bearer ${token}` }, - }) - .then(res => { - setUser(res.data.user); - localStorage.setItem("user", JSON.stringify(res.data.user)); // ✅ Keep in sync - }) - .catch(err => console.error("Error fetching user:", err)); + axios + .get(`${import.meta.env.VITE_API_URL}/users/me`, { + headers: { Authorization: `Bearer ${token}` }, + }) + .then((res) => { + setUser(res.data.user); + localStorage.setItem("user", JSON.stringify(res.data.user)); // ✅ Keep in sync + }) + .catch((err) => console.error("Error fetching user:", err)); } }, []); return ( -
-
{/* Add this line */} +
+
{/* ✅ Show user info if logged in */}