import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Search, Grid3X3, Table2, Moon, Sun, CircleUserIcon, } from "lucide-react"; import { useEffect, useState } from "react"; import { useLocation } from "react-router-dom"; import { useIsMobile } from "@/hooks/useMobile"; import { useConfigItem } from "@/config"; interface HeaderProps { viewMode: "grid" | "table"; setViewMode: (mode: "grid" | "table") => void; theme: string; toggleTheme: () => void; searchTerm: string; setSearchTerm: (term: string) => void; } export const Header = ({ viewMode, setViewMode, theme, toggleTheme, searchTerm, setSearchTerm, }: HeaderProps) => { const [isSearchOpen, setIsSearchOpen] = useState(false); const location = useLocation(); const isInstancePage = location.pathname.startsWith("/instance"); const isMobile = useIsMobile(); const enableTitle = useConfigItem("enableTitle"); const sitename = useConfigItem("titleText"); const enableLogo = useConfigItem("enableLogo"); const logoUrl = useConfigItem("logoUrl"); const enableSearchButton = useConfigItem("enableSearchButton"); const enableAdminButton = useConfigItem("enableAdminButton"); useEffect(() => { if (sitename) { document.title = sitename; } }, [sitename]); return (
{enableLogo && logoUrl && ( logo )} {enableTitle && ( {sitename} )}
{!isInstancePage && ( <> {isMobile ? ( <> {isSearchOpen && (
) => setSearchTerm(e.target.value) } />
)} ) : (
) => setSearchTerm(e.target.value) } />
)} {enableSearchButton && ( )} )} {enableAdminButton && ( )}
); };