UNPKG

@neynar/ui

Version:

React UI component library built on shadcn/ui and Tailwind CSS

116 lines (102 loc) 3.56 kB
# NavigationMenuContent **Type**: component 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.). ## JSX Usage ```jsx import { NavigationMenuContent } from '@neynar/ui'; <NavigationMenuContent asChild={true} forceMount={true} onEscapeKeyDown={handleEscapeKeyDown} onPointerDownOutside={handlePointerDownOutside} onFocusOutside={handleFocusOutside} onInteractOutside={handleInteractOutside} /> ``` ## Component Props ### asChild - **Type**: `boolean` - **Required**: No - **Description**: No description available ### forceMount - **Type**: `boolean` - **Required**: No - **Description**: No description available ### onEscapeKeyDown - **Type**: `(event: KeyboardEvent) => void` - **Required**: No - **Description**: No description available ### onPointerDownOutside - **Type**: `(event: PointerEvent) => void` - **Required**: No - **Description**: No description available ### onFocusOutside - **Type**: `(event: FocusEvent) => void` - **Required**: No - **Description**: No description available ### onInteractOutside - **Type**: `(event: PointerEvent | FocusEvent) => void` - **Required**: No - **Description**: No description available ## Examples ### Example 1 ```tsx // Grid layout with navigation links <NavigationMenuContent> <div className="grid gap-3 p-6 w-[500px] grid-cols-2"> <NavigationMenuLink href="/products/analytics"> <div className="text-sm font-medium">Analytics</div> <p className="text-sm text-muted-foreground">Track your performance</p> </NavigationMenuLink> <NavigationMenuLink href="/products/dashboard"> <div className="text-sm font-medium">Dashboard</div> <p className="text-sm text-muted-foreground">Manage your data</p> </NavigationMenuLink> </div> </NavigationMenuContent> ``` ### Example 2 ```tsx // Complex multi-column layout <NavigationMenuContent> <div className="grid gap-6 p-8 w-[800px] grid-cols-3"> <div className="space-y-2"> <h4 className="text-sm font-medium">Features</h4> <NavigationMenuLink href="/features/auth">Authentication</NavigationMenuLink> <NavigationMenuLink href="/features/api">API Management</NavigationMenuLink> </div> <div className="space-y-2"> <h4 className="text-sm font-medium">Tools</h4> <NavigationMenuLink href="/tools/cli">Command Line</NavigationMenuLink> <NavigationMenuLink href="/tools/sdk">SDK</NavigationMenuLink> </div> </div> </NavigationMenuContent> ``` ### Example 3 ```tsx // With custom interaction handlers <NavigationMenuContent onEscapeKeyDown={(e) => { console.log('Escape pressed'); // Don't prevent default to allow normal closing behavior }} onPointerDownOutside={(e) => { console.log('Clicked outside'); // e.preventDefault() would prevent closing }} > <div className="p-6 w-[300px]"> <NavigationMenuLink href="/help">Help Center</NavigationMenuLink> </div> </NavigationMenuContent> ``` ### Example 4 ```tsx // Force mounted for animation control <NavigationMenuContent forceMount> <div className="p-4 w-[250px] animate-in slide-in-from-top"> <NavigationMenuLink href="/docs">Documentation</NavigationMenuLink> </div> </NavigationMenuContent> ```