NV Elements Catalog Starters Repo System Themes About Getting Started Changelog Metrics Support Accessibility Contributions Requests Migration Integrations Installation MCP CLI Lint Angular Bundles Extensions Golang Hugo Import Maps Lit NextJS Nuxt Preact React SolidJS Svelte TypeScript Vue Foundations Typography Iconography Themes Design Tokens Size & Space Objects Interactions Support Status Color Animation Fonts Layers Custom Layout Horizontal Vertical Grid Popovers i18n Visualization View Transitions Elements Accordion Alert Avatar Badge Breadcrumb Button Button Group Card Chat Message Checkbox Color Combobox Copy Button Datagrid Integrations Column Action Column Alignment Column Fixed Column width Container Card Display Settings Footer Heatmap Keynav Multi Select Pagination Panel Detail Panel Grid Performance Placeholder Row Action Row Groups Row Sort Scroll Height Single Select Stripe Date Datetime Dialog Divider Dot Drawer Dropdown Dropdown Group Dropzone File Format Datetime Format Relative Time Forms Validation Actions Control Icon Icon Button Input Input Group Logo Menu Month Notification Page Page Header Page Loader Pagination Panel Progressive Filter Chip Progress Bar Progress Ring Password Preferences Input Pulse Radio Range Resize Handle Search Select Skeleton Sort Button Sparkline Star Rating Steps Switch Tabs Tag Textarea Time Toast Toggletip Toolbar Tooltip Tree Week Patterns Authentication Browse Dashboard Editor Empty States Heatmap Keyboard Shortcut Logging Media Navigation Onboarding Panel Responsive Search Subheader Trend Code Codeblock Monaco Input Diff Input Editor Diff Editor Problems Markdown Markdown CSS Utility Labs Responsive Layout Viewport Container Patterns Forms API Design Properties & Attributes Slots Registration CustomEvents Stateless Composition Styles Packaging Glossary Logs Internal Guidelines Agent Harness Documentation Examples TypeScript Testing Unit Testing Accessibility Testing Lighthouse Testing SSR Testing Visual Testing Troubleshooting Component Creation Internal Examples All Examples

Migration Guide

This guide covers migrating from the internal @nve/* packages to the new open source @nvidia-elements/* packages.

Overview

The Elements Design System is now hosted and developed in a public GitHub repository. Packages are now published to the public npm registry under the @nvidia-elements scope. The component APIs, tag names, and theming system remain the same. The primary changes are package names, import paths, and registry configuration.

Package Name Changes

Internal Package New Package
@nve/elements @nvidia-elements/core
@nve/styles @nvidia-elements/styles
@nve/themes @nvidia-elements/themes
@nve/monaco @nvidia-elements/monaco
@nve-labs/forms @nvidia-elements/forms
@nve-labs/cli @nvidia-elements/cli
@nve-labs/code @nvidia-elements/code
@nve-labs/create @nvidia-elements/create
@nve-labs/markdown @nvidia-elements/markdown
@nve-labs/media @nvidia-elements/media
@nve-labs/lint @nvidia-elements/lint

Note: @nve/elements is now @nvidia-elements/core, not @nvidia-elements/elements.

Migration Steps

1. Update Registry Configuration

The @nvidia-elements packages are on the public npm registry and require no special registry configuration. Internal teams should continue to use Artifactory regardless of which package scope. Artifactory proxies the public npm registry automatically.

2. Update Dependencies

In your package.json, replace the old scope names with the new ones:


    

The 0.x versions of the new packages contain the same non-deprecated components as the latest internal releases. Version numbers reset as part of the migration to public npm. A stable 1.0 release follows later.

3. Update Source Imports

Replace import paths throughout your source code:


    

    

4. Install Updated Packages


    

5. Verify

Run your project's build and tests to confirm everything resolves correctly:


    

API Changes

@nvidia-elements/core no longer includes the following internal-only or deprecated pre-1.0 Maglev APIs, and the public packages omit them:

API Change
@nvidia-elements/core/app-header (pre-maglev) replaced by @nvidia-elements/core/page-header
@nvidia-elements/core/css/* (pre-maglev) replaced by @nvidia-elements/styles
@nvidia-elements/core/index.css (pre-maglev) replaced by @nvidia-elements/styles
@nvidia-elements/core/logo The logo component no longer includes the NVIDIA SVG logo; consumers must provide their own SVG as child content in the default slot

All prior Maglev based conventions and prefixes are now removed.

What Stays the Same

  • Component tag prefix: All components continue to use the nve- prefix (<nve-button>, <nve-dialog>, etc.)
  • CSS custom properties: Theme tokens and component CSS custom properties keep the same names (--nve-*)
  • Component APIs: Properties, attributes, events, slots, and CSS parts remain the same
  • Theme files: Same theme names and token structure

Deprecations

The following are the active deprecations. Each next major release removes the prior deprecations. Read more about the versioning and deprecation cycle policy.

@nvidia-elements 0.x

TBD

@nve/testing deprecated

The custom test utilities are now deprecated.

@nve/elements

Scoped Tags deprecated

Avoid @nve/elements/scoped. Instead, consuming applications define their own tag name and leverage the @lit-labs/scoped-registry-mixin package directly.

Popover Behavior Triggers deprecated

Before native HTML popovers, popovers required behaviorTrigger or behavior-trigger for stateful popovers. The native HTML popover API replaces this approach.

Before:


    

After:


    

@maglev/elements

Scope deprecated


    

After:


    

Update any CSS Custom property usage

Before:


    

After:


    

Update style utility attributes

Before:


    

Update HTML elements

Before:


    

After:


    

Alert Banner deprecated

The alert banner component no longer exists. Use nve-alert-group with the prominence="emphasis" option.

Before:


    

After:


    

JSON Viewer deprecated

The JSON viewer element is an internal API. You can access this API via the public exports but should avoid using it. Use nve-codeblock or nve-monaco-input for JSON content rendering.

Layout Full deprecated

The grow property now uses full instead to avoid confusion with flexbox grow behavior.

Before:


    

After:


    

Typography "eyebrow" deprecated

The typography eyebrow utility no longer exists, to align with the standardized semantic names and size options available.

Before:


    

After:


    

Icon Names deprecated

The following icons now use new names:

before after
chevron-right chevron
chevron-down chevron
chevron-left chevron
additional-actions more-actions
analytics pie-chart
annotation transparent-box
app-switcher switch-apps
assist chat-bubble
checkmark check
date calendar
docs book
expand-full-screen maximize
expand-panel arrow-stop
collapse-panel arrow-stop
failed x-circle
favorite-filled star
favorite-outline star-stroke
information information-circle-stroke
maintenance wrench
navigate-to arrow
open-external-link arrow-angle
location map-pin
pinned-1 pin
project folder
settings gear
user person
video-pause pause
video-play play
video-stop stop
visible eye
warning exclamation-triangle

Icon Button Name Directions deprecated

With the deprecation of directional icons the icon button now requires a explicit direction.

Before:


    

After: