@nvidia-elements/core 2.7.1 → 2.7.3

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 (132) hide show
  1. package/CHANGELOG.md +25 -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/bundles/index.d.ts +2 -1
  10. package/dist/bundles/index.js +3 -3
  11. package/dist/button/button2.js +1 -1
  12. package/dist/button-group/button-group2.js +1 -1
  13. package/dist/card/card2.js +4 -4
  14. package/dist/chat-message/chat-message2.js +1 -1
  15. package/dist/checkbox/checkbox-group2.js +1 -1
  16. package/dist/checkbox/checkbox2.js +1 -1
  17. package/dist/color/color2.js +1 -1
  18. package/dist/combobox/combobox2.js +1 -1
  19. package/dist/copy-button/copy-button2.js +1 -1
  20. package/dist/custom-elements-jsx.d.ts +3 -2
  21. package/dist/custom-elements-vue.d.ts +3 -2
  22. package/dist/custom-elements.json +29 -6
  23. package/dist/data.html.json +2 -2
  24. package/dist/data.snippets.json +42 -42
  25. package/dist/date/date2.js +1 -1
  26. package/dist/datetime/datetime2.js +1 -1
  27. package/dist/dialog/dialog-footer2.js +1 -1
  28. package/dist/dialog/dialog-header2.js +1 -1
  29. package/dist/dialog/dialog2.js +1 -1
  30. package/dist/divider/divider2.js +1 -1
  31. package/dist/dot/dot2.js +1 -1
  32. package/dist/drawer/drawer-content2.js +1 -1
  33. package/dist/drawer/drawer-footer2.js +1 -1
  34. package/dist/drawer/drawer-header2.js +1 -1
  35. package/dist/drawer/drawer2.js +1 -1
  36. package/dist/dropdown/dropdown-footer2.js +1 -1
  37. package/dist/dropdown/dropdown-header2.js +1 -1
  38. package/dist/dropdown/dropdown2.js +1 -1
  39. package/dist/dropdown-group/dropdown-group.js +1 -1
  40. package/dist/dropzone/dropzone.js +1 -1
  41. package/dist/dropzone/dropzone.js.map +1 -1
  42. package/dist/dropzone/dropzone2.js +2 -2
  43. package/dist/dropzone/dropzone2.js.map +1 -1
  44. package/dist/file/file2.js +1 -1
  45. package/dist/format-bytes/format-bytes.d.ts +1 -1
  46. package/dist/format-bytes/format-bytes2.js +13 -13
  47. package/dist/format-bytes/format-bytes2.js.map +1 -1
  48. package/dist/format-datetime/format-datetime2.js +1 -1
  49. package/dist/format-number/format-number2.js +1 -1
  50. package/dist/format-relative-time/format-relative-time2.js +1 -1
  51. package/dist/format-truncate/format-truncate2.js +1 -1
  52. package/dist/forms/control/control2.js +1 -1
  53. package/dist/forms/control-group/control-group2.js +1 -1
  54. package/dist/forms/control-message/control-message.d.ts +1 -0
  55. package/dist/forms/control-message/control-message2.js +1 -1
  56. package/dist/forms/control-message/control-message2.js.map +1 -1
  57. package/dist/gauge/gauge2.js +1 -1
  58. package/dist/grid/cell/cell2.js +1 -1
  59. package/dist/grid/column/column2.js +1 -1
  60. package/dist/grid/footer/footer2.js +1 -1
  61. package/dist/grid/grid2.js +1 -1
  62. package/dist/grid/header/header2.js +1 -1
  63. package/dist/grid/placeholder/placeholder2.js +1 -1
  64. package/dist/grid/row/row2.js +1 -1
  65. package/dist/icon/icon2.js +2 -2
  66. package/dist/icon/icons/pointer-solid.js +1 -1
  67. package/dist/icon/icons/split-horizontal.js +1 -1
  68. package/dist/icon/icons/split-none.js +1 -1
  69. package/dist/icon/icons/split-vertical.js +1 -1
  70. package/dist/icon/icons/stop.js +1 -1
  71. package/dist/icon/server.js +5 -5
  72. package/dist/icon/server.js.map +1 -1
  73. package/dist/icon-button/icon-button2.js +1 -1
  74. package/dist/index.js +1 -1
  75. package/dist/input/input-group2.js +1 -1
  76. package/dist/input/input2.js +1 -1
  77. package/dist/internal/controllers/keynav-list.controller.js +37 -33
  78. package/dist/internal/controllers/keynav-list.controller.js.map +1 -1
  79. package/dist/internal/services/global.service.js +1 -1
  80. package/dist/logo/logo2.js +1 -1
  81. package/dist/menu/menu-item2.js +1 -1
  82. package/dist/menu/menu2.js +1 -1
  83. package/dist/month/month2.js +1 -1
  84. package/dist/notification/notification-group2.js +1 -1
  85. package/dist/notification/notification2.js +1 -1
  86. package/dist/page/page-panel/page-panel-content2.js +1 -1
  87. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  88. package/dist/page/page-panel/page-panel-header2.js +1 -1
  89. package/dist/page/page-panel/page-panel2.js +1 -1
  90. package/dist/page/page2.js +1 -1
  91. package/dist/page-header/page-header2.js +1 -1
  92. package/dist/page-loader/page-loader2.js +1 -1
  93. package/dist/pagination/pagination2.js +1 -1
  94. package/dist/panel/panel2.js +4 -4
  95. package/dist/password/password2.js +1 -1
  96. package/dist/preferences-input/preferences-input2.js +1 -1
  97. package/dist/progress-bar/progress-bar2.js +1 -1
  98. package/dist/progress-ring/progress-ring.js +1 -1
  99. package/dist/progress-ring/progress-ring.js.map +1 -1
  100. package/dist/progress-ring/progress-ring2.js +2 -2
  101. package/dist/progress-ring/progress-ring2.js.map +1 -1
  102. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  103. package/dist/pulse/pulse2.js +1 -1
  104. package/dist/radio/radio-group2.js +1 -1
  105. package/dist/radio/radio2.js +1 -1
  106. package/dist/range/range2.js +1 -1
  107. package/dist/resize-handle/resize-handle2.js +1 -1
  108. package/dist/search/search2.js +1 -1
  109. package/dist/select/select2.js +1 -1
  110. package/dist/skeleton/skeleton2.js +1 -1
  111. package/dist/sort-button/sort-button2.js +1 -1
  112. package/dist/sparkline/sparkline2.js +1 -1
  113. package/dist/star-rating/star-rating2.js +1 -1
  114. package/dist/steps/steps2.js +2 -2
  115. package/dist/switch/switch-group2.js +1 -1
  116. package/dist/switch/switch2.js +1 -1
  117. package/dist/tabs/tabs-group2.js +1 -1
  118. package/dist/tabs/tabs2.js +2 -2
  119. package/dist/tag/tag2.js +1 -1
  120. package/dist/textarea/textarea2.js +1 -1
  121. package/dist/time/time2.js +1 -1
  122. package/dist/toast/toast2.js +1 -1
  123. package/dist/toggletip/toggletip-footer2.js +1 -1
  124. package/dist/toggletip/toggletip-header2.js +1 -1
  125. package/dist/toggletip/toggletip2.js +1 -1
  126. package/dist/toolbar/toolbar2.js +1 -1
  127. package/dist/tooltip/tooltip2.js +1 -1
  128. package/dist/tree/tree-node2.js +16 -12
  129. package/dist/tree/tree-node2.js.map +1 -1
  130. package/dist/tree/tree2.js +1 -1
  131. package/dist/week/week2.js +1 -1
  132. package/package.json +2 -2
@@ -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.7.1"
18
+ version: "2.7.3"
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.7.1", i = "@nvidia-elements";
5
+ var r = "2.7.3", 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.7.1"
14
+ version: "2.7.3"
15
15
  };
16
16
  }
17
17
  async connectedCallback() {
@@ -14,7 +14,7 @@ var a = r, o = class extends n {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-input",
17
- version: "2.7.1"
17
+ version: "2.7.3"
18
18
  };
19
19
  }
20
20
  };
@@ -1,10 +1,10 @@
1
- import { focusElement as e, initializeKeyListItems as t, setActiveKeyListItem as n } from "../utils/focus.js";
2
- import { KeynavCode as r, validKeyNavigationCode as i } from "../utils/dom.js";
1
+ import { focusElement as e, initializeKeyListItems as t, isFocusable as n, setActiveKeyListItem as r } from "../utils/focus.js";
2
+ import { KeynavCode as i, validKeyNavigationCode as a } from "../utils/dom.js";
3
3
  //#region src/internal/controllers/keynav-list.controller.ts
4
- function a() {
5
- return (e) => e.addInitializer((e) => new o(e));
4
+ function o() {
5
+ return (e) => e.addInitializer((e) => new s(e));
6
6
  }
7
- var o = class {
7
+ var s = class {
8
8
  get #e() {
9
9
  return {
10
10
  layout: "horizontal",
@@ -23,61 +23,65 @@ var o = class {
23
23
  return this.host.hasAttribute("nve-keynav-disabled");
24
24
  }
25
25
  async hostConnected() {
26
- await this.host.updateComplete, this.host.isConnected && (this.#n(), this.host.addEventListener("pointerup", this.#s), this.host.addEventListener("keydown", this.#c));
26
+ await this.host.updateComplete, this.host.isConnected && (this.#n(), this.host.addEventListener("pointerup", this.#c), this.host.addEventListener("keydown", this.#l));
27
27
  }
28
28
  hostDisconnected() {
29
- this.host.removeEventListener("pointerup", this.#s), this.host.removeEventListener("keydown", this.#c);
29
+ this.host.removeEventListener("pointerup", this.#c), this.host.removeEventListener("keydown", this.#l);
30
30
  }
31
31
  #n() {
32
- let { manageFocus: e, manageTabindex: r, items: i, initialItem: a } = this.#e;
33
- e && r && !this.#t && (t(i), a && i.includes(a) && n(i, a));
32
+ let { manageFocus: e, manageTabindex: n, items: i, initialItem: a } = this.#e;
33
+ e && n && !this.#t && (t(i), a && i.includes(a) && r(i, a));
34
34
  }
35
35
  #r(e) {
36
- let t = this.#a(e, this.#e.items);
37
- t && this.#o(e, t);
36
+ let t = this.#o(e, this.#e.items);
37
+ t && this.#s(e, t);
38
38
  }
39
39
  #i(e) {
40
- if (i(e) && !this.#t) {
40
+ if (a(e) && !this.#t) {
41
41
  let { loop: t, layout: n, dir: r, items: i } = this.#e, a = this.#a(e, i);
42
42
  if (a) {
43
- let { next: o, previous: s } = u(a, Array.from(i), {
43
+ let { next: o, previous: s } = d(a, Array.from(i), {
44
44
  loop: t,
45
45
  layout: n,
46
46
  dir: r,
47
47
  code: e.code
48
48
  });
49
- o !== s && this.#o(e, i[o], i[s]);
49
+ o !== s && this.#s(e, i[o], i[s]);
50
50
  }
51
51
  }
52
52
  }
53
53
  #a(e, t) {
54
54
  let n = e.composedPath()[0];
55
- return t.find((e) => e === n) ? n : null;
55
+ return n instanceof HTMLElement && t.includes(n) ? n : null;
56
56
  }
57
- #o(t, r, i) {
57
+ #o(e, t) {
58
+ let r = e.composedPath(), i = r.findIndex((e) => e instanceof HTMLElement && t.includes(e)), a = r[i];
59
+ return a instanceof HTMLElement ? r.slice(0, i).some((e) => e instanceof Element && n(e)) ? null : a : null;
60
+ }
61
+ #s(t, n, i) {
58
62
  let { manageFocus: a, manageTabindex: o, items: s } = this.#e;
59
- a && (o && n(s, r), e(r), t.preventDefault());
63
+ a && (o && r(s, n), e(n), t.preventDefault());
60
64
  let c = {
61
- activeItem: r,
65
+ activeItem: n,
62
66
  previousItem: i,
63
67
  code: t instanceof KeyboardEvent ? t.code : null,
64
68
  metaKey: t.ctrlKey || t.metaKey,
65
69
  items: s
66
70
  };
67
- r.dispatchEvent(new CustomEvent("nve-key-change", {
71
+ n.dispatchEvent(new CustomEvent("nve-key-change", {
68
72
  bubbles: !0,
69
73
  composed: !0,
70
74
  detail: c
71
75
  }));
72
76
  }
73
- #s = (e) => this.#r(e);
74
- #c = (e) => this.#i(e);
77
+ #c = (e) => this.#r(e);
78
+ #l = (e) => this.#i(e);
75
79
  };
76
- function s(e) {
77
- let { code: t, layout: n, dir: i } = e, a = i === "rtl" ? r.ArrowRight : r.ArrowLeft, o = i === "rtl" ? r.ArrowLeft : r.ArrowRight;
80
+ function c(e) {
81
+ let { code: t, layout: n, dir: r } = e, a = r === "rtl" ? i.ArrowRight : i.ArrowLeft, o = r === "rtl" ? i.ArrowLeft : i.ArrowRight;
78
82
  if (n !== "horizontal") {
79
- if (t === r.ArrowUp) return "backward";
80
- if (t === r.ArrowDown) return "forward";
83
+ if (t === i.ArrowUp) return "backward";
84
+ if (t === i.ArrowDown) return "forward";
81
85
  }
82
86
  if (n !== "vertical") {
83
87
  if (t === a) return "backward";
@@ -85,24 +89,24 @@ function s(e) {
85
89
  }
86
90
  return null;
87
91
  }
88
- function c(e) {
89
- return e === r.End ? "end" : e === r.Home ? "home" : e === r.PageUp ? "pageup" : e === r.PageDown ? "pagedown" : null;
92
+ function l(e) {
93
+ return e === i.End ? "end" : e === i.Home ? "home" : e === i.PageUp ? "pageup" : e === i.PageDown ? "pagedown" : null;
90
94
  }
91
- function l(e, t, n) {
95
+ function u(e, t, n) {
92
96
  let { limit: r, loop: i } = n, a = e + t;
93
97
  return a >= 0 && a <= r ? a : i ? t < 0 ? r : 0 : e;
94
98
  }
95
- function u(e, t, n) {
99
+ function d(e, t, n) {
96
100
  let r = t.indexOf(e), i = r, a = t.length - 1;
97
- switch (s(n) ?? c(n.code)) {
101
+ switch (c(n) ?? l(n.code)) {
98
102
  case "backward":
99
- r = l(r, -1, {
103
+ r = u(r, -1, {
100
104
  limit: a,
101
105
  loop: n.loop
102
106
  });
103
107
  break;
104
108
  case "forward":
105
- r = l(r, 1, {
109
+ r = u(r, 1, {
106
110
  limit: a,
107
111
  loop: n.loop
108
112
  });
@@ -127,6 +131,6 @@ function u(e, t, n) {
127
131
  };
128
132
  }
129
133
  //#endregion
130
- export { o as KeyNavigationListController, u as getNextKeyListItem, a as keyNavigationList };
134
+ export { s as KeyNavigationListController, d as getNextKeyListItem, o as keyNavigationList };
131
135
 
132
136
  //# sourceMappingURL=keynav-list.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keynav-list.controller.js","names":["#config","#keynavDisabled","#initializeTabIndex","#onPointerUp","#onKeyDown","#getActiveItem","#setActiveItem","#clickItem","#focusItem"],"sources":["../../../src/internal/controllers/keynav-list.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { focusElement, initializeKeyListItems, setActiveKeyListItem } from '../utils/focus.js';\nimport { KeynavCode, validKeyNavigationCode } from '../utils/dom.js';\n\nexport interface KeynavListConfig {\n items: NodeListOf<HTMLElement> | HTMLElement[];\n initialItem?: HTMLElement;\n layout?: 'both' | 'horizontal' | 'vertical';\n manageFocus?: boolean;\n manageTabindex?: boolean;\n loop?: boolean;\n dir?: string | null;\n}\n\nexport interface KeynavListElement {\n keynavListConfig: KeynavListConfig;\n}\n\n/** https://webaim.org/techniques/keyboard/ */\nexport function keyNavigationList<T extends ReactiveElement & KeynavListElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationListController(instance));\n}\n\nexport class KeyNavigationListController<T extends ReactiveElement & KeynavListElement> implements ReactiveController {\n get #config(): KeynavListConfig & { items: HTMLElement[] } {\n return {\n layout: 'horizontal',\n manageFocus: true,\n manageTabindex: true,\n loop: false,\n dir: this.host.getAttribute('rtl'),\n ...this.host.keynavListConfig,\n items: Array.from(this.host.keynavListConfig.items).filter(\n (i: HTMLElement & { disabled?: boolean }) => !i.disabled\n )\n };\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n /** @private attr nve-keynav-disabled is an internal API for advanced use cases only */\n get #keynavDisabled() {\n return this.host.hasAttribute('nve-keynav-disabled');\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n this.#initializeTabIndex();\n this.host.addEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('keydown', this.#onKeyDown);\n }\n\n hostDisconnected() {\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.removeEventListener('keydown', this.#onKeyDown);\n }\n\n #initializeTabIndex() {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (manageFocus && manageTabindex && !this.#keynavDisabled) {\n initializeKeyListItems(items);\n if (initialItem && items.includes(initialItem)) {\n setActiveKeyListItem(items, initialItem);\n }\n }\n }\n\n #clickItem(e: PointerEvent) {\n const item = this.#getActiveItem(e, this.#config.items);\n if (item) {\n this.#setActiveItem(e, item);\n }\n }\n\n #focusItem(e: KeyboardEvent) {\n if (validKeyNavigationCode(e) && !this.#keynavDisabled) {\n const { loop, layout, dir, items } = this.#config;\n const activeItem = this.#getActiveItem(e, items);\n if (activeItem) {\n const { next, previous } = getNextKeyListItem(activeItem, Array.from(items), {\n loop,\n layout,\n dir,\n code: e.code as KeynavCode\n });\n\n if (next !== previous) {\n this.#setActiveItem(e, items[next]!, items[previous]);\n }\n }\n }\n }\n\n #getActiveItem(e: Event, items: HTMLElement[]) {\n const focusedElement = e.composedPath()[0] as HTMLElement;\n return items.find(i => i === focusedElement) ? focusedElement : null;\n }\n\n #setActiveItem(e: KeyboardEvent | PointerEvent, activeItem: HTMLElement, previousItem?: HTMLElement) {\n const { manageFocus, manageTabindex, items } = this.#config;\n if (manageFocus) {\n if (manageTabindex) {\n setActiveKeyListItem(items, activeItem);\n }\n\n focusElement(activeItem);\n e.preventDefault();\n }\n\n const detail = {\n activeItem,\n previousItem,\n code: e instanceof KeyboardEvent ? e.code : null,\n metaKey: e.ctrlKey || e.metaKey,\n items\n };\n activeItem.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onPointerUp = (e: PointerEvent) => this.#clickItem(e);\n\n #onKeyDown = (e: KeyboardEvent) => this.#focusItem(e);\n}\n\ninterface KeyListConfig {\n code: KeynavCode;\n loop?: boolean;\n layout?: 'horizontal' | 'vertical' | 'both';\n dir: string | null | undefined;\n}\n\nfunction resolveArrowDirection(config: KeyListConfig): 'backward' | 'forward' | null {\n const { code, layout, dir } = config;\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (layout !== 'horizontal') {\n if (code === KeynavCode.ArrowUp) return 'backward';\n if (code === KeynavCode.ArrowDown) return 'forward';\n }\n\n if (layout !== 'vertical') {\n if (code === start) return 'backward';\n if (code === end) return 'forward';\n }\n\n return null;\n}\n\nfunction resolveSpecialKey(code: KeynavCode): 'home' | 'end' | 'pageup' | 'pagedown' | null {\n if (code === KeynavCode.End) return 'end';\n if (code === KeynavCode.Home) return 'home';\n if (code === KeynavCode.PageUp) return 'pageup';\n if (code === KeynavCode.PageDown) return 'pagedown';\n return null;\n}\n\nfunction navigateWithLoop(current: number, step: number, options: { limit: number; loop: boolean | undefined }) {\n const { limit, loop } = options;\n const next = current + step;\n if (next >= 0 && next <= limit) return next;\n return loop ? (step < 0 ? limit : 0) : current;\n}\n\nexport function getNextKeyListItem(item: HTMLElement, items: HTMLElement[], config: KeyListConfig) {\n let next = items.indexOf(item);\n const previous = next;\n const itemCount = items.length - 1;\n const direction = resolveArrowDirection(config);\n\n switch (direction ?? resolveSpecialKey(config.code)) {\n case 'backward':\n next = navigateWithLoop(next, -1, { limit: itemCount, loop: config.loop });\n break;\n case 'forward':\n next = navigateWithLoop(next, 1, { limit: itemCount, loop: config.loop });\n break;\n case 'end':\n next = itemCount;\n break;\n case 'home':\n next = 0;\n break;\n case 'pageup':\n next = Math.max(0, next - 4);\n break;\n case 'pagedown':\n next = Math.min(itemCount, next + 4);\n break;\n case null:\n break;\n }\n\n return { next, previous };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"keynav-list.controller.js","names":["#config","#keynavDisabled","#initializeTabIndex","#onPointerUp","#onKeyDown","#getPointerActiveItem","#setActiveItem","#getKeyboardActiveItem","#clickItem","#focusItem"],"sources":["../../../src/internal/controllers/keynav-list.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { focusElement, initializeKeyListItems, isFocusable, setActiveKeyListItem } from '../utils/focus.js';\nimport { KeynavCode, validKeyNavigationCode } from '../utils/dom.js';\n\nexport interface KeynavListConfig {\n items: NodeListOf<HTMLElement> | HTMLElement[];\n initialItem?: HTMLElement;\n layout?: 'both' | 'horizontal' | 'vertical';\n manageFocus?: boolean;\n manageTabindex?: boolean;\n loop?: boolean;\n dir?: string | null;\n}\n\nexport interface KeynavListElement {\n keynavListConfig: KeynavListConfig;\n}\n\n/** https://webaim.org/techniques/keyboard/ */\nexport function keyNavigationList<T extends ReactiveElement & KeynavListElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationListController(instance));\n}\n\nexport class KeyNavigationListController<T extends ReactiveElement & KeynavListElement> implements ReactiveController {\n get #config(): KeynavListConfig & { items: HTMLElement[] } {\n return {\n layout: 'horizontal',\n manageFocus: true,\n manageTabindex: true,\n loop: false,\n dir: this.host.getAttribute('rtl'),\n ...this.host.keynavListConfig,\n items: Array.from(this.host.keynavListConfig.items).filter(\n (i: HTMLElement & { disabled?: boolean }) => !i.disabled\n )\n };\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n /** @private attr nve-keynav-disabled is an internal API for advanced use cases only */\n get #keynavDisabled() {\n return this.host.hasAttribute('nve-keynav-disabled');\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n this.#initializeTabIndex();\n this.host.addEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('keydown', this.#onKeyDown);\n }\n\n hostDisconnected() {\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.removeEventListener('keydown', this.#onKeyDown);\n }\n\n #initializeTabIndex() {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (manageFocus && manageTabindex && !this.#keynavDisabled) {\n initializeKeyListItems(items);\n if (initialItem && items.includes(initialItem)) {\n setActiveKeyListItem(items, initialItem);\n }\n }\n }\n\n #clickItem(e: PointerEvent) {\n const item = this.#getPointerActiveItem(e, this.#config.items);\n if (item) {\n this.#setActiveItem(e, item);\n }\n }\n\n #focusItem(e: KeyboardEvent) {\n if (validKeyNavigationCode(e) && !this.#keynavDisabled) {\n const { loop, layout, dir, items } = this.#config;\n const activeItem = this.#getKeyboardActiveItem(e, items);\n if (activeItem) {\n const { next, previous } = getNextKeyListItem(activeItem, Array.from(items), {\n loop,\n layout,\n dir,\n code: e.code as KeynavCode\n });\n\n if (next !== previous) {\n this.#setActiveItem(e, items[next]!, items[previous]);\n }\n }\n }\n }\n\n #getKeyboardActiveItem(e: KeyboardEvent, items: HTMLElement[]) {\n const target = e.composedPath()[0];\n return target instanceof HTMLElement && items.includes(target) ? target : null;\n }\n\n #getPointerActiveItem(e: PointerEvent, items: HTMLElement[]) {\n const path = e.composedPath();\n const itemIndex = path.findIndex(item => item instanceof HTMLElement && items.includes(item));\n const item = path[itemIndex];\n\n if (!(item instanceof HTMLElement)) return null;\n\n const hasFocusableDescendant = path\n .slice(0, itemIndex)\n .some(descendant => descendant instanceof Element && isFocusable(descendant));\n return hasFocusableDescendant ? null : item;\n }\n\n #setActiveItem(e: KeyboardEvent | PointerEvent, activeItem: HTMLElement, previousItem?: HTMLElement) {\n const { manageFocus, manageTabindex, items } = this.#config;\n if (manageFocus) {\n if (manageTabindex) {\n setActiveKeyListItem(items, activeItem);\n }\n\n focusElement(activeItem);\n e.preventDefault();\n }\n\n const detail = {\n activeItem,\n previousItem,\n code: e instanceof KeyboardEvent ? e.code : null,\n metaKey: e.ctrlKey || e.metaKey,\n items\n };\n activeItem.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onPointerUp = (e: PointerEvent) => this.#clickItem(e);\n\n #onKeyDown = (e: KeyboardEvent) => this.#focusItem(e);\n}\n\ninterface KeyListConfig {\n code: KeynavCode;\n loop?: boolean;\n layout?: 'horizontal' | 'vertical' | 'both';\n dir: string | null | undefined;\n}\n\nfunction resolveArrowDirection(config: KeyListConfig): 'backward' | 'forward' | null {\n const { code, layout, dir } = config;\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (layout !== 'horizontal') {\n if (code === KeynavCode.ArrowUp) return 'backward';\n if (code === KeynavCode.ArrowDown) return 'forward';\n }\n\n if (layout !== 'vertical') {\n if (code === start) return 'backward';\n if (code === end) return 'forward';\n }\n\n return null;\n}\n\nfunction resolveSpecialKey(code: KeynavCode): 'home' | 'end' | 'pageup' | 'pagedown' | null {\n if (code === KeynavCode.End) return 'end';\n if (code === KeynavCode.Home) return 'home';\n if (code === KeynavCode.PageUp) return 'pageup';\n if (code === KeynavCode.PageDown) return 'pagedown';\n return null;\n}\n\nfunction navigateWithLoop(current: number, step: number, options: { limit: number; loop: boolean | undefined }) {\n const { limit, loop } = options;\n const next = current + step;\n if (next >= 0 && next <= limit) return next;\n return loop ? (step < 0 ? limit : 0) : current;\n}\n\nexport function getNextKeyListItem(item: HTMLElement, items: HTMLElement[], config: KeyListConfig) {\n let next = items.indexOf(item);\n const previous = next;\n const itemCount = items.length - 1;\n const direction = resolveArrowDirection(config);\n\n switch (direction ?? resolveSpecialKey(config.code)) {\n case 'backward':\n next = navigateWithLoop(next, -1, { limit: itemCount, loop: config.loop });\n break;\n case 'forward':\n next = navigateWithLoop(next, 1, { limit: itemCount, loop: config.loop });\n break;\n case 'end':\n next = itemCount;\n break;\n case 'home':\n next = 0;\n break;\n case 'pageup':\n next = Math.max(0, next - 4);\n break;\n case 'pagedown':\n next = Math.min(itemCount, next + 4);\n break;\n case null:\n break;\n }\n\n return { next, previous };\n}\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ var a = class {
19
19
  i18nRegistry: {},
20
20
  audit: {}
21
21
  }
22
- }, globalThis.NVE_ELEMENTS.state.versions = Array.from(/* @__PURE__ */ new Set([...globalThis.NVE_ELEMENTS.state.versions, "2.7.1"])), globalThis.NVE_ELEMENTS.state.scopedRegistry ??= {}, globalThis.NVE_ELEMENTS.state.scopedRegistry["2.7.1"] = i(), globalThis.NVE_ELEMENTS.state.versions.length > 1 && globalThis.NVE_ELEMENTS.state.env !== "production" && console.warn(e(), `\n\n${JSON.stringify(globalThis.NVE_ELEMENTS.state.versions, null, 2)}`);
22
+ }, globalThis.NVE_ELEMENTS.state.versions = Array.from(/* @__PURE__ */ new Set([...globalThis.NVE_ELEMENTS.state.versions, "2.7.3"])), globalThis.NVE_ELEMENTS.state.scopedRegistry ??= {}, globalThis.NVE_ELEMENTS.state.scopedRegistry["2.7.3"] = i(), globalThis.NVE_ELEMENTS.state.versions.length > 1 && globalThis.NVE_ELEMENTS.state.env !== "production" && console.warn(e(), `\n\n${JSON.stringify(globalThis.NVE_ELEMENTS.state.versions, null, 2)}`);
23
23
  }
24
24
  get state() {
25
25
  return globalThis.NVE_ELEMENTS.state;
@@ -12,7 +12,7 @@ var c = class extends a {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-logo",
15
- version: "2.7.1"
15
+ version: "2.7.3"
16
16
  };
17
17
  }
18
18
  render() {
@@ -13,7 +13,7 @@ var c = class extends s(i) {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-menu-item",
16
- version: "2.7.1",
16
+ version: "2.7.3",
17
17
  parents: ["nve-menu"]
18
18
  };
19
19
  }
@@ -16,7 +16,7 @@ var d = class extends c {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-menu",
19
- version: "2.7.1",
19
+ version: "2.7.3",
20
20
  children: ["nve-menu-item", "nve-divider"]
21
21
  };
22
22
  }
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-month",
22
- version: "2.7.1"
22
+ version: "2.7.3"
23
23
  };
24
24
  }
25
25
  static {
@@ -20,7 +20,7 @@ var l = class extends o {
20
20
  static {
21
21
  this.metadata = {
22
22
  tag: "nve-notification-group",
23
- version: "2.7.1",
23
+ version: "2.7.3",
24
24
  children: ["nve-notification"]
25
25
  };
26
26
  }
@@ -34,7 +34,7 @@ var m = class extends d {
34
34
  static {
35
35
  this.metadata = {
36
36
  tag: "nve-notification",
37
- version: "2.7.1"
37
+ version: "2.7.3"
38
38
  };
39
39
  }
40
40
  static {
@@ -9,7 +9,7 @@ var i = class extends n {
9
9
  static {
10
10
  this.metadata = {
11
11
  tag: "nve-page-panel-content",
12
- version: "2.7.1"
12
+ version: "2.7.3"
13
13
  };
14
14
  }
15
15
  render() {
@@ -14,7 +14,7 @@ var o = class extends i {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-page-panel-footer",
17
- version: "2.7.1"
17
+ version: "2.7.3"
18
18
  };
19
19
  }
20
20
  render() {
@@ -14,7 +14,7 @@ var o = class extends i {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-page-panel-header",
17
- version: "2.7.1"
17
+ version: "2.7.3"
18
18
  };
19
19
  }
20
20
  render() {
@@ -18,7 +18,7 @@ var f = class extends l {
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-page-panel",
21
- version: "2.7.1",
21
+ version: "2.7.3",
22
22
  parents: ["nve-page"]
23
23
  };
24
24
  }
@@ -16,7 +16,7 @@ var c = class extends a {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-page",
19
- version: "2.7.1"
19
+ version: "2.7.3"
20
20
  };
21
21
  }
22
22
  static {
@@ -12,7 +12,7 @@ var s = class extends a {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-page-header",
15
- version: "2.7.1"
15
+ version: "2.7.3"
16
16
  };
17
17
  }
18
18
  render() {
@@ -18,7 +18,7 @@ var u = class extends s {
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-page-loader",
21
- version: "2.7.1"
21
+ version: "2.7.3"
22
22
  };
23
23
  }
24
24
  static {
@@ -21,7 +21,7 @@ var g = class extends h(d) {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-pagination",
24
- version: "2.7.1",
24
+ version: "2.7.3",
25
25
  valueSchema: { type: "number" }
26
26
  };
27
27
  }
@@ -21,7 +21,7 @@ var g = class extends f {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-panel-header",
24
- version: "2.7.1"
24
+ version: "2.7.3"
25
25
  };
26
26
  }
27
27
  render() {
@@ -37,7 +37,7 @@ var g = class extends f {
37
37
  static {
38
38
  this.metadata = {
39
39
  tag: "nve-panel-content",
40
- version: "2.7.1"
40
+ version: "2.7.3"
41
41
  };
42
42
  }
43
43
  render() {
@@ -50,7 +50,7 @@ var g = class extends f {
50
50
  static {
51
51
  this.metadata = {
52
52
  tag: "nve-panel-footer",
53
- version: "2.7.1"
53
+ version: "2.7.3"
54
54
  };
55
55
  }
56
56
  render() {
@@ -69,7 +69,7 @@ var g = class extends f {
69
69
  static {
70
70
  this.metadata = {
71
71
  tag: "nve-panel",
72
- version: "2.7.1"
72
+ version: "2.7.3"
73
73
  };
74
74
  }
75
75
  static {
@@ -23,7 +23,7 @@ var u = class extends r {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-password",
26
- version: "2.7.1"
26
+ version: "2.7.3"
27
27
  };
28
28
  }
29
29
  static {
@@ -43,7 +43,7 @@ var x = class extends g(d) {
43
43
  static {
44
44
  this.metadata = {
45
45
  tag: "nve-preferences-input",
46
- version: "2.7.1",
46
+ version: "2.7.3",
47
47
  valueSchema: {
48
48
  type: "object",
49
49
  properties: {
@@ -16,7 +16,7 @@ var c = class extends i {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-progress-bar",
19
- version: "2.7.1"
19
+ version: "2.7.3"
20
20
  };
21
21
  }
22
22
  render() {
@@ -1,5 +1,5 @@
1
1
  //#region src/progress-ring/progress-ring.css?inline
2
- var e = ":host{--background-color: var(--nve-sys-interaction-background);--ring-color: var(--nve-sys-accent-secondary-background);--ring-background-opacity: 1;--ring-width: 2px;--width: var(--nve-ref-size-800);--height: var(--nve-ref-size-800);--animation-duration: calc(var(--nve-ref-animation-duration-400) * 2.5);width:var(--width);height:var(--height);container-type:size}:host([size=\"xxs\"]){--ring-width: 3px;--width: var(--nve-ref-size-300);--height: var(--nve-ref-size-300)}:host([size=\"xs\"]){--ring-width: 3px;--width: var(--nve-ref-size-400);--height: var(--nve-ref-size-400)}:host([size=\"sm\"]){--ring-width: 2.5px;--width: var(--nve-ref-size-600);--height: var(--nve-ref-size-600)}:host([size=\"lg\"]){--width: var(--nve-ref-size-1000);--height: var(--nve-ref-size-1000)}:host([size=\"xl\"]){--ring-width: 1px;--width: calc(2 * var(--nve-ref-space-xxxl));--height: calc(2 * var(--nve-ref-space-xxxl))}[internal-host]{display:flex;place-items:center;place-content:center;height:100%}svg{position:absolute;top:0;left:0;width:100%;height:100%}circle.background{fill:var(--background-color);opacity:var(--ring-background-opacity);stroke:none}circle.ring{fill:none;stroke:var(--ring-color);stroke-width:var(--ring-width);stroke-linecap:round;transform-origin:50% 50%;transform:rotate(-90deg);transition:all .2s ease-in-out 0s}:host([status=\"success\"]){--ring-color: var(--nve-sys-support-success-emphasis-color);--background-color: var(--nve-sys-support-success-muted-color)}:host([status=\"warning\"]){--ring-color: var(--nve-sys-support-warning-emphasis-color);--background-color: var(--nve-sys-support-warning-muted-color)}:host([status=\"danger\"]){--ring-color: var(--nve-sys-support-danger-emphasis-color);--background-color: var(--nve-sys-support-danger-muted-color)}:host([status=\"neutral\"]){--ring-background-opacity: .5;--ring-color: var(--color, var(--nve-sys-interaction-color));--background-color: var(--color, var(--nve-sys-interaction-color))}:host([status=\"accent\"]) [internal-host]:not([indeterminate]) circle.background{stroke:var(--background-color);fill:none;stroke-width:var(--ring-width)}:host([status=\"accent\"]) [internal-host][indeterminate] circle.background{display:none}:host([status=\"neutral\"]) [internal-host]:not([indeterminate]) circle.background{stroke:var(--background-color);fill:none;stroke-width:var(--ring-width)}:host([status=\"neutral\"]) [internal-host][indeterminate] circle.background{display:none}[internal-host][indeterminate] circle.ring{animation:var(--animation-duration) linear 0s infinite normal none running spin-infinite}::slotted(nve-icon),nve-icon{--width: 50cqw;--height: 50cqh;--color: var(--ring-color)}@keyframes spin-infinite{0%{stroke-dasharray:.01px,43.97px;transform:rotate(0)}50%{stroke-dasharray:21.99px,21.99px;transform:rotate(450deg)}to{stroke-dasharray:.01px,43.97px;transform:rotate(1080deg)}}";
2
+ var e = ":host{--background-color: var(--nve-sys-interaction-background);--ring-color: var(--nve-sys-accent-secondary-background);--ring-background-opacity: 1;--ring-width: 2px;--width: var(--nve-ref-size-800);--height: var(--nve-ref-size-800);--animation-duration: calc(var(--nve-ref-animation-duration-400) * 2.5);width:var(--width);height:var(--height);container-type:size}:host([size=\"xxs\"]){--ring-width: 3px;--width: var(--nve-ref-size-300);--height: var(--nve-ref-size-300)}:host([size=\"xs\"]){--ring-width: 3px;--width: var(--nve-ref-size-400);--height: var(--nve-ref-size-400)}:host([size=\"sm\"]){--ring-width: 2.5px;--width: var(--nve-ref-size-600);--height: var(--nve-ref-size-600)}:host([size=\"lg\"]){--width: var(--nve-ref-size-1000);--height: var(--nve-ref-size-1000)}:host([size=\"xl\"]){--ring-width: 1px;--width: calc(2 * var(--nve-ref-space-xxxl));--height: calc(2 * var(--nve-ref-space-xxxl))}[internal-host]{display:flex;place-items:center;place-content:center;height:100%}svg{position:absolute;top:0;left:0;width:100%;height:100%}circle.background{fill:var(--background-color);opacity:var(--ring-background-opacity);stroke:none}circle.progress-ring-circle{fill:none;stroke:var(--ring-color);stroke-width:var(--ring-width);stroke-linecap:round;transform-origin:50% 50%;transform:rotate(-90deg);transition:all .2s ease-in-out 0s}:host([status=\"success\"]){--ring-color: var(--nve-sys-support-success-emphasis-color);--background-color: var(--nve-sys-support-success-muted-color)}:host([status=\"warning\"]){--ring-color: var(--nve-sys-support-warning-emphasis-color);--background-color: var(--nve-sys-support-warning-muted-color)}:host([status=\"danger\"]){--ring-color: var(--nve-sys-support-danger-emphasis-color);--background-color: var(--nve-sys-support-danger-muted-color)}:host([status=\"neutral\"]){--ring-background-opacity: .5;--ring-color: var(--color, var(--nve-sys-interaction-color));--background-color: var(--color, var(--nve-sys-interaction-color))}:host([status=\"accent\"]) [internal-host]:not([indeterminate]) circle.background{stroke:var(--background-color);fill:none;stroke-width:var(--ring-width)}:host([status=\"accent\"]) [internal-host][indeterminate] circle.background{display:none}:host([status=\"neutral\"]) [internal-host]:not([indeterminate]) circle.background{stroke:var(--background-color);fill:none;stroke-width:var(--ring-width)}:host([status=\"neutral\"]) [internal-host][indeterminate] circle.background{display:none}[internal-host][indeterminate] circle.progress-ring-circle{animation:var(--animation-duration) linear 0s infinite normal none running spin-infinite}::slotted(nve-icon),nve-icon{--width: 50cqw;--height: 50cqh;--color: var(--ring-color)}@keyframes spin-infinite{0%{stroke-dasharray:.01px,43.97px;transform:rotate(0)}50%{stroke-dasharray:21.99px,21.99px;transform:rotate(450deg)}to{stroke-dasharray:.01px,43.97px;transform:rotate(1080deg)}}";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"progress-ring.js","names":[],"sources":["../../src/progress-ring/progress-ring.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 --background-color: var(--nve-sys-interaction-background);\n --ring-color: var(--nve-sys-accent-secondary-background);\n --ring-background-opacity: 1;\n --ring-width: 2px;\n --width: var(--nve-ref-size-800);\n --height: var(--nve-ref-size-800);\n --animation-duration: calc(var(--nve-ref-animation-duration-400) * 2.5);\n\n width: var(--width);\n height: var(--height);\n container-type: size;\n}\n\n:host([size='xxs']) {\n --ring-width: 3px;\n --width: var(--nve-ref-size-300);\n --height: var(--nve-ref-size-300);\n}\n\n:host([size='xs']) {\n --ring-width: 3px;\n --width: var(--nve-ref-size-400);\n --height: var(--nve-ref-size-400);\n}\n\n:host([size='sm']) {\n --ring-width: 2.5px;\n --width: var(--nve-ref-size-600);\n --height: var(--nve-ref-size-600);\n}\n\n:host([size='lg']) {\n --width: var(--nve-ref-size-1000);\n --height: var(--nve-ref-size-1000);\n}\n\n:host([size='xl']) {\n --ring-width: 1px;\n --width: calc(2 * var(--nve-ref-space-xxxl));\n --height: calc(2 * var(--nve-ref-space-xxxl));\n}\n\n[internal-host] {\n display: flex;\n place-items: center;\n place-content: center;\n height: 100%;\n}\n\nsvg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\ncircle.background {\n fill: var(--background-color);\n opacity: var(--ring-background-opacity);\n stroke: none;\n}\n\ncircle.ring {\n fill: none;\n stroke: var(--ring-color);\n stroke-width: var(--ring-width);\n stroke-linecap: round;\n transform-origin: 50% 50%;\n transform: rotate(-90deg);\n transition: all 0.2s ease-in-out 0s;\n}\n\n:host([status='success']) {\n --ring-color: var(--nve-sys-support-success-emphasis-color);\n --background-color: var(--nve-sys-support-success-muted-color);\n}\n\n:host([status='warning']) {\n --ring-color: var(--nve-sys-support-warning-emphasis-color);\n --background-color: var(--nve-sys-support-warning-muted-color);\n}\n\n:host([status='danger']) {\n --ring-color: var(--nve-sys-support-danger-emphasis-color);\n --background-color: var(--nve-sys-support-danger-muted-color);\n}\n\n:host([status='neutral']) {\n --ring-background-opacity: 0.5;\n --ring-color: var(--color, var(--nve-sys-interaction-color));\n --background-color: var(--color, var(--nve-sys-interaction-color));\n}\n\n:host([status='accent']) [internal-host]:not([indeterminate]) circle.background {\n stroke: var(--background-color);\n fill: none;\n stroke-width: var(--ring-width);\n}\n\n:host([status='accent']) [internal-host][indeterminate] circle.background {\n display: none;\n}\n\n:host([status='neutral']) [internal-host]:not([indeterminate]) circle.background {\n stroke: var(--background-color);\n fill: none;\n stroke-width: var(--ring-width);\n}\n\n:host([status='neutral']) [internal-host][indeterminate] circle.background {\n display: none;\n}\n\n[internal-host][indeterminate] circle.ring {\n animation: var(--animation-duration) linear 0s infinite normal none running spin-infinite;\n}\n\n::slotted(nve-icon),\nnve-icon {\n --width: 50cqw;\n --height: 50cqh;\n --color: var(--ring-color);\n}\n\n@keyframes spin-infinite {\n 0% {\n stroke-dasharray: 0.01px, 43.97px;\n transform: rotate(0deg);\n }\n\n 50% {\n stroke-dasharray: 21.99px, 21.99px;\n transform: rotate(450deg);\n }\n\n 100% {\n stroke-dasharray: 0.01px, 43.97px;\n transform: rotate(1080deg);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"progress-ring.js","names":[],"sources":["../../src/progress-ring/progress-ring.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 --background-color: var(--nve-sys-interaction-background);\n --ring-color: var(--nve-sys-accent-secondary-background);\n --ring-background-opacity: 1;\n --ring-width: 2px;\n --width: var(--nve-ref-size-800);\n --height: var(--nve-ref-size-800);\n --animation-duration: calc(var(--nve-ref-animation-duration-400) * 2.5);\n\n width: var(--width);\n height: var(--height);\n container-type: size;\n}\n\n:host([size='xxs']) {\n --ring-width: 3px;\n --width: var(--nve-ref-size-300);\n --height: var(--nve-ref-size-300);\n}\n\n:host([size='xs']) {\n --ring-width: 3px;\n --width: var(--nve-ref-size-400);\n --height: var(--nve-ref-size-400);\n}\n\n:host([size='sm']) {\n --ring-width: 2.5px;\n --width: var(--nve-ref-size-600);\n --height: var(--nve-ref-size-600);\n}\n\n:host([size='lg']) {\n --width: var(--nve-ref-size-1000);\n --height: var(--nve-ref-size-1000);\n}\n\n:host([size='xl']) {\n --ring-width: 1px;\n --width: calc(2 * var(--nve-ref-space-xxxl));\n --height: calc(2 * var(--nve-ref-space-xxxl));\n}\n\n[internal-host] {\n display: flex;\n place-items: center;\n place-content: center;\n height: 100%;\n}\n\nsvg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\ncircle.background {\n fill: var(--background-color);\n opacity: var(--ring-background-opacity);\n stroke: none;\n}\n\ncircle.progress-ring-circle {\n fill: none;\n stroke: var(--ring-color);\n stroke-width: var(--ring-width);\n stroke-linecap: round;\n transform-origin: 50% 50%;\n transform: rotate(-90deg);\n transition: all 0.2s ease-in-out 0s;\n}\n\n:host([status='success']) {\n --ring-color: var(--nve-sys-support-success-emphasis-color);\n --background-color: var(--nve-sys-support-success-muted-color);\n}\n\n:host([status='warning']) {\n --ring-color: var(--nve-sys-support-warning-emphasis-color);\n --background-color: var(--nve-sys-support-warning-muted-color);\n}\n\n:host([status='danger']) {\n --ring-color: var(--nve-sys-support-danger-emphasis-color);\n --background-color: var(--nve-sys-support-danger-muted-color);\n}\n\n:host([status='neutral']) {\n --ring-background-opacity: 0.5;\n --ring-color: var(--color, var(--nve-sys-interaction-color));\n --background-color: var(--color, var(--nve-sys-interaction-color));\n}\n\n:host([status='accent']) [internal-host]:not([indeterminate]) circle.background {\n stroke: var(--background-color);\n fill: none;\n stroke-width: var(--ring-width);\n}\n\n:host([status='accent']) [internal-host][indeterminate] circle.background {\n display: none;\n}\n\n:host([status='neutral']) [internal-host]:not([indeterminate]) circle.background {\n stroke: var(--background-color);\n fill: none;\n stroke-width: var(--ring-width);\n}\n\n:host([status='neutral']) [internal-host][indeterminate] circle.background {\n display: none;\n}\n\n[internal-host][indeterminate] circle.progress-ring-circle {\n animation: var(--animation-duration) linear 0s infinite normal none running spin-infinite;\n}\n\n::slotted(nve-icon),\nnve-icon {\n --width: 50cqw;\n --height: 50cqh;\n --color: var(--ring-color);\n}\n\n@keyframes spin-infinite {\n 0% {\n stroke-dasharray: 0.01px, 43.97px;\n transform: rotate(0deg);\n }\n\n 50% {\n stroke-dasharray: 21.99px, 21.99px;\n transform: rotate(450deg);\n }\n\n 100% {\n stroke-dasharray: 0.01px, 43.97px;\n transform: rotate(1080deg);\n }\n}\n"],"mappings":""}
@@ -19,7 +19,7 @@ var d = class extends c {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-progress-ring",
22
- version: "2.7.1"
22
+ version: "2.7.3"
23
23
  };
24
24
  }
25
25
  static {
@@ -27,7 +27,7 @@ var d = class extends c {
27
27
  }
28
28
  #e;
29
29
  render() {
30
- return l`<div internal-host ?indeterminate="${this.value === void 0}"><svg viewBox="0 0 16 16" role="presentation"><circle cx="8px" cy="8px" r="6.5px" class="background"></circle><circle cx="8px" cy="8px" r="6.5px" class="ring" stroke-dasharray="${`${(this.value ?? 0) / (this.max ?? 100) * 44}px 44px`}"></circle></svg><slot>${this.status === "accent" ? "" : l`<nve-icon part="icon" .name="${this.status ? i[this.status] : void 0}" .status="${this.status}" aria-hidden="true"></nve-icon>`}</slot></div>`;
30
+ return l`<div internal-host ?indeterminate="${this.value === void 0}"><svg viewBox="0 0 16 16" role="presentation"><circle cx="8px" cy="8px" r="6.5px" class="background"></circle><circle cx="8px" cy="8px" r="6.5px" class="progress-ring-circle" stroke-dasharray="${`${(this.value ?? 0) / (this.max ?? 100) * 44}px 44px`}"></circle></svg><slot>${this.status === "accent" ? "" : l`<nve-icon part="icon" .name="${this.status ? i[this.status] : void 0}" .status="${this.status}" aria-hidden="true"></nve-icon>`}</slot></div>`;
31
31
  }
32
32
  connectedCallback() {
33
33
  super.connectedCallback(), t(this), this._internals.role = "progressbar";
@@ -1 +1 @@
1
- {"version":3,"file":"progress-ring2.js","names":["#i18nController"],"sources":["../../src/progress-ring/progress-ring.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues } from 'lit';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport type { Size, SupportStatus } from '@nvidia-elements/core/internal';\nimport {\n attachInternals,\n I18nController,\n scopedRegistry,\n statusIcons,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport styles from './progress-ring.css?inline';\n\n/**\n * @element nve-progress-ring\n * @description The `progress-ring` component shows the status of a pending task. It also serves the basis of the page loading element.\n * @documentation https://nvidia.github.io/elements/docs/elements/progress-ring/\n * @since 0.17.0\n * @entrypoint \\@nvidia-elements/core/progress-ring\n * @slot - Content to display in the ring center. Defaults to a status icon.\n * @cssprop --background-color\n * @cssprop --ring-color\n * @cssprop --ring-background-opacity\n * @cssprop --ring-width\n * @cssprop --width\n * @cssprop --height\n * @cssprop --animation-duration\n * @cssprop --color\n * @csspart icon - The icon element\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/progressbar_role\n */\n@scopedRegistry()\nexport class ProgressRing extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-progress-ring',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon\n };\n\n /** @private */\n declare _internals: ElementInternals;\n\n /** The current `value` of the progress ring. When not set, an indeterminate animation will show. */\n @property({ type: Number }) value?: number;\n\n /** The `max` value of the progress ring that the `value` is proportionally scaled to. */\n @property({ type: Number }) max? = 100;\n\n /** Four visual treatments represent the `status` of tasks. When `status` changes to `warning`, `success`, or `danger`, the component embeds appropriate icons. */\n @property({ type: String, reflect: true }) status?: SupportStatus | 'neutral' = 'neutral';\n\n /** T-shirt `size` of the progress indicator, used to scale the ring. */\n @property({ type: String, reflect: true }) size?: Size | 'xxs' | 'xs' | 'xl';\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /** Enables updating internal string values for internationalization. */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n render() {\n return html`\n <div internal-host ?indeterminate=${this.value === undefined}>\n <svg viewBox=\"0 0 16 16\" role=\"presentation\">\n <circle cx=\"8px\" cy=\"8px\" r=\"6.5px\" class=\"background\"></circle>\n <circle cx=\"8px\" cy=\"8px\" r=\"6.5px\" class=\"ring\"\n stroke-dasharray=${`${((this.value ?? 0) / (this.max ?? 100)) * 44}px 44px`}>\n </circle>\n </svg>\n <slot>\n ${\n this.status !== 'accent'\n ? html`<nve-icon part=\"icon\" .name=${this.status ? statusIcons[this.status] : undefined} .status=${this.status as SupportStatus} aria-hidden=\"true\"></nve-icon>`\n : ''\n }\n </slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'progressbar';\n }\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n this._internals.ariaValueNow = `${this.value === undefined ? '' : this.value}`;\n this._internals.ariaValueMax = `${this.max}`;\n const { status } = this;\n const statusLabel =\n status !== undefined && status !== 'neutral' && status !== 'accent' ? this.i18n[status] : undefined;\n this._internals.ariaLabel = statusLabel ?? this.i18n.information ?? null;\n }\n}\n"],"mappings":";;;;;;;;;;;AAoCO,IAAA,IAAA,cAA2B,EAAW;;0BAmBR,mBAG6C,qBAKxC,IAAI,EAAqB,IAAI,eAGlC,KAAKA,GAAgB;;;gBA7BxC,EAAU,CAAC,CAAM,CAAC;;;kBAEP;GACzB,KAAK;GACL,SAAS;EACX;;;4BAE4B,GACzB,EAAK,SAAS,MAAM,EACvB;;CAiBA;CAKA,SAAS;EACP,OAAO,CAAI,sCAC2B,KAAK,UAAU,KAAA,EAAU,oLAIpC,IAAK,KAAK,SAAS,MAAM,KAAK,OAAO,OAAQ,GAAG,SAAS,yBAK5E,KAAK,WAAW,WAEZ,KADA,CAAI,gCAA+B,KAAK,SAAS,EAAY,KAAK,UAAU,KAAA,EAAU,aAAW,KAAK,OAAwB,kCAEnI;CAIT;CAEA,oBAAoB;EAGlB,AAFA,MAAM,kBAAkB,GACxB,EAAgB,IAAI,GACpB,KAAK,WAAW,OAAO;CACzB;CAEA,QAAQ,GAA6B;EAGnC,AAFA,MAAM,QAAQ,CAAK,GACnB,KAAK,WAAW,eAAe,GAAG,KAAK,UAAU,KAAA,IAAY,KAAK,KAAK,SACvE,KAAK,WAAW,eAAe,GAAG,KAAK;EACvC,IAAM,EAAE,cAAW,MACb,IACJ,MAAW,KAAA,KAAa,MAAW,aAAa,MAAW,WAAW,KAAK,KAAK,KAAU,KAAA;EAC5F,KAAK,WAAW,YAAY,KAAe,KAAK,KAAK,eAAe;CACtE;AACF;GAnDG,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,MAGzB,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,OAAA,KAAA,CAAA,MAGzB,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,MAGxC,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,MAKxC,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,UA/B3B,EAAe,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"progress-ring2.js","names":["#i18nController"],"sources":["../../src/progress-ring/progress-ring.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues } from 'lit';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport type { Size, SupportStatus } from '@nvidia-elements/core/internal';\nimport {\n attachInternals,\n I18nController,\n scopedRegistry,\n statusIcons,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport styles from './progress-ring.css?inline';\n\n/**\n * @element nve-progress-ring\n * @description The `progress-ring` component shows the status of a pending task. It also serves the basis of the page loading element.\n * @documentation https://nvidia.github.io/elements/docs/elements/progress-ring/\n * @since 0.17.0\n * @entrypoint \\@nvidia-elements/core/progress-ring\n * @slot - Content to display in the ring center. Defaults to a status icon.\n * @cssprop --background-color\n * @cssprop --ring-color\n * @cssprop --ring-background-opacity\n * @cssprop --ring-width\n * @cssprop --width\n * @cssprop --height\n * @cssprop --animation-duration\n * @cssprop --color\n * @csspart icon - The icon element\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/progressbar_role\n */\n@scopedRegistry()\nexport class ProgressRing extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-progress-ring',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon\n };\n\n /** @private */\n declare _internals: ElementInternals;\n\n /** The current `value` of the progress ring. When not set, an indeterminate animation will show. */\n @property({ type: Number }) value?: number;\n\n /** The `max` value of the progress ring that the `value` is proportionally scaled to. */\n @property({ type: Number }) max? = 100;\n\n /** Four visual treatments represent the `status` of tasks. When `status` changes to `warning`, `success`, or `danger`, the component embeds appropriate icons. */\n @property({ type: String, reflect: true }) status?: SupportStatus | 'neutral' = 'neutral';\n\n /** T-shirt `size` of the progress indicator, used to scale the ring. */\n @property({ type: String, reflect: true }) size?: Size | 'xxs' | 'xs' | 'xl';\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /** Enables updating internal string values for internationalization. */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n render() {\n return html`\n <div internal-host ?indeterminate=${this.value === undefined}>\n <svg viewBox=\"0 0 16 16\" role=\"presentation\">\n <circle cx=\"8px\" cy=\"8px\" r=\"6.5px\" class=\"background\"></circle>\n <circle cx=\"8px\" cy=\"8px\" r=\"6.5px\" class=\"progress-ring-circle\"\n stroke-dasharray=${`${((this.value ?? 0) / (this.max ?? 100)) * 44}px 44px`}>\n </circle>\n </svg>\n <slot>\n ${\n this.status !== 'accent'\n ? html`<nve-icon part=\"icon\" .name=${this.status ? statusIcons[this.status] : undefined} .status=${this.status as SupportStatus} aria-hidden=\"true\"></nve-icon>`\n : ''\n }\n </slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'progressbar';\n }\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n this._internals.ariaValueNow = `${this.value === undefined ? '' : this.value}`;\n this._internals.ariaValueMax = `${this.max}`;\n const { status } = this;\n const statusLabel =\n status !== undefined && status !== 'neutral' && status !== 'accent' ? this.i18n[status] : undefined;\n this._internals.ariaLabel = statusLabel ?? this.i18n.information ?? null;\n }\n}\n"],"mappings":";;;;;;;;;;;AAoCO,IAAA,IAAA,cAA2B,EAAW;;0BAmBR,mBAG6C,qBAKxC,IAAI,EAAqB,IAAI,eAGlC,KAAKA,GAAgB;;;gBA7BxC,EAAU,CAAC,CAAM,CAAC;;;kBAEP;GACzB,KAAK;GACL,SAAS;EACX;;;4BAE4B,GACzB,EAAK,SAAS,MAAM,EACvB;;CAiBA;CAKA,SAAS;EACP,OAAO,CAAI,sCAC2B,KAAK,UAAU,KAAA,EAAU,oMAIpC,IAAK,KAAK,SAAS,MAAM,KAAK,OAAO,OAAQ,GAAG,SAAS,yBAK5E,KAAK,WAAW,WAEZ,KADA,CAAI,gCAA+B,KAAK,SAAS,EAAY,KAAK,UAAU,KAAA,EAAU,aAAW,KAAK,OAAwB,kCAEnI;CAIT;CAEA,oBAAoB;EAGlB,AAFA,MAAM,kBAAkB,GACxB,EAAgB,IAAI,GACpB,KAAK,WAAW,OAAO;CACzB;CAEA,QAAQ,GAA6B;EAGnC,AAFA,MAAM,QAAQ,CAAK,GACnB,KAAK,WAAW,eAAe,GAAG,KAAK,UAAU,KAAA,IAAY,KAAK,KAAK,SACvE,KAAK,WAAW,eAAe,GAAG,KAAK;EACvC,IAAM,EAAE,cAAW,MACb,IACJ,MAAW,KAAA,KAAa,MAAW,aAAa,MAAW,WAAW,KAAK,KAAK,KAAU,KAAA;EAC5F,KAAK,WAAW,YAAY,KAAe,KAAK,KAAK,eAAe;CACtE;AACF;GAnDG,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,MAGzB,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,OAAA,KAAA,CAAA,MAGzB,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,MAGxC,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,MAKxC,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,UA/B3B,EAAe,CAAA,GAAA,CAAA"}
@@ -23,7 +23,7 @@ var b = class extends h {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-progressive-filter-chip",
26
- version: "2.7.1"
26
+ version: "2.7.3"
27
27
  };
28
28
  }
29
29
  static {
@@ -13,7 +13,7 @@ var c = class extends a {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-pulse",
16
- version: "2.7.1"
16
+ version: "2.7.3"
17
17
  };
18
18
  }
19
19
  static {
@@ -12,7 +12,7 @@ var o = class extends i {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-radio-group",
15
- version: "2.7.1",
15
+ version: "2.7.3",
16
16
  children: [
17
17
  "label",
18
18
  "nve-control-message",
@@ -15,7 +15,7 @@ var o = class extends i {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-radio",
18
- version: "2.7.1",
18
+ version: "2.7.3",
19
19
  children: [
20
20
  "label",
21
21
  "input",
@@ -17,7 +17,7 @@ var d = class extends i {
17
17
  static {
18
18
  this.metadata = {
19
19
  tag: "nve-range",
20
- version: "2.7.1"
20
+ version: "2.7.3"
21
21
  };
22
22
  }
23
23
  connectedCallback() {
@@ -18,7 +18,7 @@ var u = class extends c(a) {
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-resize-handle",
21
- version: "2.7.1",
21
+ version: "2.7.3",
22
22
  valueSchema: { type: "number" }
23
23
  };
24
24
  }
@@ -22,7 +22,7 @@ var l = class extends r {
22
22
  static {
23
23
  this.metadata = {
24
24
  tag: "nve-search",
25
- version: "2.7.1"
25
+ version: "2.7.3"
26
26
  };
27
27
  }
28
28
  static {
@@ -27,7 +27,7 @@ var S = class extends d {
27
27
  static {
28
28
  this.metadata = {
29
29
  tag: "nve-select",
30
- version: "2.7.1"
30
+ version: "2.7.3"
31
31
  };
32
32
  }
33
33
  static {