"use client"; import * as React from "react"; import { ChevronDown } from "lucide-react"; import { cn } from "../../lib/utils"; // Context to manage the navigation menu state interface NavigationMenuContextType {   open: Record;   activeItem: string | null;   toggleMenu: (id: string) => void;   setActiveItem: (id: string | null) => void; } const NavigationMenuContext = React.createContext<   NavigationMenuContextType | undefined >(undefined); // Root component interface NavigationMenuProps extends React.HTMLAttributes {} const NavigationMenu = React.forwardRef(   ({ className, children, ...props }, ref) => {     const [open, setOpen] = React.useState>({});     const [activeItem, setActiveItem] = React.useState(null);     const toggleMenu = React.useCallback((id: string) => {       setOpen((prev) => ({         ...prev,         [id]: !prev[id],       }));     }, []);     return (              
          {children}                  
     
    );   } ); NavigationMenu.displayName = "NavigationMenu"; // List component interface NavigationMenuListProps   extends React.HTMLAttributes {} const NavigationMenuList = React.forwardRef<   HTMLUListElement,   NavigationMenuListProps >(({ className, ...props }, ref) => (  
    )); NavigationMenuList.displayName = "NavigationMenuList"; // MenuItem component interface NavigationMenuItemProps extends React.HTMLAttributes {   value?: string; } const NavigationMenuItem = React.forwardRef<   HTMLLIElement,   NavigationMenuItemProps >(({ className, value, ...props }, ref) => {   return (    
  •   ); }); NavigationMenuItem.displayName = "NavigationMenuItem"; // Trigger style const navigationMenuTriggerStyle = () => {   return "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"; }; // Trigger component interface NavigationMenuTriggerProps   extends React.ButtonHTMLAttributes {   id?: string; } const NavigationMenuTrigger = React.forwardRef<   HTMLButtonElement,   NavigationMenuTriggerProps >(({ className, children, id, ...props }, ref) => { // --- FIX START --- // 1. Call useId unconditionally to get a fallback ID. const generatedId = React.useId(); // 2. Use the provided id prop, or fall back to the generated one. const menuId = id || generatedId; // --- FIX END ---   const ctx = React.useContext(NavigationMenuContext);   if (!ctx) {     throw new Error("NavigationMenuTrigger must be used within NavigationMenu");   }   const { open, toggleMenu } = ctx;   const isOpen = open[menuId] || false;   return (       ); }); NavigationMenuTrigger.displayName = "NavigationMenuTrigger"; // Content component interface NavigationMenuContentProps   extends React.HTMLAttributes {   id?: string;   forceMount?: boolean; } const NavigationMenuContent = React.forwardRef<   HTMLDivElement,   NavigationMenuContentProps >(({ className, children, id, forceMount = false, ...props }, ref) => { // --- FIX START --- // 1. Call useId unconditionally to get a fallback ID. const generatedId = React.useId(); // 2. Use the provided id prop, or fall back to the generated one. const menuId = id || generatedId; // --- FIX END ---   const ctx = React.useContext(NavigationMenuContext);   if (!ctx) {     throw new Error("NavigationMenuContent must be used within NavigationMenu");   }   const { open } = ctx;   const isOpen = open[menuId] || false;   if (!isOpen && !forceMount) return null;   return (    
          {children}    
      ); }); NavigationMenuContent.displayName = "NavigationMenuContent"; // Link component interface NavigationMenuLinkProps   extends React.AnchorHTMLAttributes {} const NavigationMenuLink = React.forwardRef<   HTMLAnchorElement,   NavigationMenuLinkProps >(({ className, children, ...props }, ref) => {   return (           {children}       ); }); NavigationMenuLink.displayName = "NavigationMenuLink"; // Viewport component interface NavigationMenuViewportProps   extends React.HTMLAttributes {} const NavigationMenuViewport = React.forwardRef<   HTMLDivElement,   NavigationMenuViewportProps >(({ className, ...props }, ref) => {   const viewportRef = React.useRef(null);   const ctx = React.useContext(NavigationMenuContext);   if (!ctx) {     return null;   }   const hasOpenMenu = Object.values(ctx.open).some(Boolean);   return (    
         
       
      ); }); NavigationMenuViewport.displayName = "NavigationMenuViewport"; // Indicator component interface NavigationMenuIndicatorProps   extends React.HTMLAttributes {} const NavigationMenuIndicator = React.forwardRef<   HTMLDivElement,   NavigationMenuIndicatorProps >(({ className, ...props }, ref) => {   const ctx = React.useContext(NavigationMenuContext);   if (!ctx) {     return null;   }   const hasActiveItem = !!ctx.activeItem;   if (!hasActiveItem) return null;   return (    
         
       
      ); }); NavigationMenuIndicator.displayName = "NavigationMenuIndicator"; export {   navigationMenuTriggerStyle,   NavigationMenu,   NavigationMenuList,   NavigationMenuItem,   NavigationMenuContent,   NavigationMenuTrigger,   NavigationMenuLink,   NavigationMenuIndicator,   NavigationMenuViewport, };