"use client";
import React from "react";
import styles from "../commonstyle/dattabale.module.css";

interface PaginationProps {
  currentPage: number; setCurrentPage: (v: number) => void;
  totalPages: number; startIndex: number; endIndex: number;
  sortedDataLength: number; itemsPerPage: number; setItemsPerPage: (v: number) => void;
}

export const Pagination = ({ currentPage, setCurrentPage, totalPages, startIndex, endIndex, sortedDataLength, itemsPerPage, setItemsPerPage }: PaginationProps) => (
  <div className={styles.pagination}>
    <div className={styles.paginationLeft}>
      <span className={styles.paginationText}>Showing {startIndex} to {Math.min(endIndex, sortedDataLength)} of {sortedDataLength} entries</span>
      <select className={styles.rowsPerPage} value={itemsPerPage} onChange={(e) => { setItemsPerPage(Number(e.target.value)); setCurrentPage(1); }}>
        <option value={5}>5 per page</option><option value={10}>10 per page</option>
        <option value={25}>25 per page</option><option value={50}>50 per page</option>
      </select>
    </div>
    <div className={styles.paginationRight}>
      <button className={styles.pageBtn} onClick={() => setCurrentPage(1)} disabled={currentPage === 1}>⟨⟨</button>
      <button className={styles.pageBtn} onClick={() => setCurrentPage(currentPage - 1)} disabled={currentPage === 1}>⟨</button>
      {[...Array(Math.min(5, totalPages))].map((_, i) => {
        let p: number;
        if (totalPages <= 5) p = i + 1;
        else if (currentPage <= 3) p = i + 1;
        else if (currentPage >= totalPages - 2) p = totalPages - 4 + i;
        else p = currentPage - 2 + i;
        return <button key={i} className={`${styles.pageBtn} ${currentPage === p ? styles.activePageBtn : ""}`} onClick={() => setCurrentPage(p)}>{p}</button>;
      })}
      <button className={styles.pageBtn} onClick={() => setCurrentPage(currentPage + 1)} disabled={currentPage === totalPages}>⟩</button>
      <button className={styles.pageBtn} onClick={() => setCurrentPage(totalPages)} disabled={currentPage === totalPages}>⟩⟩</button>
    </div>
  </div>
);
