diff --git a/docker/ui/src/App.tsx b/docker/ui/src/App.tsx index 66302ef..643c06a 100644 --- a/docker/ui/src/App.tsx +++ b/docker/ui/src/App.tsx @@ -1,5 +1,5 @@ -import { useState } from 'react' -import { LayoutDashboard, Disc, Settings, LogOut } from 'lucide-react' +import { useState, useEffect } from 'react' +import { LayoutDashboard, Disc, Settings, LogOut, Sun, Moon } from 'lucide-react' import Dashboard from './pages/Dashboard' import MetadataPreview from './pages/MetadataPreview' import SettingsPage from './pages/Settings' @@ -8,6 +8,26 @@ type Page = 'dashboard' | 'metadata' | 'settings' function App() { const [page, setPage] = useState('dashboard') + const [darkMode, setDarkMode] = useState(false) + + useEffect(() => { + const savedTheme = localStorage.getItem('theme') + const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches + + if (savedTheme === 'dark' || (!savedTheme && prefersDark)) { + setDarkMode(true) + document.documentElement.setAttribute('data-theme', 'dark') + } else { + document.documentElement.setAttribute('data-theme', 'light') + } + }, []) + + const toggleTheme = () => { + const newTheme = darkMode ? 'light' : 'dark' + setDarkMode(!darkMode) + localStorage.setItem('theme', newTheme) + document.documentElement.setAttribute('data-theme', newTheme) + } const navItems = [ { id: 'dashboard', label: 'Dashboard', icon: LayoutDashboard }, @@ -19,7 +39,7 @@ function App() {
{/* Sidebar */} -