{"version":3,"file":"PaginationControls.mjs","sources":["../../../../src/lib/nextGenComponents/components/PaginationControls/PaginationControls.tsx"],"sourcesContent":["import { ChevronsLeft, ChevronsRight } from 'lucide-react'\n\nimport {\n  Pagination,\n  PaginationContent,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious\n} from '@/components/ui/pagination'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'\nimport { cn } from '@/lib/utils'\n\nexport type PaginationConfig = {\n  currentPage: number\n  totalPages: number\n  currentBatch: number\n  hasPrevBatch: boolean\n  hasNextBatch: boolean\n  batchSize: number\n  onPageChange: (page: number) => void\n  onPrevBatch: () => void\n  onNextBatch: () => void\n}\n\nexport type PaginationControlsProps = PaginationConfig & {\n  className?: string\n}\n\nconst PaginationControls = ({\n  currentPage,\n  totalPages,\n  currentBatch,\n  hasPrevBatch,\n  hasNextBatch,\n  batchSize,\n  onPageChange,\n  onPrevBatch,\n  onNextBatch,\n  className\n}: PaginationControlsProps) => {\n  const canPrevPage = currentPage > 1\n  const canNextPage = currentPage < totalPages\n\n  const pageNumbers = Array.from({ length: totalPages }, (_, i) => i + 1)\n  const pageOffset = (currentBatch - 1) * batchSize\n\n  const disabledCls = 'pointer-events-none opacity-30'\n\n  const prevBatchStart = (currentBatch - 2) * batchSize + 1\n  const prevBatchEnd = (currentBatch - 1) * batchSize\n  const nextBatchStart = currentBatch * batchSize + 1\n  const nextBatchEnd = (currentBatch + 1) * batchSize\n\n  return (\n    <TooltipProvider>\n      <div\n        className={cn('flex items-center justify-center gap-4 pt-2', className)}\n        data-testid=\"pagination-controls\"\n      >\n        <Pagination>\n          <PaginationContent>\n            {/* Previous Batch Arrow */}\n            <PaginationItem>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <PaginationLink\n                    href=\"#\"\n                    aria-disabled={!hasPrevBatch}\n                    className={cn(!hasPrevBatch && disabledCls)}\n                    onClick={e => {\n                      e.preventDefault()\n                      if (hasPrevBatch) onPrevBatch()\n                    }}\n                    data-testid=\"pagination-prev-batch\"\n                  >\n                    <ChevronsLeft className=\"h-4 w-4\" />\n                  </PaginationLink>\n                </TooltipTrigger>\n                <TooltipContent>\n                  {hasPrevBatch\n                    ? `Previous pages ${prevBatchStart}-${prevBatchEnd}`\n                    : 'No previous pages'}\n                </TooltipContent>\n              </Tooltip>\n            </PaginationItem>\n\n            <PaginationItem>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <PaginationPrevious\n                    href=\"#\"\n                    aria-disabled={!canPrevPage}\n                    className={cn(!canPrevPage && disabledCls)}\n                    onClick={e => {\n                      e.preventDefault()\n                      if (canPrevPage) onPageChange(currentPage - 1)\n                    }}\n                    data-testid=\"pagination-prev-page\"\n                  />\n                </TooltipTrigger>\n                <TooltipContent>Previous page</TooltipContent>\n              </Tooltip>\n            </PaginationItem>\n\n            {pageNumbers.map(page => (\n              <PaginationItem key={page}>\n                <PaginationLink\n                  href=\"#\"\n                  isActive={page === currentPage}\n                  onClick={e => {\n                    e.preventDefault()\n                    onPageChange(page)\n                  }}\n                  data-testid={`pagination-page-${page + pageOffset}`}\n                >\n                  {page + pageOffset}\n                </PaginationLink>\n              </PaginationItem>\n            ))}\n\n            <PaginationItem>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <PaginationNext\n                    href=\"#\"\n                    aria-disabled={!canNextPage}\n                    className={cn(!canNextPage && disabledCls)}\n                    onClick={e => {\n                      e.preventDefault()\n                      if (canNextPage) onPageChange(currentPage + 1)\n                    }}\n                    data-testid=\"pagination-next-page\"\n                  />\n                </TooltipTrigger>\n                <TooltipContent>Next page</TooltipContent>\n              </Tooltip>\n            </PaginationItem>\n\n            <PaginationItem>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <PaginationLink\n                    href=\"#\"\n                    aria-disabled={!hasNextBatch}\n                    className={cn(!hasNextBatch && disabledCls)}\n                    onClick={e => {\n                      e.preventDefault()\n                      if (hasNextBatch) onNextBatch()\n                    }}\n                    data-testid=\"pagination-next-batch\"\n                  >\n                    <ChevronsRight className=\"h-4 w-4\" />\n                  </PaginationLink>\n                </TooltipTrigger>\n                <TooltipContent>\n                  {hasNextBatch ? `Next pages ${nextBatchStart}-${nextBatchEnd}` : 'No more pages'}\n                </TooltipContent>\n              </Tooltip>\n            </PaginationItem>\n          </PaginationContent>\n        </Pagination>\n      </div>\n    </TooltipProvider>\n  )\n}\n\nexport default PaginationControls\n"],"names":["PaginationControls","currentPage","totalPages","currentBatch","hasPrevBatch","hasNextBatch","batchSize","onPageChange","onPrevBatch","onNextBatch","className","canPrevPage","canNextPage","pageNumbers","_","i","pageOffset","disabledCls","prevBatchStart","prevBatchEnd","nextBatchStart","nextBatchEnd","TooltipProvider","jsx","cn","Pagination","jsxs","PaginationContent","PaginationItem","Tooltip","TooltipTrigger","PaginationLink","ChevronsLeft","TooltipContent","PaginationPrevious","page","e","PaginationNext","ChevronsRight"],"mappings":"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"}