Skip to content

NavigationMenu

Menú de navegación complejo con submenús animados y contenido enriquecido.


Import

jsx
import {
  NavigationMenu,
  NavigationMenuList,
  NavigationMenuItem,
  NavigationMenuTrigger,
  NavigationMenuContent,
  NavigationMenuLink,
  NavigationMenuViewport,
  navigationMenuTriggerStyle,
} from '@imansi/ui';

Uso básico

jsx
<NavigationMenu>
  <NavigationMenuList>
    <NavigationMenuItem>
      <NavigationMenuTrigger>Productos</NavigationMenuTrigger>
      <NavigationMenuContent>
        <ul className="grid w-[400px] gap-3 p-4">
          <li>
            <NavigationMenuLink href="/productos/auth">
              <div className="font-medium">Autenticación</div>
              <p className="text-sm text-muted-foreground">
                Login, registro y 2FA
              </p>
            </NavigationMenuLink>
          </li>
          <li>
            <NavigationMenuLink href="/productos/dashboard">
              <div className="font-medium">Dashboard</div>
              <p className="text-sm text-muted-foreground">
                4 variantes listas
              </p>
            </NavigationMenuLink>
          </li>
        </ul>
      </NavigationMenuContent>
    </NavigationMenuItem>

    <NavigationMenuItem>
      <NavigationMenuLink
        href="/docs"
        className={navigationMenuTriggerStyle()}
      >
        Docs
      </NavigationMenuLink>
    </NavigationMenuItem>
  </NavigationMenuList>
</NavigationMenu>

Con grid de contenido

jsx
<NavigationMenuContent>
  <div className="grid gap-3 p-6 md:grid-cols-2 lg:grid-cols-3">
    {items.map((item) => (
      <NavigationMenuLink key={item.href} href={item.href}>
        <div className="text-sm font-medium">{item.title}</div>
        <p className="text-sm text-muted-foreground">{item.description}</p>
      </NavigationMenuLink>
    ))}
  </div>
</NavigationMenuContent>

Accesibilidad

  • Navegación completa con teclado
  • Escape cierra los submenús
  • Flechas navegan entre triggers
  • Apertura al hover o al focus

Hecho con ❤️ en Argentina