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

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 (464) hide show
  1. package/dist/blazor-docs.json +1598 -933
  2. package/dist/cjs/{app-globals-69764290.js → app-globals-d8cbb987.js} +2 -2
  3. package/dist/cjs/{app-globals-69764290.js.map → app-globals-d8cbb987.js.map} +1 -1
  4. package/dist/cjs/{index-72b8a9ad.js → index-c50face0.js} +504 -863
  5. package/dist/cjs/index-c50face0.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 +9 -22
  10. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-avatar.cjs.entry.js +11 -8
  12. package/dist/cjs/nv-avatar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/{nv-badge.cjs.entry.js → nv-badge_2.cjs.entry.js} +52 -38
  14. package/dist/cjs/nv-badge_2.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 +8 -40
  17. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-col.cjs.entry.js +2 -1
  19. package/dist/cjs/nv-col.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nv-datagrid.cjs.entry.js +5 -31
  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 +3 -1
  24. package/dist/cjs/nv-datagridcolumn.cjs.entry.js.map +1 -1
  25. package/dist/cjs/nv-datagriddatacell.cjs.entry.js +2 -1
  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 +9 -40
  30. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-fielddropdown.cjs.entry.js +19 -58
  32. package/dist/cjs/nv-fielddropdown.cjs.entry.js.map +1 -1
  33. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +5 -11
  34. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +1038 -0
  36. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -0
  37. package/dist/cjs/nv-fieldnumber.cjs.entry.js +21 -47
  38. package/dist/cjs/nv-fieldnumber.cjs.entry.js.map +1 -1
  39. package/dist/cjs/nv-fieldpassword.cjs.entry.js +24 -65
  40. package/dist/cjs/nv-fieldpassword.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fieldradio.cjs.entry.js +11 -29
  42. package/dist/cjs/nv-fieldradio.cjs.entry.js.map +1 -1
  43. package/dist/cjs/nv-fieldselect.cjs.entry.js +23 -64
  44. package/dist/cjs/nv-fieldselect.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nv-fieldtext.cjs.entry.js +25 -55
  46. package/dist/cjs/nv-fieldtext.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +23 -61
  48. package/dist/cjs/nv-fieldtextarea.cjs.entry.js.map +1 -1
  49. package/dist/cjs/nv-fieldtoggle.cjs.entry.js +8 -21
  50. package/dist/cjs/nv-fieldtoggle.cjs.entry.js.map +1 -1
  51. package/dist/cjs/nv-icon.cjs.entry.js +10 -5
  52. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  53. package/dist/cjs/{nv-iconbutton.cjs.entry.js → nv-iconbutton_2.cjs.entry.js} +31 -44
  54. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -0
  55. package/dist/cjs/nv-menu.cjs.entry.js +2 -21
  56. package/dist/cjs/nv-menu.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-menuitem.cjs.entry.js +3 -7
  58. package/dist/cjs/nv-menuitem.cjs.entry.js.map +1 -1
  59. package/dist/cjs/nv-popover.cjs.entry.js +13 -49
  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 +6 -8
  63. package/dist/cjs/nv-stack.cjs.entry.js.map +1 -1
  64. package/dist/cjs/nv-table.cjs.entry.js +7 -28
  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 +5 -16
  68. package/dist/cjs/nv-tablecolumn.cjs.entry.js.map +1 -1
  69. package/dist/cjs/nv-tabledatacell.cjs.entry.js +3 -18
  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 +3 -12
  74. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  75. package/dist/collection/collection-manifest.json +3 -1
  76. package/dist/collection/components/nv-alert/nv-alert.js +8 -37
  77. package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
  78. package/dist/collection/components/nv-avatar/nv-avatar.js +10 -31
  79. package/dist/collection/components/nv-avatar/nv-avatar.js.map +1 -1
  80. package/dist/collection/components/nv-badge/nv-badge.js +10 -54
  81. package/dist/collection/components/nv-badge/nv-badge.js.map +1 -1
  82. package/dist/collection/components/nv-button/nv-button.js +7 -53
  83. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  84. package/dist/collection/components/nv-col/nv-col.js +3 -2
  85. package/dist/collection/components/nv-col/nv-col.js.map +1 -1
  86. package/dist/collection/components/nv-datagrid/nv-datagrid.js +4 -42
  87. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  88. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +4 -4
  89. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js.map +1 -1
  90. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js +3 -2
  91. package/dist/collection/components/nv-datagriddatacell/nv-datagriddatacell.js.map +1 -1
  92. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +8 -73
  93. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  94. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +18 -87
  95. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
  96. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +4 -18
  97. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
  98. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.css +12 -0
  99. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js +6 -0
  100. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.js.map +1 -0
  101. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +171 -0
  102. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -0
  103. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.css +201 -0
  104. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +257 -0
  105. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -0
  106. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +1578 -0
  107. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -0
  108. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +20 -80
  109. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
  110. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +23 -102
  111. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
  112. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +10 -52
  113. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
  114. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +22 -93
  115. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
  116. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +24 -96
  117. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
  118. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +22 -98
  119. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
  120. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js +7 -40
  121. package/dist/collection/components/nv-fieldtoggle/nv-fieldtoggle.js.map +1 -1
  122. package/dist/collection/components/nv-icon/nv-icon.js +9 -20
  123. package/dist/collection/components/nv-icon/nv-icon.js.map +1 -1
  124. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +9 -58
  125. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
  126. package/dist/collection/components/nv-loader/nv-loader.js +2 -12
  127. package/dist/collection/components/nv-loader/nv-loader.js.map +1 -1
  128. package/dist/collection/components/nv-menu/nv-menu.js +1 -28
  129. package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
  130. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -14
  131. package/dist/collection/components/nv-menuitem/nv-menuitem.js.map +1 -1
  132. package/dist/collection/components/nv-popover/nv-popover.js +13 -71
  133. package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
  134. package/dist/collection/components/nv-row/nv-row.js +1 -1
  135. package/dist/collection/components/nv-stack/nv-stack.js +5 -17
  136. package/dist/collection/components/nv-stack/nv-stack.js.map +1 -1
  137. package/dist/collection/components/nv-table/nv-table.js +6 -39
  138. package/dist/collection/components/nv-table/nv-table.js.map +1 -1
  139. package/dist/collection/components/nv-tablebody/nv-tablebody.js +1 -1
  140. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js +4 -25
  141. package/dist/collection/components/nv-tablecolumn/nv-tablecolumn.js.map +1 -1
  142. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js +2 -23
  143. package/dist/collection/components/nv-tabledatacell/nv-tabledatacell.js.map +1 -1
  144. package/dist/collection/components/nv-tablehead/nv-tablehead.js +1 -1
  145. package/dist/collection/components/nv-tablerow/nv-tablerow.js +1 -1
  146. package/dist/collection/components/nv-tooltip/nv-tooltip.js +2 -17
  147. package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
  148. package/dist/components/index.js +3 -3
  149. package/dist/components/nv-alert.js +10 -23
  150. package/dist/components/nv-alert.js.map +1 -1
  151. package/dist/components/nv-avatar.js +12 -9
  152. package/dist/components/nv-avatar.js.map +1 -1
  153. package/dist/components/nv-badge.js +1 -173
  154. package/dist/components/nv-badge.js.map +1 -1
  155. package/dist/components/nv-base.js +1 -1
  156. package/dist/components/nv-button.js +9 -41
  157. package/dist/components/nv-button.js.map +1 -1
  158. package/dist/components/nv-col.js +2 -1
  159. package/dist/components/nv-col.js.map +1 -1
  160. package/dist/components/nv-datagrid.js +5 -31
  161. package/dist/components/nv-datagrid.js.map +1 -1
  162. package/dist/components/nv-datagridbody.js +1 -1
  163. package/dist/components/nv-datagridcolumn.js +3 -1
  164. package/dist/components/nv-datagridcolumn.js.map +1 -1
  165. package/dist/components/nv-datagriddatacell.js +2 -1
  166. package/dist/components/nv-datagriddatacell.js.map +1 -1
  167. package/dist/components/nv-datagridhead.js +1 -1
  168. package/dist/components/nv-datagridrow.js +1 -1
  169. package/dist/components/nv-fieldcheckbox.js +1 -152
  170. package/dist/components/nv-fieldcheckbox.js.map +1 -1
  171. package/dist/components/nv-fielddropdown.js +24 -63
  172. package/dist/components/nv-fielddropdown.js.map +1 -1
  173. package/dist/components/nv-fielddropdownitem.js +1 -1
  174. package/dist/components/nv-fielddropdownitemcheck.d.ts +11 -0
  175. package/dist/components/nv-fielddropdownitemcheck.js +8 -0
  176. package/dist/components/nv-fielddropdownitemcheck.js.map +1 -0
  177. package/dist/components/nv-fieldmultiselect.d.ts +11 -0
  178. package/dist/components/nv-fieldmultiselect.js +1129 -0
  179. package/dist/components/nv-fieldmultiselect.js.map +1 -0
  180. package/dist/components/nv-fieldnumber.js +22 -48
  181. package/dist/components/nv-fieldnumber.js.map +1 -1
  182. package/dist/components/nv-fieldpassword.js +27 -68
  183. package/dist/components/nv-fieldpassword.js.map +1 -1
  184. package/dist/components/nv-fieldradio.js +11 -29
  185. package/dist/components/nv-fieldradio.js.map +1 -1
  186. package/dist/components/nv-fieldselect.js +24 -65
  187. package/dist/components/nv-fieldselect.js.map +1 -1
  188. package/dist/components/nv-fieldtext.js +26 -56
  189. package/dist/components/nv-fieldtext.js.map +1 -1
  190. package/dist/components/nv-fieldtextarea.js +23 -61
  191. package/dist/components/nv-fieldtextarea.js.map +1 -1
  192. package/dist/components/nv-fieldtoggle.js +8 -21
  193. package/dist/components/nv-fieldtoggle.js.map +1 -1
  194. package/dist/components/nv-icon.js +1 -1
  195. package/dist/components/nv-iconbutton.js +1 -1
  196. package/dist/components/nv-loader.js +1 -1
  197. package/dist/components/nv-menu.js +3 -22
  198. package/dist/components/nv-menu.js.map +1 -1
  199. package/dist/components/nv-menuitem.js +4 -8
  200. package/dist/components/nv-menuitem.js.map +1 -1
  201. package/dist/components/nv-popover.js +1 -1
  202. package/dist/components/nv-row.js +2 -2
  203. package/dist/components/nv-stack.js +6 -8
  204. package/dist/components/nv-stack.js.map +1 -1
  205. package/dist/components/nv-table.js +7 -28
  206. package/dist/components/nv-table.js.map +1 -1
  207. package/dist/components/nv-tablebody.js +2 -2
  208. package/dist/components/nv-tablecolumn.js +5 -16
  209. package/dist/components/nv-tablecolumn.js.map +1 -1
  210. package/dist/components/nv-tabledatacell.js +3 -18
  211. package/dist/components/nv-tabledatacell.js.map +1 -1
  212. package/dist/components/nv-tablehead.js +2 -2
  213. package/dist/components/nv-tablerow.js +2 -2
  214. package/dist/components/nv-tooltip.js +4 -13
  215. package/dist/components/nv-tooltip.js.map +1 -1
  216. package/dist/components/p-5ce661bd.js +125 -0
  217. package/dist/components/p-5ce661bd.js.map +1 -0
  218. package/dist/components/{p-f0d5586a.js → p-8bec002e.js} +13 -46
  219. package/dist/components/p-8bec002e.js.map +1 -0
  220. package/dist/components/{p-3ef4ded9.js → p-a1aa8970.js} +4 -10
  221. package/dist/components/p-a1aa8970.js.map +1 -0
  222. package/dist/{esm/nv-badge.entry.js → components/p-a4802979.js} +58 -48
  223. package/dist/components/p-a4802979.js.map +1 -0
  224. package/dist/components/{p-c08a278d.js → p-ae6a0d80.js} +172 -207
  225. package/dist/components/p-ae6a0d80.js.map +1 -0
  226. package/dist/components/{p-6c1b9782.js → p-b12abc99.js} +7 -13
  227. package/dist/components/p-b12abc99.js.map +1 -0
  228. package/dist/components/{p-0caa4741.js → p-d506ae63.js} +489 -834
  229. package/dist/components/p-d506ae63.js.map +1 -0
  230. package/dist/components/{p-54ea8e62.js → p-d5dd3def.js} +15 -51
  231. package/dist/components/p-d5dd3def.js.map +1 -0
  232. package/dist/components/{p-39e93e5b.js → p-d70df149.js} +11 -6
  233. package/dist/components/p-d70df149.js.map +1 -0
  234. package/dist/components/p-e4641c41.js +72 -0
  235. package/dist/components/p-e4641c41.js.map +1 -0
  236. package/dist/docs.d.ts +0 -8
  237. package/dist/docs.json +1579 -930
  238. package/dist/esm/{app-globals-c5484a00.js → app-globals-eea8674a.js} +2 -2
  239. package/dist/esm/{app-globals-c5484a00.js.map → app-globals-eea8674a.js.map} +1 -1
  240. package/dist/esm/{index-b6f70e4a.js → index-e7b35c14.js} +504 -863
  241. package/dist/esm/index-e7b35c14.js.map +1 -0
  242. package/dist/esm/loader.js +4 -4
  243. package/dist/esm/native.js +5 -5
  244. package/dist/esm/native.js.map +1 -1
  245. package/dist/esm/nv-alert.entry.js +9 -22
  246. package/dist/esm/nv-alert.entry.js.map +1 -1
  247. package/dist/esm/nv-avatar.entry.js +11 -8
  248. package/dist/esm/nv-avatar.entry.js.map +1 -1
  249. package/dist/esm/nv-badge_2.entry.js +154 -0
  250. package/dist/esm/nv-badge_2.entry.js.map +1 -0
  251. package/dist/esm/nv-base.entry.js +1 -1
  252. package/dist/esm/nv-button.entry.js +8 -40
  253. package/dist/esm/nv-button.entry.js.map +1 -1
  254. package/dist/esm/nv-col.entry.js +2 -1
  255. package/dist/esm/nv-col.entry.js.map +1 -1
  256. package/dist/esm/nv-datagrid.entry.js +5 -31
  257. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  258. package/dist/esm/nv-datagridbody.entry.js +1 -1
  259. package/dist/esm/nv-datagridcolumn.entry.js +3 -1
  260. package/dist/esm/nv-datagridcolumn.entry.js.map +1 -1
  261. package/dist/esm/nv-datagriddatacell.entry.js +2 -1
  262. package/dist/esm/nv-datagriddatacell.entry.js.map +1 -1
  263. package/dist/esm/nv-datagridhead.entry.js +1 -1
  264. package/dist/esm/nv-datagridrow.entry.js +1 -1
  265. package/dist/esm/nv-fieldcheckbox.entry.js +9 -40
  266. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  267. package/dist/esm/nv-fielddropdown.entry.js +19 -58
  268. package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
  269. package/dist/esm/nv-fielddropdownitem.entry.js +5 -11
  270. package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
  271. package/dist/esm/nv-fieldmultiselect.entry.js +1034 -0
  272. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -0
  273. package/dist/esm/nv-fieldnumber.entry.js +21 -47
  274. package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
  275. package/dist/esm/nv-fieldpassword.entry.js +24 -65
  276. package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
  277. package/dist/esm/nv-fieldradio.entry.js +11 -29
  278. package/dist/esm/nv-fieldradio.entry.js.map +1 -1
  279. package/dist/esm/nv-fieldselect.entry.js +23 -64
  280. package/dist/esm/nv-fieldselect.entry.js.map +1 -1
  281. package/dist/esm/nv-fieldtext.entry.js +25 -55
  282. package/dist/esm/nv-fieldtext.entry.js.map +1 -1
  283. package/dist/esm/nv-fieldtextarea.entry.js +23 -61
  284. package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
  285. package/dist/esm/nv-fieldtoggle.entry.js +8 -21
  286. package/dist/esm/nv-fieldtoggle.entry.js.map +1 -1
  287. package/dist/esm/nv-icon.entry.js +10 -5
  288. package/dist/esm/nv-icon.entry.js.map +1 -1
  289. package/dist/esm/{nv-iconbutton.entry.js → nv-iconbutton_2.entry.js} +31 -45
  290. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -0
  291. package/dist/esm/nv-menu.entry.js +2 -21
  292. package/dist/esm/nv-menu.entry.js.map +1 -1
  293. package/dist/esm/nv-menuitem.entry.js +3 -7
  294. package/dist/esm/nv-menuitem.entry.js.map +1 -1
  295. package/dist/esm/nv-popover.entry.js +13 -49
  296. package/dist/esm/nv-popover.entry.js.map +1 -1
  297. package/dist/esm/nv-row.entry.js +2 -2
  298. package/dist/esm/nv-stack.entry.js +6 -8
  299. package/dist/esm/nv-stack.entry.js.map +1 -1
  300. package/dist/esm/nv-table.entry.js +7 -28
  301. package/dist/esm/nv-table.entry.js.map +1 -1
  302. package/dist/esm/nv-tablebody.entry.js +2 -2
  303. package/dist/esm/nv-tablecolumn.entry.js +5 -16
  304. package/dist/esm/nv-tablecolumn.entry.js.map +1 -1
  305. package/dist/esm/nv-tabledatacell.entry.js +3 -18
  306. package/dist/esm/nv-tabledatacell.entry.js.map +1 -1
  307. package/dist/esm/nv-tablehead.entry.js +2 -2
  308. package/dist/esm/nv-tablerow.entry.js +2 -2
  309. package/dist/esm/nv-tooltip.entry.js +3 -12
  310. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  311. package/dist/native/native.css +1 -1
  312. package/dist/native/native.esm.js +1 -1
  313. package/dist/native/native.esm.js.map +1 -1
  314. package/dist/native/p-0fbb962b.entry.js +2 -0
  315. package/dist/native/p-0fbb962b.entry.js.map +1 -0
  316. package/dist/native/{p-919cf3ec.entry.js → p-12eaebd6.entry.js} +2 -2
  317. package/dist/native/p-12eaebd6.entry.js.map +1 -0
  318. package/dist/native/{p-50c31094.entry.js → p-13070761.entry.js} +2 -2
  319. package/dist/native/p-13070761.entry.js.map +1 -0
  320. package/dist/native/{p-7701e4cc.entry.js → p-1aaee302.entry.js} +2 -2
  321. package/dist/native/p-1aaee302.entry.js.map +1 -0
  322. package/dist/native/p-1c689ec7.entry.js +2 -0
  323. package/dist/native/p-1c689ec7.entry.js.map +1 -0
  324. package/dist/native/{p-6e8bcd5b.entry.js → p-20c7fc4d.entry.js} +2 -2
  325. package/dist/native/p-20c7fc4d.entry.js.map +1 -0
  326. package/dist/native/p-2fca31c0.entry.js +2 -0
  327. package/dist/native/{p-9f89229b.entry.js.map → p-2fca31c0.entry.js.map} +1 -1
  328. package/dist/native/{p-4a64f5b0.entry.js → p-305951e4.entry.js} +2 -2
  329. package/dist/native/p-305951e4.entry.js.map +1 -0
  330. package/dist/native/p-306d1f04.entry.js +2 -0
  331. package/dist/native/p-306d1f04.entry.js.map +1 -0
  332. package/dist/native/{p-e71fc762.entry.js → p-330c929d.entry.js} +2 -2
  333. package/dist/native/{p-c85d031d.entry.js → p-36d5158c.entry.js} +3 -3
  334. package/dist/native/p-36d5158c.entry.js.map +1 -0
  335. package/dist/native/{p-25e410c1.entry.js → p-39dbb15b.entry.js} +2 -2
  336. package/dist/native/p-39dbb15b.entry.js.map +1 -0
  337. package/dist/native/p-3f912745.entry.js +2 -0
  338. package/dist/native/p-3f912745.entry.js.map +1 -0
  339. package/dist/native/p-4e351d8e.entry.js +2 -0
  340. package/dist/native/p-4e351d8e.entry.js.map +1 -0
  341. package/dist/native/p-589eb477.entry.js +2 -0
  342. package/dist/native/{p-d4277c50.entry.js → p-5b4bdbe2.entry.js} +2 -2
  343. package/dist/native/p-5b4bdbe2.entry.js.map +1 -0
  344. package/dist/native/{p-df6c9137.entry.js → p-65ad60eb.entry.js} +2 -2
  345. package/dist/native/p-65ad60eb.entry.js.map +1 -0
  346. package/dist/native/p-671699bf.entry.js +2 -0
  347. package/dist/native/{p-f2e31579.entry.js.map → p-671699bf.entry.js.map} +1 -1
  348. package/dist/native/{p-11faaf31.entry.js → p-69ca8c88.entry.js} +2 -2
  349. package/dist/native/p-69ca8c88.entry.js.map +1 -0
  350. package/dist/native/p-7a7b9b95.entry.js +2 -0
  351. package/dist/native/{p-a89f5542.entry.js → p-7b2d8b8c.entry.js} +2 -2
  352. package/dist/native/p-7b2d8b8c.entry.js.map +1 -0
  353. package/dist/native/{p-c5e7ecc8.entry.js → p-7b3a4cbf.entry.js} +2 -2
  354. package/dist/native/p-7b3a4cbf.entry.js.map +1 -0
  355. package/dist/native/{p-cd75ee63.entry.js → p-91d30cd7.entry.js} +2 -2
  356. package/dist/native/p-91d30cd7.entry.js.map +1 -0
  357. package/dist/native/{p-6eb50254.entry.js → p-92e3e334.entry.js} +2 -2
  358. package/dist/native/p-92e3e334.entry.js.map +1 -0
  359. package/dist/native/p-982e474f.entry.js +2 -0
  360. package/dist/native/{p-86947929.entry.js.map → p-982e474f.entry.js.map} +1 -1
  361. package/dist/native/{p-fa8a8b21.entry.js → p-a03df637.entry.js} +2 -2
  362. package/dist/native/p-a03df637.entry.js.map +1 -0
  363. package/dist/native/p-a5582014.entry.js +2 -0
  364. package/dist/native/p-a5582014.entry.js.map +1 -0
  365. package/dist/native/{p-605f8b3d.entry.js → p-a59ec107.entry.js} +2 -2
  366. package/dist/native/p-a59ec107.entry.js.map +1 -0
  367. package/dist/native/p-a7a3c45f.entry.js +2 -0
  368. package/dist/native/p-a7be7540.entry.js +2 -0
  369. package/dist/native/p-a7be7540.entry.js.map +1 -0
  370. package/dist/native/p-a8c0fefa.entry.js +2 -0
  371. package/dist/native/p-a8c0fefa.entry.js.map +1 -0
  372. package/dist/native/p-b4aea326.js +3 -0
  373. package/dist/native/p-b4aea326.js.map +1 -0
  374. package/dist/native/{p-2a6ca749.entry.js → p-c8f36510.entry.js} +2 -2
  375. package/dist/native/p-c8f36510.entry.js.map +1 -0
  376. package/dist/native/p-d3d682a7.entry.js +2 -0
  377. package/dist/native/p-d4c0a1e0.entry.js +2 -0
  378. package/dist/native/{p-a64baca2.entry.js → p-dbade286.entry.js} +2 -2
  379. package/dist/native/p-dbade286.entry.js.map +1 -0
  380. package/dist/native/p-e842220b.entry.js +2 -0
  381. package/dist/native/{p-93eea6e1.entry.js.map → p-e842220b.entry.js.map} +1 -1
  382. package/dist/native/p-eeb6a3dc.js +2 -0
  383. package/dist/native/p-f7b96c42.entry.js +2 -0
  384. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.d.ts +52 -0
  385. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.docs.d.ts +4 -0
  386. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +405 -0
  387. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.d.ts +4 -0
  388. package/dist/types/components.d.ts +329 -0
  389. package/dist/vscode-data.json +324 -0
  390. package/hydrate/index.js +2107 -1750
  391. package/hydrate/index.mjs +2107 -1750
  392. package/package.json +1 -1
  393. package/dist/cjs/index-72b8a9ad.js.map +0 -1
  394. package/dist/cjs/nv-badge.cjs.entry.js.map +0 -1
  395. package/dist/cjs/nv-iconbutton.cjs.entry.js.map +0 -1
  396. package/dist/cjs/nv-loader.cjs.entry.js +0 -35
  397. package/dist/cjs/nv-loader.cjs.entry.js.map +0 -1
  398. package/dist/components/p-0caa4741.js.map +0 -1
  399. package/dist/components/p-39e93e5b.js.map +0 -1
  400. package/dist/components/p-3ef4ded9.js.map +0 -1
  401. package/dist/components/p-54ea8e62.js.map +0 -1
  402. package/dist/components/p-6c1b9782.js.map +0 -1
  403. package/dist/components/p-c08a278d.js.map +0 -1
  404. package/dist/components/p-f0d5586a.js.map +0 -1
  405. package/dist/esm/index-b6f70e4a.js.map +0 -1
  406. package/dist/esm/nv-badge.entry.js.map +0 -1
  407. package/dist/esm/nv-iconbutton.entry.js.map +0 -1
  408. package/dist/esm/nv-loader.entry.js +0 -31
  409. package/dist/esm/nv-loader.entry.js.map +0 -1
  410. package/dist/native/p-01262eaf.entry.js +0 -2
  411. package/dist/native/p-01262eaf.entry.js.map +0 -1
  412. package/dist/native/p-0bf2007c.entry.js +0 -2
  413. package/dist/native/p-0bf2007c.entry.js.map +0 -1
  414. package/dist/native/p-11faaf31.entry.js.map +0 -1
  415. package/dist/native/p-17dba26d.entry.js +0 -2
  416. package/dist/native/p-25e410c1.entry.js.map +0 -1
  417. package/dist/native/p-2a6ca749.entry.js.map +0 -1
  418. package/dist/native/p-327fa1a0.entry.js +0 -2
  419. package/dist/native/p-3bc5875e.entry.js +0 -2
  420. package/dist/native/p-3bc5875e.entry.js.map +0 -1
  421. package/dist/native/p-47c78fe4.entry.js +0 -2
  422. package/dist/native/p-47c78fe4.entry.js.map +0 -1
  423. package/dist/native/p-4a64f5b0.entry.js.map +0 -1
  424. package/dist/native/p-50c31094.entry.js.map +0 -1
  425. package/dist/native/p-605f8b3d.entry.js.map +0 -1
  426. package/dist/native/p-64ae9a21.entry.js +0 -2
  427. package/dist/native/p-64ae9a21.entry.js.map +0 -1
  428. package/dist/native/p-6e8bcd5b.entry.js.map +0 -1
  429. package/dist/native/p-6eb50254.entry.js.map +0 -1
  430. package/dist/native/p-6ef216c4.js +0 -3
  431. package/dist/native/p-6ef216c4.js.map +0 -1
  432. package/dist/native/p-7701e4cc.entry.js.map +0 -1
  433. package/dist/native/p-86947929.entry.js +0 -2
  434. package/dist/native/p-8bfdda07.entry.js +0 -2
  435. package/dist/native/p-8bfdda07.entry.js.map +0 -1
  436. package/dist/native/p-8f95f4fa.entry.js +0 -2
  437. package/dist/native/p-8f95f4fa.entry.js.map +0 -1
  438. package/dist/native/p-919cf3ec.entry.js.map +0 -1
  439. package/dist/native/p-93eea6e1.entry.js +0 -2
  440. package/dist/native/p-95714583.js +0 -2
  441. package/dist/native/p-9f89229b.entry.js +0 -2
  442. package/dist/native/p-a64baca2.entry.js.map +0 -1
  443. package/dist/native/p-a89f5542.entry.js.map +0 -1
  444. package/dist/native/p-b3ec71c9.entry.js +0 -2
  445. package/dist/native/p-bbe9a373.entry.js +0 -2
  446. package/dist/native/p-c2dfee1a.entry.js +0 -2
  447. package/dist/native/p-c5e3e234.entry.js +0 -2
  448. package/dist/native/p-c5e3e234.entry.js.map +0 -1
  449. package/dist/native/p-c5e7ecc8.entry.js.map +0 -1
  450. package/dist/native/p-c85d031d.entry.js.map +0 -1
  451. package/dist/native/p-cd75ee63.entry.js.map +0 -1
  452. package/dist/native/p-d4277c50.entry.js.map +0 -1
  453. package/dist/native/p-df6c9137.entry.js.map +0 -1
  454. package/dist/native/p-ef7f605a.entry.js +0 -2
  455. package/dist/native/p-f2e31579.entry.js +0 -2
  456. package/dist/native/p-fa8a8b21.entry.js.map +0 -1
  457. /package/dist/native/{p-e71fc762.entry.js.map → p-330c929d.entry.js.map} +0 -0
  458. /package/dist/native/{p-b3ec71c9.entry.js.map → p-589eb477.entry.js.map} +0 -0
  459. /package/dist/native/{p-bbe9a373.entry.js.map → p-7a7b9b95.entry.js.map} +0 -0
  460. /package/dist/native/{p-17dba26d.entry.js.map → p-a7a3c45f.entry.js.map} +0 -0
  461. /package/dist/native/{p-c2dfee1a.entry.js.map → p-d3d682a7.entry.js.map} +0 -0
  462. /package/dist/native/{p-327fa1a0.entry.js.map → p-d4c0a1e0.entry.js.map} +0 -0
  463. /package/dist/native/{p-95714583.js.map → p-eeb6a3dc.js.map} +0 -0
  464. /package/dist/native/{p-ef7f605a.entry.js.map → p-f7b96c42.entry.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, h, a as Host, g as getElement } from './index-b6f70e4a.js';
1
+ import { r as registerInstance, h, a as Host, g as getElement } from './index-e7b35c14.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,47 +14,6 @@ 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';
58
17
  //#endregion PROPERTIES
59
18
  /****************************************************************************/
60
19
  //#region METHODS
@@ -77,6 +36,14 @@ const NvIconbutton = class {
77
36
  (_d = (_c = this.internals) === null || _c === void 0 ? void 0 : _c.form) === null || _d === void 0 ? void 0 : _d.reset();
78
37
  }
79
38
  };
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';
80
47
  }
81
48
  //#endregion METHODS
82
49
  /****************************************************************************/
@@ -105,7 +72,7 @@ const NvIconbutton = class {
105
72
  /****************************************************************************/
106
73
  //#region RENDER
107
74
  render() {
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' })));
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' })));
109
76
  }
110
77
  static get formAssociated() { return true; }
111
78
  get el() { return getElement(this); }
@@ -116,6 +83,25 @@ const NvIconbutton = class {
116
83
  };
117
84
  NvIconbutton.style = NvIconbuttonStyle0;
118
85
 
119
- export { NvIconbutton as nv_iconbutton };
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 };
120
106
 
121
- //# sourceMappingURL=nv-iconbutton.entry.js.map
107
+ //# sourceMappingURL=nv-iconbutton_2.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"nv-iconbutton.nv-loader.entry.js","mappings":";;;AAAA,MAAM,eAAe,GAAG,8nJAA8nJ,CAAC;AACvpJ,2BAAe,eAAe;;MCuBjB,YAAY;;;;;;;;;;;;;;;;;;;QA8Ef,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;oBA7E+B,IAAI;wBAQI,MAAM;uBAU5B,KAAK;wBAMJ,KAAK;sBAOE,KAAK;;oBAgBC,QAAQ;qBAMF,QAAQ;;;;;IA+B/C,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;;;;;;;;;;AC5KH,MAAM,WAAW,GAAG,qoHAAqoH,CAAC;AAC1pH,uBAAe,WAAW;;MCSb,QAAQ;;;oBAUiB,IAAI;;;;;;;IAexC,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-iconbutton/nv-iconbutton.scss?tag=nv-iconbutton","src/components/nv-iconbutton/nv-iconbutton.tsx","src/components/nv-loader/nv-loader.scss?tag=nv-loader","src/components/nv-loader/nv-loader.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","@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-b6f70e4a.js';
1
+ import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-e7b35c14.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,28 +9,9 @@ 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
- */
18
12
  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
- */
23
13
  this.nested = false;
24
- /**
25
- * Use this to disable the menu from closing automatically when a menu item is
26
- * selected.
27
- */
28
14
  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
- */
34
15
  this.placement = this.nested ? 'right-start' : 'bottom-end';
35
16
  }
36
17
  //#endregion PROPERTIES
@@ -193,7 +174,7 @@ const NvMenu = class {
193
174
  /****************************************************************************/
194
175
  //#region RENDER
195
176
  render() {
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" }))));
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" }))));
197
178
  }
198
179
  get el() { return getElement(this); }
199
180
  };
@@ -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-b6f70e4a.js';
1
+ import { r as registerInstance, h, a as Host, g as getElement } from './index-e7b35c14.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,13 +6,9 @@ const NvMenuitemStyle0 = nvMenuitemCss;
6
6
  const NvMenuitem = class {
7
7
  constructor(hostRef) {
8
8
  registerInstance(this, hostRef);
9
- /**
10
- * Disables the item, preventing user interaction.
11
- */
9
+ this.icon = undefined;
12
10
  this.disabled = false;
13
- /**
14
- * If the menu item has a submenu, the a caret icon will be displayed.
15
- */
11
+ this.shortcut = undefined;
16
12
  this.hasSubmenu = false;
17
13
  }
18
14
  //#endregion PROPERTIES
@@ -1 +1 @@
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
+ {"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,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-b6f70e4a.js';
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';
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,53 +2068,6 @@ 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 = 12;
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;
2118
2071
  this.handleClickOutside = (event) => {
2119
2072
  // This popover should close when the user clicks outside of it.
2120
2073
  if (this.el.contains(event.target))
@@ -2180,6 +2133,17 @@ const NvPopover = class {
2180
2133
  /****************************************************************************/
2181
2134
  //#region WATCHERS
2182
2135
  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;
2183
2147
  }
2184
2148
  //#endregion PROPERTIES
2185
2149
  /****************************************************************************/
@@ -2345,7 +2309,7 @@ const NvPopover = class {
2345
2309
  /****************************************************************************/
2346
2310
  //#region RENDER
2347
2311
  render() {
2348
- return (h(Host, { key: 'ee70da5a68b34bf289f79b6d18ffac777f8d807f' }, h("slot", { key: '64bd478a06c4ccf9f656a9ea617bbe39d2ce78d8', name: "trigger" }), h("div", { key: '5d024ffd7c1e00f8f476164da19d231edafa96ec', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: '63116e165f54dc018dfee0a8b56eeda96523f16f', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: '6a7a400135aaea61ed5f1b0cb492ab962598ad16', name: "content" }))));
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" }))));
2349
2313
  }
2350
2314
  get el() { return getElement(this); }
2351
2315
  static get watchers() { return {