import { useState } from 'react'; import { PageHeader } from '../components/PageHeader'; import { BlogCard } from '../components/BlogCard'; import { blogPostsData } from '../data/blogPostsData'; export const Blog = () => { const [searchQuery, setSearchQuery] = useState(''); // Filter blog posts based on search query const filteredPosts = searchQuery ? blogPostsData.filter(post => post.title.toLowerCase().includes(searchQuery.toLowerCase()) || post.excerpt.toLowerCase().includes(searchQuery.toLowerCase()) || post.tags.some(tag => tag.toLowerCase().includes(searchQuery.toLowerCase())) ) : blogPostsData; // Get the featured post const featuredPost = blogPostsData.find(post => post.featured); // Get regular posts (non-featured) const regularPosts = filteredPosts.filter(post => !post.featured); // Handle search input change const handleSearchChange = (e: React.ChangeEvent) => { setSearchQuery(e.target.value); }; // Generate a list of unique categories const categories = Array.from(new Set(blogPostsData.map(post => post.category))); // Generate a list of unique tags const allTags = blogPostsData.flatMap(post => post.tags); const uniqueTags = Array.from(new Set(allTags)); return ( <>
{/* Main Content */}
{/* Featured Post */} {featuredPost && (!searchQuery || featuredPost.title.toLowerCase().includes(searchQuery.toLowerCase()) || featuredPost.excerpt.toLowerCase().includes(searchQuery.toLowerCase()) || featuredPost.tags.some(tag => tag.toLowerCase().includes(searchQuery.toLowerCase())) ) && (
)} {/* Regular Posts */}
{regularPosts.map(post => (
))}
{/* No Posts Message */} {filteredPosts.length === 0 && (

No posts found matching your search.

)} {/* Pagination */} {filteredPosts.length > 0 && ( )}
{/* Sidebar */}
{/* Search Widget */}

Search

{/* Categories Widget */}

Categories

{categories.map((category, index) => { const count = blogPostsData.filter(post => post.category === category).length; return ( ); })}
{/* Recent Posts Widget */}

Recent Posts

{blogPostsData.slice(0, 3).map(post => (
{post.title}

{post.title}

{post.date}
))}
{/* Tags Widget */}

Popular Tags

{uniqueTags.map((tag, index) => ( setSearchQuery(tag)} style={{ cursor: 'pointer' }} > {tag} ))}
); };