'use client';

interface PaginationProps {
  page: number;
  totalPages: number;
  total: number;
  /**
   * 已经做过 i18n + 占位符替换的完整摘要文本，
   * 例如 "共 100 条错误，第 1 / 5 页" / "100 errors total, page 1 of 5"
   */
  summary: string;
  prevLabel: string;
  nextLabel: string;
  onPageChange: (page: number) => void;
}

/**
 * 日志模块通用分页栏（已 i18n）
 *
 * 当 total <= 0 时不渲染。
 */
export function Pagination({
  page,
  totalPages,
  total,
  summary,
  prevLabel,
  nextLabel,
  onPageChange,
}: PaginationProps) {
  if (total <= 0) return null;

  return (
    <div className="flex items-center justify-between">
      <p className="text-sm text-[#646a73]">{summary}</p>
      <div className="flex items-center gap-2">
        <button
          onClick={() => onPageChange(Math.max(1, page - 1))}
          disabled={page <= 1}
          className="h-7 px-3 text-sm border border-[#e5e6eb] rounded text-[#1f2329] bg-white hover:bg-[#f2f3f5] disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
        >
          {prevLabel}
        </button>
        <span className="h-7 px-3 flex items-center text-sm text-[#646a73]">
          {page} / {totalPages}
        </span>
        <button
          onClick={() => onPageChange(Math.min(totalPages, page + 1))}
          disabled={page >= totalPages}
          className="h-7 px-3 text-sm border border-[#e5e6eb] rounded text-[#1f2329] bg-white hover:bg-[#f2f3f5] disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
        >
          {nextLabel}
        </button>
      </div>
    </div>
  );
}
