import { useEffect, useState } from 'react' import { ArticleGuide, useProductSubLandingContext, } from 'components/context/ProductSubLandingContext' import { useTranslation } from 'components/hooks/useTranslation' import { ArticleCard } from './ArticleCard' const PAGE_SIZE = 9 export const ArticleCards = () => { const { t } = useTranslation('product_sublanding') const guideTypes: Record = t('guide_types') const { allTopics, includeGuides } = useProductSubLandingContext() const [numVisible, setNumVisible] = useState(PAGE_SIZE) const [typeFilter, setTypeFilter] = useState('') const [topicFilter, setTopicFilter] = useState('') const [filteredResults, setFilteredResults] = useState>([]) useEffect(() => { setNumVisible(PAGE_SIZE) setFilteredResults( (includeGuides || []).filter((card) => { const matchesType = card.type === typeFilter const matchesTopic = card.topics.some((key) => key === topicFilter) return (typeFilter ? matchesType : true) && (topicFilter ? matchesTopic : true) }) ) }, [typeFilter, topicFilter]) const isUserFiltering = typeFilter !== '' || topicFilter !== '' const onChangeTypeFilter = (e: React.ChangeEvent) => { setTypeFilter(e.target.value) } const onChangeTopicFilter = (e: React.ChangeEvent) => { setTopicFilter(e.target.value) } const guides = isUserFiltering ? filteredResults : includeGuides || [] return (
{guides.length === 0 ? t('guides_found.none') : guides.length === 1 ? t('guides_found.one') : t('guides_found.multiple').replace('{n}', guides.length)}
{guides.slice(0, numVisible).map((card) => { return })}
{guides.length > numVisible && ( )}
) }