@neynar/ui 0.3.0 → 0.4.0
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/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 +55 -0
- package/.llm/body-text-large.llm.md +49 -0
- package/.llm/body-text-small.llm.md +49 -0
- package/.llm/body-text.llm.md +52 -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/caption.llm.md +48 -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 +45 -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/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/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/overline.llm.md +51 -0
- package/.llm/page-title.llm.md +52 -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 +2984 -0
- package/.llm/section-title.llm.md +48 -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/spinner.llm.md +182 -0
- package/.llm/stack.llm.md +28 -0
- package/.llm/subsection-title.llm.md +46 -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/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/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/stories/typography.stories.d.ts +8 -108
- package/dist/components/ui/stories/typography.stories.d.ts.map +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/components/ui/typography.d.ts +211 -474
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.js +5160 -9875
- 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/stories/typography.stories.tsx +261 -1512
- package/src/components/ui/theme-toggle.tsx +1 -3
- package/src/components/ui/theme.tsx +6 -1
- package/src/components/ui/typography.tsx +416 -1136
- package/src/styles/globals.css +57 -106
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# NavigationMenuContent
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenuContent - Dropdown content panel for navigation items The collapsible content container that appears when a NavigationMenuTrigger is activated. Supports smooth enter/exit animations, flexible positioning (with or without viewport), and comprehensive interaction handling. The content automatically manages focus and provides multiple ways to dismiss the dropdown (Escape key, outside clicks, etc.).
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenuContent } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenuContent
|
|
13
|
+
asChild={true}
|
|
14
|
+
forceMount={true}
|
|
15
|
+
onEscapeKeyDown={handleEscapeKeyDown}
|
|
16
|
+
onPointerDownOutside={handlePointerDownOutside}
|
|
17
|
+
onFocusOutside={handleFocusOutside}
|
|
18
|
+
onInteractOutside={handleInteractOutside}
|
|
19
|
+
/>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### asChild
|
|
25
|
+
- **Type**: `boolean`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: No description available
|
|
28
|
+
|
|
29
|
+
### forceMount
|
|
30
|
+
- **Type**: `boolean`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: No description available
|
|
33
|
+
|
|
34
|
+
### onEscapeKeyDown
|
|
35
|
+
- **Type**: `(event: KeyboardEvent) => void`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### onPointerDownOutside
|
|
40
|
+
- **Type**: `(event: PointerEvent) => void`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### onFocusOutside
|
|
45
|
+
- **Type**: `(event: FocusEvent) => void`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
### onInteractOutside
|
|
50
|
+
- **Type**: `(event: PointerEvent | FocusEvent) => void`
|
|
51
|
+
- **Required**: No
|
|
52
|
+
- **Description**: No description available
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
### Example 1
|
|
57
|
+
```tsx
|
|
58
|
+
// Grid layout with navigation links
|
|
59
|
+
<NavigationMenuContent>
|
|
60
|
+
<div className="grid gap-3 p-6 w-[500px] grid-cols-2">
|
|
61
|
+
<NavigationMenuLink href="/products/analytics">
|
|
62
|
+
<div className="text-sm font-medium">Analytics</div>
|
|
63
|
+
<p className="text-sm text-muted-foreground">Track your performance</p>
|
|
64
|
+
</NavigationMenuLink>
|
|
65
|
+
<NavigationMenuLink href="/products/dashboard">
|
|
66
|
+
<div className="text-sm font-medium">Dashboard</div>
|
|
67
|
+
<p className="text-sm text-muted-foreground">Manage your data</p>
|
|
68
|
+
</NavigationMenuLink>
|
|
69
|
+
</div>
|
|
70
|
+
</NavigationMenuContent>
|
|
71
|
+
```
|
|
72
|
+
### Example 2
|
|
73
|
+
```tsx
|
|
74
|
+
// Complex multi-column layout
|
|
75
|
+
<NavigationMenuContent>
|
|
76
|
+
<div className="grid gap-6 p-8 w-[800px] grid-cols-3">
|
|
77
|
+
<div className="space-y-2">
|
|
78
|
+
<h4 className="text-sm font-medium">Features</h4>
|
|
79
|
+
<NavigationMenuLink href="/features/auth">Authentication</NavigationMenuLink>
|
|
80
|
+
<NavigationMenuLink href="/features/api">API Management</NavigationMenuLink>
|
|
81
|
+
</div>
|
|
82
|
+
<div className="space-y-2">
|
|
83
|
+
<h4 className="text-sm font-medium">Tools</h4>
|
|
84
|
+
<NavigationMenuLink href="/tools/cli">Command Line</NavigationMenuLink>
|
|
85
|
+
<NavigationMenuLink href="/tools/sdk">SDK</NavigationMenuLink>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</NavigationMenuContent>
|
|
89
|
+
```
|
|
90
|
+
### Example 3
|
|
91
|
+
```tsx
|
|
92
|
+
// With custom interaction handlers
|
|
93
|
+
<NavigationMenuContent
|
|
94
|
+
onEscapeKeyDown={(e) => {
|
|
95
|
+
console.log('Escape pressed');
|
|
96
|
+
// Don't prevent default to allow normal closing behavior
|
|
97
|
+
}}
|
|
98
|
+
onPointerDownOutside={(e) => {
|
|
99
|
+
console.log('Clicked outside');
|
|
100
|
+
// e.preventDefault() would prevent closing
|
|
101
|
+
}}
|
|
102
|
+
>
|
|
103
|
+
<div className="p-6 w-[300px]">
|
|
104
|
+
<NavigationMenuLink href="/help">Help Center</NavigationMenuLink>
|
|
105
|
+
</div>
|
|
106
|
+
</NavigationMenuContent>
|
|
107
|
+
```
|
|
108
|
+
### Example 4
|
|
109
|
+
```tsx
|
|
110
|
+
// Force mounted for animation control
|
|
111
|
+
<NavigationMenuContent forceMount>
|
|
112
|
+
<div className="p-4 w-[250px] animate-in slide-in-from-top">
|
|
113
|
+
<NavigationMenuLink href="/docs">Documentation</NavigationMenuLink>
|
|
114
|
+
</div>
|
|
115
|
+
</NavigationMenuContent>
|
|
116
|
+
```
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# NavigationMenuIndicator
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenuIndicator - Animated visual indicator for active menu items An optional visual indicator that displays an animated arrow pointing to the currently active or focused navigation menu item. Automatically transitions between positions as users navigate through menu items, providing clear visual feedback about the current selection. The indicator appears below the active item and includes smooth fade and position animations.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenuIndicator } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenuIndicator
|
|
13
|
+
asChild={true}
|
|
14
|
+
forceMount={true}
|
|
15
|
+
/>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Component Props
|
|
19
|
+
|
|
20
|
+
### asChild
|
|
21
|
+
- **Type**: `boolean`
|
|
22
|
+
- **Required**: No
|
|
23
|
+
- **Description**: No description available
|
|
24
|
+
|
|
25
|
+
### forceMount
|
|
26
|
+
- **Type**: `boolean`
|
|
27
|
+
- **Required**: No
|
|
28
|
+
- **Description**: No description available
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
### Example 1
|
|
33
|
+
```tsx
|
|
34
|
+
// Basic usage within NavigationMenuList
|
|
35
|
+
<NavigationMenuList>
|
|
36
|
+
<NavigationMenuItem value="home">
|
|
37
|
+
<NavigationMenuTrigger>Home</NavigationMenuTrigger>
|
|
38
|
+
<NavigationMenuContent>
|
|
39
|
+
<NavigationMenuLink href="/">Homepage</NavigationMenuLink>
|
|
40
|
+
</NavigationMenuContent>
|
|
41
|
+
</NavigationMenuItem>
|
|
42
|
+
<NavigationMenuItem value="about">
|
|
43
|
+
<NavigationMenuTrigger>About</NavigationMenuTrigger>
|
|
44
|
+
<NavigationMenuContent>
|
|
45
|
+
<NavigationMenuLink href="/about">About Us</NavigationMenuLink>
|
|
46
|
+
</NavigationMenuContent>
|
|
47
|
+
</NavigationMenuItem>
|
|
48
|
+
<NavigationMenuIndicator className="data-[state=visible]:bg-primary" />
|
|
49
|
+
</NavigationMenuList>
|
|
50
|
+
```
|
|
51
|
+
### Example 2
|
|
52
|
+
```tsx
|
|
53
|
+
// Custom styled indicator
|
|
54
|
+
<NavigationMenuIndicator className="
|
|
55
|
+
data-[state=visible]:animate-pulse
|
|
56
|
+
data-[state=visible]:bg-gradient-to-r
|
|
57
|
+
data-[state=visible]:from-blue-500
|
|
58
|
+
data-[state=visible]:to-purple-500
|
|
59
|
+
" />
|
|
60
|
+
```
|
|
61
|
+
### Example 3
|
|
62
|
+
```tsx
|
|
63
|
+
// Force mounted indicator for custom animations
|
|
64
|
+
<NavigationMenuIndicator
|
|
65
|
+
forceMount
|
|
66
|
+
className="custom-indicator-animation"
|
|
67
|
+
/>
|
|
68
|
+
```
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# NavigationMenuItem
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenuItem - Individual navigation menu item container A list item container that wraps a single navigation element within a NavigationMenuList. Each item can contain either a NavigationMenuTrigger with NavigationMenuContent for dropdown functionality, or a NavigationMenuLink for direct navigation. The value prop is used for controlled state management and active item tracking.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenuItem } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenuItem
|
|
13
|
+
value="value"
|
|
14
|
+
asChild={true}
|
|
15
|
+
/>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Component Props
|
|
19
|
+
|
|
20
|
+
### value
|
|
21
|
+
- **Type**: `string`
|
|
22
|
+
- **Required**: No
|
|
23
|
+
- **Description**: No description available
|
|
24
|
+
|
|
25
|
+
### asChild
|
|
26
|
+
- **Type**: `boolean`
|
|
27
|
+
- **Required**: No
|
|
28
|
+
- **Description**: No description available
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
### Example 1
|
|
33
|
+
```tsx
|
|
34
|
+
// Dropdown navigation item with controlled value
|
|
35
|
+
<NavigationMenuItem value="products">
|
|
36
|
+
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
|
|
37
|
+
<NavigationMenuContent>
|
|
38
|
+
<div className="grid gap-3 p-6 w-[400px] grid-cols-2">
|
|
39
|
+
<NavigationMenuLink href="/products/analytics">Analytics</NavigationMenuLink>
|
|
40
|
+
<NavigationMenuLink href="/products/dashboard">Dashboard</NavigationMenuLink>
|
|
41
|
+
</div>
|
|
42
|
+
</NavigationMenuContent>
|
|
43
|
+
</NavigationMenuItem>
|
|
44
|
+
```
|
|
45
|
+
### Example 2
|
|
46
|
+
```tsx
|
|
47
|
+
// Simple navigation link item
|
|
48
|
+
<NavigationMenuItem>
|
|
49
|
+
<NavigationMenuLink href="/contact" className={navigationMenuTriggerStyle()}>
|
|
50
|
+
Contact Us
|
|
51
|
+
</NavigationMenuLink>
|
|
52
|
+
</NavigationMenuItem>
|
|
53
|
+
```
|
|
54
|
+
### Example 3
|
|
55
|
+
```tsx
|
|
56
|
+
// With custom container element using asChild
|
|
57
|
+
<NavigationMenuItem asChild>
|
|
58
|
+
<div className="custom-menu-item">
|
|
59
|
+
<NavigationMenuLink href="/about">About</NavigationMenuLink>
|
|
60
|
+
</div>
|
|
61
|
+
</NavigationMenuItem>
|
|
62
|
+
```
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# NavigationMenuLink
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenuLink - Styled link component for navigation menus A versatile link component designed specifically for navigation menus with comprehensive styling and state management. Supports active states, hover/focus effects, and seamless framework integration through the asChild pattern. Can be used both within dropdown content and as direct navigation items. Features proper keyboard navigation and accessibility support.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenuLink } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenuLink
|
|
13
|
+
asChild={true}
|
|
14
|
+
active={true}
|
|
15
|
+
onSelect={handleSelect}
|
|
16
|
+
/>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### asChild
|
|
22
|
+
- **Type**: `boolean`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: No description available
|
|
25
|
+
|
|
26
|
+
### active
|
|
27
|
+
- **Type**: `boolean`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: No description available
|
|
30
|
+
|
|
31
|
+
### onSelect
|
|
32
|
+
- **Type**: `(event: Event) => void`
|
|
33
|
+
- **Required**: No
|
|
34
|
+
- **Description**: No description available
|
|
35
|
+
|
|
36
|
+
## Examples
|
|
37
|
+
|
|
38
|
+
### Example 1
|
|
39
|
+
```tsx
|
|
40
|
+
// Basic navigation link
|
|
41
|
+
<NavigationMenuLink href="/about">About Us</NavigationMenuLink>
|
|
42
|
+
```
|
|
43
|
+
### Example 2
|
|
44
|
+
```tsx
|
|
45
|
+
// Active link with current page styling
|
|
46
|
+
<NavigationMenuLink href="/dashboard" active>
|
|
47
|
+
Dashboard
|
|
48
|
+
</NavigationMenuLink>
|
|
49
|
+
```
|
|
50
|
+
### Example 3
|
|
51
|
+
```tsx
|
|
52
|
+
// Rich content link in dropdown with description
|
|
53
|
+
<NavigationMenuLink href="/features/analytics">
|
|
54
|
+
<div className="text-sm font-medium leading-none">Analytics</div>
|
|
55
|
+
<p className="text-sm text-muted-foreground mt-1">
|
|
56
|
+
View detailed insights and performance metrics
|
|
57
|
+
</p>
|
|
58
|
+
</NavigationMenuLink>
|
|
59
|
+
```
|
|
60
|
+
### Example 4
|
|
61
|
+
```tsx
|
|
62
|
+
// With Next.js Link using asChild pattern
|
|
63
|
+
<NavigationMenuLink asChild>
|
|
64
|
+
<Link href="/products" prefetch={false}>
|
|
65
|
+
Products
|
|
66
|
+
</Link>
|
|
67
|
+
</NavigationMenuLink>
|
|
68
|
+
```
|
|
69
|
+
### Example 5
|
|
70
|
+
```tsx
|
|
71
|
+
// With Remix Link using asChild pattern
|
|
72
|
+
<NavigationMenuLink asChild>
|
|
73
|
+
<RemixLink to="/docs" prefetch="intent">
|
|
74
|
+
Documentation
|
|
75
|
+
</RemixLink>
|
|
76
|
+
</NavigationMenuLink>
|
|
77
|
+
```
|
|
78
|
+
### Example 6
|
|
79
|
+
```tsx
|
|
80
|
+
// Direct navigation with trigger button styling
|
|
81
|
+
<NavigationMenuLink
|
|
82
|
+
href="/contact"
|
|
83
|
+
className={navigationMenuTriggerStyle()}
|
|
84
|
+
>
|
|
85
|
+
Contact Us
|
|
86
|
+
</NavigationMenuLink>
|
|
87
|
+
```
|
|
88
|
+
### Example 7
|
|
89
|
+
```tsx
|
|
90
|
+
// With custom selection handler
|
|
91
|
+
<NavigationMenuLink
|
|
92
|
+
href="/logout"
|
|
93
|
+
onSelect={(event) => {
|
|
94
|
+
event.preventDefault();
|
|
95
|
+
handleLogout();
|
|
96
|
+
}}
|
|
97
|
+
>
|
|
98
|
+
Sign Out
|
|
99
|
+
</NavigationMenuLink>
|
|
100
|
+
```
|
|
101
|
+
### Example 8
|
|
102
|
+
```tsx
|
|
103
|
+
// External link with icon
|
|
104
|
+
<NavigationMenuLink href="https://github.com" target="_blank" rel="noopener">
|
|
105
|
+
<GitHubIcon className="size-4" />
|
|
106
|
+
GitHub
|
|
107
|
+
<ExternalLinkIcon className="size-3 ml-auto" />
|
|
108
|
+
</NavigationMenuLink>
|
|
109
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# NavigationMenuList
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenuList - Container for navigation menu items The list container that groups NavigationMenuItem components within a NavigationMenu. Renders as an unordered list (ul) by default and provides the foundational layout structure for the navigation menu. Supports both horizontal and vertical orientations based on the parent NavigationMenu orientation prop.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenuList } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenuList
|
|
13
|
+
asChild={true}
|
|
14
|
+
/>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Component Props
|
|
18
|
+
|
|
19
|
+
### asChild
|
|
20
|
+
- **Type**: `boolean`
|
|
21
|
+
- **Required**: No
|
|
22
|
+
- **Description**: No description available
|
|
23
|
+
|
|
24
|
+
## Examples
|
|
25
|
+
|
|
26
|
+
### Example 1
|
|
27
|
+
```tsx
|
|
28
|
+
<NavigationMenuList>
|
|
29
|
+
<NavigationMenuItem value="products">
|
|
30
|
+
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
|
|
31
|
+
<NavigationMenuContent>
|
|
32
|
+
<NavigationMenuLink href="/products">All Products</NavigationMenuLink>
|
|
33
|
+
</NavigationMenuContent>
|
|
34
|
+
</NavigationMenuItem>
|
|
35
|
+
<NavigationMenuItem>
|
|
36
|
+
<NavigationMenuLink href="/about" className={navigationMenuTriggerStyle()}>
|
|
37
|
+
About
|
|
38
|
+
</NavigationMenuLink>
|
|
39
|
+
</NavigationMenuItem>
|
|
40
|
+
</NavigationMenuList>
|
|
41
|
+
```
|
|
42
|
+
### Example 2
|
|
43
|
+
```tsx
|
|
44
|
+
// Custom list element using asChild
|
|
45
|
+
<NavigationMenuList asChild>
|
|
46
|
+
<div className="custom-nav-container">
|
|
47
|
+
<NavigationMenuItem>
|
|
48
|
+
<NavigationMenuLink href="/home">Home</NavigationMenuLink>
|
|
49
|
+
</NavigationMenuItem>
|
|
50
|
+
</div>
|
|
51
|
+
</NavigationMenuList>
|
|
52
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# navigationMenuTriggerStyle
|
|
2
|
+
|
|
3
|
+
**Type**: function
|
|
4
|
+
|
|
5
|
+
Navigation menu trigger styling configuration using CVA (Class Variance Authority) Provides consistent button styling for navigation triggers with interactive states. Can be applied to NavigationMenuLink components for uniform trigger-style appearance.
|
|
6
|
+
|
|
7
|
+
## API Surface
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { navigationMenuTriggerStyle } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
export const navigationMenuTriggerStyle
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
// Apply to NavigationMenuLink for consistent button styling
|
|
19
|
+
<NavigationMenuLink href="/docs" className={navigationMenuTriggerStyle()}>
|
|
20
|
+
Documentation
|
|
21
|
+
</NavigationMenuLink>
|
|
22
|
+
```
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# NavigationMenuTrigger
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenuTrigger - Interactive button that opens dropdown navigation content A button component that toggles NavigationMenuContent visibility when activated. Automatically includes a chevron down icon that rotates when the dropdown is open. Features comprehensive keyboard and mouse interaction support with proper ARIA state management. The asChild prop allows composition with custom button components.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenuTrigger } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenuTrigger
|
|
13
|
+
asChild={true}
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</NavigationMenuTrigger>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### asChild
|
|
22
|
+
- **Type**: `boolean`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: No description available
|
|
25
|
+
|
|
26
|
+
## Examples
|
|
27
|
+
|
|
28
|
+
### Example 1
|
|
29
|
+
```tsx
|
|
30
|
+
// Basic trigger with dropdown content
|
|
31
|
+
<NavigationMenuItem value="products">
|
|
32
|
+
<NavigationMenuTrigger>Products</NavigationMenuTrigger>
|
|
33
|
+
<NavigationMenuContent>
|
|
34
|
+
<div className="p-6 w-[400px]">
|
|
35
|
+
<NavigationMenuLink href="/products/analytics">Analytics</NavigationMenuLink>
|
|
36
|
+
<NavigationMenuLink href="/products/dashboard">Dashboard</NavigationMenuLink>
|
|
37
|
+
</div>
|
|
38
|
+
</NavigationMenuContent>
|
|
39
|
+
</NavigationMenuItem>
|
|
40
|
+
```
|
|
41
|
+
### Example 2
|
|
42
|
+
```tsx
|
|
43
|
+
// Custom trigger styling with asChild
|
|
44
|
+
<NavigationMenuTrigger asChild>
|
|
45
|
+
<Button variant="outline" size="lg">
|
|
46
|
+
Custom Features Button
|
|
47
|
+
</Button>
|
|
48
|
+
</NavigationMenuTrigger>
|
|
49
|
+
```
|
|
50
|
+
### Example 3
|
|
51
|
+
```tsx
|
|
52
|
+
// Trigger with additional icons
|
|
53
|
+
<NavigationMenuTrigger className="gap-2">
|
|
54
|
+
<StarIcon className="size-4" />
|
|
55
|
+
Featured Items
|
|
56
|
+
</NavigationMenuTrigger>
|
|
57
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# NavigationMenuViewport
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
NavigationMenuViewport - Positioned container for dropdown content The viewport container that manages positioning, sizing, and animation of NavigationMenuContent panels. It automatically calculates dimensions based on content size and provides smooth enter/exit animations. The viewport uses CSS custom properties for dynamic sizing and positioning. Only rendered when the viewport prop is true (default) on NavigationMenu.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { NavigationMenuViewport } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<NavigationMenuViewport
|
|
13
|
+
asChild={true}
|
|
14
|
+
forceMount={true}
|
|
15
|
+
/>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Component Props
|
|
19
|
+
|
|
20
|
+
### asChild
|
|
21
|
+
- **Type**: `boolean`
|
|
22
|
+
- **Required**: No
|
|
23
|
+
- **Description**: No description available
|
|
24
|
+
|
|
25
|
+
### forceMount
|
|
26
|
+
- **Type**: `boolean`
|
|
27
|
+
- **Required**: No
|
|
28
|
+
- **Description**: No description available
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
### Example 1
|
|
33
|
+
```tsx
|
|
34
|
+
// Typically used automatically by NavigationMenu
|
|
35
|
+
<NavigationMenu>
|
|
36
|
+
<NavigationMenuList>
|
|
37
|
+
// menu items
|
|
38
|
+
</NavigationMenuList>
|
|
39
|
+
// NavigationMenuViewport is rendered automatically
|
|
40
|
+
</NavigationMenu>
|
|
41
|
+
```
|
|
42
|
+
### Example 2
|
|
43
|
+
```tsx
|
|
44
|
+
// Custom viewport styling
|
|
45
|
+
<NavigationMenuViewport className="border-2 border-primary shadow-xl" />
|
|
46
|
+
```
|
|
47
|
+
### Example 3
|
|
48
|
+
```tsx
|
|
49
|
+
// Force mounted viewport for animation control
|
|
50
|
+
<NavigationMenuViewport forceMount className="custom-animation" />
|
|
51
|
+
```
|