{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pagination",
  "title": "Pagination",
  "author": "andongmin94",
  "description": "Navigation controls for moving between pages of content.",
  "files": [
    {
      "path": "src/components/ui/pagination.tsx",
      "content": "import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\nimport { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\";\n\nconst paginationLinkClassName =\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-base border-2 border-border bg-main text-sm font-base text-main-foreground ring-offset-white transition-all focus-visible:ring-2 focus-visible:ring-black focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\";\n\nconst paginationLinkSizeClassNames = {\n  default: \"h-10 px-4 py-2\",\n  sm: \"h-9 px-3\",\n  lg: \"h-11 px-8\",\n  icon: \"size-10\",\n};\n\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      role=\"navigation\"\n      aria-label=\"pagination\"\n      data-slot=\"pagination\"\n      className={cn(\"mx-auto flex w-full justify-center\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction PaginationContent({ className, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      data-slot=\"pagination-content\"\n      className={cn(\"flex flex-row items-center gap-1\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction PaginationItem({ className, ...props }: React.ComponentProps<\"li\">) {\n  return <li data-slot=\"pagination-item\" className={cn(\"\", className)} {...props} />;\n}\n\ntype PaginationLinkProps = {\n  isActive?: boolean;\n  size?: \"default\" | \"sm\" | \"lg\" | \"icon\";\n} & React.ComponentProps<\"a\">;\n\nfunction PaginationLink({ className, isActive, size = \"icon\", ...props }: PaginationLinkProps) {\n  return (\n    <a\n      data-slot=\"pagination-link\"\n      aria-current={isActive ? \"page\" : undefined}\n      className={cn(\n        paginationLinkClassName,\n        paginationLinkSizeClassNames[size],\n        className,\n        isActive && \"bg-black text-white\",\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction PaginationPrevious({\n  className,\n  text = \"Previous\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      data-slot=\"pagination-previous\"\n      aria-label=\"Go to previous page\"\n      size=\"default\"\n      className={cn(\"gap-1 pl-2.5\", className)}\n      {...props}\n    >\n      <ChevronLeftIcon className=\"size-4\" />\n      <span>{text}</span>\n    </PaginationLink>\n  );\n}\n\nfunction PaginationNext({\n  className,\n  text = \"Next\",\n  ...props\n}: React.ComponentProps<typeof PaginationLink> & { text?: string }) {\n  return (\n    <PaginationLink\n      data-slot=\"pagination-next\"\n      aria-label=\"Go to next page\"\n      size=\"default\"\n      className={cn(\"gap-1 pr-2.5\", className)}\n      {...props}\n    >\n      <span>{text}</span>\n      <ChevronRightIcon className=\"size-4\" />\n    </PaginationLink>\n  );\n}\n\nfunction PaginationEllipsis({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      aria-hidden\n      data-slot=\"pagination-ellipsis\"\n      className={cn(\n        \"flex size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      <MoreHorizontalIcon />\n      <span className=\"sr-only\">More pages</span>\n    </span>\n  );\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationEllipsis,\n  PaginationItem,\n  PaginationLink,\n  PaginationNext,\n  PaginationPrevious,\n};\n",
      "type": "registry:ui"
    }
  ],
  "categories": [
    "navigation"
  ],
  "type": "registry:ui"
}