import { Box, Center, Spinner } from '@vtex/store-ui' import React, { FC, Suspense, lazy } from 'react' import { useIntl } from '@vtex/gatsby-plugin-i18n' import { SearchSuggestionsListContainer } from '../base/Container' import { SearchSuggestionsListTitle } from '../base/Title' import { SearchSuggestionsListTotal } from '../base/Total' import { SearchSuggestionsList } from '../base/List' import { useProductsSuggestions } from './hooks' import { toRequiredItem } from '../base/hooks' const ProductSummary = lazy(() => import('../../ProductSummary')) interface Props { term: string maxItems?: number variant?: string } const SearchSuggestionsProduct: FC> = ({ term, variant, maxItems, }) => { const { formatMessage } = useIntl() const { query: { data, error }, searchBar: { onSearch }, } = useProductsSuggestions({ maxItems, term, }) const count = data?.vtex.productSuggestions?.count const products = data?.vtex.productSuggestions.products const items = products && toRequiredItem(products) const title = formatMessage( { id: 'suggestions.products.title', defaultMessage: 'Products for: {term}', }, { term } ) const total = formatMessage( { id: 'suggestions.products.total', defaultMessage: 'See all {count} items', }, { count } ) if (error) { return null } if (!products) { return ( <>
) } if (count === 0) { return ( <>
{formatMessage({ id: 'suggestions.products.notFound', defaultMessage: 'No products found', })}
) } return ( <> {({ item, variant: v }: any) => ( )} onSearch(term!)} > {total} ) } const SearchSuggestions: FC = ({ variant = 'products', maxItems = 3, term, }) => ( ) export default SearchSuggestions