@nova-design-system/nova-webcomponents 3.4.0 → 3.6.0

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 (459) hide show
  1. package/dist/cjs/{timeline.animation-dbb9c5ea.js → collapse.animation-a129dc3f.js} +5 -26
  2. package/dist/cjs/collapse.animation-a129dc3f.js.map +1 -0
  3. package/dist/cjs/fade.animation-644b5c4d.js +70 -0
  4. package/dist/cjs/fade.animation-644b5c4d.js.map +1 -0
  5. package/dist/cjs/{grow.animation-a1f0bc22.js → grow.animation-6d003803.js} +5 -5
  6. package/dist/cjs/{grow.animation-a1f0bc22.js.map → grow.animation-6d003803.js.map} +1 -1
  7. package/dist/cjs/index-c56424e5.js +8 -0
  8. package/dist/cjs/index.cjs.js +9 -4
  9. package/dist/cjs/index.cjs.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/cjs/native.cjs.js +1 -1
  12. package/dist/cjs/nv-accordion-item.cjs.entry.js +181 -0
  13. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -0
  14. package/dist/cjs/nv-accordion.cjs.entry.js +194 -0
  15. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -0
  16. package/dist/cjs/nv-alert.cjs.entry.js +6 -4
  17. package/dist/cjs/nv-alert.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nv-avatar.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-badge_2.cjs.entry.js +9 -7
  20. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-breadcrumb.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-breadcrumbs.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-button.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-calendar.cjs.entry.js +59 -50
  25. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  26. package/dist/cjs/nv-col.cjs.entry.js +1 -1
  27. package/dist/cjs/nv-datagrid.cjs.entry.js +2 -2
  28. package/dist/cjs/nv-datagridcolumn.cjs.entry.js +1 -1
  29. package/dist/cjs/nv-dialog.cjs.entry.js +19 -6
  30. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  31. package/dist/cjs/nv-dialogfooter_2.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +4 -4
  33. package/dist/cjs/nv-fielddate.cjs.entry.js +100 -35
  34. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  35. package/dist/cjs/nv-fielddaterange.cjs.entry.js +6 -6
  36. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  37. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
  38. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  39. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +85 -100
  40. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  41. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  42. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  43. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  44. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  45. package/dist/cjs/nv-fieldslider.cjs.entry.js +53 -9
  46. package/dist/cjs/nv-fieldslider.cjs.entry.js.map +1 -1
  47. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  48. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  49. package/dist/cjs/nv-fieldtime.cjs.entry.js +9 -9
  50. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  51. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  52. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  53. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  54. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  55. package/dist/cjs/nv-popover.cjs.entry.js +4 -3
  56. package/dist/cjs/nv-popover.cjs.entry.js.map +1 -1
  57. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  58. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  59. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  60. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  61. package/dist/cjs/nv-tooltip.cjs.entry.js +3 -2
  62. package/dist/cjs/nv-tooltip.cjs.entry.js.map +1 -1
  63. package/dist/cjs/{fade.animation-0d33d198.js → stylefire.es-717e022a.js} +1 -65
  64. package/dist/cjs/stylefire.es-717e022a.js.map +1 -0
  65. package/dist/cjs/timeline.animation-155e8839.js +25 -0
  66. package/dist/cjs/timeline.animation-155e8839.js.map +1 -0
  67. package/dist/collection/collection-manifest.json +2 -0
  68. package/dist/collection/components/nv-accordion/nv-accordion.docs.js +146 -0
  69. package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -0
  70. package/dist/collection/components/nv-accordion/nv-accordion.js +342 -0
  71. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -0
  72. package/dist/collection/components/nv-accordion/styles/nv-accordion.css +15 -0
  73. package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js +6 -0
  74. package/dist/collection/components/nv-accordion-item/nv-accordion-item.docs.js.map +1 -0
  75. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +353 -0
  76. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -0
  77. package/dist/collection/components/nv-accordion-item/styles/nv-accordion-item.css +66 -0
  78. package/dist/collection/components/nv-alert/nv-alert.js +1 -1
  79. package/dist/collection/components/nv-avatar/nv-avatar.js +1 -1
  80. package/dist/collection/components/nv-badge/nv-badge.js +2 -2
  81. package/dist/collection/components/nv-breadcrumb/nv-breadcrumb.js +1 -1
  82. package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.js +1 -1
  83. package/dist/collection/components/nv-button/nv-button.js +1 -1
  84. package/dist/collection/components/nv-calendar/nv-calendar.css +5 -0
  85. package/dist/collection/components/nv-calendar/nv-calendar.js +55 -27
  86. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  87. package/dist/collection/components/nv-calendar/nv-calendar.utils.js +0 -20
  88. package/dist/collection/components/nv-calendar/nv-calendar.utils.js.map +1 -1
  89. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +3 -2
  90. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
  91. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +5 -31
  92. package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
  93. package/dist/collection/components/nv-col/nv-col.js +1 -1
  94. package/dist/collection/components/nv-datagrid/nv-datagrid.js +2 -2
  95. package/dist/collection/components/nv-datagridcolumn/nv-datagridcolumn.js +1 -1
  96. package/dist/collection/components/nv-dialog/nv-dialog.css +1 -1
  97. package/dist/collection/components/nv-dialog/nv-dialog.js +38 -5
  98. package/dist/collection/components/nv-dialog/nv-dialog.js.map +1 -1
  99. package/dist/collection/components/nv-dialogfooter/nv-dialogfooter.js +1 -1
  100. package/dist/collection/components/nv-dialogheader/nv-dialogheader.js +1 -1
  101. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +4 -4
  102. package/dist/collection/components/nv-fielddate/nv-fielddate.js +102 -34
  103. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  104. package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +2 -0
  105. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +5 -5
  106. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  107. package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +18 -2
  108. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
  109. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  110. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
  111. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +36 -26
  112. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  113. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +117 -115
  114. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  115. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  116. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  117. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  118. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  119. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  120. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js.map +1 -1
  121. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js +45 -1
  122. package/dist/collection/components/nv-fieldslider/nv-fieldslider.utils.js.map +1 -1
  123. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js +4 -4
  124. package/dist/collection/components/nv-fieldslider/partials/range-thumb.js.map +1 -1
  125. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js +3 -3
  126. package/dist/collection/components/nv-fieldslider/partials/single-thumb.js.map +1 -1
  127. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js +42 -1
  128. package/dist/collection/components/nv-fieldslider/test/nv-fieldslider.utils.test.js.map +1 -1
  129. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  130. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  131. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  132. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  133. package/dist/collection/components/nv-icon/nv-icons.js +3 -0
  134. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  135. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  136. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  137. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  138. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  139. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  140. package/dist/collection/components/nv-row/nv-row.js +1 -1
  141. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  142. package/dist/collection/components/nv-table/nv-table.js +2 -2
  143. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  144. package/dist/collection/components/nv-tooltip/nv-tooltip.js +21 -3
  145. package/dist/collection/components/nv-tooltip/nv-tooltip.js.map +1 -1
  146. package/dist/components/index.js +7 -3
  147. package/dist/components/index.js.map +1 -1
  148. package/dist/components/nv-accordion-item.d.ts +11 -0
  149. package/dist/components/nv-accordion-item.js +8 -0
  150. package/dist/components/nv-accordion-item.js.map +1 -0
  151. package/dist/components/nv-accordion.d.ts +11 -0
  152. package/dist/components/nv-accordion.js +242 -0
  153. package/dist/components/nv-accordion.js.map +1 -0
  154. package/dist/components/nv-alert.js +6 -4
  155. package/dist/components/nv-alert.js.map +1 -1
  156. package/dist/components/nv-avatar.js +2 -2
  157. package/dist/components/nv-badge.js +1 -1
  158. package/dist/components/nv-breadcrumb.js +3 -3
  159. package/dist/components/nv-breadcrumbs.js +1 -1
  160. package/dist/components/nv-button.js +1 -1
  161. package/dist/components/nv-calendar.js +1 -1
  162. package/dist/components/nv-col.js +1 -1
  163. package/dist/components/nv-datagrid.js +4 -4
  164. package/dist/components/nv-datagridcolumn.js +1 -1
  165. package/dist/components/nv-dialog.js +25 -11
  166. package/dist/components/nv-dialog.js.map +1 -1
  167. package/dist/components/nv-dialogfooter.js +1 -1
  168. package/dist/components/nv-dialogheader.js +1 -1
  169. package/dist/components/nv-fieldcheckbox.js +1 -1
  170. package/dist/components/nv-fielddate.js +107 -41
  171. package/dist/components/nv-fielddate.js.map +1 -1
  172. package/dist/components/nv-fielddaterange.js +12 -12
  173. package/dist/components/nv-fielddaterange.js.map +1 -1
  174. package/dist/components/nv-fielddropdown.js +8 -8
  175. package/dist/components/nv-fielddropdownitem.js +1 -1
  176. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  177. package/dist/components/nv-fieldmultiselect.js +94 -110
  178. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  179. package/dist/components/nv-fieldnumber.js +1 -1
  180. package/dist/components/nv-fieldpassword.js +6 -6
  181. package/dist/components/nv-fieldradio.js +3 -3
  182. package/dist/components/nv-fieldselect.js +8 -8
  183. package/dist/components/nv-fieldslider.js +57 -13
  184. package/dist/components/nv-fieldslider.js.map +1 -1
  185. package/dist/components/nv-fieldtext.js +1 -1
  186. package/dist/components/nv-fieldtextarea.js +3 -3
  187. package/dist/components/nv-fieldtime.js +13 -13
  188. package/dist/components/nv-icon.js +1 -1
  189. package/dist/components/nv-iconbutton.js +1 -1
  190. package/dist/components/nv-loader.js +1 -1
  191. package/dist/components/nv-menu.js +4 -4
  192. package/dist/components/nv-menuitem.js +1 -1
  193. package/dist/components/nv-popover.js +1 -1
  194. package/dist/components/nv-row.js +1 -1
  195. package/dist/components/nv-stack.js +1 -1
  196. package/dist/components/nv-table.js +2 -2
  197. package/dist/components/nv-toggle.js +2 -2
  198. package/dist/components/nv-tooltip.js +1 -1
  199. package/dist/components/{p-1daca48a.js → p-09cdd71f.js} +2 -65
  200. package/dist/components/p-09cdd71f.js.map +1 -0
  201. package/dist/components/p-15aeab4d.js +23 -0
  202. package/dist/components/p-15aeab4d.js.map +1 -0
  203. package/dist/components/{p-c07c32d2.js → p-190c8f60.js} +3 -3
  204. package/dist/components/{p-c07c32d2.js.map → p-190c8f60.js.map} +1 -1
  205. package/dist/components/p-1cbacdba.js +68 -0
  206. package/dist/components/p-1cbacdba.js.map +1 -0
  207. package/dist/components/p-230ad6c5.js +223 -0
  208. package/dist/components/p-230ad6c5.js.map +1 -0
  209. package/dist/components/{p-a189d074.js → p-316ae8e3.js} +4 -4
  210. package/dist/components/{p-a189d074.js.map → p-316ae8e3.js.map} +1 -1
  211. package/dist/components/{p-953d8b4d.js → p-4069966e.js} +8 -6
  212. package/dist/components/p-4069966e.js.map +1 -0
  213. package/dist/components/{p-f7c7a406.js → p-436a0f99.js} +6 -5
  214. package/dist/components/p-436a0f99.js.map +1 -0
  215. package/dist/components/{p-dec6fc68.js → p-4864a690.js} +2 -2
  216. package/dist/components/{p-dec6fc68.js.map → p-4864a690.js.map} +1 -1
  217. package/dist/components/{p-a29a9396.js → p-5e89eb9d.js} +7 -7
  218. package/dist/components/{p-a29a9396.js.map → p-5e89eb9d.js.map} +1 -1
  219. package/dist/components/{p-131e5140.js → p-618ae85a.js} +5 -4
  220. package/dist/components/p-618ae85a.js.map +1 -0
  221. package/dist/components/{p-df465ef2.js → p-79b38dfb.js} +3 -3
  222. package/dist/components/{p-df465ef2.js.map → p-79b38dfb.js.map} +1 -1
  223. package/dist/components/{p-a0d7e0cd.js → p-840858ed.js} +60 -51
  224. package/dist/components/p-840858ed.js.map +1 -0
  225. package/dist/components/{p-dcaf9010.js → p-8a5b0f74.js} +3 -3
  226. package/dist/components/{p-dcaf9010.js.map → p-8a5b0f74.js.map} +1 -1
  227. package/dist/components/{p-c1765831.js → p-8d45dbfe.js} +2 -2
  228. package/dist/components/{p-c1765831.js.map → p-8d45dbfe.js.map} +1 -1
  229. package/dist/components/{p-42301d8f.js → p-9a263d0e.js} +3 -23
  230. package/dist/components/p-9a263d0e.js.map +1 -0
  231. package/dist/components/{p-9f1e8ef3.js → p-9cff2fd1.js} +2 -2
  232. package/dist/components/{p-9f1e8ef3.js.map → p-9cff2fd1.js.map} +1 -1
  233. package/dist/components/{p-9e6e26cb.js → p-9ed7a440.js} +5 -5
  234. package/dist/components/{p-9e6e26cb.js.map → p-9ed7a440.js.map} +1 -1
  235. package/dist/components/{p-3f567fde.js → p-ac76a11c.js} +5 -5
  236. package/dist/components/{p-3f567fde.js.map → p-ac76a11c.js.map} +1 -1
  237. package/dist/components/{p-6277f746.js → p-ca130ad2.js} +2 -2
  238. package/dist/components/{p-6277f746.js.map → p-ca130ad2.js.map} +1 -1
  239. package/dist/components/{p-a1438b39.js → p-d2b4441a.js} +3 -3
  240. package/dist/components/{p-a1438b39.js.map → p-d2b4441a.js.map} +1 -1
  241. package/dist/components/p-f1bbb9e8.js +88 -0
  242. package/dist/components/p-f1bbb9e8.js.map +1 -0
  243. package/dist/components/{p-3f58525b.js → p-f266b533.js} +5 -5
  244. package/dist/components/{p-3f58525b.js.map → p-f266b533.js.map} +1 -1
  245. package/dist/esm/{timeline.animation-1b88f052.js → collapse.animation-16e3af45.js} +3 -23
  246. package/dist/esm/collapse.animation-16e3af45.js.map +1 -0
  247. package/dist/esm/fade.animation-71e8e34c.js +68 -0
  248. package/dist/esm/fade.animation-71e8e34c.js.map +1 -0
  249. package/dist/esm/{grow.animation-cac164da.js → grow.animation-f7b26024.js} +2 -2
  250. package/dist/esm/{grow.animation-cac164da.js.map → grow.animation-f7b26024.js.map} +1 -1
  251. package/dist/esm/index-a1936cd0.js +8 -0
  252. package/dist/esm/index.js +8 -3
  253. package/dist/esm/index.js.map +1 -1
  254. package/dist/esm/loader.js +1 -1
  255. package/dist/esm/native.js +1 -1
  256. package/dist/esm/nv-accordion-item.entry.js +177 -0
  257. package/dist/esm/nv-accordion-item.entry.js.map +1 -0
  258. package/dist/esm/nv-accordion.entry.js +190 -0
  259. package/dist/esm/nv-accordion.entry.js.map +1 -0
  260. package/dist/esm/nv-alert.entry.js +5 -3
  261. package/dist/esm/nv-alert.entry.js.map +1 -1
  262. package/dist/esm/nv-avatar.entry.js +1 -1
  263. package/dist/esm/nv-badge_2.entry.js +7 -5
  264. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  265. package/dist/esm/nv-breadcrumb.entry.js +1 -1
  266. package/dist/esm/nv-breadcrumbs.entry.js +1 -1
  267. package/dist/esm/nv-button.entry.js +1 -1
  268. package/dist/esm/nv-calendar.entry.js +59 -50
  269. package/dist/esm/nv-calendar.entry.js.map +1 -1
  270. package/dist/esm/nv-col.entry.js +1 -1
  271. package/dist/esm/nv-datagrid.entry.js +2 -2
  272. package/dist/esm/nv-datagridcolumn.entry.js +1 -1
  273. package/dist/esm/nv-dialog.entry.js +19 -6
  274. package/dist/esm/nv-dialog.entry.js.map +1 -1
  275. package/dist/esm/nv-dialogfooter_2.entry.js +2 -2
  276. package/dist/esm/nv-fieldcheckbox.entry.js +4 -4
  277. package/dist/esm/nv-fielddate.entry.js +100 -35
  278. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  279. package/dist/esm/nv-fielddaterange.entry.js +6 -6
  280. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  281. package/dist/esm/nv-fielddropdown.entry.js +3 -3
  282. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  283. package/dist/esm/nv-fieldmultiselect.entry.js +85 -100
  284. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  285. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  286. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  287. package/dist/esm/nv-fieldradio.entry.js +3 -3
  288. package/dist/esm/nv-fieldselect.entry.js +5 -5
  289. package/dist/esm/nv-fieldslider.entry.js +53 -9
  290. package/dist/esm/nv-fieldslider.entry.js.map +1 -1
  291. package/dist/esm/nv-fieldtext.entry.js +3 -3
  292. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  293. package/dist/esm/nv-fieldtime.entry.js +9 -9
  294. package/dist/esm/nv-icon.entry.js +2 -2
  295. package/dist/esm/nv-icon.entry.js.map +1 -1
  296. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  297. package/dist/esm/nv-menu.entry.js +1 -1
  298. package/dist/esm/nv-menuitem.entry.js +1 -1
  299. package/dist/esm/nv-popover.entry.js +4 -3
  300. package/dist/esm/nv-popover.entry.js.map +1 -1
  301. package/dist/esm/nv-row.entry.js +1 -1
  302. package/dist/esm/nv-stack.entry.js +1 -1
  303. package/dist/esm/nv-table.entry.js +2 -2
  304. package/dist/esm/nv-toggle.entry.js +2 -2
  305. package/dist/esm/nv-tooltip.entry.js +4 -3
  306. package/dist/esm/nv-tooltip.entry.js.map +1 -1
  307. package/dist/esm/{fade.animation-2a077983.js → stylefire.es-74da334a.js} +2 -65
  308. package/dist/esm/stylefire.es-74da334a.js.map +1 -0
  309. package/dist/esm/timeline.animation-adf35ecb.js +23 -0
  310. package/dist/esm/timeline.animation-adf35ecb.js.map +1 -0
  311. package/dist/native/index.esm.js +1 -1
  312. package/dist/native/index.esm.js.map +1 -1
  313. package/dist/native/native.css +1 -1
  314. package/dist/native/native.esm.js +1 -1
  315. package/dist/native/native.esm.js.map +1 -1
  316. package/dist/native/{p-a0505695.entry.js → p-08452012.entry.js} +2 -2
  317. package/dist/native/p-09cdd71f.js +16 -0
  318. package/dist/native/p-09cdd71f.js.map +1 -0
  319. package/dist/native/p-0ac03708.entry.js +2 -0
  320. package/dist/native/p-0ac03708.entry.js.map +1 -0
  321. package/dist/native/p-0ada0382.entry.js +2 -0
  322. package/dist/native/p-0ada0382.entry.js.map +1 -0
  323. package/dist/native/p-1235c007.entry.js +2 -0
  324. package/dist/native/p-12963ae4.entry.js +2 -0
  325. package/dist/native/p-12963ae4.entry.js.map +1 -0
  326. package/dist/native/p-15aeab4d.js +2 -0
  327. package/dist/native/p-15aeab4d.js.map +1 -0
  328. package/dist/native/{p-b5b9190a.entry.js → p-18831490.entry.js} +2 -2
  329. package/dist/native/{p-1d98477d.entry.js → p-1ad1bff9.entry.js} +2 -2
  330. package/dist/native/p-1cbacdba.js +2 -0
  331. package/dist/native/p-1cbacdba.js.map +1 -0
  332. package/dist/native/p-1cce9b24.entry.js +2 -0
  333. package/dist/native/p-1cce9b24.entry.js.map +1 -0
  334. package/dist/native/{p-914da1e1.entry.js → p-1f932a4b.entry.js} +2 -2
  335. package/dist/native/{p-01164e86.entry.js → p-2576c1a0.entry.js} +2 -2
  336. package/dist/native/{p-2bc7d66a.entry.js → p-2d23fcea.entry.js} +2 -2
  337. package/dist/native/{p-1c1ecd38.entry.js → p-31e72603.entry.js} +2 -2
  338. package/dist/native/p-33e5037d.entry.js +2 -0
  339. package/dist/native/{p-ff0f3794.entry.js → p-4cf00884.entry.js} +2 -2
  340. package/dist/native/p-5172f17a.entry.js +2 -0
  341. package/dist/native/{p-08ca678c.entry.js → p-51a57a3a.entry.js} +2 -2
  342. package/dist/native/p-5eca22c7.entry.js +2 -0
  343. package/dist/native/{p-2006f5d4.entry.js.map → p-5eca22c7.entry.js.map} +1 -1
  344. package/dist/native/{p-c7b8b7ba.entry.js → p-609b3822.entry.js} +2 -2
  345. package/dist/native/{p-55df8bf9.entry.js → p-625be06b.entry.js} +2 -2
  346. package/dist/native/{p-9850c1d7.entry.js → p-8030c16b.entry.js} +2 -2
  347. package/dist/native/{p-6029e51b.entry.js → p-85a54ef2.entry.js} +2 -2
  348. package/dist/native/p-8d45dbfe.js +2 -0
  349. package/dist/native/p-9a263d0e.js +2 -0
  350. package/dist/native/p-9a263d0e.js.map +1 -0
  351. package/dist/native/{p-1a5d3b87.entry.js → p-9dc1c3e7.entry.js} +2 -2
  352. package/dist/native/p-a36dc25a.entry.js +2 -0
  353. package/dist/native/{p-ad128108.entry.js.map → p-a36dc25a.entry.js.map} +1 -1
  354. package/dist/native/p-a6dc9b59.entry.js +2 -0
  355. package/dist/native/p-a6dc9b59.entry.js.map +1 -0
  356. package/dist/native/{p-0410facd.entry.js → p-b829383a.entry.js} +2 -2
  357. package/dist/native/{p-abbe5d69.entry.js → p-bab6d0a5.entry.js} +2 -2
  358. package/dist/native/p-baddee4c.entry.js +7 -0
  359. package/dist/native/p-baddee4c.entry.js.map +1 -0
  360. package/dist/native/p-be67545e.entry.js +2 -0
  361. package/dist/native/p-be67545e.entry.js.map +1 -0
  362. package/dist/native/p-c2826f22.entry.js +2 -0
  363. package/dist/native/p-c2826f22.entry.js.map +1 -0
  364. package/dist/native/p-c9cde996.entry.js +2 -0
  365. package/dist/native/{p-0ec2d430.entry.js.map → p-c9cde996.entry.js.map} +1 -1
  366. package/dist/native/{p-a30206c1.entry.js → p-cf468c67.entry.js} +2 -2
  367. package/dist/native/{p-24659a85.entry.js → p-ddb0b9f6.entry.js} +2 -2
  368. package/dist/native/{p-ec87200a.entry.js → p-e19a8885.entry.js} +2 -2
  369. package/dist/native/{p-7ba03c5d.entry.js → p-e802fbb8.entry.js} +2 -2
  370. package/dist/native/p-ec92ee7a.entry.js +2 -0
  371. package/dist/native/{p-f377b285.entry.js → p-f9aa4900.entry.js} +2 -2
  372. package/dist/native/p-fca3e27d.entry.js +2 -0
  373. package/dist/native/p-fca3e27d.entry.js.map +1 -0
  374. package/dist/native/p-fe4e516b.entry.js +2 -0
  375. package/dist/native/p-fe4e516b.entry.js.map +1 -0
  376. package/dist/types/components/nv-accordion/nv-accordion.d.ts +115 -0
  377. package/dist/types/components/nv-accordion/nv-accordion.docs.d.ts +4 -0
  378. package/dist/types/components/nv-accordion-item/nv-accordion-item.d.ts +79 -0
  379. package/dist/types/components/nv-accordion-item/nv-accordion-item.docs.d.ts +4 -0
  380. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +4 -2
  381. package/dist/types/components/nv-dialog/nv-dialog.d.ts +7 -0
  382. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +22 -2
  383. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +13 -16
  384. package/dist/types/components/nv-fieldslider/nv-fieldslider.utils.d.ts +13 -0
  385. package/dist/types/components/nv-fieldslider/partials/range-thumb.d.ts +2 -0
  386. package/dist/types/components/nv-fieldslider/partials/single-thumb.d.ts +2 -0
  387. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  388. package/dist/types/components/nv-tooltip/nv-tooltip.d.ts +7 -0
  389. package/dist/types/components.d.ts +241 -10
  390. package/dist/vscode-data.json +84 -5
  391. package/hydrate/index.js +1116 -595
  392. package/hydrate/index.mjs +1116 -595
  393. package/package.json +7 -3
  394. package/dist/cjs/fade.animation-0d33d198.js.map +0 -1
  395. package/dist/cjs/timeline.animation-dbb9c5ea.js.map +0 -1
  396. package/dist/components/p-131e5140.js.map +0 -1
  397. package/dist/components/p-1daca48a.js.map +0 -1
  398. package/dist/components/p-42301d8f.js.map +0 -1
  399. package/dist/components/p-953d8b4d.js.map +0 -1
  400. package/dist/components/p-a0d7e0cd.js.map +0 -1
  401. package/dist/components/p-b207be02.js +0 -88
  402. package/dist/components/p-b207be02.js.map +0 -1
  403. package/dist/components/p-f7c7a406.js.map +0 -1
  404. package/dist/esm/fade.animation-2a077983.js.map +0 -1
  405. package/dist/esm/timeline.animation-1b88f052.js.map +0 -1
  406. package/dist/native/p-0ec2d430.entry.js +0 -2
  407. package/dist/native/p-14895e84.entry.js +0 -2
  408. package/dist/native/p-14895e84.entry.js.map +0 -1
  409. package/dist/native/p-1daca48a.js +0 -16
  410. package/dist/native/p-1daca48a.js.map +0 -1
  411. package/dist/native/p-2006f5d4.entry.js +0 -2
  412. package/dist/native/p-2b1e7675.entry.js +0 -2
  413. package/dist/native/p-2b1e7675.entry.js.map +0 -1
  414. package/dist/native/p-2c3fb8cc.entry.js +0 -2
  415. package/dist/native/p-2c3fb8cc.entry.js.map +0 -1
  416. package/dist/native/p-42301d8f.js +0 -2
  417. package/dist/native/p-42301d8f.js.map +0 -1
  418. package/dist/native/p-45cbe6e4.entry.js +0 -2
  419. package/dist/native/p-46428304.entry.js +0 -2
  420. package/dist/native/p-46428304.entry.js.map +0 -1
  421. package/dist/native/p-59b07b36.entry.js +0 -2
  422. package/dist/native/p-59b07b36.entry.js.map +0 -1
  423. package/dist/native/p-82c4bf56.entry.js +0 -2
  424. package/dist/native/p-82c4bf56.entry.js.map +0 -1
  425. package/dist/native/p-86ab23ea.entry.js +0 -2
  426. package/dist/native/p-ad128108.entry.js +0 -2
  427. package/dist/native/p-c1765831.js +0 -2
  428. package/dist/native/p-c92d55f9.entry.js +0 -2
  429. package/dist/native/p-c9d3de9c.entry.js +0 -2
  430. package/dist/native/p-c9d3de9c.entry.js.map +0 -1
  431. package/dist/native/p-cbca9326.entry.js +0 -2
  432. package/dist/native/p-d21b2da2.entry.js +0 -7
  433. package/dist/native/p-d21b2da2.entry.js.map +0 -1
  434. /package/dist/native/{p-a0505695.entry.js.map → p-08452012.entry.js.map} +0 -0
  435. /package/dist/native/{p-86ab23ea.entry.js.map → p-1235c007.entry.js.map} +0 -0
  436. /package/dist/native/{p-b5b9190a.entry.js.map → p-18831490.entry.js.map} +0 -0
  437. /package/dist/native/{p-1d98477d.entry.js.map → p-1ad1bff9.entry.js.map} +0 -0
  438. /package/dist/native/{p-914da1e1.entry.js.map → p-1f932a4b.entry.js.map} +0 -0
  439. /package/dist/native/{p-01164e86.entry.js.map → p-2576c1a0.entry.js.map} +0 -0
  440. /package/dist/native/{p-2bc7d66a.entry.js.map → p-2d23fcea.entry.js.map} +0 -0
  441. /package/dist/native/{p-1c1ecd38.entry.js.map → p-31e72603.entry.js.map} +0 -0
  442. /package/dist/native/{p-cbca9326.entry.js.map → p-33e5037d.entry.js.map} +0 -0
  443. /package/dist/native/{p-ff0f3794.entry.js.map → p-4cf00884.entry.js.map} +0 -0
  444. /package/dist/native/{p-c92d55f9.entry.js.map → p-5172f17a.entry.js.map} +0 -0
  445. /package/dist/native/{p-08ca678c.entry.js.map → p-51a57a3a.entry.js.map} +0 -0
  446. /package/dist/native/{p-c7b8b7ba.entry.js.map → p-609b3822.entry.js.map} +0 -0
  447. /package/dist/native/{p-55df8bf9.entry.js.map → p-625be06b.entry.js.map} +0 -0
  448. /package/dist/native/{p-9850c1d7.entry.js.map → p-8030c16b.entry.js.map} +0 -0
  449. /package/dist/native/{p-6029e51b.entry.js.map → p-85a54ef2.entry.js.map} +0 -0
  450. /package/dist/native/{p-c1765831.js.map → p-8d45dbfe.js.map} +0 -0
  451. /package/dist/native/{p-1a5d3b87.entry.js.map → p-9dc1c3e7.entry.js.map} +0 -0
  452. /package/dist/native/{p-0410facd.entry.js.map → p-b829383a.entry.js.map} +0 -0
  453. /package/dist/native/{p-abbe5d69.entry.js.map → p-bab6d0a5.entry.js.map} +0 -0
  454. /package/dist/native/{p-a30206c1.entry.js.map → p-cf468c67.entry.js.map} +0 -0
  455. /package/dist/native/{p-24659a85.entry.js.map → p-ddb0b9f6.entry.js.map} +0 -0
  456. /package/dist/native/{p-ec87200a.entry.js.map → p-e19a8885.entry.js.map} +0 -0
  457. /package/dist/native/{p-7ba03c5d.entry.js.map → p-e802fbb8.entry.js.map} +0 -0
  458. /package/dist/native/{p-45cbe6e4.entry.js.map → p-ec92ee7a.entry.js.map} +0 -0
  459. /package/dist/native/{p-f377b285.entry.js.map → p-f9aa4900.entry.js.map} +0 -0
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Will execute a series of animation promises in sequence.
5
+ * This is useful for chaining animations where each step depends on the
6
+ * previous one completing before starting the next.
7
+ *
8
+ * @param {Array<() => Promise<void>>} animations - The array of animation functions.
9
+ * @returns {Object} - An object with a `start` method to begin the timeline.
10
+ *
11
+ * @example
12
+ * const { fadeOut } = useFade(this.ref);
13
+ * const { collapse } = useCollapse(this.ref);
14
+ *
15
+ * timeline(fadeOut, collapse).start();
16
+ */
17
+ const timeline = (...animations) => ({
18
+ start: () => {
19
+ return animations.reduce((promise, animation) => promise.then(() => animation()), Promise.resolve());
20
+ },
21
+ });
22
+
23
+ exports.timeline = timeline;
24
+
25
+ //# sourceMappingURL=timeline.animation-155e8839.js.map
@@ -0,0 +1 @@
1
+ {"file":"timeline.animation-155e8839.js","mappings":";;AAAA;;;;;;;;;;;;;;MAcM,QAAQ,GAAG,CAAC,GAAG,UAAsC,MAAM;IAC/D,KAAK,EAAE;QACL,OAAO,UAAU,CAAC,MAAM,CACtB,CAAC,OAAO,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,CAAC,EACvD,OAAO,CAAC,OAAO,EAAE,CAClB,CAAC;KACH;CACF;;;;","names":[],"sources":["src/animations/timeline.animation.ts"],"sourcesContent":["/**\n * Will execute a series of animation promises in sequence.\n * This is useful for chaining animations where each step depends on the\n * previous one completing before starting the next.\n *\n * @param {Array<() => Promise<void>>} animations - The array of animation functions.\n * @returns {Object} - An object with a `start` method to begin the timeline.\n *\n * @example\n * const { fadeOut } = useFade(this.ref);\n * const { collapse } = useCollapse(this.ref);\n *\n * timeline(fadeOut, collapse).start();\n */\nconst timeline = (...animations: Array<() => Promise<void>>) => ({\n start: () => {\n return animations.reduce(\n (promise, animation) => promise.then(() => animation()),\n Promise.resolve(),\n );\n },\n});\n\nexport { timeline };\n"],"version":3}
@@ -1,5 +1,7 @@
1
1
  {
2
2
  "entries": [
3
+ "components/nv-accordion/nv-accordion.js",
4
+ "components/nv-accordion-item/nv-accordion-item.js",
3
5
  "components/nv-alert/nv-alert.js",
4
6
  "components/nv-avatar/nv-avatar.js",
5
7
  "components/nv-badge/nv-badge.js",
@@ -0,0 +1,146 @@
1
+ import { h } from "@stencil/core";
2
+ const NvAccordionDocs = {
3
+ component: 'nv-accordion',
4
+ subcomponents: ['nv-accordion-item', 'nv-icon', 'nv-button', 'nv-badge'],
5
+ badge: 'beta',
6
+ stories: [
7
+ {
8
+ name: 'Default',
9
+ description: 'Accordion with simple items',
10
+ args: {
11
+ mode: 'accordion',
12
+ data: JSON.stringify([
13
+ {
14
+ id: '1',
15
+ title: 'Title 1',
16
+ content: 'Content of title 1',
17
+ },
18
+ {
19
+ id: '2',
20
+ title: 'Title 2',
21
+ content: 'Content of title 2',
22
+ },
23
+ ]),
24
+ },
25
+ template: h("nv-accordion", { "data-storybook-args": true }),
26
+ },
27
+ {
28
+ name: 'MultiMode',
29
+ description: 'Accordion allowing multiple items to be open',
30
+ args: {
31
+ mode: 'multi',
32
+ data: JSON.stringify([
33
+ {
34
+ id: '1',
35
+ title: 'Title 1',
36
+ content: 'Content of title 1',
37
+ },
38
+ {
39
+ id: '2',
40
+ title: 'Title 2',
41
+ content: 'Content of title 2',
42
+ },
43
+ ]),
44
+ },
45
+ template: h("nv-accordion", { "data-storybook-args": true }),
46
+ },
47
+ {
48
+ name: 'CustomHeader',
49
+ description: 'Real-world example with TraXes Connection Points',
50
+ template: (h("nv-accordion", { mode: "accordion", openIndexes: [0, 2] }, h("nv-accordion-item", null, h("div", { slot: "header" }, h("div", { class: "flex items-center justify-between w-full" }, h("div", { class: "flex flex-col border-r border-[#E3E3E3] pr-4 mr-4" }, h("span", { class: "nv-accordion-item__title" }, "EC-308"), h("span", { class: "nv-accordion-item__subtitle" }, "Connection point")), h("nv-badge", { color: "success", label: "Running" }, h("nv-icon", { slot: "leading-icon", name: "check", size: "sm" })))), h("div", { slot: "content", class: "flex items-center justify-between" }, h("div", null, h("p", null, "Single accordion or accordion group"), h("p", null, "Use the accordion as a single instance, or in a group of accordions stacked vertically."), h("p", null, "The accordion title is wrapped in a heading tag by default. Alter it to fit the information architecture of the page.")))), h("nv-accordion-item", null, h("div", { slot: "header" }, h("div", { class: "flex items-center justify-between w-full" }, h("div", { class: "flex flex-col border-r border-[#E3E3E3] pr-4 mr-4" }, h("span", { class: "nv-accordion-item__title" }, "EC-309"), h("span", { class: "nv-accordion-item__subtitle" }, "Connection point")), h("nv-badge", { color: "success", label: "Running" }, h("nv-icon", { slot: "leading-icon", name: "check", size: "sm" })))), h("div", { slot: "content" }, h("p", null, "Content for EC-309 connection point"))), h("nv-accordion-item", null, h("div", { slot: "header" }, h("div", { class: "flex items-center justify-between w-full" }, h("div", { class: "flex flex-col border-r border-[#E3E3E3] pr-4 mr-4" }, h("span", { class: "nv-accordion-item__title" }, "EC-310"), h("span", { class: "nv-accordion-item__subtitle" }, "Connection point")), h("nv-badge", { color: "error", label: "Stopped" }, h("nv-icon", { slot: "leading-icon", name: "x", size: "sm" })))), h("div", { slot: "content" }, h("p", null, "Content for EC-310 connection point (stopped)"))))),
51
+ },
52
+ {
53
+ name: 'DisabledItem',
54
+ description: 'Accordion with a disabled item',
55
+ template: (h("nv-accordion", { mode: "accordion" }, h("nv-accordion-item", { itemtitle: "Active item", open: true }, h("div", { slot: "content" }, "This item is accessible")), h("nv-accordion-item", { itemtitle: "Disabled item", disabled: true }, h("div", { slot: "content" }, "This item is not accessible because it is disabled")))),
56
+ },
57
+ {
58
+ name: 'OpenIndexesDemo',
59
+ description: 'Demonstration of openIndexes with multiple items and first item pre-opened',
60
+ args: {
61
+ mode: 'accordion',
62
+ data: JSON.stringify([
63
+ {
64
+ id: '1',
65
+ title: 'Item 1 - Pre-opened',
66
+ content: 'This is the first item that is opened by default using openIndexes.',
67
+ },
68
+ {
69
+ id: '2',
70
+ title: 'Item 2',
71
+ content: 'Content of the second item.',
72
+ },
73
+ {
74
+ id: '3',
75
+ title: 'Item 3',
76
+ content: 'Content of the third item.',
77
+ },
78
+ {
79
+ id: '4',
80
+ title: 'Item 4',
81
+ content: 'Content of the fourth item.',
82
+ },
83
+ {
84
+ id: '5',
85
+ title: 'Item 5',
86
+ content: 'Content of the fifth item.',
87
+ },
88
+ {
89
+ id: '6',
90
+ title: 'Item 6',
91
+ content: 'Content of the sixth item.',
92
+ },
93
+ {
94
+ id: '7',
95
+ title: 'Item 7',
96
+ content: 'Content of the seventh item.',
97
+ },
98
+ {
99
+ id: '8',
100
+ title: 'Item 8',
101
+ content: 'Content of the eighth item.',
102
+ },
103
+ {
104
+ id: '9',
105
+ title: 'Item 9',
106
+ content: 'Content of the ninth item.',
107
+ },
108
+ {
109
+ id: '10',
110
+ title: 'Item 10',
111
+ content: 'Content of the tenth item.',
112
+ },
113
+ ]),
114
+ openIndexes: [0],
115
+ },
116
+ template: h("nv-accordion", { "data-storybook-args": true }),
117
+ },
118
+ {
119
+ name: 'ComplexData',
120
+ description: 'Accordion with complex data including all possible attributes',
121
+ args: {
122
+ mode: 'accordion',
123
+ data: JSON.stringify([
124
+ {
125
+ id: '1',
126
+ title: 'Complete section',
127
+ subtitle: 'With all attributes',
128
+ content: 'Main content',
129
+ disabled: false,
130
+ },
131
+ {
132
+ id: '2',
133
+ title: 'Disabled section',
134
+ subtitle: 'Not accessible',
135
+ content: 'Inaccessible content',
136
+ disabled: true,
137
+ },
138
+ ]),
139
+ openIndexes: [0],
140
+ },
141
+ template: h("nv-accordion", { "data-storybook-args": true }),
142
+ },
143
+ ],
144
+ };
145
+ export default NvAccordionDocs;
146
+ //# sourceMappingURL=nv-accordion.docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nv-accordion.docs.js","sourceRoot":"","sources":["../../../src/components/nv-accordion/nv-accordion.docs.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvAccordionDocs: NovaDocs<Components.NvAccordion> = {\n component: 'nv-accordion',\n subcomponents: ['nv-accordion-item', 'nv-icon', 'nv-button', 'nv-badge'],\n badge: 'beta',\n stories: [\n {\n name: 'Default',\n description: 'Accordion with simple items',\n args: {\n mode: 'accordion',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Title 1',\n content: 'Content of title 1',\n },\n {\n id: '2',\n title: 'Title 2',\n content: 'Content of title 2',\n },\n ]),\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'MultiMode',\n description: 'Accordion allowing multiple items to be open',\n args: {\n mode: 'multi',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Title 1',\n content: 'Content of title 1',\n },\n {\n id: '2',\n title: 'Title 2',\n content: 'Content of title 2',\n },\n ]),\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'CustomHeader',\n description: 'Real-world example with TraXes Connection Points',\n template: (\n <nv-accordion mode=\"accordion\" openIndexes={[0, 2]}>\n <nv-accordion-item>\n <div slot=\"header\">\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span class=\"nv-accordion-item__title\">EC-308</span>\n <span class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"success\" label=\"Running\">\n <nv-icon slot=\"leading-icon\" name=\"check\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\" class=\"flex items-center justify-between\">\n <div>\n <p>Single accordion or accordion group</p>\n <p>\n Use the accordion as a single instance, or in a group of\n accordions stacked vertically.\n </p>\n <p>\n The accordion title is wrapped in a heading tag by default.\n Alter it to fit the information architecture of the page.\n </p>\n </div>\n </div>\n </nv-accordion-item>\n <nv-accordion-item>\n <div slot=\"header\">\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span class=\"nv-accordion-item__title\">EC-309</span>\n <span class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"success\" label=\"Running\">\n <nv-icon slot=\"leading-icon\" name=\"check\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\">\n <p>Content for EC-309 connection point</p>\n </div>\n </nv-accordion-item>\n <nv-accordion-item>\n <div slot=\"header\">\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex flex-col border-r border-[#E3E3E3] pr-4 mr-4\">\n <span class=\"nv-accordion-item__title\">EC-310</span>\n <span class=\"nv-accordion-item__subtitle\">\n Connection point\n </span>\n </div>\n <nv-badge color=\"error\" label=\"Stopped\">\n <nv-icon slot=\"leading-icon\" name=\"x\" size=\"sm\" />\n </nv-badge>\n </div>\n </div>\n <div slot=\"content\">\n <p>Content for EC-310 connection point (stopped)</p>\n </div>\n </nv-accordion-item>\n </nv-accordion>\n ),\n },\n {\n name: 'DisabledItem',\n description: 'Accordion with a disabled item',\n template: (\n <nv-accordion mode=\"accordion\">\n <nv-accordion-item itemtitle=\"Active item\" open>\n <div slot=\"content\">This item is accessible</div>\n </nv-accordion-item>\n <nv-accordion-item itemtitle=\"Disabled item\" disabled>\n <div slot=\"content\">\n This item is not accessible because it is disabled\n </div>\n </nv-accordion-item>\n </nv-accordion>\n ),\n },\n {\n name: 'OpenIndexesDemo',\n description:\n 'Demonstration of openIndexes with multiple items and first item pre-opened',\n args: {\n mode: 'accordion',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Item 1 - Pre-opened',\n content:\n 'This is the first item that is opened by default using openIndexes.',\n },\n {\n id: '2',\n title: 'Item 2',\n content: 'Content of the second item.',\n },\n {\n id: '3',\n title: 'Item 3',\n content: 'Content of the third item.',\n },\n {\n id: '4',\n title: 'Item 4',\n content: 'Content of the fourth item.',\n },\n {\n id: '5',\n title: 'Item 5',\n content: 'Content of the fifth item.',\n },\n {\n id: '6',\n title: 'Item 6',\n content: 'Content of the sixth item.',\n },\n {\n id: '7',\n title: 'Item 7',\n content: 'Content of the seventh item.',\n },\n {\n id: '8',\n title: 'Item 8',\n content: 'Content of the eighth item.',\n },\n {\n id: '9',\n title: 'Item 9',\n content: 'Content of the ninth item.',\n },\n {\n id: '10',\n title: 'Item 10',\n content: 'Content of the tenth item.',\n },\n ]),\n openIndexes: [0],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n {\n name: 'ComplexData',\n description:\n 'Accordion with complex data including all possible attributes',\n args: {\n mode: 'accordion',\n data: JSON.stringify([\n {\n id: '1',\n title: 'Complete section',\n subtitle: 'With all attributes',\n content: 'Main content',\n disabled: false,\n },\n {\n id: '2',\n title: 'Disabled section',\n subtitle: 'Not accessible',\n content: 'Inaccessible content',\n disabled: true,\n },\n ]),\n openIndexes: [0],\n },\n template: <nv-accordion data-storybook-args></nv-accordion>,\n },\n ],\n};\n\nexport default NvAccordionDocs;\n"]}
@@ -0,0 +1,342 @@
1
+ import { Host, h, } from "@stencil/core";
2
+ /**
3
+ * @slot default - Slot for custom content (optional, ignored if data is provided)
4
+ */
5
+ export class NvAccordion {
6
+ constructor() {
7
+ /**
8
+ * Expansion mode: 'accordion' (single open) or 'multi' (multiple open)
9
+ */
10
+ this.mode = 'accordion';
11
+ //#endregion PROPERTIES
12
+ /****************************************************************************/
13
+ //#region STATE
14
+ /**
15
+ * Internal index of open items (not exposed)
16
+ */
17
+ this.internalOpenIndexes = [];
18
+ /**
19
+ * Parsed data from data prop
20
+ */
21
+ this.parsedData = [];
22
+ // Synchronization openIndexes <-> internalOpenIndexes
23
+ this.itemToggleHandlers = [];
24
+ }
25
+ //#endregion EVENTS
26
+ /****************************************************************************/
27
+ //#region METHODS
28
+ /**
29
+ * Opens an item by its index (Public API)
30
+ * @param {number} index Index of the item to open
31
+ */
32
+ async open(index) {
33
+ this.toggleItem(index, true);
34
+ }
35
+ /**
36
+ * Closes an item by its index (Public API)
37
+ * @param {number} index Index of the item to close
38
+ */
39
+ async close(index) {
40
+ this.toggleItem(index, false);
41
+ }
42
+ /**
43
+ * Toggles an item's state (internal)
44
+ * @param {number} index Item index
45
+ * @param {boolean} [forceOpen] Force open (true) or close (false)
46
+ */
47
+ toggleItem(index, forceOpen) {
48
+ let openIndexes = this.openIndexes !== undefined
49
+ ? [...this.openIndexes]
50
+ : [...(this.internalOpenIndexes || [])];
51
+ const isOpen = openIndexes.includes(index);
52
+ if (this.mode === 'accordion') {
53
+ openIndexes = forceOpen === false || isOpen ? [] : [index];
54
+ }
55
+ else {
56
+ if (forceOpen === false) {
57
+ openIndexes = openIndexes.filter(i => i !== index);
58
+ }
59
+ else if (!isOpen) {
60
+ openIndexes.push(index);
61
+ }
62
+ }
63
+ this.internalOpenIndexes = openIndexes;
64
+ this.nvChange.emit({ openIndexes });
65
+ if (this.openIndexes !== undefined) {
66
+ this.openIndexes =
67
+ this.mode === 'accordion'
68
+ ? [openIndexes[0]].filter(x => x !== undefined)
69
+ : [...openIndexes];
70
+ }
71
+ // Update child elements state - for both data and slot usage
72
+ this.updateChildrenState();
73
+ }
74
+ /**
75
+ * Updates the open state of child elements based on internalOpenIndexes
76
+ */
77
+ async updateChildrenState() {
78
+ // Force a re-render by updating the state
79
+ this.internalOpenIndexes = [...(this.internalOpenIndexes || [])];
80
+ }
81
+ /**
82
+ * Listens to itemToggle events from nv-accordion-item elements
83
+ * @param {CustomEvent<boolean>} event Event emitted by nv-accordion-item
84
+ */
85
+ onItemToggle(event) {
86
+ // Ignore if using data (handled by itemToggleHandlers)
87
+ if (this.parsedData && this.parsedData.length > 0)
88
+ return;
89
+ // Find the index of the item that emitted the event
90
+ const items = Array.from(this.el.querySelectorAll('nv-accordion-item'));
91
+ const targetItem = event.target;
92
+ const index = items.indexOf(targetItem);
93
+ if (index !== -1) {
94
+ // If the event comes from an item that is opening, handle accordion mode
95
+ if (event.detail === true) {
96
+ if (this.mode === 'accordion') {
97
+ // Close all other items
98
+ items.forEach((item, i) => {
99
+ if (i !== index && item.open) {
100
+ item.open = false;
101
+ }
102
+ });
103
+ this.internalOpenIndexes = [index];
104
+ }
105
+ else {
106
+ // Add index to internalOpenIndexes if not already present
107
+ if (!this.internalOpenIndexes.includes(index)) {
108
+ this.internalOpenIndexes = [...this.internalOpenIndexes, index];
109
+ }
110
+ }
111
+ }
112
+ else {
113
+ // If the item is closing, remove it from internalOpenIndexes
114
+ this.internalOpenIndexes = this.internalOpenIndexes.filter(i => i !== index);
115
+ }
116
+ // Emit nvChange event
117
+ this.nvChange.emit({ openIndexes: this.internalOpenIndexes });
118
+ if (this.openIndexes !== undefined) {
119
+ this.openIndexes =
120
+ this.mode === 'accordion'
121
+ ? [this.internalOpenIndexes[0]].filter(x => x !== undefined)
122
+ : [...this.internalOpenIndexes];
123
+ }
124
+ }
125
+ }
126
+ //#endregion METHODS
127
+ /****************************************************************************/
128
+ //#region WATCHERS
129
+ dataChanged() {
130
+ this.parseData();
131
+ }
132
+ parseData() {
133
+ if (typeof this.data === 'string') {
134
+ try {
135
+ this.parsedData = JSON.parse(this.data);
136
+ }
137
+ catch (e) {
138
+ console.error('nv-accordion: Failed to parse data prop.', e);
139
+ this.parsedData = [];
140
+ }
141
+ }
142
+ else {
143
+ this.parsedData = this.data || [];
144
+ }
145
+ if (this.parsedData) {
146
+ this.itemToggleHandlers = this.parsedData.map((_, i) => () => this.toggleItem(i));
147
+ }
148
+ }
149
+ componentWillLoad() {
150
+ this.parseData();
151
+ if (this.openIndexes !== undefined) {
152
+ this.internalOpenIndexes = [...this.openIndexes];
153
+ }
154
+ }
155
+ componentDidLoad() {
156
+ // If using direct child elements, initialize their state
157
+ if (!this.parsedData || this.parsedData.length === 0) {
158
+ this.updateChildrenState();
159
+ }
160
+ }
161
+ componentWillUpdate() {
162
+ if (this.openIndexes !== undefined) {
163
+ this.internalOpenIndexes = [...this.openIndexes];
164
+ }
165
+ }
166
+ //#endregion WATCHERS
167
+ /****************************************************************************/
168
+ //#region LIFECYCLE
169
+ //#endregion LIFECYCLE
170
+ /****************************************************************************/
171
+ //#region RENDER
172
+ render() {
173
+ return (h(Host, { key: '5dcc9ea52a404dff7c4bb176b8a9781019e64bd3', role: "list", class: "nv-accordion" }, this.parsedData && this.parsedData.length > 0 ? (this.parsedData.map((item, i) => {
174
+ var _a;
175
+ return (h("nv-accordion-item", { key: (_a = item.id) !== null && _a !== void 0 ? _a : i, itemtitle: item.title, disabled: item.disabled, open: (this.internalOpenIndexes || []).includes(i), onItemToggle: this.itemToggleHandlers[i] }, item.subtitle ? (h("div", { slot: "header" }, h("div", { class: "nv-accordion-item__header-content" }, h("span", { class: "nv-accordion-item__title" }, item.title), h("span", { class: "nv-accordion-item__subtitle" }, item.subtitle)))) : null, h("div", { slot: "content" }, item.content), item.footer && h("div", { slot: "footer" }, item.footer)));
176
+ })) : (h("slot", null))));
177
+ }
178
+ static get is() { return "nv-accordion"; }
179
+ static get originalStyleUrls() {
180
+ return {
181
+ "$": ["styles/nv-accordion.scss"]
182
+ };
183
+ }
184
+ static get styleUrls() {
185
+ return {
186
+ "$": ["styles/nv-accordion.css"]
187
+ };
188
+ }
189
+ static get properties() {
190
+ return {
191
+ "data": {
192
+ "type": "string",
193
+ "mutable": false,
194
+ "complexType": {
195
+ "original": "string",
196
+ "resolved": "string",
197
+ "references": {}
198
+ },
199
+ "required": false,
200
+ "optional": false,
201
+ "docs": {
202
+ "tags": [],
203
+ "text": "Data to display as a list of items (title, subtitle, content).\nMust be provided as a JSON string containing an array of items with:\n- title: main title (required)\n- subtitle: subtitle (optional)\n- content: main content (required)\n- footer: footer (optional)\n- disabled: disables the item (optional)\n- id: unique identifier (optional)"
204
+ },
205
+ "getter": false,
206
+ "setter": false,
207
+ "attribute": "data",
208
+ "reflect": true
209
+ },
210
+ "mode": {
211
+ "type": "string",
212
+ "mutable": false,
213
+ "complexType": {
214
+ "original": "'accordion' | 'multi'",
215
+ "resolved": "\"accordion\" | \"multi\"",
216
+ "references": {}
217
+ },
218
+ "required": false,
219
+ "optional": false,
220
+ "docs": {
221
+ "tags": [],
222
+ "text": "Expansion mode: 'accordion' (single open) or 'multi' (multiple open)"
223
+ },
224
+ "getter": false,
225
+ "setter": false,
226
+ "attribute": "mode",
227
+ "reflect": true,
228
+ "defaultValue": "'accordion'"
229
+ },
230
+ "openIndexes": {
231
+ "type": "unknown",
232
+ "mutable": true,
233
+ "complexType": {
234
+ "original": "number[]",
235
+ "resolved": "number[]",
236
+ "references": {}
237
+ },
238
+ "required": false,
239
+ "optional": true,
240
+ "docs": {
241
+ "tags": [],
242
+ "text": "Index of open items (external control possible)"
243
+ },
244
+ "getter": false,
245
+ "setter": false
246
+ }
247
+ };
248
+ }
249
+ static get states() {
250
+ return {
251
+ "internalOpenIndexes": {},
252
+ "parsedData": {}
253
+ };
254
+ }
255
+ static get events() {
256
+ return [{
257
+ "method": "nvChange",
258
+ "name": "nvChange",
259
+ "bubbles": true,
260
+ "cancelable": true,
261
+ "composed": true,
262
+ "docs": {
263
+ "tags": [],
264
+ "text": "Event emitted when an item's open state changes"
265
+ },
266
+ "complexType": {
267
+ "original": "{\n /** Index of open items */\n openIndexes: number[];\n }",
268
+ "resolved": "{ openIndexes: number[]; }",
269
+ "references": {}
270
+ }
271
+ }];
272
+ }
273
+ static get methods() {
274
+ return {
275
+ "open": {
276
+ "complexType": {
277
+ "signature": "(index: number) => Promise<void>",
278
+ "parameters": [{
279
+ "name": "index",
280
+ "type": "number",
281
+ "docs": "Index of the item to open"
282
+ }],
283
+ "references": {
284
+ "Promise": {
285
+ "location": "global",
286
+ "id": "global::Promise"
287
+ }
288
+ },
289
+ "return": "Promise<void>"
290
+ },
291
+ "docs": {
292
+ "text": "Opens an item by its index (Public API)",
293
+ "tags": [{
294
+ "name": "param",
295
+ "text": "index Index of the item to open"
296
+ }]
297
+ }
298
+ },
299
+ "close": {
300
+ "complexType": {
301
+ "signature": "(index: number) => Promise<void>",
302
+ "parameters": [{
303
+ "name": "index",
304
+ "type": "number",
305
+ "docs": "Index of the item to close"
306
+ }],
307
+ "references": {
308
+ "Promise": {
309
+ "location": "global",
310
+ "id": "global::Promise"
311
+ }
312
+ },
313
+ "return": "Promise<void>"
314
+ },
315
+ "docs": {
316
+ "text": "Closes an item by its index (Public API)",
317
+ "tags": [{
318
+ "name": "param",
319
+ "text": "index Index of the item to close"
320
+ }]
321
+ }
322
+ }
323
+ };
324
+ }
325
+ static get elementRef() { return "el"; }
326
+ static get watchers() {
327
+ return [{
328
+ "propName": "data",
329
+ "methodName": "dataChanged"
330
+ }];
331
+ }
332
+ static get listeners() {
333
+ return [{
334
+ "name": "itemToggle",
335
+ "method": "onItemToggle",
336
+ "target": undefined,
337
+ "capture": false,
338
+ "passive": false
339
+ }];
340
+ }
341
+ }
342
+ //# sourceMappingURL=nv-accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nv-accordion.js","sourceRoot":"","sources":["../../../src/components/nv-accordion/nv-accordion.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Method,\n Listen,\n Element,\n Watch,\n} from '@stencil/core';\n/**\n * Interface defining the structure of an accordion item\n */\nexport interface AccordionItem {\n /** Unique identifier of the item */\n id: string;\n /** Item title */\n title: string;\n /** Optional subtitle */\n subtitle?: string;\n /** Main content */\n content: string;\n /** Optional footer */\n footer?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\n/**\n * Interface for nv-accordion-item component props\n */\nexport interface AccordionItemProps {\n /** Item title (displayed if header slot is absent) */\n itemtitle?: string;\n /** Item subtitle (displayed if header slot is absent) */\n subtitle?: string;\n /** Open or closed */\n open?: boolean;\n /** Disables the item */\n disabled?: boolean;\n /** Parent expansion mode (accordion or multi) */\n mode?: 'accordion' | 'multi';\n}\n\n/**\n * @slot default - Slot for custom content (optional, ignored if data is provided)\n */\n@Component({\n tag: 'nv-accordion',\n styleUrl: 'styles/nv-accordion.scss',\n shadow: false,\n})\nexport class NvAccordion {\n /****************************************************************************/\n //#region PROPERTIES\n /**\n * Data to display as a list of items (title, subtitle, content).\n * Must be provided as a JSON string containing an array of items with:\n * - title: main title (required)\n * - subtitle: subtitle (optional)\n * - content: main content (required)\n * - footer: footer (optional)\n * - disabled: disables the item (optional)\n * - id: unique identifier (optional)\n */\n @Prop({ reflect: true })\n readonly data: string;\n\n /**\n * Expansion mode: 'accordion' (single open) or 'multi' (multiple open)\n */\n @Prop({ reflect: true })\n readonly mode: 'accordion' | 'multi' = 'accordion';\n\n /**\n * Index of open items (external control possible)\n */\n @Prop({ reflect: true, mutable: true })\n openIndexes?: number[];\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region STATE\n /**\n * Internal index of open items (not exposed)\n */\n @State()\n internalOpenIndexes: number[] = [];\n\n /**\n * Parsed data from data prop\n */\n @State()\n private parsedData: AccordionItem[] = [];\n\n /**\n * Reference to host element to access children\n */\n @Element() el!: HTMLNvAccordionElement;\n //#endregion STATE\n /****************************************************************************/\n //#region EVENTS\n /**\n * Event emitted when an item's open state changes\n */\n @Event()\n nvChange: EventEmitter<{\n /** Index of open items */\n openIndexes: number[];\n }>;\n //#endregion EVENTS\n /****************************************************************************/\n //#region METHODS\n /**\n * Opens an item by its index (Public API)\n * @param {number} index Index of the item to open\n */\n @Method()\n async open(index: number) {\n this.toggleItem(index, true);\n }\n /**\n * Closes an item by its index (Public API)\n * @param {number} index Index of the item to close\n */\n @Method()\n async close(index: number) {\n this.toggleItem(index, false);\n }\n /**\n * Toggles an item's state (internal)\n * @param {number} index Item index\n * @param {boolean} [forceOpen] Force open (true) or close (false)\n */\n private toggleItem(index: number, forceOpen?: boolean) {\n let openIndexes =\n this.openIndexes !== undefined\n ? [...this.openIndexes]\n : [...(this.internalOpenIndexes || [])];\n const isOpen = openIndexes.includes(index);\n if (this.mode === 'accordion') {\n openIndexes = forceOpen === false || isOpen ? [] : [index];\n } else {\n if (forceOpen === false) {\n openIndexes = openIndexes.filter(i => i !== index);\n } else if (!isOpen) {\n openIndexes.push(index);\n }\n }\n this.internalOpenIndexes = openIndexes;\n this.nvChange.emit({ openIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [openIndexes[0]].filter(x => x !== undefined)\n : [...openIndexes];\n }\n\n // Update child elements state - for both data and slot usage\n this.updateChildrenState();\n }\n\n /**\n * Updates the open state of child elements based on internalOpenIndexes\n */\n private async updateChildrenState() {\n // Force a re-render by updating the state\n this.internalOpenIndexes = [...(this.internalOpenIndexes || [])];\n }\n\n /**\n * Listens to itemToggle events from nv-accordion-item elements\n * @param {CustomEvent<boolean>} event Event emitted by nv-accordion-item\n */\n @Listen('itemToggle')\n onItemToggle(event: CustomEvent<boolean>) {\n // Ignore if using data (handled by itemToggleHandlers)\n if (this.parsedData && this.parsedData.length > 0) return;\n\n // Find the index of the item that emitted the event\n const items = Array.from(\n this.el.querySelectorAll('nv-accordion-item'),\n ) as HTMLNvAccordionItemElement[];\n const targetItem = event.target as HTMLNvAccordionItemElement;\n const index = items.indexOf(targetItem);\n\n if (index !== -1) {\n // If the event comes from an item that is opening, handle accordion mode\n if (event.detail === true) {\n if (this.mode === 'accordion') {\n // Close all other items\n items.forEach((item, i) => {\n if (i !== index && item.open) {\n item.open = false;\n }\n });\n this.internalOpenIndexes = [index];\n } else {\n // Add index to internalOpenIndexes if not already present\n if (!this.internalOpenIndexes.includes(index)) {\n this.internalOpenIndexes = [...this.internalOpenIndexes, index];\n }\n }\n } else {\n // If the item is closing, remove it from internalOpenIndexes\n this.internalOpenIndexes = this.internalOpenIndexes.filter(\n i => i !== index,\n );\n }\n\n // Emit nvChange event\n this.nvChange.emit({ openIndexes: this.internalOpenIndexes });\n if (this.openIndexes !== undefined) {\n this.openIndexes =\n this.mode === 'accordion'\n ? [this.internalOpenIndexes[0]].filter(x => x !== undefined)\n : [...this.internalOpenIndexes];\n }\n }\n }\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n @Watch('data')\n dataChanged() {\n this.parseData();\n }\n\n // Synchronization openIndexes <-> internalOpenIndexes\n private itemToggleHandlers: Array<() => void> = [];\n\n private parseData() {\n if (typeof this.data === 'string') {\n try {\n this.parsedData = JSON.parse(this.data);\n } catch (e) {\n console.error('nv-accordion: Failed to parse data prop.', e);\n this.parsedData = [];\n }\n } else {\n this.parsedData = this.data || [];\n }\n\n if (this.parsedData) {\n this.itemToggleHandlers = this.parsedData.map(\n (_, i) => () => this.toggleItem(i),\n );\n }\n }\n\n componentWillLoad() {\n this.parseData();\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n\n componentDidLoad() {\n // If using direct child elements, initialize their state\n if (!this.parsedData || this.parsedData.length === 0) {\n this.updateChildrenState();\n }\n }\n\n componentWillUpdate() {\n if (this.openIndexes !== undefined) {\n this.internalOpenIndexes = [...this.openIndexes];\n }\n }\n //#endregion WATCHERS\n /****************************************************************************/\n //#region LIFECYCLE\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n render() {\n return (\n <Host role=\"list\" class=\"nv-accordion\">\n {this.parsedData && this.parsedData.length > 0 ? (\n this.parsedData.map((item, i) => (\n <nv-accordion-item\n key={item.id ?? i}\n itemtitle={item.title}\n disabled={item.disabled}\n open={(this.internalOpenIndexes || []).includes(i)}\n onItemToggle={this.itemToggleHandlers[i]}\n >\n {item.subtitle ? (\n <div slot=\"header\">\n <div class=\"nv-accordion-item__header-content\">\n <span class=\"nv-accordion-item__title\">{item.title}</span>\n <span class=\"nv-accordion-item__subtitle\">\n {item.subtitle}\n </span>\n </div>\n </div>\n ) : null}\n <div slot=\"content\">{item.content}</div>\n {item.footer && <div slot=\"footer\">{item.footer}</div>}\n </nv-accordion-item>\n ))\n ) : (\n <slot></slot>\n )}\n </Host>\n );\n }\n // #endregion RENDER\n}\n"]}
@@ -0,0 +1,15 @@
1
+ nv-accordion {
2
+ display: block;
3
+ border: var(--spacing-px) solid var(--color-content-low-border);
4
+ border-radius: var(--radius-rounded-lg);
5
+ }
6
+ nv-accordion .nv-accordion__footer {
7
+ padding: var(--spacing-3);
8
+ background: var(--color-level-05-background);
9
+ border-radius: 0 0 var(--radius-rounded-lg) var(--radius-rounded-lg);
10
+ margin-top: calc(var(--spacing-px) * -1);
11
+ border-top: var(--spacing-px) solid var(--color-content-low-border);
12
+ }
13
+ nv-accordion .nv-accordion__footer:empty {
14
+ display: none;
15
+ }
@@ -0,0 +1,6 @@
1
+ const NvAccordionItemDocs = {
2
+ component: 'nv-accordion-item',
3
+ skip: true,
4
+ };
5
+ export default NvAccordionItemDocs;
6
+ //# sourceMappingURL=nv-accordion-item.docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nv-accordion-item.docs.js","sourceRoot":"","sources":["../../../src/components/nv-accordion-item/nv-accordion-item.docs.tsx"],"names":[],"mappings":"AAGA,MAAM,mBAAmB,GAAyC;IAChE,SAAS,EAAE,mBAAmB;IAC9B,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import type { NovaDocs } from '../../nova-docs';\nimport { Components } from '../../components';\n\nconst NvAccordionItemDocs: NovaDocs<Components.NvAccordionItem> = {\n component: 'nv-accordion-item',\n skip: true,\n};\n\nexport default NvAccordionItemDocs;\n"]}