{t('blog.hero.title')}
{t('blog.hero.subtitle')}
{t('blog.search.noResults')}
import React, { useState, useEffect } from 'react';
import { Helmet } from 'react-helmet';
import { motion } from 'framer-motion';
import { Search } from 'lucide-react';
import BlogCard from '@/components/BlogCard';
import { blogPosts } from '@/lib/data';
import { useLanguage } from '@/contexts/LanguageContext';
const BlogPage = () => {
const { t } = useLanguage();
const [searchTerm, setSearchTerm] = useState('');
const [selectedCategory, setSelectedCategory] = useState('all');
useEffect(() => {
// Debug logging to verify data loading
console.log("BlogPage mounted. Loaded blog posts:", blogPosts);
if (!blogPosts || blogPosts.length === 0) {
console.warn("No blog posts found in @/lib/data.js!");
}
}, []);
// Extract unique categories from data
const categoryKeys = ['all', ...new Set(blogPosts.map(post => post.category))];
// Filter posts
const filteredPosts = blogPosts.filter(post => {
const title = (post.title || t(`blog.posts.${post.id}.title`)).toLowerCase();
const excerpt = (post.excerpt || t(`blog.posts.${post.id}.excerpt`)).toLowerCase();
const matchesSearch = title.includes(searchTerm.toLowerCase()) ||
excerpt.includes(searchTerm.toLowerCase());
const matchesCategory = selectedCategory === 'all' || post.category === selectedCategory;
return matchesSearch && matchesCategory;
});
return (
<>
{t('blog.hero.subtitle')}
{t('blog.search.noResults')}