1+ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+ // SPDX-License-Identifier: Apache-2.0
3+
4+ import { html } from 'lit' ;
5+ import '@nvidia-elements/core/progress-gauge/define.js' ;
6+
7+ export default {
8+ title : 'Elements/Progress Gauge' ,
9+ component : 'nve-progress-gauge' ,
10+ } ;
11+
12+ /**
13+ * @summary 270-degree progress gauges for displaying system resource utilization.
14+ */
15+ export const Default = {
16+ render : ( ) => html `
17+ < div nve-layout ="row gap:sm ">
18+ < nve-progress-gauge value ="50 "> 50%</ nve-progress-gauge >
19+ < nve-progress-gauge status ="accent " value ="66 "> 66%</ nve-progress-gauge >
20+ </ div >
21+ ` } ;
22+
23+ /**
24+ * @summary Container variants compare the default 270-degree gauge with the compact half gauge for telemetry layouts with tighter vertical space.
25+ * @tags test-case
26+ */
27+ export const Container = {
28+ render : ( ) => html `
29+ < div nve-layout ="row gap:sm align:vertical-center ">
30+ < nve-progress-gauge status ="accent " value ="66 "> 66%</ nve-progress-gauge >
31+ < nve-progress-gauge container ="half " status ="accent " value ="66 "> 66%</ nve-progress-gauge >
32+ </ div >
33+ ` } ;
34+
35+ /**
36+ * @summary Gauges with values from 0% to 100% for displaying system resource utilization.
37+ * @tags test-case
38+ */
39+ export const Values = {
40+ render : ( ) => html `
41+ < div nve-layout ="row gap:sm ">
42+ < nve-progress-gauge value ="0 "> 0%</ nve-progress-gauge >
43+ < nve-progress-gauge value ="33 "> 33%</ nve-progress-gauge >
44+ < nve-progress-gauge value ="66 "> 66%</ nve-progress-gauge >
45+ < nve-progress-gauge value ="100 "> 100%</ nve-progress-gauge >
46+ </ div >
47+ ` } ;
48+
49+ /**
50+ * @summary Progress gauges with custom max values for mission checkpoints, validation clips, and map tile processing.
51+ * @tags test-case
52+ */
53+ export const Max = {
54+ render : ( ) => html `
55+ < div nve-layout ="row gap:sm ">
56+ < nve-progress-gauge status ="accent " max ="20 " value ="5 "> 5/20</ nve-progress-gauge >
57+ < nve-progress-gauge max ="20 " value ="10 "> 10/20</ nve-progress-gauge >
58+ < nve-progress-gauge max ="20 " value ="15 "> 15/20</ nve-progress-gauge >
59+ </ div >
60+ ` } ;
61+
62+ /**
63+ * @summary Progress gauges with accent, success, warning, and danger colors for autonomous system health and readiness signals.
64+ * @tags test-case
65+ */
66+ export const Status = {
67+ render : ( ) => html `
68+ < div nve-layout ="row gap:sm ">
69+ < nve-progress-gauge value ="50 "> 50%</ nve-progress-gauge >
70+ < nve-progress-gauge status ="accent " value ="75 "> 75%</ nve-progress-gauge >
71+ < nve-progress-gauge status ="success " value ="75 "> 75%</ nve-progress-gauge >
72+ < nve-progress-gauge status ="warning " value ="75 "> 2.1m</ nve-progress-gauge >
73+ < nve-progress-gauge status ="danger " value ="75 "> 0Hz</ nve-progress-gauge >
74+ </ div >
75+ ` } ;
76+
77+ /**
78+ * @summary Small progress gauge paired with route-solve text for compact autonomous vehicle task rows.
79+ * @tags test-case
80+ */
81+ export const WithText = {
82+ render : ( ) => html `
83+ < div nve-layout ="row gap:xs align:vertical-center " nve-text ="medium ">
84+ < nve-progress-gauge status ="accent " size ="sm " value ="50 " aria-labelledby ="route-solve-label "> 2.4s</ nve-progress-gauge >
85+ < span id ="route-solve-label "> Route solve</ span >
86+ </ div >
87+ ` } ;
88+
89+ /**
90+ * @summary Progress gauges in small, medium, and large sizes for dense robotics and autonomous vehicle dashboards.
91+ * @tags test-case
92+ */
93+ export const Sizing = {
94+ render : ( ) => html `
95+ < div nve-layout ="row gap:sm ">
96+ < nve-progress-gauge size ="sm " value ="50 "> 30Hz</ nve-progress-gauge >
97+ < nve-progress-gauge size ="md " value ="50 "> 12Hz</ nve-progress-gauge >
98+ < nve-progress-gauge size ="lg " value ="50 "> 84%</ nve-progress-gauge >
99+ </ div >
100+ ` } ;
101+
102+ /**
103+ * @summary Use for displaying real-time system utilization and performance metrics.
104+ * @tags pattern
105+ */
106+ export const Dynamic = {
107+ render : ( ) => html `
108+ < div nve-layout ="row gap:sm ">
109+ < nve-progress-gauge id ="dynamic-gpu-progress-gauge " status ="success " value ="0 ">
110+ < span > 0%</ span >
111+ < span nve-text ="body sm muted "> GPU</ span >
112+ </ nve-progress-gauge >
113+ </ div >
114+ < script type ="module ">
115+ const gauge = document . querySelector ( '#dynamic-gpu-progress-gauge' ) ;
116+ const valueElement = gauge . querySelector ( 'span' ) ;
117+ setInterval ( ( ) => {
118+ const value = Math . floor ( Math . random ( ) * 101 ) ;
119+ gauge . value = value ;
120+ gauge . status = value >= 80 ? 'danger' : value >= 60 ? 'warning' : 'success' ;
121+ valueElement . textContent = value + '%' ;
122+ } , 1500 ) ;
123+ </ script >
124+ ` } ;
0 commit comments