diff --git a/extras/speaker-recognition/webui/src/App.tsx b/extras/speaker-recognition/webui/src/App.tsx index 9d4650b5..4c12ca29 100644 --- a/extras/speaker-recognition/webui/src/App.tsx +++ b/extras/speaker-recognition/webui/src/App.tsx @@ -1,5 +1,6 @@ import { BrowserRouter as Router, Routes, Route } from 'react-router-dom' import { UserProvider } from './contexts/UserContext' +import { ThemeProvider } from './contexts/ThemeContext' import Layout from './components/layout/Layout' import AudioViewer from './pages/AudioViewer' import Annotation from './pages/Annotation' @@ -12,22 +13,24 @@ import './App.css' function App() { return ( - - - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - - - + + + + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + + ) } diff --git a/extras/speaker-recognition/webui/src/components/ThemeToggle.tsx b/extras/speaker-recognition/webui/src/components/ThemeToggle.tsx new file mode 100644 index 00000000..34d916bd --- /dev/null +++ b/extras/speaker-recognition/webui/src/components/ThemeToggle.tsx @@ -0,0 +1,21 @@ +import React from 'react' +import { Sun, Moon } from 'lucide-react' +import { useTheme } from '../contexts/ThemeContext' + +export default function ThemeToggle() { + const { isDark, toggleTheme } = useTheme() + + return ( + + ) +} diff --git a/extras/speaker-recognition/webui/src/components/UserSelector.tsx b/extras/speaker-recognition/webui/src/components/UserSelector.tsx index ece819bb..c9b2d7ea 100644 --- a/extras/speaker-recognition/webui/src/components/UserSelector.tsx +++ b/extras/speaker-recognition/webui/src/components/UserSelector.tsx @@ -60,7 +60,7 @@ export default function UserSelector() { {/* Dropdown Menu */} {isDropdownOpen && ( -
+
{/* Existing Users */} {users.length > 0 && ( diff --git a/extras/speaker-recognition/webui/src/components/layout/Layout.tsx b/extras/speaker-recognition/webui/src/components/layout/Layout.tsx index 29c8d681..4c85b6af 100644 --- a/extras/speaker-recognition/webui/src/components/layout/Layout.tsx +++ b/extras/speaker-recognition/webui/src/components/layout/Layout.tsx @@ -3,6 +3,7 @@ import { Link, useLocation } from 'react-router-dom' import { Mic, Music, FileText, Users, Brain, User, Radio, Wifi } from 'lucide-react' import UserSelector from '../UserSelector' import ConnectionStatus from '../ConnectionStatus' +import ThemeToggle from '../ThemeToggle' interface LayoutProps { children: React.ReactNode @@ -22,20 +23,21 @@ export default function Layout({ children }: LayoutProps) { ] return ( -
+
{/* Header */} -
+
-

+

Speaker Recognition System

+ -
+
@@ -46,7 +48,7 @@ export default function Layout({ children }: LayoutProps) {
{/* Sidebar Navigation */}