@nvidia-elements/core 2.12.0 → 2.12.2

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 (175) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/accordion/accordion.examples.json +1 -1
  3. package/dist/accordion/accordion2.js +4 -4
  4. package/dist/alert/alert-group2.js +1 -1
  5. package/dist/alert/alert.examples.json +6 -6
  6. package/dist/alert/alert2.js +1 -1
  7. package/dist/avatar/avatar-group2.js +1 -1
  8. package/dist/avatar/avatar2.js +1 -1
  9. package/dist/badge/badge2.js +1 -1
  10. package/dist/breadcrumb/breadcrumb2.js +1 -1
  11. package/dist/bundles/index.d.ts +467 -467
  12. package/dist/bundles/index.js +2 -2
  13. package/dist/button/button.examples.json +3 -3
  14. package/dist/button/button2.js +1 -1
  15. package/dist/button-group/button-group2.js +1 -1
  16. package/dist/card/card.examples.json +2 -2
  17. package/dist/card/card2.js +4 -4
  18. package/dist/chat-message/chat-message.examples.json +1 -1
  19. package/dist/chat-message/chat-message2.js +1 -1
  20. package/dist/checkbox/checkbox-group2.js +1 -1
  21. package/dist/checkbox/checkbox.examples.json +5 -5
  22. package/dist/checkbox/checkbox2.js +1 -1
  23. package/dist/color/color.examples.json +2 -2
  24. package/dist/color/color2.js +1 -1
  25. package/dist/combobox/combobox.examples.json +7 -7
  26. package/dist/combobox/combobox2.js +55 -53
  27. package/dist/combobox/combobox2.js.map +1 -1
  28. package/dist/copy-button/copy-button.examples.json +1 -1
  29. package/dist/copy-button/copy-button2.js +1 -1
  30. package/dist/custom-elements.json +28 -14
  31. package/dist/data.snippets.json +18 -18
  32. package/dist/date/date.examples.json +3 -3
  33. package/dist/date/date2.js +1 -1
  34. package/dist/datetime/datetime.examples.json +2 -2
  35. package/dist/datetime/datetime2.js +1 -1
  36. package/dist/dialog/dialog-footer2.js +1 -1
  37. package/dist/dialog/dialog-header2.js +1 -1
  38. package/dist/dialog/dialog.examples.json +7 -7
  39. package/dist/dialog/dialog2.js +1 -1
  40. package/dist/divider/divider2.js +1 -1
  41. package/dist/dot/dot2.js +1 -1
  42. package/dist/drawer/drawer-content2.js +1 -1
  43. package/dist/drawer/drawer-footer2.js +1 -1
  44. package/dist/drawer/drawer-header2.js +1 -1
  45. package/dist/drawer/drawer.examples.json +5 -5
  46. package/dist/drawer/drawer2.js +1 -1
  47. package/dist/dropdown/dropdown-footer2.js +1 -1
  48. package/dist/dropdown/dropdown-header2.js +1 -1
  49. package/dist/dropdown/dropdown.examples.json +3 -3
  50. package/dist/dropdown/dropdown2.js +1 -1
  51. package/dist/dropdown-group/dropdown-group.js +1 -1
  52. package/dist/dropzone/dropzone.examples.json +2 -2
  53. package/dist/dropzone/dropzone2.js +1 -1
  54. package/dist/file/file.examples.json +2 -2
  55. package/dist/file/file2.js +1 -1
  56. package/dist/format-bytes/format-bytes2.js +1 -1
  57. package/dist/format-datetime/format-datetime2.js +1 -1
  58. package/dist/format-number/format-number2.js +1 -1
  59. package/dist/format-relative-time/format-relative-time2.js +1 -1
  60. package/dist/format-truncate/format-truncate2.js +1 -1
  61. package/dist/forms/control/control.examples.json +3 -3
  62. package/dist/forms/control/control2.js +1 -1
  63. package/dist/forms/control-group/control-group2.js +1 -1
  64. package/dist/forms/control-message/control-message2.js +1 -1
  65. package/dist/forms/forms.examples.json +7 -7
  66. package/dist/forms/validation.examples.json +4 -4
  67. package/dist/gauge/gauge.examples.json +2 -2
  68. package/dist/gauge/gauge2.js +1 -1
  69. package/dist/grid/cell/cell2.js +1 -1
  70. package/dist/grid/column/column2.js +1 -1
  71. package/dist/grid/footer/footer2.js +1 -1
  72. package/dist/grid/grid.examples.json +6 -6
  73. package/dist/grid/grid2.js +1 -1
  74. package/dist/grid/header/header2.js +1 -1
  75. package/dist/grid/placeholder/placeholder2.js +1 -1
  76. package/dist/grid/row/row2.js +1 -1
  77. package/dist/icon/icon.examples.json +1 -1
  78. package/dist/icon/icon2.js +2 -2
  79. package/dist/icon/icons.d.ts +2 -1
  80. package/dist/icon/icons.js.map +1 -1
  81. package/dist/icon-button/icon-button2.js +1 -1
  82. package/dist/index.js +1 -1
  83. package/dist/input/input-group.examples.json +3 -3
  84. package/dist/input/input-group2.js +1 -1
  85. package/dist/input/input.examples.json +2 -2
  86. package/dist/input/input2.js +1 -1
  87. package/dist/internal/controllers/gesture.controller.examples.json +1 -1
  88. package/dist/internal/controllers/popover.examples.json +5 -5
  89. package/dist/internal/controllers/type-popover.controller.examples.json +1 -1
  90. package/dist/internal/services/global.service.js +1 -1
  91. package/dist/internal/types/icons.d.ts +1 -0
  92. package/dist/internal/types/index.d.ts +1 -1
  93. package/dist/internal/types/index.js.map +1 -1
  94. package/dist/internal/utils/dom.js +18 -10
  95. package/dist/internal/utils/dom.js.map +1 -1
  96. package/dist/logo/logo2.js +1 -1
  97. package/dist/menu/menu-group2.js +1 -1
  98. package/dist/menu/menu-item2.js +1 -1
  99. package/dist/menu/menu.examples.json +1 -1
  100. package/dist/menu/menu2.js +1 -1
  101. package/dist/month/month.examples.json +2 -2
  102. package/dist/month/month2.js +1 -1
  103. package/dist/notification/notification-group2.js +1 -1
  104. package/dist/notification/notification.examples.json +5 -5
  105. package/dist/notification/notification2.js +1 -1
  106. package/dist/page/page-panel/page-panel-content2.js +1 -1
  107. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  108. package/dist/page/page-panel/page-panel-header2.js +1 -1
  109. package/dist/page/page-panel/page-panel2.js +1 -1
  110. package/dist/page/page.examples.json +25 -25
  111. package/dist/page/page2.js +1 -1
  112. package/dist/page-header/page-header2.js +1 -1
  113. package/dist/page-loader/page-loader.examples.json +1 -1
  114. package/dist/page-loader/page-loader2.js +1 -1
  115. package/dist/pagination/pagination.examples.json +2 -2
  116. package/dist/pagination/pagination2.js +1 -1
  117. package/dist/panel/panel.examples.json +7 -7
  118. package/dist/panel/panel2.js +4 -4
  119. package/dist/password/password.examples.json +2 -2
  120. package/dist/password/password2.js +1 -1
  121. package/dist/preferences-input/preferences-input.examples.json +1 -1
  122. package/dist/preferences-input/preferences-input2.js +1 -1
  123. package/dist/progress-bar/progress-bar2.js +1 -1
  124. package/dist/progress-ring/progress-ring.examples.json +5 -5
  125. package/dist/progress-ring/progress-ring2.js +1 -1
  126. package/dist/progressive-filter-chip/progressive-filter-chip.examples.json +1 -1
  127. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  128. package/dist/pulse/pulse2.js +1 -1
  129. package/dist/radio/radio-group2.js +1 -1
  130. package/dist/radio/radio.examples.json +5 -5
  131. package/dist/radio/radio2.js +1 -1
  132. package/dist/range/range.examples.json +2 -2
  133. package/dist/range/range2.js +1 -1
  134. package/dist/resize-handle/resize-handle.examples.json +2 -2
  135. package/dist/resize-handle/resize-handle2.js +1 -1
  136. package/dist/search/search.examples.json +2 -2
  137. package/dist/search/search2.js +1 -1
  138. package/dist/select/select.examples.json +8 -8
  139. package/dist/select/select2.js +1 -1
  140. package/dist/skeleton/skeleton2.js +1 -1
  141. package/dist/sort-button/sort-button2.js +1 -1
  142. package/dist/sparkline/sparkline2.js +1 -1
  143. package/dist/star-rating/star-rating2.js +1 -1
  144. package/dist/steps/steps2.js +2 -2
  145. package/dist/switch/switch-group2.js +1 -1
  146. package/dist/switch/switch.examples.json +5 -5
  147. package/dist/switch/switch2.js +1 -1
  148. package/dist/tabs/tabs-group2.js +1 -1
  149. package/dist/tabs/tabs.examples.json +1 -1
  150. package/dist/tabs/tabs2.js +2 -2
  151. package/dist/tag/tag2.js +1 -1
  152. package/dist/textarea/textarea.examples.json +2 -2
  153. package/dist/textarea/textarea2.js +1 -1
  154. package/dist/time/time.examples.json +2 -2
  155. package/dist/time/time2.js +1 -1
  156. package/dist/toast/toast.examples.json +1 -1
  157. package/dist/toast/toast2.js +1 -1
  158. package/dist/toggletip/toggletip-footer2.js +1 -1
  159. package/dist/toggletip/toggletip-header2.js +1 -1
  160. package/dist/toggletip/toggletip.examples.json +5 -5
  161. package/dist/toggletip/toggletip2.js +1 -1
  162. package/dist/toolbar/toolbar.examples.json +4 -4
  163. package/dist/toolbar/toolbar2.js +1 -1
  164. package/dist/tooltip/tooltip.examples.json +6 -6
  165. package/dist/tooltip/tooltip2.js +1 -1
  166. package/dist/tree/tree-node2.js +1 -1
  167. package/dist/tree/tree.examples.json +2 -2
  168. package/dist/tree/tree2.js +1 -1
  169. package/dist/viewport/viewport-gridlines2.js +1 -1
  170. package/dist/viewport/viewport-minimap2.js +1 -1
  171. package/dist/viewport/viewport.examples.json +9 -9
  172. package/dist/viewport/viewport2.js +1 -1
  173. package/dist/week/week.examples.json +3 -3
  174. package/dist/week/week2.js +1 -1
  175. package/package.json +2 -1
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "id": "forms-kitchen-sink",
7
7
  "name": "KitchenSink",
8
- "template": "<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n",
8
+ "template": "<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly=\"\">.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n",
9
9
  "summary": "Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns use for a complete form design reference.",
10
10
  "description": "",
11
11
  "composition": true,
@@ -16,7 +16,7 @@
16
16
  {
17
17
  "id": "forms-vertical",
18
18
  "name": "Vertical",
19
- "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input>\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-search>\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n <nve-password>\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n <nve-select>\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-range>\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n <nve-checkbox-group>\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n <nve-radio-group>\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n <nve-switch-group>\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n <nve-select>\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-textarea>\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
19
+ "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input>\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search>\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password>\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select>\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range>\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group>\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group>\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group>\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select>\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea>\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
20
20
  "summary": "Traditional vertical form layout with labels above inputs, providing clear visual hierarchy and optimal readability for complex forms.",
21
21
  "description": "",
22
22
  "composition": true,
@@ -25,7 +25,7 @@
25
25
  {
26
26
  "id": "forms-vertical-inline",
27
27
  "name": "VerticalInline",
28
- "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
28
+ "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
29
29
  "summary": "Compact vertical layout with inline labels and controls, maximizing space efficiency while maintaining form clarity and accessibility.",
30
30
  "description": "",
31
31
  "composition": true,
@@ -34,7 +34,7 @@
34
34
  {
35
35
  "id": "forms-horizontal",
36
36
  "name": "Horizontal",
37
- "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-search layout=\"horizontal\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n <nve-password layout=\"horizontal\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n <nve-select layout=\"horizontal\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-range layout=\"horizontal\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n <nve-checkbox-group layout=\"horizontal\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n <nve-radio-group layout=\"horizontal\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n <nve-switch-group layout=\"horizontal\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n <nve-select layout=\"horizontal\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-textarea layout=\"horizontal\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
37
+ "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
38
38
  "summary": "Horizontal form layout with labels beside inputs, creating efficient use of horizontal space and familiar desktop form patterns.",
39
39
  "description": "",
40
40
  "composition": true,
@@ -43,7 +43,7 @@
43
43
  {
44
44
  "id": "forms-horizontal-inline",
45
45
  "name": "HorizontalInline",
46
- "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-search layout=\"horizontal-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n <nve-password layout=\"horizontal-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n <nve-select layout=\"horizontal-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-range layout=\"horizontal-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n <nve-checkbox-group layout=\"horizontal-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n <nve-radio-group layout=\"horizontal-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n <nve-switch-group layout=\"horizontal-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n <nve-select layout=\"horizontal-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-textarea layout=\"horizontal-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
46
+ "template": "<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n",
47
47
  "summary": "Space-efficient horizontal layout with inline labels, ideal for dense forms with tight vertical space where quick scanning matters.",
48
48
  "description": "",
49
49
  "composition": true,
@@ -52,7 +52,7 @@
52
52
  {
53
53
  "id": "forms-fit-text",
54
54
  "name": "FitText",
55
- "template": "<section nve-layout=\"column gap:md full\">\n <nve-date fit-text>\n <label>date</label>\n <input type=\"date\" value=\"2017-06-01\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n <nve-input fit-text>\n <label>label</label>\n <input value=\"123456789012345678901234567890\" />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-select fit-text>\n <label>label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 1234</option>\n <option value=\"3\">Option 1234567809</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n</section>\n",
55
+ "template": "<section nve-layout=\"column gap:md full\">\n <nve-date fit-text>\n <label>date</label>\n <input type=\"date\" value=\"2017-06-01\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-input fit-text>\n <label>label</label>\n <input value=\"123456789012345678901234567890\" />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-select fit-text>\n <label>label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 1234</option>\n <option value=\"3\">Option 1234567809</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n</section>\n",
56
56
  "summary": "Form controls that automatically adjust their width to fit content, optimizing space usage for dynamic or variable-length inputs.",
57
57
  "description": "",
58
58
  "composition": true,
@@ -74,7 +74,7 @@
74
74
  {
75
75
  "id": "forms-prominence-muted",
76
76
  "name": "ProminenceMuted",
77
- "template": "<div nve-layout=\"row gap:lg\">\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n <nve-card>\n <nve-card-content>\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n </nve-card-content>\n </nve-card>\n</div>\n",
77
+ "template": "<div nve-layout=\"row gap:lg\">\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n <nve-card>\n <nve-card-content>\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n </nve-card-content>\n </nve-card>\n</div>\n",
78
78
  "summary": "Use the prominence muted state to lower visual weight of controls in forms.",
79
79
  "description": "",
80
80
  "composition": true,
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "id": "forms-validation-login-form",
7
7
  "name": "LoginForm",
8
- "template": "<form id=\"validation\" nve-layout=\"column gap:md\" style=\"max-width: 350px\">\n <nve-input>\n <label>email</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" />\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n <nve-control-message error=\"patternMismatch\">invalid NVIDIA email</nve-control-message>\n </nve-input>\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n <nve-control-message error=\"tooShort\">minimum length is 6 characters</nve-control-message>\n </nve-password>\n <nve-button disabled>login to account</nve-button>\n <nve-alert-group hidden status=\"success\">\n <nve-alert></nve-alert>\n </nve-alert-group>\n</form>\n<script type=\"module\">\n const form = document.querySelector(\"form#validation\");\n const alertGroup = document.querySelector(\"#validation nve-alert-group\");\n const alert = document.querySelector(\"#validation nve-alert\");\n form.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n const { email, password } = Object.fromEntries(new FormData(form));\n alert.innerText = email + \" / \" + password;\n alertGroup.hidden = false;\n });\n form.addEventListener(\"input\", (e) => {\n form.querySelector(\"nve-button\").disabled = form.matches(\":invalid\");\n });\n</script>\n",
8
+ "template": "<form id=\"validation\" nve-layout=\"column gap:md\" style=\"max-width: 350px\">\n <nve-input>\n <label>email</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" />\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n <nve-control-message error=\"patternMismatch\">invalid NVIDIA email</nve-control-message>\n </nve-input>\n\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n <nve-control-message error=\"tooShort\">minimum length is 6 characters</nve-control-message>\n </nve-password>\n\n <nve-button disabled>login to account</nve-button>\n\n <nve-alert-group hidden status=\"success\">\n <nve-alert></nve-alert>\n </nve-alert-group>\n</form>\n<script type=\"module\">\n const form = document.querySelector(\"form#validation\");\n const alertGroup = document.querySelector(\"#validation nve-alert-group\");\n const alert = document.querySelector(\"#validation nve-alert\");\n\n form.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n const { email, password } = Object.fromEntries(new FormData(form));\n alert.innerText = email + \" / \" + password;\n alertGroup.hidden = false;\n });\n\n form.addEventListener(\"input\", (e) => {\n form.querySelector(\"nve-button\").disabled = form.matches(\":invalid\");\n });\n</script>\n",
9
9
  "summary": "Use real-time validation with contextual error messages to disable submit until form is valid.",
10
10
  "description": "",
11
11
  "composition": true,
@@ -16,7 +16,7 @@
16
16
  {
17
17
  "id": "forms-validation-error-group",
18
18
  "name": "ErrorGroup",
19
- "template": "<form nve-layout=\"column gap:md\" style=\"max-width: 350px\" novalidate>\n <nve-input>\n <label>email</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" />\n <nve-control-message status=\"error\">invalid email</nve-control-message>\n </nve-input>\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n <nve-control-message status=\"error\">minimum length is 6 characters</nve-control-message>\n </nve-password>\n <nve-button>login to account</nve-button>\n <nve-alert-group status=\"danger\">\n <nve-alert>invalid email</nve-alert>\n <nve-alert>password required</nve-alert>\n </nve-alert-group>\n</form>\n",
19
+ "template": "<form nve-layout=\"column gap:md\" style=\"max-width: 350px\" novalidate>\n <nve-input>\n <label>email</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" />\n <nve-control-message status=\"error\">invalid email</nve-control-message>\n </nve-input>\n\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n <nve-control-message status=\"error\">minimum length is 6 characters</nve-control-message>\n </nve-password>\n\n <nve-button>login to account</nve-button>\n\n <nve-alert-group status=\"danger\">\n <nve-alert>invalid email</nve-alert>\n <nve-alert>password required</nve-alert>\n </nve-alert-group>\n</form>\n",
20
20
  "summary": "Login form with grouped error display showing all validation issues together after submission attempt.",
21
21
  "description": "",
22
22
  "composition": true,
@@ -25,7 +25,7 @@
25
25
  {
26
26
  "id": "forms-validation-success-group",
27
27
  "name": "SuccessGroup",
28
- "template": "<form nve-layout=\"column gap:md\" style=\"max-width: 350px\" novalidate>\n <nve-input>\n <label>username</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" />\n <nve-control-message status=\"success\">username available</nve-control-message>\n </nve-input>\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n </nve-password>\n <nve-button>login to account</nve-button>\n <nve-alert-group status=\"success\">\n <nve-alert closable>account created</nve-alert>\n </nve-alert-group>\n</form>\n",
28
+ "template": "<form nve-layout=\"column gap:md\" style=\"max-width: 350px\" novalidate>\n <nve-input>\n <label>username</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" />\n <nve-control-message status=\"success\">username available</nve-control-message>\n </nve-input>\n\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n </nve-password>\n\n <nve-button>login to account</nve-button>\n\n <nve-alert-group status=\"success\">\n <nve-alert closable>account created</nve-alert>\n </nve-alert-group>\n</form>\n",
29
29
  "summary": "Login form example of success feedback with positive confirmation messages for valid input and successful form submission.",
30
30
  "description": "",
31
31
  "composition": true,
@@ -34,7 +34,7 @@
34
34
  {
35
35
  "id": "forms-validation-reset-form",
36
36
  "name": "ResetForm",
37
- "template": "<form nve-layout=\"column gap:md\" style=\"max-width: 350px\">\n <nve-input>\n <label>email</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" value=\"test@nvidia.com\" />\n <nve-icon-button aria-label=\"reset\" icon-name=\"cancel\" container=\"flat\" type=\"button\"></nve-icon-button>\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n <nve-control-message error=\"patternMismatch\">invalid NVIDIA email</nve-control-message>\n </nve-input>\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n </nve-password>\n <nve-button type=\"button\">reset form</nve-button>\n</form>\n<script type=\"module\">\n const form = document.querySelector(\"form\");\n const input = form.querySelector(\"nve-input\");\n const resetInput = form.querySelector('nve-icon-button[icon-name=\"cancel\"]');\n const resetForm = form.querySelector(\"nve-button\");\n resetInput.addEventListener(\"click\", (e) => input.reset());\n resetForm.addEventListener(\"click\", (e) => form.reset());\n form.addEventListener(\"reset\", (e) => console.log(e));\n</script>\n",
37
+ "template": "<form nve-layout=\"column gap:md\" style=\"max-width: 350px\">\n <nve-input>\n <label>email</label>\n <input type=\"email\" name=\"email\" required pattern=\".+@nvidia.com\" autocomplete=\"off\" value=\"test@nvidia.com\" />\n <nve-icon-button aria-label=\"reset\" icon-name=\"cancel\" container=\"flat\" type=\"button\"></nve-icon-button>\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n <nve-control-message error=\"patternMismatch\">invalid NVIDIA email</nve-control-message>\n </nve-input>\n\n <nve-password>\n <label>password</label>\n <input type=\"password\" name=\"password\" required minlength=\"6\" autocomplete=\"off\" />\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n </nve-password>\n\n <nve-button type=\"button\">reset form</nve-button>\n</form>\n<script type=\"module\">\n const form = document.querySelector(\"form\");\n const input = form.querySelector(\"nve-input\");\n const resetInput = form.querySelector('nve-icon-button[icon-name=\"cancel\"]');\n const resetForm = form.querySelector(\"nve-button\");\n\n resetInput.addEventListener(\"click\", (e) => input.reset());\n resetForm.addEventListener(\"click\", (e) => form.reset());\n form.addEventListener(\"reset\", (e) => console.log(e));\n</script>\n",
38
38
  "summary": "Form reset functionality allowing users to clear individual fields or reset the entire form.",
39
39
  "description": "",
40
40
  "composition": true,
@@ -91,7 +91,7 @@
91
91
  {
92
92
  "id": "gauge-gradient",
93
93
  "name": "Gradient",
94
- "template": "<style>\n nve-gauge#gauge-temperature-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-success-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-danger-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-success-emphasis-color) 300deg 360deg\n );\n }\n nve-gauge#gauge-mbps-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-danger-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-success-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-danger-emphasis-color) 300deg 360deg\n );\n }\n</style>\n<div nve-layout=\"row gap:md\">\n <nve-gauge thumb=\"dot\" value=\"82\" id=\"gauge-temperature-example\" aria-label=\"Temperature\" aria-valuetext=\"82°C\">\n <span>82&deg;C</span>\n <span nve-text=\"body sm muted\">TEMP</span>\n </nve-gauge>\n <nve-gauge thumb=\"needle\" value=\"98\" id=\"gauge-mbps-example\" aria-label=\"Download\" aria-valuetext=\"980Mbps\">\n <span nve-text=\"body sm\">980Mbps</span>\n <span nve-text=\"body sm muted\">Download</span>\n </nve-gauge>\n</div>\n",
94
+ "template": "<style>\n nve-gauge#gauge-temperature-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-success-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-danger-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-success-emphasis-color) 300deg 360deg\n );\n }\n\n nve-gauge#gauge-mbps-example {\n --background: conic-gradient(\n from 225deg at 50% 50%,\n var(--nve-sys-support-danger-emphasis-color) 0deg 18deg,\n var(--nve-sys-support-warning-emphasis-color) 135deg,\n var(--nve-sys-support-success-emphasis-color) 252deg 300deg,\n var(--nve-sys-support-danger-emphasis-color) 300deg 360deg\n );\n }\n</style>\n\n<div nve-layout=\"row gap:md\">\n <nve-gauge thumb=\"dot\" value=\"82\" id=\"gauge-temperature-example\" aria-label=\"Temperature\" aria-valuetext=\"82°C\">\n <span>82&deg;C</span>\n <span nve-text=\"body sm muted\">TEMP</span>\n </nve-gauge>\n\n <nve-gauge thumb=\"needle\" value=\"98\" id=\"gauge-mbps-example\" aria-label=\"Download\" aria-valuetext=\"980Mbps\">\n <span nve-text=\"body sm\">980Mbps</span>\n <span nve-text=\"body sm muted\">Download</span>\n </nve-gauge>\n</div>\n",
95
95
  "summary": "Use gradient colors for gauges with scaled non-segmented values such as temperature and bandwidth.",
96
96
  "description": "",
97
97
  "composition": false,
@@ -135,7 +135,7 @@
135
135
  {
136
136
  "id": "gauge-multi-gauge",
137
137
  "name": "MultiGauge",
138
- "template": "<div nve-layout=\"row gap:sm\">\n <nve-gauge id=\"av-taxi-battery-gauge\" status=\"success\" value=\"74\" aria-label=\"Battery\" aria-valuetext=\"74%\">\n <span nve-text=\"grow\">74%</span>\n <span nve-text=\"body sm muted\">BATTERY</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-perception-gauge\" status=\"success\" value=\"96\" aria-label=\"Perception\" aria-valuetext=\"96%\">\n <span nve-text=\"grow\">96%</span>\n <span nve-text=\"body sm muted\">PERCEPTION</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-compute-gauge\" status=\"success\" value=\"62\" aria-label=\"GPU\" aria-valuetext=\"62%\">\n <span nve-text=\"grow\">62%</span>\n <span nve-text=\"body sm muted\">GPU</span>\n </nve-gauge>\n</div>\n<script type=\"module\">\n const clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n const telemetry = {\n battery: 74,\n compute: 62,\n perception: 96,\n };\n const gauges = {\n battery: document.querySelector(\"#av-taxi-battery-gauge\"),\n compute: document.querySelector(\"#av-taxi-compute-gauge\"),\n perception: document.querySelector(\"#av-taxi-perception-gauge\"),\n };\n const setGauge = (gauge, value, text, status) => {\n gauge.value = Math.round(value);\n gauge.status = status;\n gauge.setAttribute(\"aria-valuetext\", text);\n gauge.querySelector(\"span\").textContent = text;\n };\n setInterval(() => {\n telemetry.battery = clamp(telemetry.battery - 0.08 + (Math.random() - 0.4) * 0.3, 46, 82);\n telemetry.compute = clamp(telemetry.compute + (Math.random() - 0.48) * 7, 34, 91);\n telemetry.perception = clamp(telemetry.perception + (Math.random() - 0.52) * 2.4, 88, 99);\n const battery = Math.round(telemetry.battery);\n const compute = Math.round(telemetry.compute);\n const perception = Math.round(telemetry.perception);\n setGauge(gauges.battery, battery, battery + \"%\", battery < 30 ? \"danger\" : battery < 50 ? \"warning\" : \"success\");\n setGauge(gauges.compute, compute, compute + \"%\", compute >= 85 ? \"danger\" : compute >= 70 ? \"warning\" : \"success\");\n setGauge(gauges.perception, perception, perception + \"%\", perception < 90 ? \"danger\" : perception < 94 ? \"warning\" : \"success\");\n }, 1600);\n</script>\n",
138
+ "template": "<div nve-layout=\"row gap:sm\">\n <nve-gauge id=\"av-taxi-battery-gauge\" status=\"success\" value=\"74\" aria-label=\"Battery\" aria-valuetext=\"74%\">\n <span nve-text=\"grow\">74%</span>\n <span nve-text=\"body sm muted\">BATTERY</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-perception-gauge\" status=\"success\" value=\"96\" aria-label=\"Perception\" aria-valuetext=\"96%\">\n <span nve-text=\"grow\">96%</span>\n <span nve-text=\"body sm muted\">PERCEPTION</span>\n </nve-gauge>\n <nve-gauge id=\"av-taxi-compute-gauge\" status=\"success\" value=\"62\" aria-label=\"GPU\" aria-valuetext=\"62%\">\n <span nve-text=\"grow\">62%</span>\n <span nve-text=\"body sm muted\">GPU</span>\n </nve-gauge>\n</div>\n<script type=\"module\">\n const clamp = (value, min, max) => Math.min(Math.max(value, min), max);\n const telemetry = {\n battery: 74,\n compute: 62,\n perception: 96,\n };\n const gauges = {\n battery: document.querySelector(\"#av-taxi-battery-gauge\"),\n compute: document.querySelector(\"#av-taxi-compute-gauge\"),\n perception: document.querySelector(\"#av-taxi-perception-gauge\"),\n };\n\n const setGauge = (gauge, value, text, status) => {\n gauge.value = Math.round(value);\n gauge.status = status;\n gauge.setAttribute(\"aria-valuetext\", text);\n gauge.querySelector(\"span\").textContent = text;\n };\n\n setInterval(() => {\n telemetry.battery = clamp(telemetry.battery - 0.08 + (Math.random() - 0.4) * 0.3, 46, 82);\n telemetry.compute = clamp(telemetry.compute + (Math.random() - 0.48) * 7, 34, 91);\n telemetry.perception = clamp(telemetry.perception + (Math.random() - 0.52) * 2.4, 88, 99);\n\n const battery = Math.round(telemetry.battery);\n const compute = Math.round(telemetry.compute);\n const perception = Math.round(telemetry.perception);\n\n setGauge(gauges.battery, battery, battery + \"%\", battery < 30 ? \"danger\" : battery < 50 ? \"warning\" : \"success\");\n setGauge(gauges.compute, compute, compute + \"%\", compute >= 85 ? \"danger\" : compute >= 70 ? \"warning\" : \"success\");\n setGauge(gauges.perception, perception, perception + \"%\", perception < 90 ? \"danger\" : perception < 94 ? \"warning\" : \"success\");\n }, 1600);\n</script>\n",
139
139
  "summary": "Autonomous vehicle taxi gauges combine battery, perception, compute, and link status with realistic drift. Use for live dispatch views that need changing system health.",
140
140
  "description": "",
141
141
  "composition": false,
@@ -40,7 +40,7 @@ var l = {
40
40
  static {
41
41
  this.metadata = {
42
42
  tag: "nve-gauge",
43
- version: "2.12.0"
43
+ version: "2.12.2"
44
44
  };
45
45
  }
46
46
  #e;
@@ -10,7 +10,7 @@ var a = class extends r {
10
10
  static {
11
11
  this.metadata = {
12
12
  tag: "nve-grid-cell",
13
- version: "2.12.0"
13
+ version: "2.12.2"
14
14
  };
15
15
  }
16
16
  render() {
@@ -13,7 +13,7 @@ var c = class r extends a {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-grid-column",
16
- version: "2.12.0"
16
+ version: "2.12.2"
17
17
  };
18
18
  }
19
19
  get #e() {
@@ -15,7 +15,7 @@ var s = class extends a {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-grid-footer",
18
- version: "2.12.0"
18
+ version: "2.12.2"
19
19
  };
20
20
  }
21
21
  static {
@@ -126,7 +126,7 @@
126
126
  {
127
127
  "id": "grid-column-width",
128
128
  "name": "ColumnWidth",
129
- "template": "<nve-grid style=\"height: 400px\">\n <nve-grid-header>\n <nve-grid-column width=\"300px\">column 0</nve-grid-column> <nve-grid-column width=\"300px\">column 1</nve-grid-column> <nve-grid-column width=\"300px\">column 2</nve-grid-column>\n <nve-grid-column width=\"300px\">column 3</nve-grid-column> <nve-grid-column width>column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell> <nve-grid-cell>cell 0-1</nve-grid-cell> <nve-grid-cell>cell 0-2</nve-grid-cell> <nve-grid-cell>cell 0-3</nve-grid-cell> <nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell> <nve-grid-cell>cell 1-1</nve-grid-cell> <nve-grid-cell>cell 1-2</nve-grid-cell> <nve-grid-cell>cell 1-3</nve-grid-cell> <nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell> <nve-grid-cell>cell 2-1</nve-grid-cell> <nve-grid-cell>cell 2-2</nve-grid-cell> <nve-grid-cell>cell 2-3</nve-grid-cell> <nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell> <nve-grid-cell>cell 3-1</nve-grid-cell> <nve-grid-cell>cell 3-2</nve-grid-cell> <nve-grid-cell>cell 3-3</nve-grid-cell> <nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell> <nve-grid-cell>cell 4-1</nve-grid-cell> <nve-grid-cell>cell 4-2</nve-grid-cell> <nve-grid-cell>cell 4-3</nve-grid-cell> <nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell> <nve-grid-cell>cell 5-1</nve-grid-cell> <nve-grid-cell>cell 5-2</nve-grid-cell> <nve-grid-cell>cell 5-3</nve-grid-cell> <nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell> <nve-grid-cell>cell 6-1</nve-grid-cell> <nve-grid-cell>cell 6-2</nve-grid-cell> <nve-grid-cell>cell 6-3</nve-grid-cell> <nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell> <nve-grid-cell>cell 7-1</nve-grid-cell> <nve-grid-cell>cell 7-2</nve-grid-cell> <nve-grid-cell>cell 7-3</nve-grid-cell> <nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell> <nve-grid-cell>cell 8-1</nve-grid-cell> <nve-grid-cell>cell 8-2</nve-grid-cell> <nve-grid-cell>cell 8-3</nve-grid-cell> <nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell> <nve-grid-cell>cell 9-1</nve-grid-cell> <nve-grid-cell>cell 9-2</nve-grid-cell> <nve-grid-cell>cell 9-3</nve-grid-cell> <nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-footer>footer content</nve-grid-footer>\n</nve-grid>\n",
129
+ "template": "<nve-grid style=\"height: 400px\">\n <nve-grid-header>\n <nve-grid-column width=\"300px\">column 0</nve-grid-column> <nve-grid-column width=\"300px\">column 1</nve-grid-column> <nve-grid-column width=\"300px\">column 2</nve-grid-column>\n <nve-grid-column width=\"300px\">column 3</nve-grid-column> <nve-grid-column width=\"\">column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell> <nve-grid-cell>cell 0-1</nve-grid-cell> <nve-grid-cell>cell 0-2</nve-grid-cell> <nve-grid-cell>cell 0-3</nve-grid-cell> <nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell> <nve-grid-cell>cell 1-1</nve-grid-cell> <nve-grid-cell>cell 1-2</nve-grid-cell> <nve-grid-cell>cell 1-3</nve-grid-cell> <nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell> <nve-grid-cell>cell 2-1</nve-grid-cell> <nve-grid-cell>cell 2-2</nve-grid-cell> <nve-grid-cell>cell 2-3</nve-grid-cell> <nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell> <nve-grid-cell>cell 3-1</nve-grid-cell> <nve-grid-cell>cell 3-2</nve-grid-cell> <nve-grid-cell>cell 3-3</nve-grid-cell> <nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell> <nve-grid-cell>cell 4-1</nve-grid-cell> <nve-grid-cell>cell 4-2</nve-grid-cell> <nve-grid-cell>cell 4-3</nve-grid-cell> <nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell> <nve-grid-cell>cell 5-1</nve-grid-cell> <nve-grid-cell>cell 5-2</nve-grid-cell> <nve-grid-cell>cell 5-3</nve-grid-cell> <nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell> <nve-grid-cell>cell 6-1</nve-grid-cell> <nve-grid-cell>cell 6-2</nve-grid-cell> <nve-grid-cell>cell 6-3</nve-grid-cell> <nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell> <nve-grid-cell>cell 7-1</nve-grid-cell> <nve-grid-cell>cell 7-2</nve-grid-cell> <nve-grid-cell>cell 7-3</nve-grid-cell> <nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell> <nve-grid-cell>cell 8-1</nve-grid-cell> <nve-grid-cell>cell 8-2</nve-grid-cell> <nve-grid-cell>cell 8-3</nve-grid-cell> <nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell> <nve-grid-cell>cell 9-1</nve-grid-cell> <nve-grid-cell>cell 9-2</nve-grid-cell> <nve-grid-cell>cell 9-3</nve-grid-cell> <nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-footer>footer content</nve-grid-footer>\n</nve-grid>\n",
130
130
  "summary": "Column width control for responsive grid layouts, enabling flexible content sizing and optimal space usage across different screen sizes.",
131
131
  "description": "",
132
132
  "composition": false,
@@ -146,7 +146,7 @@
146
146
  {
147
147
  "id": "grid-column-fixed",
148
148
  "name": "ColumnFixed",
149
- "template": "<nve-grid style=\"height: 400px; max-width: 800px\">\n <nve-grid-header>\n <nve-grid-column position=\"fixed\" width=\"200px\">column 0</nve-grid-column> <nve-grid-column position width=\"200px\">column 1</nve-grid-column> <nve-grid-column position width=\"200px\">column 2</nve-grid-column>\n <nve-grid-column position width=\"200px\">column 3</nve-grid-column> <nve-grid-column position width=\"200px\">column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell> <nve-grid-cell>cell 0-1</nve-grid-cell> <nve-grid-cell>cell 0-2</nve-grid-cell> <nve-grid-cell>cell 0-3</nve-grid-cell> <nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell> <nve-grid-cell>cell 1-1</nve-grid-cell> <nve-grid-cell>cell 1-2</nve-grid-cell> <nve-grid-cell>cell 1-3</nve-grid-cell> <nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell> <nve-grid-cell>cell 2-1</nve-grid-cell> <nve-grid-cell>cell 2-2</nve-grid-cell> <nve-grid-cell>cell 2-3</nve-grid-cell> <nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell> <nve-grid-cell>cell 3-1</nve-grid-cell> <nve-grid-cell>cell 3-2</nve-grid-cell> <nve-grid-cell>cell 3-3</nve-grid-cell> <nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell> <nve-grid-cell>cell 4-1</nve-grid-cell> <nve-grid-cell>cell 4-2</nve-grid-cell> <nve-grid-cell>cell 4-3</nve-grid-cell> <nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell> <nve-grid-cell>cell 5-1</nve-grid-cell> <nve-grid-cell>cell 5-2</nve-grid-cell> <nve-grid-cell>cell 5-3</nve-grid-cell> <nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell> <nve-grid-cell>cell 6-1</nve-grid-cell> <nve-grid-cell>cell 6-2</nve-grid-cell> <nve-grid-cell>cell 6-3</nve-grid-cell> <nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell> <nve-grid-cell>cell 7-1</nve-grid-cell> <nve-grid-cell>cell 7-2</nve-grid-cell> <nve-grid-cell>cell 7-3</nve-grid-cell> <nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell> <nve-grid-cell>cell 8-1</nve-grid-cell> <nve-grid-cell>cell 8-2</nve-grid-cell> <nve-grid-cell>cell 8-3</nve-grid-cell> <nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell> <nve-grid-cell>cell 9-1</nve-grid-cell> <nve-grid-cell>cell 9-2</nve-grid-cell> <nve-grid-cell>cell 9-3</nve-grid-cell> <nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n</nve-grid>\n",
149
+ "template": "<nve-grid style=\"height: 400px; max-width: 800px\">\n <nve-grid-header>\n <nve-grid-column position=\"fixed\" width=\"200px\">column 0</nve-grid-column> <nve-grid-column position=\"\" width=\"200px\">column 1</nve-grid-column> <nve-grid-column position=\"\" width=\"200px\">column 2</nve-grid-column>\n <nve-grid-column position=\"\" width=\"200px\">column 3</nve-grid-column> <nve-grid-column position=\"\" width=\"200px\">column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell> <nve-grid-cell>cell 0-1</nve-grid-cell> <nve-grid-cell>cell 0-2</nve-grid-cell> <nve-grid-cell>cell 0-3</nve-grid-cell> <nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell> <nve-grid-cell>cell 1-1</nve-grid-cell> <nve-grid-cell>cell 1-2</nve-grid-cell> <nve-grid-cell>cell 1-3</nve-grid-cell> <nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell> <nve-grid-cell>cell 2-1</nve-grid-cell> <nve-grid-cell>cell 2-2</nve-grid-cell> <nve-grid-cell>cell 2-3</nve-grid-cell> <nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell> <nve-grid-cell>cell 3-1</nve-grid-cell> <nve-grid-cell>cell 3-2</nve-grid-cell> <nve-grid-cell>cell 3-3</nve-grid-cell> <nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell> <nve-grid-cell>cell 4-1</nve-grid-cell> <nve-grid-cell>cell 4-2</nve-grid-cell> <nve-grid-cell>cell 4-3</nve-grid-cell> <nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell> <nve-grid-cell>cell 5-1</nve-grid-cell> <nve-grid-cell>cell 5-2</nve-grid-cell> <nve-grid-cell>cell 5-3</nve-grid-cell> <nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell> <nve-grid-cell>cell 6-1</nve-grid-cell> <nve-grid-cell>cell 6-2</nve-grid-cell> <nve-grid-cell>cell 6-3</nve-grid-cell> <nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell> <nve-grid-cell>cell 7-1</nve-grid-cell> <nve-grid-cell>cell 7-2</nve-grid-cell> <nve-grid-cell>cell 7-3</nve-grid-cell> <nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell> <nve-grid-cell>cell 8-1</nve-grid-cell> <nve-grid-cell>cell 8-2</nve-grid-cell> <nve-grid-cell>cell 8-3</nve-grid-cell> <nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell> <nve-grid-cell>cell 9-1</nve-grid-cell> <nve-grid-cell>cell 9-2</nve-grid-cell> <nve-grid-cell>cell 9-3</nve-grid-cell> <nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n</nve-grid>\n",
150
150
  "summary": "Fix columns to any given side, but keep fixed columns from spanning past the half way point of the grid.",
151
151
  "description": "",
152
152
  "composition": false,
@@ -155,7 +155,7 @@
155
155
  {
156
156
  "id": "grid-column-multi-fixed",
157
157
  "name": "ColumnMultiFixed",
158
- "template": "<nve-grid style=\"height: 400px; max-width: 800px\">\n <nve-grid-header>\n <nve-grid-column position=\"fixed\" width=\"200px\">column 0</nve-grid-column><nve-grid-column position width=\"200px\">column 1</nve-grid-column><nve-grid-column position width=\"200px\">column 2</nve-grid-column\n ><nve-grid-column position width=\"200px\">column 3</nve-grid-column><nve-grid-column position=\"fixed\" width=\"200px\">column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell><nve-grid-cell>cell 0-1</nve-grid-cell><nve-grid-cell>cell 0-2</nve-grid-cell><nve-grid-cell>cell 0-3</nve-grid-cell><nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell><nve-grid-cell>cell 1-1</nve-grid-cell><nve-grid-cell>cell 1-2</nve-grid-cell><nve-grid-cell>cell 1-3</nve-grid-cell><nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell><nve-grid-cell>cell 2-1</nve-grid-cell><nve-grid-cell>cell 2-2</nve-grid-cell><nve-grid-cell>cell 2-3</nve-grid-cell><nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell><nve-grid-cell>cell 3-1</nve-grid-cell><nve-grid-cell>cell 3-2</nve-grid-cell><nve-grid-cell>cell 3-3</nve-grid-cell><nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell><nve-grid-cell>cell 4-1</nve-grid-cell><nve-grid-cell>cell 4-2</nve-grid-cell><nve-grid-cell>cell 4-3</nve-grid-cell><nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell><nve-grid-cell>cell 5-1</nve-grid-cell><nve-grid-cell>cell 5-2</nve-grid-cell><nve-grid-cell>cell 5-3</nve-grid-cell><nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell><nve-grid-cell>cell 6-1</nve-grid-cell><nve-grid-cell>cell 6-2</nve-grid-cell><nve-grid-cell>cell 6-3</nve-grid-cell><nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell><nve-grid-cell>cell 7-1</nve-grid-cell><nve-grid-cell>cell 7-2</nve-grid-cell><nve-grid-cell>cell 7-3</nve-grid-cell><nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell><nve-grid-cell>cell 8-1</nve-grid-cell><nve-grid-cell>cell 8-2</nve-grid-cell><nve-grid-cell>cell 8-3</nve-grid-cell><nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell><nve-grid-cell>cell 9-1</nve-grid-cell><nve-grid-cell>cell 9-2</nve-grid-cell><nve-grid-cell>cell 9-3</nve-grid-cell><nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n</nve-grid>\n",
158
+ "template": "<nve-grid style=\"height: 400px; max-width: 800px\">\n <nve-grid-header>\n <nve-grid-column position=\"fixed\" width=\"200px\">column 0</nve-grid-column><nve-grid-column position=\"\" width=\"200px\">column 1</nve-grid-column><nve-grid-column position=\"\" width=\"200px\">column 2</nve-grid-column\n ><nve-grid-column position=\"\" width=\"200px\">column 3</nve-grid-column><nve-grid-column position=\"fixed\" width=\"200px\">column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell><nve-grid-cell>cell 0-1</nve-grid-cell><nve-grid-cell>cell 0-2</nve-grid-cell><nve-grid-cell>cell 0-3</nve-grid-cell><nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell><nve-grid-cell>cell 1-1</nve-grid-cell><nve-grid-cell>cell 1-2</nve-grid-cell><nve-grid-cell>cell 1-3</nve-grid-cell><nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell><nve-grid-cell>cell 2-1</nve-grid-cell><nve-grid-cell>cell 2-2</nve-grid-cell><nve-grid-cell>cell 2-3</nve-grid-cell><nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell><nve-grid-cell>cell 3-1</nve-grid-cell><nve-grid-cell>cell 3-2</nve-grid-cell><nve-grid-cell>cell 3-3</nve-grid-cell><nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell><nve-grid-cell>cell 4-1</nve-grid-cell><nve-grid-cell>cell 4-2</nve-grid-cell><nve-grid-cell>cell 4-3</nve-grid-cell><nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell><nve-grid-cell>cell 5-1</nve-grid-cell><nve-grid-cell>cell 5-2</nve-grid-cell><nve-grid-cell>cell 5-3</nve-grid-cell><nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell><nve-grid-cell>cell 6-1</nve-grid-cell><nve-grid-cell>cell 6-2</nve-grid-cell><nve-grid-cell>cell 6-3</nve-grid-cell><nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell><nve-grid-cell>cell 7-1</nve-grid-cell><nve-grid-cell>cell 7-2</nve-grid-cell><nve-grid-cell>cell 7-3</nve-grid-cell><nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell><nve-grid-cell>cell 8-1</nve-grid-cell><nve-grid-cell>cell 8-2</nve-grid-cell><nve-grid-cell>cell 8-3</nve-grid-cell><nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell><nve-grid-cell>cell 9-1</nve-grid-cell><nve-grid-cell>cell 9-2</nve-grid-cell><nve-grid-cell>cell 9-3</nve-grid-cell><nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n</nve-grid>\n",
159
159
  "summary": "Fix many columns to any given side, but keep fixed columns from spanning past the half way point of the grid.",
160
160
  "description": "",
161
161
  "composition": false,
@@ -173,7 +173,7 @@
173
173
  {
174
174
  "id": "grid-column-dynamic-fixed",
175
175
  "name": "ColumnDynamicFixed",
176
- "template": "<nve-grid id=\"column-dynamic-fixed-grid\" style=\"height: 400px\">\n <nve-grid-header>\n <nve-grid-column width=\"200px\" position=\"fixed\">column 0</nve-grid-column><nve-grid-column width=\"200px\" position>column 1</nve-grid-column><nve-grid-column width=\"200px\" position>column 2</nve-grid-column\n ><nve-grid-column width=\"200px\" position>column 3</nve-grid-column><nve-grid-column width=\"200px\" position=\"fixed\">column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell><nve-grid-cell>cell 0-1</nve-grid-cell><nve-grid-cell>cell 0-2</nve-grid-cell><nve-grid-cell>cell 0-3</nve-grid-cell><nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell><nve-grid-cell>cell 1-1</nve-grid-cell><nve-grid-cell>cell 1-2</nve-grid-cell><nve-grid-cell>cell 1-3</nve-grid-cell><nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell><nve-grid-cell>cell 2-1</nve-grid-cell><nve-grid-cell>cell 2-2</nve-grid-cell><nve-grid-cell>cell 2-3</nve-grid-cell><nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell><nve-grid-cell>cell 3-1</nve-grid-cell><nve-grid-cell>cell 3-2</nve-grid-cell><nve-grid-cell>cell 3-3</nve-grid-cell><nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell><nve-grid-cell>cell 4-1</nve-grid-cell><nve-grid-cell>cell 4-2</nve-grid-cell><nve-grid-cell>cell 4-3</nve-grid-cell><nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell><nve-grid-cell>cell 5-1</nve-grid-cell><nve-grid-cell>cell 5-2</nve-grid-cell><nve-grid-cell>cell 5-3</nve-grid-cell><nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell><nve-grid-cell>cell 6-1</nve-grid-cell><nve-grid-cell>cell 6-2</nve-grid-cell><nve-grid-cell>cell 6-3</nve-grid-cell><nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell><nve-grid-cell>cell 7-1</nve-grid-cell><nve-grid-cell>cell 7-2</nve-grid-cell><nve-grid-cell>cell 7-3</nve-grid-cell><nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell><nve-grid-cell>cell 8-1</nve-grid-cell><nve-grid-cell>cell 8-2</nve-grid-cell><nve-grid-cell>cell 8-3</nve-grid-cell><nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell><nve-grid-cell>cell 9-1</nve-grid-cell><nve-grid-cell>cell 9-2</nve-grid-cell><nve-grid-cell>cell 9-3</nve-grid-cell><nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-footer>\n <nve-button container=\"flat\">add column</nve-button>\n </nve-grid-footer>\n</nve-grid>\n<script type=\"module\">\n const grid = document.querySelector(\"#column-dynamic-fixed-grid\");\n const button = grid.querySelector(\"nve-button\");\n button.addEventListener(\"click\", () => {\n const columns = Array.from(grid.querySelectorAll(\"nve-grid-column\"));\n columns.filter((_, i) => i !== 0).forEach((column) => (column.position = null));\n // add new column\n const newColumn = document.createElement(\"nve-grid-column\");\n newColumn.position = \"fixed\";\n newColumn.width = \"200px\";\n newColumn.textContent = \"column \" + columns.length;\n grid.querySelector(\"nve-grid-header\").appendChild(newColumn);\n // add new cell to each row to the end\n grid.querySelectorAll(\"nve-grid-row\").forEach((row, i) => {\n const cell = document.createElement(\"nve-grid-cell\");\n cell.textContent = \"cell \" + i + \"-\" + columns.length;\n row.appendChild(cell);\n });\n });\n</script>\n",
176
+ "template": "<nve-grid id=\"column-dynamic-fixed-grid\" style=\"height: 400px\">\n <nve-grid-header>\n <nve-grid-column width=\"200px\" position=\"fixed\">column 0</nve-grid-column><nve-grid-column width=\"200px\" position=\"\">column 1</nve-grid-column><nve-grid-column width=\"200px\" position=\"\">column 2</nve-grid-column\n ><nve-grid-column width=\"200px\" position=\"\">column 3</nve-grid-column><nve-grid-column width=\"200px\" position=\"fixed\">column 4</nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell><nve-grid-cell>cell 0-1</nve-grid-cell><nve-grid-cell>cell 0-2</nve-grid-cell><nve-grid-cell>cell 0-3</nve-grid-cell><nve-grid-cell>cell 0-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 1-0</nve-grid-cell><nve-grid-cell>cell 1-1</nve-grid-cell><nve-grid-cell>cell 1-2</nve-grid-cell><nve-grid-cell>cell 1-3</nve-grid-cell><nve-grid-cell>cell 1-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell><nve-grid-cell>cell 2-1</nve-grid-cell><nve-grid-cell>cell 2-2</nve-grid-cell><nve-grid-cell>cell 2-3</nve-grid-cell><nve-grid-cell>cell 2-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell><nve-grid-cell>cell 3-1</nve-grid-cell><nve-grid-cell>cell 3-2</nve-grid-cell><nve-grid-cell>cell 3-3</nve-grid-cell><nve-grid-cell>cell 3-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell><nve-grid-cell>cell 4-1</nve-grid-cell><nve-grid-cell>cell 4-2</nve-grid-cell><nve-grid-cell>cell 4-3</nve-grid-cell><nve-grid-cell>cell 4-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell><nve-grid-cell>cell 5-1</nve-grid-cell><nve-grid-cell>cell 5-2</nve-grid-cell><nve-grid-cell>cell 5-3</nve-grid-cell><nve-grid-cell>cell 5-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell><nve-grid-cell>cell 6-1</nve-grid-cell><nve-grid-cell>cell 6-2</nve-grid-cell><nve-grid-cell>cell 6-3</nve-grid-cell><nve-grid-cell>cell 6-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell><nve-grid-cell>cell 7-1</nve-grid-cell><nve-grid-cell>cell 7-2</nve-grid-cell><nve-grid-cell>cell 7-3</nve-grid-cell><nve-grid-cell>cell 7-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell><nve-grid-cell>cell 8-1</nve-grid-cell><nve-grid-cell>cell 8-2</nve-grid-cell><nve-grid-cell>cell 8-3</nve-grid-cell><nve-grid-cell>cell 8-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell><nve-grid-cell>cell 9-1</nve-grid-cell><nve-grid-cell>cell 9-2</nve-grid-cell><nve-grid-cell>cell 9-3</nve-grid-cell><nve-grid-cell>cell 9-4</nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-footer>\n <nve-button container=\"flat\">add column</nve-button>\n </nve-grid-footer>\n</nve-grid>\n<script type=\"module\">\n const grid = document.querySelector(\"#column-dynamic-fixed-grid\");\n const button = grid.querySelector(\"nve-button\");\n button.addEventListener(\"click\", () => {\n const columns = Array.from(grid.querySelectorAll(\"nve-grid-column\"));\n columns.filter((_, i) => i !== 0).forEach((column) => (column.position = null));\n\n // add new column\n const newColumn = document.createElement(\"nve-grid-column\");\n newColumn.position = \"fixed\";\n newColumn.width = \"200px\";\n newColumn.textContent = \"column \" + columns.length;\n grid.querySelector(\"nve-grid-header\").appendChild(newColumn);\n\n // add new cell to each row to the end\n grid.querySelectorAll(\"nve-grid-row\").forEach((row, i) => {\n const cell = document.createElement(\"nve-grid-cell\");\n cell.textContent = \"cell \" + i + \"-\" + columns.length;\n row.appendChild(cell);\n });\n });\n</script>\n",
177
177
  "summary": "Dynamic column management with programmatic addition and positioning, for flexible grid configuration with evolving data requirements.",
178
178
  "description": "",
179
179
  "composition": false,
@@ -267,7 +267,7 @@
267
267
  {
268
268
  "id": "grid-performance",
269
269
  "name": "Performance",
270
- "template": "<section id=\"grid-performance-demo\" nve-layout=\"column gap:md full\" style=\"height: 500px\">\n <nve-button>show large grid</nve-button>\n <p nve-text=\"body muted\">1000 rows, 4000 cells</p>\n</section>\n<script type=\"module\">\n import \"@nvidia-elements/core/grid/define.js\";\n const section = document.getElementById(\"grid-performance-demo\");\n const button = section.querySelector(\"nve-button\");\n button.addEventListener(\"click\", () => {\n const existingGrid = section.querySelector(\"nve-grid\");\n if (existingGrid) {\n existingGrid.remove();\n } else {\n const grid = document.createElement(\"nve-grid\");\n grid.style.setProperty(\"height\", \"400px\");\n grid.style.setProperty(\"max-width\", \"1024px\");\n const header = document.createElement(\"nve-grid-header\");\n const columns = new Array(4).fill(\"\").map((_, i) => {\n const column = document.createElement(\"nve-grid-column\");\n column.setAttribute(\"width\", \"25%\");\n column.textContent = \"Column \" + i;\n return column;\n });\n const rows = new Array(1000).fill(\"\").map((_, i) => {\n const row = document.createElement(\"nve-grid-row\");\n new Array(4).fill(\"\").forEach((_, c) => {\n const cell = document.createElement(\"nve-grid-cell\");\n cell.textContent = \"Cell \" + i + \"-\" + c;\n row.appendChild(cell);\n });\n return row;\n });\n header.append(...columns);\n grid.appendChild(header);\n grid.append(...rows);\n section.appendChild(grid);\n }\n });\n</script>\n",
270
+ "template": "<section id=\"grid-performance-demo\" nve-layout=\"column gap:md full\" style=\"height: 500px\">\n <nve-button>show large grid</nve-button>\n <p nve-text=\"body muted\">1000 rows, 4000 cells</p>\n</section>\n<script type=\"module\">\n import \"@nvidia-elements/core/grid/define.js\";\n const section = document.getElementById(\"grid-performance-demo\");\n const button = section.querySelector(\"nve-button\");\n\n button.addEventListener(\"click\", () => {\n const existingGrid = section.querySelector(\"nve-grid\");\n if (existingGrid) {\n existingGrid.remove();\n } else {\n const grid = document.createElement(\"nve-grid\");\n grid.style.setProperty(\"height\", \"400px\");\n grid.style.setProperty(\"max-width\", \"1024px\");\n\n const header = document.createElement(\"nve-grid-header\");\n const columns = new Array(4).fill(\"\").map((_, i) => {\n const column = document.createElement(\"nve-grid-column\");\n column.setAttribute(\"width\", \"25%\");\n column.textContent = \"Column \" + i;\n return column;\n });\n\n const rows = new Array(1000).fill(\"\").map((_, i) => {\n const row = document.createElement(\"nve-grid-row\");\n new Array(4).fill(\"\").forEach((_, c) => {\n const cell = document.createElement(\"nve-grid-cell\");\n cell.textContent = \"Cell \" + i + \"-\" + c;\n row.appendChild(cell);\n });\n return row;\n });\n\n header.append(...columns);\n grid.appendChild(header);\n grid.append(...rows);\n section.appendChild(grid);\n }\n });\n</script>\n",
271
271
  "summary": "Datagrid performance is heavily dependent on the content within the grid as well as the host environment.",
272
272
  "description": "When rendering large datasets, using the appropriate techniques to maintain good performance matters. - Use pagination or lazy loading to reduce initial render time - Use virtual scroll or batch rendering to improve render performance - Use fixed width columns to improve render performance and reduce layout shift - Avoid duplication of elements within cells, example reuse a single tooltip for all cells vs creating a new tooltip for each cell",
273
273
  "composition": false,
@@ -363,7 +363,7 @@
363
363
  {
364
364
  "id": "grid-panel-detail",
365
365
  "name": "PanelDetail",
366
- "template": "<nve-page id=\"grid-panel-demo\">\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n </nve-page-header>\n <section nve-layout=\"column gap:md pad:md full\">\n <nve-grid>\n <nve-grid-header>\n <nve-grid-column>column 0</nve-grid-column> <nve-grid-column>column 1</nve-grid-column> <nve-grid-column>column 2</nve-grid-column>\n <nve-grid-column width=\"max-content\" aria-label=\"details\"></nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell> <nve-grid-cell>cell 0-1</nve-grid-cell> <nve-grid-cell>cell 0-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"0\" aria-label=\"view 0\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row selected>\n <nve-grid-cell>cell 1-0</nve-grid-cell> <nve-grid-cell>cell 1-1</nve-grid-cell> <nve-grid-cell>cell 1-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"1\" aria-label=\"view 1\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell> <nve-grid-cell>cell 2-1</nve-grid-cell> <nve-grid-cell>cell 2-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"2\" aria-label=\"view 2\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell> <nve-grid-cell>cell 3-1</nve-grid-cell> <nve-grid-cell>cell 3-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"3\" aria-label=\"view 3\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell> <nve-grid-cell>cell 4-1</nve-grid-cell> <nve-grid-cell>cell 4-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"4\" aria-label=\"view 4\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell> <nve-grid-cell>cell 5-1</nve-grid-cell> <nve-grid-cell>cell 5-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"5\" aria-label=\"view 5\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell> <nve-grid-cell>cell 6-1</nve-grid-cell> <nve-grid-cell>cell 6-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"6\" aria-label=\"view 6\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell> <nve-grid-cell>cell 7-1</nve-grid-cell> <nve-grid-cell>cell 7-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"7\" aria-label=\"view 7\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell> <nve-grid-cell>cell 8-1</nve-grid-cell> <nve-grid-cell>cell 8-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"8\" aria-label=\"view 8\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell> <nve-grid-cell>cell 9-1</nve-grid-cell> <nve-grid-cell>cell 9-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"9\" aria-label=\"view 9\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n </nve-grid>\n </section>\n <nve-page-panel slot=\"right\" size=\"sm\" expanded closable>\n <nve-page-panel-header>\n <h3 nve-text=\"heading medium sm\">Row 2 Details</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <div nve-layout=\"column gap:md\">\n <div nve-layout=\"column gap:xs\">\n <label nve-text=\"body sm muted\">Task</label>\n <p nve-text=\"label sm\">Workflow</p>\n </div>\n <div nve-layout=\"column gap:xs\">\n <label nve-text=\"body sm muted\">Status</label>\n <nve-badge status=\"success\">Complete</nve-badge>\n </div>\n <div nve-layout=\"column gap:xs\">\n <label nve-text=\"body sm muted\">Priority</label>\n <nve-badge status=\"pending\">P1</nve-badge>\n </div>\n </div>\n </nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n<script type=\"module\">\n const page = document.getElementById(\"grid-panel-demo\");\n const grid = page.querySelector(\"nve-grid\");\n const panel = page.querySelector(\"nve-page-panel\");\n const rows = grid.querySelectorAll(\"nve-grid-row\");\n const heading = page.querySelector(\"nve-page-panel-header h3\");\n panel.addEventListener(\"close\", () => {\n rows.forEach((row) => (row.selected = false));\n panel.hidden = true;\n });\n grid.addEventListener(\"click\", (e) => {\n if (e.target.localName === \"nve-icon-button\") {\n const row = e.target.closest(\"nve-grid-row\");\n rows.forEach((row) => (row.selected = false));\n panel.hidden = false;\n heading.textContent = \"Row \" + e.target.value + \" Details\";\n row.selected = !panel.hidden;\n }\n });\n</script>\n",
366
+ "template": "<nve-page id=\"grid-panel-demo\">\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n </nve-page-header>\n <section nve-layout=\"column gap:md pad:md full\">\n <nve-grid>\n <nve-grid-header>\n <nve-grid-column>column 0</nve-grid-column> <nve-grid-column>column 1</nve-grid-column> <nve-grid-column>column 2</nve-grid-column>\n <nve-grid-column width=\"max-content\" aria-label=\"details\"></nve-grid-column>\n </nve-grid-header>\n\n <nve-grid-row>\n <nve-grid-cell>cell 0-0</nve-grid-cell> <nve-grid-cell>cell 0-1</nve-grid-cell> <nve-grid-cell>cell 0-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"0\" aria-label=\"view 0\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row selected>\n <nve-grid-cell>cell 1-0</nve-grid-cell> <nve-grid-cell>cell 1-1</nve-grid-cell> <nve-grid-cell>cell 1-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"1\" aria-label=\"view 1\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 2-0</nve-grid-cell> <nve-grid-cell>cell 2-1</nve-grid-cell> <nve-grid-cell>cell 2-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"2\" aria-label=\"view 2\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 3-0</nve-grid-cell> <nve-grid-cell>cell 3-1</nve-grid-cell> <nve-grid-cell>cell 3-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"3\" aria-label=\"view 3\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 4-0</nve-grid-cell> <nve-grid-cell>cell 4-1</nve-grid-cell> <nve-grid-cell>cell 4-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"4\" aria-label=\"view 4\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 5-0</nve-grid-cell> <nve-grid-cell>cell 5-1</nve-grid-cell> <nve-grid-cell>cell 5-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"5\" aria-label=\"view 5\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 6-0</nve-grid-cell> <nve-grid-cell>cell 6-1</nve-grid-cell> <nve-grid-cell>cell 6-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"6\" aria-label=\"view 6\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 7-0</nve-grid-cell> <nve-grid-cell>cell 7-1</nve-grid-cell> <nve-grid-cell>cell 7-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"7\" aria-label=\"view 7\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 8-0</nve-grid-cell> <nve-grid-cell>cell 8-1</nve-grid-cell> <nve-grid-cell>cell 8-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"8\" aria-label=\"view 8\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n\n <nve-grid-row>\n <nve-grid-cell>cell 9-0</nve-grid-cell> <nve-grid-cell>cell 9-1</nve-grid-cell> <nve-grid-cell>cell 9-2</nve-grid-cell>\n <nve-grid-cell>\n <nve-icon-button container=\"flat\" icon-name=\"expand-details\" value=\"9\" aria-label=\"view 9\"></nve-icon-button>\n </nve-grid-cell>\n </nve-grid-row>\n </nve-grid>\n </section>\n <nve-page-panel slot=\"right\" size=\"sm\" expanded closable>\n <nve-page-panel-header>\n <h3 nve-text=\"heading medium sm\">Row 2 Details</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <div nve-layout=\"column gap:md\">\n <div nve-layout=\"column gap:xs\">\n <label nve-text=\"body sm muted\">Task</label>\n <p nve-text=\"label sm\">Workflow</p>\n </div>\n <div nve-layout=\"column gap:xs\">\n <label nve-text=\"body sm muted\">Status</label>\n <nve-badge status=\"success\">Complete</nve-badge>\n </div>\n <div nve-layout=\"column gap:xs\">\n <label nve-text=\"body sm muted\">Priority</label>\n <nve-badge status=\"pending\">P1</nve-badge>\n </div>\n </div>\n </nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n<script type=\"module\">\n const page = document.getElementById(\"grid-panel-demo\");\n const grid = page.querySelector(\"nve-grid\");\n const panel = page.querySelector(\"nve-page-panel\");\n const rows = grid.querySelectorAll(\"nve-grid-row\");\n const heading = page.querySelector(\"nve-page-panel-header h3\");\n\n panel.addEventListener(\"close\", () => {\n rows.forEach((row) => (row.selected = false));\n panel.hidden = true;\n });\n\n grid.addEventListener(\"click\", (e) => {\n if (e.target.localName === \"nve-icon-button\") {\n const row = e.target.closest(\"nve-grid-row\");\n rows.forEach((row) => (row.selected = false));\n panel.hidden = false;\n heading.textContent = \"Row \" + e.target.value + \" Details\";\n row.selected = !panel.hidden;\n }\n });\n</script>\n",
367
367
  "summary": "Use a nve-page-panel when displaying advanced filtering or display settings for the grid. Item detail panels should be open using a action button placed at the end of the grid row.",
368
368
  "description": "",
369
369
  "composition": true,
@@ -23,7 +23,7 @@ var y = class extends g {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-grid",
26
- version: "2.12.0",
26
+ version: "2.12.2",
27
27
  children: [
28
28
  d.metadata.tag,
29
29
  f.metadata.tag,
@@ -19,7 +19,7 @@ var m = class extends d {
19
19
  static {
20
20
  this.metadata = {
21
21
  tag: "nve-grid-header",
22
- version: "2.12.0",
22
+ version: "2.12.2",
23
23
  children: [c.metadata.tag]
24
24
  };
25
25
  }
@@ -10,7 +10,7 @@ var a = class extends r {
10
10
  static {
11
11
  this.metadata = {
12
12
  tag: "nve-grid-placeholder",
13
- version: "2.12.0"
13
+ version: "2.12.2"
14
14
  };
15
15
  }
16
16
  render() {
@@ -15,7 +15,7 @@ var u = class extends s {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-grid-row",
18
- version: "2.12.0",
18
+ version: "2.12.2",
19
19
  children: [a.metadata.tag]
20
20
  };
21
21
  }
@@ -52,7 +52,7 @@
52
52
  {
53
53
  "id": "icon-registration",
54
54
  "name": "Registration",
55
- "template": "<nve-icon name=\"smile\" style=\"--width: 75px; --height: 75px\"></nve-icon>\n<script type=\"module\">\n customElements.get(\"nve-icon\").add({\n smile: {\n svg: () =>\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 48 48\"><circle cx=\"24\" cy=\"24\" r=\"16\" stroke=\"currentColor\" stroke-width=\"3\"/><circle cx=\"18\" cy=\"20\" r=\"2\" fill=\"currentColor\"/><circle cx=\"30\" cy=\"20\" r=\"2\" fill=\"currentColor\"/><path d=\"M17 29c1.5 2.5 4.2 4 7 4s5.5-1.5 7-4\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\"/></svg>',\n },\n });\n</script>\n",
55
+ "template": "<nve-icon name=\"smile\" style=\"--width: 75px; --height: 75px\"></nve-icon>\n\n<script type=\"module\">\n customElements.get(\"nve-icon\").add({\n smile: {\n svg: () =>\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 48 48\"><circle cx=\"24\" cy=\"24\" r=\"16\" stroke=\"currentColor\" stroke-width=\"3\"/><circle cx=\"18\" cy=\"20\" r=\"2\" fill=\"currentColor\"/><circle cx=\"30\" cy=\"20\" r=\"2\" fill=\"currentColor\"/><path d=\"M17 29c1.5 2.5 4.2 4 7 4s5.5-1.5 7-4\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\"/></svg>',\n },\n });\n</script>\n",
56
56
  "summary": "Register SVG paths and make them accessible to the `<nve-icon>` element. Define icons via a string or async function returning the resulting string.",
57
57
  "description": "",
58
58
  "composition": false,
@@ -16,7 +16,7 @@ var f = class e extends o {
16
16
  static {
17
17
  this.metadata = {
18
18
  tag: "nve-icon",
19
- version: "2.12.0"
19
+ version: "2.12.2"
20
20
  };
21
21
  }
22
22
  static {
@@ -103,7 +103,7 @@ a([l({
103
103
  })], f.prototype, "name", void 0), a([d()], f.prototype, "svg", void 0);
104
104
  function p(t) {
105
105
  if (typeof globalThis.customElements?.get == "function") {
106
- let n = e(t.metadata.version), i = e("2.12.0");
106
+ let n = e(t.metadata.version), i = e("2.12.2");
107
107
  n.minor <= i.minor && n.major <= i.major && (t._icons = {
108
108
  ...t._icons,
109
109
  ...r