A menu offers a list of choices to the user, such as a set of actions or functions. Choosing an item in a menu typically opens a sub menu, or invokes a command.
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item>item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
Installation
<script type="module">
import '@nvidia-elements/core/menu/define.js';
</script>
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item>item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
<script type="module">
import '@nvidia-elements/core/menu/define.js';
</script>
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item>item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
nve api.get nve-menu
nve api.get nve-menu
Selected
Indicates whether an element currently holds selection within a multi-option selection group. MDN
Selected Description true The element holds selection and represents the user's current choice within the group. false The element does not hold selection and the user can choose it. Menu with a selected item showing the visual state for user-selected options.
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item selected>item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
Current
Indicates the element that represents the user's current location or position within a set. MDN
Current Description page Marks the current page within a set of navigation links. step Marks the current step within a multi-step process or workflow. Menu with a current page item showing the visual state for the active/current page in navigation.
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item current="page">item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
Border Background
By default Menu will show a blue border on the selected item. You can change the border color by setting --border-background on the <nve-menu-item>
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item current="page" style="--border-background: var(--nve-ref-color-brand-green-900)">item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
Disabled
This Boolean attribute prevents the user from interacting with the element: it cannot receive press or focus events. MDN
Disabled Description true The element has a disabled state and does not accept interaction. false The element has an enabled state and accepts interaction. Menu with disabled items showing unavailable options while maintaining visual context.
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item disabled>item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
Icons
Menu items with icons to add visual context and improve usability.
<nve-menu>
<nve-menu-item><nve-icon name="person"></nve-icon> profile</nve-menu-item>
<nve-menu-item><nve-icon name="gear"></nve-icon> settings</nve-menu-item>
<nve-menu-item><nve-icon name="star"></nve-icon> favorites</nve-menu-item>
<nve-menu-item><nve-icon name="logout"></nve-icon> logout</nve-menu-item>
</nve-menu>
Menu with constrained height showing scrollable behavior when content exceeds container limits.
<nve-menu style="--max-height: 150px">
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item>item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
<nve-menu-item>item 5</nve-menu-item>
<nve-menu-item>item 6</nve-menu-item>
</nve-menu>
Dropdown
Menu with keyboard navigation and ARIA disclosure pattern inside a dropdown. Use when menu items need accessible focus management and arrow key navigation.
<nve-button popovertarget="dropdown-menu">dropdown</nve-button>
<nve-dropdown id="dropdown-menu">
<nve-menu>
<nve-menu-item><nve-icon name="person"></nve-icon> profile</nve-menu-item>
<nve-menu-item><nve-icon name="gear"></nve-icon> settings</nve-menu-item>
<nve-menu-item><nve-icon name="star"></nve-icon> favorites</nve-menu-item>
<nve-divider></nve-divider>
<nve-menu-item><nve-icon name="logout"></nve-icon> logout</nve-menu-item>
</nve-menu>
</nve-dropdown>
Vertical Navigation Drawer
Use a navigation drawer to overlay page content for out-of-context navigation.
<nve-page>
<nve-page-header>
<nve-logo slot="prefix" size="sm">NV</nve-logo>
<h2 slot="prefix" nve-text="heading sm">NVIDIA</h2>
</nve-page-header>
<main nve-layout="column gap:md pad:md">
<nve-button popovertarget="menu-drawer">toggle drawer</nve-button>
</main>
<nve-drawer position="right" size="sm" modal closable id="menu-drawer">
<nve-drawer-header>
<h3 nve-text="heading">Drawer</h3>
</nve-drawer-header>
<nve-drawer-content>
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item current="page">item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
</nve-drawer-content>
</nve-drawer>
</nve-page>
Vertical Navigation Panel
Use an inline navigation panel to push page content aside when navigation is contextual to the page.
<nve-page>
<nve-page-header>
<nve-logo slot="prefix" size="sm">NV</nve-logo>
<h2 slot="prefix" nve-text="heading sm">NVIDIA</h2>
</nve-page-header>
<nve-page-panel slot="left" expanded style="max-width: 280px">
<nve-page-panel-header>
<h3 nve-text="heading">Drawer</h3>
</nve-page-panel-header>
<nve-page-panel-content>
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item current="page">item 2</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
<nve-menu-item>item 4</nve-menu-item>
</nve-menu>
</nve-page-panel-content>
</nve-page-panel>
<main nve-layout="column gap:md pad:md">
<p nve-text="body">Content</p>
</main>
</nve-page>
Use a tooltip on a menu item to provide extra context and warnings.
<nve-menu>
<nve-menu-item>item 1</nve-menu-item>
<nve-menu-item popovertarget="menu-tooltip" id="menu-item-2">
item 2
<nve-icon id="menu-anchor" size="md" name="exclamation-triangle" style="margin-left: auto"></nve-icon>
<nve-tooltip anchor="menu-anchor" id="menu-tooltip" style="interest-delay-start: 2s"
>This is a warning tooltip</nve-tooltip
>
</nve-menu-item>
<nve-menu-item>item 3</nve-menu-item>
</nve-menu>
Complex
Use a dropdown menu with search and branded logos for application selection interfaces.
<nve-button popovertarget="dropdown-menu">dropdown</nve-button>
<nve-dropdown id="dropdown-menu">
<nve-search rounded>
<input type="search" placeholder="search tools" aria-label="search apps" />
</nve-search>
<nve-menu>
<nve-menu-item> <nve-logo color="pink-rose" size="sm">Db</nve-logo> Debugger </nve-menu-item>
<nve-menu-item> <nve-logo color="blue-cobalt" size="sm">TM</nve-logo> Task Manager </nve-menu-item>
<nve-menu-item> <nve-logo color="yellow-nova" size="sm">CI</nve-logo> CI Services </nve-menu-item>
<nve-divider></nve-divider>
<nve-menu-item> <nve-logo size="sm">NV</nve-logo> All Apps </nve-menu-item>
</nve-menu>
</nve-dropdown>
Links
Menu items with links for navigation functionality within menu structures.
<nve-menu>
<nve-menu-item><nve-icon name="person"></nve-icon><a href="#">profile</a></nve-menu-item>
<nve-menu-item><nve-icon name="gear"></nve-icon> <a href="#">settings</a></nve-menu-item>
<nve-menu-item><nve-icon name="star"></nve-icon> <a href="#">favorites</a></nve-menu-item>
<nve-menu-item><nve-icon name="logout"></nve-icon> <a href="#">logout</a></nve-menu-item>
</nve-menu>
Suffix Slot
Menu item features a default slot for content, along with a suffix slot for displaying elements such as keyboard shortcuts at the end of the menu item container.
<nve-menu>
<nve-menu-item><kbd slot="suffix" nve-text="code flat">CMD + C</kbd></nve-menu-item>
</nve-menu>
Danger Status
Menu items with danger status styling for destructive actions like delete or logout operations.
<nve-menu>
<nve-menu-item status="danger">default</nve-menu-item>
<nve-menu-item status="danger" disabled>disabled</nve-menu-item>
<nve-menu-item status="danger" selected>selected</nve-menu-item>
<nve-menu-item status="danger" current="page">current</nve-menu-item>
<nve-menu-item status="danger"><nve-icon name="gear"></nve-icon> icon left</nve-menu-item>
<nve-menu-item status="danger"
>icon right <nve-icon id="warning-icon" size="md" name="exclamation-triangle" style="margin-left: auto"></nve-icon
></nve-menu-item>
</nve-menu>
Release Status
All elements and features go through 3 phases of stability, pre-release, beta and stable.
pre-release Docs Preview API Documentation Fully Themeable
beta Robust unit test coverages Passed API Review Passed Designer VQA Review Included in library package stable No known outstanding AA WCAG issues No known outstanding performance issues Adapts to different screen/container sizes No breaking API changes for at least 90 days