navigation-menu
9ui/navigation-menuFreeComponent
9ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by 9ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://9ui.dev/r/navigation-menu.jsonSource
1import * as React from "react"2import { NavigationMenu as BaseNavigationMenu } from "@base-ui/react/navigation-menu"3import { cva } from "class-variance-authority"4import { ChevronDownIcon } from "lucide-react"56import { cn } from "@/lib/utils"78function NavigationMenu({9 className,10 children,11 ...props12}: React.ComponentProps<typeof BaseNavigationMenu.Root>) {13 return (14 <BaseNavigationMenu.Root15 data-slot="navigation-menu"16 className={cn("min-w-max", className)}17 {...props}18 >19 {children}20 <NavigationMenuViewport />21 </BaseNavigationMenu.Root>22 )23}2425function NavigationMenuList({26 className,27 ...props28}: React.ComponentProps<typeof BaseNavigationMenu.List>) {29 return (30 <BaseNavigationMenu.List31 data-slot="navigation-menu-list"32 className={cn(33 "relative flex items-center justify-center gap-1",34 className35 )}36 {...props}37 />38 )39}4041function NavigationMenuItem({42 ...props43}: React.ComponentProps<typeof BaseNavigationMenu.Item>) {44 return <BaseNavigationMenu.Item data-slot="navigation-menu-item" {...props} />45}4647function NavigationMenuIcon({48 ...props49}: React.ComponentProps<typeof BaseNavigationMenu.Icon>) {50 return <BaseNavigationMenu.Icon data-slot="navigation-menu-icon" {...props} />51}5253const navigationMenuTriggerStyle = cva(54 "inline-flex w-max items-center justify-center gap-1.5 h-9 rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 data-popup-open:hover:bg-accent data-popup-open:text-accent-foreground data-popup-open:focus:bg-accent data-popup-open:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-3 focus-visible:outline-1 select-none no-underline [&_svg:not([class*='size-'])]:size-3 shrink-0 [&_svg]:shrink-0"55)5657function NavigationMenuTrigger({58 className,59 children,60 ...props61}: React.ComponentProps<typeof BaseNavigationMenu.Trigger>) {62 return (63 <BaseNavigationMenu.Trigger64 data-slot="navigation-menu-trigger"65 className={cn(navigationMenuTriggerStyle(), className)}66 data-disabled={props.disabled}67 {...props}68 >69 {children}70 <NavigationMenuIcon className="transition-transform duration-200 data-popup-open:rotate-180">71 <ChevronDownIcon aria-hidden="true" />72 </NavigationMenuIcon>73 </BaseNavigationMenu.Trigger>74 )75}7677function NavigationMenuContent({78 className,79 ...props80// … truncated
Files it writes
More from 9ui
All 56 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | 9ui | Components | Free | no deps | |
| alertalert | 9ui | Components | Free | no deps | |
| alert-dialogalert-dialog | 9ui | Components | Free | no deps | |
| aspect-ratioaspect-ratio | 9ui | Components | Free | no deps | |
| autocompleteautocomplete | 9ui | Components | Free | no deps | |
| avataravatar | 9ui | Components | Free | no deps | |
| badgebadge | 9ui | Components | Free | no deps | |
| breadcrumbsbreadcrumbs | 9ui | Components | Free | no deps |
