@nvidia-elements/core 2.2.3 → 2.3.0

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.
Files changed (138) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/accordion/accordion2.js +4 -4
  3. package/dist/alert/alert-group2.js +1 -1
  4. package/dist/alert/alert2.js +1 -1
  5. package/dist/avatar/avatar-group2.js +1 -1
  6. package/dist/avatar/avatar2.js +1 -1
  7. package/dist/badge/badge2.js +1 -1
  8. package/dist/breadcrumb/breadcrumb2.js +1 -1
  9. package/dist/bundle.d.ts +2 -0
  10. package/dist/bundles/index.d.ts +60 -8
  11. package/dist/bundles/index.js +6 -6
  12. package/dist/button/button2.js +1 -1
  13. package/dist/button-group/button-group2.js +1 -1
  14. package/dist/card/card2.js +4 -4
  15. package/dist/chat-message/chat-message2.js +1 -1
  16. package/dist/checkbox/checkbox-group2.js +1 -1
  17. package/dist/checkbox/checkbox2.js +1 -1
  18. package/dist/color/color2.js +1 -1
  19. package/dist/combobox/combobox2.js +1 -1
  20. package/dist/copy-button/copy-button2.js +1 -1
  21. package/dist/custom-elements-jsx.d.ts +46 -10
  22. package/dist/custom-elements-vue.d.ts +46 -10
  23. package/dist/custom-elements.json +389 -16
  24. package/dist/data.html.json +64 -6
  25. package/dist/data.snippets.json +27 -27
  26. package/dist/date/date2.js +1 -1
  27. package/dist/datetime/datetime2.js +1 -1
  28. package/dist/dialog/dialog-footer2.js +1 -1
  29. package/dist/dialog/dialog-header2.js +1 -1
  30. package/dist/dialog/dialog.d.ts +1 -1
  31. package/dist/dialog/dialog2.js +1 -1
  32. package/dist/dialog/dialog2.js.map +1 -1
  33. package/dist/divider/divider2.js +1 -1
  34. package/dist/dot/dot2.js +1 -1
  35. package/dist/drawer/drawer-content2.js +1 -1
  36. package/dist/drawer/drawer-footer2.js +1 -1
  37. package/dist/drawer/drawer-header2.js +1 -1
  38. package/dist/drawer/drawer.d.ts +1 -1
  39. package/dist/drawer/drawer2.js +1 -1
  40. package/dist/drawer/drawer2.js.map +1 -1
  41. package/dist/dropdown/dropdown-footer2.js +1 -1
  42. package/dist/dropdown/dropdown-header2.js +1 -1
  43. package/dist/dropdown/dropdown.d.ts +3 -3
  44. package/dist/dropdown/dropdown2.js +1 -1
  45. package/dist/dropdown/dropdown2.js.map +1 -1
  46. package/dist/dropdown-group/dropdown-group.js +1 -1
  47. package/dist/dropzone/dropzone2.js +1 -1
  48. package/dist/file/file2.js +1 -1
  49. package/dist/format-bytes/define.d.ts +6 -0
  50. package/dist/format-bytes/define.js +7 -0
  51. package/dist/format-bytes/define.js.map +1 -0
  52. package/dist/format-bytes/format-bytes.d.ts +53 -0
  53. package/dist/format-bytes/format-bytes.examples.js +6 -0
  54. package/dist/format-bytes/format-bytes.examples.js.map +1 -0
  55. package/dist/format-bytes/format-bytes.examples.json +69 -0
  56. package/dist/format-bytes/format-bytes.js +6 -0
  57. package/dist/format-bytes/format-bytes.js.map +1 -0
  58. package/dist/format-bytes/format-bytes2.js +182 -0
  59. package/dist/format-bytes/format-bytes2.js.map +1 -0
  60. package/dist/format-bytes/index.d.ts +1 -0
  61. package/dist/format-bytes/index.js +2 -0
  62. package/dist/format-datetime/format-datetime2.js +1 -1
  63. package/dist/format-number/format-number2.js +1 -1
  64. package/dist/format-relative-time/format-relative-time2.js +1 -1
  65. package/dist/forms/control/control2.js +1 -1
  66. package/dist/forms/control-group/control-group2.js +1 -1
  67. package/dist/forms/control-message/control-message2.js +1 -1
  68. package/dist/gauge/gauge.examples.js.map +1 -1
  69. package/dist/gauge/gauge.examples.json +1 -1
  70. package/dist/gauge/gauge2.js +1 -1
  71. package/dist/grid/cell/cell2.js +1 -1
  72. package/dist/grid/column/column2.js +1 -1
  73. package/dist/grid/footer/footer2.js +1 -1
  74. package/dist/grid/grid2.js +1 -1
  75. package/dist/grid/header/header2.js +1 -1
  76. package/dist/grid/placeholder/placeholder2.js +1 -1
  77. package/dist/grid/row/row2.js +1 -1
  78. package/dist/icon/icon2.js +2 -2
  79. package/dist/icon-button/icon-button2.js +1 -1
  80. package/dist/index.js +1 -1
  81. package/dist/input/input-group2.js +1 -1
  82. package/dist/input/input2.js +1 -1
  83. package/dist/internal/services/global.service.js +1 -1
  84. package/dist/logo/logo2.js +1 -1
  85. package/dist/menu/menu-item2.js +1 -1
  86. package/dist/menu/menu2.js +1 -1
  87. package/dist/month/month2.js +1 -1
  88. package/dist/notification/notification-group2.js +1 -1
  89. package/dist/notification/notification.d.ts +1 -1
  90. package/dist/notification/notification2.js +1 -1
  91. package/dist/notification/notification2.js.map +1 -1
  92. package/dist/page/page-panel/page-panel-content2.js +1 -1
  93. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  94. package/dist/page/page-panel/page-panel-header2.js +1 -1
  95. package/dist/page/page-panel/page-panel2.js +1 -1
  96. package/dist/page/page2.js +1 -1
  97. package/dist/page-header/page-header2.js +1 -1
  98. package/dist/page-loader/page-loader2.js +1 -1
  99. package/dist/pagination/pagination2.js +1 -1
  100. package/dist/panel/panel2.js +4 -4
  101. package/dist/password/password2.js +1 -1
  102. package/dist/preferences-input/preferences-input2.js +1 -1
  103. package/dist/progress-bar/progress-bar2.js +1 -1
  104. package/dist/progress-ring/progress-ring2.js +1 -1
  105. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  106. package/dist/pulse/pulse2.js +1 -1
  107. package/dist/radio/radio-group2.js +1 -1
  108. package/dist/radio/radio2.js +1 -1
  109. package/dist/range/range2.js +1 -1
  110. package/dist/resize-handle/resize-handle2.js +1 -1
  111. package/dist/search/search2.js +1 -1
  112. package/dist/select/select2.js +1 -1
  113. package/dist/skeleton/skeleton2.js +1 -1
  114. package/dist/sort-button/sort-button2.js +1 -1
  115. package/dist/sparkline/sparkline2.js +1 -1
  116. package/dist/star-rating/star-rating2.js +1 -1
  117. package/dist/steps/steps2.js +2 -2
  118. package/dist/switch/switch-group2.js +1 -1
  119. package/dist/switch/switch2.js +1 -1
  120. package/dist/tabs/tabs-group2.js +1 -1
  121. package/dist/tabs/tabs2.js +2 -2
  122. package/dist/tag/tag2.js +1 -1
  123. package/dist/textarea/textarea2.js +1 -1
  124. package/dist/time/time2.js +1 -1
  125. package/dist/toast/toast.d.ts +1 -1
  126. package/dist/toast/toast2.js +1 -1
  127. package/dist/toast/toast2.js.map +1 -1
  128. package/dist/toggletip/toggletip-footer2.js +1 -1
  129. package/dist/toggletip/toggletip-header2.js +1 -1
  130. package/dist/toggletip/toggletip2.js +1 -1
  131. package/dist/toolbar/toolbar2.js +1 -1
  132. package/dist/tooltip/tooltip.d.ts +1 -1
  133. package/dist/tooltip/tooltip2.js +1 -1
  134. package/dist/tooltip/tooltip2.js.map +1 -1
  135. package/dist/tree/tree-node2.js +1 -1
  136. package/dist/tree/tree2.js +1 -1
  137. package/dist/week/week2.js +1 -1
  138. package/package.json +15 -3
@@ -0,0 +1,53 @@
1
+ import { LitElement } from 'lit';
2
+ export type FormatBytesDisplay = 'decimal' | 'binary';
3
+ export type FormatBytesUnit = 'b' | 'kb' | 'mb' | 'gb' | 'tb' | 'pb';
4
+ export type FormatBytesUnitDisplay = 'short' | 'long';
5
+ /**
6
+ * @element nve-format-bytes
7
+ * @description Formats a byte count as localized, human-readable decimal or binary units.
8
+ * @documentation https://nvidia.github.io/elements/docs/elements/format-bytes/
9
+ * @since 0.0.0
10
+ * @entrypoint \@nvidia-elements/core/format-bytes
11
+ * @slot - Numeric byte count to format (such as 1048576). Serves as fallback before hydration.
12
+ * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data
13
+ */
14
+ export declare class FormatBytes extends LitElement {
15
+ #private;
16
+ static styles: import("lit").CSSResult[];
17
+ static readonly metadata: {
18
+ tag: string;
19
+ version: string;
20
+ };
21
+ /**
22
+ * Optional byte count for values supplied by JavaScript or bound data.
23
+ * By default, the component formats the element's text content, which also serves as the SSR fallback.
24
+ * When both are present, this property takes precedence.
25
+ */
26
+ value?: number;
27
+ /**
28
+ * Unit system: 'decimal' uses powers of 1000 and 'binary' uses powers of 1024.
29
+ */
30
+ display: FormatBytesDisplay;
31
+ /**
32
+ * Optional unit magnitude. When omitted, the component selects a unit from the byte count.
33
+ */
34
+ unit?: FormatBytesUnit;
35
+ /**
36
+ * Unit label length: 'short' renders labels such as 'mb'; 'long' renders labels such as 'megabytes'.
37
+ */
38
+ unitDisplay: FormatBytesUnitDisplay;
39
+ /**
40
+ * Language tag (such as en-US or de-DE) used to format the number.
41
+ * Defaults to document.documentElement.lang or the runtime default.
42
+ */
43
+ locale?: string;
44
+ /**
45
+ * Pad fraction output to at least this many digits.
46
+ */
47
+ minimumFractionDigits?: number;
48
+ /**
49
+ * Round fraction output to at most this many digits. Defaults to two effective digits after the decimal point.
50
+ */
51
+ maximumFractionDigits?: number;
52
+ render(): import("lit").TemplateResult<1>;
53
+ }
@@ -0,0 +1,6 @@
1
+ //#region src/format-bytes/format-bytes.examples.ts
2
+ var e = "";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=format-bytes.examples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-bytes.examples.js","names":[],"sources":["../../src/format-bytes/format-bytes.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/format-bytes/define.js';\n\nexport default {\n title: 'Elements/FormatBytes',\n component: 'nve-format-bytes'\n};\n\n/**\n * @summary Automatic decimal conversion for concise file sizes and storage metrics. The component selects the appropriate unit from the byte count.\n */\nexport const Default = {\n render: () => html`\n <div nve-layout=\"column gap:sm\">\n <nve-format-bytes>1024</nve-format-bytes>\n <nve-format-bytes>1048576</nve-format-bytes>\n <nve-format-bytes>1073741824</nve-format-bytes>\n </div>\n `\n};\n\n/**\n * @summary Forced unit magnitudes for comparing byte counts on a consistent scale. Use when values need the same unit across a table or chart.\n */\nexport const Unit = {\n render: () => html`\n <div nve-layout=\"column gap:sm\">\n <nve-format-bytes unit=\"kb\">1048576</nve-format-bytes>\n <nve-format-bytes unit=\"mb\">1048576</nve-format-bytes>\n <nve-format-bytes unit=\"gb\">1048576</nve-format-bytes>\n </div>\n `\n};\n\n/**\n * @summary Short and long unit labels for compact metrics or explanatory text. Long labels improve clarity when space allows.\n */\nexport const UnitDisplay = {\n render: () => html`\n <div nve-layout=\"column gap:sm\">\n <nve-format-bytes unit-display=\"short\">1048576</nve-format-bytes>\n <nve-format-bytes unit-display=\"long\">1048576</nve-format-bytes>\n <nve-format-bytes display=\"binary\" unit-display=\"long\">1048576</nve-format-bytes>\n </div>\n `\n};\n\n/**\n * @summary Fraction digit controls for matching the precision of storage measurements. Use fixed digits when values must align visually.\n */\nexport const Precision = {\n render: () => html`\n <div nve-layout=\"column gap:sm\">\n <nve-format-bytes maximum-fraction-digits=\"0\">1234567</nve-format-bytes>\n <nve-format-bytes maximum-fraction-digits=\"2\">1234567</nve-format-bytes>\n <nve-format-bytes minimum-fraction-digits=\"3\" maximum-fraction-digits=\"3\">1234567</nve-format-bytes>\n </div>\n `\n};\n\n/**\n * @summary Explicit locale formatting for audiences whose numeric separators differ from the document language. Unit labels remain lowercase English.\n */\nexport const Locale = {\n render: () => html`\n <div nve-layout=\"column gap:sm\">\n <nve-format-bytes locale=\"en-US\">1048576</nve-format-bytes>\n <nve-format-bytes locale=\"de-DE\">1048576</nve-format-bytes>\n <nve-format-bytes locale=\"fr-FR\">1048576</nve-format-bytes>\n </div>\n `\n};\n\n/**\n * @summary Value attribute input for JavaScript or bound data. It takes precedence over text content while the text remains an SSR fallback.\n */\nexport const Value = {\n render: () => html`<nve-format-bytes value=\"1048576\">1024</nve-format-bytes>`\n};\n\n/**\n * @summary Decimal and binary conversion for matching SI or IEC storage conventions. Use the convention expected by the surrounding product.\n */\nexport const Display = {\n render: () => html`\n <div nve-layout=\"column gap:sm\">\n <nve-format-bytes display=\"decimal\">1024</nve-format-bytes>\n <nve-format-bytes display=\"binary\">1024</nve-format-bytes>\n </div>\n `\n};\n"],"mappings":";AAGA,IAAA,IAAS"}
@@ -0,0 +1,69 @@
1
+ {
2
+ "element": "nve-format-bytes",
3
+ "entrypoint": "@nvidia-elements/core/format-bytes/format-bytes.examples.json",
4
+ "items": [
5
+ {
6
+ "id": "format-bytes",
7
+ "name": "Default",
8
+ "template": "<div nve-layout=\"column gap:sm\">\n <nve-format-bytes>1024</nve-format-bytes>\n <nve-format-bytes>1048576</nve-format-bytes>\n <nve-format-bytes>1073741824</nve-format-bytes>\n</div>\n",
9
+ "summary": "Automatic decimal conversion for concise file sizes and storage metrics. The component selects the appropriate unit from the byte count.",
10
+ "description": "",
11
+ "composition": false,
12
+ "tags": []
13
+ },
14
+ {
15
+ "id": "format-bytes-unit",
16
+ "name": "Unit",
17
+ "template": "<div nve-layout=\"column gap:sm\">\n <nve-format-bytes unit=\"kb\">1048576</nve-format-bytes>\n <nve-format-bytes unit=\"mb\">1048576</nve-format-bytes>\n <nve-format-bytes unit=\"gb\">1048576</nve-format-bytes>\n</div>\n",
18
+ "summary": "Forced unit magnitudes for comparing byte counts on a consistent scale. Use when values need the same unit across a table or chart.",
19
+ "description": "",
20
+ "composition": false,
21
+ "tags": []
22
+ },
23
+ {
24
+ "id": "format-bytes-unit-display",
25
+ "name": "UnitDisplay",
26
+ "template": "<div nve-layout=\"column gap:sm\">\n <nve-format-bytes unit-display=\"short\">1048576</nve-format-bytes>\n <nve-format-bytes unit-display=\"long\">1048576</nve-format-bytes>\n <nve-format-bytes display=\"binary\" unit-display=\"long\">1048576</nve-format-bytes>\n</div>\n",
27
+ "summary": "Short and long unit labels for compact metrics or explanatory text. Long labels improve clarity when space allows.",
28
+ "description": "",
29
+ "composition": false,
30
+ "tags": []
31
+ },
32
+ {
33
+ "id": "format-bytes-precision",
34
+ "name": "Precision",
35
+ "template": "<div nve-layout=\"column gap:sm\">\n <nve-format-bytes maximum-fraction-digits=\"0\">1234567</nve-format-bytes>\n <nve-format-bytes maximum-fraction-digits=\"2\">1234567</nve-format-bytes>\n <nve-format-bytes minimum-fraction-digits=\"3\" maximum-fraction-digits=\"3\">1234567</nve-format-bytes>\n</div>\n",
36
+ "summary": "Fraction digit controls for matching the precision of storage measurements. Use fixed digits when values must align visually.",
37
+ "description": "",
38
+ "composition": false,
39
+ "tags": []
40
+ },
41
+ {
42
+ "id": "format-bytes-locale",
43
+ "name": "Locale",
44
+ "template": "<div nve-layout=\"column gap:sm\">\n <nve-format-bytes locale=\"en-US\">1048576</nve-format-bytes>\n <nve-format-bytes locale=\"de-DE\">1048576</nve-format-bytes>\n <nve-format-bytes locale=\"fr-FR\">1048576</nve-format-bytes>\n</div>\n",
45
+ "summary": "Explicit locale formatting for audiences whose numeric separators differ from the document language. Unit labels remain lowercase English.",
46
+ "description": "",
47
+ "composition": false,
48
+ "tags": []
49
+ },
50
+ {
51
+ "id": "format-bytes-value",
52
+ "name": "Value",
53
+ "template": "<nve-format-bytes value=\"1048576\">1024</nve-format-bytes>\n",
54
+ "summary": "Value attribute input for JavaScript or bound data. It takes precedence over text content while the text remains an SSR fallback.",
55
+ "description": "",
56
+ "composition": false,
57
+ "tags": []
58
+ },
59
+ {
60
+ "id": "format-bytes-display",
61
+ "name": "Display",
62
+ "template": "<div nve-layout=\"column gap:sm\">\n <nve-format-bytes display=\"decimal\">1024</nve-format-bytes>\n <nve-format-bytes display=\"binary\">1024</nve-format-bytes>\n</div>\n",
63
+ "summary": "Decimal and binary conversion for matching SI or IEC storage conventions. Use the convention expected by the surrounding product.",
64
+ "description": "",
65
+ "composition": false,
66
+ "tags": []
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,6 @@
1
+ //#region src/format-bytes/format-bytes.css?inline
2
+ var e = ":host{display:inline}[internal-host]{color:var(--nve-sys-text-color, inherit)}slot{display:none}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=format-bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-bytes.js","names":[],"sources":["../../src/format-bytes/format-bytes.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 display: inline;\n}\n\n[internal-host] {\n color: var(--nve-sys-text-color, inherit);\n}\n\nslot {\n display: none;\n}\n"],"mappings":""}
@@ -0,0 +1,182 @@
1
+ import { LogService as e } from "../internal/services/log.service.js";
2
+ import { typeSSR as t } from "../internal/controllers/type-ssr.controller.js";
3
+ import { useStyles as n } from "../internal/styles/index.js";
4
+ import r from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/decorate.js";
5
+ import i from "./format-bytes.js";
6
+ import { LitElement as a, html as o } from "lit";
7
+ import { property as s } from "lit/decorators/property.js";
8
+ //#region src/format-bytes/format-bytes.ts
9
+ var c = [
10
+ "b",
11
+ "kb",
12
+ "mb",
13
+ "gb",
14
+ "tb",
15
+ "pb"
16
+ ], l = ["decimal", "binary"], u = ["short", "long"], d = {
17
+ b: {
18
+ short: "b",
19
+ singular: "byte",
20
+ plural: "bytes"
21
+ },
22
+ kb: {
23
+ short: "kb",
24
+ singular: "kilobyte",
25
+ plural: "kilobytes"
26
+ },
27
+ mb: {
28
+ short: "mb",
29
+ singular: "megabyte",
30
+ plural: "megabytes"
31
+ },
32
+ gb: {
33
+ short: "gb",
34
+ singular: "gigabyte",
35
+ plural: "gigabytes"
36
+ },
37
+ tb: {
38
+ short: "tb",
39
+ singular: "terabyte",
40
+ plural: "terabytes"
41
+ },
42
+ pb: {
43
+ short: "pb",
44
+ singular: "petabyte",
45
+ plural: "petabytes"
46
+ }
47
+ }, f = {
48
+ b: {
49
+ short: "b",
50
+ singular: "byte",
51
+ plural: "bytes"
52
+ },
53
+ kb: {
54
+ short: "kib",
55
+ singular: "kibibyte",
56
+ plural: "kibibytes"
57
+ },
58
+ mb: {
59
+ short: "mib",
60
+ singular: "mebibyte",
61
+ plural: "mebibytes"
62
+ },
63
+ gb: {
64
+ short: "gib",
65
+ singular: "gibibyte",
66
+ plural: "gibibytes"
67
+ },
68
+ tb: {
69
+ short: "tib",
70
+ singular: "tebibyte",
71
+ plural: "tebibytes"
72
+ },
73
+ pb: {
74
+ short: "pib",
75
+ singular: "pebibyte",
76
+ plural: "pebibytes"
77
+ }
78
+ };
79
+ function p(e) {
80
+ return l.some((t) => t === e);
81
+ }
82
+ function m(e) {
83
+ return c.some((t) => t === e);
84
+ }
85
+ function h(e) {
86
+ return u.some((t) => t === e);
87
+ }
88
+ var g = class extends a {
89
+ constructor(...e) {
90
+ super(...e), this.display = "decimal", this.unitDisplay = "short";
91
+ }
92
+ static {
93
+ this.styles = n([i]);
94
+ }
95
+ static {
96
+ this.metadata = {
97
+ tag: "nve-format-bytes",
98
+ version: "2.3.0"
99
+ };
100
+ }
101
+ get #e() {
102
+ let e = Number.isNaN(this.value) ? this.getAttribute("value") ?? this.value : this.value;
103
+ return String(e ?? this.textContent?.trim() ?? "");
104
+ }
105
+ get #t() {
106
+ return this.locale ?? (globalThis.document?.documentElement?.lang || void 0);
107
+ }
108
+ get #n() {
109
+ let t = this.#e;
110
+ if (!t) return null;
111
+ let n = Number(t);
112
+ return Number.isFinite(n) ? n : (e.warn(`format-bytes: invalid numeric value "${t}"`), null);
113
+ }
114
+ #r(e, t) {
115
+ let n = t === "binary" ? 1024 : 1e3, r = Math.abs(e);
116
+ for (let e = c.length - 1; e > 0; e--) {
117
+ let t = c[e];
118
+ if (t && r >= n ** e) return t;
119
+ }
120
+ return "b";
121
+ }
122
+ #i(e, t) {
123
+ let n = this.display === "binary" ? f[e] : d[e];
124
+ return this.unitDisplay === "short" ? n.short : Math.abs(t) === 1 ? n.singular : n.plural;
125
+ }
126
+ #a(t, n) {
127
+ e.warn(`format-bytes: invalid ${t} value "${String(n)}"`);
128
+ }
129
+ #o() {
130
+ return p(this.display) ? h(this.unitDisplay) ? this.unit !== void 0 && !m(this.unit) ? (this.#a("unit", this.unit), !1) : !0 : (this.#a("unit-display", this.unitDisplay), !1) : (this.#a("display", this.display), !1);
131
+ }
132
+ get #s() {
133
+ let e = this.maximumFractionDigits ?? Math.max(this.minimumFractionDigits ?? 0, 2);
134
+ return {
135
+ minimumFractionDigits: this.minimumFractionDigits,
136
+ maximumFractionDigits: e
137
+ };
138
+ }
139
+ #c(e) {
140
+ return Number(new Intl.NumberFormat("en-US-u-nu-latn", {
141
+ ...this.#s,
142
+ useGrouping: !1
143
+ }).format(e));
144
+ }
145
+ #l(e) {
146
+ return new Intl.NumberFormat(this.#t, this.#s).format(e);
147
+ }
148
+ get #u() {
149
+ let t = this.#e;
150
+ if (!t) return "";
151
+ let n = this.#n;
152
+ if (n === null || !this.#o()) return t;
153
+ let r = this.unit ?? this.#r(n, this.display), i = c.indexOf(r), a = n / (this.display === "binary" ? 1024 : 1e3) ** i;
154
+ try {
155
+ let e = this.#c(a);
156
+ return `${this.#l(e)} ${this.#i(r, e)}`;
157
+ } catch (n) {
158
+ let r = n instanceof Error ? n.message : String(n);
159
+ return e.warn(`format-bytes: ${r}`), t;
160
+ }
161
+ }
162
+ render() {
163
+ return o`<data internal-host value="${this.#e}">${this.#u}<slot @slotchange="${this.#d}" hidden></slot></data>`;
164
+ }
165
+ #d() {
166
+ this.requestUpdate();
167
+ }
168
+ };
169
+ r([s({ type: Number })], g.prototype, "value", void 0), r([s({ type: String })], g.prototype, "display", void 0), r([s({ type: String })], g.prototype, "unit", void 0), r([s({
170
+ type: String,
171
+ attribute: "unit-display"
172
+ })], g.prototype, "unitDisplay", void 0), r([s({ type: String })], g.prototype, "locale", void 0), r([s({
173
+ type: Number,
174
+ attribute: "minimum-fraction-digits"
175
+ })], g.prototype, "minimumFractionDigits", void 0), r([s({
176
+ type: Number,
177
+ attribute: "maximum-fraction-digits"
178
+ })], g.prototype, "maximumFractionDigits", void 0), g = r([t()], g);
179
+ //#endregion
180
+ export { g as FormatBytes };
181
+
182
+ //# sourceMappingURL=format-bytes2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-bytes2.js","names":["#rawValue","#resolvedLocale","#parsedValue","#warnInvalidOption","#numberFormatOptions","#formattedBytes","#hasValidConfiguration","#resolveAutoUnit","#roundNumber","#formatNumber","#formatLabel","#onSlotChange"],"sources":["../../src/format-bytes/format-bytes.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 { LogService, typeSSR, useStyles } from '@nvidia-elements/core/internal';\nimport styles from './format-bytes.css?inline';\n\nexport type FormatBytesDisplay = 'decimal' | 'binary';\nexport type FormatBytesUnit = 'b' | 'kb' | 'mb' | 'gb' | 'tb' | 'pb';\nexport type FormatBytesUnitDisplay = 'short' | 'long';\n\ninterface UnitLabels {\n short: string;\n singular: string;\n plural: string;\n}\n\nconst UNITS: readonly FormatBytesUnit[] = ['b', 'kb', 'mb', 'gb', 'tb', 'pb'];\nconst DISPLAYS: readonly FormatBytesDisplay[] = ['decimal', 'binary'];\nconst UNIT_DISPLAYS: readonly FormatBytesUnitDisplay[] = ['short', 'long'];\n\nconst DECIMAL_LABELS: Record<FormatBytesUnit, UnitLabels> = {\n b: { short: 'b', singular: 'byte', plural: 'bytes' },\n kb: { short: 'kb', singular: 'kilobyte', plural: 'kilobytes' },\n mb: { short: 'mb', singular: 'megabyte', plural: 'megabytes' },\n gb: { short: 'gb', singular: 'gigabyte', plural: 'gigabytes' },\n tb: { short: 'tb', singular: 'terabyte', plural: 'terabytes' },\n pb: { short: 'pb', singular: 'petabyte', plural: 'petabytes' }\n};\n\nconst BINARY_LABELS: Record<FormatBytesUnit, UnitLabels> = {\n b: { short: 'b', singular: 'byte', plural: 'bytes' },\n kb: { short: 'kib', singular: 'kibibyte', plural: 'kibibytes' },\n mb: { short: 'mib', singular: 'mebibyte', plural: 'mebibytes' },\n gb: { short: 'gib', singular: 'gibibyte', plural: 'gibibytes' },\n tb: { short: 'tib', singular: 'tebibyte', plural: 'tebibytes' },\n pb: { short: 'pib', singular: 'pebibyte', plural: 'pebibytes' }\n};\n\nfunction isDisplay(value: unknown): value is FormatBytesDisplay {\n return DISPLAYS.some(display => display === value);\n}\n\nfunction isUnit(value: unknown): value is FormatBytesUnit {\n return UNITS.some(unit => unit === value);\n}\n\nfunction isUnitDisplay(value: unknown): value is FormatBytesUnitDisplay {\n return UNIT_DISPLAYS.some(unitDisplay => unitDisplay === value);\n}\n\n/**\n * @element nve-format-bytes\n * @description Formats a byte count as localized, human-readable decimal or binary units.\n * @documentation https://nvidia.github.io/elements/docs/elements/format-bytes/\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/format-bytes\n * @slot - Numeric byte count to format (such as 1048576). Serves as fallback before hydration.\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data\n */\n@typeSSR()\nexport class FormatBytes extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-format-bytes',\n version: '0.0.0'\n };\n\n /**\n * Optional byte count for values supplied by JavaScript or bound data.\n * By default, the component formats the element's text content, which also serves as the SSR fallback.\n * When both are present, this property takes precedence.\n */\n @property({ type: Number }) value?: number;\n\n /**\n * Unit system: 'decimal' uses powers of 1000 and 'binary' uses powers of 1024.\n */\n @property({ type: String }) display: FormatBytesDisplay = 'decimal';\n\n /**\n * Optional unit magnitude. When omitted, the component selects a unit from the byte count.\n */\n @property({ type: String }) unit?: FormatBytesUnit;\n\n /**\n * Unit label length: 'short' renders labels such as 'mb'; 'long' renders labels such as 'megabytes'.\n */\n @property({ type: String, attribute: 'unit-display' }) unitDisplay: FormatBytesUnitDisplay = 'short';\n\n /**\n * Language tag (such as en-US or de-DE) used to format the number.\n * Defaults to document.documentElement.lang or the runtime default.\n */\n @property({ type: String }) locale?: string;\n\n /**\n * Pad fraction output to at least this many digits.\n */\n @property({ type: Number, attribute: 'minimum-fraction-digits' }) minimumFractionDigits?: number;\n\n /**\n * Round fraction output to at most this many digits. Defaults to two effective digits after the decimal point.\n */\n @property({ type: Number, attribute: 'maximum-fraction-digits' }) maximumFractionDigits?: number;\n\n get #rawValue(): string {\n const value = Number.isNaN(this.value) ? (this.getAttribute('value') ?? this.value) : this.value;\n return String(value ?? this.textContent?.trim() ?? '');\n }\n\n get #resolvedLocale(): string | undefined {\n return this.locale ?? (globalThis.document?.documentElement?.lang || undefined);\n }\n\n get #parsedValue(): number | null {\n const rawValue = this.#rawValue;\n if (!rawValue) return null;\n\n const numericValue = Number(rawValue);\n if (Number.isFinite(numericValue)) return numericValue;\n\n LogService.warn(`format-bytes: invalid numeric value \"${rawValue}\"`);\n return null;\n }\n\n #resolveAutoUnit(value: number, display: FormatBytesDisplay): FormatBytesUnit {\n const base = display === 'binary' ? 1024 : 1000;\n const absoluteValue = Math.abs(value);\n\n for (let index = UNITS.length - 1; index > 0; index--) {\n const unit = UNITS[index];\n if (unit && absoluteValue >= base ** index) return unit;\n }\n\n return 'b';\n }\n\n #formatLabel(unit: FormatBytesUnit, convertedValue: number): string {\n const labels = this.display === 'binary' ? BINARY_LABELS[unit] : DECIMAL_LABELS[unit];\n if (this.unitDisplay === 'short') return labels.short;\n return Math.abs(convertedValue) === 1 ? labels.singular : labels.plural;\n }\n\n #warnInvalidOption(name: string, value: unknown): void {\n LogService.warn(`format-bytes: invalid ${name} value \"${String(value)}\"`);\n }\n\n #hasValidConfiguration(): boolean {\n if (!isDisplay(this.display)) {\n this.#warnInvalidOption('display', this.display);\n return false;\n }\n if (!isUnitDisplay(this.unitDisplay)) {\n this.#warnInvalidOption('unit-display', this.unitDisplay);\n return false;\n }\n if (this.unit !== undefined && !isUnit(this.unit)) {\n this.#warnInvalidOption('unit', this.unit);\n return false;\n }\n return true;\n }\n\n get #numberFormatOptions(): Intl.NumberFormatOptions {\n const effectiveMaximumFractionDigits = this.maximumFractionDigits ?? Math.max(this.minimumFractionDigits ?? 0, 2);\n return {\n minimumFractionDigits: this.minimumFractionDigits,\n maximumFractionDigits: effectiveMaximumFractionDigits\n };\n }\n\n #roundNumber(value: number): number {\n return Number(\n new Intl.NumberFormat('en-US-u-nu-latn', {\n ...this.#numberFormatOptions,\n useGrouping: false\n }).format(value)\n );\n }\n\n #formatNumber(value: number): string {\n return new Intl.NumberFormat(this.#resolvedLocale, this.#numberFormatOptions).format(value);\n }\n\n get #formattedBytes(): string {\n const rawValue = this.#rawValue;\n if (!rawValue) return '';\n\n const numericValue = this.#parsedValue;\n if (numericValue === null) return rawValue;\n if (!this.#hasValidConfiguration()) return rawValue;\n\n const resolvedUnit = this.unit ?? this.#resolveAutoUnit(numericValue, this.display);\n const unitIndex = UNITS.indexOf(resolvedUnit);\n const base = this.display === 'binary' ? 1024 : 1000;\n const convertedValue = numericValue / base ** unitIndex;\n\n try {\n const roundedValue = this.#roundNumber(convertedValue);\n return `${this.#formatNumber(roundedValue)} ${this.#formatLabel(resolvedUnit, roundedValue)}`;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n LogService.warn(`format-bytes: ${message}`);\n return rawValue;\n }\n }\n\n render() {\n return html`<data internal-host value=${this.#rawValue}>${this.#formattedBytes}<slot @slotchange=${this.#onSlotChange} hidden></slot></data>`;\n }\n\n #onSlotChange() {\n this.requestUpdate();\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './format-bytes.js';
@@ -0,0 +1,2 @@
1
+ import { FormatBytes as e } from "./format-bytes2.js";
2
+ export { e as FormatBytes };
@@ -13,7 +13,7 @@ var c = class extends a {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-format-datetime",
16
- version: "2.2.3"
16
+ version: "2.3.0"
17
17
  };
18
18
  }
19
19
  get #e() {
@@ -29,7 +29,7 @@ var c = [
29
29
  static {
30
30
  this.metadata = {
31
31
  tag: "nve-format-number",
32
- version: "2.2.3"
32
+ version: "2.3.0"
33
33
  };
34
34
  }
35
35
  get #e() {
@@ -53,7 +53,7 @@ var c = {
53
53
  static {
54
54
  this.metadata = {
55
55
  tag: "nve-format-relative-time",
56
- version: "2.2.3"
56
+ version: "2.3.0"
57
57
  };
58
58
  }
59
59
  #e;
@@ -48,7 +48,7 @@ var C = class extends v {
48
48
  static {
49
49
  this.metadata = {
50
50
  tag: "nve-control",
51
- version: "2.2.3"
51
+ version: "2.3.0"
52
52
  };
53
53
  }
54
54
  render() {
@@ -24,7 +24,7 @@ var m = class extends d {
24
24
  static {
25
25
  this.metadata = {
26
26
  tag: "nve-control-group",
27
- version: "2.2.3"
27
+ version: "2.3.0"
28
28
  };
29
29
  }
30
30
  render() {
@@ -23,7 +23,7 @@ var l = {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-control-message",
26
- version: "2.2.3"
26
+ version: "2.3.0"
27
27
  };
28
28
  }
29
29
  static {
@@ -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 <div nve-layout=\"row gap:sm\">\n <nve-gauge value=\"50\">50%</nve-gauge>\n <nve-gauge status=\"accent\" value=\"66\">66%</nve-gauge>\n </div>\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&deg;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&deg;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"}
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "id": "gauge",
7
7
  "name": "Default",
8
- "template": "<div nve-layout=\"row gap:sm\">\n <nve-gauge value=\"50\">50%</nve-gauge>\n <nve-gauge status=\"accent\" value=\"66\">66%</nve-gauge>\n</div>\n",
8
+ "template": "<nve-gauge status=\"accent\" value=\"66\">66%</nve-gauge>\n",
9
9
  "summary": "270-degree gauges for displaying system resource usage.",
10
10
  "description": "",
11
11
  "composition": false,
@@ -52,7 +52,7 @@ var l = 200, u = 100 / 110.93, d = {
52
52
  static {
53
53
  this.metadata = {
54
54
  tag: "nve-gauge",
55
- version: "2.2.3"
55
+ version: "2.3.0"
56
56
  };
57
57
  }
58
58
  #e;
@@ -10,7 +10,7 @@ var a = class extends r {
10
10
  static {
11
11
  this.metadata = {
12
12
  tag: "nve-grid-cell",
13
- version: "2.2.3"
13
+ version: "2.3.0"
14
14
  };
15
15
  }
16
16
  render() {
@@ -13,7 +13,7 @@ var c = class r extends a {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-grid-column",
16
- version: "2.2.3"
16
+ version: "2.3.0"
17
17
  };
18
18
  }
19
19
  get #e() {
@@ -15,7 +15,7 @@ var s = class extends a {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-grid-footer",
18
- version: "2.2.3"
18
+ version: "2.3.0"
19
19
  };
20
20
  }
21
21
  static {
@@ -23,7 +23,7 @@ var y = class extends g {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-grid",
26
- version: "2.2.3",
26
+ version: "2.3.0",
27
27
  children: [
28
28
  d.metadata.tag,
29
29
  f.metadata.tag,
@@ -19,7 +19,7 @@ var m = class extends d {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-grid-header",
22
- version: "2.2.3",
22
+ version: "2.3.0",
23
23
  children: [c.metadata.tag]
24
24
  };
25
25
  }
@@ -10,7 +10,7 @@ var a = class extends r {
10
10
  static {
11
11
  this.metadata = {
12
12
  tag: "nve-grid-placeholder",
13
- version: "2.2.3"
13
+ version: "2.3.0"
14
14
  };
15
15
  }
16
16
  render() {
@@ -15,7 +15,7 @@ var u = class extends s {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-grid-row",
18
- version: "2.2.3",
18
+ version: "2.3.0",
19
19
  children: [a.metadata.tag]
20
20
  };
21
21
  }
@@ -16,7 +16,7 @@ var f = class e extends o {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-icon",
19
- version: "2.2.3"
19
+ version: "2.3.0"
20
20
  };
21
21
  }
22
22
  static {
@@ -94,7 +94,7 @@ a([l({
94
94
  })], f.prototype, "name", void 0), a([d()], f.prototype, "svg", void 0);
95
95
  function p(t) {
96
96
  if (typeof globalThis.customElements?.get == "function") {
97
- let n = e(t.metadata.version), i = e("2.2.3");
97
+ let n = e(t.metadata.version), i = e("2.3.0");
98
98
  n.minor <= i.minor && n.major <= i.major && (t._icons = {
99
99
  ...t._icons,
100
100
  ...r
@@ -15,7 +15,7 @@ var l = class extends a {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-icon-button",
18
- version: "2.2.3"
18
+ version: "2.3.0"
19
19
  };
20
20
  }
21
21
  static {
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { I18nService as e } from "./internal/services/i18n.service.js";
2
2
  import { getThemeTokens as t } from "./internal/utils/dom.js";
3
3
  import { statusIcons as n } from "./internal/types/index.js";
4
4
  //#region src/index.ts
5
- var r = "2.2.3", i = "@nvidia-elements";
5
+ var r = "2.3.0", i = "@nvidia-elements";
6
6
  //#endregion
7
7
  export { e as I18nService, i as SCOPE, r as VERSION, t as getThemeTokens, n as statusIcons };
8
8
 
@@ -11,7 +11,7 @@ var a = class extends n {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-input-group",
14
- version: "2.2.3"
14
+ version: "2.3.0"
15
15
  };
16
16
  }
17
17
  async connectedCallback() {