@nvidia-elements/core 2.5.0 → 2.5.1
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 +5 -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 +2 -2
- 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 +27 -27
- 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 +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.1"
|
|
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.1",
|
|
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.1",
|
|
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.1",
|
|
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,33 +251,6 @@
|
|
|
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
|
-
"Card": {
|
|
228
|
-
"srcFile": "card.snippets.html",
|
|
229
|
-
"prefix": [
|
|
230
|
-
"card"
|
|
231
|
-
],
|
|
232
|
-
"type": "pattern",
|
|
233
|
-
"description": "Basic Card with header and footer",
|
|
234
|
-
"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"
|
|
235
|
-
},
|
|
236
|
-
"Media Card": {
|
|
237
|
-
"srcFile": "card.snippets.html",
|
|
238
|
-
"prefix": [
|
|
239
|
-
"media-card"
|
|
240
|
-
],
|
|
241
|
-
"type": "pattern",
|
|
242
|
-
"description": "Basic media Card with card content and card footer",
|
|
243
|
-
"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"
|
|
244
|
-
},
|
|
245
|
-
"Media Card Grid": {
|
|
246
|
-
"srcFile": "card.snippets.html",
|
|
247
|
-
"prefix": [
|
|
248
|
-
"media-card-grid"
|
|
249
|
-
],
|
|
250
|
-
"type": "pattern",
|
|
251
|
-
"description": "Grid layout with 3 media cards",
|
|
252
|
-
"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"
|
|
253
|
-
},
|
|
254
254
|
"Alert Group": {
|
|
255
255
|
"srcFile": "alert.snippets.html",
|
|
256
256
|
"prefix": [
|
package/dist/date/date2.js
CHANGED
package/dist/dialog/dialog2.js
CHANGED
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"}
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
{
|
|
114
114
|
"id": "gauge-size",
|
|
115
115
|
"name": "Size",
|
|
116
|
-
"template": "<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=\"
|
|
116
|
+
"template": "<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",
|
|
117
117
|
"summary": "Gauges in small, medium, and large sizes for dense robotics and autonomous vehicle dashboards.",
|
|
118
118
|
"description": "",
|
|
119
119
|
"composition": false,
|
package/dist/gauge/gauge.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/gauge/gauge.css?inline
|
|
2
|
-
var e = ":host{--color: var(--nve-sys-text-emphasis-color);--background: var(--nve-sys-interaction-background);--needle-background: var(--nve-sys-interaction-color);--accent-color: var(--nve-sys-interaction-color);--thumb-background: var(--accent-color);--track-background: var(--accent-color);--track-width: 8px;--font-size: var(--nve-ref-font-size-400);--font-weight: var(--nve-ref-font-weight-regular);--gap: var(--nve-ref-space-xs);--width: 128px;--height: calc(var(--width) * .8627);--_animation-duration: var(--nve-ref-animation-duration-250);--_needle-size: calc(var(--track-width) / 3);display:inline-block;position:relative;width:var(--width);height:var(--height);font-weight:var(--font-weight);container-type:inline-size;contain:layout;text-box:trim-both cap alphabetic}.fill-dot-
|
|
2
|
+
var e = ":host{--color: var(--nve-sys-text-emphasis-color);--background: var(--nve-sys-interaction-background);--needle-background: var(--nve-sys-interaction-color);--accent-color: var(--nve-sys-interaction-color);--thumb-background: var(--accent-color);--track-background: var(--accent-color);--track-width: 8px;--font-size: var(--nve-ref-font-size-400);--font-weight: var(--nve-ref-font-weight-regular);--gap: var(--nve-ref-space-xs);--width: 128px;--height: calc(var(--width) * .8627);--_animation-duration: var(--nve-ref-animation-duration-250);--_needle-size: calc(var(--track-width) / 3);display:inline-block;position:relative;width:var(--width);height:var(--height);font-weight:var(--font-weight);container-type:inline-size;contain:layout;text-box:trim-both cap alphabetic}.fill-dot-end{r:calc(var(--track-width) / 3.2)}:host([size=\"sm\"]){--font-size: var(--nve-ref-font-size-300);--width: 96px;--_needle-size: calc(var(--track-width) / 2.25);.fill-dot-end{r:calc(var(--track-width) / 2.4)}}:host([size=\"lg\"]){--font-size: var(--nve-ref-font-size-500);--width: 160px;--_needle-size: calc(var(--track-width) / 3.75);.fill-dot-end{r:calc(var(--track-width) / 4)}}[internal-host]{display:grid;place-items:center;position:relative;height:100%}:host([shape=\"half\"]){--height: calc(var(--width) * .5313)}:host([shape=\"half\"]) [internal-host]{place-items:end center}svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}path{fill:none;stroke:#fff;stroke-width:var(--track-width);vector-effect:non-scaling-stroke}path.background{stroke-linecap:round}path.gauge{stroke-linecap:round}.background-surface,.fill-surface{inline-size:100%;block-size:100%}.background-surface{background:var(--background)}.fill-surface{background:var(--track-background)}.fill-dot-end{fill:var(--thumb-background);transform:rotate(var(--_dot-angle));transform-box:view-box;transform-origin:var(--_dot-origin)}:host([thumb=\"dot\"]) .fill-dot-end{animation:gauge-dot-in var(--_animation-duration) var(--nve-ref-animation-easing-100);will-change:transform}.fill-layer[hidden],.fill-dot-end[hidden],.needle[hidden]{display:none}.needle{animation:gauge-needle-in var(--_animation-duration) var(--nve-ref-animation-easing-100);transform:rotate(var(--_needle-angle));transform-box:view-box;transform-origin:var(--_needle-origin);will-change:transform}.needle-line{stroke:var(--needle-background);stroke-linecap:round;stroke-width:var(--_needle-size)}.needle-hub{fill:var(--needle-background);r:var(--_needle-size)}slot{display:flex;flex-direction:column;place-items:center;justify-content:center;height:100%;gap:var(--gap);color:var(--color);font-size:var(--font-size);font-weight:var(--nve-ref-font-weight-medium);padding-block-start:calc(var(--track-width) * 2);text-box:trim-both cap alphabetic;line-height:1;width:50%;font-variant-numeric:tabular-nums}:host([shape=\"half\"]) slot{transform:translateY(1cqh)}:host([thumb=\"needle\"]) slot{transform:translateY(1cqh);justify-content:end}:host([shape=\"half\"][thumb=\"needle\"]) slot{transform:translateY(2cqh)}::slotted(*){color:var(--color);font-size:var(--font-size)}:host([status=\"success\"]){--accent-color: var(--nve-sys-support-success-emphasis-color);--background: var(--nve-sys-support-success-muted-color)}:host([status=\"warning\"]){--accent-color: var(--nve-sys-support-warning-emphasis-color);--background: var(--nve-sys-support-warning-muted-color)}:host([status=\"danger\"]){--accent-color: var(--nve-sys-support-danger-emphasis-color);--background: var(--nve-sys-support-danger-muted-color)}:host([status=\"accent\"]){--accent-color: var(--nve-sys-accent-secondary-background)}@media(prefers-reduced-motion:reduce){:host{--_animation-duration: 0s}}@keyframes gauge-dot-in{0%{transform:rotate(var(--_dot-start-angle))}to{transform:rotate(var(--_dot-angle))}}@keyframes gauge-needle-in{0%{transform:rotate(var(--_needle-start-angle))}to{transform:rotate(var(--_needle-angle))}}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|
package/dist/gauge/gauge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge.js","names":[],"sources":["../../src/gauge/gauge.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --color: var(--nve-sys-text-emphasis-color);\n --background: var(--nve-sys-interaction-background);\n --needle-background: var(--nve-sys-interaction-color);\n --accent-color: var(--nve-sys-interaction-color);\n --thumb-background: var(--accent-color);\n --track-background: var(--accent-color);\n --track-width: 8px;\n --font-size: var(--nve-ref-font-size-400);\n --font-weight: var(--nve-ref-font-weight-regular);\n --gap: var(--nve-ref-space-xs);\n --width: 128px;\n --height: calc(var(--width) * 0.8627);\n --_animation-duration: var(--nve-ref-animation-duration-250);\n --_needle-size: calc(var(--track-width) / 3);\n\n display: inline-block;\n position: relative;\n width: var(--width);\n height: var(--height);\n font-weight: var(--font-weight);\n container-type: inline-size;\n contain: layout;\n text-box: trim-both cap alphabetic;\n}\n\n.fill-dot-
|
|
1
|
+
{"version":3,"file":"gauge.js","names":[],"sources":["../../src/gauge/gauge.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --color: var(--nve-sys-text-emphasis-color);\n --background: var(--nve-sys-interaction-background);\n --needle-background: var(--nve-sys-interaction-color);\n --accent-color: var(--nve-sys-interaction-color);\n --thumb-background: var(--accent-color);\n --track-background: var(--accent-color);\n --track-width: 8px;\n --font-size: var(--nve-ref-font-size-400);\n --font-weight: var(--nve-ref-font-weight-regular);\n --gap: var(--nve-ref-space-xs);\n --width: 128px;\n --height: calc(var(--width) * 0.8627);\n --_animation-duration: var(--nve-ref-animation-duration-250);\n --_needle-size: calc(var(--track-width) / 3);\n\n display: inline-block;\n position: relative;\n width: var(--width);\n height: var(--height);\n font-weight: var(--font-weight);\n container-type: inline-size;\n contain: layout;\n text-box: trim-both cap alphabetic;\n}\n\n.fill-dot-end {\n r: calc(var(--track-width) / 3.2);\n}\n\n:host([size='sm']) {\n --font-size: var(--nve-ref-font-size-300);\n --width: 96px;\n --_needle-size: calc(var(--track-width) / 2.25);\n\n .fill-dot-end {\n r: calc(var(--track-width) / 2.4);\n }\n}\n\n:host([size='lg']) {\n --font-size: var(--nve-ref-font-size-500);\n --width: 160px;\n --_needle-size: calc(var(--track-width) / 3.75);\n\n .fill-dot-end {\n r: calc(var(--track-width) / 4);\n }\n}\n\n[internal-host] {\n display: grid;\n place-items: center;\n position: relative;\n height: 100%;\n}\n\n:host([shape='half']) {\n --height: calc(var(--width) * 0.5313);\n}\n\n:host([shape='half']) [internal-host] {\n place-items: end center;\n}\n\nsvg {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: visible;\n}\n\npath {\n fill: none;\n stroke: white;\n stroke-width: var(--track-width);\n vector-effect: non-scaling-stroke;\n}\n\npath.background {\n stroke-linecap: round;\n}\n\npath.gauge {\n stroke-linecap: round;\n}\n\n.background-surface,\n.fill-surface {\n inline-size: 100%;\n block-size: 100%;\n}\n\n.background-surface {\n background: var(--background);\n}\n\n.fill-surface {\n background: var(--track-background);\n}\n\n.fill-dot-end {\n fill: var(--thumb-background);\n transform: rotate(var(--_dot-angle));\n transform-box: view-box;\n transform-origin: var(--_dot-origin);\n}\n\n:host([thumb='dot']) .fill-dot-end {\n animation: gauge-dot-in var(--_animation-duration) var(--nve-ref-animation-easing-100);\n will-change: transform;\n}\n\n.fill-layer[hidden],\n.fill-dot-end[hidden],\n.needle[hidden] {\n display: none;\n}\n\n.needle {\n animation: gauge-needle-in var(--_animation-duration) var(--nve-ref-animation-easing-100);\n transform: rotate(var(--_needle-angle));\n transform-box: view-box;\n transform-origin: var(--_needle-origin);\n will-change: transform;\n}\n\n.needle-line {\n stroke: var(--needle-background);\n stroke-linecap: round;\n stroke-width: var(--_needle-size);\n}\n\n.needle-hub {\n fill: var(--needle-background);\n r: var(--_needle-size);\n}\n\nslot {\n display: flex;\n flex-direction: column;\n place-items: center;\n justify-content: center;\n height: 100%;\n gap: var(--gap);\n color: var(--color);\n font-size: var(--font-size);\n font-weight: var(--nve-ref-font-weight-medium);\n padding-block-start: calc(var(--track-width) * 2);\n text-box: trim-both cap alphabetic;\n line-height: 1;\n width: 50%;\n font-variant-numeric: tabular-nums;\n}\n\n:host([shape='half']) slot {\n transform: translateY(1cqh);\n}\n\n:host([thumb='needle']) slot {\n transform: translateY(1cqh);\n justify-content: end;\n}\n\n:host([shape='half'][thumb='needle']) slot {\n transform: translateY(2cqh);\n}\n\n::slotted(*) {\n color: var(--color);\n font-size: var(--font-size);\n}\n\n:host([status='success']) {\n --accent-color: var(--nve-sys-support-success-emphasis-color);\n --background: var(--nve-sys-support-success-muted-color);\n}\n\n:host([status='warning']) {\n --accent-color: var(--nve-sys-support-warning-emphasis-color);\n --background: var(--nve-sys-support-warning-muted-color);\n}\n\n:host([status='danger']) {\n --accent-color: var(--nve-sys-support-danger-emphasis-color);\n --background: var(--nve-sys-support-danger-muted-color);\n}\n\n:host([status='accent']) {\n --accent-color: var(--nve-sys-accent-secondary-background);\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host {\n --_animation-duration: 0s;\n }\n}\n\n@keyframes gauge-dot-in {\n from {\n transform: rotate(var(--_dot-start-angle));\n }\n\n to {\n transform: rotate(var(--_dot-angle));\n }\n}\n\n@keyframes gauge-needle-in {\n from {\n transform: rotate(var(--_needle-start-angle));\n }\n\n to {\n transform: rotate(var(--_needle-angle));\n }\n}\n"],"mappings":""}
|