diff --git a/sample_interface/src/app/App.tsx b/sample_interface/src/app/App.tsx
index dc6570605..31e904aae 100644
--- a/sample_interface/src/app/App.tsx
+++ b/sample_interface/src/app/App.tsx
@@ -3,20 +3,27 @@ import { router } from "./routes";
import { useDisplayMode } from "./hooks/useDisplayMode";
import { useSensorPolling } from "./hooks/useSensorPolling";
import { useEffect } from "react";
+import { useThemeStore } from "./stores/themeStore";
function AppContent() {
const displayMode = useDisplayMode();
const { start, stop } = useSensorPolling({ enabled: true });
+ const theme = useThemeStore((state) => state.theme);
useEffect(() => {
start();
return () => stop();
}, [start, stop]);
+ useEffect(() => {
+ document.documentElement.classList.remove('light', 'dark');
+ document.documentElement.classList.add(theme);
+ }, [theme]);
+
return (
diff --git a/sample_interface/src/app/components/Sidebar.tsx b/sample_interface/src/app/components/Sidebar.tsx
index ba7be65d5..c42981a74 100644
--- a/sample_interface/src/app/components/Sidebar.tsx
+++ b/sample_interface/src/app/components/Sidebar.tsx
@@ -75,7 +75,7 @@ const menuItems: MenuItem[] = [
},
{
id: "setting",
- label: "SETTING",
+ label: "SETTINGS",
icon: ,
path: "/setting",
},
diff --git a/sample_interface/src/app/components/views/SettingView.tsx b/sample_interface/src/app/components/views/SettingView.tsx
index bc76a119a..71d7f73f3 100644
--- a/sample_interface/src/app/components/views/SettingView.tsx
+++ b/sample_interface/src/app/components/views/SettingView.tsx
@@ -2,9 +2,12 @@ import { Card, CardContent, CardHeader, CardTitle } from "../ui/card";
import { Button } from "../ui/button";
import { Switch } from "../ui/switch";
import { Label } from "../ui/label";
-import { Settings } from "lucide-react";
+import { Settings, Sun, Moon } from "lucide-react";
+import { useThemeStore } from "../../stores/themeStore";
export function SettingView() {
+ const { theme, toggleTheme } = useThemeStore();
+
return (
@@ -17,6 +20,25 @@ export function SettingView() {
Display Settings
+ {/* Light/Dark Mode */}
+
+
+ {theme === 'dark' ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
diff --git a/sample_interface/src/app/stores/themeStore.ts b/sample_interface/src/app/stores/themeStore.ts
new file mode 100644
index 000000000..6f52e8d73
--- /dev/null
+++ b/sample_interface/src/app/stores/themeStore.ts
@@ -0,0 +1,23 @@
+import { create } from 'zustand';
+import { persist } from 'zustand/middleware';
+
+type Theme = 'light' | 'dark';
+
+interface ThemeState {
+ theme: Theme;
+ setTheme: (theme: Theme) => void;
+ toggleTheme: () => void;
+}
+
+export const useThemeStore = create()(
+ persist(
+ (set) => ({
+ theme: 'dark',
+ setTheme: (theme) => set({ theme }),
+ toggleTheme: () => set((state) => ({ theme: state.theme === 'dark' ? 'light' : 'dark' })),
+ }),
+ {
+ name: 'theme-storage',
+ }
+ )
+);