{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pagination",
  "type": "registry:component",
  "title": "Pagination",
  "description": "Page navigation controls with previous, next, and page links.",
  "dependencies": [
    "@vllnt/ui@^0.2.1"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/default/pagination/pagination.tsx",
      "content": "import Link from \"next/link\";\n\nimport { Button } from \"@vllnt/ui\";\n\nexport type PaginationProps = {\n  baseUrl: string;\n  className?: string;\n  currentPage: number;\n  totalPages: number;\n};\n\nexport function Pagination({\n  baseUrl,\n  className,\n  currentPage,\n  totalPages,\n}: PaginationProps) {\n  if (totalPages <= 1) return null;\n\n  const maxVisiblePages = 5;\n  let startPage = Math.max(1, currentPage - Math.floor(maxVisiblePages / 2));\n  const endPage = Math.min(totalPages, startPage + maxVisiblePages - 1);\n\n  if (endPage - startPage + 1 < maxVisiblePages) {\n    startPage = Math.max(1, endPage - maxVisiblePages + 1);\n  }\n\n  // Previous button\n  const previousButton =\n    currentPage > 1 ? (\n      <Link href={`${baseUrl}?page=${currentPage - 1}`} key=\"prev\">\n        <Button size=\"sm\" variant=\"outline\">\n          <span className=\"text-sm\">‹</span>\n          <span className=\"sr-only\">Previous</span>\n        </Button>\n      </Link>\n    ) : null;\n\n  // Page numbers\n  const pageNumbers = Array.from(\n    { length: endPage - startPage + 1 },\n    (_, index) => {\n      const pageNumber = startPage + index;\n      return (\n        <Link href={`${baseUrl}?page=${pageNumber}`} key={pageNumber}>\n          <Button\n            size=\"sm\"\n            variant={pageNumber === currentPage ? \"default\" : \"outline\"}\n          >\n            {pageNumber}\n          </Button>\n        </Link>\n      );\n    },\n  );\n\n  // Next button\n  const nextButton =\n    currentPage < totalPages ? (\n      <Link href={`${baseUrl}?page=${currentPage + 1}`} key=\"next\">\n        <Button size=\"sm\" variant=\"outline\">\n          <span className=\"sr-only\">Next</span>\n          <span className=\"text-sm\">›</span>\n        </Button>\n      </Link>\n    ) : null;\n\n  const pages = [previousButton, ...pageNumbers, nextButton].filter(Boolean);\n\n  return (\n    <div className={`flex items-center justify-center gap-2 ${className}`}>\n      {pages}\n    </div>\n  );\n}\n",
      "type": "registry:component"
    }
  ],
  "version": "0.2.1",
  "stability": "stable"
}
