@neynar/ui 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.llm/a.llm.md +131 -0
- package/.llm/accordion-content.llm.md +67 -0
- package/.llm/accordion-item.llm.md +61 -0
- package/.llm/accordion-trigger.llm.md +69 -0
- package/.llm/accordion.llm.md +88 -0
- package/.llm/alert-description.llm.md +78 -0
- package/.llm/alert-dialog-action.llm.md +51 -0
- package/.llm/alert-dialog-cancel.llm.md +48 -0
- package/.llm/alert-dialog-content.llm.md +88 -0
- package/.llm/alert-dialog-description.llm.md +53 -0
- package/.llm/alert-dialog-footer.llm.md +41 -0
- package/.llm/alert-dialog-header.llm.md +39 -0
- package/.llm/alert-dialog-overlay.llm.md +44 -0
- package/.llm/alert-dialog-portal.llm.md +41 -0
- package/.llm/alert-dialog-title.llm.md +46 -0
- package/.llm/alert-dialog-trigger.llm.md +40 -0
- package/.llm/alert-dialog.llm.md +80 -0
- package/.llm/alert-title.llm.md +48 -0
- package/.llm/alert.llm.md +92 -0
- package/.llm/aspect-ratio.llm.md +41 -0
- package/.llm/avatar-fallback.llm.md +41 -0
- package/.llm/avatar-image.llm.md +48 -0
- package/.llm/avatar.llm.md +35 -0
- package/.llm/badge.llm.md +117 -0
- package/.llm/blockquote.llm.md +117 -0
- package/.llm/breadcrumb-ellipsis.llm.md +73 -0
- package/.llm/breadcrumb-item.llm.md +53 -0
- package/.llm/breadcrumb-link.llm.md +84 -0
- package/.llm/breadcrumb-list.llm.md +54 -0
- package/.llm/breadcrumb-page.llm.md +52 -0
- package/.llm/breadcrumb-separator.llm.md +60 -0
- package/.llm/breadcrumb.llm.md +110 -0
- package/.llm/button-group-separator.llm.md +53 -0
- package/.llm/button-group-text.llm.md +56 -0
- package/.llm/button-group.llm.md +81 -0
- package/.llm/button.llm.md +281 -0
- package/.llm/calendar-day-button.llm.md +57 -0
- package/.llm/calendar.llm.md +340 -0
- package/.llm/card-action.llm.md +64 -0
- package/.llm/card-content.llm.md +48 -0
- package/.llm/card-description.llm.md +46 -0
- package/.llm/card-footer.llm.md +56 -0
- package/.llm/card-header.llm.md +53 -0
- package/.llm/card-title.llm.md +43 -0
- package/.llm/card.llm.md +100 -0
- package/.llm/carousel-content.llm.md +77 -0
- package/.llm/carousel-item.llm.md +96 -0
- package/.llm/carousel-next.llm.md +95 -0
- package/.llm/carousel-previous.llm.md +95 -0
- package/.llm/carousel.llm.md +211 -0
- package/.llm/chart-config.llm.md +71 -0
- package/.llm/chart-container.llm.md +148 -0
- package/.llm/chart-legend-content.llm.md +85 -0
- package/.llm/chart-legend.llm.md +144 -0
- package/.llm/chart-style.llm.md +28 -0
- package/.llm/chart-tooltip-content.llm.md +149 -0
- package/.llm/chart-tooltip.llm.md +184 -0
- package/.llm/checkbox.llm.md +100 -0
- package/.llm/cn.llm.md +46 -0
- package/.llm/code.llm.md +103 -0
- package/.llm/collapsible-content.llm.md +109 -0
- package/.llm/collapsible-trigger.llm.md +75 -0
- package/.llm/collapsible.llm.md +109 -0
- package/.llm/combobox-option.llm.md +53 -0
- package/.llm/combobox.llm.md +208 -0
- package/.llm/command-dialog.llm.md +112 -0
- package/.llm/command-empty.llm.md +63 -0
- package/.llm/command-group.llm.md +83 -0
- package/.llm/command-input.llm.md +82 -0
- package/.llm/command-item.llm.md +97 -0
- package/.llm/command-list.llm.md +53 -0
- package/.llm/command-loading.llm.md +48 -0
- package/.llm/command-separator.llm.md +44 -0
- package/.llm/command-shortcut.llm.md +63 -0
- package/.llm/command.llm.md +147 -0
- package/.llm/container.llm.md +236 -0
- package/.llm/context-menu-checkbox-item.llm.md +97 -0
- package/.llm/context-menu-content.llm.md +91 -0
- package/.llm/context-menu-group.llm.md +61 -0
- package/.llm/context-menu-item.llm.md +94 -0
- package/.llm/context-menu-label.llm.md +60 -0
- package/.llm/context-menu-portal.llm.md +49 -0
- package/.llm/context-menu-radio-group.llm.md +66 -0
- package/.llm/context-menu-radio-item.llm.md +76 -0
- package/.llm/context-menu-separator.llm.md +51 -0
- package/.llm/context-menu-shortcut.llm.md +57 -0
- package/.llm/context-menu-sub-content.llm.md +90 -0
- package/.llm/context-menu-sub-trigger.llm.md +73 -0
- package/.llm/context-menu-sub.llm.md +61 -0
- package/.llm/context-menu-trigger.llm.md +53 -0
- package/.llm/context-menu.llm.md +103 -0
- package/.llm/date-picker.llm.md +90 -0
- package/.llm/dialog-close.llm.md +61 -0
- package/.llm/dialog-content.llm.md +128 -0
- package/.llm/dialog-description.llm.md +44 -0
- package/.llm/dialog-footer.llm.md +38 -0
- package/.llm/dialog-header.llm.md +40 -0
- package/.llm/dialog-overlay.llm.md +57 -0
- package/.llm/dialog-portal.llm.md +47 -0
- package/.llm/dialog-title.llm.md +41 -0
- package/.llm/dialog-trigger.llm.md +51 -0
- package/.llm/dialog.llm.md +113 -0
- package/.llm/drawer-close.llm.md +53 -0
- package/.llm/drawer-content.llm.md +58 -0
- package/.llm/drawer-description.llm.md +54 -0
- package/.llm/drawer-footer.llm.md +67 -0
- package/.llm/drawer-header.llm.md +60 -0
- package/.llm/drawer-overlay.llm.md +40 -0
- package/.llm/drawer-portal.llm.md +42 -0
- package/.llm/drawer-title.llm.md +51 -0
- package/.llm/drawer-trigger.llm.md +44 -0
- package/.llm/drawer.llm.md +194 -0
- package/.llm/dropdown-menu-checkbox-item.llm.md +111 -0
- package/.llm/dropdown-menu-content.llm.md +109 -0
- package/.llm/dropdown-menu-group.llm.md +38 -0
- package/.llm/dropdown-menu-item.llm.md +94 -0
- package/.llm/dropdown-menu-label.llm.md +66 -0
- package/.llm/dropdown-menu-portal.llm.md +32 -0
- package/.llm/dropdown-menu-radio-group.llm.md +73 -0
- package/.llm/dropdown-menu-radio-item.llm.md +92 -0
- package/.llm/dropdown-menu-separator.llm.md +55 -0
- package/.llm/dropdown-menu-shortcut.llm.md +74 -0
- package/.llm/dropdown-menu-sub-content.llm.md +80 -0
- package/.llm/dropdown-menu-sub-trigger.llm.md +84 -0
- package/.llm/dropdown-menu-sub.llm.md +74 -0
- package/.llm/dropdown-menu-trigger.llm.md +48 -0
- package/.llm/dropdown-menu.llm.md +120 -0
- package/.llm/empty-content.llm.md +103 -0
- package/.llm/empty-description.llm.md +70 -0
- package/.llm/empty-header.llm.md +64 -0
- package/.llm/empty-media.llm.md +81 -0
- package/.llm/empty-state.llm.md +174 -0
- package/.llm/empty-title.llm.md +54 -0
- package/.llm/empty.llm.md +158 -0
- package/.llm/field-content.llm.md +28 -0
- package/.llm/field-description.llm.md +28 -0
- package/.llm/field-error.llm.md +41 -0
- package/.llm/field-group.llm.md +84 -0
- package/.llm/field-label.llm.md +28 -0
- package/.llm/field-legend.llm.md +77 -0
- package/.llm/field-separator.llm.md +35 -0
- package/.llm/field-set.llm.md +80 -0
- package/.llm/field-title.llm.md +28 -0
- package/.llm/field.llm.md +35 -0
- package/.llm/h1.llm.md +108 -0
- package/.llm/h2.llm.md +108 -0
- package/.llm/h3.llm.md +106 -0
- package/.llm/h4.llm.md +104 -0
- package/.llm/h5.llm.md +105 -0
- package/.llm/h6.llm.md +105 -0
- package/.llm/hover-card-content.llm.md +167 -0
- package/.llm/hover-card-trigger.llm.md +65 -0
- package/.llm/hover-card.llm.md +121 -0
- package/.llm/input-group-addon.llm.md +91 -0
- package/.llm/input-group-button.llm.md +120 -0
- package/.llm/input-group-input.llm.md +145 -0
- package/.llm/input-group-text.llm.md +75 -0
- package/.llm/input-group-textarea.llm.md +157 -0
- package/.llm/input-group.llm.md +108 -0
- package/.llm/input.llm.md +319 -0
- package/.llm/item-actions.llm.md +77 -0
- package/.llm/item-content.llm.md +73 -0
- package/.llm/item-description.llm.md +61 -0
- package/.llm/item-footer.llm.md +68 -0
- package/.llm/item-group.llm.md +73 -0
- package/.llm/item-header.llm.md +66 -0
- package/.llm/item-media.llm.md +75 -0
- package/.llm/item-separator.llm.md +80 -0
- package/.llm/item-title.llm.md +59 -0
- package/.llm/item.llm.md +115 -0
- package/.llm/kbd-group.llm.md +71 -0
- package/.llm/kbd.llm.md +71 -0
- package/.llm/label.llm.md +145 -0
- package/.llm/lead.llm.md +114 -0
- package/.llm/menubar-checkbox-item.llm.md +66 -0
- package/.llm/menubar-content.llm.md +128 -0
- package/.llm/menubar-group.llm.md +40 -0
- package/.llm/menubar-item.llm.md +62 -0
- package/.llm/menubar-label.llm.md +40 -0
- package/.llm/menubar-menu.llm.md +32 -0
- package/.llm/menubar-portal.llm.md +38 -0
- package/.llm/menubar-radio-group.llm.md +39 -0
- package/.llm/menubar-radio-item.llm.md +59 -0
- package/.llm/menubar-separator.llm.md +35 -0
- package/.llm/menubar-shortcut.llm.md +37 -0
- package/.llm/menubar-sub-content.llm.md +127 -0
- package/.llm/menubar-sub-trigger.llm.md +51 -0
- package/.llm/menubar-sub.llm.md +53 -0
- package/.llm/menubar-trigger.llm.md +37 -0
- package/.llm/menubar.llm.md +115 -0
- package/.llm/navigation-menu-content.llm.md +116 -0
- package/.llm/navigation-menu-indicator.llm.md +68 -0
- package/.llm/navigation-menu-item.llm.md +62 -0
- package/.llm/navigation-menu-link.llm.md +109 -0
- package/.llm/navigation-menu-list.llm.md +52 -0
- package/.llm/navigation-menu-trigger-style.llm.md +22 -0
- package/.llm/navigation-menu-trigger.llm.md +57 -0
- package/.llm/navigation-menu-viewport.llm.md +51 -0
- package/.llm/navigation-menu.llm.md +184 -0
- package/.llm/p.llm.md +110 -0
- package/.llm/pagination-content.llm.md +60 -0
- package/.llm/pagination-ellipsis.llm.md +107 -0
- package/.llm/pagination-item.llm.md +59 -0
- package/.llm/pagination-link.llm.md +150 -0
- package/.llm/pagination-next.llm.md +115 -0
- package/.llm/pagination-previous.llm.md +115 -0
- package/.llm/pagination.llm.md +190 -0
- package/.llm/popover-anchor.llm.md +53 -0
- package/.llm/popover-content.llm.md +109 -0
- package/.llm/popover-trigger.llm.md +54 -0
- package/.llm/popover.llm.md +116 -0
- package/.llm/progress.llm.md +76 -0
- package/.llm/radio-group-indicator.llm.md +28 -0
- package/.llm/radio-group-item.llm.md +40 -0
- package/.llm/radio-group.llm.md +76 -0
- package/.llm/resizable-handle.llm.md +156 -0
- package/.llm/resizable-panel-group.llm.md +149 -0
- package/.llm/resizable-panel.llm.md +157 -0
- package/.llm/scroll-area-corner.llm.md +41 -0
- package/.llm/scroll-area-thumb.llm.md +39 -0
- package/.llm/scroll-area-viewport.llm.md +60 -0
- package/.llm/scroll-area.llm.md +125 -0
- package/.llm/scroll-bar.llm.md +78 -0
- package/.llm/sdk-items-registry.json +3022 -0
- package/.llm/select-content.llm.md +139 -0
- package/.llm/select-group.llm.md +60 -0
- package/.llm/select-item.llm.md +75 -0
- package/.llm/select-label.llm.md +62 -0
- package/.llm/select-scroll-down-button.llm.md +45 -0
- package/.llm/select-scroll-up-button.llm.md +45 -0
- package/.llm/select-separator.llm.md +59 -0
- package/.llm/select-trigger.llm.md +66 -0
- package/.llm/select-value.llm.md +67 -0
- package/.llm/select.llm.md +159 -0
- package/.llm/separator.llm.md +129 -0
- package/.llm/sheet-close.llm.md +49 -0
- package/.llm/sheet-content.llm.md +115 -0
- package/.llm/sheet-description.llm.md +62 -0
- package/.llm/sheet-footer.llm.md +64 -0
- package/.llm/sheet-header.llm.md +52 -0
- package/.llm/sheet-title.llm.md +53 -0
- package/.llm/sheet-trigger.llm.md +46 -0
- package/.llm/sheet.llm.md +126 -0
- package/.llm/sidebar-content.llm.md +63 -0
- package/.llm/sidebar-footer.llm.md +50 -0
- package/.llm/sidebar-group-action.llm.md +60 -0
- package/.llm/sidebar-group-content.llm.md +64 -0
- package/.llm/sidebar-group-label.llm.md +53 -0
- package/.llm/sidebar-group.llm.md +56 -0
- package/.llm/sidebar-header.llm.md +67 -0
- package/.llm/sidebar-input.llm.md +50 -0
- package/.llm/sidebar-inset.llm.md +52 -0
- package/.llm/sidebar-menu-action.llm.md +84 -0
- package/.llm/sidebar-menu-badge.llm.md +60 -0
- package/.llm/sidebar-menu-button.llm.md +103 -0
- package/.llm/sidebar-menu-item.llm.md +75 -0
- package/.llm/sidebar-menu-skeleton.llm.md +76 -0
- package/.llm/sidebar-menu-sub-button.llm.md +85 -0
- package/.llm/sidebar-menu-sub-item.llm.md +54 -0
- package/.llm/sidebar-menu-sub.llm.md +74 -0
- package/.llm/sidebar-menu.llm.md +65 -0
- package/.llm/sidebar-provider.llm.md +79 -0
- package/.llm/sidebar-rail.llm.md +34 -0
- package/.llm/sidebar-separator.llm.md +57 -0
- package/.llm/sidebar-trigger.llm.md +49 -0
- package/.llm/sidebar.llm.md +129 -0
- package/.llm/skeleton.llm.md +134 -0
- package/.llm/slider.llm.md +173 -0
- package/.llm/small.llm.md +110 -0
- package/.llm/span.llm.md +118 -0
- package/.llm/spinner.llm.md +182 -0
- package/.llm/stack.llm.md +28 -0
- package/.llm/strong.llm.md +110 -0
- package/.llm/switch.llm.md +76 -0
- package/.llm/table-body.llm.md +36 -0
- package/.llm/table-caption.llm.md +48 -0
- package/.llm/table-cell.llm.md +53 -0
- package/.llm/table-footer.llm.md +41 -0
- package/.llm/table-head.llm.md +69 -0
- package/.llm/table-header.llm.md +41 -0
- package/.llm/table-row.llm.md +42 -0
- package/.llm/table.llm.md +123 -0
- package/.llm/tabs-content.llm.md +47 -0
- package/.llm/tabs-list.llm.md +41 -0
- package/.llm/tabs-trigger.llm.md +47 -0
- package/.llm/tabs.llm.md +71 -0
- package/.llm/text-field.llm.md +327 -0
- package/.llm/textarea.llm.md +311 -0
- package/.llm/theme-preference.llm.md +25 -0
- package/.llm/theme-toggle.llm.md +57 -0
- package/.llm/theme.llm.md +14 -0
- package/.llm/toast.llm.md +32 -0
- package/.llm/toaster.llm.md +193 -0
- package/.llm/toggle-group-item.llm.md +59 -0
- package/.llm/toggle-group.llm.md +101 -0
- package/.llm/toggle.llm.md +40 -0
- package/.llm/tooltip-content.llm.md +185 -0
- package/.llm/tooltip-provider.llm.md +68 -0
- package/.llm/tooltip-trigger.llm.md +70 -0
- package/.llm/tooltip.llm.md +129 -0
- package/.llm/typography.llm.md +161 -0
- package/.llm/use-carousel.llm.md +55 -0
- package/.llm/use-command-state.llm.md +32 -0
- package/.llm/use-is-mobile.llm.md +73 -0
- package/.llm/use-sidebar.llm.md +61 -0
- package/dist/components/ui/scroll-area.d.ts +5 -5
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/stack.d.ts.map +1 -1
- package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -1
- package/dist/components/ui/theme-toggle.d.ts +0 -3
- package/dist/components/ui/theme-toggle.d.ts.map +1 -1
- package/dist/components/ui/theme.d.ts.map +1 -1
- package/dist/index.js +4972 -9636
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/components/ui/stack.tsx +3 -1
- package/src/components/ui/theme-toggle.tsx +1 -3
- package/src/components/ui/theme.tsx +6 -1
- package/src/styles/globals.css +57 -85
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# NavigationMenu
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenu - A collection of links for navigating websites A flexible navigation component built on Radix UI primitives that provides sophisticated navigation patterns with dropdown content support. Features full keyboard navigation, accessibility compliance, controlled/uncontrolled states, and responsive design. Supports both horizontal and vertical orientations.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenu } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenu
|
|
13
|
+
defaultValue="value"
|
|
14
|
+
value="value"
|
|
15
|
+
onValueChange={handleValueChange}
|
|
16
|
+
delayDuration={0}
|
|
17
|
+
skipDelayDuration={0}
|
|
18
|
+
dir={value}
|
|
19
|
+
orientation={value}
|
|
20
|
+
viewport={true}
|
|
21
|
+
>
|
|
22
|
+
{/* Your content here */}
|
|
23
|
+
</NavigationMenu>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Component Props
|
|
27
|
+
|
|
28
|
+
### defaultValue
|
|
29
|
+
- **Type**: `string`
|
|
30
|
+
- **Required**: No
|
|
31
|
+
- **Description**: No description available
|
|
32
|
+
|
|
33
|
+
### value
|
|
34
|
+
- **Type**: `string`
|
|
35
|
+
- **Required**: No
|
|
36
|
+
- **Description**: No description available
|
|
37
|
+
|
|
38
|
+
### onValueChange
|
|
39
|
+
- **Type**: `(value: string) => void`
|
|
40
|
+
- **Required**: No
|
|
41
|
+
- **Description**: No description available
|
|
42
|
+
|
|
43
|
+
### delayDuration
|
|
44
|
+
- **Type**: `number`
|
|
45
|
+
- **Required**: No
|
|
46
|
+
- **Description**: No description available
|
|
47
|
+
|
|
48
|
+
### skipDelayDuration
|
|
49
|
+
- **Type**: `number`
|
|
50
|
+
- **Required**: No
|
|
51
|
+
- **Description**: No description available
|
|
52
|
+
|
|
53
|
+
### dir
|
|
54
|
+
- **Type**: `"ltr" | "rtl"`
|
|
55
|
+
- **Required**: No
|
|
56
|
+
- **Description**: No description available
|
|
57
|
+
|
|
58
|
+
### orientation
|
|
59
|
+
- **Type**: `"horizontal" | "vertical"`
|
|
60
|
+
- **Required**: No
|
|
61
|
+
- **Description**: No description available
|
|
62
|
+
|
|
63
|
+
### viewport
|
|
64
|
+
- **Type**: `boolean`
|
|
65
|
+
- **Required**: No
|
|
66
|
+
- **Description**: No description available
|
|
67
|
+
|
|
68
|
+
## Examples
|
|
69
|
+
|
|
70
|
+
### Example 1
|
|
71
|
+
```tsx
|
|
72
|
+
// Basic navigation with dropdown
|
|
73
|
+
<NavigationMenu>
|
|
74
|
+
<NavigationMenuList>
|
|
75
|
+
<NavigationMenuItem value="products">
|
|
76
|
+
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
|
|
77
|
+
<NavigationMenuContent>
|
|
78
|
+
<div className="grid gap-3 p-6 w-[400px]">
|
|
79
|
+
<NavigationMenuLink href="/products/analytics">Analytics</NavigationMenuLink>
|
|
80
|
+
<NavigationMenuLink href="/products/dashboard">Dashboard</NavigationMenuLink>
|
|
81
|
+
</div>
|
|
82
|
+
</NavigationMenuContent>
|
|
83
|
+
</NavigationMenuItem>
|
|
84
|
+
</NavigationMenuList>
|
|
85
|
+
</NavigationMenu>
|
|
86
|
+
```
|
|
87
|
+
### Example 2
|
|
88
|
+
```tsx
|
|
89
|
+
// Controlled navigation with state
|
|
90
|
+
const [value, setValue] = React.useState<string | undefined>();
|
|
91
|
+
<NavigationMenu value={value} onValueChange={setValue}>
|
|
92
|
+
<NavigationMenuList>
|
|
93
|
+
<NavigationMenuItem value="features">
|
|
94
|
+
<NavigationMenuTrigger>Features</NavigationMenuTrigger>
|
|
95
|
+
<NavigationMenuContent>
|
|
96
|
+
<NavigationMenuLink href="/features">All Features</NavigationMenuLink>
|
|
97
|
+
</NavigationMenuContent>
|
|
98
|
+
</NavigationMenuItem>
|
|
99
|
+
</NavigationMenuList>
|
|
100
|
+
</NavigationMenu>
|
|
101
|
+
```
|
|
102
|
+
### Example 3
|
|
103
|
+
```tsx
|
|
104
|
+
// Simple navigation links without dropdowns
|
|
105
|
+
<NavigationMenu>
|
|
106
|
+
<NavigationMenuList>
|
|
107
|
+
<NavigationMenuItem>
|
|
108
|
+
<NavigationMenuLink href="/about" className={navigationMenuTriggerStyle()}>
|
|
109
|
+
About
|
|
110
|
+
</NavigationMenuLink>
|
|
111
|
+
</NavigationMenuItem>
|
|
112
|
+
<NavigationMenuItem>
|
|
113
|
+
<NavigationMenuLink href="/contact" className={navigationMenuTriggerStyle()}>
|
|
114
|
+
Contact
|
|
115
|
+
</NavigationMenuLink>
|
|
116
|
+
</NavigationMenuItem>
|
|
117
|
+
</NavigationMenuList>
|
|
118
|
+
</NavigationMenu>
|
|
119
|
+
```
|
|
120
|
+
### Example 4
|
|
121
|
+
```tsx
|
|
122
|
+
// With Next.js Link integration using asChild
|
|
123
|
+
<NavigationMenu>
|
|
124
|
+
<NavigationMenuList>
|
|
125
|
+
<NavigationMenuItem>
|
|
126
|
+
<NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>
|
|
127
|
+
<Link href="/dashboard">Dashboard</Link>
|
|
128
|
+
</NavigationMenuLink>
|
|
129
|
+
</NavigationMenuItem>
|
|
130
|
+
</NavigationMenuList>
|
|
131
|
+
</NavigationMenu>
|
|
132
|
+
```
|
|
133
|
+
### Example 5
|
|
134
|
+
```tsx
|
|
135
|
+
// Vertical navigation menu
|
|
136
|
+
<NavigationMenu orientation="vertical">
|
|
137
|
+
<NavigationMenuList>
|
|
138
|
+
<NavigationMenuItem value="settings">
|
|
139
|
+
<NavigationMenuTrigger>Settings</NavigationMenuTrigger>
|
|
140
|
+
<NavigationMenuContent>
|
|
141
|
+
<div className="p-4 w-[200px]">
|
|
142
|
+
<NavigationMenuLink href="/settings/profile">Profile</NavigationMenuLink>
|
|
143
|
+
<NavigationMenuLink href="/settings/account">Account</NavigationMenuLink>
|
|
144
|
+
</div>
|
|
145
|
+
</NavigationMenuContent>
|
|
146
|
+
</NavigationMenuItem>
|
|
147
|
+
</NavigationMenuList>
|
|
148
|
+
</NavigationMenu>
|
|
149
|
+
```
|
|
150
|
+
### Example 6
|
|
151
|
+
```tsx
|
|
152
|
+
// Without viewport for custom dropdown styling
|
|
153
|
+
<NavigationMenu viewport={false}>
|
|
154
|
+
<NavigationMenuList>
|
|
155
|
+
<NavigationMenuItem value="docs">
|
|
156
|
+
<NavigationMenuTrigger>Documentation</NavigationMenuTrigger>
|
|
157
|
+
<NavigationMenuContent>
|
|
158
|
+
<div className="bg-white border rounded-lg shadow-lg p-6 w-[500px]">
|
|
159
|
+
<NavigationMenuLink href="/docs/getting-started">Getting Started</NavigationMenuLink>
|
|
160
|
+
</div>
|
|
161
|
+
</NavigationMenuContent>
|
|
162
|
+
</NavigationMenuItem>
|
|
163
|
+
</NavigationMenuList>
|
|
164
|
+
</NavigationMenu>
|
|
165
|
+
```
|
|
166
|
+
### Example 7
|
|
167
|
+
```tsx
|
|
168
|
+
// With custom timing and active indicator
|
|
169
|
+
<NavigationMenu
|
|
170
|
+
delayDuration={100}
|
|
171
|
+
skipDelayDuration={200}
|
|
172
|
+
defaultValue="home"
|
|
173
|
+
>
|
|
174
|
+
<NavigationMenuList>
|
|
175
|
+
<NavigationMenuItem value="home">
|
|
176
|
+
<NavigationMenuTrigger>Home</NavigationMenuTrigger>
|
|
177
|
+
<NavigationMenuContent>
|
|
178
|
+
<NavigationMenuLink href="/">Homepage</NavigationMenuLink>
|
|
179
|
+
</NavigationMenuContent>
|
|
180
|
+
</NavigationMenuItem>
|
|
181
|
+
<NavigationMenuIndicator />
|
|
182
|
+
</NavigationMenuList>
|
|
183
|
+
</NavigationMenu>
|
|
184
|
+
```
|
package/.llm/p.llm.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# P
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
P - Paragraph component for body text content Standard paragraph element for readable body text. Uses "body" variant with p semantic element. Optimized for readability with appropriate line height and font size.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { P } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<P
|
|
13
|
+
color={value}
|
|
14
|
+
align={value}
|
|
15
|
+
transform={value}
|
|
16
|
+
weight={value}
|
|
17
|
+
htmlFor="value"
|
|
18
|
+
asChild={true}
|
|
19
|
+
italic={true}
|
|
20
|
+
underline={true}
|
|
21
|
+
strikethrough={true}
|
|
22
|
+
truncate={true}
|
|
23
|
+
srOnly={true}
|
|
24
|
+
className="value"
|
|
25
|
+
>
|
|
26
|
+
{/* Your content here */}
|
|
27
|
+
</P>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Component Props
|
|
31
|
+
|
|
32
|
+
### color
|
|
33
|
+
- **Type**: `TypographyColor`
|
|
34
|
+
- **Required**: No
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
### align
|
|
38
|
+
- **Type**: `"left" | "center" | "right" | "justify"`
|
|
39
|
+
- **Required**: No
|
|
40
|
+
- **Description**: No description available
|
|
41
|
+
|
|
42
|
+
### transform
|
|
43
|
+
- **Type**: `"uppercase" | "lowercase" | "capitalize"`
|
|
44
|
+
- **Required**: No
|
|
45
|
+
- **Description**: No description available
|
|
46
|
+
|
|
47
|
+
### weight
|
|
48
|
+
- **Type**: `"normal" | "medium" | "semibold" | "bold"`
|
|
49
|
+
- **Required**: No
|
|
50
|
+
- **Description**: No description available
|
|
51
|
+
|
|
52
|
+
### htmlFor
|
|
53
|
+
- **Type**: `string`
|
|
54
|
+
- **Required**: No
|
|
55
|
+
- **Description**: No description available
|
|
56
|
+
|
|
57
|
+
### asChild
|
|
58
|
+
- **Type**: `boolean`
|
|
59
|
+
- **Required**: No
|
|
60
|
+
- **Description**: No description available
|
|
61
|
+
|
|
62
|
+
### italic
|
|
63
|
+
- **Type**: `boolean`
|
|
64
|
+
- **Required**: No
|
|
65
|
+
- **Description**: No description available
|
|
66
|
+
|
|
67
|
+
### underline
|
|
68
|
+
- **Type**: `boolean`
|
|
69
|
+
- **Required**: No
|
|
70
|
+
- **Description**: No description available
|
|
71
|
+
|
|
72
|
+
### strikethrough
|
|
73
|
+
- **Type**: `boolean`
|
|
74
|
+
- **Required**: No
|
|
75
|
+
- **Description**: No description available
|
|
76
|
+
|
|
77
|
+
### truncate
|
|
78
|
+
- **Type**: `boolean`
|
|
79
|
+
- **Required**: No
|
|
80
|
+
- **Description**: No description available
|
|
81
|
+
|
|
82
|
+
### srOnly
|
|
83
|
+
- **Type**: `boolean`
|
|
84
|
+
- **Required**: No
|
|
85
|
+
- **Description**: No description available
|
|
86
|
+
|
|
87
|
+
### className
|
|
88
|
+
- **Type**: `string`
|
|
89
|
+
- **Required**: No
|
|
90
|
+
- **Description**: No description available
|
|
91
|
+
|
|
92
|
+
### children
|
|
93
|
+
- **Type**: `React.ReactNode`
|
|
94
|
+
- **Required**: No
|
|
95
|
+
- **Description**: No description available
|
|
96
|
+
|
|
97
|
+
## Examples
|
|
98
|
+
|
|
99
|
+
```tsx
|
|
100
|
+
// Standard paragraph
|
|
101
|
+
<P>This is standard body text that provides information to the user.</P>
|
|
102
|
+
// With color variants
|
|
103
|
+
<P color="muted">Secondary information with reduced visual prominence.</P>
|
|
104
|
+
// With custom spacing
|
|
105
|
+
<P className="mb-6">Paragraph with custom bottom margin for layout control.</P>
|
|
106
|
+
// Truncated paragraph
|
|
107
|
+
<P truncate className="max-w-md">
|
|
108
|
+
Long paragraph content that will be truncated with ellipsis
|
|
109
|
+
</P>
|
|
110
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# PaginationContent
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Container for pagination navigation items A semantic unordered list that houses all pagination controls in a responsive horizontal layout. Provides proper spacing and alignment for pagination items while maintaining accessibility standards.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { PaginationContent } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<PaginationContent
|
|
13
|
+
className="value"
|
|
14
|
+
id="value"
|
|
15
|
+
tabIndex={0}
|
|
16
|
+
"aria-label"="value"
|
|
17
|
+
>
|
|
18
|
+
{/* Your content here */}
|
|
19
|
+
</PaginationContent>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### className
|
|
25
|
+
- **Type**: `string`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: No description available
|
|
28
|
+
|
|
29
|
+
### children
|
|
30
|
+
- **Type**: `React.ReactNode`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: No description available
|
|
33
|
+
|
|
34
|
+
### id
|
|
35
|
+
- **Type**: `string`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### tabIndex
|
|
40
|
+
- **Type**: `number`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### "aria-label"
|
|
45
|
+
- **Type**: `string`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
<PaginationContent>
|
|
53
|
+
<PaginationItem>
|
|
54
|
+
<PaginationPrevious href="/prev" />
|
|
55
|
+
</PaginationItem>
|
|
56
|
+
<PaginationItem>
|
|
57
|
+
<PaginationLink href="/page/1">1</PaginationLink>
|
|
58
|
+
</PaginationItem>
|
|
59
|
+
</PaginationContent>
|
|
60
|
+
```
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# PaginationEllipsis
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Visual indicator for omitted page numbers Displays a horizontal ellipsis (MoreHorizontalIcon from Lucide React) to indicate that page numbers have been omitted from the pagination display. Used to maintain clean UI when dealing with large page ranges without overwhelming users. The component is sized consistently with PaginationLink components (36px × 36px) to maintain visual harmony in the pagination layout. Includes accessible hidden text for screen readers while keeping the visual element hidden from assistive technology to avoid confusion.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { PaginationEllipsis } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<PaginationEllipsis
|
|
13
|
+
className="value"
|
|
14
|
+
"aria-hidden"={true}
|
|
15
|
+
id="value"
|
|
16
|
+
tabIndex={0}
|
|
17
|
+
title="value"
|
|
18
|
+
"aria-label"="value"
|
|
19
|
+
/>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### className
|
|
25
|
+
- **Type**: `string`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: No description available
|
|
28
|
+
|
|
29
|
+
### "aria-hidden"
|
|
30
|
+
- **Type**: `boolean`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: No description available
|
|
33
|
+
|
|
34
|
+
### id
|
|
35
|
+
- **Type**: `string`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### tabIndex
|
|
40
|
+
- **Type**: `number`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### title
|
|
45
|
+
- **Type**: `string`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
### "aria-label"
|
|
50
|
+
- **Type**: `string`
|
|
51
|
+
- **Required**: No
|
|
52
|
+
- **Description**: No description available
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
### Example 1
|
|
57
|
+
```tsx
|
|
58
|
+
// Between page ranges
|
|
59
|
+
<PaginationItem>
|
|
60
|
+
<PaginationLink href="/page/1">1</PaginationLink>
|
|
61
|
+
</PaginationItem>
|
|
62
|
+
<PaginationItem>
|
|
63
|
+
<PaginationEllipsis />
|
|
64
|
+
</PaginationItem>
|
|
65
|
+
<PaginationItem>
|
|
66
|
+
<PaginationLink href="/page/25" isActive>25</PaginationLink>
|
|
67
|
+
</PaginationItem>
|
|
68
|
+
```
|
|
69
|
+
### Example 2
|
|
70
|
+
```tsx
|
|
71
|
+
// Common pagination pattern with ellipsis
|
|
72
|
+
// Layout: 1 ... 23 24 [25] 26 27 ... 100
|
|
73
|
+
<PaginationContent>
|
|
74
|
+
<PaginationItem>
|
|
75
|
+
<PaginationLink href="/page/1">1</PaginationLink>
|
|
76
|
+
</PaginationItem>
|
|
77
|
+
<PaginationItem>
|
|
78
|
+
<PaginationEllipsis />
|
|
79
|
+
</PaginationItem>
|
|
80
|
+
<PaginationItem>
|
|
81
|
+
<PaginationLink href="/page/23">23</PaginationLink>
|
|
82
|
+
</PaginationItem>
|
|
83
|
+
<PaginationItem>
|
|
84
|
+
<PaginationLink href="/page/24">24</PaginationLink>
|
|
85
|
+
</PaginationItem>
|
|
86
|
+
<PaginationItem>
|
|
87
|
+
<PaginationLink href="/page/25" isActive>25</PaginationLink>
|
|
88
|
+
</PaginationItem>
|
|
89
|
+
<PaginationItem>
|
|
90
|
+
<PaginationLink href="/page/26">26</PaginationLink>
|
|
91
|
+
</PaginationItem>
|
|
92
|
+
<PaginationItem>
|
|
93
|
+
<PaginationLink href="/page/27">27</PaginationLink>
|
|
94
|
+
</PaginationItem>
|
|
95
|
+
<PaginationItem>
|
|
96
|
+
<PaginationEllipsis />
|
|
97
|
+
</PaginationItem>
|
|
98
|
+
<PaginationItem>
|
|
99
|
+
<PaginationLink href="/page/100">100</PaginationLink>
|
|
100
|
+
</PaginationItem>
|
|
101
|
+
</PaginationContent>
|
|
102
|
+
```
|
|
103
|
+
### Example 3
|
|
104
|
+
```tsx
|
|
105
|
+
// With custom styling for different themes
|
|
106
|
+
<PaginationEllipsis className="text-muted-foreground/60" />
|
|
107
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# PaginationItem
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Individual list item wrapper for pagination controls A semantic list item that wraps pagination links, buttons, or ellipsis elements. Provides consistent structure and enables proper keyboard navigation between pagination controls.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { PaginationItem } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<PaginationItem
|
|
13
|
+
className="value"
|
|
14
|
+
id="value"
|
|
15
|
+
tabIndex={0}
|
|
16
|
+
"aria-label"="value"
|
|
17
|
+
>
|
|
18
|
+
{/* Your content here */}
|
|
19
|
+
</PaginationItem>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### children
|
|
25
|
+
- **Type**: `React.ReactNode`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: No description available
|
|
28
|
+
|
|
29
|
+
### className
|
|
30
|
+
- **Type**: `string`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: No description available
|
|
33
|
+
|
|
34
|
+
### id
|
|
35
|
+
- **Type**: `string`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### tabIndex
|
|
40
|
+
- **Type**: `number`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### "aria-label"
|
|
45
|
+
- **Type**: `string`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
<PaginationItem>
|
|
53
|
+
<PaginationLink href="/page/1">1</PaginationLink>
|
|
54
|
+
</PaginationItem>
|
|
55
|
+
<PaginationItem>
|
|
56
|
+
<PaginationEllipsis />
|
|
57
|
+
</PaginationItem>
|
|
58
|
+
```
|
|
59
|
+
/
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# PaginationLink
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Clickable link for individual page numbers Interactive link component that navigates to specific pages within paginated content. Uses buttonVariants from the Button component to provide consistent styling - applies "outline" variant when active and "ghost" variant when inactive. Features automatic active state styling and comprehensive accessibility attributes. The component automatically inherits focus management, hover states, and proper spacing from the Button component's CVA configuration while maintaining semantic link behavior for proper navigation and SEO.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { PaginationLink } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<PaginationLink
|
|
13
|
+
isActive={true}
|
|
14
|
+
size={value}
|
|
15
|
+
href="value"
|
|
16
|
+
className="value"
|
|
17
|
+
onClick={handleClick}
|
|
18
|
+
"aria-label"="value"
|
|
19
|
+
"aria-current"={value}
|
|
20
|
+
"aria-describedby"="value"
|
|
21
|
+
"aria-disabled"={true}
|
|
22
|
+
tabIndex={0}
|
|
23
|
+
id="value"
|
|
24
|
+
title="value"
|
|
25
|
+
target={value}
|
|
26
|
+
rel="value"
|
|
27
|
+
>
|
|
28
|
+
{/* Your content here */}
|
|
29
|
+
</PaginationLink>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Component Props
|
|
33
|
+
|
|
34
|
+
### isActive
|
|
35
|
+
- **Type**: `boolean`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### size
|
|
40
|
+
- **Type**: `"default" | "sm" | "lg" | "icon"`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### href
|
|
45
|
+
- **Type**: `string`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
### children
|
|
50
|
+
- **Type**: `React.ReactNode`
|
|
51
|
+
- **Required**: No
|
|
52
|
+
- **Description**: No description available
|
|
53
|
+
|
|
54
|
+
### className
|
|
55
|
+
- **Type**: `string`
|
|
56
|
+
- **Required**: No
|
|
57
|
+
- **Description**: No description available
|
|
58
|
+
|
|
59
|
+
### onClick
|
|
60
|
+
- **Type**: `React.MouseEventHandler<HTMLAnchorElement>`
|
|
61
|
+
- **Required**: No
|
|
62
|
+
- **Description**: No description available
|
|
63
|
+
|
|
64
|
+
### "aria-label"
|
|
65
|
+
- **Type**: `string`
|
|
66
|
+
- **Required**: No
|
|
67
|
+
- **Description**: No description available
|
|
68
|
+
|
|
69
|
+
### "aria-current"
|
|
70
|
+
- **Type**: `"page" | "step" | "location" | "date" | "time" | boolean`
|
|
71
|
+
- **Required**: No
|
|
72
|
+
- **Description**: No description available
|
|
73
|
+
|
|
74
|
+
### "aria-describedby"
|
|
75
|
+
- **Type**: `string`
|
|
76
|
+
- **Required**: No
|
|
77
|
+
- **Description**: No description available
|
|
78
|
+
|
|
79
|
+
### "aria-disabled"
|
|
80
|
+
- **Type**: `boolean`
|
|
81
|
+
- **Required**: No
|
|
82
|
+
- **Description**: No description available
|
|
83
|
+
|
|
84
|
+
### tabIndex
|
|
85
|
+
- **Type**: `number`
|
|
86
|
+
- **Required**: No
|
|
87
|
+
- **Description**: No description available
|
|
88
|
+
|
|
89
|
+
### id
|
|
90
|
+
- **Type**: `string`
|
|
91
|
+
- **Required**: No
|
|
92
|
+
- **Description**: No description available
|
|
93
|
+
|
|
94
|
+
### title
|
|
95
|
+
- **Type**: `string`
|
|
96
|
+
- **Required**: No
|
|
97
|
+
- **Description**: No description available
|
|
98
|
+
|
|
99
|
+
### target
|
|
100
|
+
- **Type**: `"_self" | "_blank" | "_parent" | "_top"`
|
|
101
|
+
- **Required**: No
|
|
102
|
+
- **Description**: No description available
|
|
103
|
+
|
|
104
|
+
### rel
|
|
105
|
+
- **Type**: `string`
|
|
106
|
+
- **Required**: No
|
|
107
|
+
- **Description**: No description available
|
|
108
|
+
|
|
109
|
+
## Examples
|
|
110
|
+
|
|
111
|
+
### Example 1
|
|
112
|
+
```tsx
|
|
113
|
+
// Basic page links with different states
|
|
114
|
+
<PaginationLink href="/products?page=1">1</PaginationLink>
|
|
115
|
+
<PaginationLink href="/products?page=2" isActive>2</PaginationLink>
|
|
116
|
+
<PaginationLink href="/products?page=3">3</PaginationLink>
|
|
117
|
+
```
|
|
118
|
+
### Example 2
|
|
119
|
+
```tsx
|
|
120
|
+
// Different sizes using Button size variants
|
|
121
|
+
<PaginationLink href="/page/1" size="sm">1</PaginationLink>
|
|
122
|
+
<PaginationLink href="/page/2" size="default">2</PaginationLink>
|
|
123
|
+
<PaginationLink href="/page/3" size="lg">3</PaginationLink>
|
|
124
|
+
```
|
|
125
|
+
### Example 3
|
|
126
|
+
```tsx
|
|
127
|
+
// With onClick handlers for client-side pagination
|
|
128
|
+
<PaginationLink
|
|
129
|
+
href="#"
|
|
130
|
+
onClick={(e) => {
|
|
131
|
+
e.preventDefault();
|
|
132
|
+
onPageChange(1);
|
|
133
|
+
}}
|
|
134
|
+
aria-label="Go to page 1"
|
|
135
|
+
>
|
|
136
|
+
1
|
|
137
|
+
</PaginationLink>
|
|
138
|
+
```
|
|
139
|
+
### Example 4
|
|
140
|
+
```tsx
|
|
141
|
+
// Disabled state for out-of-bounds pages
|
|
142
|
+
<PaginationLink
|
|
143
|
+
href="#"
|
|
144
|
+
className="pointer-events-none opacity-50"
|
|
145
|
+
aria-disabled="true"
|
|
146
|
+
tabIndex={-1}
|
|
147
|
+
>
|
|
148
|
+
5
|
|
149
|
+
</PaginationLink>
|
|
150
|
+
```
|