Skip to content

Commit 82da48c

Browse files
Merge pull request #58 from tusar-pimjo/docs/preview-pagination
fix: fix pagination only showing mobile view on smaller devices
2 parents 5246a9c + ea9f6ea commit 82da48c

16 files changed

+146
-25
lines changed

apps/docs/content/components/pagination.mdx

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ description: A React pagination component for navigating between pages of conten
44
---
55

66
import { ComponentPreview } from "@/components/component-preview";
7-
import PaginationCompactPreview from "@/components/preview/pagination/pagination-compact-preview";
8-
import PaginationCustomPreview from "@/components/preview/pagination/pagination-custom-preview";
9-
import PaginationDefaultPreview from "@/components/preview/pagination/pagination-default-preview";
10-
import PaginationFullSidePreview from "@/components/preview/pagination/pagination-full-side-preview";
11-
import PaginationIconSidePreview from "@/components/preview/pagination/pagination-icon-side-preview";
12-
import PaginationLabelSidePreview from "@/components/preview/pagination/pagination-label-side-preview";
7+
import PaginationCompactPreviewSource from "@/components/preview/pagination/pagination-compact-preview-source";
8+
import PaginationDefaultPreviewSource from "@/components/preview/pagination/pagination-default-preview-source";
9+
import PaginationFullSidePreviewSource from "@/components/preview/pagination/pagination-full-side-preview-source";
10+
import PaginationIconSidePreviewSource from "@/components/preview/pagination/pagination-icon-side-preview-source";
11+
import PaginationLabelSidePreviewSource from "@/components/preview/pagination/pagination-label-side-preview-source";
12+
import PaginationMobilePreview from "@/components/preview/pagination/pagination-mobile-preview";
1313
import { getFileContent } from "@/utils/get-file-content";
1414
import { Accordion, Accordions } from "fumadocs-ui/components/accordion";
1515

@@ -23,8 +23,9 @@ This Pagination component is built with React and styled using Tailwind CSS. It
2323
codeSnippet={getFileContent(
2424
"/src/components/preview/pagination/pagination-default-preview.tsx"
2525
)}
26+
noPaddingOnPreviewForMobile
2627
>
27-
<PaginationDefaultPreview />
28+
<PaginationDefaultPreviewSource />
2829
</ComponentPreview>
2930

3031
## Installation
@@ -61,7 +62,7 @@ Import the component and control the active page using state.
6162
```tsx
6263
import { Pagination } from "@/registry/core/pagination";
6364

64-
export default () => (
65+
export default PaginationExample = () => (
6566
<Pagination
6667
currentPage={2}
6768
totalPages={10}
@@ -80,8 +81,9 @@ Use the `compact` variant for a minimal style, often suited for smaller sections
8081
codeSnippet={getFileContent(
8182
"/src/components/preview/pagination/pagination-compact-preview.tsx"
8283
)}
84+
noPaddingOnPreviewForMobile
8385
>
84-
<PaginationCompactPreview />
86+
<PaginationCompactPreviewSource />
8587
</ComponentPreview>
8688

8789
### Full Side Layout
@@ -92,8 +94,9 @@ This is the **default** layout, showing both the icon and the text label ("Previ
9294
codeSnippet={getFileContent(
9395
"/src/components/preview/pagination/pagination-full-side-preview.tsx"
9496
)}
97+
noPaddingOnPreviewForMobile
9598
>
96-
<PaginationFullSidePreview />
99+
<PaginationFullSidePreviewSource />
97100
</ComponentPreview>
98101

99102
### Label-Only Side Layout
@@ -104,8 +107,9 @@ Shows only the text label ("Previous"/"Next") on desktop, but hides it on mobile
104107
codeSnippet={getFileContent(
105108
"/src/components/preview/pagination/pagination-label-side-preview.tsx"
106109
)}
110+
noPaddingOnPreviewForMobile
107111
>
108-
<PaginationLabelSidePreview />
112+
<PaginationLabelSidePreviewSource />
109113
</ComponentPreview>
110114

111115
### Icon-Only Side Layout
@@ -116,20 +120,21 @@ Uses icons only for previous and next buttons.
116120
codeSnippet={getFileContent(
117121
"/src/components/preview/pagination/pagination-icon-side-preview.tsx"
118122
)}
123+
noPaddingOnPreviewForMobile
119124
>
120-
<PaginationIconSidePreview />
125+
<PaginationIconSidePreviewSource />
121126
</ComponentPreview>
122127

123-
### Custom
128+
### Mobile Preview
124129

125-
A completely custom implementation with different layout and styling.
130+
The pagination component is fully responsive, seamlessly adapting its layout and controls to ensure a consistent experience across various devices and screen sizes.
126131

127132
<ComponentPreview
128133
codeSnippet={getFileContent(
129-
"/src/components/preview/pagination/pagination-custom-preview.tsx"
134+
"/src/components/preview/pagination/pagination-default-preview.tsx"
130135
)}
131136
>
132-
<PaginationCustomPreview />
137+
<PaginationMobilePreview />
133138
</ComponentPreview>
134139

135140
## API Reference
2.73 KB
Loading
2.53 KB
Loading
2.35 KB
Loading
1.53 KB
Loading
2.07 KB
Loading

apps/docs/src/components/component-preview.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
"use client";
22

3-
import { CopyToClipboard } from "./copy-to-clipboard";
3+
import { cn } from "@/lib/cn";
4+
import { useState } from "react";
45
import { CodeBlock } from "./code-block";
6+
import { CopyToClipboard } from "./copy-to-clipboard";
57
import { SegmentedControl } from "./segmented-control";
6-
import { useState } from "react";
78

89
const ITEMS = [
910
{
@@ -20,11 +21,13 @@ type PropsType = {
2021
codeSnippetLang?: string;
2122
codeSnippet: string;
2223
children: React.ReactNode;
24+
noPaddingOnPreviewForMobile?: boolean;
2325
};
2426

2527
export function ComponentPreview({
2628
codeSnippet,
2729
codeSnippetLang = "tsx",
30+
noPaddingOnPreviewForMobile,
2831
children
2932
}: PropsType) {
3033
const [activeTab, setActiveTab] = useState("preview");
@@ -47,7 +50,12 @@ export function ComponentPreview({
4750

4851
<div className="bg-gray-50 dark:bg-gray-900 rounded-[1.75rem] border p-2.5 my-4">
4952
{activeTab === "preview" && (
50-
<div className="px-15 py-10 min-h-100 flex flex-col items-center justify-center rounded-[20px] border border-gray-200 dark:border-gray-800 bg-white not-prose">
53+
<div
54+
className={cn(
55+
"min-h-100 flex flex-col items-center justify-center rounded-[20px] border border-gray-200 dark:border-gray-800 bg-white not-prose",
56+
noPaddingOnPreviewForMobile ? "p-0 sm:px-15 sm:py-10" : "px-15 py-10"
57+
)}
58+
>
5159
{children}
5260
</div>
5361
)}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"use client";
2+
3+
import Image from "next/image";
4+
5+
import compactVariantImg from "../../../../public/images/preview/pagination/compact-variant.webp";
6+
import PaginationCompactPreview from "./pagination-compact-preview";
7+
8+
export default function PaginationCompactPreviewSource() {
9+
return (
10+
<>
11+
<Image
12+
src={compactVariantImg}
13+
alt="pagination"
14+
className="block sm:hidden size-full object-cover px-2"
15+
/>
16+
17+
<div className="hidden sm:block">
18+
<PaginationCompactPreview />
19+
</div>
20+
</>
21+
);
22+
}

apps/docs/src/components/preview/pagination/pagination-compact-preview.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ export default function PaginationCompactPreview() {
99

1010
const handlePageChange = (page: number) => {
1111
setCurrentPage(page);
12-
console.log(`Navigating to page ${page}`);
1312
};
1413

1514
return (
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"use client";
2+
3+
import Image from "next/image";
4+
5+
import defaultVariantImg from "../../../../public/images/preview/pagination/default-variant.webp";
6+
import PaginationDefaultPreview from "./pagination-default-preview";
7+
8+
export default function PaginationDefaultPreviewSource() {
9+
return (
10+
<>
11+
<Image
12+
src={defaultVariantImg}
13+
alt="pagination"
14+
className="block sm:hidden size-full object-cover px-2"
15+
/>
16+
17+
<div className="hidden sm:block pr-4">
18+
<PaginationDefaultPreview />
19+
</div>
20+
</>
21+
);
22+
}

0 commit comments

Comments
 (0)