@nvidia-elements/core 2.0.1 → 2.0.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 (195) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +1 -1
  3. package/dist/_virtual/{_@oxc-project_runtime@0.132.0/helpers → _@oxc-project_runtime@0.133.0/helpers/esm}/decorate.js +1 -1
  4. package/dist/accordion/accordion2.js +5 -5
  5. package/dist/alert/alert-group2.js +2 -2
  6. package/dist/alert/alert2.js +2 -2
  7. package/dist/avatar/avatar-group2.js +1 -1
  8. package/dist/avatar/avatar.examples.js.map +1 -1
  9. package/dist/avatar/avatar.examples.json +1 -1
  10. package/dist/avatar/avatar2.js +2 -2
  11. package/dist/badge/badge2.js +2 -2
  12. package/dist/breadcrumb/breadcrumb2.js +2 -2
  13. package/dist/bundles/index.d.ts +6 -17
  14. package/dist/bundles/index.js +6 -6
  15. package/dist/button/button2.js +2 -2
  16. package/dist/button-group/button-group2.js +2 -2
  17. package/dist/card/card.examples.js.map +1 -1
  18. package/dist/card/card.examples.json +1 -1
  19. package/dist/card/card2.js +5 -5
  20. package/dist/chat-message/chat-message.d.ts +0 -2
  21. package/dist/chat-message/chat-message2.js +2 -2
  22. package/dist/chat-message/chat-message2.js.map +1 -1
  23. package/dist/checkbox/checkbox-group2.js +2 -2
  24. package/dist/checkbox/checkbox2.js +2 -2
  25. package/dist/color/color2.js +2 -2
  26. package/dist/combobox/combobox2.js +8 -8
  27. package/dist/copy-button/copy-button2.js +2 -2
  28. package/dist/custom-elements.json +155 -720
  29. package/dist/data.html.json +26 -3
  30. package/dist/data.snippets.json +27 -27
  31. package/dist/date/date2.js +2 -2
  32. package/dist/datetime/datetime2.js +2 -2
  33. package/dist/dialog/dialog-footer2.js +2 -2
  34. package/dist/dialog/dialog-header2.js +2 -2
  35. package/dist/dialog/dialog2.js +2 -2
  36. package/dist/divider/divider2.js +2 -2
  37. package/dist/dot/dot2.js +2 -2
  38. package/dist/drawer/drawer-content2.js +2 -2
  39. package/dist/drawer/drawer-footer2.js +2 -2
  40. package/dist/drawer/drawer-header2.js +2 -2
  41. package/dist/drawer/drawer2.js +2 -2
  42. package/dist/dropdown/dropdown-footer2.js +2 -2
  43. package/dist/dropdown/dropdown-header2.js +2 -2
  44. package/dist/dropdown/dropdown2.js +2 -2
  45. package/dist/dropdown-group/dropdown-group.d.ts +0 -1
  46. package/dist/dropdown-group/dropdown-group.js +2 -2
  47. package/dist/dropdown-group/dropdown-group.js.map +1 -1
  48. package/dist/dropzone/dropzone.d.ts +0 -1
  49. package/dist/dropzone/dropzone2.js +2 -2
  50. package/dist/dropzone/dropzone2.js.map +1 -1
  51. package/dist/file/file2.js +1 -1
  52. package/dist/format-datetime/format-datetime.d.ts +1 -0
  53. package/dist/format-datetime/format-datetime2.js +2 -2
  54. package/dist/format-datetime/format-datetime2.js.map +1 -1
  55. package/dist/format-number/format-number.d.ts +1 -0
  56. package/dist/format-number/format-number2.js +2 -2
  57. package/dist/format-number/format-number2.js.map +1 -1
  58. package/dist/format-relative-time/format-relative-time.d.ts +1 -0
  59. package/dist/format-relative-time/format-relative-time2.js +6 -3
  60. package/dist/format-relative-time/format-relative-time2.js.map +1 -1
  61. package/dist/forms/control/control.js +1 -1
  62. package/dist/forms/control/control.js.map +1 -1
  63. package/dist/forms/control/control2.js +39 -21
  64. package/dist/forms/control/control2.js.map +1 -1
  65. package/dist/forms/control-group/control-group.js +1 -1
  66. package/dist/forms/control-group/control-group.js.map +1 -1
  67. package/dist/forms/control-group/control-group2.js +2 -2
  68. package/dist/forms/control-group/control-group2.js.map +1 -1
  69. package/dist/forms/control-message/control-message2.js +2 -2
  70. package/dist/forms/utils/states.d.ts +6 -3
  71. package/dist/forms/utils/states.js +40 -32
  72. package/dist/forms/utils/states.js.map +1 -1
  73. package/dist/grid/cell/cell2.js +1 -1
  74. package/dist/grid/column/column2.js +2 -2
  75. package/dist/grid/footer/footer2.js +2 -2
  76. package/dist/grid/grid2.js +2 -2
  77. package/dist/grid/header/header2.js +2 -2
  78. package/dist/grid/placeholder/placeholder2.js +1 -1
  79. package/dist/grid/row/row2.js +2 -2
  80. package/dist/icon/icon2.js +3 -3
  81. package/dist/icon-button/icon-button2.js +2 -2
  82. package/dist/index.js +1 -1
  83. package/dist/input/input-group2.js +1 -1
  84. package/dist/input/input2.js +2 -2
  85. package/dist/internal/controllers/keynav-grid.controller.js +22 -18
  86. package/dist/internal/controllers/keynav-grid.controller.js.map +1 -1
  87. package/dist/internal/controllers/keynav-list.controller.d.ts +1 -0
  88. package/dist/internal/controllers/keynav-list.controller.js +6 -1
  89. package/dist/internal/controllers/keynav-list.controller.js.map +1 -1
  90. package/dist/internal/controllers/type-native-popover.controller.js +70 -40
  91. package/dist/internal/controllers/type-native-popover.controller.js.map +1 -1
  92. package/dist/internal/index.d.ts +0 -9
  93. package/dist/internal/index.js +20 -29
  94. package/dist/internal/services/global.service.js +1 -1
  95. package/dist/internal/services/log.service.js +1 -1
  96. package/dist/internal/services/log.service.js.map +1 -1
  97. package/dist/internal/types/index.d.ts +3 -0
  98. package/dist/internal/types/index.js.map +1 -1
  99. package/dist/internal/utils/dom.d.ts +1 -1
  100. package/dist/internal/utils/dom.js +71 -54
  101. package/dist/internal/utils/dom.js.map +1 -1
  102. package/dist/logo/logo2.js +2 -2
  103. package/dist/menu/menu-item2.js +2 -2
  104. package/dist/menu/menu2.js +2 -2
  105. package/dist/month/month2.js +2 -2
  106. package/dist/notification/notification-group2.js +2 -2
  107. package/dist/notification/notification2.js +2 -2
  108. package/dist/page/page-panel/page-panel-content2.js +1 -1
  109. package/dist/page/page-panel/page-panel-footer2.js +2 -2
  110. package/dist/page/page-panel/page-panel-header2.js +2 -2
  111. package/dist/page/page-panel/page-panel2.js +2 -2
  112. package/dist/page/page.examples.js.map +1 -1
  113. package/dist/page/page.examples.json +1 -1
  114. package/dist/page/page2.js +2 -2
  115. package/dist/page-header/page-header2.js +1 -1
  116. package/dist/page-loader/page-loader2.js +2 -2
  117. package/dist/pagination/pagination2.js +2 -2
  118. package/dist/panel/panel2.js +5 -5
  119. package/dist/password/password2.js +2 -2
  120. package/dist/preferences-input/preferences-input.js +1 -1
  121. package/dist/preferences-input/preferences-input.js.map +1 -1
  122. package/dist/preferences-input/preferences-input2.js +2 -2
  123. package/dist/progress-bar/progress-bar2.js +2 -2
  124. package/dist/progress-ring/progress-ring2.js +2 -2
  125. package/dist/progressive-filter-chip/progressive-filter-chip.examples.js.map +1 -1
  126. package/dist/progressive-filter-chip/progressive-filter-chip.examples.json +1 -1
  127. package/dist/progressive-filter-chip/progressive-filter-chip2.js +2 -2
  128. package/dist/pulse/pulse2.js +2 -2
  129. package/dist/radio/radio-group2.js +2 -2
  130. package/dist/radio/radio2.js +2 -2
  131. package/dist/range/range2.js +2 -2
  132. package/dist/resize-handle/resize-handle2.js +2 -2
  133. package/dist/search/search2.js +2 -2
  134. package/dist/select/select2.js +35 -21
  135. package/dist/select/select2.js.map +1 -1
  136. package/dist/skeleton/skeleton2.js +2 -2
  137. package/dist/sort-button/sort-button2.js +2 -2
  138. package/dist/sparkline/sparkline.utils.js +4 -2
  139. package/dist/sparkline/sparkline.utils.js.map +1 -1
  140. package/dist/sparkline/sparkline2.js +2 -2
  141. package/dist/star-rating/star-rating2.js +2 -2
  142. package/dist/steps/steps2.js +3 -3
  143. package/dist/switch/switch-group2.js +2 -2
  144. package/dist/switch/switch2.js +2 -2
  145. package/dist/tabs/tabs-group2.js +2 -2
  146. package/dist/tabs/tabs.examples.js.map +1 -1
  147. package/dist/tabs/tabs.examples.json +1 -1
  148. package/dist/tabs/tabs2.js +3 -3
  149. package/dist/tag/tag2.js +2 -2
  150. package/dist/textarea/textarea2.js +1 -1
  151. package/dist/time/time2.js +2 -2
  152. package/dist/toast/toast2.js +2 -2
  153. package/dist/toggletip/toggletip-footer.d.ts +1 -1
  154. package/dist/toggletip/toggletip-footer2.js +2 -2
  155. package/dist/toggletip/toggletip-footer2.js.map +1 -1
  156. package/dist/toggletip/toggletip-header.d.ts +1 -1
  157. package/dist/toggletip/toggletip-header2.js +2 -2
  158. package/dist/toggletip/toggletip-header2.js.map +1 -1
  159. package/dist/toggletip/toggletip2.js +2 -2
  160. package/dist/toolbar/toolbar2.js +2 -2
  161. package/dist/tooltip/tooltip2.js +2 -2
  162. package/dist/tree/tree-node2.js +2 -2
  163. package/dist/tree/tree2.js +2 -2
  164. package/dist/week/week2.js +2 -2
  165. package/package.json +8 -8
  166. package/dist/internal/controllers/state-active.controller.d.ts +0 -18
  167. package/dist/internal/controllers/state-active.controller.js +0 -29
  168. package/dist/internal/controllers/state-active.controller.js.map +0 -1
  169. package/dist/internal/controllers/state-current.controller.d.ts +0 -18
  170. package/dist/internal/controllers/state-current.controller.js +0 -28
  171. package/dist/internal/controllers/state-current.controller.js.map +0 -1
  172. package/dist/internal/controllers/state-disabled.controller.d.ts +0 -18
  173. package/dist/internal/controllers/state-disabled.controller.js +0 -20
  174. package/dist/internal/controllers/state-disabled.controller.js.map +0 -1
  175. package/dist/internal/controllers/state-pressed.controller.d.ts +0 -18
  176. package/dist/internal/controllers/state-pressed.controller.js +0 -20
  177. package/dist/internal/controllers/state-pressed.controller.js.map +0 -1
  178. package/dist/internal/controllers/type-button.controller.d.ts +0 -18
  179. package/dist/internal/controllers/type-button.controller.examples.js +0 -6
  180. package/dist/internal/controllers/type-button.controller.examples.js.map +0 -1
  181. package/dist/internal/controllers/type-button.controller.examples.json +0 -16
  182. package/dist/internal/controllers/type-button.controller.js +0 -21
  183. package/dist/internal/controllers/type-button.controller.js.map +0 -1
  184. package/dist/internal/controllers/type-command.controller.d.ts +0 -25
  185. package/dist/internal/controllers/type-command.controller.js +0 -38
  186. package/dist/internal/controllers/type-command.controller.js.map +0 -1
  187. package/dist/internal/controllers/type-interest.controller.d.ts +0 -23
  188. package/dist/internal/controllers/type-interest.controller.js +0 -51
  189. package/dist/internal/controllers/type-interest.controller.js.map +0 -1
  190. package/dist/internal/controllers/type-native-popover-trigger.controller.d.ts +0 -16
  191. package/dist/internal/controllers/type-native-popover-trigger.controller.js +0 -25
  192. package/dist/internal/controllers/type-native-popover-trigger.controller.js.map +0 -1
  193. package/dist/internal/controllers/type-submit.controller.d.ts +0 -22
  194. package/dist/internal/controllers/type-submit.controller.js +0 -49
  195. package/dist/internal/controllers/type-submit.controller.js.map +0 -1
@@ -1803,7 +1803,12 @@
1803
1803
  "values": [{ "name": "default" }]
1804
1804
  }
1805
1805
  ],
1806
- "references": []
1806
+ "references": [
1807
+ {
1808
+ "name": "aria",
1809
+ "url": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time"
1810
+ }
1811
+ ]
1807
1812
  },
1808
1813
  {
1809
1814
  "name": "nve-format-number",
@@ -1921,7 +1926,12 @@
1921
1926
  "values": [{ "name": "default" }]
1922
1927
  }
1923
1928
  ],
1924
- "references": []
1929
+ "references": [
1930
+ {
1931
+ "name": "aria",
1932
+ "url": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data"
1933
+ }
1934
+ ]
1925
1935
  },
1926
1936
  {
1927
1937
  "name": "nve-format-relative-time",
@@ -1971,7 +1981,12 @@
1971
1981
  "values": []
1972
1982
  }
1973
1983
  ],
1974
- "references": []
1984
+ "references": [
1985
+ {
1986
+ "name": "aria",
1987
+ "url": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time"
1988
+ }
1989
+ ]
1975
1990
  },
1976
1991
  {
1977
1992
  "name": "nve-control-group",
@@ -5499,6 +5514,10 @@
5499
5514
  "description": "Provides a designated area at the bottom of a toggletip for actions or supplementary information.\n---\n\n\n### **Slots:**\n - _default_ - default slot for the toggletip footer\n\n### **CSS Properties:**\n - **--border-top** - [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/border-top) _(default: undefined)_\n- **--padding** - [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/padding) _(default: undefined)_\n- **--gap** - [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/gap) _(default: undefined)_",
5500
5515
  "attributes": [],
5501
5516
  "references": [
5517
+ {
5518
+ "name": "aria",
5519
+ "url": "https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/"
5520
+ },
5502
5521
  {
5503
5522
  "name": "markdown",
5504
5523
  "url": "## nve-toggletip-footer\n\nProvides a designated area at the bottom of a toggletip for actions or supplementary information.\n\n### Import\n\n```javascript\nimport '@nvidia-elements/core/toggletip/define.js';\n```\n\n### Slots\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| (default) | `string` | default slot for the toggletip footer |\n\n### CSS Properties\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| --border-top | `string` | [MDN](https://mdn.dev/CSS/border-top) |\n| --padding | `string` | [MDN](https://mdn.dev/CSS/padding) |\n| --gap | `string` | [MDN](https://mdn.dev/CSS/gap) |"
@@ -5510,6 +5529,10 @@
5510
5529
  "description": "Displays a title or contextual label at the top of a toggletip to categorize its contents.\n---\n\n\n### **Slots:**\n - _default_ - default slot for the toggletip header\n\n### **CSS Properties:**\n - **--border-bottom** - [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom) _(default: undefined)_\n- **--padding** - [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/padding) _(default: undefined)_\n- **--border-radius** - [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) _(default: undefined)_",
5511
5530
  "attributes": [],
5512
5531
  "references": [
5532
+ {
5533
+ "name": "aria",
5534
+ "url": "https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/"
5535
+ },
5513
5536
  {
5514
5537
  "name": "markdown",
5515
5538
  "url": "## nve-toggletip-header\n\nDisplays a title or contextual label at the top of a toggletip to categorize its contents.\n\n### Import\n\n```javascript\nimport '@nvidia-elements/core/toggletip/define.js';\n```\n\n### Slots\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| (default) | `string` | default slot for the toggletip header |\n\n### CSS Properties\n\n| name | value | description |\n| ---- | ----- | ----------- |\n| --border-bottom | `string` | [MDN](https://mdn.dev/CSS/border-bottom) |\n| --padding | `string` | [MDN](https://mdn.dev/CSS/padding) |\n| --border-radius | `string` | [MDN](https://mdn.dev/CSS/border-radius) |"
@@ -251,33 +251,6 @@
251
251
  "description": "Simple vertical button group with three icon buttons.",
252
252
  "body": "<nve-button-group orientation=\"vertical\">\n <nve-icon-button icon-name=\"${1:copy}\"></nve-icon-button>\n <nve-icon-button icon-name=\"${2:add-comment}\"></nve-icon-button>\n <nve-icon-button icon-name=\"${3:download}\"></nve-icon-button>\n</nve-button-group>\n"
253
253
  },
254
- "Accordion": {
255
- "srcFile": "accordion.snippets.html",
256
- "prefix": [
257
- "accordion"
258
- ],
259
- "type": "pattern",
260
- "description": "Basic accordion with title and content slot.",
261
- "body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
262
- },
263
- "Accordion with Actions": {
264
- "srcFile": "accordion.snippets.html",
265
- "prefix": [
266
- "accordion-actions"
267
- ],
268
- "type": "pattern",
269
- "description": "Accordion with action buttons in header.",
270
- "body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n\n <nve-icon-button container=\"flat\" icon-name=\"${3:add}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n <nve-icon-button container=\"flat\" icon-name=\"${4:delete}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
271
- },
272
- "Accorion Group": {
273
- "srcFile": "accordion.snippets.html",
274
- "prefix": [
275
- "accordion-group"
276
- ],
277
- "type": "pattern",
278
- "description": "Accordion group with two accordion children.",
279
- "body": "<nve-accordion-group behavior-expand-single container=\"${1:flat}\">\n <nve-accordion>\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${4:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${6:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${7:Content} </nve-accordion-content>\n </nve-accordion>\n</nve-accordion-group>\n$0\n"
280
- },
281
254
  "Alert Group": {
282
255
  "srcFile": "alert.snippets.html",
283
256
  "prefix": [
@@ -304,5 +277,32 @@
304
277
  "type": "pattern",
305
278
  "description": "Alert text and preformatted code output.",
306
279
  "body": "<nve-alert-group status=\"danger\">\n <nve-alert>\n Session Paused:\n <div slot=\"content\" nve-layout=\"column gap:sm align:stretch\">\n <p nve-text=\"body sm\">Failed to verify drives. <a href=\"#\" nve-text=\"link\">Check Status</a></p>\n <nve-divider style=\"--color: var(--nve-sys-text-muted-color)\"></nve-divider>\n <pre nve-text=\"code sm\" style=\"background: transparent !important; margin: 0;\">10:06:01 AM [verify] update /virtual:/verify/\n10:06:11 AM [build] update /virtual:/build/\n10:06:22 AM [error] update /virtual:/error/ - failed to connect to remote\n </pre>\n </div>\n </nve-alert>\n</nve-alert-group>\n$0\n"
280
+ },
281
+ "Accordion": {
282
+ "srcFile": "accordion.snippets.html",
283
+ "prefix": [
284
+ "accordion"
285
+ ],
286
+ "type": "pattern",
287
+ "description": "Basic accordion with title and content slot.",
288
+ "body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
289
+ },
290
+ "Accordion with Actions": {
291
+ "srcFile": "accordion.snippets.html",
292
+ "prefix": [
293
+ "accordion-actions"
294
+ ],
295
+ "type": "pattern",
296
+ "description": "Accordion with action buttons in header.",
297
+ "body": "<nve-accordion behavior-expand container=\"${1:flat}\">\n <nve-accordion-header>\n <div>${2:Title}</div>\n\n <nve-icon-button container=\"flat\" icon-name=\"${3:add}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n <nve-icon-button container=\"flat\" icon-name=\"${4:delete}\" size=\"sm\" slot=\"suffix\"></nve-icon-button>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n</nve-accordion>\n$0\n"
298
+ },
299
+ "Accorion Group": {
300
+ "srcFile": "accordion.snippets.html",
301
+ "prefix": [
302
+ "accordion-group"
303
+ ],
304
+ "type": "pattern",
305
+ "description": "Accordion group with two accordion children.",
306
+ "body": "<nve-accordion-group behavior-expand-single container=\"${1:flat}\">\n <nve-accordion>\n <nve-accordion-header>\n <div>${2:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${3:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${4:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${5:Content} </nve-accordion-content>\n </nve-accordion>\n\n <nve-accordion>\n <nve-accordion-header>\n <div>${6:Title}</div>\n </nve-accordion-header>\n\n <nve-accordion-content> ${7:Content} </nve-accordion-content>\n </nve-accordion>\n</nve-accordion-group>\n$0\n"
307
307
  }
308
308
  }
@@ -1,6 +1,6 @@
1
1
  import { scopedRegistry as e } from "../internal/decorators/scoped-registry.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import { Control as r } from "../forms/control/control2.js";
5
5
  import { IconButton as i } from "../icon-button/icon-button2.js";
6
6
  import { inputStyles as a } from "../input/input2.js";
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-date",
22
- version: "2.0.1"
22
+ version: "2.0.3"
23
23
  };
24
24
  }
25
25
  static {
@@ -1,6 +1,6 @@
1
1
  import { scopedRegistry as e } from "../internal/decorators/scoped-registry.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import { Control as r } from "../forms/control/control2.js";
5
5
  import { IconButton as i } from "../icon-button/icon-button2.js";
6
6
  import { inputStyles as a } from "../input/input2.js";
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-datetime",
22
- version: "2.0.1"
22
+ version: "2.0.3"
23
23
  };
24
24
  }
25
25
  static {
@@ -1,6 +1,6 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./dialog-footer.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  //#region src/dialog/dialog-footer.ts
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dialog-footer",
14
- version: "2.0.1",
14
+ version: "2.0.3",
15
15
  parents: ["nve-dialog"]
16
16
  };
17
17
  }
@@ -1,6 +1,6 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./dialog-header.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  //#region src/dialog/dialog-header.ts
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dialog-header",
14
- version: "2.0.1",
14
+ version: "2.0.3",
15
15
  parents: ["nve-dialog"]
16
16
  };
17
17
  }
@@ -6,7 +6,7 @@ import { TypeNativePopoverController as i } from "../internal/controllers/type-n
6
6
  import { scopedRegistry as a } from "../internal/decorators/scoped-registry.js";
7
7
  import { useStyles as o } from "../internal/styles/index.js";
8
8
  import { popoverStyles as s } from "../internal/styles/popover2.js";
9
- import { __decorate as c } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
9
+ import { __decorate as c } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
10
10
  import { IconButton as l } from "../icon-button/icon-button2.js";
11
11
  import u from "./dialog.global.js";
12
12
  import d from "./dialog.js";
@@ -30,7 +30,7 @@ var h = class extends f {
30
30
  static {
31
31
  this.metadata = {
32
32
  tag: "nve-dialog",
33
- version: "2.0.1"
33
+ version: "2.0.3"
34
34
  };
35
35
  }
36
36
  static {
@@ -1,6 +1,6 @@
1
1
  import { attachInternals as e } from "../internal/utils/a11y.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./divider.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  import { property as o } from "lit/decorators/property.js";
@@ -15,7 +15,7 @@ var s = class extends i {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-divider",
18
- version: "2.0.1"
18
+ version: "2.0.3"
19
19
  };
20
20
  }
21
21
  render() {
package/dist/dot/dot2.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { attachInternals as e } from "../internal/utils/a11y.js";
2
2
  import { statusStateStyles as t, supportStateStyles as n, useStyles as r } from "../internal/styles/index.js";
3
- import { __decorate as i } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as i } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import a from "./dot.js";
5
5
  import { LitElement as o, html as s } from "lit";
6
6
  import { property as c } from "lit/decorators/property.js";
@@ -16,7 +16,7 @@ var l = class extends o {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-dot",
19
- version: "2.0.1"
19
+ version: "2.0.3"
20
20
  };
21
21
  }
22
22
  render() {
@@ -1,6 +1,6 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./drawer-content.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  //#region src/drawer/drawer-content.ts
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-drawer-content",
14
- version: "2.0.1",
14
+ version: "2.0.3",
15
15
  parents: ["nve-drawer"]
16
16
  };
17
17
  }
@@ -1,6 +1,6 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./drawer-footer.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  //#region src/drawer/drawer-footer.ts
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-drawer-footer",
14
- version: "2.0.1",
14
+ version: "2.0.3",
15
15
  parents: ["nve-drawer"]
16
16
  };
17
17
  }
@@ -1,6 +1,6 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./drawer-header.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  //#region src/drawer/drawer-header.ts
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-drawer-header",
14
- version: "2.0.1",
14
+ version: "2.0.3",
15
15
  parents: ["nve-drawer"]
16
16
  };
17
17
  }
@@ -5,7 +5,7 @@ import { typeSSR as r } from "../internal/controllers/type-ssr.controller.js";
5
5
  import { scopedRegistry as i } from "../internal/decorators/scoped-registry.js";
6
6
  import { useStyles as a } from "../internal/styles/index.js";
7
7
  import { popoverStyles as o } from "../internal/styles/popover2.js";
8
- import { __decorate as s } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
8
+ import { __decorate as s } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
9
9
  import { IconButton as c } from "../icon-button/icon-button2.js";
10
10
  import l from "./drawer.js";
11
11
  import { LitElement as u, html as d } from "lit";
@@ -30,7 +30,7 @@ var p = class extends u {
30
30
  static {
31
31
  this.metadata = {
32
32
  tag: "nve-drawer",
33
- version: "2.0.1"
33
+ version: "2.0.3"
34
34
  };
35
35
  }
36
36
  static {
@@ -1,6 +1,6 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./dropdown-footer.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  //#region src/dropdown/dropdown-footer.ts
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dropdown-footer",
14
- version: "2.0.1",
14
+ version: "2.0.3",
15
15
  parents: ["nve-dropdown"]
16
16
  };
17
17
  }
@@ -1,6 +1,6 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { useStyles as t } from "../internal/styles/index.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
3
+ import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
4
4
  import r from "./dropdown-header.js";
5
5
  import { LitElement as i, html as a } from "lit";
6
6
  //#region src/dropdown/dropdown-header.ts
@@ -11,7 +11,7 @@ var o = class extends i {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-dropdown-header",
14
- version: "2.0.1",
14
+ version: "2.0.3",
15
15
  parents: ["nve-dropdown"]
16
16
  };
17
17
  }
@@ -4,7 +4,7 @@ import { TypeNativePopoverController as n } from "../internal/controllers/type-n
4
4
  import { scopedRegistry as r } from "../internal/decorators/scoped-registry.js";
5
5
  import { useStyles as i } from "../internal/styles/index.js";
6
6
  import { popoverStyles as a } from "../internal/styles/popover2.js";
7
- import { __decorate as o } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
7
+ import { __decorate as o } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
8
8
  import { IconButton as s } from "../icon-button/icon-button2.js";
9
9
  import c from "./dropdown.js";
10
10
  import { LitElement as l, html as u } from "lit";
@@ -21,7 +21,7 @@ var p = class extends l {
21
21
  static {
22
22
  this.metadata = {
23
23
  tag: "nve-dropdown",
24
- version: "2.0.1"
24
+ version: "2.0.3"
25
25
  };
26
26
  }
27
27
  static {
@@ -12,7 +12,6 @@ import { Dropdown } from '../dropdown';
12
12
  * @cssprop --nve-dropdown-group-transition
13
13
  * @cssprop --arrow-transform - Transform applied to the popover arrow
14
14
  * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/
15
- * @stable false
16
15
  */
17
16
  export declare class DropdownGroup extends LitElement {
18
17
  #private;
@@ -2,7 +2,7 @@ import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { isSimpleFocusable as t } from "../internal/utils/focus.js";
3
3
  import { appendRootNodeStyle as n, clickOutsideElementBounds as r, getFlattenedFocusableItems as i } from "../internal/utils/dom.js";
4
4
  import { useStyles as a } from "../internal/styles/index.js";
5
- import { __decorate as o } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
5
+ import { __decorate as o } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
6
6
  import s from "./dropdown-group.global.js";
7
7
  import { LitElement as c, html as l } from "lit";
8
8
  import { queryAssignedElements as u } from "lit/decorators/query-assigned-elements.js";
@@ -14,7 +14,7 @@ var d = class extends c {
14
14
  static {
15
15
  this.metadata = {
16
16
  tag: "nve-dropdown-group",
17
- version: "2.0.1",
17
+ version: "2.0.3",
18
18
  children: ["nve-dropdown"]
19
19
  };
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-group.js","names":["#syncDropdowns","#pointerup","#_pointerup","#keydown","#onOpen","#onClose"],"sources":["../../src/dropdown-group/dropdown-group.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 { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport {\n clickOutsideElementBounds,\n appendRootNodeStyle,\n getFlattenedFocusableItems,\n isSimpleFocusable,\n useStyles,\n audit\n} from '@nvidia-elements/core/internal';\nimport type { Dropdown } from '@nvidia-elements/core/dropdown';\nimport globalStyles from './dropdown-group.global.css?inline';\n\n/**\n * @element nve-dropdown-group\n * @description A Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience\n * @since 1.30.1\n * @entrypoint \\@nvidia-elements/core/dropdown-group\n * @slot - default slot for dropdown content\n * @event open - Dispatched when a dropdown in the group opens\n * @event close - Dispatched when a dropdown in the group closes\n * @cssprop --nve-dropdown-group-spacing\n * @cssprop --nve-dropdown-group-transition\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n * @stable false\n */\n@audit()\nexport class DropdownGroup extends LitElement {\n static styles = useStyles([]);\n\n static readonly metadata = {\n tag: 'nve-dropdown-group',\n version: '0.0.0',\n children: ['nve-dropdown']\n };\n\n @queryAssignedElements() protected dropdowns!: Dropdown[];\n\n render() {\n return html`\n <div internal-host>\n <slot @slotchange=${this.#syncDropdowns}></slot>\n </div>\n `;\n }\n\n #_pointerup = (e: PointerEvent) => this.#pointerup(e);\n\n connectedCallback() {\n super.connectedCallback();\n appendRootNodeStyle(this, globalStyles);\n globalThis.document?.addEventListener('pointerup', this.#_pointerup);\n this.addEventListener('keydown', this.#keydown);\n this.addEventListener('open', this.#onOpen as EventListener);\n this.addEventListener('close', this.#onClose as EventListener);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n globalThis.document?.removeEventListener('pointerup', this.#_pointerup);\n this.removeEventListener('keydown', this.#keydown);\n this.removeEventListener('open', this.#onOpen as EventListener);\n this.removeEventListener('close', this.#onClose as EventListener);\n }\n\n #syncDropdowns() {\n this.dropdowns.forEach(dropdown => {\n dropdown.popoverType = 'manual';\n });\n }\n\n #pointerup(event: PointerEvent) {\n const multipleDropdownsOpen = this.dropdowns.some(dropdown => dropdown.matches(':popover-open'));\n const pointerIsOutsideGroup = this.dropdowns.every(dropdown => clickOutsideElementBounds(event, dropdown));\n if (multipleDropdownsOpen && pointerIsOutsideGroup) {\n this.close();\n }\n }\n\n #keydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n if (event.code === 'Escape') {\n this.close();\n }\n if (event.code === 'ArrowRight') {\n const targetId = target.getAttribute('popovertarget');\n const dropdown = this.dropdowns.find(d => d.id === targetId);\n dropdown?.showPopover();\n }\n if (event.code === 'ArrowLeft' && isSimpleFocusable(event.target as HTMLElement)) {\n target.closest('nve-dropdown')?.hidePopover();\n }\n }\n\n #onOpen(event: CustomEvent) {\n const dropdown = event.target as HTMLElement;\n const isLocalDropdown = dropdown.localName === 'nve-dropdown' && this.dropdowns.find(d => d === dropdown);\n if (isLocalDropdown) {\n getFlattenedFocusableItems(dropdown)[0]?.focus();\n }\n }\n\n #onClose(event: CustomEvent) {\n const element = event.target as HTMLElement;\n const isLocalDropdown = element.localName === 'nve-dropdown' && this.dropdowns.find(d => d === element);\n if (isLocalDropdown) {\n // _activeTrigger is a popover controller internal API\n const dropdown = element as Dropdown & { _activeTrigger?: HTMLElement };\n dropdown._activeTrigger?.focus();\n }\n }\n\n close() {\n this.querySelectorAll('nve-dropdown').forEach(d => d.hidePopover());\n }\n}\n"],"mappings":";;;;;;;;;AA+BO,IAAA,IAAA,cAA4B,EAAW;;gBAC5B,EAAU,CAAC,CAAC;;;kBAED;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,cAAc;EAC3B;;CAIA,SAAS;EACP,OAAO,CAAI,yCAEa,KAAKA,GAAe;CAG9C;CAEA,MAAe,MAAoB,KAAKC,GAAW,CAAC;CAEpD,oBAAoB;EAMlB,AALA,MAAM,kBAAkB,GACxB,EAAoB,MAAM,CAAY,GACtC,WAAW,UAAU,iBAAiB,aAAa,KAAKC,EAAW,GACnE,KAAK,iBAAiB,WAAW,KAAKC,EAAQ,GAC9C,KAAK,iBAAiB,QAAQ,KAAKC,EAAwB,GAC3D,KAAK,iBAAiB,SAAS,KAAKC,EAAyB;CAC/D;CAEA,uBAAuB;EAKrB,AAJA,MAAM,qBAAqB,GAC3B,WAAW,UAAU,oBAAoB,aAAa,KAAKH,EAAW,GACtE,KAAK,oBAAoB,WAAW,KAAKC,EAAQ,GACjD,KAAK,oBAAoB,QAAQ,KAAKC,EAAwB,GAC9D,KAAK,oBAAoB,SAAS,KAAKC,EAAyB;CAClE;CAEA,KAAiB;EACf,KAAK,UAAU,SAAQ,MAAY;GACjC,EAAS,cAAc;EACzB,CAAC;CACH;CAEA,GAAW,GAAqB;EAC9B,IAAM,IAAwB,KAAK,UAAU,MAAK,MAAY,EAAS,QAAQ,eAAe,CAAC,GACzF,IAAwB,KAAK,UAAU,OAAM,MAAY,EAA0B,GAAO,CAAQ,CAAC;EACzG,AAAI,KAAyB,KAC3B,KAAK,MAAM;CAEf;CAEA,GAAS,GAAsB;EAC7B,IAAM,IAAS,EAAM;EAIrB,IAHI,EAAM,SAAS,YACjB,KAAK,MAAM,GAET,EAAM,SAAS,cAAc;GAC/B,IAAM,IAAW,EAAO,aAAa,eAAe;GAEpD,KADsB,UAAU,MAAK,MAAK,EAAE,OAAO,CACnD,GAAU,YAAY;EACxB;EACA,AAAI,EAAM,SAAS,eAAe,EAAkB,EAAM,MAAqB,KAC7E,EAAO,QAAQ,cAAc,GAAG,YAAY;CAEhD;CAEA,GAAQ,GAAoB;EAC1B,IAAM,IAAW,EAAM;EAEvB,AADwB,EAAS,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,CAAQ,KAEtG,EAA2B,CAAQ,EAAE,IAAI,MAAM;CAEnD;CAEA,GAAS,GAAoB;EAC3B,IAAM,IAAU,EAAM;EAEtB,AADwB,EAAQ,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,CAAO,KAIpG,EAAS,gBAAgB,MAAM;CAEnC;CAEA,QAAQ;EACN,KAAK,iBAAiB,cAAc,EAAE,SAAQ,MAAK,EAAE,YAAY,CAAC;CACpE;AACF;GA/EG,EAAsB,CAAA,GAAA,EAAA,WAAA,aAAA,KAAA,CAAA,UAVxB,EAAM,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"dropdown-group.js","names":["#syncDropdowns","#pointerup","#_pointerup","#keydown","#onOpen","#onClose"],"sources":["../../src/dropdown-group/dropdown-group.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 { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport {\n clickOutsideElementBounds,\n appendRootNodeStyle,\n getFlattenedFocusableItems,\n isSimpleFocusable,\n useStyles,\n audit\n} from '@nvidia-elements/core/internal';\nimport type { Dropdown } from '@nvidia-elements/core/dropdown';\nimport globalStyles from './dropdown-group.global.css?inline';\n\n/**\n * @element nve-dropdown-group\n * @description A Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience\n * @since 1.30.1\n * @entrypoint \\@nvidia-elements/core/dropdown-group\n * @slot - default slot for dropdown content\n * @event open - Dispatched when a dropdown in the group opens\n * @event close - Dispatched when a dropdown in the group closes\n * @cssprop --nve-dropdown-group-spacing\n * @cssprop --nve-dropdown-group-transition\n * @cssprop --arrow-transform - Transform applied to the popover arrow\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\nexport class DropdownGroup extends LitElement {\n static styles = useStyles([]);\n\n static readonly metadata = {\n tag: 'nve-dropdown-group',\n version: '0.0.0',\n children: ['nve-dropdown']\n };\n\n @queryAssignedElements() protected dropdowns!: Dropdown[];\n\n render() {\n return html`\n <div internal-host>\n <slot @slotchange=${this.#syncDropdowns}></slot>\n </div>\n `;\n }\n\n #_pointerup = (e: PointerEvent) => this.#pointerup(e);\n\n connectedCallback() {\n super.connectedCallback();\n appendRootNodeStyle(this, globalStyles);\n globalThis.document?.addEventListener('pointerup', this.#_pointerup);\n this.addEventListener('keydown', this.#keydown);\n this.addEventListener('open', this.#onOpen as EventListener);\n this.addEventListener('close', this.#onClose as EventListener);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n globalThis.document?.removeEventListener('pointerup', this.#_pointerup);\n this.removeEventListener('keydown', this.#keydown);\n this.removeEventListener('open', this.#onOpen as EventListener);\n this.removeEventListener('close', this.#onClose as EventListener);\n }\n\n #syncDropdowns() {\n this.dropdowns.forEach(dropdown => {\n dropdown.popoverType = 'manual';\n });\n }\n\n #pointerup(event: PointerEvent) {\n const multipleDropdownsOpen = this.dropdowns.some(dropdown => dropdown.matches(':popover-open'));\n const pointerIsOutsideGroup = this.dropdowns.every(dropdown => clickOutsideElementBounds(event, dropdown));\n if (multipleDropdownsOpen && pointerIsOutsideGroup) {\n this.close();\n }\n }\n\n #keydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n if (event.code === 'Escape') {\n this.close();\n }\n if (event.code === 'ArrowRight') {\n const targetId = target.getAttribute('popovertarget');\n const dropdown = this.dropdowns.find(d => d.id === targetId);\n dropdown?.showPopover();\n }\n if (event.code === 'ArrowLeft' && isSimpleFocusable(event.target as HTMLElement)) {\n target.closest('nve-dropdown')?.hidePopover();\n }\n }\n\n #onOpen(event: CustomEvent) {\n const dropdown = event.target as HTMLElement;\n const isLocalDropdown = dropdown.localName === 'nve-dropdown' && this.dropdowns.find(d => d === dropdown);\n if (isLocalDropdown) {\n getFlattenedFocusableItems(dropdown)[0]?.focus();\n }\n }\n\n #onClose(event: CustomEvent) {\n const element = event.target as HTMLElement;\n const isLocalDropdown = element.localName === 'nve-dropdown' && this.dropdowns.find(d => d === element);\n if (isLocalDropdown) {\n // _activeTrigger is a popover controller internal API\n const dropdown = element as Dropdown & { _activeTrigger?: HTMLElement };\n dropdown._activeTrigger?.focus();\n }\n }\n\n close() {\n this.querySelectorAll('nve-dropdown').forEach(d => d.hidePopover());\n }\n}\n"],"mappings":";;;;;;;;;AA8BO,IAAA,IAAA,cAA4B,EAAW;;gBAC5B,EAAU,CAAC,CAAC;;;kBAED;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,cAAc;EAC3B;;CAIA,SAAS;EACP,OAAO,CAAI,yCAEa,KAAKA,GAAe;CAG9C;CAEA,MAAe,MAAoB,KAAKC,GAAW,CAAC;CAEpD,oBAAoB;EAMlB,AALA,MAAM,kBAAkB,GACxB,EAAoB,MAAM,CAAY,GACtC,WAAW,UAAU,iBAAiB,aAAa,KAAKC,EAAW,GACnE,KAAK,iBAAiB,WAAW,KAAKC,EAAQ,GAC9C,KAAK,iBAAiB,QAAQ,KAAKC,EAAwB,GAC3D,KAAK,iBAAiB,SAAS,KAAKC,EAAyB;CAC/D;CAEA,uBAAuB;EAKrB,AAJA,MAAM,qBAAqB,GAC3B,WAAW,UAAU,oBAAoB,aAAa,KAAKH,EAAW,GACtE,KAAK,oBAAoB,WAAW,KAAKC,EAAQ,GACjD,KAAK,oBAAoB,QAAQ,KAAKC,EAAwB,GAC9D,KAAK,oBAAoB,SAAS,KAAKC,EAAyB;CAClE;CAEA,KAAiB;EACf,KAAK,UAAU,SAAQ,MAAY;GACjC,EAAS,cAAc;EACzB,CAAC;CACH;CAEA,GAAW,GAAqB;EAC9B,IAAM,IAAwB,KAAK,UAAU,MAAK,MAAY,EAAS,QAAQ,eAAe,CAAC,GACzF,IAAwB,KAAK,UAAU,OAAM,MAAY,EAA0B,GAAO,CAAQ,CAAC;EACzG,AAAI,KAAyB,KAC3B,KAAK,MAAM;CAEf;CAEA,GAAS,GAAsB;EAC7B,IAAM,IAAS,EAAM;EAIrB,IAHI,EAAM,SAAS,YACjB,KAAK,MAAM,GAET,EAAM,SAAS,cAAc;GAC/B,IAAM,IAAW,EAAO,aAAa,eAAe;GAEpD,KADsB,UAAU,MAAK,MAAK,EAAE,OAAO,CACnD,GAAU,YAAY;EACxB;EACA,AAAI,EAAM,SAAS,eAAe,EAAkB,EAAM,MAAqB,KAC7E,EAAO,QAAQ,cAAc,GAAG,YAAY;CAEhD;CAEA,GAAQ,GAAoB;EAC1B,IAAM,IAAW,EAAM;EAEvB,AADwB,EAAS,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,CAAQ,KAEtG,EAA2B,CAAQ,EAAE,IAAI,MAAM;CAEnD;CAEA,GAAS,GAAoB;EAC3B,IAAM,IAAU,EAAM;EAEtB,AADwB,EAAQ,cAAc,kBAAkB,KAAK,UAAU,MAAK,MAAK,MAAM,CAAO,KAIpG,EAAS,gBAAgB,MAAM;CAEnC;CAEA,QAAQ;EACN,KAAK,iBAAiB,cAAc,EAAE,SAAQ,MAAK,EAAE,YAAY,CAAC;CACpE;AACF;GA/EG,EAAsB,CAAA,GAAA,EAAA,WAAA,aAAA,KAAA,CAAA,UAVxB,EAAM,CAAA,GAAA,CAAA"}
@@ -19,7 +19,6 @@ declare const Dropzone_base: import('@nvidia-elements/forms/mixins').FormControl
19
19
  * @slot content - default slot for content
20
20
  * @csspart icon - The upload icon element
21
21
  * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file
22
- * @stable false
23
22
  */
24
23
  export declare class Dropzone extends Dropzone_base {
25
24
  #private;
@@ -3,7 +3,7 @@ import { I18nController as t } from "../internal/controllers/i18n.controller.js"
3
3
  import { removeEmptyTextNode as n } from "../internal/utils/dom.js";
4
4
  import { scopedRegistry as r } from "../internal/decorators/scoped-registry.js";
5
5
  import { useStyles as i } from "../internal/styles/index.js";
6
- import { __decorate as a } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
6
+ import { __decorate as a } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
7
7
  import { Icon as o } from "../icon/icon2.js";
8
8
  import s from "./dropzone.js";
9
9
  import { fileSizeValidator as c, fileTypeValidator as l, getFileTypeSpecifiers as u } from "./dropzone.util.js";
@@ -20,7 +20,7 @@ var g = class extends m(d) {
20
20
  static {
21
21
  this.metadata = {
22
22
  tag: "nve-dropzone",
23
- version: "2.0.1",
23
+ version: "2.0.3",
24
24
  validators: [l, c],
25
25
  valueSchema: {
26
26
  type: "array",
@@ -1 +1 @@
1
- {"version":3,"file":"dropzone2.js","names":["#i18nController","#preventDefaults","#toggleHighlighted","#addFiles","#handleClick","#handleDragEnter","#handleDragOver","#handleDragLeave","#handleDrop","#removeEmptyNodes","#formatFileTypeSpecifiers","#handleFileInputChange"],"sources":["../../src/dropzone/dropzone.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 { query } from 'lit/decorators/query.js';\nimport {\n formatFileSize,\n useStyles,\n removeEmptyTextNode,\n I18nController,\n scopedRegistry\n} from '@nvidia-elements/core/internal';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport styles from './dropzone.css?inline';\nimport { FormControlMixin } from '@nvidia-elements/forms/mixins';\nimport { fileTypeValidator, fileSizeValidator, getFileTypeSpecifiers } from './dropzone.util';\n\n/**\n * @element nve-dropzone\n * @description A dropzone form control that enables users to drag and drop files onto it.\n * @since 1.29.0\n * @entrypoint \\@nvidia-elements/core/dropzone\n * @event change - Dispatched when the value has changed (files located in event.target)\n * @slot - use only when custom messaging requires it\n * @cssprop --background\n * @cssprop --border-color\n * @cssprop --border-radius\n * @cssprop --padding\n * @cssprop --min-height\n * @cssprop --color\n * @slot icon - default slot for icon\n * @slot content - default slot for content\n * @csspart icon - The upload icon element\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file\n * @stable false\n */\n@scopedRegistry()\nexport class Dropzone extends FormControlMixin<typeof LitElement, File[]>(LitElement) {\n @property()\n accept: string = `image/gif, image/jpeg, image/png, image/svg+xml`;\n\n @property({ attribute: 'max-file-size', type: Number })\n maxFileSize: number = 2 * 1024 ** 2;\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n @query('#dropzone-input')\n private fileInput: HTMLInputElement;\n\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-dropzone',\n version: '0.0.0',\n validators: [fileTypeValidator, fileSizeValidator],\n valueSchema: {\n type: 'array' as const,\n items: {\n type: 'object' as const,\n properties: {\n name: { type: 'string' as const },\n size: { type: 'number' as const },\n type: { type: 'string' as const }\n }\n }\n }\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon\n };\n\n formResetCallback() {\n this.value = [];\n this.requestUpdate();\n }\n\n constructor() {\n super();\n this.value = [];\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('nve-control', '');\n globalThis.document.addEventListener('dragover', this.#preventDefaults);\n globalThis.document.addEventListener('drop', this.#preventDefaults);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n globalThis.document.removeEventListener('dragover', this.#preventDefaults);\n globalThis.document.removeEventListener('drop', this.#preventDefaults);\n }\n\n #preventDefaults(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n #handleClick() {\n this.fileInput.click();\n }\n\n #handleDragEnter(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(true);\n }\n\n #handleDragOver(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(true);\n }\n\n #handleDragLeave(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(false);\n }\n\n #handleDrop(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(false);\n\n const files = Array.from(event.dataTransfer!.files);\n this.#addFiles(files);\n }\n\n #handleFileInputChange(event: Event) {\n this.#preventDefaults(event);\n\n const files = Array.from(this.fileInput.files!);\n this.#addFiles(files);\n\n this.fileInput.value = '';\n }\n\n #addFiles(files: File[]) {\n this.value = [...(this.value ?? []), ...files];\n this.dispatchChangeEvent();\n }\n\n #formatFileTypeSpecifiers(acceptTypes: string) {\n const types = getFileTypeSpecifiers(acceptTypes);\n\n if (types.length === 1) {\n return types[0]!.toUpperCase();\n }\n\n const lastType = types.pop();\n return `${types.join(', ').toUpperCase()} or ${lastType!.toUpperCase()}`;\n }\n\n #toggleHighlighted(highlighted: boolean) {\n this.toggleAttribute('highlighted', highlighted);\n }\n\n #removeEmptyNodes(e: Event) {\n (e.target as HTMLSlotElement).assignedNodes().forEach((node: Node) => removeEmptyTextNode(node));\n }\n\n render() {\n return html`<div internal-host>\n <div class=\"container\"\n @click=${this.#handleClick} \n @dragenter=${this.#handleDragEnter}\n @dragover=${this.#handleDragOver}\n @dragleave=${this.#handleDragLeave}\n @drop=${this.#handleDrop}>\n <svg class=\"border\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"100%\" height=\"100%\" fill=\"none\" rx=\"4\" ry=\"4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-dasharray=\"6,6\" stroke-dashoffset=\"0\" stroke-linecap=\"square\" />\n </svg>\n <slot name=\"icon\"><nve-icon part=\"icon\" class=\"icon\" name=\"upload\"></nve-icon></slot>\n <slot @slotchange=${this.#removeEmptyNodes}>\n <div class=\"text-center\">\n <div class=\"text-bold\">${this.i18n.dragAndDrop} ${this.i18n.files} ${this.i18n.or} <span class=\"text-emphasized\">${this.i18n.browseFiles}</span></div>\n <div class=\"text-muted\">${this.#formatFileTypeSpecifiers(this.accept)} &mdash; ${this.i18n.maxFileSize} ${formatFileSize(this.maxFileSize)}</div>\n </div>\n </slot>\n <input id=\"dropzone-input\" type=\"file\" accept=${this.accept} @change=${this.#handleFileInputChange} multiple hidden></input>\n </div>\n </div>`;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dropzone2.js","names":["#i18nController","#preventDefaults","#toggleHighlighted","#addFiles","#handleClick","#handleDragEnter","#handleDragOver","#handleDragLeave","#handleDrop","#removeEmptyNodes","#formatFileTypeSpecifiers","#handleFileInputChange"],"sources":["../../src/dropzone/dropzone.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 { query } from 'lit/decorators/query.js';\nimport {\n formatFileSize,\n useStyles,\n removeEmptyTextNode,\n I18nController,\n scopedRegistry\n} from '@nvidia-elements/core/internal';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport styles from './dropzone.css?inline';\nimport { FormControlMixin } from '@nvidia-elements/forms/mixins';\nimport { fileTypeValidator, fileSizeValidator, getFileTypeSpecifiers } from './dropzone.util';\n\n/**\n * @element nve-dropzone\n * @description A dropzone form control that enables users to drag and drop files onto it.\n * @since 1.29.0\n * @entrypoint \\@nvidia-elements/core/dropzone\n * @event change - Dispatched when the value has changed (files located in event.target)\n * @slot - use only when custom messaging requires it\n * @cssprop --background\n * @cssprop --border-color\n * @cssprop --border-radius\n * @cssprop --padding\n * @cssprop --min-height\n * @cssprop --color\n * @slot icon - default slot for icon\n * @slot content - default slot for content\n * @csspart icon - The upload icon element\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file\n */\n@scopedRegistry()\nexport class Dropzone extends FormControlMixin<typeof LitElement, File[]>(LitElement) {\n @property()\n accept: string = `image/gif, image/jpeg, image/png, image/svg+xml`;\n\n @property({ attribute: 'max-file-size', type: Number })\n maxFileSize: number = 2 * 1024 ** 2;\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /**\n * Enables internal string values to update for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n @query('#dropzone-input')\n private fileInput: HTMLInputElement;\n\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-dropzone',\n version: '0.0.0',\n validators: [fileTypeValidator, fileSizeValidator],\n valueSchema: {\n type: 'array' as const,\n items: {\n type: 'object' as const,\n properties: {\n name: { type: 'string' as const },\n size: { type: 'number' as const },\n type: { type: 'string' as const }\n }\n }\n }\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon\n };\n\n formResetCallback() {\n this.value = [];\n this.requestUpdate();\n }\n\n constructor() {\n super();\n this.value = [];\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('nve-control', '');\n globalThis.document.addEventListener('dragover', this.#preventDefaults);\n globalThis.document.addEventListener('drop', this.#preventDefaults);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n globalThis.document.removeEventListener('dragover', this.#preventDefaults);\n globalThis.document.removeEventListener('drop', this.#preventDefaults);\n }\n\n #preventDefaults(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n #handleClick() {\n this.fileInput.click();\n }\n\n #handleDragEnter(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(true);\n }\n\n #handleDragOver(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(true);\n }\n\n #handleDragLeave(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(false);\n }\n\n #handleDrop(event: DragEvent) {\n this.#preventDefaults(event);\n this.#toggleHighlighted(false);\n\n const files = Array.from(event.dataTransfer!.files);\n this.#addFiles(files);\n }\n\n #handleFileInputChange(event: Event) {\n this.#preventDefaults(event);\n\n const files = Array.from(this.fileInput.files!);\n this.#addFiles(files);\n\n this.fileInput.value = '';\n }\n\n #addFiles(files: File[]) {\n this.value = [...(this.value ?? []), ...files];\n this.dispatchChangeEvent();\n }\n\n #formatFileTypeSpecifiers(acceptTypes: string) {\n const types = getFileTypeSpecifiers(acceptTypes);\n\n if (types.length === 1) {\n return types[0]!.toUpperCase();\n }\n\n const lastType = types.pop();\n return `${types.join(', ').toUpperCase()} or ${lastType!.toUpperCase()}`;\n }\n\n #toggleHighlighted(highlighted: boolean) {\n this.toggleAttribute('highlighted', highlighted);\n }\n\n #removeEmptyNodes(e: Event) {\n (e.target as HTMLSlotElement).assignedNodes().forEach((node: Node) => removeEmptyTextNode(node));\n }\n\n render() {\n return html`<div internal-host>\n <div class=\"container\"\n @click=${this.#handleClick} \n @dragenter=${this.#handleDragEnter}\n @dragover=${this.#handleDragOver}\n @dragleave=${this.#handleDragLeave}\n @drop=${this.#handleDrop}>\n <svg class=\"border\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"100%\" height=\"100%\" fill=\"none\" rx=\"4\" ry=\"4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-dasharray=\"6,6\" stroke-dashoffset=\"0\" stroke-linecap=\"square\" />\n </svg>\n <slot name=\"icon\"><nve-icon part=\"icon\" class=\"icon\" name=\"upload\"></nve-icon></slot>\n <slot @slotchange=${this.#removeEmptyNodes}>\n <div class=\"text-center\">\n <div class=\"text-bold\">${this.i18n.dragAndDrop} ${this.i18n.files} ${this.i18n.or} <span class=\"text-emphasized\">${this.i18n.browseFiles}</span></div>\n <div class=\"text-muted\">${this.#formatFileTypeSpecifiers(this.accept)} &mdash; ${this.i18n.maxFileSize} ${formatFileSize(this.maxFileSize)}</div>\n </div>\n </slot>\n <input id=\"dropzone-input\" type=\"file\" accept=${this.accept} @change=${this.#handleFileInputChange} multiple hidden></input>\n </div>\n </div>`;\n }\n}\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ var a = class extends n {
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-file",
14
- version: "2.0.1"
14
+ version: "2.0.3"
15
15
  };
16
16
  }
17
17
  connectedCallback() {
@@ -6,6 +6,7 @@ import { LitElement } from 'lit';
6
6
  * @since 0.0.0
7
7
  * @entrypoint \@nvidia-elements/core/format-datetime
8
8
  * @slot - Date string to format (such as 2023-07-28T04:20:17.434Z). Serves as fallback before hydration.
9
+ * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time
9
10
  */
10
11
  export declare class FormatDatetime extends LitElement {
11
12
  #private;
@@ -1,7 +1,7 @@
1
1
  import { LogService as e } from "../internal/services/log.service.js";
2
2
  import { typeSSR as t } from "../internal/controllers/type-ssr.controller.js";
3
3
  import { useStyles as n } from "../internal/styles/index.js";
4
- import { __decorate as r } from "../_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.js";
4
+ import { __decorate as r } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/decorate.js";
5
5
  import i from "./format-datetime.js";
6
6
  import { LitElement as a, html as o } from "lit";
7
7
  import { property as s } from "lit/decorators/property.js";
@@ -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.0.1"
16
+ version: "2.0.3"
17
17
  };
18
18
  }
19
19
  get #e() {
@@ -1 +1 @@
1
- {"version":3,"file":"format-datetime2.js","names":["#dateValue","#resolvedLocale","#formattedDate","#parseDate","#formatOptions","#hasPresetStyle","#presetFormatOptions","#granularFormatOptions","#onSlotChange"],"sources":["../../src/format-datetime/format-datetime.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 { useStyles, typeSSR, LogService } from '@nvidia-elements/core/internal';\nimport styles from './format-datetime.css?inline';\n\n/**\n * @element nve-format-datetime\n * @description Formats a date/time value as localized text using the Intl.DateTimeFormat API. Renders inside a semantic time element.\n * Granular options (weekday, year, month, day, hour, minute, second) mirror the Intl.DateTimeFormat API. 'numeric' omits zero-padding, '2-digit' zero-pads.\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/format-datetime\n * @slot - Date string to format (such as 2023-07-28T04:20:17.434Z). Serves as fallback before hydration.\n */\n@typeSSR()\nexport class FormatDatetime extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-format-datetime',\n version: '0.0.0'\n };\n\n /**\n * Optional date string 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: String }) date?: string;\n\n /**\n * Language tag (such as en-US, de-DE). Defaults to document.documentElement.lang or browser default.\n */\n @property({ type: String }) locale?: string;\n\n /**\n * Weekday representation: 'long' | 'short' | 'narrow'.\n */\n @property({ type: String }) weekday?: 'long' | 'short' | 'narrow';\n\n /**\n * Year representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) year?: 'numeric' | '2-digit';\n\n /**\n * Month representation: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow'.\n */\n @property({ type: String }) month?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n\n /**\n * Day representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) day?: 'numeric' | '2-digit';\n\n /**\n * Hour representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) hour?: 'numeric' | '2-digit';\n\n /**\n * Minute representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) minute?: 'numeric' | '2-digit';\n\n /**\n * Second representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) second?: 'numeric' | '2-digit';\n\n /**\n * Preset date formatting style: 'full' | 'long' | 'medium' | 'short'.\n * Preset styles take precedence over granular date and time part options.\n */\n @property({ type: String, attribute: 'date-style' }) dateStyle?: 'full' | 'long' | 'medium' | 'short';\n\n /**\n * Preset time formatting style: 'full' | 'long' | 'medium' | 'short'.\n * Preset styles take precedence over granular date and time part options.\n */\n @property({ type: String, attribute: 'time-style' }) timeStyle?: 'full' | 'long' | 'medium' | 'short';\n\n /**\n * Time zone name display: 'long' | 'short'. Use it with granular options only; preset styles ignore it.\n */\n @property({ type: String, attribute: 'time-zone-name' }) timeZoneName?: 'long' | 'short';\n\n /**\n * IANA time zone identifier (such as 'America/New_York', 'UTC').\n */\n @property({ type: String, attribute: 'time-zone' }) timeZone?: string;\n\n get #dateValue(): string {\n return this.date ?? this.textContent?.trim() ?? '';\n }\n\n get #resolvedLocale(): string | undefined {\n return this.locale ?? (globalThis.document?.documentElement?.lang || undefined);\n }\n\n get #formattedDate(): string {\n const iso = this.#dateValue;\n if (!iso) return '';\n\n const date = this.#parseDate(iso);\n if (!date) return iso;\n\n try {\n return new Intl.DateTimeFormat(this.#resolvedLocale, this.#formatOptions).format(date);\n } catch (e) {\n LogService.warn(`format-datetime: ${(e as Error).message}`);\n return iso;\n }\n }\n\n get #formatOptions(): Intl.DateTimeFormatOptions {\n return this.#hasPresetStyle ? this.#presetFormatOptions : this.#granularFormatOptions;\n }\n\n get #hasPresetStyle(): boolean {\n return this.dateStyle !== undefined || this.timeStyle !== undefined;\n }\n\n get #presetFormatOptions(): Intl.DateTimeFormatOptions {\n const options: Intl.DateTimeFormatOptions = {};\n\n if (this.dateStyle) options.dateStyle = this.dateStyle;\n if (this.timeStyle) options.timeStyle = this.timeStyle;\n if (this.timeZone) options.timeZone = this.timeZone;\n\n return options;\n }\n\n get #granularFormatOptions(): Intl.DateTimeFormatOptions {\n const options: Intl.DateTimeFormatOptions = {};\n\n if (this.weekday) options.weekday = this.weekday;\n if (this.year) options.year = this.year;\n if (this.month) options.month = this.month;\n if (this.day) options.day = this.day;\n if (this.hour) options.hour = this.hour;\n if (this.minute) options.minute = this.minute;\n if (this.second) options.second = this.second;\n if (this.timeZoneName) options.timeZoneName = this.timeZoneName;\n if (this.timeZone) options.timeZone = this.timeZone;\n\n return options;\n }\n\n #parseDate(iso: string): Date | null {\n const date = new Date(iso);\n if (!isNaN(date.getTime())) return date;\n\n LogService.warn(`format-datetime: invalid date value \"${iso}\"`);\n return null;\n }\n\n render() {\n return html`<time internal-host datetime=${this.#dateValue}>${this.#formattedDate}<slot @slotchange=${this.#onSlotChange} hidden></slot></time>`;\n }\n\n #onSlotChange() {\n this.requestUpdate();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"format-datetime2.js","names":["#dateValue","#resolvedLocale","#formattedDate","#parseDate","#formatOptions","#hasPresetStyle","#presetFormatOptions","#granularFormatOptions","#onSlotChange"],"sources":["../../src/format-datetime/format-datetime.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 { useStyles, typeSSR, LogService } from '@nvidia-elements/core/internal';\nimport styles from './format-datetime.css?inline';\n\n/**\n * @element nve-format-datetime\n * @description Formats a date/time value as localized text using the Intl.DateTimeFormat API. Renders inside a semantic time element.\n * Granular options (weekday, year, month, day, hour, minute, second) mirror the Intl.DateTimeFormat API. 'numeric' omits zero-padding, '2-digit' zero-pads.\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/format-datetime\n * @slot - Date string to format (such as 2023-07-28T04:20:17.434Z). Serves as fallback before hydration.\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time\n */\n@typeSSR()\nexport class FormatDatetime extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-format-datetime',\n version: '0.0.0'\n };\n\n /**\n * Optional date string 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: String }) date?: string;\n\n /**\n * Language tag (such as en-US, de-DE). Defaults to document.documentElement.lang or browser default.\n */\n @property({ type: String }) locale?: string;\n\n /**\n * Weekday representation: 'long' | 'short' | 'narrow'.\n */\n @property({ type: String }) weekday?: 'long' | 'short' | 'narrow';\n\n /**\n * Year representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) year?: 'numeric' | '2-digit';\n\n /**\n * Month representation: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow'.\n */\n @property({ type: String }) month?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n\n /**\n * Day representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) day?: 'numeric' | '2-digit';\n\n /**\n * Hour representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) hour?: 'numeric' | '2-digit';\n\n /**\n * Minute representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) minute?: 'numeric' | '2-digit';\n\n /**\n * Second representation: 'numeric' | '2-digit'.\n */\n @property({ type: String }) second?: 'numeric' | '2-digit';\n\n /**\n * Preset date formatting style: 'full' | 'long' | 'medium' | 'short'.\n * Preset styles take precedence over granular date and time part options.\n */\n @property({ type: String, attribute: 'date-style' }) dateStyle?: 'full' | 'long' | 'medium' | 'short';\n\n /**\n * Preset time formatting style: 'full' | 'long' | 'medium' | 'short'.\n * Preset styles take precedence over granular date and time part options.\n */\n @property({ type: String, attribute: 'time-style' }) timeStyle?: 'full' | 'long' | 'medium' | 'short';\n\n /**\n * Time zone name display: 'long' | 'short'. Use it with granular options only; preset styles ignore it.\n */\n @property({ type: String, attribute: 'time-zone-name' }) timeZoneName?: 'long' | 'short';\n\n /**\n * IANA time zone identifier (such as 'America/New_York', 'UTC').\n */\n @property({ type: String, attribute: 'time-zone' }) timeZone?: string;\n\n get #dateValue(): string {\n return this.date ?? this.textContent?.trim() ?? '';\n }\n\n get #resolvedLocale(): string | undefined {\n return this.locale ?? (globalThis.document?.documentElement?.lang || undefined);\n }\n\n get #formattedDate(): string {\n const iso = this.#dateValue;\n if (!iso) return '';\n\n const date = this.#parseDate(iso);\n if (!date) return iso;\n\n try {\n return new Intl.DateTimeFormat(this.#resolvedLocale, this.#formatOptions).format(date);\n } catch (e) {\n LogService.warn(`format-datetime: ${(e as Error).message}`);\n return iso;\n }\n }\n\n get #formatOptions(): Intl.DateTimeFormatOptions {\n return this.#hasPresetStyle ? this.#presetFormatOptions : this.#granularFormatOptions;\n }\n\n get #hasPresetStyle(): boolean {\n return this.dateStyle !== undefined || this.timeStyle !== undefined;\n }\n\n get #presetFormatOptions(): Intl.DateTimeFormatOptions {\n const options: Intl.DateTimeFormatOptions = {};\n\n if (this.dateStyle) options.dateStyle = this.dateStyle;\n if (this.timeStyle) options.timeStyle = this.timeStyle;\n if (this.timeZone) options.timeZone = this.timeZone;\n\n return options;\n }\n\n get #granularFormatOptions(): Intl.DateTimeFormatOptions {\n const options: Intl.DateTimeFormatOptions = {};\n\n if (this.weekday) options.weekday = this.weekday;\n if (this.year) options.year = this.year;\n if (this.month) options.month = this.month;\n if (this.day) options.day = this.day;\n if (this.hour) options.hour = this.hour;\n if (this.minute) options.minute = this.minute;\n if (this.second) options.second = this.second;\n if (this.timeZoneName) options.timeZoneName = this.timeZoneName;\n if (this.timeZone) options.timeZone = this.timeZone;\n\n return options;\n }\n\n #parseDate(iso: string): Date | null {\n const date = new Date(iso);\n if (!isNaN(date.getTime())) return date;\n\n LogService.warn(`format-datetime: invalid date value \"${iso}\"`);\n return null;\n }\n\n render() {\n return html`<time internal-host datetime=${this.#dateValue}>${this.#formattedDate}<slot @slotchange=${this.#onSlotChange} hidden></slot></time>`;\n }\n\n #onSlotChange() {\n this.requestUpdate();\n }\n}\n"],"mappings":"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"}
@@ -13,6 +13,7 @@ export type SignDisplayOption = 'auto' | 'never' | 'always' | 'exceptZero';
13
13
  * @since 0.0.0
14
14
  * @entrypoint \@nvidia-elements/core/format-number
15
15
  * @slot - Numeric string to format (such as 1234567 or 1234.56). Serves as fallback before hydration.
16
+ * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data
16
17
  */
17
18
  export declare class FormatNumber extends LitElement {
18
19
  #private;