{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "pagination",
  "type": "registry:ui",
  "dependencies": [
    "@kobalte/core",
    "lucide-solid"
  ],
  "registryDependencies": [
    "@gc-solid/button"
  ],
  "files": [
    {
      "path": "ui/pagination.tsx",
      "content": "import type { JSX, ValidComponent } from \"solid-js\"\nimport { Show, splitProps } from \"solid-js\"\n\nimport * as PaginationPrimitive from \"@kobalte/core/pagination\"\nimport type { PolymorphicProps } from \"@kobalte/core/polymorphic\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-solid\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/components/ui/button\"\n\nconst PaginationItems = PaginationPrimitive.Items\n\ntype PaginationProps<T extends ValidComponent = \"nav\"> =\n  PaginationPrimitive.PaginationRootProps<T> & { class?: string | undefined }\n\nconst Pagination = <T extends ValidComponent = \"nav\">(\n  props: PolymorphicProps<T, PaginationProps<T>>\n) => {\n  const [local, others] = splitProps(props as PaginationProps, [\"class\"])\n  return (\n    <PaginationPrimitive.Root\n      class={cn(\"mx-auto flex w-full justify-center\", local.class)}\n      data-slot=\"pagination\"\n      {...others}\n    />\n  )\n}\n\ntype PaginationContentProps = {\n  class?: string | undefined\n  children?: JSX.Element\n}\n\nconst PaginationContent = (props: PaginationContentProps) => {\n  const [local, others] = splitProps(props, [\"class\", \"children\"])\n  return (\n    <PaginationItems {...others}>\n      <div\n        class={cn(\"flex flex-row items-center gap-1\", local.class)}\n        data-slot=\"pagination-content\"\n      >\n        {local.children}\n      </div>\n    </PaginationItems>\n  )\n}\n\ntype PaginationItemProps<T extends ValidComponent = \"button\"> =\n  PaginationPrimitive.PaginationItemProps<T> & { class?: string | undefined }\n\nconst PaginationItem = <T extends ValidComponent = \"button\">(\n  props: PolymorphicProps<T, PaginationItemProps<T>>\n) => {\n  const [local, others] = splitProps(props as PaginationItemProps, [\"class\"])\n  return (\n    <PaginationPrimitive.Item\n      class={cn(\n        buttonVariants({\n          variant: \"ghost\",\n          size: \"icon\"\n        }),\n        \"data-[current]:border data-[current]:bg-accent\",\n        local.class\n      )}\n      data-slot=\"pagination-item\"\n      {...others}\n    />\n  )\n}\n\ntype PaginationEllipsisProps<T extends ValidComponent = \"div\"> =\n  PaginationPrimitive.PaginationEllipsisProps<T> & {\n    class?: string | undefined\n    children?: JSX.Element\n  }\n\nconst PaginationEllipsis = <T extends ValidComponent = \"div\">(\n  props: PolymorphicProps<T, PaginationEllipsisProps<T>>\n) => {\n  const [local, others] = splitProps(props as PaginationEllipsisProps, [\"class\", \"children\"])\n  return (\n    <PaginationPrimitive.Ellipsis\n      class={cn(\"flex size-9 items-center justify-center\", local.class)}\n      data-slot=\"pagination-ellipsis\"\n      {...others}\n    >\n      <Show fallback={<MoreHorizontal class=\"size-4\" />} when={local.children}>\n        {local.children}\n      </Show>\n      <span class=\"sr-only\">More pages</span>\n    </PaginationPrimitive.Ellipsis>\n  )\n}\n\ntype PaginationPreviousProps<T extends ValidComponent = \"button\"> =\n  PaginationPrimitive.PaginationPreviousProps<T> & {\n    class?: string | undefined\n    children?: JSX.Element\n  }\n\nconst PaginationPrevious = <T extends ValidComponent = \"button\">(\n  props: PolymorphicProps<T, PaginationPreviousProps<T>>\n) => {\n  const [local, others] = splitProps(props as PaginationPreviousProps, [\"class\", \"children\"])\n  return (\n    <PaginationPrimitive.Previous\n      class={cn(\n        buttonVariants({\n          variant: \"ghost\",\n          size: \"default\"\n        }),\n        \"gap-1 px-2.5 sm:pl-2.5\",\n        local.class\n      )}\n      data-slot=\"pagination-previous\"\n      {...others}\n    >\n      <Show\n        fallback={\n          <>\n            <ChevronLeft class=\"size-4\" />\n            <span class=\"hidden sm:block\">Previous</span>\n          </>\n        }\n        when={local.children}\n      >\n        {local.children}\n      </Show>\n    </PaginationPrimitive.Previous>\n  )\n}\n\ntype PaginationNextProps<T extends ValidComponent = \"button\"> =\n  PaginationPrimitive.PaginationNextProps<T> & {\n    class?: string | undefined\n    children?: JSX.Element\n  }\n\nconst PaginationNext = <T extends ValidComponent = \"button\">(\n  props: PolymorphicProps<T, PaginationNextProps<T>>\n) => {\n  const [local, others] = splitProps(props as PaginationNextProps, [\"class\", \"children\"])\n  return (\n    <PaginationPrimitive.Next\n      class={cn(\n        buttonVariants({\n          variant: \"ghost\",\n          size: \"default\"\n        }),\n        \"gap-1 px-2.5 sm:pr-2.5\",\n        local.class\n      )}\n      data-slot=\"pagination-next\"\n      {...others}\n    >\n      <Show\n        fallback={\n          <>\n            <span class=\"hidden sm:block\">Next</span>\n            <ChevronRight class=\"size-4\" />\n          </>\n        }\n        when={local.children}\n      >\n        {local.children}\n      </Show>\n    </PaginationPrimitive.Next>\n  )\n}\n\nexport {\n  Pagination,\n  PaginationContent,\n  PaginationItems,\n  PaginationItem,\n  PaginationEllipsis,\n  PaginationPrevious,\n  PaginationNext\n}\n",
      "type": "registry:ui"
    }
  ]
}