import { useNavigate } from "@remix-run/react"; import { memo, useCallback } from "react"; import AppInput from "../AppInput"; import { CircleX, Search } from "lucide-react"; import { onSearch } from "~/utils/helpers"; import { Button } from "../ui/button"; interface ExploreTopBarProps { setIsActiveSearchBar: (value: boolean) => void; searchValue: string; setSearchValue: (value: string) => void; } const ExploreTopBar = memo(function ExploreTopBar({ setIsActiveSearchBar, searchValue, setSearchValue, }: ExploreTopBarProps) { const navigate = useNavigate(); const handleChange = useCallback((e: React.ChangeEvent) => { setSearchValue(e.target.value); }, [setSearchValue]); const handleKeyDown = useCallback((e: React.KeyboardEvent) => { if (e.key === "Enter") { onSearch(searchValue, navigate); } }, [searchValue, navigate]); const handleFocus = useCallback(() => { setIsActiveSearchBar(true); }, [setIsActiveSearchBar]); const handleSearchClick = useCallback(() => { onSearch(searchValue, navigate); }, [searchValue, navigate]); const handleClearClick = useCallback(() => { setSearchValue(""); }, [setSearchValue]); return (
{searchValue && ( <>
e.key === "Enter" && handleClearClick()} role="button" tabIndex={0} className="absolute transition-all duration-300 ease-in-out left-2 top-3 w-6 h-6 flex items-center justify-center cursor-pointer hover:bg-gray-100 rounded-full p-1" >
)}
); }); export default ExploreTopBar;