import { useParams, Link } from 'react-router-dom'; import { articles } from '../data/articles'; import ArticleCard from '../components/ArticleCard'; import SEO from '../components/SEO'; import { ChevronRight } from 'lucide-react'; import { useLanguage } from '../contexts/LanguageContext'; import { CATEGORY_MAP } from '../constants'; export default function CategoryPage() { const { categorySlug } = useParams(); const { lang } = useLanguage(); const getCategoryData = (slug: string) => { const entry = Object.entries(CATEGORY_MAP).find(([_, value]) => value.slug === slug); if (entry) { const [originalName, data] = entry; return { name: data.name, originalName: originalName, description: `Deep dives, case studies and tactical analysis on ${data.name.toLowerCase()}.` }; } return { name: slug.charAt(0).toUpperCase() + slug.slice(1).replace(/-/g, ' '), originalName: slug, description: 'Artigos e anĂ¡lises sobre o ecossistema digital.' }; }; const { name: categoryName, originalName, description: categoryDescription } = getCategoryData(categorySlug || ''); const filteredArticles = articles.filter(a => { // If we have a map entry, match by original category name if (originalName) { return a.category === originalName; } // Fallback strategy const slugfiedCategory = a.category.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/\s+/g, '-'); return slugfiedCategory === categorySlug; }); return ( <>
Arquivo Editorial

{categoryName}

{categoryDescription}

{filteredArticles.length > 0 ? (
{filteredArticles.map(article => ( ))}
) : (

Nenhum insight encontrado

Voltar para a Home
)}
); }