1- import { useEffect , useMemo , useRef } from "react"
1+ import { useMemo } from "react"
22import {
33 Breadcrumb ,
44 BreadcrumbItem ,
@@ -17,10 +17,9 @@ import {
1717 DropdownMenuSeparator ,
1818 DropdownMenuTrigger ,
1919} from "@/components/ui/dropdown-menu"
20- import { User , Settings , Github , Book , Server , Search , Menu , PanelLeftClose , PanelLeftOpen } from "lucide-react"
20+ import { User , Settings , Github , Book , Server , Menu , PanelLeftClose , PanelLeftOpen } from "lucide-react"
2121import { Button } from "@/components/ui/button"
2222import { Badge } from "@/components/ui/badge"
23- import { Input } from "@/components/ui/input"
2423import {
2524 Select ,
2625 SelectContent ,
@@ -32,7 +31,6 @@ import EnrollDialog from "@/components/dialogs/EnrollDialog"
3231import { CrowdSecLogo } from "@/components/icons/CrowdSecLogo"
3332import { useQuery } from "@tanstack/react-query"
3433import { hostsAPI , setSelectedHost , type HostInfo } from "@/lib/api"
35- import { useSearch } from "@/contexts/SearchContext"
3634
3735interface HeaderProps {
3836 onMenuClick ?: ( ) => void
@@ -42,8 +40,6 @@ interface HeaderProps {
4240
4341export default function Header ( { onMenuClick, isCollapsed, onToggleCollapse } : HeaderProps ) {
4442 const location = useLocation ( )
45- const { query, scope, setQuery } = useSearch ( )
46- const searchRef = useRef < HTMLInputElement > ( null )
4743
4844 const { data : hostsData } = useQuery ( {
4945 queryKey : [ 'docker-hosts' ] ,
@@ -56,7 +52,7 @@ export default function Header({ onMenuClick, isCollapsed, onToggleCollapse }: H
5652
5753 // Generate breadcrumbs from path
5854 const pathSegments = location . pathname . split ( '/' ) . filter ( Boolean )
59- const breadcrumbs = [
55+ const breadcrumbs = useMemo ( ( ) => [
6056 { name : 'Home' , href : '/' } ,
6157 ...pathSegments . map ( ( segment , index ) => {
6258 const href = `/${ pathSegments . slice ( 0 , index + 1 ) . join ( '/' ) } `
@@ -65,31 +61,7 @@ export default function Header({ onMenuClick, isCollapsed, onToggleCollapse }: H
6561 href
6662 }
6763 } )
68- ]
69-
70- const scopeLabel = useMemo ( ( ) => {
71- if ( scope === 'hub' ) return 'Hub'
72- if ( scope === 'logs' ) return 'Logs'
73- if ( scope === 'scenarios' ) return 'Scenarios'
74- if ( scope === 'bouncers' ) return 'Bouncers'
75- if ( scope === 'alerts' ) return 'Alerts'
76- if ( scope === 'decisions' ) return 'Decisions'
77- return 'Global'
78- } , [ scope ] )
79-
80- useEffect ( ( ) => {
81- const handler = ( event : KeyboardEvent ) => {
82- if ( event . key !== '/' || event . defaultPrevented ) return
83- const target = event . target as HTMLElement | null
84- if ( target && ( target . tagName === 'INPUT' || target . tagName === 'TEXTAREA' || target . isContentEditable ) ) {
85- return
86- }
87- event . preventDefault ( )
88- searchRef . current ?. focus ( )
89- }
90- window . addEventListener ( 'keydown' , handler )
91- return ( ) => window . removeEventListener ( 'keydown' , handler )
92- } , [ ] )
64+ ] , [ pathSegments ] )
9365
9466 return (
9567 < header className = "h-16 border-b border-sidebar-border bg-card px-6 flex items-center justify-between shadow-sm" >
@@ -145,21 +117,6 @@ export default function Header({ onMenuClick, isCollapsed, onToggleCollapse }: H
145117
146118 { /* Right Section: Links & User Profile */ }
147119 < div className = "flex items-center gap-4" >
148- < div className = "hidden lg:flex items-center gap-2" >
149- < Badge variant = "outline" className = "text-[10px] uppercase tracking-wide" >
150- Searching: { scopeLabel }
151- </ Badge >
152- < div className = "relative" >
153- < Search className = "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" />
154- < Input
155- ref = { searchRef }
156- value = { query }
157- onChange = { ( event ) => setQuery ( event . target . value ) }
158- placeholder = { `Search ${ scopeLabel } ...` }
159- className = "h-9 w-[240px] pl-9"
160- />
161- </ div >
162- </ div >
163120 { /* Host Selector */ }
164121 { showHostSelector && (
165122 < div className = "flex items-center gap-2" >
0 commit comments