@@ -17,7 +17,7 @@ import {
1717 DropdownMenuSeparator ,
1818 DropdownMenuTrigger ,
1919} from "@/components/ui/dropdown-menu"
20- import { User , Settings , Github , Book , Server , Menu , PanelLeftClose , PanelLeftOpen } from "lucide-react"
20+ import { User , Settings , Github , Book , Server , Menu , PanelLeftClose , PanelLeftOpen , Sun , Moon } from "lucide-react"
2121import { Button } from "@/components/ui/button"
2222import { Badge } from "@/components/ui/badge"
2323import {
@@ -31,6 +31,7 @@ import EnrollDialog from "@/components/dialogs/EnrollDialog"
3131import { CrowdSecLogo } from "@/components/icons/CrowdSecLogo"
3232import { useQuery } from "@tanstack/react-query"
3333import { hostsAPI , setSelectedHost , type HostInfo } from "@/lib/api"
34+ import { useTheme } from "@/contexts/ThemeContext"
3435
3536interface HeaderProps {
3637 onMenuClick ?: ( ) => void
@@ -40,6 +41,7 @@ interface HeaderProps {
4041
4142export default function Header ( { onMenuClick, isCollapsed, onToggleCollapse } : HeaderProps ) {
4243 const location = useLocation ( )
44+ const { theme, setTheme } = useTheme ( )
4345
4446 const { data : hostsData } = useQuery ( {
4547 queryKey : [ 'docker-hosts' ] ,
@@ -50,6 +52,10 @@ export default function Header({ onMenuClick, isCollapsed, onToggleCollapse }: H
5052 const hosts : HostInfo [ ] = hostsData ?. data ?. data ?? [ ]
5153 const showHostSelector = hosts . length > 1
5254
55+ const toggleTheme = ( ) => {
56+ setTheme ( theme === "dark" ? "light" : "dark" )
57+ }
58+
5359 // Generate breadcrumbs from path
5460 const pathSegments = location . pathname . split ( '/' ) . filter ( Boolean )
5561 const breadcrumbs = useMemo ( ( ) => [
@@ -159,7 +165,6 @@ export default function Header({ onMenuClick, isCollapsed, onToggleCollapse }: H
159165 target = "_blank"
160166 rel = "noopener noreferrer"
161167 >
162- { /* Discord Icon SVG */ }
163168 < svg
164169 role = "img"
165170 viewBox = "0 0 24 24"
@@ -173,6 +178,19 @@ export default function Header({ onMenuClick, isCollapsed, onToggleCollapse }: H
173178 </ Button >
174179 </ div >
175180
181+ < Button
182+ variant = "ghost"
183+ size = "icon"
184+ onClick = { toggleTheme }
185+ className = "text-muted-foreground hover:bg-accent hover:text-accent-foreground shrink-0"
186+ >
187+ { theme === "dark" ? (
188+ < Sun className = "h-5 w-5" />
189+ ) : (
190+ < Moon className = "h-5 w-5" />
191+ ) }
192+ </ Button >
193+
176194 < DropdownMenu >
177195 < DropdownMenuTrigger asChild >
178196 < Avatar className = "h-8 w-8 cursor-pointer hover:opacity-80 transition-opacity bg-transparent" >
0 commit comments