@nova-design-system/nova-webcomponents 3.0.0-beta.30 → 3.0.0-beta.31

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 (475) hide show
  1. package/dist/blazor-docs.json +944 -1609
  2. package/dist/cjs/{app-globals-d8cbb987.js → app-globals-69764290.js} +2 -2
  3. package/dist/cjs/{app-globals-d8cbb987.js.map → app-globals-69764290.js.map} +1 -1
  4. package/dist/cjs/{index-c50face0.js → index-72b8a9ad.js} +856 -497
  5. package/dist/cjs/index-72b8a9ad.js.map +1 -0
  6. package/dist/cjs/loader.cjs.js +3 -3
  7. package/dist/cjs/native.cjs.js +4 -4
  8. package/dist/cjs/native.cjs.js.map +1 -1
  9. package/dist/cjs/nv-alert.cjs.entry.js +22 -9
  10. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-avatar.cjs.entry.js +8 -11
  12. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nv-badge.cjs.entry.js +145 -0
  14. package/dist/cjs/nv-badge.cjs.entry.js.map +1 -0
  15. package/dist/cjs/nv-base.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-button.cjs.entry.js +40 -8
  17. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-col.cjs.entry.js +1 -2
  19. package/dist/cjs/nv-col.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nv-datagrid.cjs.entry.js +31 -5
  21. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  22. package/dist/cjs/nv-datagridbody.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -3
  24. package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +1 -2
  26. package/dist/cjs/nv-datagriddatacell.cjs.entry.js.map +1 -1
  27. package/dist/cjs/nv-datagridhead.cjs.entry.js +1 -1
  28. package/dist/cjs/nv-datagridrow.cjs.entry.js +1 -1
  29. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +40 -9
  30. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fielddropdown.cjs.entry.js +59 -20
  32. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +13 -7
  34. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fieldnumber.cjs.entry.js +48 -22
  36. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fieldpassword.cjs.entry.js +65 -24
  38. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fieldradio.cjs.entry.js +29 -11
  40. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fieldselect.cjs.entry.js +65 -24
  42. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fieldtext.cjs.entry.js +55 -25
  44. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +61 -23
  46. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nv-fieldtoggle.cjs.entry.js +21 -8
  48. package/dist/cjs/nv-fieldtoggle.cjs.entry.js.map +1 -1
  49. package/dist/cjs/nv-icon.cjs.entry.js +5 -10
  50. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  51. package/dist/cjs/{nv-iconbutton_2.cjs.entry.js → nv-iconbutton.cjs.entry.js} +44 -31
  52. package/dist/cjs/nv-iconbutton.cjs.entry.js.map +1 -0
  53. package/dist/cjs/nv-loader.cjs.entry.js +35 -0
  54. package/dist/cjs/nv-loader.cjs.entry.js.map +1 -0
  55. package/dist/cjs/nv-menu.cjs.entry.js +21 -2
  56. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-menuitem.cjs.entry.js +7 -3
  58. package/dist/cjs/nv-menuitem.cjs.entry.js.map +1 -1
  59. package/dist/cjs/nv-popover.cjs.entry.js +49 -13
  60. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  61. package/dist/cjs/nv-row.cjs.entry.js +2 -2
  62. package/dist/cjs/nv-stack.cjs.entry.js +8 -6
  63. package/dist/cjs/nv-stack.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-table.cjs.entry.js +28 -7
  65. package/dist/cjs/nv-table.cjs.entry.js.map +1 -1
  66. package/dist/cjs/nv-tablebody.cjs.entry.js +2 -2
  67. package/dist/cjs/nv-tablecolumn.cjs.entry.js +16 -5
  68. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nv-tabledatacell.cjs.entry.js +18 -3
  70. package/dist/cjs/nv-tabledatacell.cjs.entry.js.map +1 -1
  71. package/dist/cjs/nv-tablehead.cjs.entry.js +2 -2
  72. package/dist/cjs/nv-tablerow.cjs.entry.js +2 -2
  73. package/dist/cjs/nv-tooltip.cjs.entry.js +12 -3
  74. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  75. package/dist/collection/collection-manifest.json +1 -3
  76. package/dist/collection/components/nv-alert/nv-alert.js +37 -8
  77. package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
  78. package/dist/collection/components/nv-avatar/nv-avatar.js +31 -10
  79. package/dist/collection/components/nv-avatar/nv-avatar.js.map +1 -1
  80. package/dist/collection/components/nv-badge/nv-badge.css +20 -20
  81. package/dist/collection/components/nv-badge/nv-badge.js +54 -10
  82. package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
  83. package/dist/collection/components/nv-button/nv-button.js +53 -7
  84. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  85. package/dist/collection/components/nv-col/nv-col.js +2 -3
  86. package/dist/collection/components/nv-col/nv-col.js.map +1 -1
  87. package/dist/collection/components/nv-datagrid/nv-datagrid.js +42 -4
  88. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  89. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +4 -4
  90. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
  91. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +2 -3
  92. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js.map +1 -1
  93. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +73 -8
  94. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  95. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.css +17 -6
  96. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +87 -18
  97. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  98. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.css +9 -17
  99. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +19 -5
  100. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
  101. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +1 -1
  102. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +80 -20
  103. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  104. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +102 -23
  105. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
  106. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +52 -10
  107. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  108. package/dist/collection/components/nv-fieldselect/nv-fieldselect.css +1 -1
  109. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +93 -22
  110. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  111. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +96 -24
  112. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  113. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +101 -25
  114. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  115. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js +40 -7
  116. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js.map +1 -1
  117. package/dist/collection/components/nv-icon/nv-icon.js +20 -9
  118. package/dist/collection/components/nv-icon/nv-icon.js.map +1 -1
  119. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +58 -9
  120. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
  121. package/dist/collection/components/nv-loader/nv-loader.js +12 -2
  122. package/dist/collection/components/nv-loader/nv-loader.js.map +1 -1
  123. package/dist/collection/components/nv-menu/nv-menu.js +28 -1
  124. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  125. package/dist/collection/components/nv-menuitem/nv-menuitem.js +14 -2
  126. package/dist/collection/components/nv-menuitem/nv-menuitem.js.map +1 -1
  127. package/dist/collection/components/nv-popover/nv-popover.js +72 -14
  128. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  129. package/dist/collection/components/nv-row/nv-row.js +1 -1
  130. package/dist/collection/components/nv-stack/nv-stack.js +17 -5
  131. package/dist/collection/components/nv-stack/nv-stack.js.map +1 -1
  132. package/dist/collection/components/nv-table/nv-table.js +39 -6
  133. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  134. package/dist/collection/components/nv-tablebody/nv-tablebody.js +1 -1
  135. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +25 -4
  136. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +1 -1
  137. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +23 -2
  138. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js.map +1 -1
  139. package/dist/collection/components/nv-tablehead/nv-tablehead.js +1 -1
  140. package/dist/collection/components/nv-tablerow/nv-tablerow.js +1 -1
  141. package/dist/collection/components/nv-tooltip/nv-tooltip.js +17 -2
  142. package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
  143. package/dist/components/index.js +3 -3
  144. package/dist/components/nv-alert.js +23 -10
  145. package/dist/components/nv-alert.js.map +1 -1
  146. package/dist/components/nv-avatar.js +9 -12
  147. package/dist/components/nv-avatar.js.map +1 -1
  148. package/dist/components/nv-badge.js +173 -1
  149. package/dist/components/nv-badge.js.map +1 -1
  150. package/dist/components/nv-base.js +1 -1
  151. package/dist/components/nv-button.js +41 -9
  152. package/dist/components/nv-button.js.map +1 -1
  153. package/dist/components/nv-col.js +1 -2
  154. package/dist/components/nv-col.js.map +1 -1
  155. package/dist/components/nv-datagrid.js +31 -5
  156. package/dist/components/nv-datagrid.js.map +1 -1
  157. package/dist/components/nv-datagridbody.js +1 -1
  158. package/dist/components/nv-datagridcolumn.js +1 -3
  159. package/dist/components/nv-datagridcolumn.js.map +1 -1
  160. package/dist/components/nv-datagriddatacell.js +1 -2
  161. package/dist/components/nv-datagriddatacell.js.map +1 -1
  162. package/dist/components/nv-datagridhead.js +1 -1
  163. package/dist/components/nv-datagridrow.js +1 -1
  164. package/dist/components/nv-fieldcheckbox.js +152 -1
  165. package/dist/components/nv-fieldcheckbox.js.map +1 -1
  166. package/dist/components/nv-fielddropdown.js +64 -25
  167. package/dist/components/nv-fielddropdown.js.map +1 -1
  168. package/dist/components/nv-fielddropdownitem.js +1 -1
  169. package/dist/components/nv-fieldnumber.js +49 -23
  170. package/dist/components/nv-fieldnumber.js.map +1 -1
  171. package/dist/components/nv-fieldpassword.js +68 -27
  172. package/dist/components/nv-fieldpassword.js.map +1 -1
  173. package/dist/components/nv-fieldradio.js +29 -11
  174. package/dist/components/nv-fieldradio.js.map +1 -1
  175. package/dist/components/nv-fieldselect.js +66 -25
  176. package/dist/components/nv-fieldselect.js.map +1 -1
  177. package/dist/components/nv-fieldtext.js +56 -26
  178. package/dist/components/nv-fieldtext.js.map +1 -1
  179. package/dist/components/nv-fieldtextarea.js +62 -24
  180. package/dist/components/nv-fieldtextarea.js.map +1 -1
  181. package/dist/components/nv-fieldtoggle.js +21 -8
  182. package/dist/components/nv-fieldtoggle.js.map +1 -1
  183. package/dist/components/nv-icon.js +1 -1
  184. package/dist/components/nv-iconbutton.js +1 -1
  185. package/dist/components/nv-loader.js +1 -1
  186. package/dist/components/nv-menu.js +22 -3
  187. package/dist/components/nv-menu.js.map +1 -1
  188. package/dist/components/nv-menuitem.js +8 -4
  189. package/dist/components/nv-menuitem.js.map +1 -1
  190. package/dist/components/nv-popover.js +1 -1
  191. package/dist/components/nv-row.js +2 -2
  192. package/dist/components/nv-stack.js +8 -6
  193. package/dist/components/nv-stack.js.map +1 -1
  194. package/dist/components/nv-table.js +28 -7
  195. package/dist/components/nv-table.js.map +1 -1
  196. package/dist/components/nv-tablebody.js +2 -2
  197. package/dist/components/nv-tablecolumn.js +16 -5
  198. package/dist/components/nv-tablecolumn.js.map +1 -1
  199. package/dist/components/nv-tabledatacell.js +18 -3
  200. package/dist/components/nv-tabledatacell.js.map +1 -1
  201. package/dist/components/nv-tablehead.js +2 -2
  202. package/dist/components/nv-tablerow.js +2 -2
  203. package/dist/components/nv-tooltip.js +13 -4
  204. package/dist/components/nv-tooltip.js.map +1 -1
  205. package/dist/components/{p-d506ae63.js → p-0caa4741.js} +836 -491
  206. package/dist/components/p-0caa4741.js.map +1 -0
  207. package/dist/components/{p-d5dd3def.js → p-1fa35ae5.js} +51 -15
  208. package/dist/components/p-1fa35ae5.js.map +1 -0
  209. package/dist/components/{p-d70df149.js → p-39e93e5b.js} +6 -11
  210. package/dist/components/p-39e93e5b.js.map +1 -0
  211. package/dist/components/{p-a1aa8970.js → p-3ef4ded9.js} +10 -4
  212. package/dist/components/p-3ef4ded9.js.map +1 -0
  213. package/dist/components/{p-ae6a0d80.js → p-c08a278d.js} +207 -172
  214. package/dist/components/p-c08a278d.js.map +1 -0
  215. package/dist/components/{p-b12abc99.js → p-ca5c171f.js} +15 -9
  216. package/dist/components/p-ca5c171f.js.map +1 -0
  217. package/dist/components/{p-8bec002e.js → p-f0d5586a.js} +46 -13
  218. package/dist/components/p-f0d5586a.js.map +1 -0
  219. package/dist/docs.d.ts +8 -0
  220. package/dist/docs.json +941 -1590
  221. package/dist/esm/{app-globals-eea8674a.js → app-globals-c5484a00.js} +2 -2
  222. package/dist/esm/{app-globals-eea8674a.js.map → app-globals-c5484a00.js.map} +1 -1
  223. package/dist/esm/{index-e7b35c14.js → index-b6f70e4a.js} +856 -497
  224. package/dist/esm/index-b6f70e4a.js.map +1 -0
  225. package/dist/esm/loader.js +4 -4
  226. package/dist/esm/native.js +5 -5
  227. package/dist/esm/native.js.map +1 -1
  228. package/dist/esm/nv-alert.entry.js +22 -9
  229. package/dist/esm/nv-alert.entry.js.map +1 -1
  230. package/dist/esm/nv-avatar.entry.js +8 -11
  231. package/dist/esm/nv-avatar.entry.js.map +1 -1
  232. package/dist/esm/nv-badge.entry.js +141 -0
  233. package/dist/esm/nv-badge.entry.js.map +1 -0
  234. package/dist/esm/nv-base.entry.js +1 -1
  235. package/dist/esm/nv-button.entry.js +40 -8
  236. package/dist/esm/nv-button.entry.js.map +1 -1
  237. package/dist/esm/nv-col.entry.js +1 -2
  238. package/dist/esm/nv-col.entry.js.map +1 -1
  239. package/dist/esm/nv-datagrid.entry.js +31 -5
  240. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  241. package/dist/esm/nv-datagridbody.entry.js +1 -1
  242. package/dist/esm/nv-datagridcolumn.entry.js +1 -3
  243. package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
  244. package/dist/esm/nv-datagriddatacell.entry.js +1 -2
  245. package/dist/esm/nv-datagriddatacell.entry.js.map +1 -1
  246. package/dist/esm/nv-datagridhead.entry.js +1 -1
  247. package/dist/esm/nv-datagridrow.entry.js +1 -1
  248. package/dist/esm/nv-fieldcheckbox.entry.js +40 -9
  249. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  250. package/dist/esm/nv-fielddropdown.entry.js +59 -20
  251. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  252. package/dist/esm/nv-fielddropdownitem.entry.js +13 -7
  253. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  254. package/dist/esm/nv-fieldnumber.entry.js +48 -22
  255. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  256. package/dist/esm/nv-fieldpassword.entry.js +65 -24
  257. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  258. package/dist/esm/nv-fieldradio.entry.js +29 -11
  259. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  260. package/dist/esm/nv-fieldselect.entry.js +65 -24
  261. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  262. package/dist/esm/nv-fieldtext.entry.js +55 -25
  263. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  264. package/dist/esm/nv-fieldtextarea.entry.js +61 -23
  265. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  266. package/dist/esm/nv-fieldtoggle.entry.js +21 -8
  267. package/dist/esm/nv-fieldtoggle.entry.js.map +1 -1
  268. package/dist/esm/nv-icon.entry.js +5 -10
  269. package/dist/esm/nv-icon.entry.js.map +1 -1
  270. package/dist/esm/{nv-iconbutton_2.entry.js → nv-iconbutton.entry.js} +45 -31
  271. package/dist/esm/nv-iconbutton.entry.js.map +1 -0
  272. package/dist/esm/nv-loader.entry.js +31 -0
  273. package/dist/esm/nv-loader.entry.js.map +1 -0
  274. package/dist/esm/nv-menu.entry.js +21 -2
  275. package/dist/esm/nv-menu.entry.js.map +1 -1
  276. package/dist/esm/nv-menuitem.entry.js +7 -3
  277. package/dist/esm/nv-menuitem.entry.js.map +1 -1
  278. package/dist/esm/nv-popover.entry.js +49 -13
  279. package/dist/esm/nv-popover.entry.js.map +1 -1
  280. package/dist/esm/nv-row.entry.js +2 -2
  281. package/dist/esm/nv-stack.entry.js +8 -6
  282. package/dist/esm/nv-stack.entry.js.map +1 -1
  283. package/dist/esm/nv-table.entry.js +28 -7
  284. package/dist/esm/nv-table.entry.js.map +1 -1
  285. package/dist/esm/nv-tablebody.entry.js +2 -2
  286. package/dist/esm/nv-tablecolumn.entry.js +16 -5
  287. package/dist/esm/nv-tablecolumn.entry.js.map +1 -1
  288. package/dist/esm/nv-tabledatacell.entry.js +18 -3
  289. package/dist/esm/nv-tabledatacell.entry.js.map +1 -1
  290. package/dist/esm/nv-tablehead.entry.js +2 -2
  291. package/dist/esm/nv-tablerow.entry.js +2 -2
  292. package/dist/esm/nv-tooltip.entry.js +12 -3
  293. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  294. package/dist/native/native.css +1 -1
  295. package/dist/native/native.esm.js +1 -1
  296. package/dist/native/native.esm.js.map +1 -1
  297. package/dist/native/p-01262eaf.entry.js +2 -0
  298. package/dist/native/p-01262eaf.entry.js.map +1 -0
  299. package/dist/native/p-0bf2007c.entry.js +2 -0
  300. package/dist/native/p-0bf2007c.entry.js.map +1 -0
  301. package/dist/native/{p-69ca8c88.entry.js → p-11faaf31.entry.js} +2 -2
  302. package/dist/native/p-11faaf31.entry.js.map +1 -0
  303. package/dist/native/p-17dba26d.entry.js +2 -0
  304. package/dist/native/{p-c8f36510.entry.js → p-2a6ca749.entry.js} +2 -2
  305. package/dist/native/p-2a6ca749.entry.js.map +1 -0
  306. package/dist/native/{p-91d30cd7.entry.js → p-31367928.entry.js} +2 -2
  307. package/dist/native/p-31367928.entry.js.map +1 -0
  308. package/dist/native/p-327fa1a0.entry.js +2 -0
  309. package/dist/native/{p-dbade286.entry.js → p-380bcc2b.entry.js} +2 -2
  310. package/dist/native/p-380bcc2b.entry.js.map +1 -0
  311. package/dist/native/p-47c78fe4.entry.js +2 -0
  312. package/dist/native/p-47c78fe4.entry.js.map +1 -0
  313. package/dist/native/{p-305951e4.entry.js → p-4a64f5b0.entry.js} +2 -2
  314. package/dist/native/p-4a64f5b0.entry.js.map +1 -0
  315. package/dist/native/{p-13070761.entry.js → p-50c31094.entry.js} +2 -2
  316. package/dist/native/p-50c31094.entry.js.map +1 -0
  317. package/dist/native/{p-a59ec107.entry.js → p-605f8b3d.entry.js} +2 -2
  318. package/dist/native/p-605f8b3d.entry.js.map +1 -0
  319. package/dist/native/p-64ae9a21.entry.js +2 -0
  320. package/dist/native/p-64ae9a21.entry.js.map +1 -0
  321. package/dist/native/{p-20c7fc4d.entry.js → p-6e8bcd5b.entry.js} +2 -2
  322. package/dist/native/p-6e8bcd5b.entry.js.map +1 -0
  323. package/dist/native/{p-92e3e334.entry.js → p-6eb50254.entry.js} +2 -2
  324. package/dist/native/p-6eb50254.entry.js.map +1 -0
  325. package/dist/native/p-6ef216c4.js +3 -0
  326. package/dist/native/p-6ef216c4.js.map +1 -0
  327. package/dist/native/{p-1aaee302.entry.js → p-7701e4cc.entry.js} +2 -2
  328. package/dist/native/p-7701e4cc.entry.js.map +1 -0
  329. package/dist/native/p-86947929.entry.js +2 -0
  330. package/dist/native/{p-982e474f.entry.js.map → p-86947929.entry.js.map} +1 -1
  331. package/dist/native/p-8f95f4fa.entry.js +2 -0
  332. package/dist/native/p-8f95f4fa.entry.js.map +1 -0
  333. package/dist/native/{p-12eaebd6.entry.js → p-919cf3ec.entry.js} +2 -2
  334. package/dist/native/p-919cf3ec.entry.js.map +1 -0
  335. package/dist/native/p-93eea6e1.entry.js +2 -0
  336. package/dist/native/{p-e842220b.entry.js.map → p-93eea6e1.entry.js.map} +1 -1
  337. package/dist/native/p-95714583.js +2 -0
  338. package/dist/native/p-9f89229b.entry.js +2 -0
  339. package/dist/native/{p-2fca31c0.entry.js.map → p-9f89229b.entry.js.map} +1 -1
  340. package/dist/native/p-9fe47948.entry.js +2 -0
  341. package/dist/native/p-9fe47948.entry.js.map +1 -0
  342. package/dist/native/{p-7b2d8b8c.entry.js → p-a89f5542.entry.js} +2 -2
  343. package/dist/native/p-a89f5542.entry.js.map +1 -0
  344. package/dist/native/p-afbc5259.entry.js +2 -0
  345. package/dist/native/p-afbc5259.entry.js.map +1 -0
  346. package/dist/native/p-b3ec71c9.entry.js +2 -0
  347. package/dist/native/p-bbe9a373.entry.js +2 -0
  348. package/dist/native/p-c2dfee1a.entry.js +2 -0
  349. package/dist/native/p-c5e3e234.entry.js +2 -0
  350. package/dist/native/p-c5e3e234.entry.js.map +1 -0
  351. package/dist/native/{p-36d5158c.entry.js → p-c85d031d.entry.js} +3 -3
  352. package/dist/native/p-c85d031d.entry.js.map +1 -0
  353. package/dist/native/{p-5b4bdbe2.entry.js → p-d4277c50.entry.js} +2 -2
  354. package/dist/native/p-d4277c50.entry.js.map +1 -0
  355. package/dist/native/p-dacd68ab.entry.js +2 -0
  356. package/dist/native/p-dacd68ab.entry.js.map +1 -0
  357. package/dist/native/p-de9d0b05.entry.js +2 -0
  358. package/dist/native/p-de9d0b05.entry.js.map +1 -0
  359. package/dist/native/{p-65ad60eb.entry.js → p-df6c9137.entry.js} +2 -2
  360. package/dist/native/p-df6c9137.entry.js.map +1 -0
  361. package/dist/native/p-e05b0c4a.entry.js +2 -0
  362. package/dist/native/p-e05b0c4a.entry.js.map +1 -0
  363. package/dist/native/{p-330c929d.entry.js → p-e71fc762.entry.js} +2 -2
  364. package/dist/native/p-ef7f605a.entry.js +2 -0
  365. package/dist/native/p-f2e31579.entry.js +2 -0
  366. package/dist/native/{p-671699bf.entry.js.map → p-f2e31579.entry.js.map} +1 -1
  367. package/dist/types/components/nv-fieldtextarea/nv-fieldtextarea.d.ts +2 -2
  368. package/dist/types/components.d.ts +8 -337
  369. package/dist/vscode-data.json +4 -328
  370. package/hydrate/index.js +1858 -2215
  371. package/hydrate/index.mjs +1858 -2215
  372. package/package.json +1 -1
  373. package/dist/cjs/index-c50face0.js.map +0 -1
  374. package/dist/cjs/nv-badge_2.cjs.entry.js +0 -159
  375. package/dist/cjs/nv-badge_2.cjs.entry.js.map +0 -1
  376. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +0 -1038
  377. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +0 -1
  378. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +0 -1
  379. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.css +0 -12
  380. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js +0 -6
  381. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js.map +0 -1
  382. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +0 -171
  383. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +0 -1
  384. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.css +0 -201
  385. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +0 -257
  386. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +0 -1
  387. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +0 -1578
  388. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +0 -1
  389. package/dist/components/nv-fielddropdownitemcheck.d.ts +0 -11
  390. package/dist/components/nv-fielddropdownitemcheck.js +0 -8
  391. package/dist/components/nv-fielddropdownitemcheck.js.map +0 -1
  392. package/dist/components/nv-fieldmultiselect.d.ts +0 -11
  393. package/dist/components/nv-fieldmultiselect.js +0 -1129
  394. package/dist/components/nv-fieldmultiselect.js.map +0 -1
  395. package/dist/components/p-5ce661bd.js +0 -125
  396. package/dist/components/p-5ce661bd.js.map +0 -1
  397. package/dist/components/p-8bec002e.js.map +0 -1
  398. package/dist/components/p-a1aa8970.js.map +0 -1
  399. package/dist/components/p-a4802979.js +0 -151
  400. package/dist/components/p-a4802979.js.map +0 -1
  401. package/dist/components/p-ae6a0d80.js.map +0 -1
  402. package/dist/components/p-b12abc99.js.map +0 -1
  403. package/dist/components/p-d506ae63.js.map +0 -1
  404. package/dist/components/p-d5dd3def.js.map +0 -1
  405. package/dist/components/p-d70df149.js.map +0 -1
  406. package/dist/components/p-e4641c41.js +0 -72
  407. package/dist/components/p-e4641c41.js.map +0 -1
  408. package/dist/esm/index-e7b35c14.js.map +0 -1
  409. package/dist/esm/nv-badge_2.entry.js +0 -154
  410. package/dist/esm/nv-badge_2.entry.js.map +0 -1
  411. package/dist/esm/nv-fieldmultiselect.entry.js +0 -1034
  412. package/dist/esm/nv-fieldmultiselect.entry.js.map +0 -1
  413. package/dist/esm/nv-iconbutton_2.entry.js.map +0 -1
  414. package/dist/native/p-0fbb962b.entry.js +0 -2
  415. package/dist/native/p-0fbb962b.entry.js.map +0 -1
  416. package/dist/native/p-12eaebd6.entry.js.map +0 -1
  417. package/dist/native/p-13070761.entry.js.map +0 -1
  418. package/dist/native/p-1aaee302.entry.js.map +0 -1
  419. package/dist/native/p-1c689ec7.entry.js +0 -2
  420. package/dist/native/p-1c689ec7.entry.js.map +0 -1
  421. package/dist/native/p-20c7fc4d.entry.js.map +0 -1
  422. package/dist/native/p-2fca31c0.entry.js +0 -2
  423. package/dist/native/p-305951e4.entry.js.map +0 -1
  424. package/dist/native/p-306d1f04.entry.js +0 -2
  425. package/dist/native/p-306d1f04.entry.js.map +0 -1
  426. package/dist/native/p-36d5158c.entry.js.map +0 -1
  427. package/dist/native/p-39dbb15b.entry.js +0 -2
  428. package/dist/native/p-39dbb15b.entry.js.map +0 -1
  429. package/dist/native/p-3f912745.entry.js +0 -2
  430. package/dist/native/p-3f912745.entry.js.map +0 -1
  431. package/dist/native/p-4e351d8e.entry.js +0 -2
  432. package/dist/native/p-4e351d8e.entry.js.map +0 -1
  433. package/dist/native/p-589eb477.entry.js +0 -2
  434. package/dist/native/p-5b4bdbe2.entry.js.map +0 -1
  435. package/dist/native/p-65ad60eb.entry.js.map +0 -1
  436. package/dist/native/p-671699bf.entry.js +0 -2
  437. package/dist/native/p-69ca8c88.entry.js.map +0 -1
  438. package/dist/native/p-7a7b9b95.entry.js +0 -2
  439. package/dist/native/p-7b2d8b8c.entry.js.map +0 -1
  440. package/dist/native/p-7b3a4cbf.entry.js +0 -2
  441. package/dist/native/p-7b3a4cbf.entry.js.map +0 -1
  442. package/dist/native/p-91d30cd7.entry.js.map +0 -1
  443. package/dist/native/p-92e3e334.entry.js.map +0 -1
  444. package/dist/native/p-982e474f.entry.js +0 -2
  445. package/dist/native/p-a03df637.entry.js +0 -2
  446. package/dist/native/p-a03df637.entry.js.map +0 -1
  447. package/dist/native/p-a5582014.entry.js +0 -2
  448. package/dist/native/p-a5582014.entry.js.map +0 -1
  449. package/dist/native/p-a59ec107.entry.js.map +0 -1
  450. package/dist/native/p-a7a3c45f.entry.js +0 -2
  451. package/dist/native/p-a7be7540.entry.js +0 -2
  452. package/dist/native/p-a7be7540.entry.js.map +0 -1
  453. package/dist/native/p-a8c0fefa.entry.js +0 -2
  454. package/dist/native/p-a8c0fefa.entry.js.map +0 -1
  455. package/dist/native/p-b4aea326.js +0 -3
  456. package/dist/native/p-b4aea326.js.map +0 -1
  457. package/dist/native/p-c8f36510.entry.js.map +0 -1
  458. package/dist/native/p-d3d682a7.entry.js +0 -2
  459. package/dist/native/p-d4c0a1e0.entry.js +0 -2
  460. package/dist/native/p-dbade286.entry.js.map +0 -1
  461. package/dist/native/p-e842220b.entry.js +0 -2
  462. package/dist/native/p-eeb6a3dc.js +0 -2
  463. package/dist/native/p-f7b96c42.entry.js +0 -2
  464. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.d.ts +0 -52
  465. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.d.ts +0 -4
  466. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +0 -405
  467. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.d.ts +0 -4
  468. /package/dist/native/{p-a7a3c45f.entry.js.map → p-17dba26d.entry.js.map} +0 -0
  469. /package/dist/native/{p-d4c0a1e0.entry.js.map → p-327fa1a0.entry.js.map} +0 -0
  470. /package/dist/native/{p-eeb6a3dc.js.map → p-95714583.js.map} +0 -0
  471. /package/dist/native/{p-589eb477.entry.js.map → p-b3ec71c9.entry.js.map} +0 -0
  472. /package/dist/native/{p-7a7b9b95.entry.js.map → p-bbe9a373.entry.js.map} +0 -0
  473. /package/dist/native/{p-d3d682a7.entry.js.map → p-c2dfee1a.entry.js.map} +0 -0
  474. /package/dist/native/{p-330c929d.entry.js.map → p-e71fc762.entry.js.map} +0 -0
  475. /package/dist/native/{p-f7b96c42.entry.js.map → p-ef7f605a.entry.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, a as Host, g as getElement } from './index-e7b35c14.js';
1
+ import { r as registerInstance, h, a as Host, g as getElement } from './index-b6f70e4a.js';
2
2
  import { c as clsx } from './clsx-297c1ffe.js';
3
3
 
4
4
  const nvIconbuttonCss = "nv-iconbutton.root{display:inline-flex;justify-content:center;align-items:center;font-style:normal;font-weight:500;font-family:\"TT Norms Pro\", sans-serif;transition:background-color 150ms ease-out;height:fit-content;width:fit-content}nv-iconbutton.size-xs{padding:var(--button-xs-icon-button-padding);gap:var(--button-xs-gap);border-radius:var(--button-xs-border-radius);line-height:var(--button-xs-line-height);font-size:var(--button-xs-font-size)}nv-iconbutton.size-sm{padding:var(--button-sm-icon-button-padding);gap:var(--button-sm-gap);border-radius:var(--button-sm-border-radius);line-height:var(--button-sm-line-height);font-size:var(--button-sm-font-size)}nv-iconbutton.size-md{padding:var(--button-md-icon-button-padding);gap:var(--button-md-gap);border-radius:var(--button-md-border-radius);line-height:var(--button-md-line-height);font-size:var(--button-md-font-size)}nv-iconbutton.size-lg{padding:var(--button-lg-icon-button-padding);gap:var(--button-lg-gap);border-radius:var(--button-lg-border-radius);line-height:var(--button-lg-line-height);font-size:var(--button-lg-font-size)}nv-iconbutton.emphasis-high{background:var(--components-button-high-background);border:1px solid var(--components-button-high-border);color:var(--components-button-high-text)}nv-iconbutton.emphasis-high:hover{background:var(--components-button-high-background-hover);color:var(--components-button-high-text-hover)}nv-iconbutton.emphasis-high:focus,nv-iconbutton.emphasis-high:focus-within{outline:none}nv-iconbutton.emphasis-high:focus-visible,nv-iconbutton.emphasis-high:has(:focus-visible){outline:var(--focus-outline-stroke) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-high:disabled{background:var(--components-button-high-background);color:var(--components-button-high-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-high nv-icon>svg{color:var(--components-button-high-icon)}nv-iconbutton.emphasis-medium{background:var(--components-button-medium-background);border:1px solid var(--components-button-medium-border);color:var(--components-button-medium-text)}nv-iconbutton.emphasis-medium:hover{background:var(--components-button-medium-background-hover);color:var(--components-button-medium-text-hover)}nv-iconbutton.emphasis-medium:focus,nv-iconbutton.emphasis-medium:focus-within{outline:none}nv-iconbutton.emphasis-medium:focus-visible,nv-iconbutton.emphasis-medium:has(:focus-visible){outline:var(--focus-outline-stroke) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-medium:disabled{background:var(--components-button-medium-background);color:var(--components-button-medium-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-medium nv-icon>svg{color:var(--components-button-medium-icon)}nv-iconbutton.emphasis-low{background:var(--components-button-low-background);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text)}nv-iconbutton.emphasis-low:hover{background:var(--components-button-low-background-hover);color:var(--components-button-low-text-hover)}nv-iconbutton.emphasis-low:focus,nv-iconbutton.emphasis-low:focus-within{outline:none}nv-iconbutton.emphasis-low:focus-visible,nv-iconbutton.emphasis-low:has(:focus-visible){outline:var(--focus-outline-stroke) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-low:disabled{background:var(--components-button-low-background);color:var(--components-button-low-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-low nv-icon>svg{color:var(--components-button-low-icon)}nv-iconbutton.emphasis-lower{background:var(--components-button-lower-background);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text)}nv-iconbutton.emphasis-lower:hover{background:var(--components-button-lower-background-hover);color:var(--components-button-lower-text-hover)}nv-iconbutton.emphasis-lower:focus,nv-iconbutton.emphasis-lower:focus-within{outline:none}nv-iconbutton.emphasis-lower:focus-visible,nv-iconbutton.emphasis-lower:has(:focus-visible){outline:var(--focus-outline-stroke) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-lower:disabled{background:var(--components-button-lower-background);color:var(--components-button-lower-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-lower nv-icon>svg{color:var(--components-button-lower-icon)}nv-iconbutton.loading [slot=leading-icon]{display:none}nv-iconbutton.shape-rounded{border-radius:var(--radius-rounded-full)}";
@@ -14,6 +14,47 @@ const NvIconbutton = class {
14
14
  this.internals = hostRef.$hostElement$.attachInternals();
15
15
  hostRef.$hostElement$["s-ei"] = this.internals;
16
16
  }
17
+ /****************************************************************************/
18
+ //#region PROPERTIES
19
+ /**
20
+ * Determines how large or small the button appears, allowing for
21
+ * customization of the button's dimensions to fit different design
22
+ * specifications and user needs.
23
+ */
24
+ this.size = 'md';
25
+ /**
26
+ * Adjusts the button’s emphasis to make it more or less visually prominent
27
+ * to users. Use this to draw attention to important actions or reduce focus
28
+ * on less critical ones.
29
+ */
30
+ this.emphasis = 'high';
31
+ /**
32
+ * Set this to true to show a spinner on the button, letting users know that
33
+ * their action is being processed. It helps improve user experience by
34
+ * indicating ongoing activities. The icon is not displayed when the button
35
+ * is loading. Also, the button is disabled. If you want to disable the
36
+ * button, it is not possible. It is automatically disabled when loading.
37
+ */
38
+ this.loading = false;
39
+ /**
40
+ * Disables the button, preventing user interaction.
41
+ */
42
+ this.disabled = false;
43
+ /**
44
+ * Makes the button look active when it’s within a compatible component
45
+ * like a button group.
46
+ */
47
+ this.active = false;
48
+ /**
49
+ * Sets the button type to control its function in forms. Use 'submit' to send
50
+ * form data, 'reset' to clear the form, or 'button' for a standard button
51
+ * that doesn’t interact with form submission by default.
52
+ */
53
+ this.type = 'button';
54
+ /**
55
+ * Sets the shape of the button. Choose between square and rounded.
56
+ */
57
+ this.shape = 'square';
17
58
  //#endregion PROPERTIES
18
59
  /****************************************************************************/
19
60
  //#region METHODS
@@ -36,14 +77,6 @@ const NvIconbutton = class {
36
77
  (_d = (_c = this.internals) === null || _c === void 0 ? void 0 : _c.form) === null || _d === void 0 ? void 0 : _d.reset();
37
78
  }
38
79
  };
39
- this.size = 'md';
40
- this.emphasis = 'high';
41
- this.loading = false;
42
- this.disabled = false;
43
- this.active = false;
44
- this.name = undefined;
45
- this.type = 'button';
46
- this.shape = 'square';
47
80
  }
48
81
  //#endregion METHODS
49
82
  /****************************************************************************/
@@ -72,7 +105,7 @@ const NvIconbutton = class {
72
105
  /****************************************************************************/
73
106
  //#region RENDER
74
107
  render() {
75
- return (h(Host, { key: '5c4107ececbf6252efbf033882481c793aebfadb', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && h("nv-loader", { key: 'd9ba86fb063f9bf3d6d6d95949222fcd4bf07da5', size: this.size }), !this.loading && h("nv-icon", { key: '4fc7acc39c5dbb5bb668445f6427a28f767d8a0b', name: this.name, size: this.size }), h("slot", { key: '21b8444e3e4f4d5f0f4b9b12f7edc2d6ec48ea80' })));
108
+ return (h(Host, { key: '7d785e95270a8ebcf303a345a887005774295ee6', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && h("nv-loader", { key: '028836989901ce6f625f325d368c661b31477e62', size: this.size }), !this.loading && h("nv-icon", { key: '5184638cc9dd4550c65eca5b2492806e5e77e43e', name: this.name, size: this.size }), h("slot", { key: '36ab315cb2ac6741c4debb5bfa84eb2e05e3abc8' })));
76
109
  }
77
110
  static get formAssociated() { return true; }
78
111
  get el() { return getElement(this); }
@@ -83,25 +116,6 @@ const NvIconbutton = class {
83
116
  };
84
117
  NvIconbutton.style = NvIconbuttonStyle0;
85
118
 
86
- const nvLoaderCss = "@keyframes rotation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}nv-loader{display:inline-block;position:relative;aspect-ratio:1/1;border-radius:9999px;color:inherit}nv-loader.size-xs{width:var(--loader-size-xs);height:var(--loader-size-xs)}nv-loader.size-xs::before,nv-loader.size-xs::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xs::before{content:\" \";border:calc(var(--loader-size-xs) / 10) solid;opacity:0.3}nv-loader.size-xs::after{content:\" \";border-top:calc(var(--loader-size-xs) / 10) solid transparent;border-left:calc(var(--loader-size-xs) / 10) solid transparent;border-right:calc(var(--loader-size-xs) / 10) solid transparent;border-bottom:calc(var(--loader-size-xs) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-sm{width:var(--loader-size-sm);height:var(--loader-size-sm)}nv-loader.size-sm::before,nv-loader.size-sm::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-sm::before{content:\" \";border:calc(var(--loader-size-sm) / 10) solid;opacity:0.3}nv-loader.size-sm::after{content:\" \";border-top:calc(var(--loader-size-sm) / 10) solid transparent;border-left:calc(var(--loader-size-sm) / 10) solid transparent;border-right:calc(var(--loader-size-sm) / 10) solid transparent;border-bottom:calc(var(--loader-size-sm) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-md{width:var(--loader-size-md);height:var(--loader-size-md)}nv-loader.size-md::before,nv-loader.size-md::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-md::before{content:\" \";border:calc(var(--loader-size-md) / 10) solid;opacity:0.3}nv-loader.size-md::after{content:\" \";border-top:calc(var(--loader-size-md) / 10) solid transparent;border-left:calc(var(--loader-size-md) / 10) solid transparent;border-right:calc(var(--loader-size-md) / 10) solid transparent;border-bottom:calc(var(--loader-size-md) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-lg{width:var(--loader-size-lg);height:var(--loader-size-lg)}nv-loader.size-lg::before,nv-loader.size-lg::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-lg::before{content:\" \";border:calc(var(--loader-size-lg) / 10) solid;opacity:0.3}nv-loader.size-lg::after{content:\" \";border-top:calc(var(--loader-size-lg) / 10) solid transparent;border-left:calc(var(--loader-size-lg) / 10) solid transparent;border-right:calc(var(--loader-size-lg) / 10) solid transparent;border-bottom:calc(var(--loader-size-lg) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-xl{width:var(--loader-size-xl);height:var(--loader-size-xl)}nv-loader.size-xl::before,nv-loader.size-xl::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xl::before{content:\" \";border:calc(var(--loader-size-xl) / 10) solid;opacity:0.3}nv-loader.size-xl::after{content:\" \";border-top:calc(var(--loader-size-xl) / 10) solid transparent;border-left:calc(var(--loader-size-xl) / 10) solid transparent;border-right:calc(var(--loader-size-xl) / 10) solid transparent;border-bottom:calc(var(--loader-size-xl) / 10) solid;animation:rotation 1s linear infinite}nv-loader.color-brand::before{border-color:var(--components-loader-brand-background);opacity:1}nv-loader.color-brand::after{border-bottom-color:var(--components-loader-brand-foreground)}nv-loader.color-white::before{border-color:var(--components-loader-white-background);opacity:1}nv-loader.color-white::after{border-bottom-color:var(--components-loader-white-foreground)}";
87
- const NvLoaderStyle0 = nvLoaderCss;
88
-
89
- const NvLoader = class {
90
- constructor(hostRef) {
91
- registerInstance(this, hostRef);
92
- this.size = 'md';
93
- this.color = undefined;
94
- }
95
- //#endregion PROPERTIES
96
- /****************************************************************************/
97
- //#region RENDER
98
- /* <slot> empty to force rendering change */
99
- render() {
100
- return (h(Host, { key: '442187ad4ad5deaa2880a67c9fddf2b2e38d517d', class: clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
101
- }
102
- };
103
- NvLoader.style = NvLoaderStyle0;
104
-
105
- export { NvIconbutton as nv_iconbutton, NvLoader as nv_loader };
119
+ export { NvIconbutton as nv_iconbutton };
106
120
 
107
- //# sourceMappingURL=nv-iconbutton_2.entry.js.map
121
+ //# sourceMappingURL=nv-iconbutton.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"nv-iconbutton.entry.js","mappings":";;;AAAA,MAAM,eAAe,GAAG,8nJAA8nJ,CAAC;AACvpJ,2BAAe,eAAe;;MCuBjB,YAAY;IAPzB;;;;;;;;;;;;;;;;QAoBW,SAAI,GAAoB,IAAI,CAAC;;;;;;QAQ7B,aAAQ,GAAwB,MAAM,CAAC;;;;;;;;QAUhD,YAAO,GAAY,KAAK,CAAC;;;;QAMzB,aAAQ,GAAY,KAAK,CAAC;;;;;QAOjB,WAAM,GAAY,KAAK,CAAC;;;;;;QAgBxB,SAAI,GAAoB,QAAQ,CAAC;;;;QAMjC,UAAK,GAAyB,QAAQ,CAAC;;;;;;;;;;QAYxC,gBAAW,GAAG,CAAC,KAAY;;YACjC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC1B,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,0CAAE,aAAa,EAAE,CAAC;aACvC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBACzB,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,0CAAE,KAAK,EAAE,CAAC;aAC/B;SACF,CAAC;KA6DH;;;;IAtDC,mBAAmB,CAAC,OAAgB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;IAGD,oBAAoB,CAAC,QAAiB;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;KACF;;;;IAMD,iBAAiB;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;SAC9B;KACF;;;;IAMD,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAC,GAAG,EACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,EAC1C,KAAK,EAAE,IAAI,CACT,MAAM,EACN,QAAQ,IAAI,CAAC,IAAI,EAAE,EACnB,YAAY,IAAI,CAAC,QAAQ,EAAE,EAC3B,IAAI,CAAC,OAAO,IAAI,SAAS,EACzB,SAAS,IAAI,CAAC,KAAK,EAAE,CACtB,EACD,OAAO,EAAE,IAAI,CAAC,WAAW,IAExB,IAAI,CAAC,OAAO,IAAI,kEAAW,IAAI,EAAE,IAAI,CAAC,IAAI,GAAc,EAExD,CAAC,IAAI,CAAC,OAAO,IAAI,gEAAS,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EAE/D,8DAAa,CACR,EACP;KACH;;;;;;;;;;;;","names":[],"sources":["src/components/nv-iconbutton/nv-iconbutton.scss?tag=nv-iconbutton","src/components/nv-iconbutton/nv-iconbutton.tsx"],"sourcesContent":["@use \"sass:map\";\n@import \"../../styles/focus-ring\";\n\n/* Variants */\n$button-sizes: (\"xs\", \"sm\", \"md\", \"lg\");\n$button-emphasis: (\"high\", \"medium\", \"low\", \"lower\");\n\n/* Define maps for size-related variables */\n$button-icon-button-padding: (\n \"xs\": var(--button-xs-icon-button-padding),\n \"sm\": var(--button-sm-icon-button-padding),\n \"md\": var(--button-md-icon-button-padding),\n \"lg\": var(--button-lg-icon-button-padding)\n);\n\n$button-gap: (\n \"xs\": var(--button-xs-gap),\n \"sm\": var(--button-sm-gap),\n \"md\": var(--button-md-gap),\n \"lg\": var(--button-lg-gap)\n);\n\n$button-border-radius: (\n \"xs\": var(--button-xs-border-radius),\n \"sm\": var(--button-sm-border-radius),\n \"md\": var(--button-md-border-radius),\n \"lg\": var(--button-lg-border-radius)\n);\n\n$button-line-height: (\n \"xs\": var(--button-xs-line-height),\n \"sm\": var(--button-sm-line-height),\n \"md\": var(--button-md-line-height),\n \"lg\": var(--button-lg-line-height)\n);\n\n$button-font-size: (\n \"xs\": var(--button-xs-font-size),\n \"sm\": var(--button-sm-font-size),\n \"md\": var(--button-md-font-size),\n \"lg\": var(--button-lg-font-size)\n);\n\n/* Define maps for emphasis-related variables */\n$components-button-background: (\n \"high\": var(--components-button-high-background),\n \"medium\": var(--components-button-medium-background),\n \"low\": var(--components-button-low-background),\n \"lower\": var(--components-button-lower-background)\n);\n\n$components-button-border: (\n \"high\": var(--components-button-high-border),\n \"medium\": var(--components-button-medium-border),\n \"low\": var(--components-button-low-border),\n \"lower\": var(--components-button-lower-border)\n);\n\n$components-button-text: (\n \"high\": var(--components-button-high-text),\n \"medium\": var(--components-button-medium-text),\n \"low\": var(--components-button-low-text),\n \"lower\": var(--components-button-lower-text)\n);\n\n$components-button-background-hover: (\n \"high\": var(--components-button-high-background-hover),\n \"medium\": var(--components-button-medium-background-hover),\n \"low\": var(--components-button-low-background-hover),\n \"lower\": var(--components-button-lower-background-hover)\n);\n\n$components-button-text-hover: (\n \"high\": var(--components-button-high-text-hover),\n \"medium\": var(--components-button-medium-text-hover),\n \"low\": var(--components-button-low-text-hover),\n \"lower\": var(--components-button-lower-text-hover)\n);\n\n$components-button-icon: (\n \"high\": var(--components-button-high-icon),\n \"medium\": var(--components-button-medium-icon),\n \"low\": var(--components-button-low-icon),\n \"lower\": var(--components-button-lower-icon)\n);\n\n@mixin root-styles() {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-style: normal;\n font-weight: 500;\n font-family: \"TT Norms Pro\", sans-serif;\n transition: background-color 150ms ease-out;\n height: fit-content;\n width: fit-content;\n}\n\n@mixin size-styles($size) {\n padding: map.get($button-icon-button-padding, $size);\n gap: map.get($button-gap, $size);\n border-radius: map.get($button-border-radius, $size);\n line-height: map.get($button-line-height, $size);\n font-size: map.get($button-font-size, $size);\n}\n\n@mixin emphasis-styles($emphasis) {\n background: map.get($components-button-background, $emphasis);\n border: 1px solid map.get($components-button-border, $emphasis);\n color: map.get($components-button-text, $emphasis);\n\n &:hover {\n background: map.get($components-button-background-hover, $emphasis);\n color: map.get($components-button-text-hover, $emphasis);\n }\n\n @include focus-ring();\n\n &:disabled {\n background: map.get($components-button-background, $emphasis);\n color: map.get($components-button-text, $emphasis);\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n }\n\n & nv-icon > svg {\n color: map.get($components-button-icon, $emphasis);\n }\n}\n\nnv-iconbutton {\n &.root {\n @include root-styles();\n }\n\n @each $size in $button-sizes {\n &.size-#{$size} {\n @include size-styles($size);\n }\n }\n\n @each $emphasis in $button-emphasis {\n &.emphasis-#{$emphasis} {\n @include emphasis-styles($emphasis);\n }\n }\n\n &.loading {\n [slot=\"leading-icon\"] {\n display: none;\n }\n }\n\n &.shape-rounded {\n border-radius: var(--radius-rounded-full);\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n AttachInternals,\n Element,\n Watch,\n} from '@stencil/core';\nimport clsx from 'clsx';\n\nimport { ButtonSize, ButtonEmphasis, ButtonType } from '../../utils/constants';\nimport { IconName } from '../nv-icon/nv-icons';\n\n/**\n * @slot default - Content of the button.\n */\n@Component({\n tag: 'nv-iconbutton',\n shadow: false,\n formAssociated: true,\n styleUrl: 'nv-iconbutton.scss',\n scoped: false,\n})\nexport class NvIconbutton {\n @AttachInternals() internals: ElementInternals;\n @Element() el: HTMLNvIconbuttonElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Determines how large or small the button appears, allowing for\n * customization of the button's dimensions to fit different design\n * specifications and user needs.\n */\n @Prop({ reflect: true })\n readonly size: `${ButtonSize}` = 'md';\n\n /**\n * Adjusts the button’s emphasis to make it more or less visually prominent\n * to users. Use this to draw attention to important actions or reduce focus\n * on less critical ones.\n */\n @Prop({ reflect: true })\n readonly emphasis: `${ButtonEmphasis}` = 'high';\n\n /**\n * Set this to true to show a spinner on the button, letting users know that\n * their action is being processed. It helps improve user experience by\n * indicating ongoing activities. The icon is not displayed when the button\n * is loading. Also, the button is disabled. If you want to disable the\n * button, it is not possible. It is automatically disabled when loading.\n */\n @Prop({ reflect: true, mutable: true })\n loading: boolean = false;\n\n /**\n * Disables the button, preventing user interaction.\n */\n @Prop({ mutable: true, reflect: true })\n disabled: boolean = false;\n\n /**\n * Makes the button look active when it’s within a compatible component\n * like a button group.\n */\n @Prop({ reflect: true })\n readonly active: boolean = false;\n\n /**\n * Choose the icon you want to display. This also sets the aria-label for\n * improved accessibility, helping users who rely on screen readers.\n * The icon is not displayed when the button is loading.\n */\n @Prop({ reflect: true })\n readonly name: `${IconName}` | string;\n\n /**\n * Sets the button type to control its function in forms. Use 'submit' to send\n * form data, 'reset' to clear the form, or 'button' for a standard button\n * that doesn’t interact with form submission by default.\n */\n @Prop({ reflect: true })\n readonly type: `${ButtonType}` = 'button';\n\n /**\n * Sets the shape of the button. Choose between square and rounded.\n */\n @Prop({ reflect: true })\n readonly shape: 'square' | 'rounded' = 'square';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles form-related actions when the button is clicked.\n * - Submits the form if the button type is 'submit'.\n * - Resets the form if the button type is 'reset'.\n * @param {Event} event - The click event.\n */\n private handleClick = (event: Event) => {\n if (this.loading || this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.type === 'submit') {\n this.internals?.form?.requestSubmit();\n }\n if (this.type === 'reset') {\n this.internals?.form?.reset();\n }\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('loading')\n handleLoadingChange(loading: boolean) {\n this.loading = loading;\n this.disabled = loading;\n }\n\n @Watch('disabled')\n handleDisabledChange(disabled: boolean) {\n if (this.loading) {\n this.disabled = this.loading;\n } else {\n this.disabled = disabled;\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.loading) {\n this.disabled = this.loading;\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host\n role=\"button\"\n type={this.type}\n tabindex=\"0\"\n disabled={this.disabled ? true : undefined}\n class={clsx(\n 'root',\n `size-${this.size}`,\n `emphasis-${this.emphasis}`,\n this.loading && 'loading',\n `shape-${this.shape}`,\n )}\n onClick={this.handleClick}\n >\n {this.loading && <nv-loader size={this.size}></nv-loader>}\n\n {!this.loading && <nv-icon name={this.name} size={this.size} />}\n\n <slot></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -0,0 +1,31 @@
1
+ import { r as registerInstance, h, a as Host } from './index-b6f70e4a.js';
2
+ import { c as clsx } from './clsx-297c1ffe.js';
3
+
4
+ const nvLoaderCss = "@keyframes rotation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}nv-loader{display:inline-block;position:relative;aspect-ratio:1/1;border-radius:9999px;color:inherit}nv-loader.size-xs{width:var(--loader-size-xs);height:var(--loader-size-xs)}nv-loader.size-xs::before,nv-loader.size-xs::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xs::before{content:\" \";border:calc(var(--loader-size-xs) / 10) solid;opacity:0.3}nv-loader.size-xs::after{content:\" \";border-top:calc(var(--loader-size-xs) / 10) solid transparent;border-left:calc(var(--loader-size-xs) / 10) solid transparent;border-right:calc(var(--loader-size-xs) / 10) solid transparent;border-bottom:calc(var(--loader-size-xs) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-sm{width:var(--loader-size-sm);height:var(--loader-size-sm)}nv-loader.size-sm::before,nv-loader.size-sm::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-sm::before{content:\" \";border:calc(var(--loader-size-sm) / 10) solid;opacity:0.3}nv-loader.size-sm::after{content:\" \";border-top:calc(var(--loader-size-sm) / 10) solid transparent;border-left:calc(var(--loader-size-sm) / 10) solid transparent;border-right:calc(var(--loader-size-sm) / 10) solid transparent;border-bottom:calc(var(--loader-size-sm) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-md{width:var(--loader-size-md);height:var(--loader-size-md)}nv-loader.size-md::before,nv-loader.size-md::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-md::before{content:\" \";border:calc(var(--loader-size-md) / 10) solid;opacity:0.3}nv-loader.size-md::after{content:\" \";border-top:calc(var(--loader-size-md) / 10) solid transparent;border-left:calc(var(--loader-size-md) / 10) solid transparent;border-right:calc(var(--loader-size-md) / 10) solid transparent;border-bottom:calc(var(--loader-size-md) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-lg{width:var(--loader-size-lg);height:var(--loader-size-lg)}nv-loader.size-lg::before,nv-loader.size-lg::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-lg::before{content:\" \";border:calc(var(--loader-size-lg) / 10) solid;opacity:0.3}nv-loader.size-lg::after{content:\" \";border-top:calc(var(--loader-size-lg) / 10) solid transparent;border-left:calc(var(--loader-size-lg) / 10) solid transparent;border-right:calc(var(--loader-size-lg) / 10) solid transparent;border-bottom:calc(var(--loader-size-lg) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-xl{width:var(--loader-size-xl);height:var(--loader-size-xl)}nv-loader.size-xl::before,nv-loader.size-xl::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xl::before{content:\" \";border:calc(var(--loader-size-xl) / 10) solid;opacity:0.3}nv-loader.size-xl::after{content:\" \";border-top:calc(var(--loader-size-xl) / 10) solid transparent;border-left:calc(var(--loader-size-xl) / 10) solid transparent;border-right:calc(var(--loader-size-xl) / 10) solid transparent;border-bottom:calc(var(--loader-size-xl) / 10) solid;animation:rotation 1s linear infinite}nv-loader.color-brand::before{border-color:var(--components-loader-brand-background);opacity:1}nv-loader.color-brand::after{border-bottom-color:var(--components-loader-brand-foreground)}nv-loader.color-white::before{border-color:var(--components-loader-white-background);opacity:1}nv-loader.color-white::after{border-bottom-color:var(--components-loader-white-foreground)}";
5
+ const NvLoaderStyle0 = nvLoaderCss;
6
+
7
+ const NvLoader = class {
8
+ constructor(hostRef) {
9
+ registerInstance(this, hostRef);
10
+ /****************************************************************************/
11
+ //#region PROPERTIES
12
+ /**
13
+ * Choose the size of the loader to best fit your application’s needs, whether
14
+ * it’s a small spinner for subtle loading indicators or a large one for more
15
+ * prominent displays.
16
+ */
17
+ this.size = 'md';
18
+ }
19
+ //#endregion PROPERTIES
20
+ /****************************************************************************/
21
+ //#region RENDER
22
+ /* <slot> empty to force rendering change */
23
+ render() {
24
+ return (h(Host, { key: '9d70fed6bfe41c8e1a87bd7eb2d83a1bb6af69ab', class: clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
25
+ }
26
+ };
27
+ NvLoader.style = NvLoaderStyle0;
28
+
29
+ export { NvLoader as nv_loader };
30
+
31
+ //# sourceMappingURL=nv-loader.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"nv-loader.entry.js","mappings":";;;AAAA,MAAM,WAAW,GAAG,qoHAAqoH,CAAC;AAC1pH,uBAAe,WAAW;;MCSb,QAAQ;IALrB;;;;;;;;;QAeW,SAAI,GAAuB,IAAI,CAAC;KA2B1C;;;;;IAZC,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,KAAK,EAAE,IAAI,CACT,IAAI,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,EAChC,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE,CACpC,GACK,EACR;KACH;;;;;;","names":[],"sources":["src/components/nv-loader/nv-loader.scss?tag=nv-loader","src/components/nv-loader/nv-loader.tsx"],"sourcesContent":["@use \"sass:map\";\n\n/* Variants */\n$loader-sizes: (\"xs\", \"sm\", \"md\", \"lg\", \"xl\");\n$loader-color: (\"brand\", \"white\");\n\n/* Define maps for color-related variables */\n$components-loader-background: (\n \"brand\": var(--components-loader-brand-background),\n \"white\": var(--components-loader-white-background)\n);\n\n$components-loader-foreground: (\n \"brand\": var(--components-loader-brand-foreground),\n \"white\": var(--components-loader-white-foreground)\n);\n\n/* Define maps for size-related variables */\n$components-loader-size: (\n \"xs\": var(--loader-size-xs),\n \"sm\": var(--loader-size-sm),\n \"md\": var(--loader-size-md),\n \"lg\": var(--loader-size-lg),\n \"xl\": var(--loader-size-xl)\n);\n\n@mixin root-styles() {\n display: inline-block;\n position: relative;\n aspect-ratio: 1 / 1;\n border-radius: 9999px;\n color: inherit;\n}\n\n@mixin size-styles($size) {\n $loader-size: map.get($components-loader-size, $size);\n $border-size: calc($loader-size / 10);\n\n width: $loader-size;\n height: $loader-size;\n\n &::before,\n &::after {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n border-radius: inherit;\n width: 100%;\n height: 100%;\n }\n\n &::before {\n content: \" \";\n border: $border-size solid;\n opacity: 0.3;\n }\n\n &::after {\n content: \" \";\n border-top: $border-size solid transparent;\n border-left: $border-size solid transparent;\n border-right: $border-size solid transparent;\n border-bottom: $border-size solid;\n animation: rotation 1s linear infinite;\n }\n}\n\n@mixin color-styles($color) {\n &::before {\n border-color: map.get($components-loader-background, $color);\n opacity: 1;\n }\n\n &::after {\n border-bottom-color: map.get($components-loader-foreground, $color);\n }\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\nnv-loader {\n @include root-styles();\n\n @each $size in $loader-sizes {\n &.size-#{$size} {\n @include size-styles($size);\n }\n }\n\n @each $color in $loader-color {\n &.color-#{$color} {\n @include color-styles($color);\n }\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\nimport clsx from 'clsx';\n\nimport { SemanticSizes, LoaderColors } from '../../utils/constants';\n\n@Component({\n tag: 'nv-loader',\n styleUrl: 'nv-loader.scss',\n shadow: false,\n})\nexport class NvLoader {\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Choose the size of the loader to best fit your application’s needs, whether\n * it’s a small spinner for subtle loading indicators or a large one for more\n * prominent displays.\n */\n @Prop({ reflect: true })\n readonly size: `${SemanticSizes}` = 'md';\n\n /**\n * Choose the color of the loader. Options are primary and white to keep the\n * design consistent and ensure the loader stands out or blends in\n * appropriately with your application’s interface.\n */\n @Prop({ reflect: true })\n readonly color: `${LoaderColors}`;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n /* <slot> empty to force rendering change */\n render() {\n return (\n <Host\n class={clsx(\n this.size && `size-${this.size}`,\n this.color && `color-${this.color}`,\n )}\n ></Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-e7b35c14.js';
1
+ import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-b6f70e4a.js';
2
2
 
3
3
  const nvMenuCss = "nv-menuitem{display:flex;align-items:center;max-width:300px;width:100vw;font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);gap:var(--menu-contextual-item-gap-x);padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);transition:background-color 150ms ease-out;cursor:pointer}nv-menuitem:hover,nv-menuitem:focus,nv-menuitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menuitem kbd{color:var(--components-menu-contextual-item-shortcut)}nv-menuitem [data-scope=text]{margin-right:auto}nv-menuitem[disabled]:not([disabled=false]){cursor:unset;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-menu{display:inline-block;position:relative}nv-menu:has([fluid]:not([fluid=false])){display:block}nv-menu nv-popover{display:unset}nv-menu nv-popover [data-scope=popover]{background-color:transparent !important;padding:0 !important}nv-menu [slot=content]{padding:var(--menu-contextual-padding-y) var(--menu-contextual-padding-x);border-radius:var(--menu-contextual-radius);gap:var(--menu-contextual-gap-y);background-color:var(--components-menu-contextual-background);border-color:var(--components-menu-contextual-border);display:flex;flex-direction:column}nv-menu nv-menu[open]:not([open=false])>nv-menuitem{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menu hr{display:block;margin:var(--menu-contextual-divider-padding-top) var(--menu-contextual-divider-padding-x) var(--menu-contextual-divider-padding-bottom) var(--menu-contextual-divider-padding-x)}";
4
4
  const NvMenuStyle0 = nvMenuCss;
@@ -9,9 +9,28 @@ const NvMenu = class {
9
9
  this.menuitemSelected = createEvent(this, "menuitemSelected", 7);
10
10
  this.isHandlingKeyDown = false;
11
11
  this.isHandlingClick = false;
12
+ /****************************************************************************/
13
+ //#region PROPERTIES
14
+ /**
15
+ * Use this to toggle the initial visibility of the menu, by default the menu
16
+ * is hidden.
17
+ */
12
18
  this.open = false;
19
+ /**
20
+ * Use this if the menu is nested inside another menu. This will prevent the
21
+ * parent menu from closing when the child menu is opened.
22
+ */
13
23
  this.nested = false;
24
+ /**
25
+ * Use this to disable the menu from closing automatically when a menu item is
26
+ * selected.
27
+ */
14
28
  this.disableCloseOnSelect = false;
29
+ /**
30
+ * Decides where the menu shows up next to the button it’s linked to (above,
31
+ * below, to the sides). If there isn’t enough room, it will adjust its
32
+ * position on the axis to fit on the screen, so users can always see it.
33
+ */
15
34
  this.placement = this.nested ? 'right-start' : 'bottom-end';
16
35
  }
17
36
  //#endregion PROPERTIES
@@ -174,7 +193,7 @@ const NvMenu = class {
174
193
  /****************************************************************************/
175
194
  //#region RENDER
176
195
  render() {
177
- return (h(Host, { key: 'cc0abb7b96dd16348e420a0d8f3d827fdeba3ec0' }, h("slot", { key: '3240929357957f52cda4ab3ee04ef954db6f1425', name: "trigger" }), h("nv-popover", { key: '3fe10536df9e606fbc69cadc0ec4023c7ee3ae75', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, h("slot", { key: '66ea7310d3b2e27288fa440dbb96f56885c88964', name: "content" }))));
196
+ return (h(Host, { key: '23fdff061d4aa8364590e2486c60b26684400a34' }, h("slot", { key: '50ff6d6a5b84ad83a9b9deefed42335e663c989d', name: "trigger" }), h("nv-popover", { key: 'ee15458289098254b7074452b2c25a32a7e82b3e', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, h("slot", { key: 'bccea8f6469c29bad2e764c6628b6a783890d10d', name: "content" }))));
178
197
  }
179
198
  get el() { return getElement(this); }
180
199
  };
@@ -1 +1 @@
1
- {"file":"nv-menu.entry.js","mappings":"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","names":[],"sources":["src/components/nv-menu/nv-menu.scss?tag=nv-menu","src/components/nv-menu/nv-menu.tsx"],"sourcesContent":["@use \"../nv-menuitem/nv-menuitem\" as nv-menuitem;\n\n@mixin root-styles() {\n display: inline-block;\n position: relative;\n\n &:has([fluid]:not([fluid=\"false\"])) {\n display: block;\n }\n}\n\n@mixin content-styles() {\n padding: var(--menu-contextual-padding-y) \n var(--menu-contextual-padding-x);\n border-radius: var(--menu-contextual-radius);\n gap: var(--menu-contextual-gap-y);\n background-color: var(--components-menu-contextual-background);\n border-color: var(--components-menu-contextual-border);\n display: flex;\n flex-direction: column;\n}\n\n@mixin separator-styles() {\n display: block;\n margin: var(--menu-contextual-divider-padding-top) \n var(--menu-contextual-divider-padding-x) \n var(--menu-contextual-divider-padding-bottom) \n var(--menu-contextual-divider-padding-x) ;\n}\n\nnv-menu {\n @include root-styles();\n\n nv-popover {\n display: unset;\n \n [data-scope=popover]{\n background-color: transparent !important;\n padding: 0 !important;\n }\n }\n\n [slot=\"content\"] {\n @include content-styles();\n }\n\n nv-menu[open]:not([open=\"false\"]) {\n > nv-menuitem {\n @include nv-menuitem.focused-styles();\n }\n }\n\n hr {\n @include separator-styles();\n }\n}\n","import {\n Component,\n Host,\n h,\n Element,\n Prop,\n Listen,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport type { Placement } from '@floating-ui/dom';\nimport type { MenuitemSelectedEventDetail } from '../nv-menuitem/nv-menuitem';\n\n/**\n * @slot trigger - Button to toggle the menu popover.\n * @slot content - Use an &lt;ul&gt;&lt;/ul&gt; tag for the slot, and place &lt;nv-menuitem&gt; elements inside.\n */\n@Component({\n tag: 'nv-menu',\n styleUrl: 'nv-menu.scss',\n shadow: false,\n})\nexport class NvMenu {\n @Element() el: HTMLNvMenuElement;\n private triggerElement!: HTMLElement;\n private popoverElement!: HTMLNvPopoverElement;\n private isHandlingKeyDown: boolean = false;\n private isHandlingClick: boolean = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Use this to toggle the initial visibility of the menu, by default the menu\n * is hidden.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * Use this if the menu is nested inside another menu. This will prevent the\n * parent menu from closing when the child menu is opened.\n */\n @Prop()\n readonly nested: boolean = false;\n\n /**\n * Use this to disable the menu from closing automatically when a menu item is\n * selected.\n */\n @Prop()\n readonly disableCloseOnSelect: boolean = false;\n\n /**\n * Decides where the menu shows up next to the button it’s linked to (above,\n * below, to the sides). If there isn’t enough room, it will adjust its\n * position on the axis to fit on the screen, so users can always see it.\n */\n @Prop()\n readonly placement: Placement = this.nested ? 'right-start' : 'bottom-end';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Opens the menu.\n */\n @Method()\n async show() {\n this.open = true;\n }\n\n /**\n * Closes the menu.\n */\n @Method()\n async close() {\n this.open = false;\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted from nv-menuitem elements with the corresponding id when the menu\n * item is selected.\n */\n @Event()\n menuitemSelected: EventEmitter<MenuitemSelectedEventDetail>;\n\n private handleMenuItemSelect(menuItem: HTMLElement, event: Event) {\n // If the element is disabled, stop propagation\n if (menuItem.hasAttribute('disabled')) {\n event.stopPropagation();\n return;\n }\n\n // Emit the menuitemSelected event for the selected item\n const itemId = menuItem.id;\n if (itemId) {\n this.menuitemSelected.emit({ itemId });\n }\n\n // Prevent event propagation to avoid multiple triggers\n event.stopPropagation();\n\n if (!this.disableCloseOnSelect) {\n this.open = false;\n }\n }\n\n @Listen('click', { capture: true })\n handleMenuClick(event: MouseEvent) {\n if (this.isHandlingClick) {\n return;\n }\n this.isHandlingClick = true;\n\n const target = event.target as HTMLElement;\n const menuItem = target.closest('nv-menuitem');\n if (\n menuItem &&\n menuItem.tagName === 'NV-MENUITEM' &&\n !menuItem.hasAttribute('has-submenu')\n ) {\n this.handleMenuItemSelect(menuItem, event);\n }\n\n this.isHandlingClick = false;\n }\n\n @Listen('keydown', { passive: false })\n handleKeydown(event: KeyboardEvent) {\n if (!this.open) return;\n\n if (this.isHandlingKeyDown) {\n return;\n }\n this.isHandlingKeyDown = true;\n\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'Escape'\n ) {\n event.preventDefault();\n }\n\n if (event.key === 'Escape' && !this.nested) {\n this.close();\n this.triggerElement.focus();\n this.isHandlingKeyDown = false;\n return;\n }\n\n if (event.key === 'Enter') {\n const activeElement = document.activeElement as HTMLNvMenuitemElement;\n if (\n activeElement &&\n activeElement.tagName === 'NV-MENUITEM' &&\n !activeElement.hasAttribute('has-submenu')\n ) {\n event.preventDefault();\n this.handleMenuItemSelect(activeElement, event);\n }\n this.isHandlingKeyDown = false;\n return;\n }\n\n const menuContent = this.el.querySelector('[slot=\"content\"]');\n const menuItems = (\n Array.from(menuContent.childNodes) as Array<\n HTMLNvMenuitemElement | HTMLNvMenuElement\n >\n ).filter(item => item.matches?.('nv-menuitem, nv-menu'));\n\n let currentIndex = menuItems.indexOf(\n document.activeElement as HTMLNvMenuitemElement,\n );\n if (currentIndex === -1)\n currentIndex = menuItems.indexOf(\n document.activeElement.parentElement as HTMLNvMenuitemElement,\n );\n if (\n currentIndex === -1 &&\n menuItems.find(item => item.matches('nv-menu[open]'))\n ) {\n this.isHandlingKeyDown = false;\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n menuItems.forEach(item => {\n if (item.matches('nv-menu')) (item as HTMLNvMenuElement).close();\n });\n }\n\n if (event.key === 'ArrowDown') {\n let nextIndex = (currentIndex + 1) % menuItems.length;\n while (menuItems[nextIndex].matches('nv-menuitem[disabled]')) {\n nextIndex = (nextIndex + 1) % menuItems.length;\n }\n const nextFocusable = menuItems[nextIndex];\n if (nextFocusable.matches('nv-menuitem')) nextFocusable.focus();\n else if (nextFocusable.matches('nv-menu'))\n nextFocusable.querySelector('nv-menuitem').focus();\n }\n\n if (event.key === 'ArrowUp') {\n let prevIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;\n while (menuItems[prevIndex].matches('nv-menuitem[disabled]')) {\n prevIndex = (prevIndex - 1 + menuItems.length) % menuItems.length;\n }\n const prevFocusable = menuItems[prevIndex];\n if (prevFocusable.matches('nv-menuitem')) prevFocusable.focus();\n else if (prevFocusable.matches('nv-menu'))\n prevFocusable.querySelector('nv-menuitem').focus();\n }\n\n if (event.key === 'ArrowRight') {\n const submenu = menuItems[currentIndex];\n if (!submenu.matches('nv-menu')) {\n this.isHandlingKeyDown = false;\n return;\n }\n\n (submenu as HTMLNvMenuElement).show();\n }\n\n if (event.key === 'ArrowLeft' && this.nested) {\n if (menuItems.find(item => item.matches('nv-menu[open]'))) {\n this.isHandlingKeyDown = false;\n return;\n }\n this.close();\n this.triggerElement.focus();\n }\n\n this.isHandlingKeyDown = false;\n }\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n if (event.target === this.el.querySelector('nv-popover')) {\n this.open = event.detail;\n }\n\n const triggerHasFocus = this.triggerElement === document.activeElement;\n const triggerHasFocusVisible =\n this.triggerElement.matches(':focus-visible');\n\n if (triggerHasFocus && triggerHasFocusVisible) this.focusFirstItem();\n }\n\n private focusFirstItem() {\n const firstButton = this.popoverElement.querySelector('nv-menuitem');\n if (firstButton) {\n requestAnimationFrame(() => firstButton.focus());\n }\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.triggerElement = Array.from(this.el.children).find(child => {\n return child.getAttribute('slot') === 'trigger';\n }) as HTMLElement;\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\"></slot>\n\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"click\"\n triggerElement={this.triggerElement}\n placement={this.placement}\n nested={this.nested}\n open={this.open}\n >\n <slot name=\"content\"></slot>\n </nv-popover>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-menu.entry.js","mappings":"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","names":[],"sources":["src/components/nv-menu/nv-menu.scss?tag=nv-menu","src/components/nv-menu/nv-menu.tsx"],"sourcesContent":["@use \"../nv-menuitem/nv-menuitem\" as nv-menuitem;\n\n@mixin root-styles() {\n display: inline-block;\n position: relative;\n\n &:has([fluid]:not([fluid=\"false\"])) {\n display: block;\n }\n}\n\n@mixin content-styles() {\n padding: var(--menu-contextual-padding-y) \n var(--menu-contextual-padding-x);\n border-radius: var(--menu-contextual-radius);\n gap: var(--menu-contextual-gap-y);\n background-color: var(--components-menu-contextual-background);\n border-color: var(--components-menu-contextual-border);\n display: flex;\n flex-direction: column;\n}\n\n@mixin separator-styles() {\n display: block;\n margin: var(--menu-contextual-divider-padding-top) \n var(--menu-contextual-divider-padding-x) \n var(--menu-contextual-divider-padding-bottom) \n var(--menu-contextual-divider-padding-x) ;\n}\n\nnv-menu {\n @include root-styles();\n\n nv-popover {\n display: unset;\n \n [data-scope=popover]{\n background-color: transparent !important;\n padding: 0 !important;\n }\n }\n\n [slot=\"content\"] {\n @include content-styles();\n }\n\n nv-menu[open]:not([open=\"false\"]) {\n > nv-menuitem {\n @include nv-menuitem.focused-styles();\n }\n }\n\n hr {\n @include separator-styles();\n }\n}\n","import {\n Component,\n Host,\n h,\n Element,\n Prop,\n Listen,\n Event,\n EventEmitter,\n Method,\n} from '@stencil/core';\nimport type { Placement } from '@floating-ui/dom';\nimport type { MenuitemSelectedEventDetail } from '../nv-menuitem/nv-menuitem';\n\n/**\n * @slot trigger - Button to toggle the menu popover.\n * @slot content - Use an &lt;ul&gt;&lt;/ul&gt; tag for the slot, and place &lt;nv-menuitem&gt; elements inside.\n */\n@Component({\n tag: 'nv-menu',\n styleUrl: 'nv-menu.scss',\n shadow: false,\n})\nexport class NvMenu {\n @Element() el: HTMLNvMenuElement;\n private triggerElement!: HTMLElement;\n private popoverElement!: HTMLNvPopoverElement;\n private isHandlingKeyDown: boolean = false;\n private isHandlingClick: boolean = false;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Use this to toggle the initial visibility of the menu, by default the menu\n * is hidden.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * Use this if the menu is nested inside another menu. This will prevent the\n * parent menu from closing when the child menu is opened.\n */\n @Prop()\n readonly nested: boolean = false;\n\n /**\n * Use this to disable the menu from closing automatically when a menu item is\n * selected.\n */\n @Prop()\n readonly disableCloseOnSelect: boolean = false;\n\n /**\n * Decides where the menu shows up next to the button it’s linked to (above,\n * below, to the sides). If there isn’t enough room, it will adjust its\n * position on the axis to fit on the screen, so users can always see it.\n */\n @Prop()\n readonly placement: Placement = this.nested ? 'right-start' : 'bottom-end';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Opens the menu.\n */\n @Method()\n async show() {\n this.open = true;\n }\n\n /**\n * Closes the menu.\n */\n @Method()\n async close() {\n this.open = false;\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emitted from nv-menuitem elements with the corresponding id when the menu\n * item is selected.\n */\n @Event()\n menuitemSelected: EventEmitter<MenuitemSelectedEventDetail>;\n\n private handleMenuItemSelect(menuItem: HTMLElement, event: Event) {\n // If the element is disabled, stop propagation\n if (menuItem.hasAttribute('disabled')) {\n event.stopPropagation();\n return;\n }\n\n // Emit the menuitemSelected event for the selected item\n const itemId = menuItem.id;\n if (itemId) {\n this.menuitemSelected.emit({ itemId });\n }\n\n // Prevent event propagation to avoid multiple triggers\n event.stopPropagation();\n\n if (!this.disableCloseOnSelect) {\n this.open = false;\n }\n }\n\n @Listen('click', { capture: true })\n handleMenuClick(event: MouseEvent) {\n if (this.isHandlingClick) {\n return;\n }\n this.isHandlingClick = true;\n\n const target = event.target as HTMLElement;\n const menuItem = target.closest('nv-menuitem');\n if (\n menuItem &&\n menuItem.tagName === 'NV-MENUITEM' &&\n !menuItem.hasAttribute('has-submenu')\n ) {\n this.handleMenuItemSelect(menuItem, event);\n }\n\n this.isHandlingClick = false;\n }\n\n @Listen('keydown', { passive: false })\n handleKeydown(event: KeyboardEvent) {\n if (!this.open) return;\n\n if (this.isHandlingKeyDown) {\n return;\n }\n this.isHandlingKeyDown = true;\n\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight' ||\n event.key === 'Escape'\n ) {\n event.preventDefault();\n }\n\n if (event.key === 'Escape' && !this.nested) {\n this.close();\n this.triggerElement.focus();\n this.isHandlingKeyDown = false;\n return;\n }\n\n if (event.key === 'Enter') {\n const activeElement = document.activeElement as HTMLNvMenuitemElement;\n if (\n activeElement &&\n activeElement.tagName === 'NV-MENUITEM' &&\n !activeElement.hasAttribute('has-submenu')\n ) {\n event.preventDefault();\n this.handleMenuItemSelect(activeElement, event);\n }\n this.isHandlingKeyDown = false;\n return;\n }\n\n const menuContent = this.el.querySelector('[slot=\"content\"]');\n const menuItems = (\n Array.from(menuContent.childNodes) as Array<\n HTMLNvMenuitemElement | HTMLNvMenuElement\n >\n ).filter(item => item.matches?.('nv-menuitem, nv-menu'));\n\n let currentIndex = menuItems.indexOf(\n document.activeElement as HTMLNvMenuitemElement,\n );\n if (currentIndex === -1)\n currentIndex = menuItems.indexOf(\n document.activeElement.parentElement as HTMLNvMenuitemElement,\n );\n if (\n currentIndex === -1 &&\n menuItems.find(item => item.matches('nv-menu[open]'))\n ) {\n this.isHandlingKeyDown = false;\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n menuItems.forEach(item => {\n if (item.matches('nv-menu')) (item as HTMLNvMenuElement).close();\n });\n }\n\n if (event.key === 'ArrowDown') {\n let nextIndex = (currentIndex + 1) % menuItems.length;\n while (menuItems[nextIndex].matches('nv-menuitem[disabled]')) {\n nextIndex = (nextIndex + 1) % menuItems.length;\n }\n const nextFocusable = menuItems[nextIndex];\n if (nextFocusable.matches('nv-menuitem')) nextFocusable.focus();\n else if (nextFocusable.matches('nv-menu'))\n nextFocusable.querySelector('nv-menuitem').focus();\n }\n\n if (event.key === 'ArrowUp') {\n let prevIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;\n while (menuItems[prevIndex].matches('nv-menuitem[disabled]')) {\n prevIndex = (prevIndex - 1 + menuItems.length) % menuItems.length;\n }\n const prevFocusable = menuItems[prevIndex];\n if (prevFocusable.matches('nv-menuitem')) prevFocusable.focus();\n else if (prevFocusable.matches('nv-menu'))\n prevFocusable.querySelector('nv-menuitem').focus();\n }\n\n if (event.key === 'ArrowRight') {\n const submenu = menuItems[currentIndex];\n if (!submenu.matches('nv-menu')) {\n this.isHandlingKeyDown = false;\n return;\n }\n\n (submenu as HTMLNvMenuElement).show();\n }\n\n if (event.key === 'ArrowLeft' && this.nested) {\n if (menuItems.find(item => item.matches('nv-menu[open]'))) {\n this.isHandlingKeyDown = false;\n return;\n }\n this.close();\n this.triggerElement.focus();\n }\n\n this.isHandlingKeyDown = false;\n }\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n if (event.target === this.el.querySelector('nv-popover')) {\n this.open = event.detail;\n }\n\n const triggerHasFocus = this.triggerElement === document.activeElement;\n const triggerHasFocusVisible =\n this.triggerElement.matches(':focus-visible');\n\n if (triggerHasFocus && triggerHasFocusVisible) this.focusFirstItem();\n }\n\n private focusFirstItem() {\n const firstButton = this.popoverElement.querySelector('nv-menuitem');\n if (firstButton) {\n requestAnimationFrame(() => firstButton.focus());\n }\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n this.triggerElement = Array.from(this.el.children).find(child => {\n return child.getAttribute('slot') === 'trigger';\n }) as HTMLElement;\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host>\n <slot name=\"trigger\"></slot>\n\n <nv-popover\n ref={el => (this.popoverElement = el)}\n triggerMode=\"click\"\n triggerElement={this.triggerElement}\n placement={this.placement}\n nested={this.nested}\n open={this.open}\n >\n <slot name=\"content\"></slot>\n </nv-popover>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, a as Host, g as getElement } from './index-e7b35c14.js';
1
+ import { r as registerInstance, h, a as Host, g as getElement } from './index-b6f70e4a.js';
2
2
 
3
3
  const nvMenuitemCss = "nv-menuitem{display:flex;align-items:center;max-width:300px;width:100vw;font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);gap:var(--menu-contextual-item-gap-x);padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);transition:background-color 150ms ease-out;cursor:pointer}nv-menuitem:hover,nv-menuitem:focus,nv-menuitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menuitem kbd{color:var(--components-menu-contextual-item-shortcut)}nv-menuitem [data-scope=text]{margin-right:auto}nv-menuitem[disabled]:not([disabled=false]){cursor:unset;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}";
4
4
  const NvMenuitemStyle0 = nvMenuitemCss;
@@ -6,9 +6,13 @@ const NvMenuitemStyle0 = nvMenuitemCss;
6
6
  const NvMenuitem = class {
7
7
  constructor(hostRef) {
8
8
  registerInstance(this, hostRef);
9
- this.icon = undefined;
9
+ /**
10
+ * Disables the item, preventing user interaction.
11
+ */
10
12
  this.disabled = false;
11
- this.shortcut = undefined;
13
+ /**
14
+ * If the menu item has a submenu, the a caret icon will be displayed.
15
+ */
12
16
  this.hasSubmenu = false;
13
17
  }
14
18
  //#endregion PROPERTIES
@@ -1 +1 @@
1
- {"file":"nv-menuitem.entry.js","mappings":";;AAAA,MAAM,aAAa,GAAG,64BAA64B,CAAC;AACp6B,yBAAe,aAAa;;MCkBf,UAAU;;;;wBAiBQ,KAAK;;0BAYH,KAAK;;;;;IAMpC,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,IACvD,IAAI,CAAC,IAAI,IAAI,gEAAS,IAAI,EAAE,IAAI,CAAC,IAAI,GAAY,EAClD,2EAAiB,MAAM,IACrB,8DAAa,CACR,EACN,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,8DAAM,IAAI,CAAC,QAAQ,CAAO,EAC/D,IAAI,CAAC,UAAU,IAAI,gEAAS,IAAI,EAAC,eAAe,GAAW,CACvD,EACP;KACH;;;;;;;","names":[],"sources":["src/components/nv-menuitem/nv-menuitem.scss?tag=nv-menuitem","src/components/nv-menuitem/nv-menuitem.tsx"],"sourcesContent":["@mixin root-styles() {\n display: flex;\n align-items: center;\n max-width: 300px;\n width: 100vw;\n font-size: var(--menu-contextual-item-font-size);\n font-weight: var(--menu-contextual-item-font-weight);\n color: var(--components-menu-contextual-item-content);\n border-radius: var(--menu-contextual-item-radius);\n gap: var(--menu-contextual-item-gap-x);\n padding: var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);\n transition: background-color 150ms ease-out;\n cursor: pointer;\n &:hover, &:focus, &:focus-within {\n @include focused-styles();\n }\n}\n\n@mixin focused-styles() {\n background-color: var(--components-menu-contextual-item-background-hover);\n color: var(--components-menu-contextual-item-content-hover);\n}\n\n@mixin disabled-styles() {\n cursor: unset;\n background-color: unset;\n color: var(--components-menu-contextual-item-content-disabled);\n}\n\n@mixin text-styles() {\n margin-right: auto;\n}\n\n@mixin shortcut-styles() {\n color: var(--components-menu-contextual-item-shortcut);\n}\n\nnv-menuitem {\n @include root-styles();\n\n kbd {\n @include shortcut-styles();\n }\n\n [data-scope=\"text\"] {\n @include text-styles();\n }\n\n &[disabled]:not([disabled=\"false\"]) {\n @include disabled-styles();\n }\n}\n","import { Component, Host, h, Prop, Element } from '@stencil/core';\n\nimport { IconName } from '../nv-icon/nv-icons';\n\nexport type MenuitemSelectedEventDetail = {\n /**\n * The id of the menu item that was selected.\n */\n itemId?: HTMLElement['id'];\n};\n\n/**\n * @slot default - The content to render, usually just text\n */\n@Component({\n tag: 'nv-menuitem',\n styleUrl: 'nv-menuitem.scss',\n shadow: false,\n})\nexport class NvMenuitem {\n @Element() el: HTMLNvMenuitemElement;\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Choose the icon you want to display. This also sets the aria-label for\n * improved accessibility, helping users who rely on screen readers.\n * The icon is not displayed when the button is loading.\n */\n @Prop({ reflect: true })\n readonly icon: `${IconName}`;\n\n /**\n * Disables the item, preventing user interaction.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Show a shortcut key for the action represented in the menu item.\n */\n @Prop({ reflect: true })\n readonly shortcut: string;\n\n /**\n * If the menu item has a submenu, the a caret icon will be displayed.\n */\n @Prop({ reflect: true })\n readonly hasSubmenu: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host role=\"menuitem\" tabindex={this.disabled ? '-1' : '0'}>\n {this.icon && <nv-icon name={this.icon}></nv-icon>}\n <span data-scope=\"text\">\n <slot></slot>\n </span>\n {this.shortcut && !this.hasSubmenu && <kbd>{this.shortcut}</kbd>}\n {this.hasSubmenu && <nv-icon name=\"chevron-right\"></nv-icon>}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-menuitem.entry.js","mappings":";;AAAA,MAAM,aAAa,GAAG,64BAA64B,CAAC;AACp6B,yBAAe,aAAa;;MCkBf,UAAU;IALvB;;;;;QAsBW,aAAQ,GAAY,KAAK,CAAC;;;;QAY1B,eAAU,GAAY,KAAK,CAAC;KAoBtC;;;;IAdC,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,IACvD,IAAI,CAAC,IAAI,IAAI,gEAAS,IAAI,EAAE,IAAI,CAAC,IAAI,GAAY,EAClD,2EAAiB,MAAM,IACrB,8DAAa,CACR,EACN,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,8DAAM,IAAI,CAAC,QAAQ,CAAO,EAC/D,IAAI,CAAC,UAAU,IAAI,gEAAS,IAAI,EAAC,eAAe,GAAW,CACvD,EACP;KACH;;;;;;;","names":[],"sources":["src/components/nv-menuitem/nv-menuitem.scss?tag=nv-menuitem","src/components/nv-menuitem/nv-menuitem.tsx"],"sourcesContent":["@mixin root-styles() {\n display: flex;\n align-items: center;\n max-width: 300px;\n width: 100vw;\n font-size: var(--menu-contextual-item-font-size);\n font-weight: var(--menu-contextual-item-font-weight);\n color: var(--components-menu-contextual-item-content);\n border-radius: var(--menu-contextual-item-radius);\n gap: var(--menu-contextual-item-gap-x);\n padding: var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);\n transition: background-color 150ms ease-out;\n cursor: pointer;\n &:hover, &:focus, &:focus-within {\n @include focused-styles();\n }\n}\n\n@mixin focused-styles() {\n background-color: var(--components-menu-contextual-item-background-hover);\n color: var(--components-menu-contextual-item-content-hover);\n}\n\n@mixin disabled-styles() {\n cursor: unset;\n background-color: unset;\n color: var(--components-menu-contextual-item-content-disabled);\n}\n\n@mixin text-styles() {\n margin-right: auto;\n}\n\n@mixin shortcut-styles() {\n color: var(--components-menu-contextual-item-shortcut);\n}\n\nnv-menuitem {\n @include root-styles();\n\n kbd {\n @include shortcut-styles();\n }\n\n [data-scope=\"text\"] {\n @include text-styles();\n }\n\n &[disabled]:not([disabled=\"false\"]) {\n @include disabled-styles();\n }\n}\n","import { Component, Host, h, Prop, Element } from '@stencil/core';\n\nimport { IconName } from '../nv-icon/nv-icons';\n\nexport type MenuitemSelectedEventDetail = {\n /**\n * The id of the menu item that was selected.\n */\n itemId?: HTMLElement['id'];\n};\n\n/**\n * @slot default - The content to render, usually just text\n */\n@Component({\n tag: 'nv-menuitem',\n styleUrl: 'nv-menuitem.scss',\n shadow: false,\n})\nexport class NvMenuitem {\n @Element() el: HTMLNvMenuitemElement;\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Choose the icon you want to display. This also sets the aria-label for\n * improved accessibility, helping users who rely on screen readers.\n * The icon is not displayed when the button is loading.\n */\n @Prop({ reflect: true })\n readonly icon: `${IconName}`;\n\n /**\n * Disables the item, preventing user interaction.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Show a shortcut key for the action represented in the menu item.\n */\n @Prop({ reflect: true })\n readonly shortcut: string;\n\n /**\n * If the menu item has a submenu, the a caret icon will be displayed.\n */\n @Prop({ reflect: true })\n readonly hasSubmenu: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host role=\"menuitem\" tabindex={this.disabled ? '-1' : '0'}>\n {this.icon && <nv-icon name={this.icon}></nv-icon>}\n <span data-scope=\"text\">\n <slot></slot>\n </span>\n {this.shortcut && !this.hasSubmenu && <kbd>{this.shortcut}</kbd>}\n {this.hasSubmenu && <nv-icon name=\"chevron-right\"></nv-icon>}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { d as getRenderingRef, f as forceUpdate, r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-e7b35c14.js';
1
+ import { d as getRenderingRef, f as forceUpdate, r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-b6f70e4a.js';
2
2
  import { u as useFade } from './fade.animation-2a077983.js';
3
3
  import { u as useGrow, a as addEventListeners, r as removeEventListeners } from './grow.animation-88a8ee8f.js';
4
4
 
@@ -2068,6 +2068,53 @@ const NvPopover = class {
2068
2068
  constructor(hostRef) {
2069
2069
  registerInstance(this, hostRef);
2070
2070
  this.openChanged = createEvent(this, "openChanged", 7);
2071
+ /**
2072
+ * Use this prop to toggle the visibility of the popover. Set to true to show
2073
+ * the popover and false to hide it.
2074
+ */
2075
+ this.open = false;
2076
+ /**
2077
+ * Sets the interaction mode for triggering the popover. Options include:
2078
+ * - `hover`: The popover is shown on trigger hover.
2079
+ * - `click`: The popover toggles on trigger click.
2080
+ * - `controlled`: The visibility is managed manually through methods or the
2081
+ * open prop.
2082
+ */
2083
+ this.triggerMode = 'click';
2084
+ /**
2085
+ * Defines where the popover appears relative to the trigger.
2086
+ */
2087
+ this.placement = 'bottom';
2088
+ /**
2089
+ * Adjust the gap between the popover and its trigger element by setting how
2090
+ * many pixels they should be apart.
2091
+ */
2092
+ this.offset = 6;
2093
+ /**
2094
+ * Use this to decide if the popover should include a small arrow pointing to
2095
+ * the trigger element, making the connection between them more clear.
2096
+ */
2097
+ this.hasArrow = false;
2098
+ /**
2099
+ * Disables the automatic flipping of the popover when the trigger element is
2100
+ * out of the viewport. The popover will flip automatically by default.
2101
+ */
2102
+ this.disableFlip = false;
2103
+ /**
2104
+ * Sets how many pixels the popover should stay from the edge of the viewport.
2105
+ */
2106
+ this.shiftPadding = 16;
2107
+ /**
2108
+ * Use this to set a delay before the popover appears on hover. If the mouse
2109
+ * leaves before this time, the popover won’t show. This only works when the
2110
+ * trigger mode is set to `hover`.
2111
+ */
2112
+ this.enterDelay = 0;
2113
+ /**
2114
+ * Use this to set the popover to be nested inside another popover. This will
2115
+ * prevent the parent popover from closing when the child popover is opened.
2116
+ */
2117
+ this.nested = false;
2071
2118
  this.handleClickOutside = (event) => {
2072
2119
  // This popover should close when the user clicks outside of it.
2073
2120
  if (this.el.contains(event.target))
@@ -2133,17 +2180,6 @@ const NvPopover = class {
2133
2180
  /****************************************************************************/
2134
2181
  //#region WATCHERS
2135
2182
  this.isAnimating = false;
2136
- this.triggerElement = undefined;
2137
- this.open = false;
2138
- this.triggerMode = 'click';
2139
- this.placement = 'bottom';
2140
- this.groupName = undefined;
2141
- this.offset = 12;
2142
- this.hasArrow = false;
2143
- this.disableFlip = false;
2144
- this.shiftPadding = 16;
2145
- this.enterDelay = 0;
2146
- this.nested = false;
2147
2183
  }
2148
2184
  //#endregion PROPERTIES
2149
2185
  /****************************************************************************/
@@ -2309,7 +2345,7 @@ const NvPopover = class {
2309
2345
  /****************************************************************************/
2310
2346
  //#region RENDER
2311
2347
  render() {
2312
- return (h(Host, { key: 'a09380cf6451740b99cbebca902cb02f44b458a2' }, h("slot", { key: '661c16225a71d26ab295b5efe139ebc507f9e261', name: "trigger" }), h("div", { key: '7dafdc5529822fb262bb52bf27a9353bf9040c05', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: 'ec295857667a455e2511d0a2848e9847f275dc21', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: '17723fe92077d5b88c584a4202f4995ad7a7149a', name: "content" }))));
2348
+ return (h(Host, { key: 'ec0fd394fe5d735afcc7077b32ef4c5717a36349' }, h("slot", { key: '7ed68d138ea990da3c1f245919245e5ad1978495', name: "trigger" }), h("div", { key: '15b681de4c00d96eb7eb32912429d48e849c426e', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: '8ac2cc5bba6be174cb3577fd885b13fea3a36071', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: '57775b2726b6fdc1aa2798665d5971a68a6a5f12', name: "content" }))));
2313
2349
  }
2314
2350
  get el() { return getElement(this); }
2315
2351
  static get watchers() { return {