An icon is a graphic symbol designed to visually show the purpose of an interface element.
<nve-icon name="person"></nve-icon>
<nve-icon name="person"></nve-icon>
Installation
<script type="module">
import '@nvidia-elements/core/icon/define.js';
</script>
<nve-icon name="person"></nve-icon>
<script type="module">
import '@nvidia-elements/core/icon/define.js';
</script>
<nve-icon name="person"></nve-icon>
nve api.get nve-icon
nve api.get 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>
<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 bounding box size of the icon given a t-shirt style value.
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>
<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>
<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>
Appearance
Set appearance="solid" to render the optional solid asset for a named icon. When no -solid asset is available, the icon renders its outline form. Omit the attribute, or set appearance="outline", to render the outline form.
Selects the outline or solid form of the named icon. Solid icons use an optional -solid asset and fall back tothe outline form when that asset is unavailable.
Appearance Description outline solid 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>
<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>
<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>
<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