import Link from "next/link";

function pageHref(basePath: string, page: number) {
  return page <= 1 ? basePath : `${basePath}?sayfa=${page}`;
}

/** Sayfa numaralarını "1 ... 4 5 6 ... 12" biçiminde daraltır. */
function buildPageList(current: number, total: number): (number | "...")[] {
  const pages = new Set<number>([1, total, current, current - 1, current + 1]);
  const sorted = [...pages].filter((p) => p >= 1 && p <= total).sort((a, b) => a - b);

  const result: (number | "...")[] = [];
  let prev = 0;
  for (const p of sorted) {
    if (prev && p - prev > 1) result.push("...");
    result.push(p);
    prev = p;
  }
  return result;
}

/** Gerçek `<a href>` linkleriyle sayfalama — tarama motorlarının tüm sayfaları keşfedip indeksleyebilmesi için önemli. */
export function Pagination({ basePath, currentPage, totalPages }: { basePath: string; currentPage: number; totalPages: number }) {
  if (totalPages <= 1) return null;

  const pageList = buildPageList(currentPage, totalPages);

  return (
    <nav className="mt-8 flex flex-wrap items-center justify-center gap-1.5" aria-label="Sayfalama">
      {currentPage > 1 && (
        <Link
          href={pageHref(basePath, currentPage - 1)}
          className="rounded-lg border border-border px-3 py-2 text-[13px] font-semibold text-text-muted hover:border-accent hover:text-accent"
        >
          ← Önceki
        </Link>
      )}

      {pageList.map((p, i) =>
        p === "..." ? (
          <span key={`ellipsis-${i}`} className="px-1.5 text-[13px] text-text-muted">
            …
          </span>
        ) : (
          <Link
            key={p}
            href={pageHref(basePath, p)}
            className={`flex h-9 min-w-9 items-center justify-center rounded-lg px-2 text-[13px] font-semibold ${
              p === currentPage
                ? "bg-gradient-to-r from-accent to-accent-2 text-white"
                : "border border-border text-text-muted hover:border-accent hover:text-accent"
            }`}
          >
            {p}
          </Link>
        )
      )}

      {currentPage < totalPages && (
        <Link
          href={pageHref(basePath, currentPage + 1)}
          className="rounded-lg border border-border px-3 py-2 text-[13px] font-semibold text-text-muted hover:border-accent hover:text-accent"
        >
          Sonraki →
        </Link>
      )}
    </nav>
  );
}
