'use client';
import { useMemo } from 'react';
import { useAutocompleteQuery } from '@akinon/next/data/client/misc';
import { ROUTES } from '@theme/routes';
import { LoaderSpinner, Price, Link } from '@theme/components';
import { useDebounce, useLocalization } from '@akinon/next/hooks';
import { Image } from '@akinon/next/components/image';
interface ResultsProps {
searchText: string;
}
const MINIMUM_SEARCH_LENGTH = 3;
export default function Results(props: ResultsProps) {
const { searchText } = props;
const { t } = useLocalization();
const debouncedSearchText = useDebounce(searchText, 400);
const { currentData, isFetching, isLoading } = useAutocompleteQuery(
debouncedSearchText,
{
refetchOnMountOrArgChange: true,
skip: debouncedSearchText.length < MINIMUM_SEARCH_LENGTH
}
);
const categories = useMemo(
() =>
currentData?.groups.find((group) => group.suggestion_type === 'Category')
?.entries ?? [],
[currentData]
);
const products = useMemo(
() =>
currentData?.groups.find((group) => group.suggestion_type === 'Product')
?.entries ?? [],
[currentData]
);
if (
debouncedSearchText.length < MINIMUM_SEARCH_LENGTH ||
searchText !== debouncedSearchText
) {
return null;
}
if (isLoading || isFetching) {
return
{t('common.search.not_found')}
; } return (