Skip to content

Commit b47b2eb

Browse files
committed
Update Header.tsx
1 parent c44196e commit b47b2eb

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

web/src/layouts/Header.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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"
2121
import { Button } from "@/components/ui/button"
2222
import { Badge } from "@/components/ui/badge"
2323
import {
@@ -31,6 +31,7 @@ import EnrollDialog from "@/components/dialogs/EnrollDialog"
3131
import { CrowdSecLogo } from "@/components/icons/CrowdSecLogo"
3232
import { useQuery } from "@tanstack/react-query"
3333
import { hostsAPI, setSelectedHost, type HostInfo } from "@/lib/api"
34+
import { useTheme } from "@/contexts/ThemeContext"
3435

3536
interface HeaderProps {
3637
onMenuClick?: () => void
@@ -40,6 +41,7 @@ interface HeaderProps {
4041

4142
export 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

Comments
 (0)