File size: 1,399 Bytes
caae15f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// SearchInput.tsx

import { ChangeEvent, FormEvent } from "react";
import { Button } from "../button";
import { Input } from "../input";
import { Search } from "lucide-react";

interface SearchInputProps {
    query: string;
    isLoading: boolean;
    onInputChange: (e: ChangeEvent<HTMLInputElement>) => void;
    onSearchSubmit: (e: FormEvent) => void;
}

const SearchInput: React.FC<SearchInputProps> = ({
    query,
    isLoading,
    onInputChange,
    onSearchSubmit,
}) => {
    return (
        <form
            onSubmit={onSearchSubmit}
            className="flex w-full items-start justify-between gap-4 rounded-xl bg-white dark:bg-zinc-700/30 p-4 shadow-xl"
        >
            <Input
                autoFocus
                name="query"
                placeholder="Enter a text to search..."
                value={query}
                onChange={onInputChange}
                className="flex-1 bg-white dark:bg-zinc-500/30"
            />
            <Button type="submit" disabled={isLoading} className="hidden md:flex items-center transition duration-300 ease-in-out transform hover:scale-110">
                Search
            </Button>
            <Button type="submit" disabled={isLoading} className="md:hidden"> {/* Hide on larger screens */}
                <Search className="h-5 w-5" />
            </Button>
        </form>
    );
};

export default SearchInput;