@nvidia-elements/core 2.23.3 → 2.23.5

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 (274) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/accordion/accordion2.js +49 -49
  3. package/dist/accordion/accordion2.js.map +1 -1
  4. package/dist/alert/alert-group2.js +22 -21
  5. package/dist/alert/alert-group2.js.map +1 -1
  6. package/dist/alert/alert2.js +29 -28
  7. package/dist/alert/alert2.js.map +1 -1
  8. package/dist/avatar/avatar-group2.js +9 -9
  9. package/dist/avatar/avatar-group2.js.map +1 -1
  10. package/dist/avatar/avatar2.js +12 -11
  11. package/dist/avatar/avatar2.js.map +1 -1
  12. package/dist/badge/badge2.js +27 -26
  13. package/dist/badge/badge2.js.map +1 -1
  14. package/dist/breadcrumb/breadcrumb2.js +17 -17
  15. package/dist/breadcrumb/breadcrumb2.js.map +1 -1
  16. package/dist/bundles/index.js +6 -6
  17. package/dist/button/button2.js +12 -12
  18. package/dist/button/button2.js.map +1 -1
  19. package/dist/button-group/button-group2.js +18 -18
  20. package/dist/button-group/button-group2.js.map +1 -1
  21. package/dist/card/card2.js +28 -28
  22. package/dist/card/card2.js.map +1 -1
  23. package/dist/chat-message/chat-message2.js +15 -14
  24. package/dist/chat-message/chat-message2.js.map +1 -1
  25. package/dist/checkbox/checkbox-group2.js +8 -8
  26. package/dist/checkbox/checkbox-group2.js.map +1 -1
  27. package/dist/checkbox/checkbox2.js +8 -8
  28. package/dist/checkbox/checkbox2.js.map +1 -1
  29. package/dist/color/color2.js +21 -21
  30. package/dist/color/color2.js.map +1 -1
  31. package/dist/combobox/combobox2.js +37 -37
  32. package/dist/combobox/combobox2.js.map +1 -1
  33. package/dist/copy-button/copy-button.d.ts +1 -1
  34. package/dist/copy-button/copy-button2.js +21 -21
  35. package/dist/copy-button/copy-button2.js.map +1 -1
  36. package/dist/custom-elements.json +0 -76
  37. package/dist/data.snippets.json +27 -27
  38. package/dist/date/date2.js +19 -19
  39. package/dist/date/date2.js.map +1 -1
  40. package/dist/datetime/datetime2.js +19 -19
  41. package/dist/datetime/datetime2.js.map +1 -1
  42. package/dist/dialog/dialog-footer2.js +7 -7
  43. package/dist/dialog/dialog-footer2.js.map +1 -1
  44. package/dist/dialog/dialog-header2.js +7 -7
  45. package/dist/dialog/dialog-header2.js.map +1 -1
  46. package/dist/dialog/dialog.js +1 -1
  47. package/dist/dialog/dialog.js.map +1 -1
  48. package/dist/dialog/dialog2.js +25 -25
  49. package/dist/dialog/dialog2.js.map +1 -1
  50. package/dist/divider/divider2.js +12 -12
  51. package/dist/divider/divider2.js.map +1 -1
  52. package/dist/dot/dot2.js +17 -16
  53. package/dist/dot/dot2.js.map +1 -1
  54. package/dist/drag-handle/drag-handle2.js +12 -12
  55. package/dist/drag-handle/drag-handle2.js.map +1 -1
  56. package/dist/drawer/drawer-content2.js +7 -7
  57. package/dist/drawer/drawer-content2.js.map +1 -1
  58. package/dist/drawer/drawer-footer2.js +7 -7
  59. package/dist/drawer/drawer-footer2.js.map +1 -1
  60. package/dist/drawer/drawer-header2.js +7 -7
  61. package/dist/drawer/drawer-header2.js.map +1 -1
  62. package/dist/drawer/drawer.js +1 -1
  63. package/dist/drawer/drawer.js.map +1 -1
  64. package/dist/drawer/drawer2.js +21 -21
  65. package/dist/drawer/drawer2.js.map +1 -1
  66. package/dist/dropdown/dropdown-footer2.js +7 -7
  67. package/dist/dropdown/dropdown-footer2.js.map +1 -1
  68. package/dist/dropdown/dropdown-header2.js +7 -7
  69. package/dist/dropdown/dropdown-header2.js.map +1 -1
  70. package/dist/dropdown/dropdown2.js +21 -21
  71. package/dist/dropdown/dropdown2.js.map +1 -1
  72. package/dist/dropdown-group/dropdown-group.js +10 -10
  73. package/dist/dropdown-group/dropdown-group.js.map +1 -1
  74. package/dist/dropzone/dropzone2.js +19 -19
  75. package/dist/dropzone/dropzone2.js.map +1 -1
  76. package/dist/file/file2.js +8 -8
  77. package/dist/file/file2.js.map +1 -1
  78. package/dist/format-bytes/format-bytes2.js +13 -13
  79. package/dist/format-bytes/format-bytes2.js.map +1 -1
  80. package/dist/format-datetime/format-datetime2.js +14 -14
  81. package/dist/format-datetime/format-datetime2.js.map +1 -1
  82. package/dist/format-number/format-number2.js +20 -20
  83. package/dist/format-number/format-number2.js.map +1 -1
  84. package/dist/format-relative-time/format-relative-time2.js +11 -11
  85. package/dist/format-relative-time/format-relative-time2.js.map +1 -1
  86. package/dist/format-truncate/format-truncate2.js +21 -21
  87. package/dist/format-truncate/format-truncate2.js.map +1 -1
  88. package/dist/forms/control/control2.js +30 -29
  89. package/dist/forms/control/control2.js.map +1 -1
  90. package/dist/forms/control-group/control-group2.js +19 -18
  91. package/dist/forms/control-group/control-group2.js.map +1 -1
  92. package/dist/forms/control-message/control-message2.js +15 -15
  93. package/dist/forms/control-message/control-message2.js.map +1 -1
  94. package/dist/gauge/gauge2.js +20 -20
  95. package/dist/gauge/gauge2.js.map +1 -1
  96. package/dist/ghost/ghost2.js +10 -10
  97. package/dist/ghost/ghost2.js.map +1 -1
  98. package/dist/grid/cell/cell2.js +9 -9
  99. package/dist/grid/cell/cell2.js.map +1 -1
  100. package/dist/grid/column/column2.js +16 -16
  101. package/dist/grid/column/column2.js.map +1 -1
  102. package/dist/grid/footer/footer2.js +12 -12
  103. package/dist/grid/footer/footer2.js.map +1 -1
  104. package/dist/grid/grid2.js +30 -30
  105. package/dist/grid/grid2.js.map +1 -1
  106. package/dist/grid/header/header2.js +20 -20
  107. package/dist/grid/header/header2.js.map +1 -1
  108. package/dist/grid/placeholder/placeholder2.js +9 -9
  109. package/dist/grid/placeholder/placeholder2.js.map +1 -1
  110. package/dist/grid/row/row2.js +15 -15
  111. package/dist/grid/row/row2.js.map +1 -1
  112. package/dist/icon/icon2.js +40 -40
  113. package/dist/icon/icon2.js.map +1 -1
  114. package/dist/icon-button/icon-button2.js +17 -17
  115. package/dist/icon-button/icon-button2.js.map +1 -1
  116. package/dist/iframe/iframe2.js +7 -7
  117. package/dist/iframe/iframe2.js.map +1 -1
  118. package/dist/index.js +1 -1
  119. package/dist/input/input-group2.js +8 -8
  120. package/dist/input/input-group2.js.map +1 -1
  121. package/dist/input/input2.js +10 -10
  122. package/dist/input/input2.js.map +1 -1
  123. package/dist/internal/controllers/state-expanded.controller.js +1 -1
  124. package/dist/internal/controllers/state-expanded.controller.js.map +1 -1
  125. package/dist/internal/controllers/state-highlighted.controller.js +1 -1
  126. package/dist/internal/controllers/state-highlighted.controller.js.map +1 -1
  127. package/dist/internal/controllers/state-scroll.controller.js +1 -1
  128. package/dist/internal/controllers/state-scroll.controller.js.map +1 -1
  129. package/dist/internal/controllers/state-selected.controller.js +1 -1
  130. package/dist/internal/controllers/state-selected.controller.js.map +1 -1
  131. package/dist/internal/controllers/type-anchor.controller.js +1 -1
  132. package/dist/internal/controllers/type-anchor.controller.js.map +1 -1
  133. package/dist/internal/controllers/type-closable.controller.js +1 -1
  134. package/dist/internal/controllers/type-closable.controller.js.map +1 -1
  135. package/dist/internal/controllers/type-expandable.controller.js +1 -1
  136. package/dist/internal/controllers/type-expandable.controller.js.map +1 -1
  137. package/dist/internal/controllers/type-native-popover.controller.js +6 -6
  138. package/dist/internal/controllers/type-native-popover.controller.js.map +1 -1
  139. package/dist/internal/controllers/type-popover.controller.examples.js.map +1 -1
  140. package/dist/internal/controllers/type-selectable.controller.js +1 -1
  141. package/dist/internal/controllers/type-selectable.controller.js.map +1 -1
  142. package/dist/internal/index.d.ts +0 -1
  143. package/dist/internal/index.js +57 -61
  144. package/dist/internal/index.js.map +1 -1
  145. package/dist/internal/styles/index.d.ts +0 -1
  146. package/dist/internal/styles/index.js +5 -15
  147. package/dist/internal/styles/index.js.map +1 -1
  148. package/dist/internal/utils/a11y.d.ts +0 -3
  149. package/dist/internal/utils/a11y.js +6 -9
  150. package/dist/internal/utils/a11y.js.map +1 -1
  151. package/dist/joystick/joystick2.js +19 -19
  152. package/dist/joystick/joystick2.js.map +1 -1
  153. package/dist/logo/logo2.js +14 -13
  154. package/dist/logo/logo2.js.map +1 -1
  155. package/dist/menu/menu-group2.js +20 -20
  156. package/dist/menu/menu-group2.js.map +1 -1
  157. package/dist/menu/menu-item2.js +11 -11
  158. package/dist/menu/menu-item2.js.map +1 -1
  159. package/dist/menu/menu2.js +14 -14
  160. package/dist/menu/menu2.js.map +1 -1
  161. package/dist/month/month2.js +19 -19
  162. package/dist/month/month2.js.map +1 -1
  163. package/dist/notification/notification-group2.js +13 -13
  164. package/dist/notification/notification-group2.js.map +1 -1
  165. package/dist/notification/notification2.js +31 -31
  166. package/dist/notification/notification2.js.map +1 -1
  167. package/dist/page/page-panel/page-panel-content2.js +7 -7
  168. package/dist/page/page-panel/page-panel-content2.js.map +1 -1
  169. package/dist/page/page-panel/page-panel-footer2.js +9 -9
  170. package/dist/page/page-panel/page-panel-footer2.js.map +1 -1
  171. package/dist/page/page-panel/page-panel-header2.js +9 -9
  172. package/dist/page/page-panel/page-panel-header2.js.map +1 -1
  173. package/dist/page/page-panel/page-panel2.js +15 -15
  174. package/dist/page/page-panel/page-panel2.js.map +1 -1
  175. package/dist/page/page2.js +13 -13
  176. package/dist/page/page2.js.map +1 -1
  177. package/dist/page-header/page-header2.js +10 -10
  178. package/dist/page-header/page-header2.js.map +1 -1
  179. package/dist/page-loader/page-loader2.js +13 -13
  180. package/dist/page-loader/page-loader2.js.map +1 -1
  181. package/dist/pagination/pagination2.js +34 -34
  182. package/dist/pagination/pagination2.js.map +1 -1
  183. package/dist/panel/panel2.js +36 -36
  184. package/dist/panel/panel2.js.map +1 -1
  185. package/dist/password/password2.js +19 -19
  186. package/dist/password/password2.js.map +1 -1
  187. package/dist/preferences-input/preferences-input.d.ts +1 -1
  188. package/dist/preferences-input/preferences-input2.js +25 -25
  189. package/dist/preferences-input/preferences-input2.js.map +1 -1
  190. package/dist/progress-bar/progress-bar2.js +13 -13
  191. package/dist/progress-bar/progress-bar2.js.map +1 -1
  192. package/dist/progress-dot/progress-dot2.js +15 -15
  193. package/dist/progress-dot/progress-dot2.js.map +1 -1
  194. package/dist/progress-ring/progress-ring2.js +20 -20
  195. package/dist/progress-ring/progress-ring2.js.map +1 -1
  196. package/dist/progressive-filter-chip/progressive-filter-chip2.js +28 -28
  197. package/dist/progressive-filter-chip/progressive-filter-chip2.js.map +1 -1
  198. package/dist/pulse/pulse2.js +15 -15
  199. package/dist/pulse/pulse2.js.map +1 -1
  200. package/dist/radio/radio-group2.js +8 -8
  201. package/dist/radio/radio-group2.js.map +1 -1
  202. package/dist/radio/radio2.js +8 -8
  203. package/dist/radio/radio2.js.map +1 -1
  204. package/dist/range/range2.js +16 -16
  205. package/dist/range/range2.js.map +1 -1
  206. package/dist/resize-handle/resize-handle2.js +17 -17
  207. package/dist/resize-handle/resize-handle2.js.map +1 -1
  208. package/dist/search/search2.js +20 -20
  209. package/dist/search/search2.js.map +1 -1
  210. package/dist/select/select2.js +32 -32
  211. package/dist/select/select2.js.map +1 -1
  212. package/dist/skeleton/skeleton2.js +14 -14
  213. package/dist/skeleton/skeleton2.js.map +1 -1
  214. package/dist/sort-button/sort-button.d.ts +1 -1
  215. package/dist/sort-button/sort-button2.js +16 -16
  216. package/dist/sort-button/sort-button2.js.map +1 -1
  217. package/dist/sparkline/sparkline2.js +45 -44
  218. package/dist/sparkline/sparkline2.js.map +1 -1
  219. package/dist/star-rating/star-rating2.js +14 -14
  220. package/dist/star-rating/star-rating2.js.map +1 -1
  221. package/dist/steps/steps2.js +32 -32
  222. package/dist/steps/steps2.js.map +1 -1
  223. package/dist/switch/switch-group2.js +8 -8
  224. package/dist/switch/switch-group2.js.map +1 -1
  225. package/dist/switch/switch2.js +8 -8
  226. package/dist/switch/switch2.js.map +1 -1
  227. package/dist/tabs/tabs-group2.js +18 -18
  228. package/dist/tabs/tabs-group2.js.map +1 -1
  229. package/dist/tabs/tabs-item-group2.js +9 -9
  230. package/dist/tabs/tabs-item-group2.js.map +1 -1
  231. package/dist/tabs/tabs2.js +28 -28
  232. package/dist/tabs/tabs2.js.map +1 -1
  233. package/dist/tag/tag2.js +19 -18
  234. package/dist/tag/tag2.js.map +1 -1
  235. package/dist/textarea/textarea2.js +9 -9
  236. package/dist/textarea/textarea2.js.map +1 -1
  237. package/dist/time/time2.js +19 -19
  238. package/dist/time/time2.js.map +1 -1
  239. package/dist/toast/toast2.js +28 -28
  240. package/dist/toast/toast2.js.map +1 -1
  241. package/dist/toggletip/toggletip-footer2.js +7 -7
  242. package/dist/toggletip/toggletip-footer2.js.map +1 -1
  243. package/dist/toggletip/toggletip-header2.js +7 -7
  244. package/dist/toggletip/toggletip-header2.js.map +1 -1
  245. package/dist/toggletip/toggletip2.js +23 -23
  246. package/dist/toggletip/toggletip2.js.map +1 -1
  247. package/dist/toolbar/toolbar2.js +20 -19
  248. package/dist/toolbar/toolbar2.js.map +1 -1
  249. package/dist/tooltip/tooltip2.js +20 -20
  250. package/dist/tooltip/tooltip2.js.map +1 -1
  251. package/dist/tree/tree-node2.js +39 -39
  252. package/dist/tree/tree-node2.js.map +1 -1
  253. package/dist/tree/tree2.js +20 -20
  254. package/dist/tree/tree2.js.map +1 -1
  255. package/dist/week/week2.js +19 -19
  256. package/dist/week/week2.js.map +1 -1
  257. package/dist/workspace/panel/panel2.js +14 -14
  258. package/dist/workspace/panel/panel2.js.map +1 -1
  259. package/dist/workspace/panel-content/panel-content2.js +7 -7
  260. package/dist/workspace/panel-content/panel-content2.js.map +1 -1
  261. package/dist/workspace/panel-footer/panel-footer2.js +9 -9
  262. package/dist/workspace/panel-footer/panel-footer2.js.map +1 -1
  263. package/dist/workspace/panel-header/panel-header2.js +16 -16
  264. package/dist/workspace/panel-header/panel-header2.js.map +1 -1
  265. package/dist/workspace/workspace2.js +97 -97
  266. package/dist/workspace/workspace2.js.map +1 -1
  267. package/package.json +2 -2
  268. package/dist/internal/decorators/scoped-registry.d.ts +0 -2
  269. package/dist/internal/decorators/scoped-registry.js +0 -36
  270. package/dist/internal/decorators/scoped-registry.js.map +0 -1
  271. package/dist/internal/styles/base.js +0 -5
  272. package/dist/internal/styles/base.js.map +0 -1
  273. package/dist/internal/styles/interaction-state.js +0 -5
  274. package/dist/internal/styles/interaction-state.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline2.js","names":["styles","_decorate","__decorate","sparkline_default","Sparkline","LitElement","_args","useStyles","statusStateStyles","supportStateStyles","#renderChart","attachInternals","changedProperties","toValidData","calculateViewBox","#renderLineVariant","width","height","#renderColumn","#renderWinLoss","nothing","props","aspectRatio","validAspectRatio","domain","calculateDomain","baselineY","valueToY","drawZeroLine","plotPoints","toPlotPoints","symbolIndices","calculateSymbolIndices","interpolation","toInterpolation","linePath","toLinePath","areaPath","toAreaPath","#renderGradientDef","#renderZeroLine","#renderAccents","position","points","accentIndices","point","index","style","showZeroLine","rects","toColumnRects","rect","toWinLossRects","property","state"],"sources":["../../src/sparkline/sparkline.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues, SVGTemplateResult } from 'lit';\nimport { html, LitElement, nothing, svg } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\nimport type {\n DataElement,\n Interpolation,\n Point,\n SizeExpanded,\n SparklineMark,\n SupportStatus,\n TaskStatus\n} from '@nvidia-elements/core/internal';\nimport { attachInternals, statusStateStyles, supportStateStyles, useStyles } from '@nvidia-elements/core/internal';\nimport {\n calculateDomain,\n calculateSymbolIndices,\n calculateViewBox,\n PRECISION,\n toAreaPath,\n toColumnRects,\n toInterpolation,\n toLinePath,\n toPlotPoints,\n toValidData,\n toWinLossRects,\n valueToY,\n VIEW_HEIGHT\n} from './sparkline.utils.js';\nimport styles from './sparkline.css?inline';\n\n/**\n * @element nve-sparkline\n * @description A sparkline is a compact, word-sized chart with typographic scale, for data-dense layouts (text, tables, cards, dashboards).\n * @documentation https://nvidia.github.io/elements/docs/elements/sparkline/\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/sparkline\n * @cssprop --height - Height (defaults to 1em and scales with parent font-size).\n * @cssprop --line-color\n * @cssprop --line-width\n * @cssprop --fill-color - Color used by area and column marks.\n * @cssprop --gradient-max-color\n * @cssprop --gradient-min-color\n * @cssprop --zero-line-color\n * @cssprop --zero-line-width\n * @cssprop --win-color Color used to represent positive values (wins).\n * @cssprop --loss-color Color used to represent negative values (losses).\n * @cssprop --draw-color Color used to represent zero values (draws / neutral outcomes).\n * @cssprop --symbol-color\n * @cssprop --symbol-border-color\n * @cssprop --symbol-border-width\n * @cssprop --symbol-radius - symbol circle radius in SVG units.\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img\n */\nexport class Sparkline extends LitElement implements DataElement<number[]> {\n static styles = useStyles([styles, statusStateStyles, supportStateStyles]);\n\n static readonly metadata = {\n tag: 'nve-sparkline',\n version: '0.0.0'\n };\n\n /** Numeric values representing a data series. */\n @property({ type: Array }) data: number[] = [];\n\n /** Controls the visual representation of data points. */\n @property({ type: String }) mark: SparklineMark = 'line';\n\n /** Controls how the chart connects intermediate values between points in a data series. Defaults to `linear`. */\n @property({ type: String }) interpolation: Interpolation = 'linear';\n\n /** Applies semantic status colors used across Elements status patterns. */\n @property({ type: String, reflect: true }) status?: TaskStatus | SupportStatus;\n\n /** Controls the sparkline size with explicit font-size tokens. Omit to auto-scale with parent font-size (1em). */\n @property({ type: String, reflect: true }) size?: SizeExpanded;\n\n /** Denotes the first data point by rendering a symbol at its position. */\n @property({ type: Boolean, attribute: 'denote-first', reflect: true })\n denoteFirst = false;\n\n /** Denotes the last data point by rendering a symbol at its position. */\n @property({ type: Boolean, attribute: 'denote-last', reflect: true })\n denoteLast = false;\n\n /** Denotes all minimum-value data points by rendering symbols at their positions. */\n @property({ type: Boolean, attribute: 'denote-min', reflect: true })\n denoteMin = false;\n\n /** Denotes all maximum-value data points by rendering symbols at their positions. */\n @property({ type: Boolean, attribute: 'denote-max', reflect: true })\n denoteMax = false;\n\n /** Controls spacing between points in a line, in em (1 = chart height). Defaults to `0.6`. */\n @property({ type: Number, attribute: 'interval-length' }) intervalLength = 0.6;\n\n /** Lower bound for the y-axis domain. When undefined, derives the bound from data. */\n @property({ type: Number }) min?: number;\n\n /** Upper bound for the y-axis domain. When undefined, derives the bound from data. */\n @property({ type: Number }) max?: number;\n\n /** Cached valid numeric values derived from data property. */\n @state() private validData: number[] = [];\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`<div internal-host>${this.#renderChart()}</div>`;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'img';\n }\n\n willUpdate(changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties);\n\n if (changedProperties.has('data')) {\n this.validData = toValidData(this.data);\n }\n }\n\n #renderChart(): SVGTemplateResult | typeof nothing {\n const { width, height } = calculateViewBox(this.mark, this.validData.length, this.intervalLength);\n\n switch (this.mark) {\n case 'line':\n case 'area':\n case 'gradient':\n return this.#renderLineVariant(width, height);\n case 'column':\n return this.#renderColumn(width, height);\n case 'winloss':\n return this.#renderWinLoss(VIEW_HEIGHT / 2, width, height);\n default:\n const _exhaustiveCheck: never = this.mark;\n return nothing;\n }\n }\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n\n const { width, height } = calculateViewBox(this.mark, this.validData.length, this.intervalLength);\n const aspectRatio = width / height;\n const validAspectRatio = Number.isFinite(aspectRatio) && aspectRatio > 0 ? aspectRatio : 1;\n this.style.setProperty('--_aspect-ratio', validAspectRatio.toFixed(4));\n }\n\n #renderLineVariant(width: number, height: number) {\n const domain = calculateDomain(this.validData, { explicitMin: this.min, explicitMax: this.max });\n if (!domain) return nothing;\n\n const baselineY = valueToY(0, domain);\n const drawZeroLine = domain.min < 0 && domain.max > 0;\n\n const plotPoints = toPlotPoints(this.validData, domain, { width });\n const symbolIndices = calculateSymbolIndices(this.validData, {\n first: this.denoteFirst,\n last: this.denoteLast,\n min: this.denoteMin,\n max: this.denoteMax\n });\n const interpolation = toInterpolation(this.interpolation);\n\n const linePath = toLinePath(plotPoints, interpolation, width);\n const drawArea = this.mark === 'area' || this.mark === 'gradient';\n const areaPath = drawArea ? toAreaPath(plotPoints, interpolation, VIEW_HEIGHT) : '';\n\n return svg`\n <svg viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\">\n ${this.mark === 'gradient' ? this.#renderGradientDef(height) : nothing}\n\n ${\n areaPath.length\n ? this.mark === 'gradient'\n ? svg`<path class=\"area\" d=${areaPath} style=\"fill: url(#gradient)\"></path>`\n : svg`<path class=\"area\" d=${areaPath}></path>`\n : nothing\n }\n\n ${drawZeroLine ? this.#renderZeroLine(baselineY, width) : nothing}\n\n ${linePath ? svg`<path class=\"line\" d=${linePath} vector-effect=\"non-scaling-stroke\"></path>` : nothing}\n </svg>\n ${this.#renderAccents(plotPoints, symbolIndices)}\n `;\n }\n\n #renderGradientDef(height: number) {\n return svg`\n <defs>\n <linearGradient id=\"gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"${height}\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0%\" style=\"stop-color: var(--gradient-max-color)\"></stop>\n <stop offset=\"100%\" style=\"stop-color: var(--gradient-min-color)\"></stop>\n </linearGradient>\n </defs>\n `;\n }\n\n #renderZeroLine(position: number, width: number) {\n return svg`\n <line\n class=\"zero-line\"\n vector-effect=\"non-scaling-stroke\"\n x1=\"0\"\n y1=\"${position.toFixed(PRECISION)}\"\n x2=\"${width}\"\n y2=\"${position.toFixed(PRECISION)}\">\n </line>\n `;\n }\n\n #renderAccents(points: Point[], accentIndices: Set<number>) {\n if (points.length === 0 || accentIndices.size === 0) return nothing;\n\n return html`\n ${Array.from(accentIndices).map(index => {\n const point = points[index];\n if (!point) return nothing;\n\n const style = `--x: ${point.x.toFixed(PRECISION)}; --y: ${point.y.toFixed(PRECISION)}`;\n return html`\n <span style=${style} class=\"accent\"></span>\n `;\n })}\n `;\n }\n\n #renderColumn(width: number, height: number) {\n const domain = calculateDomain(this.validData, {\n explicitMin: this.min,\n explicitMax: this.max,\n includeZero: true\n });\n if (!domain) return nothing;\n\n const baselineY = valueToY(0, domain);\n const showZeroLine = domain.min < 0 && domain.max > 0;\n const plotPoints = toPlotPoints(this.validData, domain, { width });\n const rects = toColumnRects(plotPoints, baselineY, width);\n\n return svg`\n <svg viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\">\n ${showZeroLine ? this.#renderZeroLine(baselineY, width) : nothing}\n\n ${rects.map(rect => {\n return svg`<rect class=\"column\" x=\"${rect.x.toFixed(PRECISION)}\" y=\"${rect.y.toFixed(PRECISION)}\" width=\"${rect.width.toFixed(PRECISION)}\" height=\"${rect.height.toFixed(PRECISION)}\"></rect>`;\n })}\n </svg>\n `;\n }\n\n #renderWinLoss(baselineY: number, width: number, height: number) {\n if (this.validData.length === 0) return nothing;\n\n const rects = toWinLossRects(this.validData, baselineY, { width, height });\n\n return svg`\n <svg viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\">\n ${this.#renderZeroLine(baselineY, width)}\n\n ${rects.map(rect => {\n return svg`<rect class=\"${rect.className}\" x=\"${rect.x.toFixed(PRECISION)}\" y=\"${rect.y.toFixed(PRECISION)}\" width=\"${rect.width.toFixed(PRECISION)}\" height=\"${rect.height.toFixed(PRECISION)}\"></rect>`;\n })}\n </svg>\n `;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sparkline2.js","names":["styles","_decorate","__decorate","sparkline_default","Sparkline","LitElement","_args","useStyles","statusStateStyles","supportStateStyles","#renderChart","attachInternals","changedProperties","toValidData","calculateViewBox","#renderLineVariant","width","height","#renderColumn","#renderWinLoss","nothing","props","aspectRatio","validAspectRatio","domain","calculateDomain","baselineY","valueToY","drawZeroLine","plotPoints","toPlotPoints","symbolIndices","calculateSymbolIndices","interpolation","toInterpolation","linePath","toLinePath","areaPath","toAreaPath","#renderGradientDef","#renderZeroLine","#renderAccents","position","points","accentIndices","point","index","style","showZeroLine","rects","toColumnRects","rect","toWinLossRects","property","state"],"sources":["../../src/sparkline/sparkline.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues, SVGTemplateResult } from 'lit';\nimport { html, LitElement, nothing, svg } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\nimport type {\n DataElement,\n Interpolation,\n Point,\n SizeExpanded,\n SparklineMark,\n SupportStatus,\n TaskStatus\n} from '@nvidia-elements/core/internal';\nimport { statusStateStyles, supportStateStyles } from '@nvidia-elements/core/internal';\nimport { attachInternals } from '@nvidia-elements/foundations/internal/a11y';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport {\n calculateDomain,\n calculateSymbolIndices,\n calculateViewBox,\n PRECISION,\n toAreaPath,\n toColumnRects,\n toInterpolation,\n toLinePath,\n toPlotPoints,\n toValidData,\n toWinLossRects,\n valueToY,\n VIEW_HEIGHT\n} from './sparkline.utils.js';\nimport styles from './sparkline.css?inline';\n\n/**\n * @element nve-sparkline\n * @description A sparkline is a compact, word-sized chart with typographic scale, for data-dense layouts (text, tables, cards, dashboards).\n * @documentation https://nvidia.github.io/elements/docs/elements/sparkline/\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/sparkline\n * @cssprop --height - Height (defaults to 1em and scales with parent font-size).\n * @cssprop --line-color\n * @cssprop --line-width\n * @cssprop --fill-color - Color used by area and column marks.\n * @cssprop --gradient-max-color\n * @cssprop --gradient-min-color\n * @cssprop --zero-line-color\n * @cssprop --zero-line-width\n * @cssprop --win-color Color used to represent positive values (wins).\n * @cssprop --loss-color Color used to represent negative values (losses).\n * @cssprop --draw-color Color used to represent zero values (draws / neutral outcomes).\n * @cssprop --symbol-color\n * @cssprop --symbol-border-color\n * @cssprop --symbol-border-width\n * @cssprop --symbol-radius - symbol circle radius in SVG units.\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img\n */\nexport class Sparkline extends LitElement implements DataElement<number[]> {\n static styles = useStyles([styles, statusStateStyles, supportStateStyles]);\n\n static readonly metadata = {\n tag: 'nve-sparkline',\n version: '0.0.0'\n };\n\n /** Numeric values representing a data series. */\n @property({ type: Array }) data: number[] = [];\n\n /** Controls the visual representation of data points. */\n @property({ type: String }) mark: SparklineMark = 'line';\n\n /** Controls how the chart connects intermediate values between points in a data series. Defaults to `linear`. */\n @property({ type: String }) interpolation: Interpolation = 'linear';\n\n /** Applies semantic status colors used across Elements status patterns. */\n @property({ type: String, reflect: true }) status?: TaskStatus | SupportStatus;\n\n /** Controls the sparkline size with explicit font-size tokens. Omit to auto-scale with parent font-size (1em). */\n @property({ type: String, reflect: true }) size?: SizeExpanded;\n\n /** Denotes the first data point by rendering a symbol at its position. */\n @property({ type: Boolean, attribute: 'denote-first', reflect: true })\n denoteFirst = false;\n\n /** Denotes the last data point by rendering a symbol at its position. */\n @property({ type: Boolean, attribute: 'denote-last', reflect: true })\n denoteLast = false;\n\n /** Denotes all minimum-value data points by rendering symbols at their positions. */\n @property({ type: Boolean, attribute: 'denote-min', reflect: true })\n denoteMin = false;\n\n /** Denotes all maximum-value data points by rendering symbols at their positions. */\n @property({ type: Boolean, attribute: 'denote-max', reflect: true })\n denoteMax = false;\n\n /** Controls spacing between points in a line, in em (1 = chart height). Defaults to `0.6`. */\n @property({ type: Number, attribute: 'interval-length' }) intervalLength = 0.6;\n\n /** Lower bound for the y-axis domain. When undefined, derives the bound from data. */\n @property({ type: Number }) min?: number;\n\n /** Upper bound for the y-axis domain. When undefined, derives the bound from data. */\n @property({ type: Number }) max?: number;\n\n /** Cached valid numeric values derived from data property. */\n @state() private validData: number[] = [];\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`<div internal-host>${this.#renderChart()}</div>`;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'img';\n }\n\n willUpdate(changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties);\n\n if (changedProperties.has('data')) {\n this.validData = toValidData(this.data);\n }\n }\n\n #renderChart(): SVGTemplateResult | typeof nothing {\n const { width, height } = calculateViewBox(this.mark, this.validData.length, this.intervalLength);\n\n switch (this.mark) {\n case 'line':\n case 'area':\n case 'gradient':\n return this.#renderLineVariant(width, height);\n case 'column':\n return this.#renderColumn(width, height);\n case 'winloss':\n return this.#renderWinLoss(VIEW_HEIGHT / 2, width, height);\n default:\n const _exhaustiveCheck: never = this.mark;\n return nothing;\n }\n }\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n\n const { width, height } = calculateViewBox(this.mark, this.validData.length, this.intervalLength);\n const aspectRatio = width / height;\n const validAspectRatio = Number.isFinite(aspectRatio) && aspectRatio > 0 ? aspectRatio : 1;\n this.style.setProperty('--_aspect-ratio', validAspectRatio.toFixed(4));\n }\n\n #renderLineVariant(width: number, height: number) {\n const domain = calculateDomain(this.validData, { explicitMin: this.min, explicitMax: this.max });\n if (!domain) return nothing;\n\n const baselineY = valueToY(0, domain);\n const drawZeroLine = domain.min < 0 && domain.max > 0;\n\n const plotPoints = toPlotPoints(this.validData, domain, { width });\n const symbolIndices = calculateSymbolIndices(this.validData, {\n first: this.denoteFirst,\n last: this.denoteLast,\n min: this.denoteMin,\n max: this.denoteMax\n });\n const interpolation = toInterpolation(this.interpolation);\n\n const linePath = toLinePath(plotPoints, interpolation, width);\n const drawArea = this.mark === 'area' || this.mark === 'gradient';\n const areaPath = drawArea ? toAreaPath(plotPoints, interpolation, VIEW_HEIGHT) : '';\n\n return svg`\n <svg viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\">\n ${this.mark === 'gradient' ? this.#renderGradientDef(height) : nothing}\n\n ${\n areaPath.length\n ? this.mark === 'gradient'\n ? svg`<path class=\"area\" d=${areaPath} style=\"fill: url(#gradient)\"></path>`\n : svg`<path class=\"area\" d=${areaPath}></path>`\n : nothing\n }\n\n ${drawZeroLine ? this.#renderZeroLine(baselineY, width) : nothing}\n\n ${linePath ? svg`<path class=\"line\" d=${linePath} vector-effect=\"non-scaling-stroke\"></path>` : nothing}\n </svg>\n ${this.#renderAccents(plotPoints, symbolIndices)}\n `;\n }\n\n #renderGradientDef(height: number) {\n return svg`\n <defs>\n <linearGradient id=\"gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"${height}\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0%\" style=\"stop-color: var(--gradient-max-color)\"></stop>\n <stop offset=\"100%\" style=\"stop-color: var(--gradient-min-color)\"></stop>\n </linearGradient>\n </defs>\n `;\n }\n\n #renderZeroLine(position: number, width: number) {\n return svg`\n <line\n class=\"zero-line\"\n vector-effect=\"non-scaling-stroke\"\n x1=\"0\"\n y1=\"${position.toFixed(PRECISION)}\"\n x2=\"${width}\"\n y2=\"${position.toFixed(PRECISION)}\">\n </line>\n `;\n }\n\n #renderAccents(points: Point[], accentIndices: Set<number>) {\n if (points.length === 0 || accentIndices.size === 0) return nothing;\n\n return html`\n ${Array.from(accentIndices).map(index => {\n const point = points[index];\n if (!point) return nothing;\n\n const style = `--x: ${point.x.toFixed(PRECISION)}; --y: ${point.y.toFixed(PRECISION)}`;\n return html`\n <span style=${style} class=\"accent\"></span>\n `;\n })}\n `;\n }\n\n #renderColumn(width: number, height: number) {\n const domain = calculateDomain(this.validData, {\n explicitMin: this.min,\n explicitMax: this.max,\n includeZero: true\n });\n if (!domain) return nothing;\n\n const baselineY = valueToY(0, domain);\n const showZeroLine = domain.min < 0 && domain.max > 0;\n const plotPoints = toPlotPoints(this.validData, domain, { width });\n const rects = toColumnRects(plotPoints, baselineY, width);\n\n return svg`\n <svg viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\">\n ${showZeroLine ? this.#renderZeroLine(baselineY, width) : nothing}\n\n ${rects.map(rect => {\n return svg`<rect class=\"column\" x=\"${rect.x.toFixed(PRECISION)}\" y=\"${rect.y.toFixed(PRECISION)}\" width=\"${rect.width.toFixed(PRECISION)}\" height=\"${rect.height.toFixed(PRECISION)}\"></rect>`;\n })}\n </svg>\n `;\n }\n\n #renderWinLoss(baselineY: number, width: number, height: number) {\n if (this.validData.length === 0) return nothing;\n\n const rects = toWinLossRects(this.validData, baselineY, { width, height });\n\n return svg`\n <svg viewBox=\"0 0 ${width} ${height}\" preserveAspectRatio=\"xMidYMid meet\" aria-hidden=\"true\">\n ${this.#renderZeroLine(baselineY, width)}\n\n ${rects.map(rect => {\n return svg`<rect class=\"${rect.className}\" x=\"${rect.x.toFixed(PRECISION)}\" y=\"${rect.y.toFixed(PRECISION)}\" width=\"${rect.width.toFixed(PRECISION)}\" height=\"${rect.height.toFixed(PRECISION)}\"></rect>`;\n })}\n </svg>\n `;\n }\n}\n"],"mappings":";;;;;;;;;;AA2DA,IAAaI,IAAb,cAA+BC,EAA4C;;EAiDlC,A,aAxCK,KAAA,OAAA,CAAC,GAGK,KAAA,OAAA,QAGS,KAAA,gBAAA,UAU7C,KAAA,cAAA,IAID,KAAA,aAAA,IAID,KAAA,YAAA,IAIA,KAAA,YAAA,IAG+D,KAAA,iBAAA,IASpC,KAAA,YAAA,CAAC;;;EAhDxB,KAAA,SAAAE,EAAU;GAACP;GAAQQ;GAAmBC;EAAkB,CAAC;;;EAE9C,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;CAgDA,SAAS;EACP,OAAO,CAAI,sBAAsB,KAAKC,GAAa,EAAE;CACvD;CAEA,oBAAoB;EAGlB,AAFA,MAAM,kBAAkB,GACxBC,EAAgB,IAAI,GACpB,KAAK,WAAW,OAAO;CACzB;CAEA,WAAW,GAAyC;EAGlD,AAFA,MAAM,WAAWC,CAAiB,GAE9BA,EAAkB,IAAI,MAAM,MAC9B,KAAK,YAAYC,EAAY,KAAK,IAAI;CAE1C;CAEA,KAAmD;EACjD,IAAM,EAAE,UAAO,cAAWC,EAAiB,KAAK,MAAM,KAAK,UAAU,QAAQ,KAAK,cAAc;EAEhG,QAAQ,KAAK,MAAb;GACE,KAAK;GACL,KAAK;GACL,KAAK,YACH,OAAO,KAAKC,GAAmBC,GAAOC,CAAM;GAC9C,KAAK,UACH,OAAO,KAAKC,GAAcF,GAAOC,CAAM;GACzC,KAAK,WACH,OAAO,KAAKE,GAAA,IAAgCH,GAAOC,CAAM;GAC3D,SAEE,OADgC,KAAK,MAC9BG;EACX;CACF;CAEA,QAAQ,GAA6B;EACnC,MAAM,QAAQC,CAAK;EAEnB,IAAM,EAAE,UAAO,cAAWP,EAAiB,KAAK,MAAM,KAAK,UAAU,QAAQ,KAAK,cAAc,GAC1FQ,IAAcN,IAAQC,GACtBM,IAAmB,OAAO,SAASD,CAAW,KAAKA,IAAc,IAAIA,IAAc;EACzF,KAAK,MAAM,YAAY,mBAAmBC,EAAiB,QAAQ,CAAC,CAAC;CACvE;CAEA,GAAmB,GAAe,GAAgB;EAChD,IAAMC,IAASC,EAAgB,KAAK,WAAW;GAAE,aAAa,KAAK;GAAK,aAAa,KAAK;EAAI,CAAC;EAC/F,IAAI,CAACD,GAAQ,OAAOJ;EAEpB,IAAMM,IAAYC,EAAS,GAAGH,CAAM,GAC9BI,IAAeJ,EAAO,MAAM,KAAKA,EAAO,MAAM,GAE9CK,IAAaC,EAAa,KAAK,WAAWN,GAAQ,EAAE,SAAM,CAAC,GAC3DO,IAAgBC,EAAuB,KAAK,WAAW;GAC3D,OAAO,KAAK;GACZ,MAAM,KAAK;GACX,KAAK,KAAK;GACV,KAAK,KAAK;EACZ,CAAC,GACKC,IAAgBC,EAAgB,KAAK,aAAa,GAElDC,IAAWC,EAAWP,GAAYI,GAAejB,CAAK,GAEtDqB,IADW,KAAK,SAAS,UAAU,KAAK,SAAS,aAC3BC,EAAWT,GAAYI,GAAA,GAA0B,IAAI;EAEjF,OAAO,CAAG,qBACYjB,EAAM,GAAGC,EAAO,2DAChC,KAAK,SAAS,aAAa,KAAKsB,GAAmBtB,CAAM,IAAIG,EAAQ,GAGrEiB,EAAS,SACL,KAAK,SAAS,aACZ,CAAG,yBAAwBA,EAAS,yCACpC,CAAG,yBAAwBA,EAAS,aACtCjB,EACL,GAECQ,IAAe,KAAKY,GAAgBd,GAAWV,CAAK,IAAII,EAAQ,GAEhEe,IAAW,CAAG,yBAAwBA,EAAS,gDAA+Cf,EAAQ,SAExG,KAAKqB,GAAeZ,GAAYE,CAAa;CAEnD;CAEA,GAAmB,GAAgB;EACjC,OAAO,CAAG,gEAEmDd,EAAO;CAMtE;CAEA,GAAgB,GAAkB,GAAe;EAC/C,OAAO,CAAG,yEAKAyB,EAAS,QAAA,CAAiB,EAAE,QAC5B1B,EAAM,QACN0B,EAAS,QAAA,CAAiB,EAAE;CAGxC;CAEA,GAAe,GAAiB,GAA4B;EAG1D,OAFIC,EAAO,WAAW,KAAKC,EAAc,SAAS,IAAUxB,IAErD,CAAI,GACP,MAAM,KAAKwB,CAAa,CAAC,CAAC,KAAI,MAAS;GACvC,IAAMC,IAAQF,EAAOG;GACrB,IAAI,CAACD,GAAO,OAAOzB;GAEnB,IAAM2B,IAAQ,QAAQF,EAAM,EAAE,QAAA,CAAiB,EAAE,SAASA,EAAM,EAAE,QAAA,CAAiB;GACnF,OAAO,CAAI,gBACKE,EAAM;EAExB,CAAC;CAEL;CAEA,GAAc,GAAe,GAAgB;EAC3C,IAAMvB,IAASC,EAAgB,KAAK,WAAW;GAC7C,aAAa,KAAK;GAClB,aAAa,KAAK;GAClB,aAAa;EACf,CAAC;EACD,IAAI,CAACD,GAAQ,OAAOJ;EAEpB,IAAMM,IAAYC,EAAS,GAAGH,CAAM,GAC9BwB,IAAexB,EAAO,MAAM,KAAKA,EAAO,MAAM,GAC9CK,IAAaC,EAAa,KAAK,WAAWN,GAAQ,EAAE,SAAM,CAAC,GAC3DyB,IAAQC,EAAcrB,GAAYH,GAAWV,CAAK;EAExD,OAAO,CAAG,qBACYA,EAAM,GAAGC,EAAO,2DAChC+B,IAAe,KAAKR,GAAgBd,GAAWV,CAAK,IAAII,EAAQ,GAEhE6B,EAAM,KAAI,MACH,CAAG,2BAA2BE,EAAK,EAAE,QAAA,CAAiB,EAAE,OAAOA,EAAK,EAAE,QAAA,CAAiB,EAAE,WAAWA,EAAK,MAAM,QAAA,CAAiB,EAAE,YAAYA,EAAK,OAAO,QAAA,CAAiB,EAAE,UACrL,EAAE;CAGT;CAEA,GAAe,GAAmB,GAAe,GAAgB;EAC/D,IAAI,KAAK,UAAU,WAAW,GAAG,OAAO/B;EAExC,IAAM6B,IAAQG,EAAe,KAAK,WAAW1B,GAAW;GAAE;GAAO;EAAO,CAAC;EAEzE,OAAO,CAAG,qBACYV,EAAM,GAAGC,EAAO,2DAChC,KAAKuB,GAAgBd,GAAWV,CAAK,EAAE,GAEvCiC,EAAM,KAAI,MACH,CAAG,gBAAgBE,EAAK,UAAU,OAAOA,EAAK,EAAE,QAAA,CAAiB,EAAE,OAAOA,EAAK,EAAE,QAAA,CAAiB,EAAE,WAAWA,EAAK,MAAM,QAAA,CAAiB,EAAE,YAAYA,EAAK,OAAO,QAAA,CAAiB,EAAE,UAChM,EAAE;CAGT;AACF;AAjNGlD,EAAA,CAAAoD,EAAS,EAAE,MAAM,MAAM,CAAC,CAAA,GAAAjD,EAAA,WAAA,QAAA,KAAA,CAAA,GAGxBH,EAAA,CAAAoD,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAjD,EAAA,WAAA,QAAA,KAAA,CAAA,GAGzBH,EAAA,CAAAoD,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAjD,EAAA,WAAA,iBAAA,KAAA,CAAA,GAGzBH,EAAA,CAAAoD,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAAjD,EAAA,WAAA,UAAA,KAAA,CAAA,GAGxCH,EAAA,CAAAoD,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAAjD,EAAA,WAAA,QAAA,KAAA,CAAA,GAGxCH,EAAA,CAAAoD,EAAS;CAAE,MAAM;CAAS,WAAW;CAAgB,SAAS;AAAK,CAAC,CAAA,GAAAjD,EAAA,WAAA,eAAA,KAAA,CAAA,GAIpEH,EAAA,CAAAoD,EAAS;CAAE,MAAM;CAAS,WAAW;CAAe,SAAS;AAAK,CAAC,CAAA,GAAAjD,EAAA,WAAA,cAAA,KAAA,CAAA,GAInEH,EAAA,CAAAoD,EAAS;CAAE,MAAM;CAAS,WAAW;CAAc,SAAS;AAAK,CAAC,CAAA,GAAAjD,EAAA,WAAA,aAAA,KAAA,CAAA,GAIlEH,EAAA,CAAAoD,EAAS;CAAE,MAAM;CAAS,WAAW;CAAc,SAAS;AAAK,CAAC,CAAA,GAAAjD,EAAA,WAAA,aAAA,KAAA,CAAA,GAIlEH,EAAA,CAAAoD,EAAS;CAAE,MAAM;CAAQ,WAAW;AAAkB,CAAC,CAAA,GAAAjD,EAAA,WAAA,kBAAA,KAAA,CAAA,GAGvDH,EAAA,CAAAoD,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAjD,EAAA,WAAA,OAAA,KAAA,CAAA,GAGzBH,EAAA,CAAAoD,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAAjD,EAAA,WAAA,OAAA,KAAA,CAAA,GAGzBH,EAAA,CAAAqD,EAAM,CAAA,GAAAlD,EAAA,WAAA,aAAA,KAAA,CAAA"}
@@ -1,28 +1,28 @@
1
1
  import { getElementUpdate as e } from "../internal/utils/dom.js";
2
- import { scopedRegistry as t } from "../internal/decorators/scoped-registry.js";
3
- import { useStyles as n } from "../internal/styles/index.js";
4
- import r from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
5
- import { Icon as i } from "../icon/icon2.js";
6
- import { Control as a } from "../forms/control/control2.js";
7
- import o from "./star-rating.js";
8
- import { html as s } from "lit";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
+ import { Icon as n } from "../icon/icon2.js";
4
+ import { Control as r } from "../forms/control/control2.js";
5
+ import i from "./star-rating.js";
6
+ import { html as a } from "lit";
7
+ import { scopedRegistry as o } from "@nvidia-elements/foundations/internal/decorators";
8
+ import { useStyles as s } from "@nvidia-elements/foundations/internal/styles";
9
9
  import { state as c } from "lit/decorators/state.js";
10
10
  // src/star-rating/star-rating.ts
11
- var l = class extends a {
11
+ var l = class extends r {
12
12
  constructor(...e) {
13
13
  super(...e), this.min = 0, this.max = 5, this.value = 0, this.active = 0, this.precision = .5;
14
14
  }
15
15
  static {
16
- this.styles = n([...a.styles, o]);
16
+ this.styles = s([...r.styles, i]);
17
17
  }
18
18
  static {
19
19
  this.metadata = {
20
20
  tag: "nve-star-rating",
21
- version: "2.23.3"
21
+ version: "2.23.5"
22
22
  };
23
23
  }
24
24
  static {
25
- this.elementDefinitions = { [i.metadata.tag]: i };
25
+ this.elementDefinitions = { [n.metadata.tag]: n };
26
26
  }
27
27
  firstUpdated(t) {
28
28
  super.firstUpdated(t), e(this.input, "max", (e) => {
@@ -34,9 +34,9 @@ var l = class extends a {
34
34
  }), this.input.addEventListener("input", () => this.value = this.input.valueAsNumber), this.value = this.input.valueAsNumber;
35
35
  }
36
36
  get prefixContent() {
37
- return s`<div aria-hidden="true" class="stars" @mouseleave="${() => this.active = 0}">${Array(this.max).fill("").map((e, t) => {
37
+ return a`<div aria-hidden="true" class="stars" @mouseleave="${() => this.active = 0}">${Array(this.max).fill("").map((e, t) => {
38
38
  let n = t + 1, r = (this.active || this.value) - t;
39
- return s`<nve-icon part="icon" @click="${() => this.#n(this.#t(t, n))}" @mousemove="${(e) => this.#e(e, t, n)}" name="${r >= 1 ? "star" : r >= .5 ? "star-half" : "star-stroke"}"></nve-icon>`;
39
+ return a`<nve-icon part="icon" @click="${() => this.#n(this.#t(t, n))}" @mousemove="${(e) => this.#e(e, t, n)}" name="${r >= 1 ? "star" : r >= .5 ? "star-half" : "star-stroke"}"></nve-icon>`;
40
40
  })}</div>`;
41
41
  }
42
42
  #e(e, t, n) {
@@ -50,7 +50,7 @@ var l = class extends a {
50
50
  this.input.valueAsNumber = e === this.value ? 0 : e, this.input.dispatchEvent(new Event("input", { bubbles: !0 })), this.input.dispatchEvent(new Event("change", { bubbles: !0 }));
51
51
  }
52
52
  };
53
- r([c()], l.prototype, "min", void 0), r([c()], l.prototype, "max", void 0), r([c()], l.prototype, "value", void 0), r([c()], l.prototype, "active", void 0), r([c()], l.prototype, "precision", void 0), l = r([t()], l);
53
+ t([c()], l.prototype, "min", void 0), t([c()], l.prototype, "max", void 0), t([c()], l.prototype, "value", void 0), t([c()], l.prototype, "active", void 0), t([c()], l.prototype, "precision", void 0), l = t([o()], l);
54
54
  export { l as StarRating };
55
55
 
56
56
  //# sourceMappingURL=star-rating2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"star-rating2.js","names":["styles","_decorate","__decorate","star_rating_default","StarRating","Control","_args","useStyles","Icon","props","getElementUpdate","max","min","#setValue","value","starValue","i","diff","#getStepValue","#handleMouseMove","rect","position","index","state","scopedRegistry"],"sources":["../../src/star-rating/star-rating.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { state } from 'lit/decorators/state.js';\nimport { useStyles, getElementUpdate, scopedRegistry } from '@nvidia-elements/core/internal';\nimport { Control } from '@nvidia-elements/core/forms';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport styles from './star-rating.css?inline';\n\n/**\n * @element nve-star-rating\n * @description A star rating component lets users rate something using stars, providing a quick visual representation of feedback\n * @documentation https://nvidia.github.io/elements/docs/elements/star-rating/\n * @since 1.23.1\n * @entrypoint \\@nvidia-elements/core/star-rating\n * @cssprop --star-size\n * @cssprop --color\n * @cssprop --stroke-color\n * @cssprop --width\n * @cssprop --height\n * @csspart icon - The icon element\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range\n *\n */\n@scopedRegistry()\nexport class StarRating extends Control {\n static styles = useStyles([...Control.styles, styles]);\n\n static readonly metadata = {\n tag: 'nve-star-rating',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon\n };\n\n @state() private min = 0;\n @state() private max = 5;\n @state() private value = 0;\n @state() private active = 0;\n @state() private precision = 0.5;\n\n firstUpdated(props: PropertyValues<this>) {\n super.firstUpdated(props);\n\n getElementUpdate(this.input, 'max', (max: unknown) => {\n if (max) {\n this.max = parseInt(max as string);\n }\n });\n\n getElementUpdate(this.input, 'min', (min: unknown) => {\n if (min) {\n this.min = parseInt(min as string);\n }\n });\n\n getElementUpdate(this.input, 'value', (value: unknown) => {\n this.#setValue(value ? parseFloat(value as string) : this.input.valueAsNumber);\n });\n\n this.input.addEventListener('input', () => (this.value = this.input.valueAsNumber));\n\n this.value = this.input.valueAsNumber;\n }\n\n protected get prefixContent() {\n return html`\n <div aria-hidden=\"true\" class=\"stars\" @mouseleave=${() => (this.active = 0)}>\n ${new Array(this.max).fill('').map((_, i) => {\n const starValue = i + 1;\n const currentValue = this.active || this.value;\n const diff = currentValue - i;\n\n const iconName = diff >= 1 ? 'star' : diff >= 0.5 ? 'star-half' : 'star-stroke';\n\n return html`\n <nve-icon part=\"icon\"\n @click=${() => this.#setValue(this.#getStepValue(i, starValue))}\n @mousemove=${(e: MouseEvent) => this.#handleMouseMove(e, i, starValue)}\n name=${iconName}\n ></nve-icon>\n `;\n })}\n </div>\n `;\n }\n\n #handleMouseMove(e: MouseEvent, index: number, starValue: number) {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const position = (e.clientX - rect.left) / rect.width;\n\n this.active = position <= 0.5 ? index + 0.5 : starValue;\n }\n\n #getStepValue(index: number, starValue: number) {\n // If hovering (active has a value), use that value\n if (this.active > 0) {\n return this.active;\n }\n\n // If clicking on the current value, toggle it off\n if (this.value === starValue || this.value === index + 0.5) {\n return 0;\n }\n\n // Otherwise, return the star value\n return starValue;\n }\n\n #setValue(value: number) {\n this.input.valueAsNumber = value === this.value ? 0 : value;\n this.input.dispatchEvent(new Event('input', { bubbles: true }));\n this.input.dispatchEvent(new Event('change', { bubbles: true }));\n }\n}\n"],"mappings":";;;;;;;;;;AA2BO,IAAMI,IAAN,cAAyBC,EAAQ;;EAgBT,A,aAJN,KAAA,MAAA,GACA,KAAA,MAAA,GACE,KAAA,QAAA,GACC,KAAA,SAAA,GACG,KAAA,YAAA;;;EAfb,KAAA,SAAAE,EAAU,CAAC,GAAGF,EAAQ,QAAQL,CAAM,CAAC;;;EAE1B,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;;EAE4B,KAAA,qBAAA,GACzBQ,EAAK,SAAS,MAAMA,EACvB;;CAQA,aAAa,GAA6B;EAqBxC,AApBA,MAAM,aAAaC,CAAK,GAExBC,EAAiB,KAAK,OAAO,QAAQ,MAAiB;GACpD,AAAIC,MACF,KAAK,MAAM,SAASA,CAAa;EAErC,CAAC,GAEDD,EAAiB,KAAK,OAAO,QAAQ,MAAiB;GACpD,AAAIE,MACF,KAAK,MAAM,SAASA,CAAa;EAErC,CAAC,GAEDF,EAAiB,KAAK,OAAO,UAAU,MAAmB;GACxD,KAAKG,GAAUC,IAAQ,WAAWA,CAAe,IAAI,KAAK,MAAM,aAAa;EAC/E,CAAC,GAED,KAAK,MAAM,iBAAiB,eAAgB,KAAK,QAAQ,KAAK,MAAM,aAAc,GAElF,KAAK,QAAQ,KAAK,MAAM;CAC1B;CAEA,IAAc,gBAAgB;EAC5B,OAAO,CAAI,4DACgD,KAAK,SAAS,EAAG,IACpE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM;GAC3C,IAAMC,IAAYC,IAAI,GAEhBC,KADe,KAAK,UAAU,KAAK,SACbD;GAI5B,OAAO,CAAI,uCAEM,KAAKH,GAAU,KAAKK,GAAcF,GAAGD,CAAS,CAAC,EAAE,iBAClD,MAAkB,KAAKI,GAAiB,GAAGH,GAAGD,CAAS,EAAE,UALxDE,KAAQ,IAAI,SAASA,KAAQ,KAAM,cAAc,cAMhD;EAGpB,CAAC,EAAE;CAGP;CAEA,GAAiB,GAAe,GAAe,GAAmB;EAEhE,IAAMG,IADS,EAAE,cACG,sBAAsB,GACpCC,KAAY,EAAE,UAAUD,EAAK,QAAQA,EAAK;EAEhD,KAAK,SAASC,KAAY,KAAMC,IAAQ,KAAMP;CAChD;CAEA,GAAc,GAAe,GAAmB;EAY9C,OAVI,KAAK,SAAS,IACT,KAAK,SAIV,KAAK,UAAUA,KAAa,KAAK,UAAUO,IAAQ,KAC9C,IAIFP;CACT;CAEA,GAAU,GAAe;EAGvB,AAFA,KAAK,MAAM,gBAAgBD,MAAU,KAAK,QAAQ,IAAIA,GACtD,KAAK,MAAM,cAAc,IAAI,MAAM,SAAS,EAAE,SAAS,GAAK,CAAC,CAAC,GAC9D,KAAK,MAAM,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,GAAK,CAAC,CAAC;CACjE;AACF;AAhFGb,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,OAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,OAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,SAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,UAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,aAAA,KAAA,CAAA,GAjBR,IAAAH,EAAA,CAAAuB,EAAe,CAAA,GAAApB,CAAA"}
1
+ {"version":3,"file":"star-rating2.js","names":["styles","_decorate","__decorate","star_rating_default","StarRating","Control","_args","useStyles","Icon","props","getElementUpdate","max","min","#setValue","value","starValue","i","diff","#getStepValue","#handleMouseMove","rect","position","index","state","scopedRegistry"],"sources":["../../src/star-rating/star-rating.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { state } from 'lit/decorators/state.js';\nimport { getElementUpdate } from '@nvidia-elements/core/internal';\nimport { scopedRegistry } from '@nvidia-elements/foundations/internal/decorators';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport { Control } from '@nvidia-elements/core/forms';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport styles from './star-rating.css?inline';\n\n/**\n * @element nve-star-rating\n * @description A star rating component lets users rate something using stars, providing a quick visual representation of feedback\n * @documentation https://nvidia.github.io/elements/docs/elements/star-rating/\n * @since 1.23.1\n * @entrypoint \\@nvidia-elements/core/star-rating\n * @cssprop --star-size\n * @cssprop --color\n * @cssprop --stroke-color\n * @cssprop --width\n * @cssprop --height\n * @csspart icon - The icon element\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range\n *\n */\n@scopedRegistry()\nexport class StarRating extends Control {\n static styles = useStyles([...Control.styles, styles]);\n\n static readonly metadata = {\n tag: 'nve-star-rating',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon\n };\n\n @state() private min = 0;\n @state() private max = 5;\n @state() private value = 0;\n @state() private active = 0;\n @state() private precision = 0.5;\n\n firstUpdated(props: PropertyValues<this>) {\n super.firstUpdated(props);\n\n getElementUpdate(this.input, 'max', (max: unknown) => {\n if (max) {\n this.max = parseInt(max as string);\n }\n });\n\n getElementUpdate(this.input, 'min', (min: unknown) => {\n if (min) {\n this.min = parseInt(min as string);\n }\n });\n\n getElementUpdate(this.input, 'value', (value: unknown) => {\n this.#setValue(value ? parseFloat(value as string) : this.input.valueAsNumber);\n });\n\n this.input.addEventListener('input', () => (this.value = this.input.valueAsNumber));\n\n this.value = this.input.valueAsNumber;\n }\n\n protected get prefixContent() {\n return html`\n <div aria-hidden=\"true\" class=\"stars\" @mouseleave=${() => (this.active = 0)}>\n ${new Array(this.max).fill('').map((_, i) => {\n const starValue = i + 1;\n const currentValue = this.active || this.value;\n const diff = currentValue - i;\n\n const iconName = diff >= 1 ? 'star' : diff >= 0.5 ? 'star-half' : 'star-stroke';\n\n return html`\n <nve-icon part=\"icon\"\n @click=${() => this.#setValue(this.#getStepValue(i, starValue))}\n @mousemove=${(e: MouseEvent) => this.#handleMouseMove(e, i, starValue)}\n name=${iconName}\n ></nve-icon>\n `;\n })}\n </div>\n `;\n }\n\n #handleMouseMove(e: MouseEvent, index: number, starValue: number) {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const position = (e.clientX - rect.left) / rect.width;\n\n this.active = position <= 0.5 ? index + 0.5 : starValue;\n }\n\n #getStepValue(index: number, starValue: number) {\n // If hovering (active has a value), use that value\n if (this.active > 0) {\n return this.active;\n }\n\n // If clicking on the current value, toggle it off\n if (this.value === starValue || this.value === index + 0.5) {\n return 0;\n }\n\n // Otherwise, return the star value\n return starValue;\n }\n\n #setValue(value: number) {\n this.input.valueAsNumber = value === this.value ? 0 : value;\n this.input.dispatchEvent(new Event('input', { bubbles: true }));\n this.input.dispatchEvent(new Event('change', { bubbles: true }));\n }\n}\n"],"mappings":";;;;;;;;;;AA6BO,IAAMI,IAAN,cAAyBC,EAAQ;;EAgBT,A,aAJN,KAAA,MAAA,GACA,KAAA,MAAA,GACE,KAAA,QAAA,GACC,KAAA,SAAA,GACG,KAAA,YAAA;;;EAfb,KAAA,SAAAE,EAAU,CAAC,GAAGF,EAAQ,QAAQL,CAAM,CAAC;;;EAE1B,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;;EAE4B,KAAA,qBAAA,GACzBQ,EAAK,SAAS,MAAMA,EACvB;;CAQA,aAAa,GAA6B;EAqBxC,AApBA,MAAM,aAAaC,CAAK,GAExBC,EAAiB,KAAK,OAAO,QAAQ,MAAiB;GACpD,AAAIC,MACF,KAAK,MAAM,SAASA,CAAa;EAErC,CAAC,GAEDD,EAAiB,KAAK,OAAO,QAAQ,MAAiB;GACpD,AAAIE,MACF,KAAK,MAAM,SAASA,CAAa;EAErC,CAAC,GAEDF,EAAiB,KAAK,OAAO,UAAU,MAAmB;GACxD,KAAKG,GAAUC,IAAQ,WAAWA,CAAe,IAAI,KAAK,MAAM,aAAa;EAC/E,CAAC,GAED,KAAK,MAAM,iBAAiB,eAAgB,KAAK,QAAQ,KAAK,MAAM,aAAc,GAElF,KAAK,QAAQ,KAAK,MAAM;CAC1B;CAEA,IAAc,gBAAgB;EAC5B,OAAO,CAAI,4DACgD,KAAK,SAAS,EAAG,IACpE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM;GAC3C,IAAMC,IAAYC,IAAI,GAEhBC,KADe,KAAK,UAAU,KAAK,SACbD;GAI5B,OAAO,CAAI,uCAEM,KAAKH,GAAU,KAAKK,GAAcF,GAAGD,CAAS,CAAC,EAAE,iBAClD,MAAkB,KAAKI,GAAiB,GAAGH,GAAGD,CAAS,EAAE,UALxDE,KAAQ,IAAI,SAASA,KAAQ,KAAM,cAAc,cAMhD;EAGpB,CAAC,EAAE;CAGP;CAEA,GAAiB,GAAe,GAAe,GAAmB;EAEhE,IAAMG,IADS,EAAE,cACG,sBAAsB,GACpCC,KAAY,EAAE,UAAUD,EAAK,QAAQA,EAAK;EAEhD,KAAK,SAASC,KAAY,KAAMC,IAAQ,KAAMP;CAChD;CAEA,GAAc,GAAe,GAAmB;EAY9C,OAVI,KAAK,SAAS,IACT,KAAK,SAIV,KAAK,UAAUA,KAAa,KAAK,UAAUO,IAAQ,KAC9C,IAIFP;CACT;CAEA,GAAU,GAAe;EAGvB,AAFA,KAAK,MAAM,gBAAgBD,MAAU,KAAK,QAAQ,IAAIA,GACtD,KAAK,MAAM,cAAc,IAAI,MAAM,SAAS,EAAE,SAAS,GAAK,CAAC,CAAC,GAC9D,KAAK,MAAM,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,GAAK,CAAC,CAAC;CACjE;AACF;AAhFGb,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,OAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,OAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,SAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,UAAA,KAAA,CAAA,GACNH,EAAA,CAAAsB,EAAM,CAAA,GAAAnB,EAAA,WAAA,aAAA,KAAA,CAAA,GAjBR,IAAAH,EAAA,CAAAuB,EAAe,CAAA,GAAApB,CAAA"}
@@ -1,40 +1,40 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { keyNavigationList as t } from "../internal/controllers/keynav-list.controller.js";
3
- import { attachInternals as n } from "../internal/utils/a11y.js";
4
- import { stateSelected as r } from "../internal/controllers/state-selected.controller.js";
5
- import { scopedRegistry as i } from "../internal/decorators/scoped-registry.js";
6
- import { useStyles as a } from "../internal/styles/index.js";
7
- import o from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
8
- import { IconButton as s } from "../icon-button/icon-button2.js";
9
- import { ProgressRing as c } from "../progress-ring/progress-ring2.js";
10
- import l from "./steps-item.js";
11
- import u from "./steps.js";
12
- import { LitElement as d, html as f } from "lit";
13
- import { property as p } from "lit/decorators/property.js";
3
+ import { stateSelected as n } from "../internal/controllers/state-selected.controller.js";
4
+ import r from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
5
+ import { IconButton as i } from "../icon-button/icon-button2.js";
6
+ import { ProgressRing as a } from "../progress-ring/progress-ring2.js";
7
+ import o from "./steps-item.js";
8
+ import s from "./steps.js";
9
+ import { attachInternals as c } from "@nvidia-elements/foundations/internal/a11y";
10
+ import { LitElement as l, html as u } from "lit";
11
+ import { property as d } from "lit/decorators/property.js";
12
+ import { scopedRegistry as f } from "@nvidia-elements/foundations/internal/decorators";
13
+ import { useStyles as p } from "@nvidia-elements/foundations/internal/styles";
14
14
  import { ButtonFormControlMixin as m } from "@nvidia-elements/forms/mixins";
15
15
  import { state as h } from "lit/decorators/state.js";
16
16
  import { queryAssignedElements as g } from "lit/decorators/query-assigned-elements.js";
17
17
  import { when as _ } from "lit/directives/when.js";
18
18
  // src/steps/steps.ts
19
- var v = class extends m(d) {
19
+ var v = class extends m(l) {
20
20
  static {
21
- this.styles = a([l]);
21
+ this.styles = p([o]);
22
22
  }
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-steps-item",
26
- version: "2.23.3",
26
+ version: "2.23.5",
27
27
  parents: ["nve-steps"]
28
28
  };
29
29
  }
30
30
  static {
31
31
  this.elementDefinitions = {
32
- [s.metadata.tag]: s,
33
- [c.metadata.tag]: c
32
+ [i.metadata.tag]: i,
33
+ [a.metadata.tag]: a
34
34
  };
35
35
  }
36
36
  render() {
37
- return f`<div internal-host focus-within><slot name="status-icon">${this.status ? "" : f`<nve-icon-button part="icon-button" readonly="readonly" id="number-icon" .disabled="${this.disabled}">${this.index}</nve-icon-button>`} ${this.status === "success" ? f`<nve-icon-button part="icon-button" readonly="readonly" size="sm" interaction="emphasis" icon-name="check"></nve-icon-button>` : ""} ${this.status === "danger" ? f`<nve-icon-button part="icon-button" readonly="readonly" size="sm" interaction="destructive" icon-name="exclamation-circle"></nve-icon-button>` : ""} ${this.status === "pending" ? f`<nve-progress-ring part="progress-ring" status="accent" size="sm"></nve-progress-ring>` : ""}</slot>${_(this.container !== "condensed", () => f`<slot></slot>`)}</div>`;
37
+ return u`<div internal-host focus-within><slot name="status-icon">${this.status ? "" : u`<nve-icon-button part="icon-button" readonly="readonly" id="number-icon" .disabled="${this.disabled}">${this.index}</nve-icon-button>`} ${this.status === "success" ? u`<nve-icon-button part="icon-button" readonly="readonly" size="sm" interaction="emphasis" icon-name="check"></nve-icon-button>` : ""} ${this.status === "danger" ? u`<nve-icon-button part="icon-button" readonly="readonly" size="sm" interaction="destructive" icon-name="exclamation-circle"></nve-icon-button>` : ""} ${this.status === "pending" ? u`<nve-progress-ring part="progress-ring" status="accent" size="sm"></nve-progress-ring>` : ""}</slot>${_(this.container !== "condensed", () => u`<slot></slot>`)}</div>`;
38
38
  }
39
39
  constructor() {
40
40
  super(), this.selected = !1, this.index = 0, this.type = "button";
@@ -43,33 +43,33 @@ var v = class extends m(d) {
43
43
  super.connectedCallback(), this._internals.role = "tab";
44
44
  }
45
45
  };
46
- o([p({
46
+ r([d({
47
47
  type: Boolean,
48
48
  reflect: !0
49
- })], v.prototype, "selected", void 0), o([p({
49
+ })], v.prototype, "selected", void 0), r([d({
50
50
  type: String,
51
51
  reflect: !0
52
- })], v.prototype, "status", void 0), o([p({
52
+ })], v.prototype, "status", void 0), r([d({
53
53
  type: String,
54
54
  reflect: !0
55
- })], v.prototype, "container", void 0), o([h()], v.prototype, "index", void 0), v = o([
55
+ })], v.prototype, "container", void 0), r([h()], v.prototype, "index", void 0), v = r([
56
56
  e(),
57
- i(),
58
- r()
57
+ f(),
58
+ n()
59
59
  ], v);
60
- var y = class extends d {
60
+ var y = class extends l {
61
61
  constructor(...e) {
62
62
  super(...e), this.vertical = !1, this.behaviorSelect = !1, this.#t = (e) => {
63
63
  this.#e(e.target);
64
64
  };
65
65
  }
66
66
  static {
67
- this.styles = a([u]);
67
+ this.styles = p([s]);
68
68
  }
69
69
  static {
70
70
  this.metadata = {
71
71
  tag: "nve-steps",
72
- version: "2.23.3",
72
+ version: "2.23.5",
73
73
  children: ["nve-steps-item"]
74
74
  };
75
75
  }
@@ -83,10 +83,10 @@ var y = class extends d {
83
83
  this.behaviorSelect && e.matches("nve-steps-item") && !e.disabled && (this.steps.forEach((e) => e.selected = !1), e.selected = !0);
84
84
  }
85
85
  render() {
86
- return f`<div internal-host><slot @slotchange="${this.#n}"></slot></div>`;
86
+ return u`<div internal-host><slot @slotchange="${this.#n}"></slot></div>`;
87
87
  }
88
88
  connectedCallback() {
89
- super.connectedCallback(), n(this), this._internals.role = "tablist", this.addEventListener("click", this.#t);
89
+ super.connectedCallback(), c(this), this._internals.role = "tablist", this.addEventListener("click", this.#t);
90
90
  }
91
91
  disconnectedCallback() {
92
92
  super.disconnectedCallback(), this.removeEventListener("click", this.#t);
@@ -101,16 +101,16 @@ var y = class extends d {
101
101
  });
102
102
  }
103
103
  };
104
- o([p({
104
+ r([d({
105
105
  type: Boolean,
106
106
  reflect: !0
107
- })], y.prototype, "vertical", void 0), o([p({
107
+ })], y.prototype, "vertical", void 0), r([d({
108
108
  type: String,
109
109
  reflect: !0
110
- })], y.prototype, "container", void 0), o([p({
110
+ })], y.prototype, "container", void 0), r([d({
111
111
  type: Boolean,
112
112
  attribute: "behavior-select"
113
- })], y.prototype, "behaviorSelect", void 0), o([g({ selector: "nve-steps-item" })], y.prototype, "steps", void 0), y = o([e(), t()], y);
113
+ })], y.prototype, "behaviorSelect", void 0), r([g({ selector: "nve-steps-item" })], y.prototype, "steps", void 0), y = r([e(), t()], y);
114
114
  export { y as Steps, v as StepsItem };
115
115
 
116
116
  //# sourceMappingURL=steps2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"steps2.js","names":["stepsItemStyleSheet","_decorate","stepsStyleSheet","__decorate","steps_item_default","steps_default","StepsItem","ButtonFormControlMixin","LitElement","useStyles","IconButton","ProgressRing","when","property","state","audit","scopedRegistry","stateSelected","Steps","_args","#onClick","#selectTab","stepsItem","#syncChildSteps","attachInternals","props","i","queryAssignedElements","keyNavigationList"],"sources":["../../src/steps/steps.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues } from 'lit';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\nimport { when } from 'lit/directives/when.js';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport { ButtonFormControlMixin } from '@nvidia-elements/forms/mixins';\nimport type { KeynavListConfig } from '@nvidia-elements/core/internal';\nimport {\n stateSelected,\n useStyles,\n keyNavigationList,\n attachInternals,\n audit,\n scopedRegistry\n} from '@nvidia-elements/core/internal';\nimport stepsItemStyleSheet from './steps-item.css?inline';\nimport stepsStyleSheet from './steps.css?inline';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport { ProgressRing } from '@nvidia-elements/core/progress-ring';\n\n/**\n * @element nve-steps-item\n * @description Represents an individual step within a multi-step workflow, displaying its status and enabling navigation within the parent steps component.\n * @documentation https://nvidia.github.io/elements/docs/elements/steps/\n * @since 0.30.0\n * @entrypoint \\@nvidia-elements/core/steps\n * @slot - default slot for step text\n * @slot status-icon - custom slotted step icon\n * @cssprop --font-size\n * @cssprop --border-top\n * @cssprop --width\n * @cssprop --font-weight\n * @cssprop --border-radius\n * @cssprop --color\n * @cssprop --text-transform\n * @csspart icon-button - The icon button element\n * @csspart progress-ring - The progress ring element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\n */\n@audit()\n@scopedRegistry()\n@stateSelected<StepsItem>()\nexport class StepsItem extends ButtonFormControlMixin(LitElement) {\n /**\n * Determines which item the user selects, defaults to false.\n */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n /**\n * Controls the step status. `accent` has no default status icon, `danger` displays an alert icon, `success` displays a check icon, and `pending` displays a progress indicator. Omit the property to display the step number.\n */\n @property({ type: String, reflect: true }) status?: 'accent' | 'danger' | 'success' | 'pending';\n\n /**\n * Determines whether the steps should display in condensed format with no text labels.\n */\n @property({ type: String, reflect: true }) container?: 'condensed';\n\n /** @private */\n @state() index: number = 0;\n\n static styles = useStyles([stepsItemStyleSheet]);\n\n static readonly metadata = {\n tag: 'nve-steps-item',\n version: '0.0.0',\n parents: ['nve-steps']\n };\n\n static elementDefinitions = {\n [IconButton.metadata.tag]: IconButton,\n [ProgressRing.metadata.tag]: ProgressRing\n };\n\n render() {\n return html`\n <div internal-host focus-within>\n <slot name=\"status-icon\">\n ${!this.status ? html`<nve-icon-button part=\"icon-button\" readonly id=\"number-icon\" .disabled=${this.disabled}>${this.index}</nve-icon-button>` : ''}\n ${this.status === 'success' ? html`<nve-icon-button part=\"icon-button\" readonly size=\"sm\" interaction=\"emphasis\" icon-name=\"check\"></nve-icon-button>` : ''}\n ${this.status === 'danger' ? html`<nve-icon-button part=\"icon-button\" readonly size=\"sm\" interaction=\"destructive\" icon-name=\"exclamation-circle\"></nve-icon-button>` : ''}\n ${this.status === 'pending' ? html`<nve-progress-ring part=\"progress-ring\" status=\"accent\" size=\"sm\"></nve-progress-ring>` : ''}\n </slot>\n ${when(this.container !== 'condensed', () => html`<slot></slot>`)}\n </div>\n `;\n }\n\n constructor() {\n super();\n this.type = 'button';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._internals.role = 'tab';\n }\n}\n\n/**\n * @element nve-steps\n * @description Steps enables a multi-step workflow allowing a user to complete a goal in a specific sequence.\n * @documentation https://nvidia.github.io/elements/docs/elements/steps/\n * @since 0.30.0\n * @entrypoint \\@nvidia-elements/core/steps\n * @slot - default slot for steps-item\n * @cssprop --gap\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\n */\n@audit()\n@keyNavigationList<Steps>()\nexport class Steps extends LitElement {\n /**\n * Determines whether the steps should display in a vertical layout vs. defaulting to horizontal.\n */\n @property({ type: Boolean, reflect: true }) vertical = false;\n\n /**\n * Determines whether the steps should display in condensed format with no text labels.\n */\n @property({ type: String, reflect: true }) container?: 'condensed';\n\n /**\n * Determines whether the steps should handle selection behavior vs. defaults to off.\n */\n @property({ type: Boolean, attribute: 'behavior-select' }) behaviorSelect = false;\n\n static styles = useStyles([stepsStyleSheet]);\n\n static readonly metadata = {\n tag: 'nve-steps',\n version: '0.0.0',\n children: ['nve-steps-item']\n };\n\n /** @private */\n get keynavListConfig(): KeynavListConfig {\n return {\n items: this.steps,\n layout: this.vertical ? 'vertical' : 'horizontal'\n };\n }\n\n @queryAssignedElements({ selector: 'nve-steps-item' }) private steps!: StepsItem[];\n\n /** @private */\n declare _internals: ElementInternals;\n\n #selectTab(stepsItem: HTMLElement & { matches: Element['matches']; disabled?: boolean; selected?: boolean }) {\n if (!this.behaviorSelect || !stepsItem.matches('nve-steps-item') || stepsItem.disabled) {\n return;\n }\n\n this.steps.forEach(i => (i.selected = false));\n stepsItem.selected = true;\n }\n\n render() {\n return html`\n <div internal-host>\n <slot @slotchange=${this.#syncChildSteps}></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'tablist';\n this.addEventListener('click', this.#onClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.#onClick);\n }\n\n #onClick = (e: Event) => {\n this.#selectTab(e.target as HTMLElement & { matches: Element['matches']; disabled?: boolean; selected?: boolean });\n };\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n if (props.has('container') || props.has('vertical')) {\n this.#syncChildSteps();\n }\n }\n\n #syncChildSteps() {\n this._internals.ariaOrientation = this.vertical ? 'vertical' : 'horizontal';\n this.steps.forEach((item, i) => {\n item.index = i + 1;\n item.container = this.container;\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"steps2.js","names":["stepsItemStyleSheet","_decorate","stepsStyleSheet","__decorate","steps_item_default","steps_default","StepsItem","ButtonFormControlMixin","LitElement","useStyles","IconButton","ProgressRing","when","property","state","audit","scopedRegistry","stateSelected","Steps","_args","#onClick","#selectTab","stepsItem","#syncChildSteps","attachInternals","props","i","queryAssignedElements","keyNavigationList"],"sources":["../../src/steps/steps.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PropertyValues } from 'lit';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\nimport { when } from 'lit/directives/when.js';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport { ButtonFormControlMixin } from '@nvidia-elements/forms/mixins';\nimport type { KeynavListConfig } from '@nvidia-elements/core/internal';\nimport { stateSelected, keyNavigationList, audit } from '@nvidia-elements/core/internal';\nimport { scopedRegistry } from '@nvidia-elements/foundations/internal/decorators';\nimport { attachInternals } from '@nvidia-elements/foundations/internal/a11y';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport stepsItemStyleSheet from './steps-item.css?inline';\nimport stepsStyleSheet from './steps.css?inline';\nimport { IconButton } from '@nvidia-elements/core/icon-button';\nimport { ProgressRing } from '@nvidia-elements/core/progress-ring';\n\n/**\n * @element nve-steps-item\n * @description Represents an individual step within a multi-step workflow, displaying its status and enabling navigation within the parent steps component.\n * @documentation https://nvidia.github.io/elements/docs/elements/steps/\n * @since 0.30.0\n * @entrypoint \\@nvidia-elements/core/steps\n * @slot - default slot for step text\n * @slot status-icon - custom slotted step icon\n * @cssprop --font-size\n * @cssprop --border-top\n * @cssprop --width\n * @cssprop --font-weight\n * @cssprop --border-radius\n * @cssprop --color\n * @cssprop --text-transform\n * @csspart icon-button - The icon button element\n * @csspart progress-ring - The progress ring element\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\n */\n@audit()\n@scopedRegistry()\n@stateSelected<StepsItem>()\nexport class StepsItem extends ButtonFormControlMixin(LitElement) {\n /**\n * Determines which item the user selects, defaults to false.\n */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n /**\n * Controls the step status. `accent` has no default status icon, `danger` displays an alert icon, `success` displays a check icon, and `pending` displays a progress indicator. Omit the property to display the step number.\n */\n @property({ type: String, reflect: true }) status?: 'accent' | 'danger' | 'success' | 'pending';\n\n /**\n * Determines whether the steps should display in condensed format with no text labels.\n */\n @property({ type: String, reflect: true }) container?: 'condensed';\n\n /** @private */\n @state() index: number = 0;\n\n static styles = useStyles([stepsItemStyleSheet]);\n\n static readonly metadata = {\n tag: 'nve-steps-item',\n version: '0.0.0',\n parents: ['nve-steps']\n };\n\n static elementDefinitions = {\n [IconButton.metadata.tag]: IconButton,\n [ProgressRing.metadata.tag]: ProgressRing\n };\n\n render() {\n return html`\n <div internal-host focus-within>\n <slot name=\"status-icon\">\n ${!this.status ? html`<nve-icon-button part=\"icon-button\" readonly id=\"number-icon\" .disabled=${this.disabled}>${this.index}</nve-icon-button>` : ''}\n ${this.status === 'success' ? html`<nve-icon-button part=\"icon-button\" readonly size=\"sm\" interaction=\"emphasis\" icon-name=\"check\"></nve-icon-button>` : ''}\n ${this.status === 'danger' ? html`<nve-icon-button part=\"icon-button\" readonly size=\"sm\" interaction=\"destructive\" icon-name=\"exclamation-circle\"></nve-icon-button>` : ''}\n ${this.status === 'pending' ? html`<nve-progress-ring part=\"progress-ring\" status=\"accent\" size=\"sm\"></nve-progress-ring>` : ''}\n </slot>\n ${when(this.container !== 'condensed', () => html`<slot></slot>`)}\n </div>\n `;\n }\n\n constructor() {\n super();\n this.type = 'button';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._internals.role = 'tab';\n }\n}\n\n/**\n * @element nve-steps\n * @description Steps enables a multi-step workflow allowing a user to complete a goal in a specific sequence.\n * @documentation https://nvidia.github.io/elements/docs/elements/steps/\n * @since 0.30.0\n * @entrypoint \\@nvidia-elements/core/steps\n * @slot - default slot for steps-item\n * @cssprop --gap\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\n */\n@audit()\n@keyNavigationList<Steps>()\nexport class Steps extends LitElement {\n /**\n * Determines whether the steps should display in a vertical layout vs. defaulting to horizontal.\n */\n @property({ type: Boolean, reflect: true }) vertical = false;\n\n /**\n * Determines whether the steps should display in condensed format with no text labels.\n */\n @property({ type: String, reflect: true }) container?: 'condensed';\n\n /**\n * Determines whether the steps should handle selection behavior vs. defaults to off.\n */\n @property({ type: Boolean, attribute: 'behavior-select' }) behaviorSelect = false;\n\n static styles = useStyles([stepsStyleSheet]);\n\n static readonly metadata = {\n tag: 'nve-steps',\n version: '0.0.0',\n children: ['nve-steps-item']\n };\n\n /** @private */\n get keynavListConfig(): KeynavListConfig {\n return {\n items: this.steps,\n layout: this.vertical ? 'vertical' : 'horizontal'\n };\n }\n\n @queryAssignedElements({ selector: 'nve-steps-item' }) private steps!: StepsItem[];\n\n /** @private */\n declare _internals: ElementInternals;\n\n #selectTab(stepsItem: HTMLElement & { matches: Element['matches']; disabled?: boolean; selected?: boolean }) {\n if (!this.behaviorSelect || !stepsItem.matches('nve-steps-item') || stepsItem.disabled) {\n return;\n }\n\n this.steps.forEach(i => (i.selected = false));\n stepsItem.selected = true;\n }\n\n render() {\n return html`\n <div internal-host>\n <slot @slotchange=${this.#syncChildSteps}></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'tablist';\n this.addEventListener('click', this.#onClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('click', this.#onClick);\n }\n\n #onClick = (e: Event) => {\n this.#selectTab(e.target as HTMLElement & { matches: Element['matches']; disabled?: boolean; selected?: boolean });\n };\n\n updated(props: PropertyValues<this>) {\n super.updated(props);\n if (props.has('container') || props.has('vertical')) {\n this.#syncChildSteps();\n }\n }\n\n #syncChildSteps() {\n this._internals.ariaOrientation = this.vertical ? 'vertical' : 'horizontal';\n this.steps.forEach((item, i) => {\n item.index = i + 1;\n item.container = this.container;\n });\n }\n}\n"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
- import { useStyles as t } from "../internal/styles/index.js";
3
- import n from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
4
- import { ControlGroup as r } from "../forms/control-group/control-group2.js";
5
- import i from "./switch-group.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
3
+ import { ControlGroup as n } from "../forms/control-group/control-group2.js";
4
+ import r from "./switch-group.js";
5
+ import { useStyles as i } from "@nvidia-elements/foundations/internal/styles";
6
6
  // src/switch/switch-group.ts
7
- var a = class extends r {
7
+ var a = class extends n {
8
8
  static {
9
- this.styles = t([...r.styles, i]);
9
+ this.styles = i([...n.styles, r]);
10
10
  }
11
11
  static {
12
12
  this.metadata = {
13
13
  tag: "nve-switch-group",
14
- version: "2.23.3",
14
+ version: "2.23.5",
15
15
  children: [
16
16
  "label",
17
17
  "nve-control-message",
@@ -20,7 +20,7 @@ var a = class extends r {
20
20
  };
21
21
  }
22
22
  };
23
- a = n([e()], a);
23
+ a = t([e()], a);
24
24
  export { a as SwitchGroup };
25
25
 
26
26
  //# sourceMappingURL=switch-group2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch-group2.js","names":["styles","_decorate","__decorate","switch_group_default","SwitchGroup","ControlGroup","useStyles","audit"],"sources":["../../src/switch/switch-group.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CSSResult } from 'lit';\nimport { audit, useStyles } from '@nvidia-elements/core/internal';\nimport { ControlGroup } from '@nvidia-elements/core/forms';\nimport styles from './switch-group.css?inline';\n\n/**\n * @element nve-switch-group\n * @description A switch group is a container for a group of switches.\n * @since 0.3.0\n * @entrypoint \\@nvidia-elements/core/switch\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/switch/\n */\n@audit()\nexport class SwitchGroup extends ControlGroup {\n static styles: CSSResult[] = useStyles([...ControlGroup.styles, styles]);\n\n static readonly metadata = {\n tag: 'nve-switch-group',\n version: '0.0.0',\n children: ['label', 'nve-control-message', 'nve-switch']\n };\n}\n"],"mappings":";;;;;;AAgBO,IAAMI,IAAN,cAA0BC,EAAa;;EACf,KAAA,SAAAC,EAAU,CAAC,GAAGD,EAAa,QAAQL,CAAM,CAAC;;;EAE5C,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,UAAU;IAAC;IAAS;IAAuB;GAAY;EACzD;;AACF;AATC,IAAAC,EAAA,CAAAM,EAAM,CAAA,GAAAH,CAAA"}
1
+ {"version":3,"file":"switch-group2.js","names":["styles","_decorate","__decorate","switch_group_default","SwitchGroup","ControlGroup","useStyles","audit"],"sources":["../../src/switch/switch-group.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CSSResult } from 'lit';\nimport { audit } from '@nvidia-elements/core/internal';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport { ControlGroup } from '@nvidia-elements/core/forms';\nimport styles from './switch-group.css?inline';\n\n/**\n * @element nve-switch-group\n * @description A switch group is a container for a group of switches.\n * @since 0.3.0\n * @entrypoint \\@nvidia-elements/core/switch\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/switch/\n */\n@audit()\nexport class SwitchGroup extends ControlGroup {\n static styles: CSSResult[] = useStyles([...ControlGroup.styles, styles]);\n\n static readonly metadata = {\n tag: 'nve-switch-group',\n version: '0.0.0',\n children: ['label', 'nve-control-message', 'nve-switch']\n };\n}\n"],"mappings":";;;;;;AAiBO,IAAMI,IAAN,cAA0BC,EAAa;;EACf,KAAA,SAAAC,EAAU,CAAC,GAAGD,EAAa,QAAQL,CAAM,CAAC;;;EAE5C,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,UAAU;IAAC;IAAS;IAAuB;GAAY;EACzD;;AACF;AATC,IAAAC,EAAA,CAAAM,EAAM,CAAA,GAAAH,CAAA"}
@@ -1,21 +1,21 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { hostAttr as t } from "../internal/decorators/host-attr.js";
3
- import { useStyles as n } from "../internal/styles/index.js";
4
- import r from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
5
- import { Control as i } from "../forms/control/control2.js";
6
- import a from "./switch.js";
3
+ import n from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
4
+ import { Control as r } from "../forms/control/control2.js";
5
+ import i from "./switch.js";
6
+ import { useStyles as a } from "@nvidia-elements/foundations/internal/styles";
7
7
  // src/switch/switch.ts
8
- var o = class extends i {
8
+ var o = class extends r {
9
9
  constructor(...e) {
10
10
  super(...e), this.nveControl = "inline";
11
11
  }
12
12
  static {
13
- this.styles = n([...i.styles, a]);
13
+ this.styles = a([...r.styles, i]);
14
14
  }
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-switch",
18
- version: "2.23.3",
18
+ version: "2.23.5",
19
19
  children: [
20
20
  "label",
21
21
  "input",
@@ -24,7 +24,7 @@ var o = class extends i {
24
24
  };
25
25
  }
26
26
  };
27
- r([t({ attribute: "nve-control" })], o.prototype, "nveControl", void 0), o = r([e()], o);
27
+ n([t({ attribute: "nve-control" })], o.prototype, "nveControl", void 0), o = n([e()], o);
28
28
  export { o as Switch };
29
29
 
30
30
  //# sourceMappingURL=switch2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch2.js","names":["styles","_decorate","__decorate","switch_default","Switch","Control","_args","useStyles","hostAttr","audit"],"sources":["../../src/switch/switch.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CSSResult } from 'lit';\nimport { audit, hostAttr, useStyles } from '@nvidia-elements/core/internal';\nimport { Control } from '@nvidia-elements/core/forms';\nimport styles from './switch.css?inline';\n\n/**\n * @element nve-switch\n * @description A switch is a control that enables users to switch between two mutually exclusive options (on or off, checked or unchecked) through a single click or tap.\n * @documentation https://nvidia.github.io/elements/docs/elements/switch/\n * @since 0.3.0\n * @entrypoint \\@nvidia-elements/core/switch\n * @cssprop --cursor\n * @cssprop --border-radius\n * @cssprop --border-width\n * @cssprop --border\n * @cssprop --background\n * @cssprop --width\n * @cssprop --height\n * @cssprop --anchor-width\n * @cssprop --anchor-height\n * @cssprop --anchor-border-radius\n * @cssprop --anchor-background\n * @cssprop --padding\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/switch/\n */\n@audit()\nexport class Switch extends Control {\n @hostAttr({ attribute: 'nve-control' }) protected nveControl = 'inline';\n\n static styles: CSSResult[] = useStyles([...Control.styles, styles]);\n\n static readonly metadata = {\n tag: 'nve-switch',\n version: '0.0.0',\n children: ['label', 'input', 'nve-control-message']\n };\n}\n"],"mappings":";;;;;;;AA6BO,IAAMI,IAAN,cAAqBC,EAAQ;;EAC6B,A,aAAA,KAAA,aAAA;;;EAElC,KAAA,SAAAE,EAAU,CAAC,GAAGF,EAAQ,QAAQL,CAAM,CAAC;;;EAEvC,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,UAAU;IAAC;IAAS;IAAS;GAAqB;EACpD;;AACF;AATGC,EAAA,CAAAO,EAAS,EAAE,WAAW,cAAc,CAAC,CAAA,GAAAJ,EAAA,WAAA,cAAA,KAAA,CAAA,GAFvC,IAAAH,EAAA,CAAAQ,EAAM,CAAA,GAAAL,CAAA"}
1
+ {"version":3,"file":"switch2.js","names":["styles","_decorate","__decorate","switch_default","Switch","Control","_args","useStyles","hostAttr","audit"],"sources":["../../src/switch/switch.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CSSResult } from 'lit';\nimport { audit, hostAttr } from '@nvidia-elements/core/internal';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\nimport { Control } from '@nvidia-elements/core/forms';\nimport styles from './switch.css?inline';\n\n/**\n * @element nve-switch\n * @description A switch is a control that enables users to switch between two mutually exclusive options (on or off, checked or unchecked) through a single click or tap.\n * @documentation https://nvidia.github.io/elements/docs/elements/switch/\n * @since 0.3.0\n * @entrypoint \\@nvidia-elements/core/switch\n * @cssprop --cursor\n * @cssprop --border-radius\n * @cssprop --border-width\n * @cssprop --border\n * @cssprop --background\n * @cssprop --width\n * @cssprop --height\n * @cssprop --anchor-width\n * @cssprop --anchor-height\n * @cssprop --anchor-border-radius\n * @cssprop --anchor-background\n * @cssprop --padding\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/switch/\n */\n@audit()\nexport class Switch extends Control {\n @hostAttr({ attribute: 'nve-control' }) protected nveControl = 'inline';\n\n static styles: CSSResult[] = useStyles([...Control.styles, styles]);\n\n static readonly metadata = {\n tag: 'nve-switch',\n version: '0.0.0',\n children: ['label', 'input', 'nve-control-message']\n };\n}\n"],"mappings":";;;;;;;AA8BO,IAAMI,IAAN,cAAqBC,EAAQ;;EAC6B,A,aAAA,KAAA,aAAA;;;EAElC,KAAA,SAAAE,EAAU,CAAC,GAAGF,EAAQ,QAAQL,CAAM,CAAC;;;EAEvC,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,UAAU;IAAC;IAAS;IAAS;GAAqB;EACpD;;AACF;AATGC,EAAA,CAAAO,EAAS,EAAE,WAAW,cAAc,CAAC,CAAA,GAAAJ,EAAA,WAAA,cAAA,KAAA,CAAA,GAFvC,IAAAH,EAAA,CAAAQ,EAAM,CAAA,GAAAL,CAAA"}
@@ -1,17 +1,17 @@
1
1
  import { audit as e } from "../internal/controllers/audit.controller.js";
2
2
  import { generateId as t, sameOrderedStringArray as n, uniqueNonEmptyStrings as r } from "../internal/utils/dom.js";
3
- import { attachInternals as i } from "../internal/utils/a11y.js";
4
- import { useStyles as a } from "../internal/styles/index.js";
5
- import o from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
6
- import { getTabItems as s } from "./utils.js";
7
- import { Tabs as c } from "./tabs2.js";
8
- import l from "./tabs-group.js";
9
- import { LitElement as u, html as d } from "lit";
10
- import { property as f } from "lit/decorators/property.js";
3
+ import i from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
4
+ import { getTabItems as a } from "./utils.js";
5
+ import { Tabs as o } from "./tabs2.js";
6
+ import s from "./tabs-group.js";
7
+ import { attachInternals as c } from "@nvidia-elements/foundations/internal/a11y";
8
+ import { LitElement as l, html as u } from "lit";
9
+ import { property as d } from "lit/decorators/property.js";
10
+ import { useStyles as f } from "@nvidia-elements/foundations/internal/styles";
11
11
  import { state as p } from "lit/decorators/state.js";
12
12
  import { queryAssignedElements as m } from "lit/decorators/query-assigned-elements.js";
13
13
  // src/tabs/tabs-group.ts
14
- var h, g = class extends u {
14
+ var h, g = class extends l {
15
15
  static {
16
16
  h = this;
17
17
  }
@@ -29,12 +29,12 @@ var h, g = class extends u {
29
29
  };
30
30
  }
31
31
  static {
32
- this.styles = a([l]);
32
+ this.styles = f([s]);
33
33
  }
34
34
  static {
35
35
  this.metadata = {
36
36
  tag: "nve-tabs-group",
37
- version: "2.23.3",
37
+ version: "2.23.5",
38
38
  children: ["nve-tabs"]
39
39
  };
40
40
  }
@@ -53,10 +53,10 @@ var h, g = class extends u {
53
53
  }
54
54
  #e;
55
55
  render() {
56
- return d`<div internal-host><slot @slotchange="${this.#t}"></slot>${this.panelValues.map((e) => d`<slot name="${e}" @slotchange="${this.#n}"></slot>`)}</div>`;
56
+ return u`<div internal-host><slot @slotchange="${this.#t}"></slot>${this.panelValues.map((e) => u`<slot name="${e}" @slotchange="${this.#n}"></slot>`)}</div>`;
57
57
  }
58
58
  connectedCallback() {
59
- super.connectedCallback(), i(this), this._internals.role = "group", this.addEventListener("command", this.#r);
59
+ super.connectedCallback(), c(this), this._internals.role = "group", this.addEventListener("command", this.#r);
60
60
  }
61
61
  firstUpdated() {
62
62
  this.updateComplete.then(() => {
@@ -114,11 +114,11 @@ var h, g = class extends u {
114
114
  });
115
115
  }
116
116
  #u() {
117
- let e = this.defaultSlotElements.find((e) => e.localName === c.metadata.tag) ?? this.querySelector(c.metadata.tag);
118
- return e instanceof c ? e : void 0;
117
+ let e = this.defaultSlotElements.find((e) => e.localName === o.metadata.tag) ?? this.querySelector(o.metadata.tag);
118
+ return e instanceof o ? e : void 0;
119
119
  }
120
120
  #d() {
121
- return s(Array.from(this.#u()?.children ?? []));
121
+ return a(Array.from(this.#u()?.children ?? []));
122
122
  }
123
123
  #f() {
124
124
  return Array.from(this.renderRoot.querySelectorAll("slot[name]"));
@@ -130,10 +130,10 @@ var h, g = class extends u {
130
130
  return e.find((e) => this.#p(e) && e.selected) ?? e.find((e) => this.#p(e));
131
131
  }
132
132
  };
133
- o([m({ flatten: !0 })], g.prototype, "defaultSlotElements", void 0), o([f({
133
+ i([m({ flatten: !0 })], g.prototype, "defaultSlotElements", void 0), i([d({
134
134
  type: String,
135
135
  reflect: !0
136
- })], g.prototype, "alignment", void 0), o([p()], g.prototype, "panelValues", void 0), o([p()], g.prototype, "selectedValue", void 0), g = h = o([e()], g);
136
+ })], g.prototype, "alignment", void 0), i([p()], g.prototype, "panelValues", void 0), i([p()], g.prototype, "selectedValue", void 0), g = h = i([e()], g);
137
137
  export { g as TabsGroup };
138
138
 
139
139
  //# sourceMappingURL=tabs-group2.js.map