@nvidia-elements/core 0.0.2 → 0.0.4

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 (265) hide show
  1. package/CHANGELOG.md +20 -28
  2. package/NOTICE.md +119 -0
  3. package/README.md +1 -10
  4. package/dist/_virtual/{_@oxc-project_runtime@0.115.0 → _@oxc-project_runtime@0.123.0}/helpers/decorate.js +1 -1
  5. package/dist/accordion/accordion2.js +5 -5
  6. package/dist/alert/alert-banner2.js +1 -1
  7. package/dist/alert/alert-group2.js +2 -2
  8. package/dist/alert/alert.examples.js.map +1 -1
  9. package/dist/alert/alert.examples.json +1 -1
  10. package/dist/alert/alert2.js +2 -2
  11. package/dist/avatar/avatar-group2.js +1 -1
  12. package/dist/avatar/avatar2.js +2 -2
  13. package/dist/badge/badge2.js +2 -2
  14. package/dist/breadcrumb/breadcrumb2.js +2 -2
  15. package/dist/bundle.d.ts +2 -0
  16. package/dist/bundles/index.d.ts +214 -35
  17. package/dist/bundles/index.js +13 -6952
  18. package/dist/button/button.examples.js.map +1 -1
  19. package/dist/button/button.examples.json +3 -3
  20. package/dist/button/button2.js +2 -2
  21. package/dist/button-group/button-group2.js +2 -2
  22. package/dist/card/card2.js +5 -5
  23. package/dist/chat-message/chat-message2.js +2 -2
  24. package/dist/checkbox/checkbox-group2.js +2 -2
  25. package/dist/checkbox/checkbox2.js +2 -2
  26. package/dist/checkbox/define.js +6 -3
  27. package/dist/checkbox/define.js.map +1 -1
  28. package/dist/color/color2.js +2 -2
  29. package/dist/color/define.js +5 -3
  30. package/dist/color/define.js.map +1 -1
  31. package/dist/combobox/combobox.d.ts +5 -0
  32. package/dist/combobox/combobox.examples.js.map +1 -1
  33. package/dist/combobox/combobox.examples.json +22 -0
  34. package/dist/combobox/combobox.js +1 -1
  35. package/dist/combobox/combobox.js.map +1 -1
  36. package/dist/combobox/combobox2.js +110 -61
  37. package/dist/combobox/combobox2.js.map +1 -1
  38. package/dist/combobox/define.js +5 -3
  39. package/dist/combobox/define.js.map +1 -1
  40. package/dist/copy-button/copy-button2.js +2 -2
  41. package/dist/custom-elements-jsx.d.ts +125 -63
  42. package/dist/custom-elements-vue.d.ts +125 -63
  43. package/dist/custom-elements.json +1626 -806
  44. package/dist/data.html.json +204 -46
  45. package/dist/data.snippets.json +9 -0
  46. package/dist/date/date2.js +2 -2
  47. package/dist/date/define.js +5 -3
  48. package/dist/date/define.js.map +1 -1
  49. package/dist/datetime/datetime2.js +2 -2
  50. package/dist/datetime/define.js +5 -3
  51. package/dist/datetime/define.js.map +1 -1
  52. package/dist/dialog/dialog-footer2.js +2 -2
  53. package/dist/dialog/dialog-header2.js +2 -2
  54. package/dist/dialog/dialog2.js +2 -2
  55. package/dist/divider/divider2.js +2 -2
  56. package/dist/dot/dot2.js +2 -2
  57. package/dist/drawer/drawer-content2.js +2 -2
  58. package/dist/drawer/drawer-footer2.js +2 -2
  59. package/dist/drawer/drawer-header2.js +2 -2
  60. package/dist/drawer/drawer2.js +2 -2
  61. package/dist/dropdown/dropdown-footer2.js +2 -2
  62. package/dist/dropdown/dropdown-header2.js +2 -2
  63. package/dist/dropdown/dropdown2.js +2 -2
  64. package/dist/dropdown-group/dropdown-group.js +2 -2
  65. package/dist/dropzone/dropzone.examples.js.map +1 -1
  66. package/dist/dropzone/dropzone.examples.json +3 -1
  67. package/dist/dropzone/dropzone2.js +2 -2
  68. package/dist/file/define.js +5 -3
  69. package/dist/file/define.js.map +1 -1
  70. package/dist/file/file2.js +1 -1
  71. package/dist/format-datetime/define.d.ts +6 -0
  72. package/dist/format-datetime/define.js +7 -0
  73. package/dist/format-datetime/define.js.map +1 -0
  74. package/dist/format-datetime/format-datetime.d.ts +74 -0
  75. package/dist/format-datetime/format-datetime.examples.js +6 -0
  76. package/dist/format-datetime/format-datetime.examples.js.map +1 -0
  77. package/dist/format-datetime/format-datetime.examples.json +87 -0
  78. package/dist/format-datetime/format-datetime.js +6 -0
  79. package/dist/format-datetime/format-datetime.js.map +1 -0
  80. package/dist/format-datetime/format-datetime2.js +77 -0
  81. package/dist/format-datetime/format-datetime2.js.map +1 -0
  82. package/dist/format-datetime/index.d.ts +1 -0
  83. package/dist/format-datetime/index.js +2 -0
  84. package/dist/format-relative-time/define.d.ts +6 -0
  85. package/dist/format-relative-time/define.js +7 -0
  86. package/dist/format-relative-time/define.js.map +1 -0
  87. package/dist/format-relative-time/format-relative-time.d.ts +47 -0
  88. package/dist/format-relative-time/format-relative-time.examples.js +6 -0
  89. package/dist/format-relative-time/format-relative-time.examples.js.map +1 -0
  90. package/dist/format-relative-time/format-relative-time.examples.json +69 -0
  91. package/dist/format-relative-time/format-relative-time.js +6 -0
  92. package/dist/format-relative-time/format-relative-time.js.map +1 -0
  93. package/dist/format-relative-time/format-relative-time2.js +118 -0
  94. package/dist/format-relative-time/format-relative-time2.js.map +1 -0
  95. package/dist/format-relative-time/index.d.ts +1 -0
  96. package/dist/format-relative-time/index.js +2 -0
  97. package/dist/forms/control/control2.js +2 -2
  98. package/dist/forms/control-group/control-group2.js +2 -2
  99. package/dist/forms/control-message/control-message2.js +2 -2
  100. package/dist/forms/forms.examples.js.map +1 -1
  101. package/dist/forms/forms.examples.json +4 -2
  102. package/dist/grid/cell/cell2.js +1 -1
  103. package/dist/grid/column/column.d.ts +1 -0
  104. package/dist/grid/column/column2.js +5 -2
  105. package/dist/grid/column/column2.js.map +1 -1
  106. package/dist/grid/footer/footer2.js +2 -2
  107. package/dist/grid/grid.examples.js.map +1 -1
  108. package/dist/grid/grid.examples.json +1 -1
  109. package/dist/grid/grid2.js +2 -2
  110. package/dist/grid/header/header2.js +2 -2
  111. package/dist/grid/placeholder/placeholder2.js +1 -1
  112. package/dist/grid/row/row2.js +2 -2
  113. package/dist/icon/icon2.js +3 -3
  114. package/dist/icon-button/icon-button2.js +2 -2
  115. package/dist/index.js +1 -1
  116. package/dist/input/define.js +6 -3
  117. package/dist/input/define.js.map +1 -1
  118. package/dist/input/input-group2.js +1 -1
  119. package/dist/input/input2.js +2 -2
  120. package/dist/internal/base/button.js +1 -1
  121. package/dist/internal/index.js +40 -40
  122. package/dist/internal/services/global.service.js +1 -1
  123. package/dist/internal/services/i18n.service.d.ts +1 -0
  124. package/dist/internal/services/i18n.service.js +2 -1
  125. package/dist/internal/services/i18n.service.js.map +1 -1
  126. package/dist/internal/utils/dom.d.ts +10 -0
  127. package/dist/internal/utils/dom.js +57 -51
  128. package/dist/internal/utils/dom.js.map +1 -1
  129. package/dist/logo/logo2.js +2 -2
  130. package/dist/menu/menu-item2.js +2 -2
  131. package/dist/menu/menu.d.ts +3 -0
  132. package/dist/menu/menu2.js +23 -2
  133. package/dist/menu/menu2.js.map +1 -1
  134. package/dist/month/define.js +5 -3
  135. package/dist/month/define.js.map +1 -1
  136. package/dist/month/month2.js +2 -2
  137. package/dist/notification/notification-group2.js +2 -2
  138. package/dist/notification/notification2.js +2 -2
  139. package/dist/page/page-panel/page-panel-content2.js +1 -1
  140. package/dist/page/page-panel/page-panel-footer2.js +2 -2
  141. package/dist/page/page-panel/page-panel-header2.js +2 -2
  142. package/dist/page/page-panel/page-panel2.js +2 -2
  143. package/dist/page/page.examples.js.map +1 -1
  144. package/dist/page/page.examples.json +0 -11
  145. package/dist/page/page2.js +2 -2
  146. package/dist/page-header/page-header.examples.js.map +1 -1
  147. package/dist/page-header/page-header.examples.json +2 -2
  148. package/dist/page-header/page-header2.js +1 -1
  149. package/dist/page-loader/page-loader.js +1 -1
  150. package/dist/page-loader/page-loader.js.map +1 -1
  151. package/dist/page-loader/page-loader2.js +2 -2
  152. package/dist/pagination/pagination2.js +2 -2
  153. package/dist/panel/panel2.js +5 -5
  154. package/dist/password/define.js +5 -3
  155. package/dist/password/define.js.map +1 -1
  156. package/dist/password/password2.js +2 -2
  157. package/dist/preferences-input/preferences-input2.js +2 -2
  158. package/dist/progress-bar/progress-bar2.js +2 -2
  159. package/dist/progress-ring/progress-ring2.js +2 -2
  160. package/dist/progressive-filter-chip/progressive-filter-chip2.js +2 -2
  161. package/dist/pulse/pulse2.js +2 -2
  162. package/dist/radio/define.js +6 -3
  163. package/dist/radio/define.js.map +1 -1
  164. package/dist/radio/radio-group2.js +2 -2
  165. package/dist/radio/radio2.js +2 -2
  166. package/dist/range/define.js +5 -3
  167. package/dist/range/define.js.map +1 -1
  168. package/dist/range/range2.js +2 -2
  169. package/dist/resize-handle/resize-handle.examples.js.map +1 -1
  170. package/dist/resize-handle/resize-handle.examples.json +3 -1
  171. package/dist/resize-handle/resize-handle2.js +2 -2
  172. package/dist/search/define.js +5 -3
  173. package/dist/search/define.js.map +1 -1
  174. package/dist/search/search2.js +2 -2
  175. package/dist/select/define.js +5 -3
  176. package/dist/select/define.js.map +1 -1
  177. package/dist/select/select2.js +2 -2
  178. package/dist/skeleton/skeleton.examples.js.map +1 -1
  179. package/dist/skeleton/skeleton.examples.json +3 -1
  180. package/dist/skeleton/skeleton2.js +2 -2
  181. package/dist/sort-button/sort-button2.js +2 -2
  182. package/dist/sparkline/sparkline.examples.js.map +1 -1
  183. package/dist/sparkline/sparkline.examples.json +3 -1
  184. package/dist/sparkline/sparkline.utils.js +2 -8
  185. package/dist/sparkline/sparkline.utils.js.map +1 -1
  186. package/dist/sparkline/sparkline2.js +2 -2
  187. package/dist/star-rating/define.js +5 -3
  188. package/dist/star-rating/define.js.map +1 -1
  189. package/dist/star-rating/star-rating2.js +2 -2
  190. package/dist/steps/steps2.js +3 -3
  191. package/dist/switch/define.js +6 -3
  192. package/dist/switch/define.js.map +1 -1
  193. package/dist/switch/switch-group2.js +2 -2
  194. package/dist/switch/switch2.js +2 -2
  195. package/dist/tabs/define.d.ts +2 -1
  196. package/dist/tabs/define.js +2 -1
  197. package/dist/tabs/define.js.map +1 -1
  198. package/dist/tabs/index.d.ts +1 -0
  199. package/dist/tabs/index.js +2 -1
  200. package/dist/tabs/tabs-group.d.ts +51 -0
  201. package/dist/tabs/tabs-group.js +6 -0
  202. package/dist/tabs/tabs-group.js.map +1 -0
  203. package/dist/tabs/tabs-group2.js +144 -0
  204. package/dist/tabs/tabs-group2.js.map +1 -0
  205. package/dist/tabs/tabs.examples.js.map +1 -1
  206. package/dist/tabs/tabs.examples.json +38 -2
  207. package/dist/tabs/tabs2.js +3 -3
  208. package/dist/tag/tag2.js +2 -2
  209. package/dist/textarea/define.js +5 -3
  210. package/dist/textarea/define.js.map +1 -1
  211. package/dist/textarea/textarea2.js +1 -1
  212. package/dist/time/define.js +5 -3
  213. package/dist/time/define.js.map +1 -1
  214. package/dist/time/time2.js +2 -2
  215. package/dist/toast/toast2.js +2 -2
  216. package/dist/toggletip/toggletip-footer2.js +2 -2
  217. package/dist/toggletip/toggletip-header2.js +2 -2
  218. package/dist/toggletip/toggletip2.js +2 -2
  219. package/dist/toolbar/toolbar2.js +2 -2
  220. package/dist/tooltip/tooltip2.js +2 -2
  221. package/dist/tree/tree-node.d.ts +1 -1
  222. package/dist/tree/tree-node.js +1 -1
  223. package/dist/tree/tree-node.js.map +1 -1
  224. package/dist/tree/tree-node2.js +2 -2
  225. package/dist/tree/tree-node2.js.map +1 -1
  226. package/dist/tree/tree.examples.js.map +1 -1
  227. package/dist/tree/tree.examples.json +1 -10
  228. package/dist/tree/tree2.js +2 -2
  229. package/dist/week/define.js +5 -3
  230. package/dist/week/define.js.map +1 -1
  231. package/dist/week/week2.js +2 -2
  232. package/package.json +43 -41
  233. package/dist/app-header/app-header.d.ts +0 -39
  234. package/dist/app-header/app-header.js +0 -6
  235. package/dist/app-header/app-header.js.map +0 -1
  236. package/dist/app-header/app-header2.js +0 -54
  237. package/dist/app-header/app-header2.js.map +0 -1
  238. package/dist/app-header/define.d.ts +0 -6
  239. package/dist/app-header/define.js +0 -7
  240. package/dist/app-header/define.js.map +0 -1
  241. package/dist/app-header/index.d.ts +0 -1
  242. package/dist/app-header/index.js +0 -2
  243. package/dist/bundles/audit-logs.js +0 -50
  244. package/dist/bundles/icons.js +0 -285
  245. package/dist/bundles/index.css +0 -2
  246. package/dist/bundles/log.service.js +0 -90
  247. package/dist/bundles/rolldown-runtime.js +0 -11
  248. package/dist/css/module.layout.css +0 -1
  249. package/dist/css/module.typography.css +0 -1
  250. package/dist/index.css +0 -1
  251. package/dist/json-viewer/define.d.ts +0 -8
  252. package/dist/json-viewer/define.js +0 -8
  253. package/dist/json-viewer/define.js.map +0 -1
  254. package/dist/json-viewer/index.d.ts +0 -2
  255. package/dist/json-viewer/index.js +0 -3
  256. package/dist/json-viewer/json-viewer.d.ts +0 -25
  257. package/dist/json-viewer/json-viewer.js +0 -6
  258. package/dist/json-viewer/json-viewer.js.map +0 -1
  259. package/dist/json-viewer/json-viewer2.js +0 -39
  260. package/dist/json-viewer/json-viewer2.js.map +0 -1
  261. package/dist/json-viewer/node/node.d.ts +0 -21
  262. package/dist/json-viewer/node/node.js +0 -6
  263. package/dist/json-viewer/node/node.js.map +0 -1
  264. package/dist/json-viewer/node/node2.js +0 -72
  265. package/dist/json-viewer/node/node2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tree.examples.js","names":["#getNodeList","#open","#close"],"sources":["../../src/tree/tree.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement, nothing } from 'lit';\nimport { state } from 'lit/decorators/state.js';\nimport '@nvidia-elements/core/tree/define.js';\nimport '@nvidia-elements/core/checkbox/define.js';\nimport '@nvidia-elements/core/input/define.js';\nimport '@nvidia-elements/core/radio/define.js';\nimport '@nvidia-elements/core/progress-ring/define.js';\n\nexport default {\n title: 'Elements/Tree',\n component: 'nve-tree',\n};\n\n/**\n * @summary Basic tree component with expandable nodes, providing hierarchical data display and navigation for structured content organization.\n */\nexport const Default = {\n render: () => html`\n <nve-tree behavior-expand>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with border styling for enhanced visual separation and container definition, improving content structure perception.\n */\nexport const Border = {\n render: () => html`\n <nve-tree behavior-expand border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Single-selection tree for choosing one item from hierarchical options, enabling focused navigation and content selection.\n */\nexport const Selectable = {\n render: () => html`\n <nve-tree selectable=\"single\" behavior-expand behavior-select border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node selected>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Multi-selection tree for choosing many items from hierarchical options, enabling bulk operations and comprehensive content management.\n */\nexport const SelectableMultiple = {\n render: () => html`\n <nve-tree selectable=\"multi\" behavior-expand behavior-select border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node selected>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Interactive selection handling using the select event, with callbacks for node selection changes.\n * @tags test-case\n */\nexport const SelectEvent = {\n render: () => html`\n <div nve-layout=\"column gap:md\">\n <div nve-layout=\"row gap:md\">\n <nve-tree id=\"select-event-tree\" selectable=\"single\" behavior-expand behavior-select border>\n <nve-tree-node expanded>\n Documents\n <nve-tree-node>Annual Report.pdf</nve-tree-node>\n <nve-tree-node>Budget.xlsx</nve-tree-node>\n <nve-tree-node expanded>\n Projects\n <nve-tree-node>Project Alpha</nve-tree-node>\n <nve-tree-node>Project Beta</nve-tree-node>\n <nve-tree-node>Project Gamma</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Images\n <nve-tree-node>photo-001.jpg</nve-tree-node>\n <nve-tree-node>photo-002.jpg</nve-tree-node>\n <nve-tree-node>screenshot.png</nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n <div nve-layout=\"column gap:sm\">\n <p nve-text=\"body sm\"><strong>Selected:</strong> <span id=\"selected-node\">None</span></p>\n <p nve-text=\"body sm\"><strong>History:</strong></p>\n <ul id=\"selection-history\" nve-text=\"body sm\">\n <li>No selections yet</li>\n </ul>\n </div>\n </div>\n </div>\n <script type=\"module\">\n const tree = document.querySelector('#select-event-tree');\n const selectedDisplay = document.querySelector('#selected-node');\n const historyList = document.querySelector('#selection-history');\n const history = [];\n tree.addEventListener('select', (e) => {\n const node = e.detail;\n const nodeText = node.textContent?.trim().split('\\\\n')[0] ?? 'Unknown';\n selectedDisplay.textContent = nodeText;\n history.push(nodeText);\n if (history.length > 5) history.shift();\n historyList.innerHTML = history.map(item => '<li>' + item + '</li>').join('');\n });\n </script>\n `\n};\n\n/**\n * @summary Tree with highlighted nodes for emphasizing specific items, providing visual focus and search result signal in hierarchical data.\n */\nexport const Highlight = {\n render: () => html`\n <nve-tree behavior-expand border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node highlighted>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node highlighted>node 1-3-1</nve-tree-node>\n <nve-tree-node highlighted>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with navigation links for hierarchical menu systems, enabling structured site navigation and content discovery.\n */\nexport const Links = {\n render: () => html`\n <nve-tree behavior-expand>\n <nve-tree-node><a href=\"#\">Documentation</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Support</a></nve-tree-node>\n <nve-tree-node expanded>\n Elements\n <nve-tree-node><a href=\"#\">Alert</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Badge</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Dialog</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Frameworks\n <nve-tree-node><a href=\"#\">Angular</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">React</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Vue</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Languages\n <nve-tree-node><a href=\"#\">JavaScript</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">HTML</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">CSS</a></nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with loading states for asynchronous data, including progress indicators and dynamic content loading in hierarchical structures.\n */\nexport const Async = {\n render: () => html`\n <nve-tree border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node>\n <div nve-layout=\"row gap:xs\">\n <nve-progress-ring status=\"accent\" size=\"xs\"></nve-progress-ring> loading\n </div>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with rich node content including forms, controls, and interactive elements, enabling complex data management within hierarchical structures.\n */\nexport const NodeContent = {\n render: () => html`\n <nve-tree selectable=\"multi\" border behavior-expand behavior-select>\n <nve-tree-node expanded>\n text content\n <nve-tree-node>\n <a href=\"#\" nve-text=\"link\">node link</a>\n </nve-tree-node>\n <nve-tree-node>\n long form content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n interactive content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <p nve-text=\"body sm\">This is some longer content in a tree node.</p>\n <nve-button>hello there</nve-button>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n input control\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n node content checkbox group\n <nve-checkbox-group slot=\"content\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n </nve-tree-node>\n <nve-tree-node>\n node content radio group\n <nve-radio-group slot=\"content\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Dynamic tree with programmatic node creation and management, for scalable hierarchical data handling with large datasets.\n * @tags test-case\n */\nexport const DynamicTree = {\n render: () => html`<test-dynamic-tree></test-dynamic-tree>`\n};\n\n/* eslint-disable @nvidia-elements/lint/no-missing-popover-trigger */\n\n/**\n * @summary Tree integrated in vertical navigation drawer, providing structured sidebar navigation for application layouts and content organization.\n */\nexport const VerticalNav = {\n render: () => html`\n <nve-drawer inline size=\"sm\" position=\"left\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Navigation</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-tree behavior-expand>\n <nve-tree-node><a href=\"#\">Documentation</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Support</a></nve-tree-node>\n <nve-tree-node expanded>\n Elements\n <nve-tree-node><a href=\"#\">Alert</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Badge</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Dialog</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Frameworks\n <nve-tree-node><a href=\"#\">Angular</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">React</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Vue</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Languages\n <nve-tree-node><a href=\"#\">JavaScript</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">HTML</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">CSS</a></nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n </nve-drawer-content>\n </nve-drawer>\n `\n};\n\n/**\n * @summary Tree with scrollable container for handling deep hierarchies and large datasets, ensuring optimal space usage and navigation.\n * @tags test-case\n */\nexport const Overflow = {\n render: () => html`\n <div style=\"width: 300px; height: 500px; overflow: auto; outline: 1px solid #ccc; padding: 12px\">\n <nve-tree border behavior-expand>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3\n <nve-tree-node>node 1-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3\n <nve-tree-node>node 1-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node expanded>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n </div>\n `\n};\n\n/**\n * @summary Tree with bulk node creation for performance testing, verifying efficient handling of large numbers of nodes and dynamic expansion.\n * @tags test-case performance\n */\nexport const BulkCreation = {\n render: () => html`\n <nve-tree>\n <nve-tree-node id=\"root\" expandable>Test</nve-tree-node>\n </nve-tree>\n <script type=\"module\">\n const rootEl = document.querySelector('nve-tree-node#root');\n\n rootEl.addEventListener('open', () => {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < 400; i++) {\n rootEl.expanded = true;\n const childEl = document.createElement('nve-tree-node');\n childEl.innerText = 'Child ' + i;\n fragment.append(childEl);\n }\n rootEl.append(fragment);\n });\n\n rootEl.addEventListener('close', () => {\n rootEl.expanded = false;\n rootEl.replaceChildren(document.createTextNode('Test'));\n });\n </script>\n `\n};\n\n/**\n * @summary Examples of invalid tree usage patterns for testing and documentation purposes, showing what not to do when implementing trees.\n * @tags anti-pattern\n */\nexport const Audit = {\n render: () => html`\n <div>\n <nve-tree-node>node</nve-tree-node>\n </div>\n `\n};\n\nexport class TestDynamicTree extends LitElement {\n @state() nodes = createTree();\n\n render() {\n return html`\n <p nve-text=\"body\">total nodes: 10,000</p>\n <nve-tree border expandable>\n ${this.nodes.map(node => this.#getNodeList(node))}\n </nve-tree>`;\n }\n\n #getNodeList(node) {\n return html`<nve-tree-node .expandable=${node.nodes.length} .expanded=${node.expanded} @open=${e => this.#open(e, node)} @close=${e => this.#close(e, node)}>\n ${node.label} node\n ${node.expanded ? node.nodes.map(n => html`${this.#getNodeList(n)}`) : nothing}\n </nve-tree-node>`\n }\n\n #open(e, node) {\n e.stopPropagation();\n node.expanded = true;\n this.nodes = [...this.nodes];\n this.requestUpdate();\n }\n\n #close(e, node) {\n e.stopPropagation();\n node.expanded = false;\n this.nodes = [...this.nodes];\n this.requestUpdate();\n }\n}\n\n/** generates a tree with 10 nodes with 4 layers */\nfunction createTree() {\n return createNodeList(10).map(i => {\n i.nodes = createNodeList(10);\n i.nodes.forEach(j => {\n j.nodes = createNodeList(10);\n j.nodes.forEach(k => {\n k.nodes = createNodeList(10);\n })\n })\n return i;\n });\n}\n\nfunction createNodeList(nodes: number) {\n return new Array(nodes).fill('').map((_, i) => ({ label: `${i}`, expanded: false, nodes: [] }));\n}\n\ncustomElements.get('test-dynamic-tree') || customElements.define('test-dynamic-tree', TestDynamicTree);"],"mappings":";AAGA,IAAA,IAAe"}
1
+ {"version":3,"file":"tree.examples.js","names":["#getNodeList","#open","#close"],"sources":["../../src/tree/tree.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement, nothing } from 'lit';\nimport { state } from 'lit/decorators/state.js';\nimport '@nvidia-elements/core/tree/define.js';\nimport '@nvidia-elements/core/checkbox/define.js';\nimport '@nvidia-elements/core/input/define.js';\nimport '@nvidia-elements/core/radio/define.js';\nimport '@nvidia-elements/core/progress-ring/define.js';\n\nexport default {\n title: 'Elements/Tree',\n component: 'nve-tree',\n};\n\n/**\n * @summary Basic tree component with expandable nodes, providing hierarchical data display and navigation for structured content organization.\n */\nexport const Default = {\n render: () => html`\n <nve-tree behavior-expand>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with border styling for enhanced visual separation and container definition, improving content structure perception.\n */\nexport const Border = {\n render: () => html`\n <nve-tree behavior-expand border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Single-selection tree for choosing one item from hierarchical options, enabling focused navigation and content selection.\n */\nexport const Selectable = {\n render: () => html`\n <nve-tree selectable=\"single\" behavior-expand behavior-select border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node selected>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Multi-selection tree for choosing many items from hierarchical options, enabling bulk operations and comprehensive content management.\n */\nexport const SelectableMultiple = {\n render: () => html`\n <nve-tree selectable=\"multi\" behavior-expand behavior-select border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node selected>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Interactive selection handling using the select event, with callbacks for node selection changes.\n * @tags test-case\n */\nexport const SelectEvent = {\n render: () => html`\n <div nve-layout=\"column gap:md\">\n <div nve-layout=\"row gap:md\">\n <nve-tree id=\"select-event-tree\" selectable=\"single\" behavior-expand behavior-select border>\n <nve-tree-node expanded>\n Documents\n <nve-tree-node>Annual Report.pdf</nve-tree-node>\n <nve-tree-node>Budget.xlsx</nve-tree-node>\n <nve-tree-node expanded>\n Projects\n <nve-tree-node>Project Alpha</nve-tree-node>\n <nve-tree-node>Project Beta</nve-tree-node>\n <nve-tree-node>Project Gamma</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Images\n <nve-tree-node>photo-001.jpg</nve-tree-node>\n <nve-tree-node>photo-002.jpg</nve-tree-node>\n <nve-tree-node>screenshot.png</nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n <div nve-layout=\"column gap:sm\">\n <p nve-text=\"body sm\"><strong>Selected:</strong> <span id=\"selected-node\">None</span></p>\n <p nve-text=\"body sm\"><strong>History:</strong></p>\n <ul id=\"selection-history\" nve-text=\"body sm\">\n <li>No selections yet</li>\n </ul>\n </div>\n </div>\n </div>\n <script type=\"module\">\n const tree = document.querySelector('#select-event-tree');\n const selectedDisplay = document.querySelector('#selected-node');\n const historyList = document.querySelector('#selection-history');\n const history = [];\n tree.addEventListener('select', (e) => {\n const node = e.detail;\n const nodeText = node.textContent?.trim().split('\\\\n')[0] ?? 'Unknown';\n selectedDisplay.textContent = nodeText;\n history.push(nodeText);\n if (history.length > 5) history.shift();\n historyList.innerHTML = history.map(item => '<li>' + item + '</li>').join('');\n });\n </script>\n `\n};\n\n/**\n * @summary Tree with highlighted nodes for emphasizing specific items, providing visual focus and search result signal in hierarchical data.\n */\nexport const Highlight = {\n render: () => html`\n <nve-tree behavior-expand border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node highlighted>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node highlighted>node 1-3-1</nve-tree-node>\n <nve-tree-node highlighted>node 1-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with navigation links for hierarchical menu systems, enabling structured site navigation and content discovery.\n */\nexport const Links = {\n render: () => html`\n <nve-tree behavior-expand>\n <nve-tree-node><a href=\"#\">Documentation</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Support</a></nve-tree-node>\n <nve-tree-node expanded>\n Elements\n <nve-tree-node><a href=\"#\">Alert</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Badge</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Dialog</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Frameworks\n <nve-tree-node><a href=\"#\">Angular</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">React</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Vue</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Languages\n <nve-tree-node><a href=\"#\">JavaScript</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">HTML</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">CSS</a></nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with loading states for asynchronous data, including progress indicators and dynamic content loading in hierarchical structures.\n */\nexport const Async = {\n render: () => html`\n <nve-tree border>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node>\n <div nve-layout=\"row gap:xs\">\n <nve-progress-ring status=\"accent\" size=\"xs\"></nve-progress-ring> loading\n </div>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n node 3\n <nve-tree-node>node 3-1</nve-tree-node>\n <nve-tree-node>node 3-2</nve-tree-node>\n <nve-tree-node>\n node 3-3\n <nve-tree-node>node 3-3-1</nve-tree-node>\n <nve-tree-node>node 3-3-2</nve-tree-node>\n <nve-tree-node>node 3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Tree with rich node content including forms, controls, and interactive elements, enabling complex data management within hierarchical structures.\n */\nexport const NodeContent = {\n render: () => html`\n <nve-tree selectable=\"multi\" border behavior-expand behavior-select>\n <nve-tree-node expanded>\n text content\n <nve-tree-node>\n <a href=\".\" nve-text=\"link\">node link</a>\n </nve-tree-node>\n <nve-tree-node>\n inline content <nve-dot status=\"success\" size=\"sm\"></nve-dot>\n </nve-tree-node>\n <nve-tree-node>\n <div nve-text=\"body sm muted\" nve-layout=\"pad-bottom:xs\">block</div>\n <p nve-text=\"body sm\">content</p>\n </nve-tree-node>\n <nve-tree-node>\n long form content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n interactive content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <p nve-text=\"body sm\">This is some longer content in a tree node.</p>\n <nve-button>hello there</nve-button>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n input control\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n node content checkbox group\n <nve-checkbox-group slot=\"content\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n </nve-tree-node>\n <nve-tree-node>\n node content radio group\n <nve-radio-group slot=\"content\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n `\n};\n\n/**\n * @summary Dynamic tree with programmatic node creation and management, for scalable hierarchical data handling with large datasets.\n * @tags test-case\n */\nexport const DynamicTree = {\n render: () => html`<test-dynamic-tree></test-dynamic-tree>`\n};\n\n/**\n * @summary Tree with scrollable container for handling deep hierarchies and large datasets, ensuring optimal space usage and navigation.\n * @tags test-case\n */\nexport const Overflow = {\n render: () => html`\n <div style=\"width: 300px; height: 500px; overflow: auto; outline: 1px solid #ccc; padding: 12px\">\n <nve-tree border behavior-expand>\n <nve-tree-node expanded>\n node 1\n <nve-tree-node>node 1-1</nve-tree-node>\n <nve-tree-node>node 1-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3\n <nve-tree-node>node 1-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3\n <nve-tree-node>node 1-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3\n <nve-tree-node>node 1-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node expanded>\n node 1-3-3-3-3-3-3-3-3\n <nve-tree-node>node 1-3-3-3-3-3-3-3-3-1</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-3-3-2</nve-tree-node>\n <nve-tree-node>node 1-3-3-3-3-3-3-3-3-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n </nve-tree-node>\n <nve-tree-node expanded>\n node 2\n <nve-tree-node>node 2-1</nve-tree-node>\n <nve-tree-node>node 2-2</nve-tree-node>\n <nve-tree-node>node 2-3</nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n </div>\n `\n};\n\n/**\n * @summary Tree with bulk node creation for performance testing, verifying efficient handling of large numbers of nodes and dynamic expansion.\n * @tags test-case performance\n */\nexport const BulkCreation = {\n render: () => html`\n <nve-tree>\n <nve-tree-node id=\"root\" expandable>Test</nve-tree-node>\n </nve-tree>\n <script type=\"module\">\n const rootEl = document.querySelector('nve-tree-node#root');\n\n rootEl.addEventListener('open', () => {\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < 400; i++) {\n rootEl.expanded = true;\n const childEl = document.createElement('nve-tree-node');\n childEl.innerText = 'Child ' + i;\n fragment.append(childEl);\n }\n rootEl.append(fragment);\n });\n\n rootEl.addEventListener('close', () => {\n rootEl.expanded = false;\n rootEl.replaceChildren(document.createTextNode('Test'));\n });\n </script>\n `\n};\n\n/**\n * @summary Examples of invalid tree usage patterns for testing and documentation purposes, showing what not to do when implementing trees.\n * @tags anti-pattern\n */\nexport const Audit = {\n render: () => html`\n <div>\n <nve-tree-node>node</nve-tree-node>\n </div>\n `\n};\n\nexport class TestDynamicTree extends LitElement {\n @state() nodes = createTree();\n\n render() {\n return html`\n <p nve-text=\"body\">total nodes: 10,000</p>\n <nve-tree border expandable>\n ${this.nodes.map(node => this.#getNodeList(node))}\n </nve-tree>`;\n }\n\n #getNodeList(node) {\n return html`<nve-tree-node .expandable=${node.nodes.length} .expanded=${node.expanded} @open=${e => this.#open(e, node)} @close=${e => this.#close(e, node)}>\n ${node.label} node\n ${node.expanded ? node.nodes.map(n => html`${this.#getNodeList(n)}`) : nothing}\n </nve-tree-node>`\n }\n\n #open(e, node) {\n e.stopPropagation();\n node.expanded = true;\n this.nodes = [...this.nodes];\n this.requestUpdate();\n }\n\n #close(e, node) {\n e.stopPropagation();\n node.expanded = false;\n this.nodes = [...this.nodes];\n this.requestUpdate();\n }\n}\n\n/** generates a tree with 10 nodes with 4 layers */\nfunction createTree() {\n return createNodeList(10).map(i => {\n i.nodes = createNodeList(10);\n i.nodes.forEach(j => {\n j.nodes = createNodeList(10);\n j.nodes.forEach(k => {\n k.nodes = createNodeList(10);\n })\n })\n return i;\n });\n}\n\nfunction createNodeList(nodes: number) {\n return new Array(nodes).fill('').map((_, i) => ({ label: `${i}`, expanded: false, nodes: [] }));\n}\n\ncustomElements.get('test-dynamic-tree') || customElements.define('test-dynamic-tree', TestDynamicTree);"],"mappings":";AAGA,IAAA,IAAe"}
@@ -79,7 +79,7 @@
79
79
  {
80
80
  "id": "core-tree_node-content",
81
81
  "name": "NodeContent",
82
- "template": "<nve-tree selectable=\"multi\" border behavior-expand behavior-select>\n <nve-tree-node expanded>\n text content\n <nve-tree-node>\n <a href=\"#\" nve-text=\"link\">node link</a>\n </nve-tree-node>\n <nve-tree-node>\n long form content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n interactive content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <p nve-text=\"body sm\">This is some longer content in a tree node.</p>\n <nve-button>hello there</nve-button>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n input control\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n node content checkbox group\n <nve-checkbox-group slot=\"content\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n </nve-tree-node>\n <nve-tree-node>\n node content radio group\n <nve-radio-group slot=\"content\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n </nve-tree-node>\n </nve-tree-node>\n</nve-tree>\n",
82
+ "template": "<nve-tree selectable=\"multi\" border behavior-expand behavior-select>\n <nve-tree-node expanded>\n text content\n <nve-tree-node>\n <a href=\".\" nve-text=\"link\">node link</a>\n </nve-tree-node>\n <nve-tree-node> inline content <nve-dot status=\"success\" size=\"sm\"></nve-dot> </nve-tree-node>\n <nve-tree-node>\n <div nve-text=\"body sm muted\" nve-layout=\"pad-bottom:xs\">block</div>\n <p nve-text=\"body sm\">content</p>\n </nve-tree-node>\n <nve-tree-node>\n long form content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n <a href=\"#\" nve-text=\"link\">This is some longer content in a tree node.</a>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n interactive content\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <p nve-text=\"body sm\">This is some longer content in a tree node.</p>\n <nve-button>hello there</nve-button>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n input control\n <div slot=\"content\" nve-layout=\"column gap:sm\">\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n <nve-input>\n <label>label</label>\n <input type=\"text\" />\n </nve-input>\n </div>\n </nve-tree-node>\n <nve-tree-node>\n node content checkbox group\n <nve-checkbox-group slot=\"content\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n </nve-tree-node>\n <nve-tree-node>\n node content radio group\n <nve-radio-group slot=\"content\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n </nve-tree-node>\n </nve-tree-node>\n</nve-tree>\n",
83
83
  "summary": "Tree with rich node content including forms, controls, and interactive elements, enabling complex data management within hierarchical structures.",
84
84
  "description": "",
85
85
  "composition": true,
@@ -96,15 +96,6 @@
96
96
  "test-case"
97
97
  ]
98
98
  },
99
- {
100
- "id": "core-tree_vertical-nav",
101
- "name": "VerticalNav",
102
- "template": "<nve-drawer inline size=\"sm\" position=\"left\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Navigation</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-tree behavior-expand>\n <nve-tree-node><a href=\"#\">Documentation</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Support</a></nve-tree-node>\n <nve-tree-node expanded>\n Elements\n <nve-tree-node><a href=\"#\">Alert</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Badge</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Dialog</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Frameworks\n <nve-tree-node><a href=\"#\">Angular</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">React</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Vue</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Languages\n <nve-tree-node><a href=\"#\">JavaScript</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">HTML</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">CSS</a></nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n </nve-drawer-content>\n</nve-drawer>\n",
103
- "summary": "Tree integrated in vertical navigation drawer, providing structured sidebar navigation for application layouts and content organization.",
104
- "description": "",
105
- "composition": false,
106
- "tags": []
107
- },
108
99
  {
109
100
  "id": "core-tree_overflow",
110
101
  "name": "Overflow",
@@ -1,7 +1,7 @@
1
1
  import { appendRootNodeStyle as e } from "../internal/utils/dom.js";
2
2
  import { attachInternals as t } from "../internal/utils/a11y.js";
3
3
  import { onChildListMutation as n } from "../internal/utils/events.js";
4
- import { __decorate as r } from "../_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.js";
4
+ import { __decorate as r } from "../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
5
5
  import { audit as i } from "../internal/controllers/audit.controller.js";
6
6
  import { keyNavigationList as a } from "../internal/controllers/keynav-list.controller.js";
7
7
  import { useStyles as o } from "../internal/styles/index.js";
@@ -22,7 +22,7 @@ var m = class extends d {
22
22
  static {
23
23
  this.metadata = {
24
24
  tag: "nve-tree",
25
- version: "0.0.2",
25
+ version: "0.0.4",
26
26
  children: ["nve-tree-node"]
27
27
  };
28
28
  }
@@ -1,7 +1,9 @@
1
1
  import { define as e } from "../internal/utils/dom.js";
2
- import { Week as t } from "./week2.js";
3
- //#region src/week/define.ts
4
- e(t);
2
+ import { ControlMessage as t } from "../forms/control-message/control-message2.js";
3
+ import { Control as n } from "../forms/control/control2.js";
4
+ import { ControlGroup as r } from "../forms/control-group/control-group2.js";
5
+ import { Week as i } from "./week2.js";
6
+ e(i), e(n), e(r), e(t);
5
7
  //#endregion
6
8
 
7
9
  //# sourceMappingURL=define.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","names":[],"sources":["../../src/week/define.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { define } from '@nvidia-elements/core/internal';\nimport { Week } from '@nvidia-elements/core/week';\nimport '@nvidia-elements/core/forms/define.js';\n\ndefine(Week);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nve-week': Week;\n }\n}\n"],"mappings":";;;AAOA,EAAO,EAAK"}
1
+ {"version":3,"file":"define.js","names":[],"sources":["../../src/week/define.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { define } from '@nvidia-elements/core/internal';\nimport { Week } from '@nvidia-elements/core/week';\nimport { Control, ControlGroup, ControlMessage } from '@nvidia-elements/core/forms';\n\ndefine(Week);\ndefine(Control);\ndefine(ControlGroup);\ndefine(ControlMessage);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nve-week': Week;\n }\n}\n"],"mappings":";;;;;AAOA,EAAO,EAAK,EACZ,EAAO,EAAQ,EACf,EAAO,EAAa,EACpB,EAAO,EAAe"}
@@ -1,4 +1,4 @@
1
- import { __decorate as e } from "../_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.js";
1
+ import { __decorate as e } from "../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
2
2
  import { scopedRegistry as t } from "../internal/decorators/scoped-registry.js";
3
3
  import { useStyles as n } from "../internal/styles/index.js";
4
4
  import { Control as r } from "../forms/control/control2.js";
@@ -19,7 +19,7 @@ var l = class extends r {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-week",
22
- version: "0.0.2"
22
+ version: "0.0.4"
23
23
  };
24
24
  }
25
25
  static {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nvidia-elements/core",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "release": {
5
5
  "extends": "../../release.config.js"
6
6
  },
@@ -28,6 +28,7 @@
28
28
  "files": [
29
29
  "README.md",
30
30
  "CHANGELOG.md",
31
+ "NOTICE.md",
31
32
  "package.json",
32
33
  "postinstall.mjs",
33
34
  "dist/**/*"
@@ -47,7 +48,6 @@
47
48
  "./data.html.json": "./dist/data.html.json",
48
49
  "./data.snippets.json": "./dist/data.snippets.json",
49
50
  "./*.examples.json": "./dist/*.examples.json",
50
- "./css/*": "./dist/css/*",
51
51
  ".": {
52
52
  "types": "./dist/index.d.ts",
53
53
  "default": "./dist/index.js"
@@ -56,7 +56,6 @@
56
56
  "types": "./dist/index.d.ts",
57
57
  "default": "./dist/index.js"
58
58
  },
59
- "./index.css": "./dist/index.css",
60
59
  "./polyfills": {
61
60
  "types": "./dist/polyfills/index.d.ts",
62
61
  "default": "./dist/polyfills/index.js"
@@ -102,18 +101,6 @@
102
101
  "types": "./dist/alert/define.d.ts",
103
102
  "default": "./dist/alert/define.js"
104
103
  },
105
- "./app-header": {
106
- "types": "./dist/app-header/index.d.ts",
107
- "default": "./dist/app-header/index.js"
108
- },
109
- "./app-header/index.js": {
110
- "types": "./dist/app-header/index.d.ts",
111
- "default": "./dist/app-header/index.js"
112
- },
113
- "./app-header/define.js": {
114
- "types": "./dist/app-header/define.d.ts",
115
- "default": "./dist/app-header/define.js"
116
- },
117
104
  "./avatar": {
118
105
  "types": "./dist/avatar/index.d.ts",
119
106
  "default": "./dist/avatar/index.js"
@@ -366,6 +353,30 @@
366
353
  "types": "./dist/file/define.d.ts",
367
354
  "default": "./dist/file/define.js"
368
355
  },
356
+ "./format-datetime": {
357
+ "types": "./dist/format-datetime/index.d.ts",
358
+ "default": "./dist/format-datetime/index.js"
359
+ },
360
+ "./format-datetime/index.js": {
361
+ "types": "./dist/format-datetime/index.d.ts",
362
+ "default": "./dist/format-datetime/index.js"
363
+ },
364
+ "./format-datetime/define.js": {
365
+ "types": "./dist/format-datetime/define.d.ts",
366
+ "default": "./dist/format-datetime/define.js"
367
+ },
368
+ "./format-relative-time": {
369
+ "types": "./dist/format-relative-time/index.d.ts",
370
+ "default": "./dist/format-relative-time/index.js"
371
+ },
372
+ "./format-relative-time/index.js": {
373
+ "types": "./dist/format-relative-time/index.d.ts",
374
+ "default": "./dist/format-relative-time/index.js"
375
+ },
376
+ "./format-relative-time/define.js": {
377
+ "types": "./dist/format-relative-time/define.d.ts",
378
+ "default": "./dist/format-relative-time/define.js"
379
+ },
369
380
  "./forms": {
370
381
  "types": "./dist/forms/index.d.ts",
371
382
  "default": "./dist/forms/index.js"
@@ -430,18 +441,6 @@
430
441
  "types": "./dist/input/define.d.ts",
431
442
  "default": "./dist/input/define.js"
432
443
  },
433
- "./json-viewer": {
434
- "types": "./dist/json-viewer/index.d.ts",
435
- "default": "./dist/json-viewer/index.js"
436
- },
437
- "./json-viewer/index.js": {
438
- "types": "./dist/json-viewer/index.d.ts",
439
- "default": "./dist/json-viewer/index.js"
440
- },
441
- "./json-viewer/define.js": {
442
- "types": "./dist/json-viewer/define.d.ts",
443
- "default": "./dist/json-viewer/define.js"
444
- },
445
444
  "./logo": {
446
445
  "types": "./dist/logo/index.d.ts",
447
446
  "default": "./dist/logo/index.js"
@@ -913,40 +912,42 @@
913
912
  "dependencies": {
914
913
  "lit": "^3.3.2",
915
914
  "lit-html": "^3.3.2",
916
- "@nvidia-elements/forms": "^0.0.2"
915
+ "@nvidia-elements/forms": "^0.0.4"
917
916
  },
918
917
  "peerDependencies": {
919
- "@nvidia-elements/themes": "^0.0.3"
918
+ "@nvidia-elements/themes": "^0.0.5"
920
919
  },
921
920
  "optionalDependencies": {
922
921
  "@lit-labs/scoped-registry-mixin": "^1.0.4",
923
- "@webcomponents/scoped-custom-element-registry": "^0.0.9",
922
+ "@webcomponents/scoped-custom-element-registry": "^0.0.10",
924
923
  "construct-style-sheets-polyfill": "^3.1.0",
925
924
  "element-internals-polyfill": "^3.0.2",
926
925
  "formdata-polyfill": "^4.0.10"
927
926
  },
928
927
  "devDependencies": {
929
- "@eslint/js": "9.39.2",
930
- "@lit-labs/virtualizer": "^2.1.1",
928
+ "@eslint/js": "10.0.1",
929
+ "@lit-labs/virtualizer": "2.1.1",
931
930
  "@typescript/lib-dom": "npm:@types/web@0.0.312",
932
- "@vitest/browser": "4.1.0",
933
- "@vitest/coverage-istanbul": "4.1.0",
931
+ "@vitest/browser": "4.1.4",
932
+ "@vitest/coverage-istanbul": "4.1.4",
934
933
  "axe-core": "4.11.0",
935
- "eslint": "9.39.2",
934
+ "eslint": "10.2.0",
935
+ "lit": "3.3.2",
936
936
  "lit-analyzer": "2.0.3",
937
- "publint": "0.3.15",
938
- "stylelint": "17.4.0",
937
+ "lit-html": "3.3.2",
938
+ "publint": "0.3.18",
939
+ "stylelint": "17.6.0",
939
940
  "stylelint-config-standard": "40.0.0",
940
941
  "svgo": "4.0.1",
941
942
  "ts-lit-plugin": "2.0.2",
942
943
  "typescript": "6.0.2",
943
- "vite": "8.0.0",
944
- "vitest": "4.1.0",
944
+ "vite": "8.0.6",
945
+ "vitest": "4.1.4",
945
946
  "@internals/eslint": "0.0.0",
946
947
  "@internals/testing": "0.0.0",
947
948
  "@internals/vite": "0.0.0",
948
- "@nvidia-elements/lint": "0.0.1",
949
- "@nvidia-elements/styles": "^0.0.2"
949
+ "@nvidia-elements/lint": "0.0.3",
950
+ "@nvidia-elements/styles": "^0.0.4"
950
951
  },
951
952
  "wireit": {
952
953
  "ci": {
@@ -1230,6 +1231,7 @@
1230
1231
  "publishConfig": {
1231
1232
  "provenance": true
1232
1233
  },
1234
+ "license": "Apache-2.0",
1233
1235
  "scripts": {
1234
1236
  "postinstall": "node postinstall.mjs || exit 0",
1235
1237
  "ci": "wireit",
@@ -1,39 +0,0 @@
1
- import { PropertyValues, LitElement } from 'lit';
2
- import { Logo } from '../logo';
3
- /**
4
- * @deprecated use `nve-page-header` instead
5
- * @element nve-app-header
6
- * @description An element that appears across the top of all pages containing the application name and primary navigation.
7
- * @since 0.11.0
8
- * @slot - Use the default slot in `logo` to create an app logo badge within the app header. Include a `<span>` element inside `app-header` to change the default application title.
9
- * @slot title
10
- * @slot nav-items - For `button` and `icon-button` elements used for navigation behavior. Use the `active` attribute to show the current page.
11
- * @slot nav-actions - For `icon-button` elements. Places them in the supplemental actions section of the app header.
12
- * @cssprop --background
13
- * @cssprop --padding
14
- * @cssprop --border-bottom
15
- * @cssprop --color
16
- * @cssprop --font-weight
17
- * @cssprop --text-decoration
18
- * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav
19
- * @responsive false
20
- */
21
- export declare class AppHeader extends LitElement {
22
- #private;
23
- static styles: import('lit').CSSResult[];
24
- static readonly metadata: {
25
- tag: string;
26
- version: string;
27
- };
28
- static elementDefinitions: {
29
- [Logo.metadata.tag]: typeof Logo;
30
- };
31
- private navItems;
32
- private navActions;
33
- private slottedElements;
34
- render(): import('lit-html').TemplateResult<1>;
35
- /** @private */
36
- _internals: ElementInternals;
37
- connectedCallback(): void;
38
- updated(props: PropertyValues<this>): void;
39
- }
@@ -1,6 +0,0 @@
1
- //#region src/app-header/app-header.css?inline
2
- var e = ":host{--background: var(--nve-sys-layer-shell-background);--padding: var(--nve-ref-space-xs) var(--nve-ref-space-lg);--border-bottom: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);contain:initial;width:100%}[internal-host]{background:var(--background);padding:var(--padding);border-bottom:var(--border-bottom);display:flex;flex-direction:row;place-items:center flex-start;justify-content:space-between}[app-branding]{display:flex;flex-direction:row;place-items:center;justify-content:center;gap:var(--nve-ref-space-xs);margin:0;min-height:0}::slotted([slot=\"title\"]),slot[name=title] h2{font-family:var(--nve-ref-font-family)!important;font-size:var(--nve-ref-font-size-200)!important;font-weight:var(--nve-ref-font-weight-semibold)!important;color:var(--nve-sys-text-muted-color)!important;white-space:initial;margin:0}slot{display:flex;flex-direction:row;place-items:flex-start;margin:0;min-height:0}slot[name=nav-items]{margin:0 auto 0 var(--nve-ref-space-xxl);gap:var(--nve-ref-space-xxs)}slot[name=nav-actions]{align-items:center}::slotted(nve-button[slot=\"nav-items\"]){--color: var(--nve-sys-text-muted-color);--font-weight: var(--nve-ref-font-weight-medium)}::slotted(nve-button[slot=\"nav-items\"][selected]){--color: var(--nve-sys-text-emphasis-color);--text-decoration: none;--nve-sys-interaction-state-ratio-active: 0;--font-weight: var(--nve-ref-font-weight-semibold)}::slotted(nve-icon-button[slot=\"nav-items\"][selected]){--color: var(--nve-sys-text-emphasis-color)}::slotted(nve-button[slot=\"nav-items\"]:hover),::slotted(nve-button[slot=\"nav-items\"]:focus){--text-decoration: underline}::slotted(nve-icon-button[interaction=\"emphasis\"]),::slotted(nve-icon-button[interaction=\"emphasize\"]){margin-inline-start:var(--nve-ref-space-lg)}";
3
- //#endregion
4
- export { e as default };
5
-
6
- //# sourceMappingURL=app-header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-header.js","names":[],"sources":["../../src/app-header/app-header.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: var(--nve-sys-layer-shell-background);\n --padding: var(--nve-ref-space-xs) var(--nve-ref-space-lg);\n --border-bottom: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n contain: initial;\n width: 100%;\n}\n\n[internal-host] {\n background: var(--background);\n padding: var(--padding);\n border-bottom: var(--border-bottom);\n display: flex;\n flex-direction: row;\n place-items: center flex-start;\n justify-content: space-between;\n}\n\n[app-branding] {\n display: flex;\n flex-direction: row;\n place-items: center;\n justify-content: center;\n gap: var(--nve-ref-space-xs);\n margin: 0;\n min-height: 0;\n}\n\n::slotted([slot='title']),\nslot[name='title'] h2 {\n font-family: var(--nve-ref-font-family) !important;\n font-size: var(--nve-ref-font-size-200) !important;\n font-weight: var(--nve-ref-font-weight-semibold) !important;\n color: var(--nve-sys-text-muted-color) !important;\n white-space: initial;\n margin: 0;\n}\n\nslot {\n display: flex;\n flex-direction: row;\n place-items: flex-start;\n margin: 0;\n min-height: 0;\n}\n\nslot[name='nav-items'] {\n margin: 0 auto 0 var(--nve-ref-space-xxl);\n gap: var(--nve-ref-space-xxs);\n}\n\nslot[name='nav-actions'] {\n align-items: center;\n}\n\n::slotted(nve-button[slot='nav-items']),\n::slotted(nve-button[slot='nav-items']) {\n --color: var(--nve-sys-text-muted-color);\n --font-weight: var(--nve-ref-font-weight-medium);\n}\n\n::slotted(nve-button[slot='nav-items'][selected]),\n::slotted(nve-button[slot='nav-items'][selected]) {\n --color: var(--nve-sys-text-emphasis-color);\n --text-decoration: none;\n --nve-sys-interaction-state-ratio-active: 0;\n --font-weight: var(--nve-ref-font-weight-semibold);\n}\n\n::slotted(nve-icon-button[slot='nav-items'][selected]),\n::slotted(nve-icon-button[slot='nav-items'][selected]) {\n --color: var(--nve-sys-text-emphasis-color);\n}\n\n::slotted(nve-button[slot='nav-items']:hover),\n::slotted(nve-button[slot='nav-items']:focus),\n::slotted(nve-button[slot='nav-items']:hover),\n::slotted(nve-button[slot='nav-items']:focus) {\n --text-decoration: underline;\n}\n\n::slotted(nve-icon-button[interaction='emphasis']),\n::slotted(nve-icon-button[interaction='emphasize']), /* deprecated */\n::slotted(nve-icon-button[interaction='emphasis']) {\n margin-inline-start: var(--nve-ref-space-lg);\n}\n"],"mappings":""}
@@ -1,54 +0,0 @@
1
- import { matchesElementName as e } from "../internal/utils/dom.js";
2
- import { attachInternals as t } from "../internal/utils/a11y.js";
3
- import { __decorate as n } from "../_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.js";
4
- import { scopedRegistry as r } from "../internal/decorators/scoped-registry.js";
5
- import { useStyles as i } from "../internal/styles/index.js";
6
- import { Logo as a } from "../logo/logo2.js";
7
- import o from "./app-header.js";
8
- import { LitElement as s, html as c } from "lit";
9
- import { queryAssignedElements as l } from "lit/decorators/query-assigned-elements.js";
10
- //#region src/app-header/app-header.ts
11
- var u = class extends s {
12
- static {
13
- this.styles = i([o]);
14
- }
15
- static {
16
- this.metadata = {
17
- tag: "nve-app-header",
18
- version: "0.0.2"
19
- };
20
- }
21
- static {
22
- this.elementDefinitions = { [a.metadata.tag]: a };
23
- }
24
- get #e() {
25
- return this.slottedElements.find((t) => e(t, a));
26
- }
27
- render() {
28
- return c`<div internal-host><div app-branding><slot @slotchange="${this.#t}"><nve-logo part="logo" size="sm" aria-label="NVIDIA"></nve-logo></slot><slot name="title"><h2>NVIDIA</h2></slot></div><slot name="nav-items" @slotchange="${this.#n}"></slot><slot name="nav-actions" @slotchange="${this.#n}"></slot></div>`;
29
- }
30
- connectedCallback() {
31
- super.connectedCallback(), t(this), this._internals.role = "navigation";
32
- }
33
- updated(e) {
34
- super.updated(e), this.#t(), this.#n();
35
- }
36
- #t() {
37
- let e = this.#e;
38
- e && !e.hasAttribute("size") && e.setAttribute("size", "sm");
39
- }
40
- #n() {
41
- this.navActions?.filter((e) => e.getAttribute("interaction") === "emphasis")?.forEach((e) => e.size = "sm"), [...this.navItems, ...this.navActions].filter((e) => !e.hasAttribute("container") && !e.hasAttribute("interaction")).forEach((e) => e.container = "flat");
42
- }
43
- };
44
- n([l({
45
- slot: "nav-items",
46
- flatten: !0
47
- })], u.prototype, "navItems", void 0), n([l({
48
- slot: "nav-actions",
49
- flatten: !0
50
- })], u.prototype, "navActions", void 0), n([l()], u.prototype, "slottedElements", void 0), u = n([r()], u);
51
- //#endregion
52
- export { u as AppHeader };
53
-
54
- //# sourceMappingURL=app-header2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-header2.js","names":["#slottedLogo","#sizeLogo","#updateItems"],"sources":["../../src/app-header/app-header.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 { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport { useStyles, attachInternals, matchesElementName, scopedRegistry } from '@nvidia-elements/core/internal';\nimport { Logo } from '@nvidia-elements/core/logo';\nimport type { IconButton } from '@nvidia-elements/core/icon-button';\nimport type { Button } from '@nvidia-elements/core/button';\nimport styles from './app-header.css?inline';\n\n/* eslint-disable @nvidia-elements/lint/no-unstyled-typography */\n\n/**\n * @deprecated use `nve-page-header` instead\n * @element nve-app-header\n * @description An element that appears across the top of all pages containing the application name and primary navigation.\n * @since 0.11.0\n * @slot - Use the default slot in `logo` to create an app logo badge within the app header. Include a `<span>` element inside `app-header` to change the default application title.\n * @slot title\n * @slot nav-items - For `button` and `icon-button` elements used for navigation behavior. Use the `active` attribute to show the current page.\n * @slot nav-actions - For `icon-button` elements. Places them in the supplemental actions section of the app header.\n * @cssprop --background\n * @cssprop --padding\n * @cssprop --border-bottom\n * @cssprop --color\n * @cssprop --font-weight\n * @cssprop --text-decoration\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav\n * @responsive false\n */\n@scopedRegistry()\nexport class AppHeader extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-app-header',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Logo.metadata.tag]: Logo\n };\n\n @queryAssignedElements({ slot: 'nav-items', flatten: true }) private navItems!: Button[];\n\n @queryAssignedElements({ slot: 'nav-actions', flatten: true }) private navActions!: IconButton[];\n\n @queryAssignedElements() private slottedElements!: HTMLElement[];\n\n get #slottedLogo() {\n return this.slottedElements.find(i => matchesElementName(i, Logo)) as Logo;\n }\n\n render() {\n return html`\n <div internal-host>\n <div app-branding>\n <slot @slotchange=${this.#sizeLogo}><nve-logo part=\"logo\" size=\"sm\" aria-label=\"NVIDIA\"></nve-logo></slot>\n <slot name=\"title\">\n <h2>NVIDIA</h2>\n </slot>\n </div>\n <slot name=\"nav-items\" @slotchange=${this.#updateItems}></slot>\n <slot name=\"nav-actions\" @slotchange=${this.#updateItems}></slot>\n </div>\n `;\n }\n\n /** @private */\n declare _internals: ElementInternals;\n\n connectedCallback(): void {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'navigation';\n }\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n this.#sizeLogo();\n this.#updateItems();\n }\n\n #sizeLogo() {\n const logo = this.#slottedLogo;\n if (logo && !logo.hasAttribute('size')) {\n logo.setAttribute('size', 'sm');\n }\n }\n\n #updateItems() {\n this.navActions?.filter(i => i.getAttribute('interaction') === 'emphasis')?.forEach(item => (item.size = 'sm'));\n [...this.navItems, ...this.navActions]\n .filter(i => !i.hasAttribute('container') && !i.hasAttribute('interaction'))\n .forEach(item => (item.container = 'flat'));\n }\n}\n"],"mappings":";;;;;;;;;;AAiCO,IAAA,IAAA,cAAwB,EAAW;;gBACxB,EAAU,CAAC,EAAO,CAAC;;;kBAER;GACzB,KAAK;GACL,SAAS;GACV;;;4BAE2B,GACzB,EAAK,SAAS,MAAM,GACtB;;CAQD,KAAA,IAAmB;AACjB,SAAO,KAAK,gBAAgB,MAAK,MAAK,EAAmB,GAAG,EAAK,CAAC;;CAGpE,SAAS;AACP,SAAO,CAAI,2DAGe,MAAA,EAAe,6JAKA,MAAA,EAAkB,iDAChB,MAAA,EAAkB;;CAQ/D,oBAA0B;AAGxB,EAFA,MAAM,mBAAmB,EACzB,EAAgB,KAAK,EACrB,KAAK,WAAW,OAAO;;CAGzB,QAAQ,GAA6B;AAGnC,EAFA,MAAM,QAAQ,EAAM,EACpB,MAAA,GAAgB,EAChB,MAAA,GAAmB;;CAGrB,KAAY;EACV,IAAM,IAAO,MAAA;AACb,EAAI,KAAQ,CAAC,EAAK,aAAa,OAAO,IACpC,EAAK,aAAa,QAAQ,KAAK;;CAInC,KAAe;AAEb,EADA,KAAK,YAAY,QAAO,MAAK,EAAE,aAAa,cAAc,KAAK,WAAW,EAAE,SAAQ,MAAS,EAAK,OAAO,KAAM,EAC/G,CAAC,GAAG,KAAK,UAAU,GAAG,KAAK,WAAW,CACnC,QAAO,MAAK,CAAC,EAAE,aAAa,YAAY,IAAI,CAAC,EAAE,aAAa,cAAc,CAAC,CAC3E,SAAQ,MAAS,EAAK,YAAY,OAAQ;;;GAnD9C,EAAsB;CAAE,MAAM;CAAa,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAE3D,EAAsB;CAAE,MAAM;CAAe,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,cAAA,KAAA,EAAA,KAE7D,GAAuB,CAAA,EAAA,EAAA,WAAA,mBAAA,KAAA,EAAA,SAjBzB,GAAgB,CAAA,EAAA,EAAA"}
@@ -1,6 +0,0 @@
1
- import { AppHeader } from '.';
2
- declare global {
3
- interface HTMLElementTagNameMap {
4
- 'nve-app-header': AppHeader;
5
- }
6
- }
@@ -1,7 +0,0 @@
1
- import { define as e } from "../internal/utils/dom.js";
2
- import { AppHeader as t } from "./app-header2.js";
3
- //#region src/app-header/define.ts
4
- e(t);
5
- //#endregion
6
-
7
- //# sourceMappingURL=define.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"define.js","names":[],"sources":["../../src/app-header/define.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { define } from '@nvidia-elements/core/internal';\nimport { AppHeader } from '@nvidia-elements/core/app-header';\n\ndefine(AppHeader);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nve-app-header': AppHeader;\n }\n}\n"],"mappings":";;;AAMA,EAAO,EAAU"}
@@ -1 +0,0 @@
1
- export * from './app-header.js';
@@ -1,2 +0,0 @@
1
- import { AppHeader as e } from "./app-header2.js";
2
- export { e as AppHeader };
@@ -1,50 +0,0 @@
1
- import { t as e } from "./rolldown-runtime.js";
2
- //#region src/internal/utils/strings.ts
3
- function t(e) {
4
- let t = new Map([
5
- [1024 ** 4, "TB"],
6
- [1024 ** 3, "GB"],
7
- [1024 ** 2, "MB"],
8
- [1024 ** 1, "KB"],
9
- [1, "B"]
10
- ]);
11
- for (let [n, r] of t.entries()) if (e >= n) return `${(e / n).toFixed(2)} ${r}`;
12
- return "0";
13
- }
14
- var n = "", r = /* @__PURE__ */ e({
15
- DOCS_LOG_URL: () => i,
16
- getDuplicatePackageGlobalVersionWarning: () => d,
17
- getDuplicatePackageVersionWarning: () => u,
18
- getEsmHostedWarning: () => f,
19
- getExcessiveInstanceLimitWarning: () => a,
20
- getIdMatchNotFoundWarning: () => c,
21
- getInvalidParentWarning: () => s,
22
- getInvalidSlottedChildrenWarning: () => o,
23
- getSSRMismatchWarning: () => l
24
- }), i = `${n}docs/api-design/logs/`;
25
- function a(e, t) {
26
- return `Excessive rendering of ${e} ${t} were detected in DOM. Recycle/reuse elements when possible to improve application performance. ${i}#excessive-instance-limit`;
27
- }
28
- function o(e, t) {
29
- return `Invalid slotted elements detected in ${e}. Allowed: ${t.join(", ")}. ${i}#invalid-slotted-children`;
30
- }
31
- function s(e, t) {
32
- return `Element ${e} can only be used as a direct child of ${t}. ${i}#invalid-parent`;
33
- }
34
- function c(e) {
35
- return `Provided id "${e}" not found in DOM. ${i}#id-match-not-found`;
36
- }
37
- function l(e) {
38
- return `${e} rendered on the client with mismatched SSR content. ${i}#ssr-mismatch`;
39
- }
40
- function u(e, t) {
41
- return `@nve: Element ${e} version ${t} already defined, please check for duplicate package versions. ${i}#duplicate-package-version`;
42
- }
43
- function d() {
44
- return `@nve: Multiple versions of Elements loaded, please check for duplicate package versions. ${i}#duplicate-package-version`;
45
- }
46
- function f() {
47
- return "@nve: Using esm.sh is not supported for production use.";
48
- }
49
- //#endregion
50
- export { l as a, c as i, d as n, t as o, f as r, r as t };