# Navigation Menu Component API A navigation menu component with support for dropdowns and keyboard navigation. --- ## Installation ```toml # Cargo.toml [dependencies] shadcn-ui-leptos-navigation-menu = "0.7" ``` ```rust use shadcn_ui_leptos_navigation_menu::NavigationMenu; ``` --- ## Import ```rust use shadcn_ui_leptos_navigation_menu::{ NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink }; ``` --- ## Component API ### NavigationMenu Root navigation container. | Prop | Type | Default | Description | |------|------|---------|-------------| | `value` | `Signal` | **Required** | Current active item | | `on_change` | `Option>` | `None` | Change handler | ### NavigationMenuTrigger Clickable menu item trigger. | Prop | Type | Default | Description | |------|------|---------|-------------| | `class` | `MaybeProp` | `None` | Additional CSS classes | ### NavigationMenuContent Dropdown content container. | Prop | Type | Default | Description | |------|------|---------|-------------| | `class` | `MaybeProp` | `None` | Additional CSS classes | --- ## Usage Examples ### Basic Navigation Menu ```rust use leptos::prelude::*; use shadcn_ui_leptos_navigation_menu::*; #[component] pub fn MyComponent() -> impl IntoView { let (value, set_value) = signal("home".to_string()); view! { "Products"
"Product links..."
} } ``` --- ## CSS Classes ```css .navigation-menu { relative flex w-full items-center justify-center } .navigation-menu-list { flex flex-1 items-center justify-center space-x-1 } .navigation-menu-trigger { inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground } ``` --- ## Accessibility ### Keyboard Navigation | Key | Action | |-----|--------| | **Arrow Keys** | Navigate items | | **Enter/Space** | Select item | | **Escape** | Close menu | --- ## TypeScript API ```typescript interface NavigationMenuProps { value: string; onChange?: (value: string) => void; children?: React.ReactNode; } export const NavigationMenu: React.FC; export const NavigationMenuList: React.FC; export const NavigationMenuItem: React.FC; export const NavigationMenuTrigger: React.FC; export const NavigationMenuContent: React.FC; ``` --- *Source: [packages/leptos/navigation-menu/src/default.rs](https://github.com/yourusername/leptos-shadcn-ui/blob/main/packages/leptos/navigation-menu/src/default.rs)*