import { memo } from "preact/compat"; import { useRef } from "preact/hooks"; import { twMerge } from "tailwind-merge"; import Cancel from "../../icons/Cancel"; import Search from "../../icons/Search"; import useI18n from "../../utils/hooks/useI18n"; import IconButton from "../IconButton"; import Input from "../Input"; import type { PreactDOMAttributes } from "preact"; import type { HTMLAttributes, ReactNode } from "preact/compat"; import type { IconButtonProps } from "../IconButton/IconButton"; import type { InputProps } from "../Input/Input"; export type InputSearchProps = { cancelButtonClassName?: string; cancelButtonProps?: IconButtonProps; cancelIcon?: ReactNode; className?: string; inputClassName?: string; inputContainerClassName?: string; inputProps?: InputProps; resultClassName?: string; resultsClassName?: string; resultsContainerClassName?: string; searchIcon?: ReactNode; searchIconContainerClassName?: string; withResultsClassName?: string; } & HTMLAttributes & PreactDOMAttributes; /** * Rich search input component. */ function InputSearch({ cancelButtonClassName, cancelButtonProps, cancelIcon, children, className, inputClassName, inputContainerClassName, inputProps, searchIcon, searchIconContainerClassName, withResultsClassName, }: InputSearchProps) { const { t } = useI18n(); const myRef = useRef(); return ( <>
{searchIcon || }
{!!inputProps.value && ( {cancelIcon || } )}
{children} ); } export default memo(InputSearch);