"use client"; import { useState, useCallback } from "react"; import { Link, useRouter } from "@/i18n/routing"; import { Icon } from "@iconify/react"; import { useTranslations } from "next-intl"; 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; section?: "blog" | "agenda"; }; function buildHref( params: { page?: number; category?: string; search?: string }, section: "blog" | "agenda", ) { 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(); const basePath = section === "agenda" ? "/agenda" : "/blog"; return query ? `${basePath}?${query}` : basePath; } export function BlogContent({ data, section = "blog" }: BlogContentProps) { const router = useRouter(); const t = useTranslations("Blog"); const agendaT = useTranslations("Agenda"); const isAgenda = section === "agenda"; 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 }, section)); }, [router, data.selectedCategory, section], ); const clearFilters = useCallback(() => { setSearchInput(""); router.push(section === "agenda" ? "/agenda" : "/blog"); }, [router, section]); return (
{/* Filtre Çubuğu */}
{/* Kategoriler */} {!isAgenda && (
{t("categories")}: {data.categories.map((category) => ( {category} ))}
)} {/* Arama */}
setSearchInput(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") submitSearch(searchInput); }} placeholder={isAgenda ? agendaT("searchPlaceholder") : t("searchPlaceholder")} 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} {t("results")} {data.searchQuery ? ` · "${data.searchQuery}"` : ""} {data.selectedCategory !== "All" ? ` · ${data.selectedCategory}` : ""}
)} {/* Yazı Kartları */}
{hasArticles ? ( {data.articles.map((post) => ( ))} ) : ( {data.searchQuery ? isAgenda ? agendaT("noSearch", { search: data.searchQuery }) : t("noSearch", { search: data.searchQuery }) : data.selectedCategory === "All" ? isAgenda ? agendaT("empty") : t("empty") : t("emptyCategory", { category: data.selectedCategory })} {(data.searchQuery || data.selectedCategory !== "All") && ( )} )} {/* Sayfalama */} {data.totalPages > 1 && ( {pageNumbers.map((page) => ( {page} ))} = data.totalPages} /> )}
); }