diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx
index a4f7cfd..e8829db 100644
--- a/frontend/src/app/layout.tsx
+++ b/frontend/src/app/layout.tsx
@@ -37,6 +37,26 @@ export default async function RootLayout({ children }: { children: React.ReactNo
return (
+
+
+
diff --git a/frontend/src/components/ThemeProvider.tsx b/frontend/src/components/ThemeProvider.tsx
index 8d898c8..0e86283 100644
--- a/frontend/src/components/ThemeProvider.tsx
+++ b/frontend/src/components/ThemeProvider.tsx
@@ -7,8 +7,8 @@ export default function ThemeProvider({ children }: { children: ReactNode }) {
return (
{children}
diff --git a/frontend/src/components/ThemeToggle.tsx b/frontend/src/components/ThemeToggle.tsx
index 2648fa3..b38adf8 100644
--- a/frontend/src/components/ThemeToggle.tsx
+++ b/frontend/src/components/ThemeToggle.tsx
@@ -4,7 +4,7 @@ import { useTheme } from "next-themes";
import { useEffect, useState } from "react";
export default function ThemeToggle() {
- const { resolvedTheme, setTheme } = useTheme();
+ const { theme, setTheme, resolvedTheme } = useTheme();
const [mounted, setMounted] = useState(false);
// Avoid hydration mismatch by only rendering after mount
@@ -14,26 +14,32 @@ export default function ThemeToggle() {
if (!mounted) {
return (
-
+
);
}
+ const cycleTheme = () => {
+ const themes = ["light", "dark", "system"];
+ const currentIndex = themes.indexOf(theme || "system");
+ const nextIndex = (currentIndex + 1) % themes.length;
+ setTheme(themes[nextIndex]);
+ };
+
return (
);