"use client"; import { useState, useCallback } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { Icon } from "@iconify/react"; import { Badge, Card, Typography } from "poyraz-ui/atoms"; import { ArticleCard, Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from "poyraz-ui/molecules"; import { StaggerContainer, StaggerItem } from "@/components/motion-wrapper"; import type { BlogPageData } from "@/data/blog"; type BlogContentProps = { data: BlogPageData; }; function buildHref(params: { page?: number; category?: string; search?: string }) { const qs = new URLSearchParams(); if (params.page && params.page > 1) qs.set("page", String(params.page)); if (params.category && params.category !== "All") qs.set("category", params.category); if (params.search) qs.set("search", params.search); const query = qs.toString(); return query ? `/blog?${query}` : "/blog"; } export function BlogContent({ data }: BlogContentProps) { const router = useRouter(); const [searchInput, setSearchInput] = useState(data.searchQuery); const pageNumbers = Array.from({ length: data.totalPages }, (_, i) => i + 1); const hasArticles = data.articles.length > 0; const submitSearch = useCallback( (value: string) => { const trimmed = value.trim(); router.push(buildHref({ category: data.selectedCategory, search: trimmed })); }, [router, data.selectedCategory], ); const clearFilters = useCallback(() => { setSearchInput(""); router.push("/blog"); }, [router]); return (
{/* Filtre Çubuğu */}
{/* Kategoriler */}
Kategori: {data.categories.map((category) => ( {category} ))}
{/* Arama */}
setSearchInput(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") submitSearch(searchInput); }} placeholder="Başlık veya içerikte ara..." className="w-full rounded-sm border border-border bg-background py-2 pr-10 pl-9 text-sm text-foreground placeholder:text-muted-foreground focus:border-red-600 focus:ring-1 focus:ring-red-600/30 focus:outline-none" /> {searchInput && ( )}
{/* Aktif filtre göstergesi */} {(data.searchQuery || data.selectedCategory !== "All") && (
{data.articles.length} sonuç {data.searchQuery ? ` · "${data.searchQuery}"` : ""} {data.selectedCategory !== "All" ? ` · ${data.selectedCategory}` : ""}
)} {/* Yazı Kartları */}
{hasArticles ? ( {data.articles.map((post) => ( ))} ) : ( {data.searchQuery ? `"${data.searchQuery}" aramasına uygun sonuç bulunamadı.` : data.selectedCategory === "All" ? "Henüz blog yazısı bulunmuyor." : `"${data.selectedCategory}" kategorisinde henüz blog yazısı bulunmuyor.`} {(data.searchQuery || data.selectedCategory !== "All") && ( )} )} {/* Sayfalama */} {data.totalPages > 1 && ( {pageNumbers.map((page) => ( {page} ))} = data.totalPages} /> )}
); }