{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "pagination",
  "title": "pagination",
  "description": "pagination",
  "dependencies": [
    "cn"
  ],
  "registryDependencies": [
    "https://intentui.com/r/button",
    "https://intentui.com/r/link",
    "https://intentui.com/r/text"
  ],
  "files": [
    {
      "path": "src/components/ui/pagination.tsx",
      "content": "\"use client\"\n\nimport { cn } from \"cn\"\nimport { type ButtonProps, buttonStyles } from \"@/components/ui/button\"\nimport { Link, type LinkProps } from \"@/components/ui/link\"\nimport { Text } from \"@/components/ui/text\"\n\nexport function Pagination({ className, ref, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      data-slot=\"pagination\"\n      aria-label=\"pagination\"\n      className={cn(\n        \"mx-auto flex w-full items-center justify-center gap-(--pagination-gap) [--pagination-gap:--spacing(2)] [--section-radius:calc(var(--radius-lg)-1px)] **:data-[slot=control]:w-auto\",\n        \"**:data-[slot=pagination-item]:cursor-default\",\n        className\n      )}\n      ref={ref}\n      {...props}\n    />\n  )\n}\n\nexport function PaginationSection({ className, ref, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <li data-slot=\"pagination-section\">\n      <ul ref={ref} className={cn(\"flex h-full gap-1.5 text-sm/6\", className)} {...props} />\n    </li>\n  )\n}\n\nexport function PaginationList({ className, ref, ...props }: React.ComponentProps<\"ul\">) {\n  return (\n    <ul\n      ref={ref}\n      data-slot=\"pagination-list\"\n      aria-label={props[\"aria-label\"] || \"Pagination\"}\n      className={cn(\"flex gap-1.25\", className)}\n      {...props}\n    />\n  )\n}\n\nexport interface PaginationItemProps\n  extends Omit<LinkProps, \"children\">, Pick<ButtonProps, \"isCircle\" | \"size\" | \"intent\"> {\n  className?: string\n  isCurrent?: boolean\n  children?: string | number | React.ReactNode\n}\n\nexport function PaginationItem({\n  className,\n  size = \"sm\",\n  isCircle,\n  isCurrent,\n  ...props\n}: PaginationItemProps) {\n  return (\n    <li>\n      <Link\n        data-slot=\"pagination-item\"\n        href={isCurrent ? undefined : props.href}\n        aria-current={isCurrent ? \"page\" : undefined}\n        className={buttonStyles({\n          size: size,\n          isCircle: isCircle,\n          intent: isCurrent ? \"outline\" : \"plain\",\n          className: cn(\"touch-target min-w-9 shrink-0\", className),\n        })}\n        {...props}\n      />\n    </li>\n  )\n}\n\nexport function PaginationFirst(props: PaginationItemProps) {\n  return (\n    <PaginationItem data-slot=\"pagination-item\" aria-label=\"First page\" {...props}>\n      <>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width={16}\n          height={16}\n          fill=\"none\"\n          viewBox=\"0 0 25 24\"\n          aria-hidden=\"true\"\n        >\n          <path\n            stroke=\"currentColor\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n            strokeWidth=\"1.5\"\n            d=\"m17.5 18-6-6 6-6m-10 0v12\"\n          />\n        </svg>\n        {props.children}\n      </>\n    </PaginationItem>\n  )\n}\n\nexport function PaginationPrevious(props: PaginationItemProps) {\n  return (\n    <PaginationItem {...props}>\n      <>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 20 20\"\n          fill=\"currentColor\"\n          aria-hidden=\"true\"\n          data-slot=\"icon\"\n        >\n          <path\n            fillRule=\"evenodd\"\n            d=\"M11.78 5.22a.75.75 0 0 1 0 1.06L8.06 10l3.72 3.72a.75.75 0 1 1-1.06 1.06l-4.25-4.25a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0Z\"\n            clipRule=\"evenodd\"\n          />\n        </svg>\n        {props.children}\n      </>\n    </PaginationItem>\n  )\n}\n\nexport function PaginationNext(props: PaginationItemProps) {\n  return (\n    <PaginationItem aria-label=\"Next page\" {...props}>\n      <>\n        {props.children}\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 20 20\"\n          fill=\"currentColor\"\n          aria-hidden=\"true\"\n        >\n          <path\n            fillRule=\"evenodd\"\n            d=\"M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z\"\n            clipRule=\"evenodd\"\n          />\n        </svg>\n      </>\n    </PaginationItem>\n  )\n}\n\nexport function PaginationLast(props: PaginationItemProps) {\n  return (\n    <PaginationItem aria-label=\"Last page\" {...props}>\n      <>\n        {props.children}\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width={16}\n          height={16}\n          fill=\"none\"\n          viewBox=\"0 0 25 24\"\n          className=\"intentui-icons size-4\"\n          aria-hidden=\"true\"\n        >\n          <path\n            stroke=\"currentColor\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n            strokeWidth=\"1.5\"\n            d=\"m7.5 18 6-6-6-6m10 0v12\"\n          />\n        </svg>\n      </>\n    </PaginationItem>\n  )\n}\n\nexport function PaginationSpacer({ className, ...props }: React.ComponentPropsWithoutRef<\"div\">) {\n  return <div aria-hidden className={cn(\"flex-1\", className)} {...props} />\n}\n\nexport function PaginationGap({\n  className,\n  children = <>&hellip;</>,\n  ...props\n}: React.ComponentProps<\"li\">) {\n  return (\n    <li\n      data-slot=\"pagination-gap\"\n      className={cn(\n        \"w-9 select-none text-center font-semibold text-foreground text-sm/6 outline-hidden\",\n        className\n      )}\n      {...props}\n      aria-hidden\n    >\n      {children}\n    </li>\n  )\n}\n\nexport function PaginationLabel({ className, ...props }: React.ComponentPropsWithoutRef<\"li\">) {\n  return (\n    <li\n      data-slot=\"pagination-label\"\n      className={cn(\n        \"min-w-4 self-center text-foreground *:[strong]:font-medium *:[strong]:text-foreground\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport const PaginationInfo = Text\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}