{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "pagination",
  "title": "pagination",
  "description": "pagination",
  "dependencies": [
    "tailwind-merge"
  ],
  "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 { twMerge } from 'tailwind-merge'\nimport { type ButtonProps, buttonStyles } from '@/components/ui/button'\nimport { Link, type LinkProps } from '@/components/ui/link'\nimport { Text } from '@/components/ui/text'\n\nconst Pagination = ({ className, ref, ...props }: React.ComponentProps<'nav'>) => (\n  <nav\n    data-slot=\"pagination\"\n    aria-label=\"pagination\"\n    className={twMerge(\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\nconst PaginationSection = ({ className, ref, ...props }: React.ComponentProps<'ul'>) => (\n  <li data-slot=\"pagination-section\">\n    <ul ref={ref} className={twMerge('flex h-full gap-1.5 text-sm/6', className)} {...props} />\n  </li>\n)\n\nconst 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={twMerge('flex gap-1.25', className)}\n      {...props}\n    />\n  )\n}\n\ninterface 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\nconst 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: twMerge('touch-target min-w-9 shrink-0', className),\n        })}\n        {...props}\n      />\n    </li>\n  )\n}\n\nconst 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\nconst 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\nconst 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\nconst 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\nconst PaginationSpacer = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n  return <div aria-hidden className={twMerge('flex-1', className)} {...props} />\n}\n\nconst PaginationGap = ({\n  className,\n  children = <>&hellip;</>,\n  ...props\n}: React.ComponentProps<'li'>) => {\n  return (\n    <li\n      data-slot=\"pagination-gap\"\n      className={twMerge(\n        'w-9 select-none text-center font-semibold text-fg text-sm/6 outline-hidden',\n        className\n      )}\n      {...props}\n      aria-hidden\n    >\n      {children}\n    </li>\n  )\n}\n\nconst PaginationLabel = ({ className, ...props }: React.ComponentPropsWithoutRef<'li'>) => {\n  return (\n    <li\n      data-slot=\"pagination-label\"\n      className={twMerge(\n        'min-w-4 self-center text-fg *:[strong]:font-medium *:[strong]:text-fg',\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nconst PaginationInfo = Text\n\nexport {\n  Pagination,\n  PaginationFirst,\n  PaginationGap,\n  PaginationInfo,\n  PaginationItem,\n  PaginationLabel,\n  PaginationLast,\n  PaginationList,\n  PaginationNext,\n  PaginationPrevious,\n  PaginationSection,\n  PaginationSpacer,\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}