Switch theme btn

This commit is contained in:
T'JAMPENS QUENTIN p2406187 committed 2025-12-07 01:54:32 +01:00
1 parent 0188ac43bf
commit b0de796c45
3 files changed
+37 -3

No files matched your search

+15 -3
View File
@@ -13,9 +13,6 @@ const Background = ({ children, className }) => {
};
useEffect(() => {
setTheme(localStorage.getItem("theme") ? localStorage.getItem("theme") : "light");
circlesRef.current.forEach((circle) => {
if (circle) {
const { x, y } = getRandomTranslation();
@@ -25,6 +22,21 @@ const Background = ({ children, className }) => {
});
}, []);
useEffect(() => {
const updateTheme = () => {
setTheme(localStorage.getItem("theme") || "light");
};
updateTheme(); // Initial load
window.addEventListener("theme-changed", updateTheme);
return () => {
window.removeEventListener("theme-changed", updateTheme);
};
}, []);
return (
<div className={`${styles.backgroundContainer} ${className || ''} ${theme === "light" ? styles.backgroundLight : styles.backgroundDark}`}>
<div
+16
View File
@@ -15,6 +15,19 @@ function ProfilePage() {
logout();
}
const switchTheme = () => {
const currentTheme = localStorage.getItem("theme");
let newTheme = currentTheme === "light" ? "dark" : "light";
if(currentTheme === null) newTheme = "dark";
localStorage.setItem("theme", newTheme);
window.dispatchEvent(new Event("theme-changed"));
};
return (
<div className={styles.container}>
<div className={`${styles.profileboard} glassCard`}>
@@ -29,8 +42,11 @@ function ProfilePage() {
<div className={styles.description}>
<div className={styles.headerProfile}>
<h2> {user.name} {user.lastname} </h2>
<div className={styles.settingsBtns}>
<Button variant={"default"} onClick={switchTheme}> Changer de thème </Button>
<Button variant={"danger"} onClick={handleLogout}> Déconnexion </Button>
</div>
</div>
<div className={styles.topDescription}>
<div className={styles.infoBlock}>
<p><strong>Role :</strong> {user.role}</p>
+6
View File
@@ -72,6 +72,12 @@
width:90%;
}
.settingsBtns {
display: flex;
gap: 5px;
justify-content: right;
}
@media screen and (min-width: 768px) {
.contentWrapper {
flex-direction: row;