registry:component
Pagination
v1.0.0ga
Page navigation primitive with previous/next and ellipsis states.
Registry Endpoint
Open JSONhttps://registry.aavya.com/r/ui-pagination.json
npx shadcn@latest add https://registry.aavya.com/r/ui-pagination.json
Live Preview
Usage Snippet
import Pagination from '@/components/ui/pagination.tsx'
export default function Example() {
return (
<div className="p-6">
<Pagination />
</div>
)
}
Source Preview
import * as React from 'react'
import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from 'lucide-react'
import { cn } from '@/lib/utils'
import type { Button } from '@/components/ui/button'
import { buttonVariants } from '@/components/ui/button'
function Pagination({ className, ...props }: React.ComponentProps<'nav'>) {
return (
<nav
role='navigation'
aria-label='pagination'
data-slot='pagination'
className={cn('mx-auto flex w-full justify-center', className)}
{...props}
/>
)
}
function PaginationContent({ className, ...props }: React.ComponentProps<'ul'>) {
return <ul data-slot='pagination-content' className={cn('flex flex-row items-center gap-1', className)} {...props} />
}
function PaginationItem({ ...props }: React.ComponentProps<'li'>) {
return <li data-slot='pagination-item' {...props} />
}
type PaginationLinkProps = {
isActive?: boolean
} & Pick<React.ComponentProps<typeof Button>, 'size'> &
React.ComponentProps<'a'>
function PaginationLink({ className, isActive, size = 'icon', ...props }: PaginationLinkProps) {
return (
<a
aria-current={isActive ? 'page' : undefined}
data-slot='pagination-link'
data-active={isActive}
className={cn(
buttonVariants({
variant: isActive ? 'outline' : 'ghost',
size
}),
className
)}
{...pro