Recipe
Hover Navigation
Use hover triggers when a marketing or product navigation should open as users scan top-level links.
Host markup
<div id="docs-sidebar"></div>
<script type="module">
import { createSidebarMenu, mountSidebar } from "nav-schema";
const docsMenu = createSidebarMenu({
title: "Documentation",
sections: [
{
id: "guides",
label: "Guides",
items: [
{ id: "intro", label: "Introduction", url: "/docs", icon: "I" },
{
id: "components",
label: "Components",
url: "#",
children: [
{ id: "sidebar", label: "Sidebar", url: "/docs/sidebar" },
{ id: "mega", label: "Mega Menu", url: "/docs/mega-menu" }
]
}
]
}
]
});
mountSidebar(document.querySelector("#docs-sidebar"), {
schema: docsMenu,
currentUrl: location.href,
autoExpandActiveChild: true,
expandMultiple: false,
isFloatingIndicator: true
});
</script>Schema and mount
import {
createSidebarMenu,
mountSidebar,
createMegaMenu,
mountMegaMenu
} from "nav-schema";
const sidebar = createSidebarMenu({
title: "Dashboard",
sections: [
{
id: "main",
label: "Main",
items: [
{ id: "home", label: "Home", url: "/", icon: "H" },
{
id: "settings",
label: "Settings",
url: "#",
children: [
{ id: "profile", label: "Profile", url: "/settings/profile" },
{ id: "billing", label: "Billing", url: "/settings/billing" }
]
}
]
}
]
});
mountSidebar(document.querySelector("#app-sidebar")!, {
schema: sidebar,
currentUrl: location.href,
expandMultiple: false,
autoExpandActiveChild: true
});
const megaMenu = createMegaMenu({
id: "marketing-nav",
items: [
{
id: "products",
label: "Products",
href: "/products",
dropdownIcon: "v",
megaMenu: {
firstColumn: [
{
id: "platform",
label: "Platform",
items: [
{
id: "navigation",
label: "Navigation",
description: "Sidebar and mega menu schemas",
items: [
{ id: "sidebar", label: "Sidebar", href: "/docs/sidebar" },
{ id: "mega", label: "Mega Menu", href: "/docs/mega-menu" }
]
}
]
}
],
secondColumn: { id: "features", title: "Features" },
thirdColumn: { id: "resources", title: "Resources" }
}
}
]
});
mountMegaMenu(document.querySelector("#app-mega-menu")!, {
schema: megaMenu,
trigger: "hover",
columnTrigger: "hover",
isAnimation: true,
responsive: {
enabled: true,
breakpoint: 1024,
submenuClosedIcon: "+",
submenuOpenIcon: "-",
expandMultiple: false
}
});Demo
Set trigger: "hover" to open panels from top-level links and columnTrigger: "hover" to refresh dependent columns as the pointer moves through the menu.