import React, { useEffect, useState } from "react"; import { Link } from "react-router-dom"; import { Calendar, Clock, User, Tag, Search } from "lucide-react"; import { useLanguage } from "../context/LanguageContext"; import { blogService, BlogPost, BlogCategory, } from "../services/api/blog.service"; import { format } from "date-fns"; import { tr } from "date-fns/locale"; const Blog = () => { const { t } = useLanguage(); const [posts, setPosts] = useState([]); const [categories, setCategories] = useState([]); const [loading, setLoading] = useState(true); const [selectedCategory, setSelectedCategory] = useState(""); const [searchQuery, setSearchQuery] = useState(""); const [currentPage, setCurrentPage] = useState(1); const [totalPages, setTotalPages] = useState(1); useEffect(() => { loadBlogData(); }, [currentPage, selectedCategory]); const loadBlogData = async () => { try { setLoading(true); const [postsData, categoriesData] = await Promise.all([ blogService.getPosts({ page: currentPage, pageSize: 10, categoryId: selectedCategory, search: searchQuery, }), blogService.getCategories(), ]); setPosts(postsData.items.filter(a=> a.isPublished)); setTotalPages(postsData.totalPages); setCategories(categoriesData.filter(a=> a.isActive)); } catch (error) { console.error("Blog verileri yüklenemedi:", error); setPosts([]); } finally { setLoading(false); } }; const handleSearch = (e: React.FormEvent) => { e.preventDefault(); setCurrentPage(1); loadBlogData(); }; const handleCategoryChange = (categoryId: string) => { setSelectedCategory(categoryId); setCurrentPage(1); }; if (loading && posts.length === 0) { return (

Blog yazıları yükleniyor...

); } return (
{/* Hero Section */}

{t("blog.title")}

{t("blog.subtitle")}

{/* Search and Filter Section */}
{/* Search */}
setSearchQuery(e.target.value)} placeholder="Blog yazılarında ara..." className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" />
{/* Category Filter */}
{categories.map((category) => ( ))}
{/* Blog Posts Grid */}
{!Array.isArray(posts) || posts.length === 0 ? (

Henüz blog yazısı bulunmuyor.

) : (
{posts.map((post) => (
{post.title}
{t(post.category.name)}

{t(post.title)}

{t(post.summary)}

{/* Tags */} {post.tags.length > 0 && (
{post.tags.slice(0, 3).map((tag, index) => ( {tag} ))}
)}
{post.author.name}
{format( new Date(post.publishedAt || post.createdAt), "dd MMM yyyy", { locale: tr } )}
{post.readTime}
))}
)} {/* Pagination */} {totalPages > 1 && (
)}
{/* Newsletter Section */}

{t("blog.subscribe")}

{t("blog.subscribe.desc")}

); }; export default Blog;