An icon is a graphic symbol designed to visually show the purpose of an interface element.
<nve-icon name="person"></nve-icon>
Installation
<script type="module">
import '@nvidia-elements/core/icon/define.js';
</script>
<nve-icon name="person"></nve-icon>
All Icons
The Iconography system exposes an SVG based icon library to the nve-icon element.
See the searchable Interactive Icon Catalog
Status
Communicates the intent and semantic meaning of an element to help users understand the outcome of their actions.
Status Description warning Indicates cautionary actions that require careful consideration before proceeding. danger Signals destructive or irreversible actions that need extra attention and confirmation. success Represents positive outcomes, confirmations, or constructive actions. accent Highlights important actions or draws attention to primary interactive elements.
Semantic color variations to communicate different states, priorities, and contextual meanings in user interfaces.
<nve-icon name="person"></nve-icon>
<nve-icon name="person" status="accent"></nve-icon>
<nve-icon name="person" status="success"></nve-icon>
<nve-icon name="person" status="warning"></nve-icon>
<nve-icon name="person" status="danger"></nve-icon>
Size
Controls the visual scale of an element to match its importance and available space.
Size Description sm Compact size for dense layouts or secondary elements with less visual prominence. md Standard size that works well in most contexts and provides balanced visibility. lg Larger size for emphasizing important elements or improving touch targets in spacious layouts. xs xl
Icon size variants to accommodate layout densities, touch targets, and visual hierarchy requirements.
<nve-icon name="person" size="sm"></nve-icon>
<nve-icon name="person"></nve-icon>
<nve-icon name="person" size="lg"></nve-icon>
Direction
Sets the direction of the icon. Only supported by expand-panel/collapse-panel (horizontal axis) and arrow/caret/chevron icons (4-directions)
Direction Description up down left right
Directional icons for navigation, movement, and spatial relationships, providing clear visual cues for user actions.
<nve-icon name="arrow-stop" direction="left"></nve-icon>
<nve-icon name="arrow-stop" direction="right"></nve-icon>
<nve-icon name="arrow" direction="up"></nve-icon>
<nve-icon name="arrow" direction="down"></nve-icon>
<nve-icon name="arrow" direction="left"></nve-icon>
<nve-icon name="arrow" direction="right"></nve-icon>
<nve-icon name="caret" direction="up"></nve-icon>
<nve-icon name="caret" direction="down"></nve-icon>
<nve-icon name="caret" direction="left"></nve-icon>
<nve-icon name="caret" direction="right"></nve-icon>
<nve-icon name="chevron" direction="up"></nve-icon>
<nve-icon name="chevron" direction="down"></nve-icon>
<nve-icon name="chevron" direction="left"></nve-icon>
<nve-icon name="chevron" direction="right"></nve-icon>
Themes
Icon appearance across light and dark themes, ensuring proper contrast and visibility in different visual environments.
<div nve-theme="root light">
<nve-icon name="person"></nve-icon>
<nve-icon name="person" status="accent"></nve-icon>
<nve-icon name="person" status="success"></nve-icon>
<nve-icon name="person" status="warning"></nve-icon>
<nve-icon name="person" status="danger"></nve-icon>
</div>
<div nve-theme="root dark">
<nve-icon name="person"></nve-icon>
<nve-icon name="person" status="accent"></nve-icon>
<nve-icon name="person" status="success"></nve-icon>
<nve-icon name="person" status="warning"></nve-icon>
<nve-icon name="person" status="danger"></nve-icon>
</div>
Registration
Register SVG paths and make them accessible to the <nve-icon> element. Define icons via a string or async function returning the resulting string.
<nve-icon name="smile" style="--width: 75px; --height: 75px"></nve-icon>
<script type="module">
customElements.get("nve-icon").add({
smile: {
svg: () =>
'<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 48 48"><circle cx="24" cy="24" r="16" stroke="currentColor" stroke-width="3"/><circle cx="18" cy="20" r="2" fill="currentColor"/><circle cx="30" cy="20" r="2" fill="currentColor"/><path d="M17 29c1.5 2.5 4.2 4 7 4s5.5-1.5 7-4" stroke="currentColor" stroke-width="3" stroke-linecap="round"/></svg>',
},
});
</script>
Alias
Alias icons to a different name. This supports context-specific names or migrations between icon sets.
<script type="module">
await customElements.whenDefined("nve-icon");
customElements.get("nve-icon").alias({
attached: "paper-clip",
});
</script>
<nve-icon name="paper-clip"></nve-icon>
<nve-icon name="attached"></nve-icon>
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