import React, { useState, useMemo } from 'react'; import { useLocation, useSearchParams } from 'react-router-dom'; import { ArticleCard } from './ArticleCard'; import { Pagination } from './Pagination'; import { articles } from '../data/mock'; const ARTICLES_PER_PAGE = 6; export function FeaturedSection() { const location = useLocation(); const [searchParams, setSearchParams] = useSearchParams(); const category = searchParams.get('category'); const city = searchParams.get('city'); const currentPage = parseInt(searchParams.get('page') || '1', 10); const filteredArticles = useMemo(() => { return articles.filter(article => { if (category && city) { return article.category === category && article.city === city; } if (category) { return article.category === category; } if (city) { return article.city === city; } return true; }); }, [category, city]); const totalPages = Math.ceil(filteredArticles.length / ARTICLES_PER_PAGE); const currentArticles = useMemo(() => { const startIndex = (currentPage - 1) * ARTICLES_PER_PAGE; return filteredArticles.slice(startIndex, startIndex + ARTICLES_PER_PAGE); }, [filteredArticles, currentPage]); const handlePageChange = (page: number) => { searchParams.set('page', page.toString()); setSearchParams(searchParams); window.scrollTo({ top: 0, behavior: 'smooth' }); }; if (filteredArticles.length === 0) { return (

No articles found

Please try a different category or city

); } return (

{city ? `${city} ` : ''} {category ? `${category} Stories` : 'Featured Stories'}

Showing {Math.min(currentPage * ARTICLES_PER_PAGE, filteredArticles.length)} of {filteredArticles.length} articles

{currentArticles.map((article, index) => ( ))}
{totalPages > 1 && ( )}
); }