NV Elements Catalog Starters Repo System Themes About Getting Started Changelog Metrics Support Accessibility Contributions Requests Migration Deprecations Integrations Installation MCP CLI Lint Angular Bundles Extensions Go 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 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 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

Examples

Examples are stateless HTML templates demonstrating UI patterns for the Elements design system. Well defined examples are critical for providing a portable documentation format for the CLI, MCP and documentation site. This document provides guidance on creating well-written example templates. (*.examples.ts).

Core Principles

Example Title

The example title name should be no more than three words. This name references the function and renders in API/Documentation endpoints.

Naming Format

  • Use PascalCase for all example names (for example, Default, StatusFlat, FormSubmit)
  • Names should describe what the example shows, not how it works; explain how in the summary.

Single-Word Names

Use single words for basic API features and properties:

Pattern Examples
Default/basic usage Default
API properties Status, Size, Color, Position, Alignment
Container variants Flat, Inline
States Pressed, Selected, Disabled
Slots/content Content, Actions
Features Closable, Events, Overflow

Compound Names (2-3 words)

Use compound PascalCase for combinations or specific features and patterns:

Pattern Examples
Property + variant StatusFlat, StatusIcon, SelectedFlat
Feature + modifier OpenDelay, DynamicTrigger, ScrollContent
Concept + variant GroupStatus, FormSubmit, FormControl
Layout variants VerticalTabs, BorderlessTabs

Special Prefixes

Prefix Usage Examples
Legacy Deprecated patterns LegacyTrigger, LegacyBehaviorTrigger
Invalid Anti-patterns InvalidLinkButton
Valid Correct patterns (when contrasting with invalid) ValidLinkButton

What to Avoid

  • Component names in titles: Use Status not BadgeStatus
  • Implementation details: Use ScrollContent not OverflowAutoScrollContent
  • Vague names: Use DynamicTrigger not Example1
  • Overly long names: Keep to 3 words max

Examples


    

When the build produces examples for API consumption, it automatically attaches extra metadata such as the associated element/component reference and a UUID to ensure each example has a unique identifier across all projects.

Use @summary JSDoc Comments

Every example must include a @summary JSDoc comment that explains:

  • Descriptions must be concise one or two sentences only.
  • What the example demonstrates
  • Why this pattern is useful
  • When to use this approach
  • How it improves the user experience

When appropriate use NVIDIA or NVIDIA Autonomous Vehicle program for UX use cases


    

Limit summaries to a max of 400 characters. This restriction ensures the documentation stays portable across all platforms including docs, CLI and MCPs.

Stateless Examples by Default

Examples should be stateless when possible, focusing on demonstrating the component's capabilities rather than complex interactions:


    

Use Plain HTML/CSS/JS

Examples should use standard web technologies without unnecessary abstractions:


    

Example Structure Patterns

Basic Component Examples


    

Status/Variant Examples


    

Interactive Examples (When Necessary)


    

Complex Component Examples (Grid, Tables, etc.)


    

Summary Writing Guidelines

Good Summaries

  • Specific and actionable: "Use for simple non-interactive labels or status indicators"
  • Context-aware: "Ideal for showing job status, task progress, or system states"
  • UX-focused: "Perfect for dense layouts or when you want less visual weight"
  • Accessibility-conscious: "using aria-label for accessibility"

Summary Structure

  1. Opening: What the example demonstrates
  2. Context: When/why to use this pattern
  3. Benefits: How it improves UX or solves problems
  4. Technical notes: Any important implementation details

Examples of Well-Written Summaries


    

Anti-Patterns to Avoid

Avoid Poor Summaries or Unclear Use Cases

Summaries should provide UX intent. Do not describe what the reader can already infer from the source code.


    

Avoid Overly Complex State

Avoid complex/stateful examples. Use cases vary widely across frameworks/tools so simple stateless examples are necessary to support all users.


    

Best Practices Summary

  1. Always include @summary - Every example needs clear documentation
  2. Keep examples stateless - Focus on component capabilities, not complex interactions
  3. Use plain HTML/CSS/JS - Avoid unnecessary abstractions
  4. Write descriptive summaries - Explain what, why, when, and how
  5. Include accessibility notes - Use ARIA attributes when appropriate
  6. Provide context - Explain the UX benefits and use cases
  7. Keep examples focused - One clear concept per example
  8. Use semantic naming - Example names should show their purpose

Example Checklist

Before submitting an example, ensure:

  • [ ] Example includes a title
  • [ ] @summary JSDoc comment is present and comprehensive
  • [ ] Description explains the UX intent and use cases
  • [ ] Example is stateless (unless demonstrating specific state patterns)
  • [ ] Uses plain HTML/CSS/JS without unnecessary abstractions
  • [ ] Includes accessibility considerations when relevant