snapshot of https://github.com/shadcn-ui/ui.git (main, 2026-09-15; blobs > 131072B omitted)
This commit is contained in:
214
apps/v4/content/docs/components/radix/pagination.mdx
Normal file
214
apps/v4/content/docs/components/radix/pagination.mdx
Normal file
@@ -0,0 +1,214 @@
|
||||
---
|
||||
title: Pagination
|
||||
description: Pagination with page navigation, next and previous links.
|
||||
base: radix
|
||||
component: true
|
||||
---
|
||||
|
||||
<ComponentPreview styleName="radix-nova" name="pagination-demo" />
|
||||
|
||||
## Installation
|
||||
|
||||
<CodeTabs>
|
||||
|
||||
<TabsList>
|
||||
<TabsTrigger value="cli">Command</TabsTrigger>
|
||||
<TabsTrigger value="manual">Manual</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value="cli">
|
||||
|
||||
```bash
|
||||
npx shadcn@latest add pagination
|
||||
```
|
||||
|
||||
</TabsContent>
|
||||
|
||||
<TabsContent value="manual">
|
||||
|
||||
<Steps className="mb-0 pt-2">
|
||||
|
||||
<Step>Copy and paste the following code into your project.</Step>
|
||||
|
||||
<ComponentSource
|
||||
name="pagination"
|
||||
title="components/ui/pagination.tsx"
|
||||
styleName="radix-nova"
|
||||
/>
|
||||
|
||||
<Step>Update the import paths to match your project setup.</Step>
|
||||
|
||||
</Steps>
|
||||
|
||||
</TabsContent>
|
||||
|
||||
</CodeTabs>
|
||||
|
||||
## Usage
|
||||
|
||||
```tsx showLineNumbers
|
||||
import {
|
||||
Pagination,
|
||||
PaginationContent,
|
||||
PaginationEllipsis,
|
||||
PaginationItem,
|
||||
PaginationLink,
|
||||
PaginationNext,
|
||||
PaginationPrevious,
|
||||
} from "@/components/ui/pagination"
|
||||
```
|
||||
|
||||
```tsx showLineNumbers
|
||||
<Pagination>
|
||||
<PaginationContent>
|
||||
<PaginationItem>
|
||||
<PaginationPrevious href="#" />
|
||||
</PaginationItem>
|
||||
<PaginationItem>
|
||||
<PaginationLink href="#">1</PaginationLink>
|
||||
</PaginationItem>
|
||||
<PaginationItem>
|
||||
<PaginationLink href="#" isActive>
|
||||
2
|
||||
</PaginationLink>
|
||||
</PaginationItem>
|
||||
<PaginationItem>
|
||||
<PaginationLink href="#">3</PaginationLink>
|
||||
</PaginationItem>
|
||||
<PaginationItem>
|
||||
<PaginationEllipsis />
|
||||
</PaginationItem>
|
||||
<PaginationItem>
|
||||
<PaginationNext href="#" />
|
||||
</PaginationItem>
|
||||
</PaginationContent>
|
||||
</Pagination>
|
||||
```
|
||||
|
||||
## Composition
|
||||
|
||||
Use the following composition to build a `Pagination`:
|
||||
|
||||
```text
|
||||
Pagination
|
||||
└── PaginationContent
|
||||
├── PaginationItem
|
||||
│ └── PaginationPrevious
|
||||
├── PaginationItem
|
||||
│ └── PaginationLink
|
||||
├── PaginationItem
|
||||
│ └── PaginationEllipsis
|
||||
└── PaginationItem
|
||||
└── PaginationNext
|
||||
```
|
||||
|
||||
## Simple
|
||||
|
||||
A simple pagination with only page numbers.
|
||||
|
||||
<ComponentPreview styleName="radix-nova" name="pagination-simple" />
|
||||
|
||||
## Icons Only
|
||||
|
||||
Use just the previous and next buttons without page numbers. This is useful for data tables with a rows per page selector.
|
||||
|
||||
<ComponentPreview styleName="radix-nova" name="pagination-icons-only" />
|
||||
|
||||
## Next.js
|
||||
|
||||
By default the `<PaginationLink />` component will render an `<a />` tag.
|
||||
|
||||
To use the Next.js `<Link />` component, make the following updates to `pagination.tsx`.
|
||||
|
||||
```diff showLineNumbers /typeof Link/ {1}
|
||||
+ import Link from "next/link"
|
||||
|
||||
- type PaginationLinkProps = ... & React.ComponentProps<"a">
|
||||
+ type PaginationLinkProps = ... & React.ComponentProps<typeof Link>
|
||||
|
||||
const PaginationLink = ({...props }: ) => (
|
||||
<PaginationItem>
|
||||
- <a>
|
||||
+ <Link>
|
||||
// ...
|
||||
- </a>
|
||||
+ </Link>
|
||||
</PaginationItem>
|
||||
)
|
||||
|
||||
```
|
||||
|
||||
<Callout className="mt-6">
|
||||
|
||||
**Note:** We are making updates to the cli to automatically do this for you.
|
||||
|
||||
</Callout>
|
||||
|
||||
## RTL
|
||||
|
||||
To enable RTL support in shadcn/ui, see the [RTL configuration guide](/docs/rtl).
|
||||
|
||||
<ComponentPreview
|
||||
styleName="radix-nova"
|
||||
name="pagination-rtl"
|
||||
direction="rtl"
|
||||
/>
|
||||
|
||||
## Changelog
|
||||
|
||||
### RTL Support
|
||||
|
||||
If you're upgrading from a previous version of the `Pagination` component, you'll need to apply the following updates to add the `text` prop:
|
||||
|
||||
<Steps>
|
||||
|
||||
<Step>Update `PaginationPrevious`.</Step>
|
||||
|
||||
```diff
|
||||
function PaginationPrevious({
|
||||
className,
|
||||
+ text = "Previous",
|
||||
...props
|
||||
- }: React.ComponentProps<typeof PaginationLink>) {
|
||||
+ }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {
|
||||
return (
|
||||
<PaginationLink
|
||||
aria-label="Go to previous page"
|
||||
size="default"
|
||||
className={cn("cn-pagination-previous", className)}
|
||||
{...props}
|
||||
>
|
||||
<ChevronLeftIcon />
|
||||
<span className="cn-pagination-previous-text hidden sm:block">
|
||||
- Previous
|
||||
+ {text}
|
||||
</span>
|
||||
</PaginationLink>
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
<Step>Update `PaginationNext`.</Step>
|
||||
|
||||
```diff
|
||||
function PaginationNext({
|
||||
className,
|
||||
+ text = "Next",
|
||||
...props
|
||||
- }: React.ComponentProps<typeof PaginationLink>) {
|
||||
+ }: React.ComponentProps<typeof PaginationLink> & { text?: string }) {
|
||||
return (
|
||||
<PaginationLink
|
||||
aria-label="Go to next page"
|
||||
size="default"
|
||||
className={cn("cn-pagination-next", className)}
|
||||
{...props}
|
||||
>
|
||||
- <span className="cn-pagination-next-text hidden sm:block">Next</span>
|
||||
+ <span className="cn-pagination-next-text hidden sm:block">{text}</span>
|
||||
<ChevronRightIcon />
|
||||
</PaginationLink>
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
</Steps>
|
||||
Reference in New Issue
Block a user