@nvidia-elements/core 2.10.0 → 2.11.1

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 (169) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/accordion/accordion2.js +4 -4
  3. package/dist/alert/alert-group2.js +1 -1
  4. package/dist/alert/alert2.js +1 -1
  5. package/dist/avatar/avatar-group2.js +1 -1
  6. package/dist/avatar/avatar2.js +1 -1
  7. package/dist/badge/badge2.js +1 -1
  8. package/dist/breadcrumb/breadcrumb2.js +1 -1
  9. package/dist/bundles/index.d.ts +176 -43
  10. package/dist/bundles/index.js +6 -6
  11. package/dist/button/button2.js +1 -1
  12. package/dist/button-group/button-group2.js +1 -1
  13. package/dist/card/card2.js +4 -4
  14. package/dist/chat-message/chat-message2.js +1 -1
  15. package/dist/checkbox/checkbox-group2.js +1 -1
  16. package/dist/checkbox/checkbox2.js +1 -1
  17. package/dist/color/color2.js +1 -1
  18. package/dist/combobox/combobox2.js +1 -1
  19. package/dist/copy-button/copy-button2.js +1 -1
  20. package/dist/custom-elements-jsx.d.ts +101 -9
  21. package/dist/custom-elements-vue.d.ts +99 -9
  22. package/dist/custom-elements.json +1055 -322
  23. package/dist/data.html.json +51 -3
  24. package/dist/date/date2.js +1 -1
  25. package/dist/datetime/datetime2.js +1 -1
  26. package/dist/dialog/dialog-footer2.js +1 -1
  27. package/dist/dialog/dialog-header2.js +1 -1
  28. package/dist/dialog/dialog2.js +1 -1
  29. package/dist/divider/divider2.js +1 -1
  30. package/dist/dot/dot2.js +1 -1
  31. package/dist/drawer/drawer-content2.js +1 -1
  32. package/dist/drawer/drawer-footer2.js +1 -1
  33. package/dist/drawer/drawer-header2.js +1 -1
  34. package/dist/drawer/drawer2.js +1 -1
  35. package/dist/dropdown/dropdown-footer2.js +1 -1
  36. package/dist/dropdown/dropdown-header2.js +1 -1
  37. package/dist/dropdown/dropdown2.js +1 -1
  38. package/dist/dropdown-group/dropdown-group.js +1 -1
  39. package/dist/dropzone/dropzone2.js +1 -1
  40. package/dist/file/file2.js +1 -1
  41. package/dist/format-bytes/format-bytes2.js +1 -1
  42. package/dist/format-datetime/format-datetime2.js +1 -1
  43. package/dist/format-number/format-number2.js +1 -1
  44. package/dist/format-relative-time/format-relative-time2.js +1 -1
  45. package/dist/format-truncate/format-truncate2.js +1 -1
  46. package/dist/forms/control/control2.js +1 -1
  47. package/dist/forms/control-group/control-group2.js +1 -1
  48. package/dist/forms/control-message/control-message2.js +1 -1
  49. package/dist/gauge/gauge2.js +1 -1
  50. package/dist/grid/cell/cell2.js +1 -1
  51. package/dist/grid/column/column2.js +1 -1
  52. package/dist/grid/footer/footer2.js +1 -1
  53. package/dist/grid/grid2.js +1 -1
  54. package/dist/grid/header/header2.js +1 -1
  55. package/dist/grid/placeholder/placeholder2.js +1 -1
  56. package/dist/grid/row/row2.js +1 -1
  57. package/dist/icon/icon2.js +2 -2
  58. package/dist/icon-button/icon-button2.js +1 -1
  59. package/dist/index.js +1 -1
  60. package/dist/input/input-group2.js +1 -1
  61. package/dist/input/input2.js +1 -1
  62. package/dist/internal/controllers/state-scroll.controller.js +27 -17
  63. package/dist/internal/controllers/state-scroll.controller.js.map +1 -1
  64. package/dist/internal/services/global.service.js +1 -1
  65. package/dist/internal/types/index.d.ts +6 -2
  66. package/dist/internal/types/index.js.map +1 -1
  67. package/dist/internal/utils/audit.js +1 -1
  68. package/dist/internal/utils/audit.js.map +1 -1
  69. package/dist/logo/logo2.js +1 -1
  70. package/dist/menu/define.d.ts +2 -1
  71. package/dist/menu/define.js +3 -2
  72. package/dist/menu/define.js.map +1 -1
  73. package/dist/menu/index.d.ts +1 -0
  74. package/dist/menu/index.js +3 -2
  75. package/dist/menu/menu-group.d.ts +50 -0
  76. package/dist/menu/menu-group.js +6 -0
  77. package/dist/menu/menu-group.js.map +1 -0
  78. package/dist/menu/menu-group2.js +53 -0
  79. package/dist/menu/menu-group2.js.map +1 -0
  80. package/dist/menu/menu-item.d.ts +1 -0
  81. package/dist/menu/menu-item.js +1 -1
  82. package/dist/menu/menu-item.js.map +1 -1
  83. package/dist/menu/menu-item2.js +2 -2
  84. package/dist/menu/menu-item2.js.map +1 -1
  85. package/dist/menu/menu.d.ts +6 -1
  86. package/dist/menu/menu.examples.js.map +1 -1
  87. package/dist/menu/menu.examples.json +53 -13
  88. package/dist/menu/menu.global.js +1 -1
  89. package/dist/menu/menu.global.js.map +1 -1
  90. package/dist/menu/menu2.js +16 -8
  91. package/dist/menu/menu2.js.map +1 -1
  92. package/dist/month/month2.js +1 -1
  93. package/dist/notification/notification-group2.js +1 -1
  94. package/dist/notification/notification2.js +1 -1
  95. package/dist/page/page-panel/page-panel-content2.js +1 -1
  96. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  97. package/dist/page/page-panel/page-panel-header2.js +1 -1
  98. package/dist/page/page-panel/page-panel2.js +1 -1
  99. package/dist/page/page2.js +1 -1
  100. package/dist/page-header/page-header2.js +1 -1
  101. package/dist/page-loader/page-loader2.js +1 -1
  102. package/dist/pagination/pagination2.js +1 -1
  103. package/dist/panel/panel2.js +4 -4
  104. package/dist/password/password2.js +1 -1
  105. package/dist/preferences-input/preferences-input2.js +1 -1
  106. package/dist/progress-bar/progress-bar2.js +1 -1
  107. package/dist/progress-ring/progress-ring2.js +1 -1
  108. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  109. package/dist/pulse/pulse2.js +1 -1
  110. package/dist/radio/radio-group2.js +1 -1
  111. package/dist/radio/radio2.js +1 -1
  112. package/dist/range/range2.js +1 -1
  113. package/dist/resize-handle/resize-handle2.js +1 -1
  114. package/dist/search/search2.js +1 -1
  115. package/dist/select/select2.js +1 -1
  116. package/dist/skeleton/skeleton2.js +1 -1
  117. package/dist/sort-button/sort-button2.js +1 -1
  118. package/dist/sparkline/sparkline2.js +1 -1
  119. package/dist/star-rating/star-rating2.js +1 -1
  120. package/dist/steps/steps.d.ts +3 -3
  121. package/dist/steps/steps2.js +2 -2
  122. package/dist/steps/steps2.js.map +1 -1
  123. package/dist/switch/switch-group2.js +1 -1
  124. package/dist/switch/switch2.js +1 -1
  125. package/dist/tabs/tabs-group2.js +1 -1
  126. package/dist/tabs/tabs2.js +2 -2
  127. package/dist/tag/tag2.js +1 -1
  128. package/dist/textarea/textarea2.js +1 -1
  129. package/dist/time/time2.js +1 -1
  130. package/dist/toast/toast2.js +1 -1
  131. package/dist/toggletip/toggletip-footer2.js +1 -1
  132. package/dist/toggletip/toggletip-header2.js +1 -1
  133. package/dist/toggletip/toggletip2.js +1 -1
  134. package/dist/toolbar/toolbar2.js +1 -1
  135. package/dist/tooltip/tooltip2.js +1 -1
  136. package/dist/tree/tree-node2.js +1 -1
  137. package/dist/tree/tree2.js +1 -1
  138. package/dist/viewport/define.d.ts +2 -1
  139. package/dist/viewport/define.js +2 -1
  140. package/dist/viewport/define.js.map +1 -1
  141. package/dist/viewport/index.d.ts +2 -1
  142. package/dist/viewport/index.js +2 -1
  143. package/dist/viewport/viewport-gesture-navigation.controller.d.ts +8 -10
  144. package/dist/viewport/viewport-gesture-navigation.controller.js +73 -66
  145. package/dist/viewport/viewport-gesture-navigation.controller.js.map +1 -1
  146. package/dist/viewport/viewport-gridlines2.js +3 -3
  147. package/dist/viewport/viewport-gridlines2.js.map +1 -1
  148. package/dist/viewport/viewport-minimap.d.ts +36 -0
  149. package/dist/viewport/viewport-minimap.js +6 -0
  150. package/dist/viewport/viewport-minimap.js.map +1 -0
  151. package/dist/viewport/viewport-minimap.utils.d.ts +13 -0
  152. package/dist/viewport/viewport-minimap.utils.js +49 -0
  153. package/dist/viewport/viewport-minimap.utils.js.map +1 -0
  154. package/dist/viewport/viewport-minimap2.js +309 -0
  155. package/dist/viewport/viewport-minimap2.js.map +1 -0
  156. package/dist/viewport/viewport-navigation.controller.d.ts +7 -13
  157. package/dist/viewport/viewport-navigation.controller.js +14 -20
  158. package/dist/viewport/viewport-navigation.controller.js.map +1 -1
  159. package/dist/viewport/viewport-navigation.types.d.ts +0 -8
  160. package/dist/viewport/viewport.d.ts +30 -5
  161. package/dist/viewport/viewport.examples.js.map +1 -1
  162. package/dist/viewport/viewport.examples.json +15 -6
  163. package/dist/viewport/viewport.js +1 -1
  164. package/dist/viewport/viewport.js.map +1 -1
  165. package/dist/viewport/viewport.types.d.ts +50 -23
  166. package/dist/viewport/viewport2.js +173 -118
  167. package/dist/viewport/viewport2.js.map +1 -1
  168. package/dist/week/week2.js +1 -1
  169. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/internal/types/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TemplateResult } from 'lit';\nimport type { IconName } from '@nvidia-elements/core/icon';\nimport type { I18nStrings } from '../services/i18n.service.js';\n\nexport type Color =\n | 'red-cardinal'\n | 'gray-slate'\n | 'gray-denim'\n | 'blue-indigo'\n | 'blue-cobalt'\n | 'blue-sky'\n | 'teal-cyan'\n | 'green-mint'\n | 'teal-seafoam'\n | 'green-grass'\n | 'yellow-amber'\n | 'orange-pumpkin'\n | 'red-tomato'\n | 'pink-magenta'\n | 'purple-plum'\n | 'purple-violet'\n | 'purple-lavender'\n | 'pink-rose'\n | 'green-jade'\n | 'lime-pear'\n | 'yellow-nova'\n | 'brand-green';\n\n/** Controls the visual scale of an element to match its importance and available space.\n * - `sm` - Compact size for dense layouts or secondary elements with less visual prominence.\n * - `md` - Standard size that works well in most contexts and provides balanced visibility.\n * - `lg` - Larger size for emphasizing important elements or improving touch targets in spacious layouts.\n */\nexport type Size = 'sm' | 'md' | 'lg';\n\n/** Controls the visual scale of an element to match its importance and available space.\n * - `xs` - Extra small size for minimal elements or highly dense layouts.\n * - `sm` - Compact size for dense layouts or secondary elements with less visual prominence.\n * - `md` - Standard size that works well in most contexts and provides balanced visibility.\n * - `lg` - Larger size for emphasizing important elements or improving touch targets in spacious layouts.\n * - `xl` - Extra large size for emphasizing elements or sparse layouts.\n */\nexport type SizeExpanded = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Controls the visual prominence to establish hierarchy and guide user attention.\n * - `emphasis` - Increases visual weight to draw attention and highlight important elements.\n * - `muted` - Reduces visual weight for supporting content that should remain subtle and unobtrusive.\n */\nexport type Prominence = 'emphasis' | 'muted';\n\n/**\n * Determines the container bounds of the element\n * - `flat` Element has white space bounds but reduced visual container.\n * - `inline` Element container reduces to fit within inline content such as a block of text.\n * - `inset` Element container optimizes for embedding or inset placement inside another containing element.\n * - `full` Element container optimizes for filling its container bounds.\n * - `condensed` Element container optimizes for small, summarized or contained spaces.\n */\nexport type Container = 'inline' | 'flat' | 'inset' | 'full' | 'condensed';\n\n/** Communicates the intent and semantic meaning of an element to help users understand the outcome of their actions.\n * - `accent` - Highlights important actions or draws attention to primary interactive elements.\n * - `warning` - Indicates cautionary actions that require careful consideration before proceeding.\n * - `success` - Represents positive outcomes, confirmations, or constructive actions.\n * - `danger` - Signals destructive or irreversible actions that need extra attention and confirmation.\n */\nexport type SupportStatus = 'accent' | 'warning' | 'success' | 'danger';\n\n/** Controls how the chart connects intermediate values between points in a data series.\n * - `linear` - Connects points with straight line segments.\n * - `smooth` - Connects points with smooth bezier curves.\n * - `step` - Connects points with horizontal and vertical step segments.\n */\nexport type Interpolation = 'linear' | 'smooth' | 'step';\n\n/** Determines the orientation of an element. */\nexport type Orientation = 'vertical' | 'horizontal';\n\n/** Communicates the current state of a task or process to keep users informed of progress and outcomes.\n * - `scheduled` - Task has a scheduled future execution at a specific time.\n * - `queued` - Task is waiting in line to begin after other tasks complete.\n * - `pending` - Task is awaiting approval, user input, or external conditions before proceeding.\n * - `starting` - Task is initializing and preparing to begin active execution.\n * - `running` - Task is actively executing and making progress.\n * - `restarting` - Task restarts after an interruption or reset.\n * - `stopping` - Task is gracefully shutting down and completing cleanup operations.\n * - `finished` - Task has completed successfully with the expected outcome.\n * - `failed` - Task encountered an error and did not complete as intended.\n * - `unknown` - Task status remains unknown or unavailable.\n * - `ignored` - Task was intentionally skipped or excluded from execution.\n */\nexport type TaskStatus =\n | 'scheduled'\n | 'queued'\n | 'pending'\n | 'starting'\n | 'running'\n | 'restarting'\n | 'stopping'\n | 'finished'\n | 'failed'\n | 'unknown'\n | 'ignored';\n\n/**\n * https://open-ui.org/components/popup.research.explainer#api-shape\n * - `auto` light dismiss, focus on open, return to trigger\n * - `manual` no light dismiss, no auto focus\n * - `hint` no light dismiss, no auto focus, open/close on hover/focus\n */\nexport type PopoverType = 'auto' | 'manual' | 'hint' | 'inline';\n\nexport type InterestEvent = Event & {\n source: HTMLElement;\n};\n\n/** Controls how the popover aligns along the edge of its anchor element.\n * - `start` - Aligns the popover to the beginning edge of the anchor for left or top alignment.\n * - `end` - Aligns the popover to the ending edge of the anchor for right or bottom alignment.\n * - `center` - Centers the popover along the anchor's edge for balanced positioning.\n */\nexport type PopoverAlign = 'start' | 'end' | 'center';\n\n/** Determines the popover position relative to its assigned anchor and alignment.\n * - `top` - Positions the popover above the anchor element.\n * - `bottom` - Positions the popover below the anchor element.\n * - `left` - Positions the popover to the left side of the anchor element.\n * - `right` - Positions the popover to the right side of the anchor element.\n */\nexport type PopoverSides = 'top' | 'bottom' | 'left' | 'right';\n\n/** Controls the placement of the popover relative to its anchor element.\n * - `center` - Centers the popover directly over the anchor element.\n * - `top` - Positions the popover above the anchor element.\n * - `bottom` - Positions the popover below the anchor element.\n * - `left` - Positions the popover to the left side of the anchor element.\n * - `right` - Positions the popover to the right side of the anchor element.\n */\nexport type PopoverPosition = 'center' | 'top' | 'bottom' | 'left' | 'right';\n\n/** Determines the position of an element relative to its anchor */\nexport type Placement = PopoverPosition | `${PopoverSides}-${PopoverAlign}`;\n\n/** Controls the directional arrangement and spacing behavior of the element's content.\n * - `vertical` - Arranges content in a vertical stack with block-level spacing.\n * - `vertical-inline` - Arranges content vertically with compact inline spacing for dense layouts.\n * - `horizontal` - Arranges content in a horizontal row with block-level spacing.\n * - `horizontal-inline` - Arranges content horizontally with compact inline spacing.\n */\nexport type ControlLayout = 'vertical' | 'vertical-inline' | 'horizontal' | 'horizontal-inline';\n\n/** Indicates the element that represents the user's current location or position within a set. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)\n * - `page` - Marks the current page within a set of navigation links.\n * - `step` - Marks the current step within a multi-step process or workflow.\n */\nexport type Current = 'page' | 'step';\n\n/** Controls how data points are visually encoded in a sparkline chart.\n * - `line` - Renders data as a connected line to emphasize macro trend.\n * - `area` - Renders data as a filled area beneath a line to emphasize magnitude over time.\n * - `gradient` - Renders a line with gradient color treatment to communicate value intensity across the series.\n * - `column` - Renders data as vertical columns for easy comparison of discrete values.\n * - `winloss` - Renders outcomes as binary or ternary bars to highlight wins, losses, and optional ties.\n */\nexport type SparklineMark = 'line' | 'area' | 'gradient' | 'column' | 'winloss';\n\nexport interface NveElement {\n /**\n * This Boolean attribute prevents the user from interacting with the element: it cannot receive press or focus events. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-disabled)\n * - `true` - The element has a disabled state and does not accept interaction.\n * - `false` - The element has an enabled state and accepts interaction.\n */\n disabled?: boolean;\n\n /** Indicates whether the element is currently actively engaged through user interaction. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/:active)\n * - `true` - The user is pressing or activating the element (mousedown, keydown, or touch).\n * - `false` - No active user engagement on the element.\n */\n active?: boolean;\n\n /** Indicates whether collapsible content is currently visible or hidden from the user. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-expanded)\n * - `true` - The associated content expands and becomes visible to the user.\n * - `false` - The associated content collapses and hides from the user.\n */\n expanded?: boolean;\n\n /** Indicates the current state of a toggle button that switches on or off. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-pressed)\n * - `true` - The button is in the pressed (on) state and the associated action or setting is active.\n * - `false` - The button is in the unpressed (off) state and the associated action or setting is inactive.\n */\n pressed?: boolean;\n\n /** Indicates whether an element currently holds selection within a multi-option selection group. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-selected)\n * - `true` - The element holds selection and represents the user's current choice within the group.\n * - `false` - The element does not hold selection and the user can choose it.\n */\n selected?: boolean;\n\n /** Indicates whether the user can change the element's value while it remains visible and focusable. [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly)\n * - `true` - The element has a readonly state: the user cannot change its value, but can still focus and copy it.\n * - `false` - The element allows editing and the user can change its value through interaction.\n */\n readOnly?: boolean;\n\n /** Defines the value associated with the element's name when submitting the form data. The server receives this value in params when the form submits through this button. [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value) */\n value?: string;\n\n /** The name of the element, submitted as a pair with the element value as part of the form data. [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-name) */\n name?: string;\n\n /** Indicates whether the user can dismiss or close the element.\n * - `true` - The element displays a close control and the user can dismiss it.\n * - `false` - The user cannot close the element and must dismiss it programmatically.\n */\n closable?: boolean;\n\n /** Enables updating internal string values for internationalization. */\n i18n?: Partial<I18nStrings & { __set: boolean }>;\n\n /** Indicates the element that represents the user's current location or position within a set. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)\n * - `page` - Marks the current page within a set of navigation links.\n * - `step` - Marks the current step within a multi-step process or workflow.\n */\n current?: 'page' | 'step';\n\n /** Controls the horizontal alignment of the element within its container, respecting the text direction. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Box_alignment_in_grid_layout#the_two_axes_of_a_grid_layout)\n * - `start` - Aligns the element to the beginning of the inline axis (left in LTR, right in RTL).\n * - `center` - Centers the element along the inline axis for balanced visual positioning.\n * - `end` - Aligns the element to the end of the inline axis (right in LTR, left in RTL).\n */\n inlinePosition?: 'start' | 'center' | 'end';\n\n /** Controls the vertical alignment of the element within its container. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Box_alignment_in_grid_layout#the_two_axes_of_a_grid_layout)\n * - `start` - Aligns the element to the top of the block axis for top-aligned positioning.\n * - `center` - Centers the element along the block axis for balanced vertical positioning.\n * - `end` - Aligns the element to the bottom of the block axis for bottom-aligned positioning.\n */\n blockPosition?: 'start' | 'center' | 'end';\n\n /** Controls the directional arrangement and spacing behavior of the element's content.\n * - `vertical` - Arranges content in a vertical stack with block-level spacing.\n * - `vertical-inline` - Arranges content vertically with compact inline spacing for dense layouts.\n * - `horizontal` - Arranges content in a horizontal row with block-level spacing.\n * - `horizontal-inline` - Arranges content horizontally with compact inline spacing.\n */\n layout?: 'vertical' | 'vertical-inline' | 'horizontal' | 'horizontal-inline';\n\n /** Controls the directional flow of the element's layout and interaction pattern.\n * - `vertical` - Element orients vertically with top-to-bottom flow.\n * - `horizontal` - Element orients horizontally with left-to-right flow.\n */\n orientation?: 'vertical' | 'horizontal';\n\n /** Controls the visual prominence to establish hierarchy and guide user attention.\n * - `emphasis` - Increases visual weight to draw attention and highlight important elements.\n * - `muted` - Reduces visual weight for supporting content that should remain subtle and unobtrusive.\n */\n prominence?: 'emphasis' | 'muted';\n\n /** The Interaction type provides a way to show the intent of an interactive element. This can help users quickly understand what each interaction does and reduce the potential for confusion or errors.\n * - `emphasis` Shows the interaction targets emphasis or highlighting primary actions.\n * - `destructive` Shows the interaction targets destructive actions such as deleting or removing.\n */\n interaction?: 'emphasis' | 'destructive';\n\n /** Defines a base color from the theme color palette */\n color?:\n | 'red-cardinal'\n | 'gray-slate'\n | 'gray-denim'\n | 'blue-indigo'\n | 'blue-cobalt'\n | 'blue-sky'\n | 'teal-cyan'\n | 'green-mint'\n | 'teal-seafoam'\n | 'green-grass'\n | 'yellow-amber'\n | 'orange-pumpkin'\n | 'red-tomato'\n | 'pink-magenta'\n | 'purple-plum'\n | 'purple-violet'\n | 'purple-lavender'\n | 'pink-rose'\n | 'green-jade'\n | 'lime-pear'\n | 'yellow-nova'\n | 'brand-green';\n\n /** Communicates the intent and semantic meaning of an element to help users understand the outcome of their actions.\n * - `accent` - Highlights important actions or draws attention to primary interactive elements.\n * - `warning` - Indicates cautionary actions that require careful consideration before proceeding.\n * - `success` - Represents positive outcomes, confirmations, or constructive actions.\n * - `danger` - Signals destructive or irreversible actions that need extra attention and confirmation.\n */\n status?: 'accent' | 'warning' | 'success' | 'danger';\n\n /** Controls the visual scale of an element to match its importance and available space.\n * - `sm` - Compact size for dense layouts or secondary elements with less visual prominence.\n * - `md` - Standard size that works well in most contexts and provides balanced visibility.\n * - `lg` - Larger size for emphasizing important elements or improving touch targets in spacious layouts.\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Demonstrates different container styles to accommodate visual weight and context.\n * - `flat` Element has white space bounds but reduced visual container.\n * - `inline` Element container reduces to fit within inline content such as a block of text.\n * - `inset` Element container optimizes for embedding or inset placement inside another containing element.\n * - `full` Element container optimizes for filling its container bounds.\n */\n container?: 'inline' | 'flat' | 'inset' | 'full';\n\n /** Determines the position of an element along both inline and block axis. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Box_alignment_in_grid_layout#the_two_axes_of_a_grid_layout) */\n position?:\n | 'top-start'\n | 'top-end'\n | 'top-center'\n | 'bottom-start'\n | 'bottom-end'\n | 'bottom-center'\n | 'left-start'\n | 'left-end'\n | 'left-center'\n | 'right-start'\n | 'right-end'\n | 'right-center';\n\n /** Determines the alignment of the popover relative to the provided anchor element. */\n alignment?: 'start' | 'end' | 'center';\n\n /** Provides the element that the popover should position relative to. Set the property to an element or its ID within the same render root. The HTML attribute accepts only the element ID. */\n anchor?: string | HTMLElement;\n\n /** Defines the element that triggers an `open` interaction event. Set the property to an element or its ID within the same render root. The HTML attribute accepts only the element ID. */\n trigger?: string | HTMLElement;\n\n /** Defines named content areas where users can insert custom markup into the element.\n * - `default` - The primary content area for the element.\n * - `prefix` - Content that appears before the main element content.\n * - `suffix` - Content that appears after the main element content.\n * - `header` - Content that appears at the top of the element, used for titles or introductory information.\n * - `footer` - Content that appears at the bottom of the element, used for supplementary information or actions.\n * - `actions` - Content area specifically for interactive controls like buttons or links.\n * - `icon` - Content area for displaying an icon that represents the element's purpose or state.\n */\n slots?: 'default' | 'prefix' | 'suffix' | 'header' | 'footer' | 'actions' | 'icon';\n\n /**\n * Sets the automatic dismissal time in milliseconds before the element emits a `close` event. Allow ~200-250ms per word for comfortable reading.\n * - `0` - Warning or error messages requiring immediate acknowledgment.\n * - `3000` - Brief success or confirmation messages.\n * - `7000` - Standard informational messages.\n * - `10000` - Messages with actions or requiring user decision.\n */\n closeTimeout?: number;\n\n /**\n * Sets the delay in milliseconds before the element emits an `open` event.\n * - `0` - Keyboard focus interactions (always immediate for accessibility).\n * - `500` - Dense interfaces with many tooltips to reduce visual noise and prevent accidental triggers.\n */\n openDelay?: number;\n\n /** @private An instance of `ElementInternals` that decorators/controllers set dynamically */\n _internals: ElementInternals;\n\n render: TemplateResult;\n}\n\n/** Defines named content areas where users can insert custom markup into the element.\n * - `default` - The primary content area for the element.\n * - `prefix` - Content that appears before the main element content.\n * - `suffix` - Content that appears after the main element content.\n * - `header` - Content that appears at the top of the element, used for titles or introductory information.\n * - `footer` - Content that appears at the bottom of the element, used for supplementary information or actions.\n * - `actions` - Content area specifically for interactive controls like buttons or links.\n * - `icon` - Content area for displaying an icon that represents the element's purpose or state.\n */\nexport type SlotName = 'default' | 'prefix' | 'suffix' | 'header' | 'footer' | 'actions' | 'icon';\n\n/** The Interaction type provides a way to show the intent of an interactive element. This can help users quickly understand what each interaction does and reduce the potential for confusion or errors.\n * - `emphasis` Shows the interaction targets emphasis or highlighting primary actions.\n * - `destructive` Shows the interaction targets destructive actions such as deleting or removing.\n */\nexport type Interaction = 'emphasis' | 'destructive';\n\nexport interface ContainerElement {\n container?: Partial<Container>;\n}\n\n/** An element that renders complex data structures (e.g., arrays, series, matrices) rather than composable UI content and values expressible with primitive attributes. */\nexport interface DataElement<T extends unknown[] | Record<string, unknown>> {\n data?: T;\n}\n\nexport const statusIcons: { [key: string]: IconName } = {\n '': 'information-circle',\n undefined: 'information-circle',\n default: 'information-circle',\n accent: 'information-circle',\n warning: 'exclamation-triangle',\n success: 'checkmark-circle',\n danger: 'exclamation-circle',\n scheduled: 'clock',\n failed: 'x-circle',\n finished: 'checkmark-circle',\n unknown: 'question-mark-circle',\n queued: 'bar-pill-stack',\n running: 'running',\n restarting: 'refresh',\n stopping: 'stop-sign',\n pending: 'circle-dash',\n starting: 'circle-dot',\n ignored: 'circle-angled-line'\n} as const;\n\ndeclare global {\n var NVE_ELEMENTS: {\n state: {\n bundle: boolean;\n env: 'watch' | 'production' | 'development';\n pageHost: string;\n moduleHost: string;\n versions: string[];\n scopedRegistry: { [key: string]: CustomElementRegistry };\n elementRegistry: Readonly<{ [key: string]: string }>;\n i18nRegistry: Readonly<{ [key: string]: string }>;\n audit: Readonly<{\n [key: string]: {\n count?: number;\n excessiveInstanceLimitAudited?: boolean;\n };\n }>;\n };\n debug: (log?: (...args: unknown[]) => void) => void;\n };\n\n interface HTMLElement {\n 'nve-text': string;\n 'nve-layout': string;\n }\n\n interface CustomElementRegistry {\n initialize(root: ShadowRoot | Document): void;\n }\n\n var CustomElementRegistry: {\n new (): CustomElementRegistry;\n prototype: CustomElementRegistry;\n };\n}\n\nexport interface ElementDefinition extends CustomElementConstructor {\n metadata: { version: string; tag: string };\n elementDefinitions?: { [key: string]: ElementDefinition };\n shadowRootOptions?: { customElementRegistry?: CustomElementRegistry | null };\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface OffsetPoint {\n offsetX: number;\n offsetY: number;\n}\n\nexport interface Dimensions {\n width: number;\n height: number;\n}\n\nexport type Rect = Point & Dimensions;\n\nexport interface Scale {\n min: number;\n max: number;\n}\n\n/** https://github.com/tc39/proposal-decorators */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport type LegacyDecoratorTarget = Function & {\n addInitializer?: (initializer: (instance: any) => void) => void; // eslint-disable-line @typescript-eslint/no-explicit-any\n};\n"],"mappings":";AAgZA,IAAa,IAA2C;CACtD,IAAI;CACJ,WAAW;CACX,SAAS;CACT,QAAQ;CACR,SAAS;CACT,SAAS;CACT,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,UAAU;CACV,SAAS;CACT,QAAQ;CACR,SAAS;CACT,YAAY;CACZ,UAAU;CACV,SAAS;CACT,UAAU;CACV,SAAS;AACX"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/internal/types/index.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TemplateResult } from 'lit';\nimport type { IconName } from '@nvidia-elements/core/icon';\nimport type { I18nStrings } from '../services/i18n.service.js';\n\nexport type Color =\n | 'red-cardinal'\n | 'gray-slate'\n | 'gray-denim'\n | 'blue-indigo'\n | 'blue-cobalt'\n | 'blue-sky'\n | 'teal-cyan'\n | 'green-mint'\n | 'teal-seafoam'\n | 'green-grass'\n | 'yellow-amber'\n | 'orange-pumpkin'\n | 'red-tomato'\n | 'pink-magenta'\n | 'purple-plum'\n | 'purple-violet'\n | 'purple-lavender'\n | 'pink-rose'\n | 'green-jade'\n | 'lime-pear'\n | 'yellow-nova'\n | 'brand-green';\n\n/** Controls the visual scale of an element to match its importance and available space.\n * - `sm` - Compact size for dense layouts or secondary elements with less visual prominence.\n * - `md` - Standard size that works well in most contexts and provides balanced visibility.\n * - `lg` - Larger size for emphasizing important elements or improving touch targets in spacious layouts.\n */\nexport type Size = 'sm' | 'md' | 'lg';\n\n/** Controls the visual scale of an element to match its importance and available space.\n * - `xs` - Extra small size for minimal elements or highly dense layouts.\n * - `sm` - Compact size for dense layouts or secondary elements with less visual prominence.\n * - `md` - Standard size that works well in most contexts and provides balanced visibility.\n * - `lg` - Larger size for emphasizing important elements or improving touch targets in spacious layouts.\n * - `xl` - Extra large size for emphasizing elements or sparse layouts.\n */\nexport type SizeExpanded = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Controls the visual prominence to establish hierarchy and guide user attention.\n * - `emphasis` - Increases visual weight to draw attention and highlight important elements.\n * - `muted` - Reduces visual weight for supporting content that should remain subtle and unobtrusive.\n */\nexport type Prominence = 'emphasis' | 'muted';\n\n/**\n * Determines the container bounds of the element\n * - `flat` Element has white space bounds but reduced visual container.\n * - `inline` Element container reduces to fit within inline content such as a block of text.\n * - `inset` Element container optimizes for embedding or inset placement inside another containing element.\n * - `full` Element container optimizes for filling its container bounds.\n */\nexport type Container = 'inline' | 'flat' | 'inset' | 'full';\n\n/** Controls the visual density of an element to match its context and available space.\n * - `compact` - Reduces visual weight and spacing for dense layouts or secondary elements with less visual prominence.\n * - `default` - Standard size that works well in most contexts and provides balanced visibility.\n */\nexport type Density = 'compact' | 'default';\n\n/** Communicates the intent and semantic meaning of an element to help users understand the outcome of their actions.\n * - `accent` - Highlights important actions or draws attention to primary interactive elements.\n * - `warning` - Indicates cautionary actions that require careful consideration before proceeding.\n * - `success` - Represents positive outcomes, confirmations, or constructive actions.\n * - `danger` - Signals destructive or irreversible actions that need extra attention and confirmation.\n */\nexport type SupportStatus = 'accent' | 'warning' | 'success' | 'danger';\n\n/** Controls how the chart connects intermediate values between points in a data series.\n * - `linear` - Connects points with straight line segments.\n * - `smooth` - Connects points with smooth bezier curves.\n * - `step` - Connects points with horizontal and vertical step segments.\n */\nexport type Interpolation = 'linear' | 'smooth' | 'step';\n\n/** Determines the orientation of an element. */\nexport type Orientation = 'vertical' | 'horizontal';\n\n/** Communicates the current state of a task or process to keep users informed of progress and outcomes.\n * - `scheduled` - Task has a scheduled future execution at a specific time.\n * - `queued` - Task is waiting in line to begin after other tasks complete.\n * - `pending` - Task is awaiting approval, user input, or external conditions before proceeding.\n * - `starting` - Task is initializing and preparing to begin active execution.\n * - `running` - Task is actively executing and making progress.\n * - `restarting` - Task restarts after an interruption or reset.\n * - `stopping` - Task is gracefully shutting down and completing cleanup operations.\n * - `finished` - Task has completed successfully with the expected outcome.\n * - `failed` - Task encountered an error and did not complete as intended.\n * - `unknown` - Task status remains unknown or unavailable.\n * - `ignored` - Task was intentionally skipped or excluded from execution.\n */\nexport type TaskStatus =\n | 'scheduled'\n | 'queued'\n | 'pending'\n | 'starting'\n | 'running'\n | 'restarting'\n | 'stopping'\n | 'finished'\n | 'failed'\n | 'unknown'\n | 'ignored';\n\n/**\n * https://open-ui.org/components/popup.research.explainer#api-shape\n * - `auto` light dismiss, focus on open, return to trigger\n * - `manual` no light dismiss, no auto focus\n * - `hint` no light dismiss, no auto focus, open/close on hover/focus\n */\nexport type PopoverType = 'auto' | 'manual' | 'hint' | 'inline';\n\nexport type InterestEvent = Event & {\n source: HTMLElement;\n};\n\n/** Controls how the popover aligns along the edge of its anchor element.\n * - `start` - Aligns the popover to the beginning edge of the anchor for left or top alignment.\n * - `end` - Aligns the popover to the ending edge of the anchor for right or bottom alignment.\n * - `center` - Centers the popover along the anchor's edge for balanced positioning.\n */\nexport type PopoverAlign = 'start' | 'end' | 'center';\n\n/** Determines the popover position relative to its assigned anchor and alignment.\n * - `top` - Positions the popover above the anchor element.\n * - `bottom` - Positions the popover below the anchor element.\n * - `left` - Positions the popover to the left side of the anchor element.\n * - `right` - Positions the popover to the right side of the anchor element.\n */\nexport type PopoverSides = 'top' | 'bottom' | 'left' | 'right';\n\n/** Controls the placement of the popover relative to its anchor element.\n * - `center` - Centers the popover directly over the anchor element.\n * - `top` - Positions the popover above the anchor element.\n * - `bottom` - Positions the popover below the anchor element.\n * - `left` - Positions the popover to the left side of the anchor element.\n * - `right` - Positions the popover to the right side of the anchor element.\n */\nexport type PopoverPosition = 'center' | 'top' | 'bottom' | 'left' | 'right';\n\n/** Determines the position of an element relative to its anchor */\nexport type Placement = PopoverPosition | `${PopoverSides}-${PopoverAlign}`;\n\n/** Controls the directional arrangement and spacing behavior of the element's content.\n * - `vertical` - Arranges content in a vertical stack with block-level spacing.\n * - `vertical-inline` - Arranges content vertically with compact inline spacing for dense layouts.\n * - `horizontal` - Arranges content in a horizontal row with block-level spacing.\n * - `horizontal-inline` - Arranges content horizontally with compact inline spacing.\n */\nexport type ControlLayout = 'vertical' | 'vertical-inline' | 'horizontal' | 'horizontal-inline';\n\n/** Indicates the element that represents the user's current location or position within a set. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)\n * - `page` - Marks the current page within a set of navigation links.\n * - `step` - Marks the current step within a multi-step process or workflow.\n */\nexport type Current = 'page' | 'step';\n\n/** Controls how data points are visually encoded in a sparkline chart.\n * - `line` - Renders data as a connected line to emphasize macro trend.\n * - `area` - Renders data as a filled area beneath a line to emphasize magnitude over time.\n * - `gradient` - Renders a line with gradient color treatment to communicate value intensity across the series.\n * - `column` - Renders data as vertical columns for easy comparison of discrete values.\n * - `winloss` - Renders outcomes as binary or ternary bars to highlight wins, losses, and optional ties.\n */\nexport type SparklineMark = 'line' | 'area' | 'gradient' | 'column' | 'winloss';\n\nexport interface NveElement {\n /**\n * This Boolean attribute prevents the user from interacting with the element: it cannot receive press or focus events. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-disabled)\n * - `true` - The element has a disabled state and does not accept interaction.\n * - `false` - The element has an enabled state and accepts interaction.\n */\n disabled?: boolean;\n\n /** Indicates whether the element is currently actively engaged through user interaction. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/:active)\n * - `true` - The user is pressing or activating the element (mousedown, keydown, or touch).\n * - `false` - No active user engagement on the element.\n */\n active?: boolean;\n\n /** Indicates whether collapsible content is currently visible or hidden from the user. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-expanded)\n * - `true` - The associated content expands and becomes visible to the user.\n * - `false` - The associated content collapses and hides from the user.\n */\n expanded?: boolean;\n\n /** Indicates the current state of a toggle button that switches on or off. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-pressed)\n * - `true` - The button is in the pressed (on) state and the associated action or setting is active.\n * - `false` - The button is in the unpressed (off) state and the associated action or setting is inactive.\n */\n pressed?: boolean;\n\n /** Indicates whether an element currently holds selection within a multi-option selection group. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-selected)\n * - `true` - The element holds selection and represents the user's current choice within the group.\n * - `false` - The element does not hold selection and the user can choose it.\n */\n selected?: boolean;\n\n /** Indicates whether the user can change the element's value while it remains visible and focusable. [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly)\n * - `true` - The element has a readonly state: the user cannot change its value, but can still focus and copy it.\n * - `false` - The element allows editing and the user can change its value through interaction.\n */\n readOnly?: boolean;\n\n /** Defines the value associated with the element's name when submitting the form data. The server receives this value in params when the form submits through this button. [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value) */\n value?: string;\n\n /** The name of the element, submitted as a pair with the element value as part of the form data. [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-name) */\n name?: string;\n\n /** Indicates whether the user can dismiss or close the element.\n * - `true` - The element displays a close control and the user can dismiss it.\n * - `false` - The user cannot close the element and must dismiss it programmatically.\n */\n closable?: boolean;\n\n /** Enables updating internal string values for internationalization. */\n i18n?: Partial<I18nStrings & { __set: boolean }>;\n\n /** Indicates the element that represents the user's current location or position within a set. [MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)\n * - `page` - Marks the current page within a set of navigation links.\n * - `step` - Marks the current step within a multi-step process or workflow.\n */\n current?: 'page' | 'step';\n\n /** Controls the horizontal alignment of the element within its container, respecting the text direction. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Box_alignment_in_grid_layout#the_two_axes_of_a_grid_layout)\n * - `start` - Aligns the element to the beginning of the inline axis (left in LTR, right in RTL).\n * - `center` - Centers the element along the inline axis for balanced visual positioning.\n * - `end` - Aligns the element to the end of the inline axis (right in LTR, left in RTL).\n */\n inlinePosition?: 'start' | 'center' | 'end';\n\n /** Controls the vertical alignment of the element within its container. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Box_alignment_in_grid_layout#the_two_axes_of_a_grid_layout)\n * - `start` - Aligns the element to the top of the block axis for top-aligned positioning.\n * - `center` - Centers the element along the block axis for balanced vertical positioning.\n * - `end` - Aligns the element to the bottom of the block axis for bottom-aligned positioning.\n */\n blockPosition?: 'start' | 'center' | 'end';\n\n /** Controls the directional arrangement and spacing behavior of the element's content.\n * - `vertical` - Arranges content in a vertical stack with block-level spacing.\n * - `vertical-inline` - Arranges content vertically with compact inline spacing for dense layouts.\n * - `horizontal` - Arranges content in a horizontal row with block-level spacing.\n * - `horizontal-inline` - Arranges content horizontally with compact inline spacing.\n */\n layout?: 'vertical' | 'vertical-inline' | 'horizontal' | 'horizontal-inline';\n\n /** Controls the directional flow of the element's layout and interaction pattern.\n * - `vertical` - Element orients vertically with top-to-bottom flow.\n * - `horizontal` - Element orients horizontally with left-to-right flow.\n */\n orientation?: 'vertical' | 'horizontal';\n\n /** Controls the visual prominence to establish hierarchy and guide user attention.\n * - `emphasis` - Increases visual weight to draw attention and highlight important elements.\n * - `muted` - Reduces visual weight for supporting content that should remain subtle and unobtrusive.\n */\n prominence?: 'emphasis' | 'muted';\n\n /** The Interaction type provides a way to show the intent of an interactive element. This can help users quickly understand what each interaction does and reduce the potential for confusion or errors.\n * - `emphasis` Shows the interaction targets emphasis or highlighting primary actions.\n * - `destructive` Shows the interaction targets destructive actions such as deleting or removing.\n */\n interaction?: 'emphasis' | 'destructive';\n\n /** Defines a base color from the theme color palette */\n color?:\n | 'red-cardinal'\n | 'gray-slate'\n | 'gray-denim'\n | 'blue-indigo'\n | 'blue-cobalt'\n | 'blue-sky'\n | 'teal-cyan'\n | 'green-mint'\n | 'teal-seafoam'\n | 'green-grass'\n | 'yellow-amber'\n | 'orange-pumpkin'\n | 'red-tomato'\n | 'pink-magenta'\n | 'purple-plum'\n | 'purple-violet'\n | 'purple-lavender'\n | 'pink-rose'\n | 'green-jade'\n | 'lime-pear'\n | 'yellow-nova'\n | 'brand-green';\n\n /** Communicates the intent and semantic meaning of an element to help users understand the outcome of their actions.\n * - `accent` - Highlights important actions or draws attention to primary interactive elements.\n * - `warning` - Indicates cautionary actions that require careful consideration before proceeding.\n * - `success` - Represents positive outcomes, confirmations, or constructive actions.\n * - `danger` - Signals destructive or irreversible actions that need extra attention and confirmation.\n */\n status?: 'accent' | 'warning' | 'success' | 'danger';\n\n /** Controls the visual scale of an element to match its importance and available space.\n * - `sm` - Compact size for dense layouts or secondary elements with less visual prominence.\n * - `md` - Standard size that works well in most contexts and provides balanced visibility.\n * - `lg` - Larger size for emphasizing important elements or improving touch targets in spacious layouts.\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Demonstrates different container styles to accommodate visual weight and context.\n * - `flat` Element has white space bounds but reduced visual container.\n * - `inline` Element container reduces to fit within inline content such as a block of text.\n * - `inset` Element container optimizes for embedding or inset placement inside another containing element.\n * - `full` Element container optimizes for filling its container bounds.\n */\n container?: 'inline' | 'flat' | 'inset' | 'full';\n\n /** Determines the position of an element along both inline and block axis. [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Box_alignment_in_grid_layout#the_two_axes_of_a_grid_layout) */\n position?:\n | 'top-start'\n | 'top-end'\n | 'top-center'\n | 'bottom-start'\n | 'bottom-end'\n | 'bottom-center'\n | 'left-start'\n | 'left-end'\n | 'left-center'\n | 'right-start'\n | 'right-end'\n | 'right-center';\n\n /** Determines the alignment of the popover relative to the provided anchor element. */\n alignment?: 'start' | 'end' | 'center';\n\n /** Provides the element that the popover should position relative to. Set the property to an element or its ID within the same render root. The HTML attribute accepts only the element ID. */\n anchor?: string | HTMLElement;\n\n /** Defines the element that triggers an `open` interaction event. Set the property to an element or its ID within the same render root. The HTML attribute accepts only the element ID. */\n trigger?: string | HTMLElement;\n\n /** Defines named content areas where users can insert custom markup into the element.\n * - `default` - The primary content area for the element.\n * - `prefix` - Content that appears before the main element content.\n * - `suffix` - Content that appears after the main element content.\n * - `header` - Content that appears at the top of the element, used for titles or introductory information.\n * - `footer` - Content that appears at the bottom of the element, used for supplementary information or actions.\n * - `actions` - Content area specifically for interactive controls like buttons or links.\n * - `icon` - Content area for displaying an icon that represents the element's purpose or state.\n */\n slots?: 'default' | 'prefix' | 'suffix' | 'header' | 'footer' | 'actions' | 'icon';\n\n /**\n * Sets the automatic dismissal time in milliseconds before the element emits a `close` event. Allow ~200-250ms per word for comfortable reading.\n * - `0` - Warning or error messages requiring immediate acknowledgment.\n * - `3000` - Brief success or confirmation messages.\n * - `7000` - Standard informational messages.\n * - `10000` - Messages with actions or requiring user decision.\n */\n closeTimeout?: number;\n\n /**\n * Sets the delay in milliseconds before the element emits an `open` event.\n * - `0` - Keyboard focus interactions (always immediate for accessibility).\n * - `500` - Dense interfaces with many tooltips to reduce visual noise and prevent accidental triggers.\n */\n openDelay?: number;\n\n /** @private An instance of `ElementInternals` that decorators/controllers set dynamically */\n _internals: ElementInternals;\n\n render: TemplateResult;\n}\n\n/** Defines named content areas where users can insert custom markup into the element.\n * - `default` - The primary content area for the element.\n * - `prefix` - Content that appears before the main element content.\n * - `suffix` - Content that appears after the main element content.\n * - `header` - Content that appears at the top of the element, used for titles or introductory information.\n * - `footer` - Content that appears at the bottom of the element, used for supplementary information or actions.\n * - `actions` - Content area specifically for interactive controls like buttons or links.\n * - `icon` - Content area for displaying an icon that represents the element's purpose or state.\n */\nexport type SlotName = 'default' | 'prefix' | 'suffix' | 'header' | 'footer' | 'actions' | 'icon';\n\n/** The Interaction type provides a way to show the intent of an interactive element. This can help users quickly understand what each interaction does and reduce the potential for confusion or errors.\n * - `emphasis` Shows the interaction targets emphasis or highlighting primary actions.\n * - `destructive` Shows the interaction targets destructive actions such as deleting or removing.\n */\nexport type Interaction = 'emphasis' | 'destructive';\n\nexport interface ContainerElement {\n container?: Partial<Container>;\n}\n\n/** An element that renders complex data structures (e.g., arrays, series, matrices) rather than composable UI content and values expressible with primitive attributes. */\nexport interface DataElement<T extends unknown[] | Record<string, unknown>> {\n data?: T;\n}\n\nexport const statusIcons: { [key: string]: IconName } = {\n '': 'information-circle',\n undefined: 'information-circle',\n default: 'information-circle',\n accent: 'information-circle',\n warning: 'exclamation-triangle',\n success: 'checkmark-circle',\n danger: 'exclamation-circle',\n scheduled: 'clock',\n failed: 'x-circle',\n finished: 'checkmark-circle',\n unknown: 'question-mark-circle',\n queued: 'bar-pill-stack',\n running: 'running',\n restarting: 'refresh',\n stopping: 'stop-sign',\n pending: 'circle-dash',\n starting: 'circle-dot',\n ignored: 'circle-angled-line'\n} as const;\n\ndeclare global {\n var NVE_ELEMENTS: {\n state: {\n bundle: boolean;\n env: 'watch' | 'production' | 'development';\n pageHost: string;\n moduleHost: string;\n versions: string[];\n scopedRegistry: { [key: string]: CustomElementRegistry };\n elementRegistry: Readonly<{ [key: string]: string }>;\n i18nRegistry: Readonly<{ [key: string]: string }>;\n audit: Readonly<{\n [key: string]: {\n count?: number;\n excessiveInstanceLimitAudited?: boolean;\n };\n }>;\n };\n debug: (log?: (...args: unknown[]) => void) => void;\n };\n\n interface HTMLElement {\n 'nve-text': string;\n 'nve-layout': string;\n }\n\n interface CustomElementRegistry {\n initialize(root: ShadowRoot | Document): void;\n }\n\n var CustomElementRegistry: {\n new (): CustomElementRegistry;\n prototype: CustomElementRegistry;\n };\n}\n\nexport interface ElementDefinition extends CustomElementConstructor {\n metadata: { version: string; tag: string };\n elementDefinitions?: { [key: string]: ElementDefinition };\n shadowRootOptions?: { customElementRegistry?: CustomElementRegistry | null };\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface OffsetPoint {\n offsetX: number;\n offsetY: number;\n}\n\nexport interface Dimensions {\n width: number;\n height: number;\n}\n\nexport type Rect = Point & Dimensions;\n\nexport interface Scale {\n min: number;\n max: number;\n}\n\n/** https://github.com/tc39/proposal-decorators */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport type LegacyDecoratorTarget = Function & {\n addInitializer?: (initializer: (instance: any) => void) => void; // eslint-disable-line @typescript-eslint/no-explicit-any\n};\n"],"mappings":";AAqZA,IAAa,IAA2C;CACtD,IAAI;CACJ,WAAW;CACX,SAAS;CACT,QAAQ;CACR,SAAS;CACT,SAAS;CACT,QAAQ;CACR,WAAW;CACX,QAAQ;CACR,UAAU;CACV,SAAS;CACT,QAAQ;CACR,SAAS;CACT,YAAY;CACZ,UAAU;CACV,SAAS;CACT,UAAU;CACV,SAAS;AACX"}
@@ -1,7 +1,7 @@
1
1
  //#region src/internal/utils/audit.ts
2
2
  function e(e) {
3
3
  let t = ["template", ...e.constructor.metadata?.children ?? []].filter((e) => typeof e == "string");
4
- return [Array.from(e.shadowRoot.querySelectorAll("slot")).flatMap((e) => e.assignedElements().filter((e) => !t.map((e) => e).includes(e.localName))), t];
4
+ return [Array.from(e.shadowRoot.querySelectorAll("slot")).filter((e) => e.name === "").flatMap((e) => e.assignedElements().filter((e) => !t.map((e) => e).includes(e.localName))), t];
5
5
  }
6
6
  function t(e) {
7
7
  let t = e.constructor.metadata?.parents ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","names":[],"sources":["../../../src/internal/utils/audit.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function auditSlots(\n host: HTMLElement & { constructor: { metadata?: { children?: string[]; disallowedChildren?: string[] } } }\n): [Element[], string[]] {\n const validElements = ['template', ...(host.constructor.metadata?.children ?? [])].filter(c => typeof c === 'string');\n const invalidElements = Array.from(host.shadowRoot!.querySelectorAll('slot')).flatMap(slot =>\n slot.assignedElements().filter(e => !validElements.map(i => i).includes(e.localName))\n );\n return [invalidElements, validElements];\n}\n\nexport function auditParentElement(\n host: HTMLElement & { constructor: { metadata?: { parents?: string[] } } }\n): [boolean, string[]] {\n const validParentTags = host.constructor.metadata?.parents ?? [];\n return validParentTags.length\n ? [!!validParentTags.find(p => host.parentElement?.localName === p), validParentTags]\n : [true, []];\n}\n"],"mappings":";AAGA,SAAgB,EACd,GACuB;CACvB,IAAM,IAAgB,CAAC,YAAY,GAAI,EAAK,YAAY,UAAU,YAAY,CAAC,CAAE,CAAC,CAAC,QAAO,MAAK,OAAO,KAAM,QAAQ;CAIpH,OAAO,CAHiB,MAAM,KAAK,EAAK,WAAY,iBAAiB,MAAM,CAAC,CAAC,CAAC,SAAQ,MACpF,EAAK,iBAAiB,CAAC,CAAC,QAAO,MAAK,CAAC,EAAc,KAAI,MAAK,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAE9E,GAAiB,CAAa;AACxC;AAEA,SAAgB,EACd,GACqB;CACrB,IAAM,IAAkB,EAAK,YAAY,UAAU,WAAW,CAAC;CAC/D,OAAO,EAAgB,SACnB,CAAC,CAAC,CAAC,EAAgB,MAAK,MAAK,EAAK,eAAe,cAAc,CAAC,GAAG,CAAe,IAClF,CAAC,IAAM,CAAC,CAAC;AACf"}
1
+ {"version":3,"file":"audit.js","names":[],"sources":["../../../src/internal/utils/audit.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function auditSlots(\n host: HTMLElement & { constructor: { metadata?: { children?: string[]; disallowedChildren?: string[] } } }\n): [Element[], string[]] {\n const validElements = ['template', ...(host.constructor.metadata?.children ?? [])].filter(c => typeof c === 'string');\n const invalidElements = Array.from(host.shadowRoot!.querySelectorAll('slot'))\n .filter(slot => slot.name === '')\n .flatMap(slot => slot.assignedElements().filter(e => !validElements.map(i => i).includes(e.localName)));\n return [invalidElements, validElements];\n}\n\nexport function auditParentElement(\n host: HTMLElement & { constructor: { metadata?: { parents?: string[] } } }\n): [boolean, string[]] {\n const validParentTags = host.constructor.metadata?.parents ?? [];\n return validParentTags.length\n ? [!!validParentTags.find(p => host.parentElement?.localName === p), validParentTags]\n : [true, []];\n}\n"],"mappings":";AAGA,SAAgB,EACd,GACuB;CACvB,IAAM,IAAgB,CAAC,YAAY,GAAI,EAAK,YAAY,UAAU,YAAY,CAAC,CAAE,CAAC,CAAC,QAAO,MAAK,OAAO,KAAM,QAAQ;CAIpH,OAAO,CAHiB,MAAM,KAAK,EAAK,WAAY,iBAAiB,MAAM,CAAC,CAAC,CAC1E,QAAO,MAAQ,EAAK,SAAS,EAAE,CAAC,CAChC,SAAQ,MAAQ,EAAK,iBAAiB,CAAC,CAAC,QAAO,MAAK,CAAC,EAAc,KAAI,MAAK,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAC/F,GAAiB,CAAa;AACxC;AAEA,SAAgB,EACd,GACqB;CACrB,IAAM,IAAkB,EAAK,YAAY,UAAU,WAAW,CAAC;CAC/D,OAAO,EAAgB,SACnB,CAAC,CAAC,CAAC,EAAgB,MAAK,MAAK,EAAK,eAAe,cAAc,CAAC,GAAG,CAAe,IAClF,CAAC,IAAM,CAAC,CAAC;AACf"}
@@ -12,7 +12,7 @@ var c = class extends a {
12
12
  static {
13
13
  this.metadata = {
14
14
  tag: "nve-logo",
15
- version: "2.10.0"
15
+ version: "2.11.1"
16
16
  };
17
17
  }
18
18
  render() {
@@ -1,7 +1,8 @@
1
- import { Menu, MenuItem } from '@nvidia-elements/core/menu';
1
+ import { Menu, MenuGroup, MenuItem } from '@nvidia-elements/core/menu';
2
2
  declare global {
3
3
  interface HTMLElementTagNameMap {
4
4
  'nve-menu': Menu;
5
+ 'nve-menu-group': MenuGroup;
5
6
  'nve-menu-item': MenuItem;
6
7
  }
7
8
  }
@@ -1,7 +1,8 @@
1
1
  import { define as e } from "../internal/utils/dom.js";
2
2
  import { Menu as t } from "./menu2.js";
3
- import { MenuItem as n } from "./menu-item2.js";
4
- e(t), e(n);
3
+ import { MenuGroup as n } from "./menu-group2.js";
4
+ import { MenuItem as r } from "./menu-item2.js";
5
+ e(t), e(n), e(r);
5
6
  //#endregion
6
7
 
7
8
  //# sourceMappingURL=define.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","names":[],"sources":["../../src/menu/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 { Menu, MenuItem } from '@nvidia-elements/core/menu';\n\ndefine(Menu);\ndefine(MenuItem);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nve-menu': Menu;\n 'nve-menu-item': MenuItem;\n }\n}\n"],"mappings":";;;AAMA,EAAO,CAAI,GACX,EAAO,CAAQ"}
1
+ {"version":3,"file":"define.js","names":[],"sources":["../../src/menu/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 { Menu, MenuGroup, MenuItem } from '@nvidia-elements/core/menu';\n\ndefine(Menu);\ndefine(MenuGroup);\ndefine(MenuItem);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nve-menu': Menu;\n 'nve-menu-group': MenuGroup;\n 'nve-menu-item': MenuItem;\n }\n}\n"],"mappings":";;;;AAMA,EAAO,CAAI,GACX,EAAO,CAAS,GAChB,EAAO,CAAQ"}
@@ -1,2 +1,3 @@
1
1
  export * from './menu.js';
2
+ export * from './menu-group.js';
2
3
  export * from './menu-item.js';
@@ -1,3 +1,4 @@
1
1
  import { Menu as e } from "./menu2.js";
2
- import { MenuItem as t } from "./menu-item2.js";
3
- export { e as Menu, t as MenuItem };
2
+ import { MenuGroup as t } from "./menu-group2.js";
3
+ import { MenuItem as n } from "./menu-item2.js";
4
+ export { e as Menu, t as MenuGroup, n as MenuItem };
@@ -0,0 +1,50 @@
1
+ import { LitElement } from 'lit';
2
+ import { Icon } from '@nvidia-elements/core/icon';
3
+ /**
4
+ * @element nve-menu-group
5
+ * @description Organizes related menu items under a disclosure header that can show or hide one child menu.
6
+ * @documentation https://nvidia.github.io/elements/docs/elements/menu/
7
+ * @since 0.0.0
8
+ * @entrypoint \@nvidia-elements/core/menu
9
+ * @command --open - Opens the menu group.
10
+ * @command --close - Closes the menu group.
11
+ * @command --toggle - Toggles the menu group.
12
+ * @event open - Dispatched when the user requests that the menu group open.
13
+ * @event close - Dispatched when the user requests that the menu group close.
14
+ * @slot - Label content for the disclosure header.
15
+ * @slot prefix - Non-interactive content before the header label, such as an icon or avatar.
16
+ * @slot suffix - Non-interactive content after the header label, such as a badge or count.
17
+ * @slot menu - One `nve-menu` containing the grouped menu items. Direct menus use this slot automatically in browsers; server-rendered menus must set `slot="menu"` explicitly.
18
+ * @cssprop --background
19
+ * @cssprop --font-size
20
+ * @cssprop --padding
21
+ * @cssprop --gap
22
+ * @cssprop --border-radius
23
+ * @cssprop --color
24
+ * @cssprop --width
25
+ * @cssprop --min-height
26
+ * @aria https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/
27
+ * @stable false
28
+ */
29
+ export declare class MenuGroup extends LitElement {
30
+ #private;
31
+ static styles: import("lit").CSSResult[];
32
+ static readonly metadata: {
33
+ tag: string;
34
+ version: string;
35
+ children: string[];
36
+ };
37
+ static elementDefinitions: {
38
+ [Icon.metadata.tag]: typeof Icon;
39
+ };
40
+ /** Determines whether the child menu is visible. */
41
+ expanded: boolean;
42
+ /** Prevents user activation of the disclosure header. */
43
+ disabled: boolean;
44
+ /** Determines whether user activation automatically updates the expanded state. */
45
+ behaviorExpand: boolean;
46
+ /** @private */
47
+ _internals: ElementInternals;
48
+ render(): import("lit-html").TemplateResult<1>;
49
+ connectedCallback(): void;
50
+ }
@@ -0,0 +1,6 @@
1
+ //#region src/menu/menu-group.css?inline
2
+ var e = ":host{--background: transparent;--font-size: var(--nve-ref-font-size-100);--padding: var(--nve-ref-size-200);--gap: var(--nve-ref-space-sm);--border-radius: var(--nve-ref-border-radius-xs);--color: var(--nve-sys-interaction-color);--width: 100%;--min-height: var(--nve-ref-size-800);--nve-sys-interaction-state-base: var(--background, var(--nve-sys-layer-canvas-background));display:block;width:var(--width);contain:layout}[internal-host]{display:flex;flex-direction:column;width:100%;gap:var(--nve-ref-space-xxs)}button{appearance:none;padding:var(--padding);color:var(--color);background:var(--background);font-size:var(--font-size);border-radius:var(--border-radius);min-height:var(--min-height);gap:var(--gap);font-weight:var(--nve-ref-font-weight-medium);border:0;width:100%;margin:0;font-family:inherit;line-height:normal;text-align:start;cursor:pointer;outline-offset:calc(-1 * var(--nve-ref-size-50));position:relative;display:flex;align-items:center;background-image:linear-gradient(color-mix(in oklab,var(--nve-sys-interaction-state-base) 100%,var(--nve-sys-interaction-state-mix) var(--nve-sys-interaction-state-ratio)) 0 0)!important;&:hover{--nve-sys-interaction-state-ratio: var(--nve-sys-interaction-state-ratio-hover)}}button:not([disabled]):focus-visible{outline:Highlight solid 2px!important;outline:5px auto -webkit-focus-ring-color!important}slot:not([name]){display:inline-flex;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[part=caret]{flex:none;--color: currentColor}slot[name=menu]{width:100%;display:block}::slotted(nve-menu){--min-width: 0;--width: 100%;--padding: 0 0 0 var(--nve-ref-size-200)}::slotted(nve-icon){--color: currentColor}:host([disabled]){--color: var(--nve-sys-interaction-disabled-color)}:host([disabled]) button{--nve-sys-interaction-state-ratio: 0;cursor:not-allowed;opacity:var(--nve-ref-opacity-500)}:host(:not([disabled]):hover){--color: var(--nve-sys-interaction-selected-color)}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=menu-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-group.js","names":[],"sources":["../../src/menu/menu-group.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: transparent;\n --font-size: var(--nve-ref-font-size-100);\n --padding: var(--nve-ref-size-200);\n --gap: var(--nve-ref-space-sm);\n --border-radius: var(--nve-ref-border-radius-xs);\n --color: var(--nve-sys-interaction-color);\n --width: 100%;\n --min-height: var(--nve-ref-size-800);\n --nve-sys-interaction-state-base: var(--background, var(--nve-sys-layer-canvas-background));\n display: block;\n width: var(--width);\n contain: layout;\n}\n\n[internal-host] {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: var(--nve-ref-space-xxs);\n}\n\nbutton {\n appearance: none;\n padding: var(--padding);\n color: var(--color);\n background: var(--background);\n font-size: var(--font-size);\n border-radius: var(--border-radius);\n min-height: var(--min-height);\n gap: var(--gap);\n font-weight: var(--nve-ref-font-weight-medium);\n border: 0;\n width: 100%;\n margin: 0;\n font-family: inherit;\n line-height: normal;\n text-align: start;\n cursor: pointer;\n outline-offset: calc(-1 * var(--nve-ref-size-50));\n position: relative;\n display: flex;\n align-items: center;\n background-image: linear-gradient(\n color-mix(\n in oklab,\n var(--nve-sys-interaction-state-base) 100%,\n var(--nve-sys-interaction-state-mix) var(--nve-sys-interaction-state-ratio)\n )\n 0 0\n ) !important;\n\n &:hover {\n --nve-sys-interaction-state-ratio: var(--nve-sys-interaction-state-ratio-hover);\n }\n}\n\nbutton:not([disabled]):focus-visible {\n outline: Highlight solid 2px !important;\n outline: 5px auto -webkit-focus-ring-color !important;\n}\n\nslot:not([name]) {\n display: inline-flex;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n[part='caret'] {\n flex: none;\n --color: currentColor;\n}\n\nslot[name='menu'] {\n width: 100%;\n display: block;\n}\n\n::slotted(nve-menu) {\n --min-width: 0;\n --width: 100%;\n --padding: 0 0 0 var(--nve-ref-size-200);\n}\n\n::slotted(nve-icon) {\n --color: currentColor;\n}\n\n:host([disabled]) {\n --color: var(--nve-sys-interaction-disabled-color);\n}\n\n:host([disabled]) button {\n --nve-sys-interaction-state-ratio: 0;\n cursor: not-allowed;\n opacity: var(--nve-ref-opacity-500);\n}\n\n:host(:not([disabled]):hover) {\n --color: var(--nve-sys-interaction-selected-color);\n}\n"],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { audit as e } from "../internal/controllers/audit.controller.js";
2
+ import { attachInternals as t } from "../internal/utils/a11y.js";
3
+ import { TypeExpandableController as n } from "../internal/controllers/type-expandable.controller.js";
4
+ import { scopedRegistry as r } from "../internal/decorators/scoped-registry.js";
5
+ import { useStyles as i } from "../internal/styles/index.js";
6
+ import a from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
7
+ import { Icon as o } from "../icon/icon2.js";
8
+ import s from "./menu-group.js";
9
+ import { LitElement as c, html as l } from "lit";
10
+ import { property as u } from "lit/decorators/property.js";
11
+ //#region src/menu/menu-group.ts
12
+ var d = class extends c {
13
+ constructor(...e) {
14
+ super(...e), this.expanded = !1, this.disabled = !1, this.behaviorExpand = !1, this.#e = new n(this), this.#t = () => {
15
+ this.disabled || this.#e.toggle();
16
+ };
17
+ }
18
+ static {
19
+ this.styles = i([s]);
20
+ }
21
+ static {
22
+ this.metadata = {
23
+ tag: "nve-menu-group",
24
+ version: "2.11.1",
25
+ children: ["nve-menu"]
26
+ };
27
+ }
28
+ static {
29
+ this.elementDefinitions = { [o.metadata.tag]: o };
30
+ }
31
+ #e;
32
+ render() {
33
+ return l`<div internal-host><button id="trigger" type="button" aria-expanded="${this.expanded}" ?disabled="${this.disabled}" aria-controls="content" @click="${this.#t}"><slot name="prefix"></slot><slot></slot><slot name="suffix"></slot><nve-icon part="caret" name="caret" direction="${this.expanded ? "down" : "right"}" size="sm" aria-hidden="true"></nve-icon></button><slot id="content" name="menu" ?hidden="${!this.expanded}"></slot></div>`;
34
+ }
35
+ connectedCallback() {
36
+ super.connectedCallback(), t(this), this._internals.role = "group";
37
+ }
38
+ #t;
39
+ };
40
+ a([u({
41
+ type: Boolean,
42
+ reflect: !0
43
+ })], d.prototype, "expanded", void 0), a([u({
44
+ type: Boolean,
45
+ reflect: !0
46
+ })], d.prototype, "disabled", void 0), a([u({
47
+ type: Boolean,
48
+ attribute: "behavior-expand"
49
+ })], d.prototype, "behaviorExpand", void 0), d = a([e(), r()], d);
50
+ //#endregion
51
+ export { d as MenuGroup };
52
+
53
+ //# sourceMappingURL=menu-group2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-group2.js","names":[],"sources":["../../src/menu/menu-group.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport {\n attachInternals,\n audit,\n scopedRegistry,\n TypeExpandableController,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport { Icon } from '@nvidia-elements/core/icon';\nimport styles from './menu-group.css?inline';\n\n/**\n * @element nve-menu-group\n * @description Organizes related menu items under a disclosure header that can show or hide one child menu.\n * @documentation https://nvidia.github.io/elements/docs/elements/menu/\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/menu\n * @command --open - Opens the menu group.\n * @command --close - Closes the menu group.\n * @command --toggle - Toggles the menu group.\n * @event open - Dispatched when the user requests that the menu group open.\n * @event close - Dispatched when the user requests that the menu group close.\n * @slot - Label content for the disclosure header.\n * @slot prefix - Non-interactive content before the header label, such as an icon or avatar.\n * @slot suffix - Non-interactive content after the header label, such as a badge or count.\n * @slot menu - One `nve-menu` containing the grouped menu items. Direct menus use this slot automatically in browsers; server-rendered menus must set `slot=\"menu\"` explicitly.\n * @cssprop --background\n * @cssprop --font-size\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --border-radius\n * @cssprop --color\n * @cssprop --width\n * @cssprop --min-height\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/\n * @stable false\n */\n@audit()\n@scopedRegistry()\nexport class MenuGroup extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-menu-group',\n version: '0.0.0',\n children: ['nve-menu']\n };\n\n static elementDefinitions = {\n [Icon.metadata.tag]: Icon\n };\n\n /** Determines whether the child menu is visible. */\n @property({ type: Boolean, reflect: true }) expanded = false;\n\n /** Prevents user activation of the disclosure header. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Determines whether user activation automatically updates the expanded state. */\n @property({ type: Boolean, attribute: 'behavior-expand' }) behaviorExpand = false;\n\n /** @private */\n declare _internals: ElementInternals;\n\n #typeExpandableController = new TypeExpandableController(this);\n\n render() {\n return html`\n <div internal-host>\n <button\n id=\"trigger\"\n type=\"button\"\n aria-expanded=${this.expanded}\n ?disabled=${this.disabled}\n aria-controls=\"content\"\n @click=${this.#toggle}\n >\n <slot name=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\"></slot>\n <nve-icon\n part=\"caret\"\n name=\"caret\"\n direction=${this.expanded ? 'down' : 'right'}\n size=\"sm\"\n aria-hidden=\"true\"\n ></nve-icon>\n </button>\n <slot id=\"content\" name=\"menu\" ?hidden=${!this.expanded}></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'group';\n }\n\n #toggle = () => {\n if (!this.disabled) {\n this.#typeExpandableController.toggle();\n }\n };\n}\n"],"mappings":";;;;;;;;;;;AA2CO,IAAM,IAAN,cAAwB,EAAW;;EA4DxB,aA9CuC,KAAA,WAAA,IAGA,KAAA,WAAA,IAGqB,KAAA,iBAAA,IAKhD,KAAA,KAAA,IAAI,EAAyB,IAAI,GAmC7C,KAAA,WAAA;GACd,AAAK,KAAK,YACR,KAAK,GAA0B,OAAO;EAE1C;;;EA/DgB,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,UAAU;EACvB;;;EAE4B,KAAA,qBAAA,GACzB,EAAK,SAAS,MAAM,EACvB;;CAcA;CAEA,SAAS;EACP,OAAO,CAAI,wEAKW,KAAK,SAAS,eAClB,KAAK,SAAS,oCAEjB,KAAK,GAAQ,sHAQR,KAAK,WAAW,SAAS,QAAQ,6FAKR,CAAC,KAAK,SAAS;CAG9D;CAEA,oBAAoB;EAGlB,AAFA,MAAM,kBAAkB,GACxB,EAAgB,IAAI,GACpB,KAAK,WAAW,OAAO;CACzB;CAEA;AAKF;AAnDG,EAAA,CAAA,EAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,KAAA,CAAA,GAGzC,EAAA,CAAA,EAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,KAAA,CAAA,GAGzC,EAAA,CAAA,EAAS;CAAE,MAAM;CAAS,WAAW;AAAkB,CAAC,CAAA,GAAA,EAAA,WAAA,kBAAA,KAAA,CAAA,GAtB1D,IAAA,EAAA,CAAA,EAAM,GACN,EAAe,CAAA,GAAA,CAAA"}
@@ -7,6 +7,7 @@ declare const MenuItem_base: import("@nvidia-elements/forms/mixins").ButtonFormC
7
7
  * @since 0.11.0
8
8
  * @entrypoint \@nvidia-elements/core/menu
9
9
  * @slot - Label and supporting content for the menu option.
10
+ * @slot prefix - slot for prefix icon
10
11
  * @slot suffix - slot for suffix icon
11
12
  * @cssprop --background
12
13
  * @cssprop --border-radius
@@ -1,5 +1,5 @@
1
1
  //#region src/menu/menu-item.css?inline
2
- var e = ":host{--border-radius: var(--nve-ref-border-radius-xs);--border-background: var(--nve-sys-accent-secondary-background);--font-size: var(--nve-ref-font-size-100);--font-weight: var(--nve-ref-font-weight-medium);--color: var(--nve-sys-interaction-color);--padding: var(--nve-ref-size-200);--gap: var(--nve-ref-space-sm);--width: 100%;--min-height: var(--nve-ref-size-800);--line-height: 0;--cursor: pointer;--text-transform: capitalize;--opacity: 1;contain:layout;content-visibility:auto;contain-intrinsic-size:auto var(--min-height, initial)}[internal-host]{--_icon-color: var(--color);padding:var(--padding);color:var(--color);font-size:var(--font-size);font-weight:var(--font-weight);border-radius:var(--border-radius);gap:var(--gap);width:var(--width);min-width:var(--min-width);min-height:var(--min-height);cursor:var(--cursor);text-transform:var(--text-transform);outline-offset:calc(-1 * var(--nve-ref-size-50));opacity:var(--opacity);position:relative;display:flex;align-items:center;white-space:nowrap;border:0;text-align:left}::slotted(nve-icon){--color: var(--_icon-color)}:host(:hover),:host(:state(selected)){--color: var(--nve-sys-interaction-selected-color)}:host(:state(disabled)) [interaction-state]{--nve-sys-interaction-state-ratio: 0}:host(:state(disabled)){--opacity: var(--nve-ref-opacity-500);--cursor: not-allowed}:host(:state(current)){contain:none;content-visibility:initial;--color: var(--nve-sys-interaction-selected-color)}:host(:state(current)) [internal-host]{contain:none}:host([status=\"danger\"]){--nve-sys-interaction-state-base: var(--nve-sys-support-danger-muted-color);--nve-sys-interaction-selected-color: var(--nve-sys-support-danger-emphasis-color);--border-background: var(--nve-sys-support-danger-emphasis-color);--color: var(--nve-sys-support-danger-emphasis-color)}:host([status=\"danger\"]:hover) ::slotted(nve-icon){--color: var(--nve-sys-support-danger-emphasis-color) !important}:host(:state(current)) [internal-host]:after{width:var(--nve-ref-border-width-xl);border-radius:var(--border-radius);background:var(--border-background);content:\"\";display:block;position:absolute;top:var(--nve-ref-size-50);bottom:var(--nve-ref-size-50);left:calc(var(--nve-ref-size-200) * -1)}::slotted(nve-icon){--color: inherit !important}::slotted(a){text-decoration:var(--text-decoration)!important;color:var(--color)!important;gap:var(--gap)!important;display:flex!important;align-items:center!important;outline:0}::slotted(a):after{display:block;content:\" \";inset:0;position:absolute}::slotted(*:not(a,nve-icon)){pointer-events:none}::slotted(nve-divider){margin:0 calc(-1 * var(--padding))}::slotted([slot=\"suffix\"]){margin-inline-start:auto}";
2
+ var e = ":host{--border-radius: var(--nve-ref-border-radius-xs);--border-background: var(--nve-sys-accent-secondary-background);--font-size: var(--nve-ref-font-size-100);--font-weight: var(--nve-ref-font-weight-medium);--color: var(--nve-sys-interaction-color);--padding: var(--nve-ref-size-200);--gap: var(--nve-ref-space-sm);--width: 100%;--min-height: var(--nve-ref-size-800);--line-height: 0;--cursor: pointer;--text-transform: capitalize;--opacity: 1;contain:layout;content-visibility:auto;contain-intrinsic-size:auto var(--min-height, initial)}[internal-host]{--_icon-color: var(--color);padding:var(--padding);color:var(--color);font-size:var(--font-size);font-weight:var(--font-weight);border-radius:var(--border-radius);gap:var(--gap);width:var(--width);min-width:var(--min-width);min-height:var(--min-height);cursor:var(--cursor);text-transform:var(--text-transform);outline-offset:calc(-1 * var(--nve-ref-size-50));opacity:var(--opacity);position:relative;display:flex;align-items:center;white-space:nowrap;border:0;text-align:left}::slotted(nve-icon){--color: var(--_icon-color)}:host(:hover),:host(:state(selected)){--color: var(--nve-sys-interaction-selected-color)}:host(:state(disabled)) [interaction-state]{--nve-sys-interaction-state-ratio: 0}:host(:state(disabled)){--opacity: var(--nve-ref-opacity-500);--cursor: not-allowed}:host(:state(current)){contain:none;content-visibility:initial;--color: var(--nve-sys-interaction-selected-color)}:host(:state(current)) [internal-host]{contain:none}:host([status=\"danger\"]){--nve-sys-interaction-state-base: var(--nve-sys-support-danger-muted-color);--nve-sys-interaction-selected-color: var(--nve-sys-support-danger-emphasis-color);--border-background: var(--nve-sys-support-danger-emphasis-color);--color: var(--nve-sys-support-danger-emphasis-color)}:host([status=\"danger\"]:hover) ::slotted(nve-icon){--color: var(--nve-sys-support-danger-emphasis-color) !important}:host(:state(current)) [internal-host]:after{width:var(--nve-ref-border-width-xl);border-radius:var(--border-radius);background:var(--border-background);content:\"\";display:block;position:absolute;top:var(--nve-ref-size-50);bottom:var(--nve-ref-size-50);left:calc(var(--nve-ref-size-200) * -1)}::slotted(nve-icon){--color: inherit !important}::slotted(a){text-decoration:var(--text-decoration)!important;color:var(--color)!important;gap:var(--gap)!important;display:flex!important;align-items:center!important;outline:0}::slotted(a):after{display:block;content:\" \";inset:0;position:absolute}::slotted(*:not(a,nve-icon)){pointer-events:none}::slotted(nve-icon){cursor:var(--cursor)}::slotted(nve-divider){margin:0 calc(-1 * var(--padding))}::slotted([slot=\"suffix\"]){margin-inline-start:auto}";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.js","names":[],"sources":["../../src/menu/menu-item.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 --border-radius: var(--nve-ref-border-radius-xs);\n --border-background: var(--nve-sys-accent-secondary-background);\n --font-size: var(--nve-ref-font-size-100);\n --font-weight: var(--nve-ref-font-weight-medium);\n --color: var(--nve-sys-interaction-color);\n --padding: var(--nve-ref-size-200);\n --gap: var(--nve-ref-space-sm);\n --width: 100%;\n --min-height: var(--nve-ref-size-800);\n --line-height: 0;\n --cursor: pointer;\n --text-transform: capitalize;\n --opacity: 1;\n contain: layout;\n content-visibility: auto;\n contain-intrinsic-size: auto var(--min-height, initial);\n}\n\n[internal-host] {\n --_icon-color: var(--color);\n padding: var(--padding);\n color: var(--color);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n border-radius: var(--border-radius);\n gap: var(--gap);\n width: var(--width);\n min-width: var(--min-width);\n min-height: var(--min-height);\n cursor: var(--cursor);\n text-transform: var(--text-transform);\n outline-offset: calc(-1 * var(--nve-ref-size-50));\n opacity: var(--opacity);\n position: relative;\n display: flex;\n align-items: center;\n white-space: nowrap;\n border: 0;\n text-align: left;\n}\n\n::slotted(nve-icon) {\n --color: var(--_icon-color);\n}\n\n:host(:hover),\n:host(:state(selected)) {\n --color: var(--nve-sys-interaction-selected-color);\n}\n\n:host(:state(disabled)) [interaction-state] {\n --nve-sys-interaction-state-ratio: 0;\n}\n\n:host(:state(disabled)) {\n --opacity: var(--nve-ref-opacity-500);\n --cursor: not-allowed;\n}\n\n:host(:state(current)) {\n contain: none;\n content-visibility: initial;\n --color: var(--nve-sys-interaction-selected-color);\n}\n\n:host(:state(current)) [internal-host] {\n contain: none;\n}\n\n:host([status='danger']) {\n --nve-sys-interaction-state-base: var(--nve-sys-support-danger-muted-color);\n --nve-sys-interaction-selected-color: var(--nve-sys-support-danger-emphasis-color);\n --border-background: var(--nve-sys-support-danger-emphasis-color);\n --color: var(--nve-sys-support-danger-emphasis-color);\n}\n\n:host([status='danger']:hover) ::slotted(nve-icon) {\n --color: var(--nve-sys-support-danger-emphasis-color) !important;\n}\n\n:host(:state(current)) [internal-host]::after {\n width: var(--nve-ref-border-width-xl);\n border-radius: var(--border-radius);\n background: var(--border-background);\n content: '';\n display: block;\n position: absolute;\n top: var(--nve-ref-size-50);\n bottom: var(--nve-ref-size-50);\n left: calc(var(--nve-ref-size-200) * -1);\n}\n\n::slotted(nve-icon) {\n --color: inherit !important;\n}\n\n::slotted(a) {\n text-decoration: var(--text-decoration) !important;\n color: var(--color) !important;\n gap: var(--gap) !important;\n display: flex !important;\n align-items: center !important;\n outline: 0;\n}\n\n::slotted(a)::after {\n display: block;\n content: ' ';\n inset: 0;\n position: absolute;\n}\n\n::slotted(*:not(a, nve-icon)) {\n pointer-events: none;\n}\n\n::slotted(nve-divider) {\n margin: 0 calc(-1 * var(--padding));\n}\n\n::slotted([slot='suffix']) {\n margin-inline-start: auto;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"menu-item.js","names":[],"sources":["../../src/menu/menu-item.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 --border-radius: var(--nve-ref-border-radius-xs);\n --border-background: var(--nve-sys-accent-secondary-background);\n --font-size: var(--nve-ref-font-size-100);\n --font-weight: var(--nve-ref-font-weight-medium);\n --color: var(--nve-sys-interaction-color);\n --padding: var(--nve-ref-size-200);\n --gap: var(--nve-ref-space-sm);\n --width: 100%;\n --min-height: var(--nve-ref-size-800);\n --line-height: 0;\n --cursor: pointer;\n --text-transform: capitalize;\n --opacity: 1;\n contain: layout;\n content-visibility: auto;\n contain-intrinsic-size: auto var(--min-height, initial);\n}\n\n[internal-host] {\n --_icon-color: var(--color);\n padding: var(--padding);\n color: var(--color);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n border-radius: var(--border-radius);\n gap: var(--gap);\n width: var(--width);\n min-width: var(--min-width);\n min-height: var(--min-height);\n cursor: var(--cursor);\n text-transform: var(--text-transform);\n outline-offset: calc(-1 * var(--nve-ref-size-50));\n opacity: var(--opacity);\n position: relative;\n display: flex;\n align-items: center;\n white-space: nowrap;\n border: 0;\n text-align: left;\n}\n\n::slotted(nve-icon) {\n --color: var(--_icon-color);\n}\n\n:host(:hover),\n:host(:state(selected)) {\n --color: var(--nve-sys-interaction-selected-color);\n}\n\n:host(:state(disabled)) [interaction-state] {\n --nve-sys-interaction-state-ratio: 0;\n}\n\n:host(:state(disabled)) {\n --opacity: var(--nve-ref-opacity-500);\n --cursor: not-allowed;\n}\n\n:host(:state(current)) {\n contain: none;\n content-visibility: initial;\n --color: var(--nve-sys-interaction-selected-color);\n}\n\n:host(:state(current)) [internal-host] {\n contain: none;\n}\n\n:host([status='danger']) {\n --nve-sys-interaction-state-base: var(--nve-sys-support-danger-muted-color);\n --nve-sys-interaction-selected-color: var(--nve-sys-support-danger-emphasis-color);\n --border-background: var(--nve-sys-support-danger-emphasis-color);\n --color: var(--nve-sys-support-danger-emphasis-color);\n}\n\n:host([status='danger']:hover) ::slotted(nve-icon) {\n --color: var(--nve-sys-support-danger-emphasis-color) !important;\n}\n\n:host(:state(current)) [internal-host]::after {\n width: var(--nve-ref-border-width-xl);\n border-radius: var(--border-radius);\n background: var(--border-background);\n content: '';\n display: block;\n position: absolute;\n top: var(--nve-ref-size-50);\n bottom: var(--nve-ref-size-50);\n left: calc(var(--nve-ref-size-200) * -1);\n}\n\n::slotted(nve-icon) {\n --color: inherit !important;\n}\n\n::slotted(a) {\n text-decoration: var(--text-decoration) !important;\n color: var(--color) !important;\n gap: var(--gap) !important;\n display: flex !important;\n align-items: center !important;\n outline: 0;\n}\n\n::slotted(a)::after {\n display: block;\n content: ' ';\n inset: 0;\n position: absolute;\n}\n\n::slotted(*:not(a, nve-icon)) {\n pointer-events: none;\n}\n\n::slotted(nve-icon) {\n cursor: var(--cursor);\n}\n\n::slotted(nve-divider) {\n margin: 0 calc(-1 * var(--padding));\n}\n\n::slotted([slot='suffix']) {\n margin-inline-start: auto;\n}\n"],"mappings":""}
@@ -13,7 +13,7 @@ var c = class extends s(i) {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-menu-item",
16
- version: "2.10.0",
16
+ version: "2.11.1",
17
17
  parents: ["nve-menu"]
18
18
  };
19
19
  }
@@ -21,7 +21,7 @@ var c = class extends s(i) {
21
21
  this.elementDefinitions = {};
22
22
  }
23
23
  render() {
24
- return a`<div internal-host interaction-state focus-within part="_internal"><slot></slot><slot name="suffix"></slot></div>`;
24
+ return a`<div internal-host interaction-state focus-within part="_internal"><slot name="prefix" part="_prefix"></slot><slot part="_slot"></slot><slot name="suffix" part="_suffix"></slot></div>`;
25
25
  }
26
26
  constructor() {
27
27
  super(), this.type = "button";
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item2.js","names":[],"sources":["../../src/menu/menu-item.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { ButtonFormControlMixin } from '@nvidia-elements/forms/mixins';\nimport { useStyles, audit } from '@nvidia-elements/core/internal';\nimport styles from './menu-item.css?inline';\n\n/**\n * @element nve-menu-item\n * @description Represents a selectable option within a menu, providing an interactive button for navigation or actions.\n * @documentation https://nvidia.github.io/elements/docs/elements/menu/\n * @since 0.11.0\n * @entrypoint \\@nvidia-elements/core/menu\n * @slot - Label and supporting content for the menu option.\n * @slot suffix - slot for suffix icon\n * @cssprop --background\n * @cssprop --border-radius\n * @cssprop --border-background\n * @cssprop --font-size\n * @cssprop --font-weight\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --width\n * @cssprop --min-height\n * @cssprop --line-height\n * @cssprop --cursor\n * @cssprop --opacity\n * @cssprop --text-transform\n\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\nexport class MenuItem extends ButtonFormControlMixin(LitElement) {\n static styles = useStyles([styles]);\n\n /** Applies danger styling to destructive or high-risk menu actions. */\n @property({ type: String, reflect: true }) status: 'danger';\n\n static readonly metadata = {\n tag: 'nve-menu-item',\n version: '0.0.0',\n parents: ['nve-menu']\n };\n\n static elementDefinitions = {};\n\n render() {\n return html`\n <div internal-host interaction-state focus-within part=\"_internal\">\n <slot></slot>\n <slot name=\"suffix\"></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 = 'menuitem';\n }\n}\n"],"mappings":";;;;;;;;AAmCO,IAAM,IAAN,cAAuB,EAAuB,CAAU,CAAC,CAAC;;EAC/C,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAKP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,SAAS,CAAC,UAAU;EACtB;;;EAE4B,KAAA,qBAAA,CAAC;;CAE7B,SAAS;EACP,OAAO,CAAI;CAMb;CAEA,cAAc;EAEZ,AADA,MAAM,GACN,KAAK,OAAO;CACd;CAEA,oBAAoB;EAElB,AADA,MAAM,kBAAkB,GACxB,KAAK,WAAW,OAAO;CACzB;AACF;AA5BG,EAAA,CAAA,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,GAL1C,IAAA,EAAA,CAAA,EAAM,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"menu-item2.js","names":[],"sources":["../../src/menu/menu-item.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { ButtonFormControlMixin } from '@nvidia-elements/forms/mixins';\nimport { useStyles, audit } from '@nvidia-elements/core/internal';\nimport styles from './menu-item.css?inline';\n\n/**\n * @element nve-menu-item\n * @description Represents a selectable option within a menu, providing an interactive button for navigation or actions.\n * @documentation https://nvidia.github.io/elements/docs/elements/menu/\n * @since 0.11.0\n * @entrypoint \\@nvidia-elements/core/menu\n * @slot - Label and supporting content for the menu option.\n * @slot prefix - slot for prefix icon\n * @slot suffix - slot for suffix icon\n * @cssprop --background\n * @cssprop --border-radius\n * @cssprop --border-background\n * @cssprop --font-size\n * @cssprop --font-weight\n * @cssprop --color\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --width\n * @cssprop --min-height\n * @cssprop --line-height\n * @cssprop --cursor\n * @cssprop --opacity\n * @cssprop --text-transform\n\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\nexport class MenuItem extends ButtonFormControlMixin(LitElement) {\n static styles = useStyles([styles]);\n\n /** Applies danger styling to destructive or high-risk menu actions. */\n @property({ type: String, reflect: true }) status: 'danger';\n\n static readonly metadata = {\n tag: 'nve-menu-item',\n version: '0.0.0',\n parents: ['nve-menu']\n };\n\n static elementDefinitions = {};\n\n render() {\n return html`\n <div internal-host interaction-state focus-within part=\"_internal\">\n <slot name=\"prefix\" part=\"_prefix\"></slot>\n <slot part=\"_slot\"></slot>\n <slot name=\"suffix\" part=\"_suffix\"></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 = 'menuitem';\n }\n}\n"],"mappings":";;;;;;;;AAoCO,IAAM,IAAN,cAAuB,EAAuB,CAAU,CAAC,CAAC;;EAC/C,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAKP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,SAAS,CAAC,UAAU;EACtB;;;EAE4B,KAAA,qBAAA,CAAC;;CAE7B,SAAS;EACP,OAAO,CAAI;CAOb;CAEA,cAAc;EAEZ,AADA,MAAM,GACN,KAAK,OAAO;CACd;CAEA,oBAAoB;EAElB,AADA,MAAM,kBAAkB,GACxB,KAAK,WAAW,OAAO;CACzB;AACF;AA7BG,EAAA,CAAA,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,GAL1C,IAAA,EAAA,CAAA,EAAM,CAAA,GAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { LitElement } from 'lit';
2
- import type { KeynavListConfig } from '@nvidia-elements/core/internal';
2
+ import type { Density, KeynavListConfig } from '@nvidia-elements/core/internal';
3
3
  /**
4
4
  * @element nve-menu
5
5
  * @description A menu offers a list of choices to the user, such as a set of actions or functions. Choosing an item in a menu typically opens a sub menu, or invokes a command.
@@ -25,6 +25,10 @@ export declare class Menu extends LitElement {
25
25
  children: string[];
26
26
  };
27
27
  static elementDefinitions: {};
28
+ /**
29
+ * Determines if the menu is in a compact layout. This hides all menu item content except the prefix icon slot.
30
+ */
31
+ density?: Density;
28
32
  /** @private */
29
33
  get keynavListConfig(): KeynavListConfig;
30
34
  /** @private */
@@ -33,4 +37,5 @@ export declare class Menu extends LitElement {
33
37
  render(): import("lit-html").TemplateResult<1>;
34
38
  firstUpdated(): Promise<void>;
35
39
  connectedCallback(): void;
40
+ disconnectedCallback(): void;
36
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu.examples.js","names":[],"sources":["../../src/menu/menu.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\nimport '@nvidia-elements/core/icon/define.js';\nimport '@nvidia-elements/core/menu/define.js';\nimport '@nvidia-elements/core/logo/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/drawer/define.js';\nimport '@nvidia-elements/core/card/define.js';\nimport '@nvidia-elements/core/tooltip/define.js';\nimport '@nvidia-elements/core/page/define.js';\n\nexport default {\n title: 'Elements/Menu',\n component: 'nve-menu',\n};\n\n/**\n * @summary Basic menu with simple text items for the default menu structure and styling.\n */\nexport const Default = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with keyboard navigation and ARIA disclosure pattern inside a dropdown. Use when menu items need accessible focus management and arrow key navigation.\n * @tags pattern\n */\nexport const Dropdown = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> settings</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> favorites</nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> logout</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Menu with a selected item showing the visual state for user-selected options.\n */\nexport const Selected = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item selected>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with a current page item showing the visual state for the active/current page in navigation.\n */\nexport const Current = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary By default Menu will show a blue border on the selected item. You can change the border color by setting `--border-background` on the `<nve-menu-item>`\n * @tags test-case\n */\nexport const BorderBackground = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\" style=\"--border-background: var(--nve-ref-color-brand-green-900);\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with disabled items showing unavailable options while maintaining visual context.\n * @tags test-case\n */\nexport const Disabled = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item disabled>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with icons to add visual context and improve usability.\n */\nexport const Icons = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> settings</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> favorites</nve-menu-item>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> logout</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with links for navigation functionality within menu structures.\n */\nexport const Links = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon><a href=\"#\">profile</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> <a href=\"#\">settings</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> <a href=\"#\">favorites</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> <a href=\"#\">logout</a></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu item features a default slot for content, along with a suffix slot for displaying elements such as keyboard shortcuts at the end of the menu item container.\n */\nexport const Suffix = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><kbd slot=\"suffix\" nve-text=\"code flat\">CMD + C</kbd></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with constrained height showing scrollable behavior when content exceeds container limits.\n * @tags test-case\n */\nexport const Scroll = {\n render: () => html`\n <nve-menu style=\"--max-height: 150px\">\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n <nve-menu-item>item 5</nve-menu-item>\n <nve-menu-item>item 6</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Use a dropdown menu with search and branded logos for application selection interfaces.\n * @tags pattern\n */\nexport const Complex = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-search rounded>\n <input type=\"search\" placeholder=\"search tools\" aria-label=\"search apps\" />\n </nve-search>\n <nve-menu>\n <nve-menu-item>\n <nve-logo color=\"pink-rose\" size=\"sm\">Db</nve-logo> Debugger\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"blue-cobalt\" size=\"sm\">TM</nve-logo> Task Manager\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"yellow-nova\" size=\"sm\">CI</nve-logo> CI Services\n </nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item>\n <nve-logo size=\"sm\">NV</nve-logo> All Apps\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Use a navigation drawer to overlay page content for out-of-context navigation.\n * @tags pattern\n */\nexport const VerticalNavigationDrawer = {\n render: () => html`\n <nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <main nve-layout=\"column gap:md pad:md\">\n <nve-button popovertarget=\"menu-drawer\">toggle drawer</nve-button>\n </main>\n <nve-drawer position=\"right\" size=\"sm\" modal closable id=\"menu-drawer\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n </nve-drawer-content>\n </nve-drawer>\n </nve-page>\n `\n};\n\n/**\n * @summary Use an inline navigation panel to push page content aside when navigation is contextual to the page.\n * @tags pattern\n */\nexport const VerticalNavigationPanel = {\n render: () => html`\n<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <nve-page-panel slot=\"left\" expanded style=\"max-width:280px\">\n <nve-page-panel-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:md pad:md\">\n <p nve-text=\"body\">Content</p>\n </main>\n</nve-page>\n `\n};\n\n/**\n * @summary Use a tooltip on a menu item to provide extra context and warnings.\n * @tags pattern test-case\n */\nexport const ItemTooltip = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-tooltip\" id=\"menu-item-2\">\n item 2\n <nve-icon id=\"menu-anchor\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon>\n <nve-tooltip anchor=\"menu-anchor\" id=\"menu-tooltip\" style=\"interest-delay-start: 2s\">This is a warning tooltip</nve-tooltip>\n </nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n </nve-menu>\n `\n}\n\n/**\n * @summary Menu items with danger status styling for destructive actions like delete or logout operations.\n */\nexport const DangerStatus = {\n render: () => html`\n <nve-menu>\n <nve-menu-item status=\"danger\">default</nve-menu-item>\n <nve-menu-item status=\"danger\" disabled>disabled</nve-menu-item>\n <nve-menu-item status=\"danger\" selected>selected</nve-menu-item>\n <nve-menu-item status=\"danger\" current=\"page\">current</nve-menu-item>\n <nve-menu-item status=\"danger\"><nve-icon name=\"gear\"></nve-icon> icon left</nve-menu-item>\n <nve-menu-item status=\"danger\">icon right <nve-icon id=\"warning-icon\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon></nve-menu-item>\n </nve-menu>\n `\n}\n"],"mappings":";AAGA,IAAA,IAAS"}
1
+ {"version":3,"file":"menu.examples.js","names":[],"sources":["../../src/menu/menu.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/dot/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\nimport '@nvidia-elements/core/icon/define.js';\nimport '@nvidia-elements/core/menu/define.js';\nimport '@nvidia-elements/core/logo/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/drawer/define.js';\nimport '@nvidia-elements/core/card/define.js';\nimport '@nvidia-elements/core/tooltip/define.js';\nimport '@nvidia-elements/core/page/define.js';\n\nexport default {\n title: 'Elements/Menu',\n component: 'nve-menu'\n};\n\n/**\n * @summary Basic menu with simple text items for the default menu structure and styling.\n */\nexport const Default = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with content slots for icons, dots, and other elements.\n * @tags test-case\n */\nexport const ContentSlots = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Code <nve-dot slot=\"suffix\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"checklist\" slot=\"prefix\"></nve-icon> Lint <nve-dot slot=\"suffix\" status=\"accent\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"terminal\" slot=\"prefix\"></nve-icon> CLI <nve-dot slot=\"suffix\" status=\"success\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"person\" slot=\"prefix\"></nve-icon> Profile <nve-dot slot=\"suffix\" status=\"warning\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"key\" slot=\"prefix\"></nve-icon> Access <nve-dot slot=\"suffix\" status=\"danger\" size=\"sm\"></nve-dot></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Dynamically toggle the compact state of a menu.\n * @tags test-case\n */\nexport const Compact = {\n render: () => html`\n <nve-switch>\n <label>Compact</label>\n <input id=\"compact-switch\" type=\"checkbox\" aria-label=\"compact menu\" checked />\n </nve-switch>\n <nve-menu density=\"compact\" id=\"compact-menu\">\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Code</nve-menu-item>\n <nve-menu-item><nve-icon name=\"checklist\" slot=\"prefix\"></nve-icon> Lint</nve-menu-item>\n <nve-menu-item><nve-icon name=\"terminal\" slot=\"prefix\"></nve-icon> CLI</nve-menu-item>\n <nve-menu-item><nve-icon name=\"person\" slot=\"prefix\"></nve-icon> Profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"key\" slot=\"prefix\"></nve-icon> Access</nve-menu-item>\n </nve-menu>\n <script type=\"module\">\n document.querySelector('#compact-switch').addEventListener('change', e => {\n document.querySelector('#compact-menu').density = e.target.checked ? 'compact' : 'default';\n }); \n </script>\n `\n};\n\n/**\n * @summary An explicitly expanded group keeps navigation state controlled by the application without enabling automatic state changes. Use when the application owns expansion state.\n */\nexport const ExpandedNavigation = {\n render: () => html`\n <nve-menu-group expanded style=\"--width: 240px\">\n Resources\n <nve-menu>\n <nve-menu-item>Documentation</nve-menu-item>\n <nve-menu-item>Examples</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n `\n};\n\n/**\n * @summary A disabled menu-group header preserves its current expanded content while preventing user toggling. Use when group availability depends on application state.\n */\nexport const UnavailableNavigation = {\n render: () => html`\n <nve-menu-group expanded disabled style=\"--width: 240px\">\n Provisioning\n <nve-menu>\n <nve-menu-item>Clusters</nve-menu-item>\n <nve-menu-item>Storage</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n `\n};\n\n/**\n * @summary Menu with keyboard navigation and ARIA disclosure pattern inside a dropdown. Use when menu items need accessible focus management and arrow key navigation.\n * @tags pattern\n */\nexport const Dropdown = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> settings</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> favorites</nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> logout</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Menu with a selected item showing the visual state for user-selected options.\n */\nexport const Selected = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item selected>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with a current page item showing the visual state for the active/current page in navigation.\n */\nexport const Current = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary By default Menu will show a blue border on the selected item. You can change the border color by setting `--border-background` on the `<nve-menu-item>`\n * @tags test-case\n */\nexport const BorderBackground = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\" style=\"--border-background: var(--nve-ref-color-brand-green-900);\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with disabled items showing unavailable options while maintaining visual context.\n * @tags test-case\n */\nexport const Disabled = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item disabled>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with links for navigation functionality within menu structures.\n */\nexport const Links = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"person\"></nve-icon><a href=\"#\">profile</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"gear\"></nve-icon> <a href=\"#\">settings</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"star\"></nve-icon> <a href=\"#\">favorites</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"logout\"></nve-icon> <a href=\"#\">logout</a></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu item features a default slot for content, along with a suffix slot for displaying elements such as keyboard shortcuts at the end of the menu item container.\n */\nexport const Suffix = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>Copy<kbd slot=\"suffix\" nve-text=\"code flat\">CMD + C</kbd></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with constrained height showing scrollable behavior when content exceeds container limits.\n * @tags test-case\n */\nexport const Scroll = {\n render: () => html`\n <nve-menu style=\"--max-height: 150px\">\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n <nve-menu-item>item 5</nve-menu-item>\n <nve-menu-item>item 6</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Use a dropdown menu with search and branded logos for application selection interfaces.\n * @tags pattern\n */\nexport const Complex = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-search rounded>\n <input type=\"search\" placeholder=\"search tools\" aria-label=\"search apps\" />\n </nve-search>\n <nve-menu>\n <nve-menu-item>\n <nve-logo color=\"pink-rose\" size=\"sm\">Db</nve-logo> Debugger\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"blue-cobalt\" size=\"sm\">TM</nve-logo> Task Manager\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"yellow-nova\" size=\"sm\">CI</nve-logo> CI Services\n </nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item>\n <nve-logo size=\"sm\">NV</nve-logo> All Apps\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Vertical navigation menu groups with and without icons. For deeply nested navigation use the `nve-tree` component.\n */\nexport const VerticalNavigation = {\n render: () => html`\n <div nve-layout=\"row gap:xl\">\n <nav style=\"width: 175px\">\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\"><nve-icon name=\"home\" slot=\"prefix\"></nve-icon> Getting Started</nve-menu-item>\n <nve-menu-item><nve-icon name=\"bell\" slot=\"prefix\"></nve-icon> Alerts</nve-menu-item>\n <nve-menu-item><nve-icon name=\"add\" slot=\"prefix\"></nve-icon> Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item><nve-icon name=\"office-building\" slot=\"prefix\"></nve-icon> Catalog</nve-menu-item>\n <nve-menu-item><nve-icon name=\"view-as-grid\" slot=\"prefix\"></nve-icon> Dashboards</nve-menu-item>\n <nve-menu-item><nve-icon name=\"rectangle-stack-horizontal\" slot=\"prefix\"></nve-icon> Volumes</nve-menu-item>\n <nve-menu-item><nve-icon name=\"layers\" slot=\"prefix\"></nve-icon> Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Queries</nve-menu-item>\n <nve-menu-item><nve-icon name=\"doc-checkmark\" slot=\"prefix\"></nve-icon> Notebooks</nve-menu-item>\n <nve-menu-item><nve-icon name=\"branch\" slot=\"prefix\"></nve-icon> Pipelines</nve-menu-item>\n <nve-menu-item><nve-icon name=\"beaker\" slot=\"prefix\"></nve-icon> Experiments</nve-menu-item>\n <nve-menu-item><nve-icon name=\"clock\" slot=\"prefix\"></nve-icon> Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nav>\n\n <nav style=\"width: 175px\">\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item >Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nav>\n </div>\n `\n};\n\n/**\n * @summary Use a navigation drawer to overlay page content for out-of-context navigation.\n * @tags pattern\n */\nexport const VerticalNavigationDrawer = {\n render: () => html`\n <nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <main nve-layout=\"column gap:md pad:md\">\n <nve-button popovertarget=\"menu-drawer\">toggle drawer</nve-button>\n </main>\n <nve-drawer position=\"right\" size=\"sm\" modal closable id=\"menu-drawer\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item >Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nve-drawer-content>\n </nve-drawer>\n </nve-page>\n `\n};\n\n/**\n * @summary Use an inline navigation panel to push page content aside when navigation is contextual to the page.\n * @tags pattern\n */\nexport const VerticalNavigationPanel = {\n render: () => html`\n<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <nve-page-panel slot=\"left\" size=\"sm\" expanded>\n <nve-page-panel-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item >Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:md pad:md\">\n <p nve-text=\"body\">Content</p>\n </main>\n</nve-page>\n `\n};\n\n/**\n * @summary Use a tooltip on a menu item to provide extra context and warnings.\n * @tags pattern test-case\n */\nexport const ItemTooltip = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-tooltip\" id=\"menu-item-2\">\n item 2\n <nve-icon id=\"menu-anchor\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon>\n <nve-tooltip anchor=\"menu-anchor\" id=\"menu-tooltip\" style=\"interest-delay-start: 2s\">This is a warning tooltip</nve-tooltip>\n </nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with danger status styling for destructive actions like delete or logout operations.\n */\nexport const DangerStatus = {\n render: () => html`\n <nve-menu>\n <nve-menu-item status=\"danger\">default</nve-menu-item>\n <nve-menu-item status=\"danger\" disabled>disabled</nve-menu-item>\n <nve-menu-item status=\"danger\" selected>selected</nve-menu-item>\n <nve-menu-item status=\"danger\" current=\"page\">current</nve-menu-item>\n <nve-menu-item status=\"danger\"><nve-icon name=\"gear\"></nve-icon> icon left</nve-menu-item>\n <nve-menu-item status=\"danger\">icon right <nve-icon id=\"warning-icon\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon></nve-menu-item>\n </nve-menu>\n `\n};\n"],"mappings":";AAGA,IAAA,IAAS"}