{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pagination",
  "type": "registry:ui",
  "title": "Pagination",
  "description": "A pagination component",
  "registryDependencies": [
    "https://ui.ednesdayw.com/r/paginate.json"
  ],
  "files": [
    {
      "path": "src/registry/ui/pagination.tsx",
      "content": "\"use client\";\n\nimport {\n  Pagination as PaginationComponent,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n} from \"@/components/ui/pagination\";\nimport { paginate } from \"@/lib/paginate\";\nimport { useMemo } from \"react\";\n\ninterface PaginationProps {\n  currentPage: number;\n  totalPages: number;\n  siblings?: number;\n  onChange: (page: number) => void;\n}\n\nexport const Pagination = ({\n  currentPage,\n  totalPages,\n  siblings = 2,\n  onChange,\n}: PaginationProps) => {\n  const { prev, next, current, items } = useMemo(() => {\n    return paginate({\n      currentPage: currentPage + 1,\n      totalPages,\n      siblings,\n    });\n  }, [currentPage, totalPages, siblings]);\n\n  return (\n    <PaginationComponent>\n      <PaginationContent>\n        <PaginationItem>\n          <PaginationPrevious\n            className=\"cursor-pointer\"\n            onClick={() => {\n              if (prev === null) return;\n              onChange(prev - 1);\n            }}\n          />\n        </PaginationItem>\n        {items.map((item) => {\n          if (item.type === \"item\") {\n            return (\n              <PaginationItem key={`${item.type}-${item.value}`}>\n                <PaginationLink\n                  className=\"cursor-pointer\"\n                  isActive={item.value === current}\n                  onClick={() => {\n                    onChange(item.value - 1);\n                  }}\n                >\n                  {item.value}\n                </PaginationLink>\n              </PaginationItem>\n            );\n          }\n          if (item.type === \"ellipsis\") {\n            return (\n              <PaginationItem key={`${item.type}-${item.value}`}>\n                <PaginationEllipsis\n                  className=\"cursor-pointer\"\n                  onClick={() => {\n                    onChange(item.value - 1);\n                  }}\n                />\n              </PaginationItem>\n            );\n          }\n        })}\n        <PaginationItem>\n          <PaginationNext\n            className=\"cursor-pointer\"\n            onClick={() => {\n              if (next === null) return;\n              onChange(next - 1);\n            }}\n          />\n        </PaginationItem>\n      </PaginationContent>\n    </PaginationComponent>\n  );\n};\n",
      "type": "registry:ui",
      "target": "components/wed/pagination.tsx"
    }
  ]
}