@nvidia-elements/core 2.5.0 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/NOTICE.md +1 -222
- package/dist/accordion/accordion2.js +4 -4
- package/dist/alert/alert-group2.js +1 -1
- package/dist/alert/alert2.js +1 -1
- package/dist/avatar/avatar-group2.js +1 -1
- package/dist/avatar/avatar2.js +1 -1
- package/dist/badge/badge2.js +1 -1
- package/dist/breadcrumb/breadcrumb2.js +1 -1
- package/dist/bundles/index.d.ts +2 -0
- package/dist/bundles/index.js +5 -5
- package/dist/button/button2.js +1 -1
- package/dist/button-group/button-group2.js +1 -1
- package/dist/card/card2.js +4 -4
- package/dist/chat-message/chat-message2.js +1 -1
- package/dist/checkbox/checkbox-group2.js +1 -1
- package/dist/checkbox/checkbox2.js +1 -1
- package/dist/color/color2.js +1 -1
- package/dist/combobox/combobox2.js +1 -1
- package/dist/copy-button/copy-button2.js +1 -1
- package/dist/data.snippets.json +42 -42
- package/dist/date/date2.js +1 -1
- package/dist/datetime/datetime2.js +1 -1
- package/dist/dialog/dialog-footer2.js +1 -1
- package/dist/dialog/dialog-header2.js +1 -1
- package/dist/dialog/dialog2.js +2 -2
- package/dist/dialog/dialog2.js.map +1 -1
- package/dist/divider/divider2.js +1 -1
- package/dist/dot/dot2.js +1 -1
- package/dist/drawer/drawer-content2.js +1 -1
- package/dist/drawer/drawer-footer2.js +1 -1
- package/dist/drawer/drawer-header2.js +1 -1
- package/dist/drawer/drawer2.js +1 -1
- package/dist/dropdown/dropdown-footer2.js +1 -1
- package/dist/dropdown/dropdown-header2.js +1 -1
- package/dist/dropdown/dropdown2.js +1 -1
- package/dist/dropdown-group/dropdown-group.js +1 -1
- package/dist/dropzone/dropzone2.js +1 -1
- package/dist/file/file2.js +1 -1
- package/dist/format-bytes/format-bytes2.js +1 -1
- package/dist/format-datetime/format-datetime2.js +1 -1
- package/dist/format-number/format-number2.js +1 -1
- package/dist/format-relative-time/format-relative-time2.js +1 -1
- package/dist/format-truncate/format-truncate2.js +1 -1
- package/dist/forms/control/control2.js +1 -1
- package/dist/forms/control-group/control-group2.js +1 -1
- package/dist/forms/control-message/control-message2.js +1 -1
- package/dist/gauge/gauge.d.ts +2 -0
- package/dist/gauge/gauge.examples.js.map +1 -1
- package/dist/gauge/gauge.examples.json +1 -1
- package/dist/gauge/gauge.js +1 -1
- package/dist/gauge/gauge.js.map +1 -1
- package/dist/gauge/gauge2.js +68 -31
- package/dist/gauge/gauge2.js.map +1 -1
- package/dist/grid/cell/cell2.js +1 -1
- package/dist/grid/column/column2.js +1 -1
- package/dist/grid/footer/footer2.js +1 -1
- package/dist/grid/grid2.js +1 -1
- package/dist/grid/header/header2.js +1 -1
- package/dist/grid/placeholder/placeholder2.js +1 -1
- package/dist/grid/row/row2.js +1 -1
- package/dist/icon/icon2.js +2 -2
- package/dist/icon-button/icon-button2.js +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input2.js +1 -1
- package/dist/internal/services/global.service.js +1 -1
- package/dist/logo/logo2.js +1 -1
- package/dist/menu/menu-item2.js +1 -1
- package/dist/menu/menu2.js +1 -1
- package/dist/month/month2.js +1 -1
- package/dist/notification/notification-group2.js +1 -1
- package/dist/notification/notification2.js +1 -1
- package/dist/page/page-panel/page-panel-content2.js +1 -1
- package/dist/page/page-panel/page-panel-footer2.js +1 -1
- package/dist/page/page-panel/page-panel-header2.js +1 -1
- package/dist/page/page-panel/page-panel2.js +1 -1
- package/dist/page/page2.js +1 -1
- package/dist/page-header/page-header2.js +1 -1
- package/dist/page-loader/page-loader2.js +1 -1
- package/dist/pagination/pagination2.js +1 -1
- package/dist/panel/panel2.js +4 -4
- package/dist/password/password2.js +1 -1
- package/dist/preferences-input/preferences-input2.js +1 -1
- package/dist/progress-bar/progress-bar2.js +1 -1
- package/dist/progress-ring/progress-ring2.js +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
- package/dist/pulse/pulse2.js +1 -1
- package/dist/radio/radio-group2.js +1 -1
- package/dist/radio/radio2.js +1 -1
- package/dist/range/range2.js +1 -1
- package/dist/resize-handle/resize-handle2.js +1 -1
- package/dist/search/search2.js +1 -1
- package/dist/select/select2.js +1 -1
- package/dist/skeleton/skeleton2.js +1 -1
- package/dist/sort-button/sort-button2.js +1 -1
- package/dist/sparkline/sparkline2.js +1 -1
- package/dist/star-rating/star-rating2.js +1 -1
- package/dist/steps/steps2.js +2 -2
- package/dist/switch/switch-group2.js +1 -1
- package/dist/switch/switch2.js +1 -1
- package/dist/tabs/tabs-group2.js +1 -1
- package/dist/tabs/tabs2.js +2 -2
- package/dist/tag/tag2.js +1 -1
- package/dist/textarea/textarea2.js +1 -1
- package/dist/time/time2.js +1 -1
- package/dist/toast/toast2.js +1 -1
- package/dist/toggletip/toggletip-footer2.js +1 -1
- package/dist/toggletip/toggletip-header2.js +1 -1
- package/dist/toggletip/toggletip2.js +1 -1
- package/dist/toolbar/toolbar2.js +1 -1
- package/dist/tooltip/tooltip2.js +1 -1
- package/dist/tree/tree-node2.js +1 -1
- package/dist/tree/tree2.js +1 -1
- package/dist/week/week2.js +1 -1
- package/package.json +1 -1
package/dist/button/button2.js
CHANGED
package/dist/card/card2.js
CHANGED
|
@@ -16,7 +16,7 @@ var d = class extends c {
|
|
|
16
16
|
static {
|
|
17
17
|
this.metadata = {
|
|
18
18
|
tag: "nve-card",
|
|
19
|
-
version: "2.5.
|
|
19
|
+
version: "2.5.2"
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
render() {
|
|
@@ -37,7 +37,7 @@ var f = class extends c {
|
|
|
37
37
|
static {
|
|
38
38
|
this.metadata = {
|
|
39
39
|
tag: "nve-card-header",
|
|
40
|
-
version: "2.5.
|
|
40
|
+
version: "2.5.2",
|
|
41
41
|
parents: ["nve-card"]
|
|
42
42
|
};
|
|
43
43
|
}
|
|
@@ -53,7 +53,7 @@ var p = class extends c {
|
|
|
53
53
|
static {
|
|
54
54
|
this.metadata = {
|
|
55
55
|
tag: "nve-card-content",
|
|
56
|
-
version: "2.5.
|
|
56
|
+
version: "2.5.2",
|
|
57
57
|
parents: ["nve-card"]
|
|
58
58
|
};
|
|
59
59
|
}
|
|
@@ -72,7 +72,7 @@ var m = class extends c {
|
|
|
72
72
|
static {
|
|
73
73
|
this.metadata = {
|
|
74
74
|
tag: "nve-card-footer",
|
|
75
|
-
version: "2.5.
|
|
75
|
+
version: "2.5.2",
|
|
76
76
|
parents: ["nve-card"]
|
|
77
77
|
};
|
|
78
78
|
}
|
package/dist/color/color2.js
CHANGED
package/dist/data.snippets.json
CHANGED
|
@@ -188,6 +188,33 @@
|
|
|
188
188
|
"description": "Dialog is a component that appears above main content. A modal dialog is used to display critical information that requires users attention.",
|
|
189
189
|
"body": "<nve-dialog size=\"${6:md}\" closable>\n <nve-dialog-header>\n <h3 nve-text=\"heading semibold\">${1:Title}</h3>\n </nve-dialog-header>\n <p nve-text=\"body\">${2:Content}</p>\n <nve-dialog-footer>\n <nve-button>${3:Cancel}</nve-button>\n <nve-button interaction=\"${4:emphasis}\">${5:OK}</nve-button>\n </nve-dialog-footer>\n</nve-dialog>\n$0\n"
|
|
190
190
|
},
|
|
191
|
+
"Card": {
|
|
192
|
+
"srcFile": "card.snippets.html",
|
|
193
|
+
"prefix": [
|
|
194
|
+
"card"
|
|
195
|
+
],
|
|
196
|
+
"type": "pattern",
|
|
197
|
+
"description": "Basic Card with header and footer",
|
|
198
|
+
"body": "<nve-card>\n <nve-card-header>\n <div>\n <h2>${1:Title}</h2>\n <p>${2:Sub Title}</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n ${3:\n <p>card content</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <nve-button style=\"margin-left: auto\">Action</nve-button>\n </nve-card-footer>\n</nve-card>\n"
|
|
199
|
+
},
|
|
200
|
+
"Media Card": {
|
|
201
|
+
"srcFile": "card.snippets.html",
|
|
202
|
+
"prefix": [
|
|
203
|
+
"media-card"
|
|
204
|
+
],
|
|
205
|
+
"type": "pattern",
|
|
206
|
+
"description": "Basic media Card with card content and card footer",
|
|
207
|
+
"body": "<nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${1:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${2:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${3:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n</nve-card>\n"
|
|
208
|
+
},
|
|
209
|
+
"Media Card Grid": {
|
|
210
|
+
"srcFile": "card.snippets.html",
|
|
211
|
+
"prefix": [
|
|
212
|
+
"media-card-grid"
|
|
213
|
+
],
|
|
214
|
+
"type": "pattern",
|
|
215
|
+
"description": "Grid layout with 3 media cards",
|
|
216
|
+
"body": "<section nve-layout=\"grid span-items:4 gap:md\">\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 1\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${1:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${2:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${3:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 2\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${4:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${5:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${6:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%;\">\n <img alt=\"example visualization for media card 3\" loading=\"lazy\" style=\"width: 100%; height: 100%; object-fit: cover;\">\n <nve-card-content>\n ${7:\n <p>•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n }\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>${8:•︎•︎•︎•︎•︎•︎}</nve-button>\n <nve-button>${9:•︎•︎•︎•︎•︎•︎}</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n</section>\n"
|
|
217
|
+
},
|
|
191
218
|
"Button Group": {
|
|
192
219
|
"srcFile": "button-group.snippets.html",
|
|
193
220
|
"prefix": [
|
|
@@ -224,32 +251,32 @@
|
|
|
224
251
|
"description": "Simple vertical button group with three icon buttons.",
|
|
225
252
|
"body": "<nve-button-group orientation=\"vertical\">\n <nve-icon-button icon-name=\"${1:copy}\"></nve-icon-button>\n <nve-icon-button icon-name=\"${2:add-comment}\"></nve-icon-button>\n <nve-icon-button icon-name=\"${3:download}\"></nve-icon-button>\n</nve-button-group>\n"
|
|
226
253
|
},
|
|
227
|
-
"
|
|
228
|
-
"srcFile": "
|
|
254
|
+
"Accordion": {
|
|
255
|
+
"srcFile": "accordion.snippets.html",
|
|
229
256
|
"prefix": [
|
|
230
|
-
"
|
|
257
|
+
"accordion"
|
|
231
258
|
],
|
|
232
259
|
"type": "pattern",
|
|
233
|
-
"description": "Basic
|
|
234
|
-
"body": "<nve-
|
|
260
|
+
"description": "Basic accordion with title and content slot.",
|
|
261
|
+
"body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
|
|
235
262
|
},
|
|
236
|
-
"
|
|
237
|
-
"srcFile": "
|
|
263
|
+
"Accordion with Actions": {
|
|
264
|
+
"srcFile": "accordion.snippets.html",
|
|
238
265
|
"prefix": [
|
|
239
|
-
"
|
|
266
|
+
"accordion-actions"
|
|
240
267
|
],
|
|
241
268
|
"type": "pattern",
|
|
242
|
-
"description": "
|
|
243
|
-
"body": "<nve-
|
|
269
|
+
"description": "Accordion with action buttons in header.",
|
|
270
|
+
"body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n\n <nve-icon-button container=\"flat\" icon-name=\"${3:add}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n <nve-icon-button container=\"flat\" icon-name=\"${4:delete}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
|
|
244
271
|
},
|
|
245
|
-
"
|
|
246
|
-
"srcFile": "
|
|
272
|
+
"Accorion Group": {
|
|
273
|
+
"srcFile": "accordion.snippets.html",
|
|
247
274
|
"prefix": [
|
|
248
|
-
"
|
|
275
|
+
"accordion-group"
|
|
249
276
|
],
|
|
250
277
|
"type": "pattern",
|
|
251
|
-
"description": "
|
|
252
|
-
"body": "<
|
|
278
|
+
"description": "Accordion group with two accordion children.",
|
|
279
|
+
"body": "<nve-accordion-group behavior-expand-single container=\"${1:flat}\">\n <nve-accordion>\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${4:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${6:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${7:Content} </nve-accordion-content>\n </nve-accordion>\n</nve-accordion-group>\n$0\n"
|
|
253
280
|
},
|
|
254
281
|
"Alert Group": {
|
|
255
282
|
"srcFile": "alert.snippets.html",
|
|
@@ -277,32 +304,5 @@
|
|
|
277
304
|
"type": "pattern",
|
|
278
305
|
"description": "Alert text and preformatted code output.",
|
|
279
306
|
"body": "<nve-alert-group status=\"danger\">\n <nve-alert>\n Session Paused:\n <div slot=\"content\" nve-layout=\"column gap:sm align:stretch\">\n <p nve-text=\"body sm\">Failed to verify drives. <a href=\"#\" nve-text=\"link\">Check Status</a></p>\n <nve-divider style=\"--color: var(--nve-sys-text-muted-color)\"></nve-divider>\n <pre nve-text=\"code sm\" style=\"background: transparent !important; margin: 0;\">10:06:01 AM [verify] update /virtual:/verify/\n10:06:11 AM [build] update /virtual:/build/\n10:06:22 AM [error] update /virtual:/error/ - failed to connect to remote\n </pre>\n </div>\n </nve-alert>\n</nve-alert-group>\n$0\n"
|
|
280
|
-
},
|
|
281
|
-
"Accordion": {
|
|
282
|
-
"srcFile": "accordion.snippets.html",
|
|
283
|
-
"prefix": [
|
|
284
|
-
"accordion"
|
|
285
|
-
],
|
|
286
|
-
"type": "pattern",
|
|
287
|
-
"description": "Basic accordion with title and content slot.",
|
|
288
|
-
"body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
|
|
289
|
-
},
|
|
290
|
-
"Accordion with Actions": {
|
|
291
|
-
"srcFile": "accordion.snippets.html",
|
|
292
|
-
"prefix": [
|
|
293
|
-
"accordion-actions"
|
|
294
|
-
],
|
|
295
|
-
"type": "pattern",
|
|
296
|
-
"description": "Accordion with action buttons in header.",
|
|
297
|
-
"body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n\n <nve-icon-button container=\"flat\" icon-name=\"${3:add}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n <nve-icon-button container=\"flat\" icon-name=\"${4:delete}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
|
|
298
|
-
},
|
|
299
|
-
"Accorion Group": {
|
|
300
|
-
"srcFile": "accordion.snippets.html",
|
|
301
|
-
"prefix": [
|
|
302
|
-
"accordion-group"
|
|
303
|
-
],
|
|
304
|
-
"type": "pattern",
|
|
305
|
-
"description": "Accordion group with two accordion children.",
|
|
306
|
-
"body": "<nve-accordion-group behavior-expand-single container=\"${1:flat}\">\n <nve-accordion>\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${4:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${6:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${7:Content} </nve-accordion-content>\n </nve-accordion>\n</nve-accordion-group>\n$0\n"
|
|
307
307
|
}
|
|
308
308
|
}
|
package/dist/date/date2.js
CHANGED
package/dist/dialog/dialog2.js
CHANGED
|
@@ -22,7 +22,7 @@ var h = class extends f {
|
|
|
22
22
|
return this.modal ? "auto" : "manual";
|
|
23
23
|
}
|
|
24
24
|
get popoverDismissible() {
|
|
25
|
-
return
|
|
25
|
+
return this.closable ?? !1;
|
|
26
26
|
}
|
|
27
27
|
static {
|
|
28
28
|
this.styles = o([s, d]);
|
|
@@ -30,7 +30,7 @@ var h = class extends f {
|
|
|
30
30
|
static {
|
|
31
31
|
this.metadata = {
|
|
32
32
|
tag: "nve-dialog",
|
|
33
|
-
version: "2.5.
|
|
33
|
+
version: "2.5.2"
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
static {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog2.js","names":["#i18nController"],"sources":["../../src/dialog/dialog.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport type { PopoverAlign, PopoverPosition, PopoverType, Size } from '@nvidia-elements/core/internal';\nimport {\n audit,\n excessiveInstanceLimit,\n I18nController,\n popoverStyles,\n TypeNativePopoverController,\n useStyles,\n attachInternals,\n appendRootNodeStyle,\n scopedRegistry\n} from '@nvidia-elements/core/internal';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport globalStyles from './dialog.global.css?inline';\nimport styles from './dialog.css?inline';\n\n/**\n * @element nve-dialog\n * @description Dialog is a component that appears above main content. A modal dialog displays critical information that requires user attention and interrupts user flow.\n * @documentation https://nvidia.github.io/elements/docs/elements/dialog/\n * @since 0.6.0\n * @entrypoint \\@nvidia-elements/core/dialog\n * @event beforetoggle - Dispatched on a popover just before showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/beforetoggle_event)\n * @event toggle - Dispatched on a popover element just after showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/toggle_event)\n * @event open - Dispatched when the dialog opens.\n * @event close - Dispatched when the dialog closes.\n * @slot - Dialog body content displayed between the header and footer.\n * @cssprop --border\n * @cssprop --border-radius\n * @cssprop --background\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --box-shadow\n * @cssprop --gap\n * @cssprop --max-width\n * @cssprop --min-height\n * @cssprop --max-height\n * @cssprop --animation-duration - Duration of dialog open/close animations\n * @csspart close-button - The inner template reference for the close button of the dialog.\n * @csspart icon-button - The icon button element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/\n */\n@audit({ excessiveInstanceLimit })\n@scopedRegistry()\nexport class Dialog extends LitElement {\n /**\n * Sets the side position of the popover relative to the provided anchor element.\n * For dialog the anchor defaults to the document body.\n */\n @property({ type: String, reflect: true }) position: PopoverPosition = 'center';\n\n /**\n * Sets the alignment of the popover relative to the provided anchor element.\n * If an arrow exists the alignment will be relative to the arrow against the anchor.\n */\n @property({ type: String, reflect: true }) alignment: PopoverAlign = 'center';\n\n /**\n * Sets the max size of the dialog.\n */\n @property({ type: String, reflect: true }) size?: Size;\n\n /**\n * Determines if a close button should render within dialog. Non-closable\n * dialogs suit dialogs that require user confirmation steps.\n */\n @property({ type: Boolean }) closable: boolean;\n\n /**\n * Determines if a dialog should have a modal backdrop that visually overlays the UI.\n */\n @property({ type: Boolean, reflect: true }) modal: boolean;\n\n /**\n * (optional) By default the popover will automatically anchor itself relative to the trigger element.\n * Pass an optional custom anchor element as an idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) anchor: string | HTMLElement = globalThis.document?.body;\n\n /**\n * @deprecated Use the popover API instead.\n * The trigger defines what element triggers an `open` interaction event.\n * A trigger can accept a idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) trigger: string | HTMLElement;\n\n /**\n * @deprecated Use the popover API instead.\n * Determines if popover visibility behavior should be automatically controlled by the trigger.\n */\n @property({ type: Boolean, reflect: true, attribute: 'behavior-trigger' }) behaviorTrigger: boolean;\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n /** @private */\n get popoverType(): PopoverType {\n return this.modal ? 'auto' : 'manual';\n }\n\n /** @private */\n get popoverDismissible() {\n return
|
|
1
|
+
{"version":3,"file":"dialog2.js","names":["#i18nController"],"sources":["../../src/dialog/dialog.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport type { PopoverAlign, PopoverPosition, PopoverType, Size } from '@nvidia-elements/core/internal';\nimport {\n audit,\n excessiveInstanceLimit,\n I18nController,\n popoverStyles,\n TypeNativePopoverController,\n useStyles,\n attachInternals,\n appendRootNodeStyle,\n scopedRegistry\n} from '@nvidia-elements/core/internal';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport globalStyles from './dialog.global.css?inline';\nimport styles from './dialog.css?inline';\n\n/**\n * @element nve-dialog\n * @description Dialog is a component that appears above main content. A modal dialog displays critical information that requires user attention and interrupts user flow.\n * @documentation https://nvidia.github.io/elements/docs/elements/dialog/\n * @since 0.6.0\n * @entrypoint \\@nvidia-elements/core/dialog\n * @event beforetoggle - Dispatched on a popover just before showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/beforetoggle_event)\n * @event toggle - Dispatched on a popover element just after showing or hiding. [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/toggle_event)\n * @event open - Dispatched when the dialog opens.\n * @event close - Dispatched when the dialog closes.\n * @slot - Dialog body content displayed between the header and footer.\n * @cssprop --border\n * @cssprop --border-radius\n * @cssprop --background\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --box-shadow\n * @cssprop --gap\n * @cssprop --max-width\n * @cssprop --min-height\n * @cssprop --max-height\n * @cssprop --animation-duration - Duration of dialog open/close animations\n * @csspart close-button - The inner template reference for the close button of the dialog.\n * @csspart icon-button - The icon button element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/\n */\n@audit({ excessiveInstanceLimit })\n@scopedRegistry()\nexport class Dialog extends LitElement {\n /**\n * Sets the side position of the popover relative to the provided anchor element.\n * For dialog the anchor defaults to the document body.\n */\n @property({ type: String, reflect: true }) position: PopoverPosition = 'center';\n\n /**\n * Sets the alignment of the popover relative to the provided anchor element.\n * If an arrow exists the alignment will be relative to the arrow against the anchor.\n */\n @property({ type: String, reflect: true }) alignment: PopoverAlign = 'center';\n\n /**\n * Sets the max size of the dialog.\n */\n @property({ type: String, reflect: true }) size?: Size;\n\n /**\n * Determines if a close button should render within dialog. Non-closable\n * dialogs suit dialogs that require user confirmation steps.\n */\n @property({ type: Boolean }) closable: boolean;\n\n /**\n * Determines if a dialog should have a modal backdrop that visually overlays the UI.\n */\n @property({ type: Boolean, reflect: true }) modal: boolean;\n\n /**\n * (optional) By default the popover will automatically anchor itself relative to the trigger element.\n * Pass an optional custom anchor element as an idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) anchor: string | HTMLElement = globalThis.document?.body;\n\n /**\n * @deprecated Use the popover API instead.\n * The trigger defines what element triggers an `open` interaction event.\n * A trigger can accept a idref string within the same render root or a HTMLElement DOM reference.\n */\n @property({ type: String }) trigger: string | HTMLElement;\n\n /**\n * @deprecated Use the popover API instead.\n * Determines if popover visibility behavior should be automatically controlled by the trigger.\n */\n @property({ type: Boolean, reflect: true, attribute: 'behavior-trigger' }) behaviorTrigger: boolean;\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n /** @private */\n get popoverType(): PopoverType {\n return this.modal ? 'auto' : 'manual';\n }\n\n /** @private */\n get popoverDismissible() {\n return this.closable ?? false;\n }\n\n protected typeNativePopoverController = new TypeNativePopoverController<Dialog>(this);\n\n static styles = useStyles([popoverStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-dialog',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [IconButton.metadata.tag]: IconButton\n };\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host part=\"_host\">\n <div class=\"header\">\n ${this.closable ? html`<nve-icon-button part=\"close-button icon-button\" exportparts=\"icon:icon-button-icon\" size=\"sm\" @click=${this.hidePopover} icon-name=\"cancel\" .ariaLabel=${this.i18n.close}></nve-icon-button>` : ''}\n <slot name=\"header\"></slot>\n </div>\n <div class=\"content\" part=\"_content\">\n <slot></slot>\n </div>\n <slot name=\"footer\"></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'dialog';\n appendRootNodeStyle(this, globalStyles);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAiDO,IAAA,IAAA,cAAqB,EAAW;;+BAKkC,2BAMF,wBAsBV,WAAW,UAAU,gBAexC,IAAI,EAAqB,IAAI,eAKlC,KAAKA,GAAgB,yCAYhB,IAAI,EAAoC,IAAI;;CAjBpF;CAQA,IAAI,cAA2B;EAC7B,OAAO,KAAK,QAAQ,SAAS;CAC/B;CAGA,IAAI,qBAAqB;EACvB,OAAO,KAAK,YAAY;CAC1B;;gBAIgB,EAAU,CAAC,GAAe,CAAM,CAAC;;;kBAEtB;GACzB,KAAK;GACL,SAAS;EACX;;;4BAE4B,GACzB,EAAW,SAAS,MAAM,EAC7B;;CAKA,SAAS;EACP,OAAO,CAAI,uDAGL,KAAK,WAAW,CAAI,0GAAyG,KAAK,YAAY,mCAAiC,KAAK,KAAK,MAAM,wBAAuB,GAAG;CASjO;CAEA,oBAAoB;EAIlB,AAHA,MAAM,kBAAkB,GACxB,EAAgB,IAAI,GACpB,KAAK,WAAW,OAAO,UACvB,EAAoB,MAAM,CAAY;CACxC;AACF;GAjGG,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,KAAA,CAAA,MAMxC,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,aAAA,KAAA,CAAA,MAKxC,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,MAMxC,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,KAAA,CAAA,MAK1B,EAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,MAMzC,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,MAOzB,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,KAAA,CAAA,MAMzB,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;AAAmB,CAAC,CAAA,GAAA,EAAA,WAAA,mBAAA,KAAA,CAAA,MAOxE,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,UAvD3B,EAAM,EAAE,wBAAA,GAAuB,CAAC,GAChC,EAAe,CAAA,GAAA,CAAA"}
|
package/dist/divider/divider2.js
CHANGED
package/dist/dot/dot2.js
CHANGED
package/dist/drawer/drawer2.js
CHANGED
package/dist/file/file2.js
CHANGED
package/dist/gauge/gauge.d.ts
CHANGED
|
@@ -49,5 +49,7 @@ export declare class Gauge extends LitElement {
|
|
|
49
49
|
}>;
|
|
50
50
|
render(): import("lit").TemplateResult<1>;
|
|
51
51
|
connectedCallback(): void;
|
|
52
|
+
disconnectedCallback(): void;
|
|
53
|
+
willUpdate(props: PropertyValues<this>): void;
|
|
52
54
|
updated(props: PropertyValues<this>): void;
|
|
53
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge.examples.js","names":[],"sources":["../../src/gauge/gauge.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/gauge/define.js';\n\nexport default {\n title: 'Elements/Gauge',\n component: 'nve-gauge',\n};\n\n/**\n * @summary 270-degree gauges for displaying system resource usage.\n */\nexport const Default = {\n render: () => html`\n <nve-gauge status=\"accent\" value=\"66\">66%</nve-gauge>\n`};\n\n/**\n * @summary Shape variants compare the default 270-degree gauge with the compact half gauge for telemetry layouts with tighter vertical space.\n * @tags test-case\n */\nexport const Shape = {\n render: () => html`\n <div nve-layout=\"row gap:sm align:vertical-center\">\n <nve-gauge status=\"accent\" value=\"66\">66%</nve-gauge>\n <nve-gauge shape=\"half\" status=\"accent\" value=\"66\">66%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Half shape variant for telemetry layouts with tighter vertical space.\n * @tags test-case\n */\nexport const ShapeHalf = {\n render: () => html`\n <div nve-layout=\"row gap:sm align:vertical-center\">\n <nve-gauge shape=\"half\" value=\"66\" size=\"sm\">66%</nve-gauge>\n <nve-gauge shape=\"half\" value=\"66\">66%</nve-gauge>\n <nve-gauge shape=\"half\" value=\"66\" size=\"lg\">66%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Half shape with needle thumb variant for rapidly changing values in confined spaces.\n * @tags test-case\n */\nexport const ShapeHalfNeedle = {\n render: () => html`\n <div nve-layout=\"row gap:sm align:vertical-center\">\n <nve-gauge shape=\"half\" thumb=\"needle\" value=\"66\" size=\"sm\">66%</nve-gauge>\n <nve-gauge shape=\"half\" thumb=\"needle\" value=\"66\">66%</nve-gauge>\n <nve-gauge shape=\"half\" thumb=\"needle\" value=\"66\" size=\"lg\">66%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Thumb variants compare filled, dot, and needle indicators for dashboards that need different levels of visual emphasis.\n * @tags test-case\n */\nexport const Thumb = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge thumb=\"fill\" value=\"66\">fill</nve-gauge>\n <nve-gauge thumb=\"dot\" value=\"66\">dot</nve-gauge>\n <nve-gauge thumb=\"needle\" value=\"66\">needle</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Gauges with values from 0% to 100% for displaying system resource usage.\n * @tags test-case\n */\nexport const Values = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge value=\"0\">0%</nve-gauge>\n <nve-gauge value=\"33\">33%</nve-gauge>\n <nve-gauge value=\"66\">66%</nve-gauge>\n <nve-gauge value=\"100\">100%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Gauges with custom max values for mission checkpoints, validation clips, and map tile processing.\n * @tags test-case\n */\nexport const Max = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge status=\"accent\" max=\"20\" value=\"5\">5/20</nve-gauge>\n <nve-gauge max=\"20\" value=\"10\">10/20</nve-gauge>\n <nve-gauge max=\"20\" value=\"15\">15/20</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Gauges with accent, success, warning, and danger colors for autonomous system health and readiness signals.\n * @tags test-case\n */\nexport const Status = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge value=\"50\">50%</nve-gauge>\n <nve-gauge status=\"accent\" value=\"75\">75%</nve-gauge>\n <nve-gauge status=\"success\" value=\"75\">75%</nve-gauge>\n <nve-gauge status=\"warning\" value=\"75\" aria-valuetext=\"2.1m\">2.1m</nve-gauge>\n <nve-gauge status=\"danger\" value=\"75\" aria-valuetext=\"0Hz\">0Hz</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Use gradient colors for gauges with scaled non-segmented values such as temperature and bandwidth.\n * @tags pattern\n */\nexport const Gradient = {\n render: () => html`\n <style>\n nve-gauge#gauge-temperature-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-success-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-danger-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-success-emphasis-color) 300deg 360deg\n );\n }\n\n nve-gauge#gauge-mbps-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-danger-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-success-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-danger-emphasis-color) 300deg 360deg\n );\n }\n </style>\n\n <div nve-layout=\"row gap:md\">\n <nve-gauge thumb=\"dot\" value=\"82\" id=\"gauge-temperature-example\" aria-label=\"Temperature\" aria-valuetext=\"82°C\">\n <span>82°C</span>\n <span nve-text=\"body sm muted\">TEMP</span>\n </nve-gauge>\n\n <nve-gauge thumb=\"needle\" value=\"98\" id=\"gauge-mbps-example\" aria-label=\"Download\" aria-valuetext=\"980Mbps\">\n <span nve-text=\"body sm\">980Mbps</span>\n <span nve-text=\"body sm muted\">Download</span>\n </nve-gauge>\n </div>\n`};\n\n/**\n * @summary Small gauge paired with route-solve text for compact autonomous vehicle task rows.\n * @tags test-case\n */\nexport const WithText = {\n render: () => html`\n <div nve-layout=\"row gap:xs align:vertical-center\" nve-text=\"medium\">\n <nve-gauge status=\"accent\" size=\"sm\" value=\"50\" aria-labelledby=\"route-solve-label\" aria-valuetext=\"2.4s\">2.4s</nve-gauge>\n <span id=\"route-solve-label\">Route solve</span>\n </div>\n`};\n\n/**\n * @summary Gauges in small, medium, and large sizes for dense robotics and autonomous vehicle dashboards.\n * @tags test-case\n */\nexport const Size = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge size=\"sm\" value=\"50\" aria-valuetext=\"30Hz\">\n <span nve-text=\"grow\">30Hz</span>\n </nve-gauge>\n <nve-gauge size=\"md\" value=\"50\" aria-valuetext=\"12Hz\">\n <span nve-text=\"grow\">12Hz</span>\n </nve-gauge>\n <nve-gauge size=\"lg\" value=\"50\" aria-valuetext=\"84%\">\n <span nve-text=\"grow\">84%</span>\n </nve-gauge>\n </div>\n`};\n\n/**\n * @summary Use for displaying real-time system usage and performance metrics.\n * @tags pattern\n */\nexport const Dynamic = {\n render: () => html`\n<div nve-layout=\"row gap:sm\">\n <nve-gauge id=\"dynamic-gpu-gauge\" status=\"success\" value=\"0\" aria-label=\"GPU\" aria-valuetext=\"0%\">\n <span nve-text=\"grow\">0%</span>\n <span nve-text=\"body sm muted\">GPU</span>\n </nve-gauge>\n</div>\n<script type=\"module\">\n const gauge = document.querySelector('#dynamic-gpu-gauge');\n const valueElement = gauge.querySelector('span');\n setInterval(() => {\n const value = Math.floor(Math.random() * 101);\n const text = value + '%';\n gauge.value = value;\n gauge.status = value >= 80 ? 'danger' : value >= 60 ? 'warning' : 'success';\n gauge.setAttribute('aria-valuetext', text);\n valueElement.textContent = text;\n }, 1500);\n</script>\n`};\n\n/**\n * @summary Autonomous vehicle taxi gauges combine battery, perception, compute, and link status with realistic drift. Use for live dispatch views that need changing system health.\n * @tags test-case\n */\nexport const MultiGauge = {\n render: () => html`\n<div nve-layout=\"row gap:sm\">\n <nve-gauge id=\"av-taxi-battery-gauge\" status=\"success\" value=\"74\" aria-label=\"Battery\" aria-valuetext=\"74%\">\n <span nve-text=\"grow\">74%</span>\n <span nve-text=\"body sm muted\">BATTERY</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-perception-gauge\" status=\"success\" value=\"96\" aria-label=\"Perception\" aria-valuetext=\"96%\">\n <span nve-text=\"grow\">96%</span>\n <span nve-text=\"body sm muted\">PERCEPTION</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-compute-gauge\" status=\"success\" value=\"62\" aria-label=\"GPU\" aria-valuetext=\"62%\">\n <span nve-text=\"grow\">62%</span>\n <span nve-text=\"body sm muted\">GPU</span>\n </nve-gauge>\n</div>\n<script type=\"module\">\n const clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n const telemetry = {\n battery: 74,\n compute: 62,\n perception: 96\n };\n const gauges = {\n battery: document.querySelector('#av-taxi-battery-gauge'),\n compute: document.querySelector('#av-taxi-compute-gauge'),\n perception: document.querySelector('#av-taxi-perception-gauge')\n };\n\n const setGauge = (gauge, value, text, status) => {\n gauge.value = Math.round(value);\n gauge.status = status;\n gauge.setAttribute('aria-valuetext', text);\n gauge.querySelector('span').textContent = text;\n };\n\n setInterval(() => {\n telemetry.battery = clamp(telemetry.battery - 0.08 + (Math.random() - 0.4) * 0.3, 46, 82);\n telemetry.compute = clamp(telemetry.compute + (Math.random() - 0.48) * 7, 34, 91);\n telemetry.perception = clamp(telemetry.perception + (Math.random() - 0.52) * 2.4, 88, 99);\n\n const battery = Math.round(telemetry.battery);\n const compute = Math.round(telemetry.compute);\n const perception = Math.round(telemetry.perception);\n\n setGauge(gauges.battery, battery, battery + '%', battery < 30 ? 'danger' : battery < 50 ? 'warning' : 'success');\n setGauge(gauges.compute, compute, compute + '%', compute >= 85 ? 'danger' : compute >= 70 ? 'warning' : 'success');\n setGauge(gauges.perception, perception, perception + '%', perception < 90 ? 'danger' : perception < 94 ? 'warning' : 'success');\n }, 1600);\n</script>\n`};\n"],"mappings":";AAGA,IAAA,IAAS"}
|
|
1
|
+
{"version":3,"file":"gauge.examples.js","names":[],"sources":["../../src/gauge/gauge.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/gauge/define.js';\n\nexport default {\n title: 'Elements/Gauge',\n component: 'nve-gauge',\n};\n\n/**\n * @summary 270-degree gauges for displaying system resource usage.\n */\nexport const Default = {\n render: () => html`\n <nve-gauge status=\"accent\" value=\"66\">66%</nve-gauge>\n`};\n\n/**\n * @summary Shape variants compare the default 270-degree gauge with the compact half gauge for telemetry layouts with tighter vertical space.\n * @tags test-case\n */\nexport const Shape = {\n render: () => html`\n <div nve-layout=\"row gap:sm align:vertical-center\">\n <nve-gauge status=\"accent\" value=\"66\">66%</nve-gauge>\n <nve-gauge shape=\"half\" status=\"accent\" value=\"66\">66%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Half shape variant for telemetry layouts with tighter vertical space.\n * @tags test-case\n */\nexport const ShapeHalf = {\n render: () => html`\n <div nve-layout=\"row gap:sm align:vertical-center\">\n <nve-gauge shape=\"half\" value=\"66\" size=\"sm\">66%</nve-gauge>\n <nve-gauge shape=\"half\" value=\"66\">66%</nve-gauge>\n <nve-gauge shape=\"half\" value=\"66\" size=\"lg\">66%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Half shape with needle thumb variant for rapidly changing values in confined spaces.\n * @tags test-case\n */\nexport const ShapeHalfNeedle = {\n render: () => html`\n <div nve-layout=\"row gap:sm align:vertical-center\">\n <nve-gauge shape=\"half\" thumb=\"needle\" value=\"66\" size=\"sm\">66%</nve-gauge>\n <nve-gauge shape=\"half\" thumb=\"needle\" value=\"66\">66%</nve-gauge>\n <nve-gauge shape=\"half\" thumb=\"needle\" value=\"66\" size=\"lg\">66%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Thumb variants compare filled, dot, and needle indicators for dashboards that need different levels of visual emphasis.\n * @tags test-case\n */\nexport const Thumb = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge thumb=\"fill\" value=\"66\">fill</nve-gauge>\n <nve-gauge thumb=\"dot\" value=\"66\">dot</nve-gauge>\n <nve-gauge thumb=\"needle\" value=\"66\">needle</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Gauges with values from 0% to 100% for displaying system resource usage.\n * @tags test-case\n */\nexport const Values = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge value=\"0\">0%</nve-gauge>\n <nve-gauge value=\"33\">33%</nve-gauge>\n <nve-gauge value=\"66\">66%</nve-gauge>\n <nve-gauge value=\"100\">100%</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Gauges with custom max values for mission checkpoints, validation clips, and map tile processing.\n * @tags test-case\n */\nexport const Max = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge status=\"accent\" max=\"20\" value=\"5\">5/20</nve-gauge>\n <nve-gauge max=\"20\" value=\"10\">10/20</nve-gauge>\n <nve-gauge max=\"20\" value=\"15\">15/20</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Gauges with accent, success, warning, and danger colors for autonomous system health and readiness signals.\n * @tags test-case\n */\nexport const Status = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge value=\"50\">50%</nve-gauge>\n <nve-gauge status=\"accent\" value=\"75\">75%</nve-gauge>\n <nve-gauge status=\"success\" value=\"75\">75%</nve-gauge>\n <nve-gauge status=\"warning\" value=\"75\" aria-valuetext=\"2.1m\">2.1m</nve-gauge>\n <nve-gauge status=\"danger\" value=\"75\" aria-valuetext=\"0Hz\">0Hz</nve-gauge>\n </div>\n`};\n\n/**\n * @summary Use gradient colors for gauges with scaled non-segmented values such as temperature and bandwidth.\n * @tags pattern\n */\nexport const Gradient = {\n render: () => html`\n <style>\n nve-gauge#gauge-temperature-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-success-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-danger-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-success-emphasis-color) 300deg 360deg\n );\n }\n\n nve-gauge#gauge-mbps-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-danger-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-success-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-danger-emphasis-color) 300deg 360deg\n );\n }\n </style>\n\n <div nve-layout=\"row gap:md\">\n <nve-gauge thumb=\"dot\" value=\"82\" id=\"gauge-temperature-example\" aria-label=\"Temperature\" aria-valuetext=\"82°C\">\n <span>82°C</span>\n <span nve-text=\"body sm muted\">TEMP</span>\n </nve-gauge>\n\n <nve-gauge thumb=\"needle\" value=\"98\" id=\"gauge-mbps-example\" aria-label=\"Download\" aria-valuetext=\"980Mbps\">\n <span nve-text=\"body sm\">980Mbps</span>\n <span nve-text=\"body sm muted\">Download</span>\n </nve-gauge>\n </div>\n`};\n\n/**\n * @summary Small gauge paired with route-solve text for compact autonomous vehicle task rows.\n * @tags test-case\n */\nexport const WithText = {\n render: () => html`\n <div nve-layout=\"row gap:xs align:vertical-center\" nve-text=\"medium\">\n <nve-gauge status=\"accent\" size=\"sm\" value=\"50\" aria-labelledby=\"route-solve-label\" aria-valuetext=\"2.4s\">2.4s</nve-gauge>\n <span id=\"route-solve-label\">Route solve</span>\n </div>\n`};\n\n/**\n * @summary Gauges in small, medium, and large sizes for dense robotics and autonomous vehicle dashboards.\n * @tags test-case\n */\nexport const Size = {\n render: () => html`\n <div nve-layout=\"row gap:sm\">\n <nve-gauge size=\"sm\" value=\"50\" aria-valuetext=\"30Hz\">\n <span nve-text=\"grow\">30Hz</span>\n </nve-gauge>\n <nve-gauge size=\"md\" value=\"50\" aria-valuetext=\"12Hz\">\n <span nve-text=\"grow\">12Hz</span>\n </nve-gauge>\n <nve-gauge size=\"lg\" value=\"84\" aria-valuetext=\"84%\">\n <span nve-text=\"grow\">84%</span>\n </nve-gauge>\n </div>\n`};\n\n/**\n * @summary Use for displaying real-time system usage and performance metrics.\n * @tags pattern\n */\nexport const Dynamic = {\n render: () => html`\n<div nve-layout=\"row gap:sm\">\n <nve-gauge id=\"dynamic-gpu-gauge\" status=\"success\" value=\"0\" aria-label=\"GPU\" aria-valuetext=\"0%\">\n <span nve-text=\"grow\">0%</span>\n <span nve-text=\"body sm muted\">GPU</span>\n </nve-gauge>\n</div>\n<script type=\"module\">\n const gauge = document.querySelector('#dynamic-gpu-gauge');\n const valueElement = gauge.querySelector('span');\n setInterval(() => {\n const value = Math.floor(Math.random() * 101);\n const text = value + '%';\n gauge.value = value;\n gauge.status = value >= 80 ? 'danger' : value >= 60 ? 'warning' : 'success';\n gauge.setAttribute('aria-valuetext', text);\n valueElement.textContent = text;\n }, 1500);\n</script>\n`};\n\n/**\n * @summary Autonomous vehicle taxi gauges combine battery, perception, compute, and link status with realistic drift. Use for live dispatch views that need changing system health.\n * @tags test-case\n */\nexport const MultiGauge = {\n render: () => html`\n<div nve-layout=\"row gap:sm\">\n <nve-gauge id=\"av-taxi-battery-gauge\" status=\"success\" value=\"74\" aria-label=\"Battery\" aria-valuetext=\"74%\">\n <span nve-text=\"grow\">74%</span>\n <span nve-text=\"body sm muted\">BATTERY</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-perception-gauge\" status=\"success\" value=\"96\" aria-label=\"Perception\" aria-valuetext=\"96%\">\n <span nve-text=\"grow\">96%</span>\n <span nve-text=\"body sm muted\">PERCEPTION</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-compute-gauge\" status=\"success\" value=\"62\" aria-label=\"GPU\" aria-valuetext=\"62%\">\n <span nve-text=\"grow\">62%</span>\n <span nve-text=\"body sm muted\">GPU</span>\n </nve-gauge>\n</div>\n<script type=\"module\">\n const clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n const telemetry = {\n battery: 74,\n compute: 62,\n perception: 96\n };\n const gauges = {\n battery: document.querySelector('#av-taxi-battery-gauge'),\n compute: document.querySelector('#av-taxi-compute-gauge'),\n perception: document.querySelector('#av-taxi-perception-gauge')\n };\n\n const setGauge = (gauge, value, text, status) => {\n gauge.value = Math.round(value);\n gauge.status = status;\n gauge.setAttribute('aria-valuetext', text);\n gauge.querySelector('span').textContent = text;\n };\n\n setInterval(() => {\n telemetry.battery = clamp(telemetry.battery - 0.08 + (Math.random() - 0.4) * 0.3, 46, 82);\n telemetry.compute = clamp(telemetry.compute + (Math.random() - 0.48) * 7, 34, 91);\n telemetry.perception = clamp(telemetry.perception + (Math.random() - 0.52) * 2.4, 88, 99);\n\n const battery = Math.round(telemetry.battery);\n const compute = Math.round(telemetry.compute);\n const perception = Math.round(telemetry.perception);\n\n setGauge(gauges.battery, battery, battery + '%', battery < 30 ? 'danger' : battery < 50 ? 'warning' : 'success');\n setGauge(gauges.compute, compute, compute + '%', compute >= 85 ? 'danger' : compute >= 70 ? 'warning' : 'success');\n setGauge(gauges.perception, perception, perception + '%', perception < 90 ? 'danger' : perception < 94 ? 'warning' : 'success');\n }, 1600);\n</script>\n`};\n"],"mappings":";AAGA,IAAA,IAAS"}
|