From 3b9b73bc4bffd223ac81dd43e0f5d4430b5d998a Mon Sep 17 00:00:00 2001
From: Mathis HERRIOT <197931332+0x485254@users.noreply.github.com>
Date: Tue, 20 Jan 2026 16:27:24 +0100
Subject: [PATCH] feat(theme): add theme toggle component and integrate into
sidebar
---
frontend/src/components/app-sidebar.tsx | 9 ++++++
frontend/src/components/mode-toggle.tsx | 39 +++++++++++++++++++++++
frontend/src/providers/theme-provider.tsx | 11 +++++++
3 files changed, 59 insertions(+)
create mode 100644 frontend/src/components/mode-toggle.tsx
create mode 100644 frontend/src/providers/theme-provider.tsx
diff --git a/frontend/src/components/app-sidebar.tsx b/frontend/src/components/app-sidebar.tsx
index df1aa50..df6f3b8 100644
--- a/frontend/src/components/app-sidebar.tsx
+++ b/frontend/src/components/app-sidebar.tsx
@@ -20,6 +20,7 @@ import Link from "next/link";
import { usePathname, useSearchParams } from "next/navigation";
import * as React from "react";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
+import { ModeToggle } from "@/components/mode-toggle";
import {
Collapsible,
CollapsibleContent,
@@ -286,6 +287,14 @@ export function AppSidebar() {
)}
+
+
+
+ Thème
+
+
+
+
diff --git a/frontend/src/components/mode-toggle.tsx b/frontend/src/components/mode-toggle.tsx
new file mode 100644
index 0000000..a4e9ef6
--- /dev/null
+++ b/frontend/src/components/mode-toggle.tsx
@@ -0,0 +1,39 @@
+"use client";
+
+import { Moon, Sun } from "lucide-react";
+import { useTheme } from "next-themes";
+import * as React from "react";
+import { Button } from "@/components/ui/button";
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuTrigger,
+} from "@/components/ui/dropdown-menu";
+
+export function ModeToggle() {
+ const { setTheme } = useTheme();
+
+ return (
+
+
+
+
+
+ setTheme("light")}>
+ Clair
+
+ setTheme("dark")}>
+ Sombre
+
+ setTheme("system")}>
+ Système
+
+
+
+ );
+}
diff --git a/frontend/src/providers/theme-provider.tsx b/frontend/src/providers/theme-provider.tsx
new file mode 100644
index 0000000..a345c4e
--- /dev/null
+++ b/frontend/src/providers/theme-provider.tsx
@@ -0,0 +1,11 @@
+"use client";
+
+import type * as React from "react";
+import { ThemeProvider as NextThemesProvider } from "next-themes";
+
+export function ThemeProvider({
+ children,
+ ...props
+}: React.ComponentProps) {
+ return {children};
+}