import { useEffect, useRef, useState } from "react"; import { ThemeToggle } from "@/components/theme-toggle"; import type { GatewayStatus } from "@/lib/gateway/GatewayClient"; import { Plug } from "lucide-react"; import { resolveGatewayStatusBadgeClass } from "./colorSemantics"; type HeaderBarProps = { status: GatewayStatus; onConnectionSettings: () => void; showConnectionSettings?: boolean; }; export const HeaderBar = ({ status, onConnectionSettings, showConnectionSettings = true, }: HeaderBarProps) => { const [menuOpen, setMenuOpen] = useState(false); const menuRef = useRef(null); useEffect(() => { if (!menuOpen) return; const onPointerDown = (event: MouseEvent) => { if (!menuRef.current) return; if (menuRef.current.contains(event.target as Node)) return; setMenuOpen(false); }; const onKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") setMenuOpen(false); }; document.addEventListener("mousedown", onPointerDown); document.addEventListener("keydown", onKeyDown); return () => { document.removeEventListener("mousedown", onPointerDown); document.removeEventListener("keydown", onKeyDown); }; }, [menuOpen]); return (
); };