@nova-design-system/nova-webcomponents 3.21.1-beta.0 → 3.22.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 (228) hide show
  1. package/dist/cjs/index-93d3b2f8.js +0 -40
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/native.cjs.js +1 -1
  4. package/dist/cjs/nv-split.cjs.entry.js +1 -1
  5. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  6. package/dist/cjs/nv-table.cjs.entry.js +1 -1
  7. package/dist/cjs/nv-tableheader.cjs.entry.js +1 -1
  8. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  9. package/dist/cjs/nv-togglebutton.cjs.entry.js +1 -1
  10. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +1 -1
  11. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  12. package/dist/collection/collection-manifest.json +0 -10
  13. package/dist/collection/components/nv-split/nv-split.js +1 -1
  14. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  15. package/dist/collection/components/nv-table/nv-table.js +1 -1
  16. package/dist/collection/components/nv-tableheader/nv-tableheader.js +1 -1
  17. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  18. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  19. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -1
  20. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  21. package/dist/components/nv-breadcrumb.js +1 -1
  22. package/dist/components/nv-split.js +1 -1
  23. package/dist/components/nv-stack.js +1 -1
  24. package/dist/components/nv-table.js +1 -1
  25. package/dist/components/nv-tableheader.js +1 -1
  26. package/dist/components/nv-toggle.js +2 -2
  27. package/dist/components/nv-togglebutton.js +1 -1
  28. package/dist/components/nv-togglebuttongroup.js +1 -1
  29. package/dist/components/nv-tooltip.js +1 -1
  30. package/dist/components/{p-439c38c3.js → p-f68c8fff.js} +2 -2
  31. package/dist/components/{p-439c38c3.js.map → p-f68c8fff.js.map} +1 -1
  32. package/dist/esm/index-dc2723f3.js +0 -40
  33. package/dist/esm/loader.js +1 -1
  34. package/dist/esm/native.js +1 -1
  35. package/dist/esm/nv-split.entry.js +1 -1
  36. package/dist/esm/nv-stack.entry.js +1 -1
  37. package/dist/esm/nv-table.entry.js +1 -1
  38. package/dist/esm/nv-tableheader.entry.js +1 -1
  39. package/dist/esm/nv-toggle.entry.js +2 -2
  40. package/dist/esm/nv-togglebutton.entry.js +1 -1
  41. package/dist/esm/nv-togglebuttongroup.entry.js +1 -1
  42. package/dist/esm/nv-tooltip.entry.js +1 -1
  43. package/dist/native/native.css +1 -1
  44. package/dist/native/native.esm.js +1 -1
  45. package/dist/native/native.esm.js.map +1 -1
  46. package/dist/native/{p-b4128eb5.entry.js → p-023f36b6.entry.js} +2 -2
  47. package/dist/native/{p-b369a073.entry.js → p-07b12aa5.entry.js} +2 -2
  48. package/dist/native/{p-87deff5a.entry.js → p-104a9828.entry.js} +2 -2
  49. package/dist/native/{p-6fb6b9e4.entry.js → p-2895ad03.entry.js} +2 -2
  50. package/dist/native/{p-31a61359.entry.js → p-2e1b4e19.entry.js} +2 -2
  51. package/dist/native/{p-7a2f37e2.entry.js → p-2fb1974e.entry.js} +2 -2
  52. package/dist/native/{p-c4cd2860.entry.js → p-44f4e0ae.entry.js} +2 -2
  53. package/dist/native/{p-98cab7d2.entry.js → p-7ac9af42.entry.js} +2 -2
  54. package/dist/types/components.d.ts +0 -502
  55. package/dist/vscode-data.json +0 -1758
  56. package/hydrate/index.js +9 -831
  57. package/hydrate/index.mjs +9 -831
  58. package/package.json +5 -41
  59. package/dist/cjs/nv-notification-bullet.cjs.entry.js +0 -79
  60. package/dist/cjs/nv-notification-bullet.cjs.entry.js.map +0 -1
  61. package/dist/cjs/nv-sidebar.cjs.entry.js +0 -179
  62. package/dist/cjs/nv-sidebar.cjs.entry.js.map +0 -1
  63. package/dist/cjs/nv-sidebarcontent.cjs.entry.js +0 -24
  64. package/dist/cjs/nv-sidebarcontent.cjs.entry.js.map +0 -1
  65. package/dist/cjs/nv-sidebardivider.cjs.entry.js +0 -24
  66. package/dist/cjs/nv-sidebardivider.cjs.entry.js.map +0 -1
  67. package/dist/cjs/nv-sidebarfooter.cjs.entry.js +0 -24
  68. package/dist/cjs/nv-sidebarfooter.cjs.entry.js.map +0 -1
  69. package/dist/cjs/nv-sidebargroup.cjs.entry.js +0 -25
  70. package/dist/cjs/nv-sidebargroup.cjs.entry.js.map +0 -1
  71. package/dist/cjs/nv-sidebarheader.cjs.entry.js +0 -24
  72. package/dist/cjs/nv-sidebarheader.cjs.entry.js.map +0 -1
  73. package/dist/cjs/nv-sidebarlogo.cjs.entry.js +0 -34
  74. package/dist/cjs/nv-sidebarlogo.cjs.entry.js.map +0 -1
  75. package/dist/cjs/nv-sidebarnavitem.cjs.entry.js +0 -299
  76. package/dist/cjs/nv-sidebarnavitem.cjs.entry.js.map +0 -1
  77. package/dist/cjs/nv-sidebarnavsubitem.cjs.entry.js +0 -37
  78. package/dist/cjs/nv-sidebarnavsubitem.cjs.entry.js.map +0 -1
  79. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js +0 -68
  80. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js.map +0 -1
  81. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js +0 -189
  82. package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js.map +0 -1
  83. package/dist/collection/components/nv-notification-bullet/styles/nv-notification-bullet.css +0 -80
  84. package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js +0 -37
  85. package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js.map +0 -1
  86. package/dist/collection/components/nv-sidebar/nv-sidebar.js +0 -309
  87. package/dist/collection/components/nv-sidebar/nv-sidebar.js.map +0 -1
  88. package/dist/collection/components/nv-sidebar/styles/nv-sidebar.css +0 -73
  89. package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.css +0 -7
  90. package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.docs.js +0 -6
  91. package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.docs.js.map +0 -1
  92. package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js +0 -24
  93. package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js.map +0 -1
  94. package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.css +0 -6
  95. package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.docs.js +0 -6
  96. package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.docs.js.map +0 -1
  97. package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js +0 -23
  98. package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js.map +0 -1
  99. package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.css +0 -4
  100. package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.docs.js +0 -6
  101. package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.docs.js.map +0 -1
  102. package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js +0 -25
  103. package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js.map +0 -1
  104. package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.css +0 -17
  105. package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.docs.js +0 -6
  106. package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.docs.js.map +0 -1
  107. package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js +0 -48
  108. package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js.map +0 -1
  109. package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.css +0 -3
  110. package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.docs.js +0 -6
  111. package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.docs.js.map +0 -1
  112. package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js +0 -25
  113. package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js.map +0 -1
  114. package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.docs.js +0 -6
  115. package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.docs.js.map +0 -1
  116. package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js +0 -97
  117. package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js.map +0 -1
  118. package/dist/collection/components/nv-sidebarlogo/styles/nv-sidebarlogo.css +0 -47
  119. package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.docs.js +0 -6
  120. package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.docs.js.map +0 -1
  121. package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js +0 -422
  122. package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js.map +0 -1
  123. package/dist/collection/components/nv-sidebarnavitem/styles/nv-sidebarnavitem.css +0 -114
  124. package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.docs.js +0 -6
  125. package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.docs.js.map +0 -1
  126. package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js +0 -64
  127. package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js.map +0 -1
  128. package/dist/collection/components/nv-sidebarnavsubitem/styles/nv-sidebarnavsubitem.css +0 -73
  129. package/dist/components/nv-notification-bullet.d.ts +0 -11
  130. package/dist/components/nv-notification-bullet.js +0 -8
  131. package/dist/components/nv-notification-bullet.js.map +0 -1
  132. package/dist/components/nv-sidebar.d.ts +0 -11
  133. package/dist/components/nv-sidebar.js +0 -208
  134. package/dist/components/nv-sidebar.js.map +0 -1
  135. package/dist/components/nv-sidebarcontent.d.ts +0 -11
  136. package/dist/components/nv-sidebarcontent.js +0 -38
  137. package/dist/components/nv-sidebarcontent.js.map +0 -1
  138. package/dist/components/nv-sidebardivider.d.ts +0 -11
  139. package/dist/components/nv-sidebardivider.js +0 -38
  140. package/dist/components/nv-sidebardivider.js.map +0 -1
  141. package/dist/components/nv-sidebarfooter.d.ts +0 -11
  142. package/dist/components/nv-sidebarfooter.js +0 -38
  143. package/dist/components/nv-sidebarfooter.js.map +0 -1
  144. package/dist/components/nv-sidebargroup.d.ts +0 -11
  145. package/dist/components/nv-sidebargroup.js +0 -41
  146. package/dist/components/nv-sidebargroup.js.map +0 -1
  147. package/dist/components/nv-sidebarheader.d.ts +0 -11
  148. package/dist/components/nv-sidebarheader.js +0 -38
  149. package/dist/components/nv-sidebarheader.js.map +0 -1
  150. package/dist/components/nv-sidebarlogo.d.ts +0 -11
  151. package/dist/components/nv-sidebarlogo.js +0 -52
  152. package/dist/components/nv-sidebarlogo.js.map +0 -1
  153. package/dist/components/nv-sidebarnavitem.d.ts +0 -11
  154. package/dist/components/nv-sidebarnavitem.js +0 -335
  155. package/dist/components/nv-sidebarnavitem.js.map +0 -1
  156. package/dist/components/nv-sidebarnavsubitem.d.ts +0 -11
  157. package/dist/components/nv-sidebarnavsubitem.js +0 -53
  158. package/dist/components/nv-sidebarnavsubitem.js.map +0 -1
  159. package/dist/components/p-82c9b7cc.js +0 -96
  160. package/dist/components/p-82c9b7cc.js.map +0 -1
  161. package/dist/esm/nv-notification-bullet.entry.js +0 -75
  162. package/dist/esm/nv-notification-bullet.entry.js.map +0 -1
  163. package/dist/esm/nv-sidebar.entry.js +0 -175
  164. package/dist/esm/nv-sidebar.entry.js.map +0 -1
  165. package/dist/esm/nv-sidebarcontent.entry.js +0 -20
  166. package/dist/esm/nv-sidebarcontent.entry.js.map +0 -1
  167. package/dist/esm/nv-sidebardivider.entry.js +0 -20
  168. package/dist/esm/nv-sidebardivider.entry.js.map +0 -1
  169. package/dist/esm/nv-sidebarfooter.entry.js +0 -20
  170. package/dist/esm/nv-sidebarfooter.entry.js.map +0 -1
  171. package/dist/esm/nv-sidebargroup.entry.js +0 -21
  172. package/dist/esm/nv-sidebargroup.entry.js.map +0 -1
  173. package/dist/esm/nv-sidebarheader.entry.js +0 -20
  174. package/dist/esm/nv-sidebarheader.entry.js.map +0 -1
  175. package/dist/esm/nv-sidebarlogo.entry.js +0 -30
  176. package/dist/esm/nv-sidebarlogo.entry.js.map +0 -1
  177. package/dist/esm/nv-sidebarnavitem.entry.js +0 -295
  178. package/dist/esm/nv-sidebarnavitem.entry.js.map +0 -1
  179. package/dist/esm/nv-sidebarnavsubitem.entry.js +0 -33
  180. package/dist/esm/nv-sidebarnavsubitem.entry.js.map +0 -1
  181. package/dist/native/p-02debfd0.entry.js +0 -2
  182. package/dist/native/p-02debfd0.entry.js.map +0 -1
  183. package/dist/native/p-2ba7b6f2.entry.js +0 -2
  184. package/dist/native/p-2ba7b6f2.entry.js.map +0 -1
  185. package/dist/native/p-35263b61.entry.js +0 -2
  186. package/dist/native/p-35263b61.entry.js.map +0 -1
  187. package/dist/native/p-6005ff69.entry.js +0 -2
  188. package/dist/native/p-6005ff69.entry.js.map +0 -1
  189. package/dist/native/p-63348887.entry.js +0 -2
  190. package/dist/native/p-63348887.entry.js.map +0 -1
  191. package/dist/native/p-8bee34e6.entry.js +0 -2
  192. package/dist/native/p-8bee34e6.entry.js.map +0 -1
  193. package/dist/native/p-b5e752f5.entry.js +0 -2
  194. package/dist/native/p-b5e752f5.entry.js.map +0 -1
  195. package/dist/native/p-e7fdcb83.entry.js +0 -2
  196. package/dist/native/p-e7fdcb83.entry.js.map +0 -1
  197. package/dist/native/p-f22ac722.entry.js +0 -2
  198. package/dist/native/p-f22ac722.entry.js.map +0 -1
  199. package/dist/native/p-f8a099a5.entry.js +0 -2
  200. package/dist/native/p-f8a099a5.entry.js.map +0 -1
  201. package/dist/types/components/nv-notification-bullet/nv-notification-bullet.d.ts +0 -44
  202. package/dist/types/components/nv-notification-bullet/nv-notification-bullet.docs.d.ts +0 -4
  203. package/dist/types/components/nv-sidebar/nv-sidebar.d.ts +0 -64
  204. package/dist/types/components/nv-sidebar/nv-sidebar.docs.d.ts +0 -4
  205. package/dist/types/components/nv-sidebarcontent/nv-sidebarcontent.d.ts +0 -8
  206. package/dist/types/components/nv-sidebarcontent/nv-sidebarcontent.docs.d.ts +0 -4
  207. package/dist/types/components/nv-sidebardivider/nv-sidebardivider.d.ts +0 -7
  208. package/dist/types/components/nv-sidebardivider/nv-sidebardivider.docs.d.ts +0 -4
  209. package/dist/types/components/nv-sidebarfooter/nv-sidebarfooter.d.ts +0 -9
  210. package/dist/types/components/nv-sidebarfooter/nv-sidebarfooter.docs.d.ts +0 -4
  211. package/dist/types/components/nv-sidebargroup/nv-sidebargroup.d.ts +0 -13
  212. package/dist/types/components/nv-sidebargroup/nv-sidebargroup.docs.d.ts +0 -4
  213. package/dist/types/components/nv-sidebarheader/nv-sidebarheader.d.ts +0 -9
  214. package/dist/types/components/nv-sidebarheader/nv-sidebarheader.docs.d.ts +0 -4
  215. package/dist/types/components/nv-sidebarlogo/nv-sidebarlogo.d.ts +0 -26
  216. package/dist/types/components/nv-sidebarlogo/nv-sidebarlogo.docs.d.ts +0 -4
  217. package/dist/types/components/nv-sidebarnavitem/nv-sidebarnavitem.d.ts +0 -62
  218. package/dist/types/components/nv-sidebarnavitem/nv-sidebarnavitem.docs.d.ts +0 -4
  219. package/dist/types/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.d.ts +0 -15
  220. package/dist/types/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.docs.d.ts +0 -4
  221. /package/dist/native/{p-b4128eb5.entry.js.map → p-023f36b6.entry.js.map} +0 -0
  222. /package/dist/native/{p-b369a073.entry.js.map → p-07b12aa5.entry.js.map} +0 -0
  223. /package/dist/native/{p-87deff5a.entry.js.map → p-104a9828.entry.js.map} +0 -0
  224. /package/dist/native/{p-6fb6b9e4.entry.js.map → p-2895ad03.entry.js.map} +0 -0
  225. /package/dist/native/{p-31a61359.entry.js.map → p-2e1b4e19.entry.js.map} +0 -0
  226. /package/dist/native/{p-7a2f37e2.entry.js.map → p-2fb1974e.entry.js.map} +0 -0
  227. /package/dist/native/{p-c4cd2860.entry.js.map → p-44f4e0ae.entry.js.map} +0 -0
  228. /package/dist/native/{p-98cab7d2.entry.js.map → p-7ac9af42.entry.js.map} +0 -0
package/hydrate/index.js CHANGED
@@ -24564,95 +24564,6 @@ class NvNotification {
24564
24564
  }; }
24565
24565
  }
24566
24566
 
24567
- const nvNotificationBulletCss = "nv-notification-bullet{display:inline-flex;align-items:center;position:relative;}nv-notification-bullet .nv-notification-bullet{display:inline-flex;align-items:center;justify-content:center;min-width:var(--sidebar-primary-notification-bullet-size);max-width:var(--sidebar-primary-notification-bullet-size);min-height:var(--sidebar-primary-notification-bullet-size);max-height:var(--sidebar-primary-notification-bullet-size);padding:0 var(--spacing-1);border-radius:var(--radius-rounded-full);font-size:var(--sidebar-primary-notification-bullet-font-size);font-weight:var(--sidebar-primary-notification-bullet-font-weight);white-space:nowrap;flex-shrink:0}nv-notification-bullet.nv-notification-bullet-brand .nv-notification-bullet.nv-notification-bullet-high{background-color:var(--color-brand-500);color:var(--color-feedback-error-high-contrast-title)}nv-notification-bullet.nv-notification-bullet-brand .nv-notification-bullet.nv-notification-bullet-low{background-color:var(--color-brand-50);color:var(--color-brand-600);border:1px solid var(--color-brand-600)}nv-notification-bullet.nv-notification-bullet-neutral .nv-notification-bullet.nv-notification-bullet-high{background-color:var(--color-interaction-container-neutral-background);color:var(--color-interaction-container-neutral-text)}nv-notification-bullet.nv-notification-bullet-neutral .nv-notification-bullet.nv-notification-bullet-low{background-color:var(--color-interaction-container-neutral-background);color:var(--color-interaction-container-neutral-text)}nv-notification-bullet.nv-notification-bullet-with-cross-border::before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:calc(var(--sidebar-primary-notification-bullet-size) * 1.5);height:calc(var(--sidebar-primary-notification-bullet-size) * 1.5);border-radius:var(--radius-rounded-full);background-color:var(--nv-component-background, var(--nv-sidebarnavitem-background, var(--color-interaction-container-neutral-background)));z-index:-1;pointer-events:none}nv-sidebar[collapsed] nv-notification-bullet.nv-notification-bullet-with-cross-border::before{width:calc(var(--sidebar-primary-notification-bullet-size-reduced) * 1.5);height:calc(var(--sidebar-primary-notification-bullet-size-reduced) * 1.5)}nv-notification-bullet .nv-notification-bullet.nv-notification-bullet-with-border{}nv-notification-bullet .nv-notification-bullet.nv-notification-bullet-reduced,nv-sidebar[collapsed] nv-notification-bullet .nv-notification-bullet{min-width:var(--sidebar-primary-notification-bullet-size-reduced);max-width:var(--sidebar-primary-notification-bullet-size-reduced);min-height:var(--sidebar-primary-notification-bullet-size-reduced);max-height:var(--sidebar-primary-notification-bullet-size-reduced);padding:0;font-size:0;}nv-notification-bullet .nv-notification-bullet.nv-notification-bullet-reduced.nv-notification-bullet-with-border,nv-sidebar[collapsed] nv-notification-bullet .nv-notification-bullet.nv-notification-bullet-with-border{}";
24568
- var NvNotificationBulletStyle0 = nvNotificationBulletCss;
24569
-
24570
- /**
24571
- * Notification bullet component for displaying notification counts in the sidebar.
24572
- * Automatically adapts its size when the sidebar is collapsed.
24573
- * Inherits intention and emphasis from parent nv-sidebar if not explicitly set.
24574
- */
24575
- class NvNotificationBullet {
24576
- constructor(hostRef) {
24577
- registerInstance(this, hostRef);
24578
- /**
24579
- * Determines the size of the notification bullet.
24580
- * - default: Normal size with text visible
24581
- * - reduced: Smaller size, text hidden (just a dot)
24582
- */
24583
- this.size = 'default';
24584
- /**
24585
- * Allows to add a border to add contrast on background.
24586
- */
24587
- this.contrastingBorder = false;
24588
- }
24589
- //#endregion PROPERTIES
24590
- /****************************************************************************/
24591
- //#region METHODS
24592
- getIntention() {
24593
- if (this.intention) {
24594
- return this.intention;
24595
- }
24596
- // Inherit from parent nv-sidebar
24597
- const sidebar = this.el.closest('nv-sidebar');
24598
- if (sidebar) {
24599
- const sidebarIntention = sidebar.getAttribute('notification-intention');
24600
- if (sidebarIntention === 'neutral' || sidebarIntention === 'brand') {
24601
- return sidebarIntention;
24602
- }
24603
- }
24604
- return 'brand'; // Default fallback
24605
- }
24606
- getEmphasis() {
24607
- if (this.emphasis) {
24608
- return this.emphasis;
24609
- }
24610
- // Inherit from parent nv-sidebar
24611
- const sidebar = this.el.closest('nv-sidebar');
24612
- if (sidebar) {
24613
- const sidebarEmphasis = sidebar.getAttribute('notification-emphasis');
24614
- if (sidebarEmphasis === 'high' || sidebarEmphasis === 'low') {
24615
- return sidebarEmphasis;
24616
- }
24617
- }
24618
- return 'high'; // Default fallback
24619
- }
24620
- //#region RENDER
24621
- render() {
24622
- var _a;
24623
- const displayCount = (_a = this.count) !== null && _a !== void 0 ? _a : 0;
24624
- const displayText = displayCount > 99 ? '99+' : String(displayCount);
24625
- if (displayCount <= 0) {
24626
- return null;
24627
- }
24628
- const sizeClass = this.size === 'reduced' ? 'nv-notification-bullet-reduced' : '';
24629
- const intention = this.getIntention();
24630
- const emphasis = this.getEmphasis();
24631
- const intentionClass = `nv-notification-bullet-${intention}`;
24632
- const emphasisClass = `nv-notification-bullet-${emphasis}`;
24633
- const borderClass = this.contrastingBorder
24634
- ? 'nv-notification-bullet-with-border'
24635
- : '';
24636
- return (hAsync(Host, { class: `${intentionClass} ${borderClass ? 'nv-notification-bullet-with-cross-border' : ''}` }, hAsync("span", { class: `nv-notification-bullet ${emphasisClass} ${sizeClass} ${borderClass}`, "aria-label": `${displayCount} notifications` }, displayText)));
24637
- }
24638
- get el() { return getElement(this); }
24639
- static get style() { return NvNotificationBulletStyle0; }
24640
- static get cmpMeta() { return {
24641
- "$flags$": 0,
24642
- "$tagName$": "nv-notification-bullet",
24643
- "$members$": {
24644
- "count": [514],
24645
- "intention": [513],
24646
- "emphasis": [513],
24647
- "size": [513],
24648
- "contrastingBorder": [516, "contrasting-border"]
24649
- },
24650
- "$listeners$": undefined,
24651
- "$lazyBundleId$": "-",
24652
- "$attrsToReflect$": [["count", "count"], ["intention", "intention"], ["emphasis", "emphasis"], ["size", "size"], ["contrastingBorder", "contrasting-border"]]
24653
- }; }
24654
- }
24655
-
24656
24567
  const nvNotificationcontainerCss = "nv-notificationcontainer{position:fixed;display:flex;flex-direction:column;padding:var(--spacing-2);padding-top:0;z-index:9999;pointer-events:none;width:100%;max-width:512px}nv-notificationcontainer.position-top-right{top:0;right:0}nv-notificationcontainer.position-top-right nv-notification{margin-top:var(--spacing-2)}nv-notificationcontainer.position-top-left{top:0;left:0}nv-notificationcontainer.position-top-left nv-notification{margin-bottom:var(--spacing-2)}nv-notificationcontainer.position-top-center{top:0;left:50%;transform:translateX(-50%)}nv-notificationcontainer.position-top-center nv-notification{margin-bottom:var(--spacing-2)}nv-notificationcontainer.position-bottom-right{bottom:0;right:0;flex-direction:column-reverse}nv-notificationcontainer.position-bottom-right nv-notification{margin-top:var(--spacing-2)}nv-notificationcontainer.position-bottom-left{bottom:0;left:0;flex-direction:column-reverse}nv-notificationcontainer.position-bottom-left nv-notification{margin-top:var(--spacing-2)}nv-notificationcontainer.position-bottom-center{bottom:0;left:50%;transform:translateX(-50%);flex-direction:column-reverse}nv-notificationcontainer.position-bottom-center nv-notification{margin-top:var(--spacing-2)}nv-notificationcontainer>*{pointer-events:auto}";
24657
24568
  var NvNotificationcontainerStyle0 = nvNotificationcontainerCss;
24658
24569
 
@@ -27148,729 +27059,6 @@ class NvRow {
27148
27059
  }; }
27149
27060
  }
27150
27061
 
27151
- const nvSidebarCss = "nv-sidebarnavitem a,nv-sidebarnavitem a:link,nv-sidebarnavitem a:visited,nv-sidebarnavitem a:hover,nv-sidebarnavitem a:active,nv-sidebarnavsubitem a,nv-sidebarnavsubitem a:link,nv-sidebarnavsubitem a:visited,nv-sidebarnavsubitem a:hover,nv-sidebarnavsubitem a:active{color:inherit !important;text-decoration:none !important}nv-sidebar{display:flex;flex-direction:column;position:relative;height:100vh;background-color:var(--color-level-00-background);border-right:var(--sidebar-primary-separator-size) solid var(--color-content-low-border);transition:width 0.3s ease;width:var(--sidebar-width)}nv-sidebar[collapsed]{width:var(--sidebar-reduced-max-width)}nv-sidebar[collapsed] [data-hide-on-collapsed]{display:none !important}nv-sidebar[collapsed] .nv-sidebar-container{padding:var(--spacing-6) var(--spacing-5)}nv-sidebar .nv-sidebar-container{display:flex;flex-direction:column;flex:1;overflow:hidden;padding:var(--spacing-6);gap:var(--sidebar-gap-y)}nv-sidebar .nv-sidebar-toggle{position:absolute;top:var(--spacing-8);right:calc(var(--spacing-8) / -2);display:flex;align-items:center;justify-content:center;width:var(--spacing-8);height:var(--spacing-8);padding:var(--sidebar-collapsible-button-padding);background-color:var(--color-level-00-background);border:var(--sidebar-primary-separator-size) solid var(--color-content-low-border);border-radius:var(--radius-rounded-full);cursor:pointer;transition:transform 0.2s ease;z-index:10}nv-sidebar .nv-sidebar-toggle:hover{background-color:var(--color-level-10-background)}nv-sidebar .nv-sidebar-toggle:focus,nv-sidebar .nv-sidebar-toggle:focus-within{outline:none}nv-sidebar .nv-sidebar-toggle:focus-visible,nv-sidebar .nv-sidebar-toggle:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-sidebar .nv-sidebar-toggle nv-icon{width:var(--sidebar-collapsible-button-icon-size);height:var(--sidebar-collapsible-button-icon-size);color:var(--color-interaction-container-neutral-icon)}";
27152
- var NvSidebarStyle0 = nvSidebarCss;
27153
-
27154
- /**
27155
- * Main sidebar container for navigation. Supports collapsible and persistent modes.
27156
- * @slot default - All sidebar components (logo, header, content, footer).
27157
- */
27158
- class NvSidebar {
27159
- constructor(hostRef) {
27160
- registerInstance(this, hostRef);
27161
- this.openChanged = createEvent(this, "openChanged", 7);
27162
- /****************************************************************************/
27163
- //#region PROPERTIES
27164
- /**
27165
- * The type of sidebar behavior.
27166
- * - collapsible: Can be toggled open/closed
27167
- * - persistent: Always visible
27168
- */
27169
- this.type = 'persistent';
27170
- /**
27171
- * Whether the sidebar is currently open (only applies to collapsible type).
27172
- */
27173
- // eslint-disable-next-line @stencil-community/ban-default-true
27174
- this.open = true;
27175
- /**
27176
- * Determines the type of notification bullets in the sidebar.
27177
- * - neutral: Uses neutral colors (gray)
27178
- * - brand: Uses brand colors (orange/teal depending on theme)
27179
- */
27180
- this.notificationIntention = 'brand';
27181
- /**
27182
- * Determines the emphasis of notification bullets in the sidebar.
27183
- * - high: More prominent appearance
27184
- * - low: Less prominent appearance
27185
- */
27186
- this.notificationEmphasis = 'high';
27187
- //#endregion EVENTS
27188
- /****************************************************************************/
27189
- //#region METHODS
27190
- this.handleToggle = () => {
27191
- if (this.type === 'collapsible') {
27192
- // Changing open will trigger @Watch which emits the event
27193
- this.open = !this.open;
27194
- }
27195
- };
27196
- /**
27197
- * Sets the active state of navigation items based on activePath
27198
- */
27199
- this.setActiveNavItems = () => {
27200
- if (!this.activePath)
27201
- return;
27202
- // First, check all subitems to find if any matches exactly
27203
- const activeSubitemHrefs = new Set();
27204
- this.el.querySelectorAll('nv-sidebarnavsubitem').forEach(subItem => {
27205
- const link = subItem.querySelector('a');
27206
- const href = link === null || link === void 0 ? void 0 : link.getAttribute('href');
27207
- if (href) {
27208
- const isActive = this.activePath === href;
27209
- subItem.active = isActive;
27210
- if (isActive) {
27211
- activeSubitemHrefs.add(href);
27212
- }
27213
- }
27214
- });
27215
- // Then, set nav items active only if:
27216
- // 1. Exact match with activePath AND no subitem matches
27217
- // 2. OR the navitem has no subitems and activePath starts with its href
27218
- this.el.querySelectorAll('nv-sidebarnavitem').forEach(navItem => {
27219
- const link = navItem.querySelector(':scope > a, :scope > .nv-sidebarnavitem-trigger a, .nv-sidebarnavitem-content > a');
27220
- const href = link === null || link === void 0 ? void 0 : link.getAttribute('href');
27221
- const hasSubitems = navItem.querySelector('nv-sidebarnavsubitem') !== null;
27222
- if (href) {
27223
- if (hasSubitems) {
27224
- // Parent with subitems: only active if exact match (not when subitem is active)
27225
- navItem.active = this.activePath === href;
27226
- }
27227
- else {
27228
- // Item without subitems: active on exact match
27229
- navItem.active = this.activePath === href;
27230
- }
27231
- }
27232
- });
27233
- };
27234
- this.pendingActiveUpdate = null;
27235
- /**
27236
- * Sets up the MutationObserver to watch for changes in child elements.
27237
- * Only triggers on new nav items being added, not on attribute changes.
27238
- */
27239
- this.setupMutationObserver = () => {
27240
- this.mutationObserver = new MutationObserver(mutations => {
27241
- // Only react to new nav items being added, ignore other mutations
27242
- const hasNewNavItems = mutations.some(mutation => {
27243
- if (mutation.type !== 'childList')
27244
- return false;
27245
- return Array.from(mutation.addedNodes).some(node => {
27246
- if (node.nodeType !== Node.ELEMENT_NODE)
27247
- return false;
27248
- const el = node;
27249
- return (el.tagName.toLowerCase() === 'nv-sidebarnavitem' ||
27250
- el.tagName.toLowerCase() === 'nv-sidebarnavsubitem' ||
27251
- el.querySelector('nv-sidebarnavitem, nv-sidebarnavsubitem'));
27252
- });
27253
- });
27254
- if (hasNewNavItems) {
27255
- // Debounce to prevent multiple rapid calls
27256
- if (this.pendingActiveUpdate) {
27257
- clearTimeout(this.pendingActiveUpdate);
27258
- }
27259
- this.pendingActiveUpdate = window.setTimeout(() => {
27260
- this.setActiveNavItems();
27261
- this.pendingActiveUpdate = null;
27262
- }, 50);
27263
- }
27264
- });
27265
- this.mutationObserver.observe(this.el, {
27266
- childList: true,
27267
- subtree: true,
27268
- });
27269
- };
27270
- }
27271
- handleCollapsedSideEffects(isCollapsed) {
27272
- if (!isCollapsed) {
27273
- return;
27274
- }
27275
- this.el.querySelectorAll('nv-sidebarnavitem[open]').forEach(navItem => {
27276
- navItem.open = false;
27277
- });
27278
- }
27279
- //#endregion METHODS
27280
- /****************************************************************************/
27281
- //#region WATCHERS
27282
- onActivePathChanged() {
27283
- this.setActiveNavItems();
27284
- }
27285
- //#endregion WATCHERS
27286
- /****************************************************************************/
27287
- //#region LIFECYCLE
27288
- componentWillLoad() {
27289
- this.setActiveNavItems();
27290
- this.setupMutationObserver();
27291
- this.handleCollapsedSideEffects(this.type === 'collapsible' && !this.open);
27292
- }
27293
- onOpenChanged(newValue, oldValue) {
27294
- this.handleCollapsedSideEffects(this.type === 'collapsible' && !newValue);
27295
- // Only emit event when open state actually changes (not on re-render with same value)
27296
- if (this.type === 'collapsible' && newValue !== oldValue) {
27297
- this.openChanged.emit(newValue);
27298
- }
27299
- }
27300
- disconnectedCallback() {
27301
- if (this.mutationObserver) {
27302
- this.mutationObserver.disconnect();
27303
- }
27304
- if (this.pendingActiveUpdate) {
27305
- clearTimeout(this.pendingActiveUpdate);
27306
- }
27307
- }
27308
- //#endregion LIFECYCLE
27309
- /****************************************************************************/
27310
- //#region RENDER
27311
- render() {
27312
- const isCollapsed = this.type === 'collapsible' && !this.open;
27313
- return (hAsync(Host, { key: 'af78cae6f6cd895dbef098e549e63ac8baace243', role: "navigation", collapsed: isCollapsed ? true : undefined, "notification-intention": this.notificationIntention, "notification-emphasis": this.notificationEmphasis, "aria-expanded": this.type === 'collapsible' ? String(this.open) : undefined }, hAsync("div", { key: '28a2ec38d36308d803362d361a243dc5c1b6083e', class: "nv-sidebar-container" }, hAsync("slot", { key: 'c4d85987d256e89508392b6e28fdb74be9140ccb' })), this.type === 'collapsible' && (hAsync("button", { key: 'a34c2b6a0be9b1bd494ac542db3ed096c81e32f9', class: "nv-sidebar-toggle", onClick: this.handleToggle, "aria-label": this.open ? 'Collapse sidebar' : 'Expand sidebar' }, hAsync("nv-icon", { key: '8905351a55b339106a4c7bb5cf61582a98dd31a5', name: this.open
27314
- ? 'layout-sidebar-left-collapse'
27315
- : 'layout-sidebar-right-collapse', size: "sm" })))));
27316
- }
27317
- get el() { return getElement(this); }
27318
- static get watchers() { return {
27319
- "activePath": ["onActivePathChanged"],
27320
- "open": ["onOpenChanged"]
27321
- }; }
27322
- static get style() { return NvSidebarStyle0; }
27323
- static get cmpMeta() { return {
27324
- "$flags$": 4,
27325
- "$tagName$": "nv-sidebar",
27326
- "$members$": {
27327
- "type": [513],
27328
- "open": [1540],
27329
- "activePath": [513, "active-path"],
27330
- "notificationIntention": [513, "notification-intention"],
27331
- "notificationEmphasis": [513, "notification-emphasis"]
27332
- },
27333
- "$listeners$": undefined,
27334
- "$lazyBundleId$": "-",
27335
- "$attrsToReflect$": [["type", "type"], ["open", "open"], ["activePath", "active-path"], ["notificationIntention", "notification-intention"], ["notificationEmphasis", "notification-emphasis"]]
27336
- }; }
27337
- }
27338
-
27339
- const nvSidebarcontentCss = "nv-sidebarcontent{display:flex;flex-direction:column;flex:1;overflow-y:auto;overflow-x:hidden}";
27340
- var NvSidebarcontentStyle0 = nvSidebarcontentCss;
27341
-
27342
- /**
27343
- * Scrollable main content area of the sidebar containing navigation groups and items.
27344
- * @slot default - Navigation groups, items, and dividers.
27345
- */
27346
- class NvSidebarcontent {
27347
- constructor(hostRef) {
27348
- registerInstance(this, hostRef);
27349
- }
27350
- /****************************************************************************/
27351
- //#region RENDER
27352
- render() {
27353
- return (hAsync(Host, { key: 'd960a2c2abe06db605980bf35d2c7cc74f4e0dba', role: "list" }, hAsync("slot", { key: '7c0b0ad872d1afc279bfd9c9d381097207f055e2' })));
27354
- }
27355
- static get style() { return NvSidebarcontentStyle0; }
27356
- static get cmpMeta() { return {
27357
- "$flags$": 4,
27358
- "$tagName$": "nv-sidebarcontent",
27359
- "$members$": undefined,
27360
- "$listeners$": undefined,
27361
- "$lazyBundleId$": "-",
27362
- "$attrsToReflect$": []
27363
- }; }
27364
- }
27365
-
27366
- const nvSidebardividerCss = "nv-sidebardivider{display:block;height:var(--sidebar-primary-separator-size);background-color:var(--color-content-low-border);margin:var(--spacing-2) 0}";
27367
- var NvSidebardividerStyle0 = nvSidebardividerCss;
27368
-
27369
- /**
27370
- * A horizontal divider for separating sidebar navigation groups.
27371
- */
27372
- class NvSidebardivider {
27373
- constructor(hostRef) {
27374
- registerInstance(this, hostRef);
27375
- }
27376
- /****************************************************************************/
27377
- //#region RENDER
27378
- render() {
27379
- return hAsync(Host, { key: 'a4328b357b750232920c8b5e24e91503bba7e235', role: "separator", "aria-orientation": "horizontal" });
27380
- }
27381
- static get style() { return NvSidebardividerStyle0; }
27382
- static get cmpMeta() { return {
27383
- "$flags$": 0,
27384
- "$tagName$": "nv-sidebardivider",
27385
- "$members$": undefined,
27386
- "$listeners$": undefined,
27387
- "$lazyBundleId$": "-",
27388
- "$attrsToReflect$": []
27389
- }; }
27390
- }
27391
-
27392
- const nvSidebarfooterCss = "nv-sidebarfooter{display:block;margin-top:auto}";
27393
- var NvSidebarfooterStyle0 = nvSidebarfooterCss;
27394
-
27395
- /**
27396
- * Optional footer container for the sidebar. Use this to display custom elements
27397
- * like user settings, logout buttons, or version information at the bottom of the sidebar.
27398
- * @slot default - Custom content to display in the footer.
27399
- */
27400
- class NvSidebarfooter {
27401
- constructor(hostRef) {
27402
- registerInstance(this, hostRef);
27403
- }
27404
- /****************************************************************************/
27405
- //#region RENDER
27406
- render() {
27407
- return (hAsync(Host, { key: '73ce5246f93d982caf0d65f2cde8156dfbe565da' }, hAsync("slot", { key: '92a297a59988ce6e70875eedd50227cdf011d4bf' })));
27408
- }
27409
- static get style() { return NvSidebarfooterStyle0; }
27410
- static get cmpMeta() { return {
27411
- "$flags$": 4,
27412
- "$tagName$": "nv-sidebarfooter",
27413
- "$members$": undefined,
27414
- "$listeners$": undefined,
27415
- "$lazyBundleId$": "-",
27416
- "$attrsToReflect$": []
27417
- }; }
27418
- }
27419
-
27420
- const nvSidebargroupCss = "nv-sidebargroup{display:flex;flex-direction:column;gap:var(--spacing-1)}nv-sidebargroup .nv-sidebargroup-label{display:block;font-size:var(--font-size-sm);line-height:var(--line-height-sm);font-weight:var(--font-weight-medium-emphasis);color:var(--color-content-lower-text);letter-spacing:0;padding:var(--sidebar-primary-title-padding-y) var(--sidebar-primary-title-padding-x)}nv-sidebar[collapsed] nv-sidebargroup .nv-sidebargroup-label{display:none}";
27421
- var NvSidebargroupStyle0 = nvSidebargroupCss;
27422
-
27423
- /**
27424
- * Groups navigation items together with an optional label.
27425
- * @slot default - Navigation items (nv-sidebarnavitem) to display in this group.
27426
- */
27427
- class NvSidebargroup {
27428
- constructor(hostRef) {
27429
- registerInstance(this, hostRef);
27430
- }
27431
- //#endregion PROPERTIES
27432
- /****************************************************************************/
27433
- //#region RENDER
27434
- render() {
27435
- return (hAsync(Host, { key: 'c7b4e34d8237dc93adaa33f12d7cfda36a8ac269', role: "group", "aria-label": this.label }, this.label && hAsync("div", { key: '7cafdf840b12c89604efda7895b764331c8054b7', class: "nv-sidebargroup-label" }, this.label), hAsync("slot", { key: 'b6567a223f7cc05ce2874a632d38d6665c255659' })));
27436
- }
27437
- static get style() { return NvSidebargroupStyle0; }
27438
- static get cmpMeta() { return {
27439
- "$flags$": 4,
27440
- "$tagName$": "nv-sidebargroup",
27441
- "$members$": {
27442
- "label": [513]
27443
- },
27444
- "$listeners$": undefined,
27445
- "$lazyBundleId$": "-",
27446
- "$attrsToReflect$": [["label", "label"]]
27447
- }; }
27448
- }
27449
-
27450
- const nvSidebarheaderCss = "nv-sidebarheader{display:block}";
27451
- var NvSidebarheaderStyle0 = nvSidebarheaderCss;
27452
-
27453
- /**
27454
- * Optional header container for the sidebar. Use this to display custom elements
27455
- * like search bars, user profiles, or action buttons at the top of the sidebar.
27456
- * @slot default - Custom content to display in the header.
27457
- */
27458
- class NvSidebarheader {
27459
- constructor(hostRef) {
27460
- registerInstance(this, hostRef);
27461
- }
27462
- /****************************************************************************/
27463
- //#region RENDER
27464
- render() {
27465
- return (hAsync(Host, { key: '42d91f8325df19e8208ab045a057657c97bf3ff4' }, hAsync("slot", { key: '42b4e5952fd55b95fe2934297929cef3bd1b226c' })));
27466
- }
27467
- static get style() { return NvSidebarheaderStyle0; }
27468
- static get cmpMeta() { return {
27469
- "$flags$": 4,
27470
- "$tagName$": "nv-sidebarheader",
27471
- "$members$": undefined,
27472
- "$listeners$": undefined,
27473
- "$lazyBundleId$": "-",
27474
- "$attrsToReflect$": []
27475
- }; }
27476
- }
27477
-
27478
- const nvSidebarlogoCss = "nv-sidebarlogo{display:block}nv-sidebarlogo .nv-sidebarlogo-container{display:flex;align-items:center;gap:var(--spacing-3)}nv-sidebarlogo .nv-sidebarlogo-full,nv-sidebarlogo .nv-sidebarlogo-collapsed{height:var(--spacing-8);width:auto;object-fit:contain}nv-sidebarlogo .nv-sidebarlogo-collapsed{display:none}nv-sidebarlogo .nv-sidebarlogo-title{font-size:var(--nv-sidebarlogo-font-size, var(--font-size-md));font-weight:var(--nv-sidebarlogo-font-weight, var(--font-weight-high-emphasis));font-family:var(--nv-sidebarlogo-font-family, inherit);color:var(--color-content-high-text);white-space:nowrap;overflow:hidden;transition:opacity 0.2s ease, max-width 0.3s ease, margin-left 0.3s ease;max-width:200px;opacity:1}nv-sidebar[collapsed] nv-sidebarlogo .nv-sidebarlogo-full{display:none}nv-sidebar[collapsed] nv-sidebarlogo .nv-sidebarlogo-collapsed{display:block}nv-sidebar[collapsed] nv-sidebarlogo .nv-sidebarlogo-title{max-width:0;opacity:0;margin-left:0}nv-sidebar[collapsed] nv-sidebarlogo .nv-sidebarlogo-container{justify-content:center;align-items:center;gap:0;width:100%;min-height:var(--spacing-12);padding:0}";
27479
- var NvSidebarlogoStyle0 = nvSidebarlogoCss;
27480
-
27481
- /**
27482
- * Displays the logo and title at the top of the sidebar.
27483
- * Automatically switches between full and collapsed logos based on the sidebar state.
27484
- */
27485
- class NvSidebarlogo {
27486
- constructor(hostRef) {
27487
- registerInstance(this, hostRef);
27488
- //#endregion PROPERTIES
27489
- /****************************************************************************/
27490
- //#region CONSTANTS
27491
- // Default Nova logo SVG (expanded - icon only, text comes from label prop)
27492
- this.defaultLogo = 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"%3E%3Cstyle%3E.cls-1{fill:%23f0801a;}%3C/style%3E%3Cpath class="cls-1" d="M25.71,2.13l-5.08,11.39c-.39.88-.38,1.92.13,2.73.74,1.17,2.19,1.59,3.42,1.07l14.26-6-3.14-2.27-10.89,4.66c-.15.06-.3-.09-.23-.24l4.34-9.31-2.81-2.03Z"/%3E%3Cpath class="cls-1" d="M4.29,10l9.22,8.4c.71.65,1.7.97,2.63.73,1.34-.34,2.2-1.58,2.09-2.91l-1.22-15.43-3.14,2.27,1.01,11.8c.01.16-.18.26-.3.15l-7.48-7.04-2.81,2.03Z"/%3E%3Cpath class="cls-1" d="M26.95,39.15l-2.59-12.2c-.2-.94-.82-1.78-1.71-2.13-1.29-.51-2.71,0-3.4,1.14l-8.01,13.24h3.87s6.07-10.18,6.07-10.18c.08-.14.3-.1.33.06l1.97,10.08h3.47Z"/%3E%3Cpath class="cls-1" d="M4.85,32.76l10.82-6.19c.83-.48,1.44-1.32,1.5-2.28.09-1.38-.83-2.58-2.13-2.89L0,17.82l1.2,3.68,11.54,2.67c.16.04.19.25.05.33l-9,4.96,1.07,3.3Z"/%3E%3Cpath class="cls-1" d="M40,20.11l-12.4-1.35c-.95-.1-1.94.22-2.56.96-.89,1.07-.84,2.58.03,3.58l10.08,11.74,1.2-3.69-7.77-8.94c-.11-.12,0-.32.16-.3l10.19,1.28,1.07-3.3Z"/%3E%3C/svg%3E';
27493
- // Default Nova icon (collapsed - same logo but will be displayed smaller)
27494
- this.defaultCollapsedLogo = 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"%3E%3Cstyle%3E.cls-1{fill:%23f0801a;}%3C/style%3E%3Cpath class="cls-1" d="M25.71,2.13l-5.08,11.39c-.39.88-.38,1.92.13,2.73.74,1.17,2.19,1.59,3.42,1.07l14.26-6-3.14-2.27-10.89,4.66c-.15.06-.3-.09-.23-.24l4.34-9.31-2.81-2.03Z"/%3E%3Cpath class="cls-1" d="M4.29,10l9.22,8.4c.71.65,1.7.97,2.63.73,1.34-.34,2.2-1.58,2.09-2.91l-1.22-15.43-3.14,2.27,1.01,11.8c.01.16-.18.26-.3.15l-7.48-7.04-2.81,2.03Z"/%3E%3Cpath class="cls-1" d="M26.95,39.15l-2.59-12.2c-.2-.94-.82-1.78-1.71-2.13-1.29-.51-2.71,0-3.4,1.14l-8.01,13.24h3.87s6.07-10.18,6.07-10.18c.08-.14.3-.1.33.06l1.97,10.08h3.47Z"/%3E%3Cpath class="cls-1" d="M4.85,32.76l10.82-6.19c.83-.48,1.44-1.32,1.5-2.28.09-1.38-.83-2.58-2.13-2.89L0,17.82l1.2,3.68,11.54,2.67c.16.04.19.25.05.33l-9,4.96,1.07,3.3Z"/%3E%3Cpath class="cls-1" d="M40,20.11l-12.4-1.35c-.95-.1-1.94.22-2.56.96-.89,1.07-.84,2.58.03,3.58l10.08,11.74,1.2-3.69-7.77-8.94c-.11-.12,0-.32.16-.3l10.19,1.28,1.07-3.3Z"/%3E%3C/svg%3E';
27495
- }
27496
- //#endregion CONSTANTS
27497
- /****************************************************************************/
27498
- //#region RENDER
27499
- render() {
27500
- const logoSrc = this.logo || this.defaultLogo;
27501
- const collapsedLogoSrc = this.collapsedLogo || this.defaultCollapsedLogo;
27502
- return (hAsync(Host, { key: 'ec2aba08293e4def2fe083c311b69cafe005cf5e' }, hAsync("div", { key: '3a24d832a0bb5aa44264fe1fc3091878556649bd', class: "nv-sidebarlogo-container" }, hAsync("img", { key: 'a9a08e7c5dd51902d9ffbda0d9216a4ffb186756', src: logoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-full" }), hAsync("img", { key: 'daef311e11c8d5ee6b823a4896be36ea5bd696cc', src: collapsedLogoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-collapsed" }), this.label && hAsync("span", { key: '9685e4c110e7bb7356f5d49b615105033a32a736', class: "nv-sidebarlogo-title" }, this.label))));
27503
- }
27504
- static get style() { return NvSidebarlogoStyle0; }
27505
- static get cmpMeta() { return {
27506
- "$flags$": 0,
27507
- "$tagName$": "nv-sidebarlogo",
27508
- "$members$": {
27509
- "label": [513],
27510
- "logo": [513],
27511
- "collapsedLogo": [513, "collapsed-logo"]
27512
- },
27513
- "$listeners$": undefined,
27514
- "$lazyBundleId$": "-",
27515
- "$attrsToReflect$": [["label", "label"], ["logo", "logo"], ["collapsedLogo", "collapsed-logo"]]
27516
- }; }
27517
- }
27518
-
27519
- const nvSidebarnavitemCss = "nv-sidebarnavitem{display:flex;flex-direction:column;gap:0}nv-sidebarnavitem .nv-sidebarnavitem-trigger{display:flex;align-items:center;gap:var(--sidebar-primary-item-gap-x);padding:var(--sidebar-primary-item-padding-y) var(--sidebar-primary-item-padding-x);border-radius:var(--sidebar-primary-item-radius);cursor:pointer;transition:all 0.15s ease;font-size:var(--sidebar-primary-item-font-size);font-weight:var(--font-weight-medium-emphasis);color:var(--color-content-low-text);background:var(--color-interaction-container-neutral-background);text-decoration:none;--nv-component-background:var(--color-interaction-container-neutral-background);--nv-sidebarnavitem-background:var(--color-interaction-container-neutral-background)}nv-sidebarnavitem .nv-sidebarnavitem-trigger:hover{background-color:var(--color-interaction-container-neutral-background-hover);color:var(--color-content-medium-text);--nv-component-background:var(--color-interaction-container-neutral-background-hover);--nv-sidebarnavitem-background:var(--color-interaction-container-neutral-background-hover)}nv-sidebarnavitem .nv-sidebarnavitem-trigger:focus,nv-sidebarnavitem .nv-sidebarnavitem-trigger:focus-within{outline:none}nv-sidebarnavitem .nv-sidebarnavitem-trigger:focus-visible,nv-sidebarnavitem .nv-sidebarnavitem-trigger:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-sidebarnavitem[active] .nv-sidebarnavitem-trigger{background-color:var(--color-interaction-container-neutral-background-active);color:var(--color-interaction-container-neutral-text-active);font-weight:var(--font-weight-medium-emphasis);--nv-component-background:var(--color-interaction-container-neutral-background-active);--nv-sidebarnavitem-background:var(--color-interaction-container-neutral-background-active)}nv-sidebarnavitem .nv-sidebarnavitem-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit;width:var(--sidebar-primary-item-icon-size);height:var(--sidebar-primary-item-icon-size);position:relative}nv-sidebar[collapsed] nv-sidebarnavitem .nv-sidebarnavitem-icon{overflow:visible;margin:0;justify-content:center}nv-sidebar[collapsed] nv-sidebarnavitem .nv-sidebarnavitem-icon nv-notification-bullet{position:absolute;transform:translate(50%, -50%);z-index:1;--sidebar-primary-notification-bullet-size-reduced:calc(\n var(--sidebar-primary-item-icon-size) * 0.4\n )}nv-sidebarnavitem .nv-sidebarnavitem-content{flex:1;display:flex;align-items:center}nv-sidebarnavitem .nv-sidebarnavitem-content a{color:inherit !important;text-decoration:none !important;font-weight:var(--font-weight-medium-emphasis) !important;flex:1}nv-sidebarnavitem .nv-sidebarnavitem-trailing{display:flex;align-items:center;gap:var(--spacing-2);margin-left:auto}nv-sidebarnavitem .nv-sidebarnavitem-chevron{transition:transform 0.2s ease;color:inherit}nv-sidebarnavitem[open] .nv-sidebarnavitem-chevron{transform:rotate(180deg)}nv-sidebarnavitem .nv-sidebarnavitem-subitems{display:flex;flex-direction:column;gap:0;max-height:0;overflow:hidden;opacity:0;transition:max-height 0.3s ease, opacity 0.2s ease;padding-left:0}nv-sidebarnavitem[open] .nv-sidebarnavitem-subitems{opacity:1;margin-top:var(--spacing-1)}nv-sidebar[collapsed] nv-sidebarnavitem .nv-sidebarnavitem-trigger{justify-content:center;gap:0;width:100%}nv-sidebar[collapsed] nv-sidebarnavitem .nv-sidebarnavitem-content{display:none}nv-sidebar[collapsed] nv-sidebarnavitem .nv-sidebarnavitem-trailing,nv-sidebar[collapsed] nv-sidebarnavitem .nv-sidebarnavitem-chevron{display:none}";
27520
- var NvSidebarnavitemStyle0 = nvSidebarnavitemCss;
27521
-
27522
- /**
27523
- * A navigation item in the sidebar. Can be a simple link or a collapsible parent with sub-items.
27524
- * @slot default - The link or content of the item (usually an <a> tag).
27525
- * @slot subitems - Sub-navigation items (nv-sidebarnavsubitem elements). Automatically assigned.
27526
- * @slot trailing - Optional content displayed at the end of the item (e.g., badges, icons, chevron).
27527
- */
27528
- class NvSidebarnavitem {
27529
- constructor(hostRef) {
27530
- registerInstance(this, hostRef);
27531
- /**
27532
- * Whether this item represents the active/current page.
27533
- * Can be set automatically when a sub-item becomes active.
27534
- */
27535
- this.active = false;
27536
- /**
27537
- * Whether this item can be collapsed/expanded (has sub-items).
27538
- */
27539
- this.collapsible = false;
27540
- /**
27541
- * Whether the collapsible item is currently open (showing sub-items).
27542
- */
27543
- this.open = false;
27544
- //#endregion PROPERTIES
27545
- /****************************************************************************/
27546
- //#region STATE
27547
- this.hasSubitems = false;
27548
- this.isSidebarCollapsed = false;
27549
- this.wasActiveFromSubitem = false; // Track if active was set by subitem logic
27550
- //#endregion STATE
27551
- /****************************************************************************/
27552
- //#region METHODS
27553
- this.handleToggle = (event) => {
27554
- // Ignore clicks that originated from subitems (they bubble up but shouldn't toggle)
27555
- const target = event.target;
27556
- if (target.closest('nv-sidebarnavsubitem')) {
27557
- return; // Let the subitem's link handle navigation normally
27558
- }
27559
- // In collapsed sidebar mode, navigate to the main link instead of toggling
27560
- if (this.isSidebarCollapsed) {
27561
- // Find the first link that is NOT inside subitems
27562
- const link = this.el.querySelector('.nv-sidebarnavitem-content a, :scope > a');
27563
- if (link === null || link === void 0 ? void 0 : link.href) {
27564
- // Check if click was directly on the link - if so, let it handle naturally
27565
- if (target.closest('a')) {
27566
- return;
27567
- }
27568
- // Trigger navigation by clicking the link programmatically
27569
- link.click();
27570
- }
27571
- return;
27572
- }
27573
- // Only handle toggle for collapsible items when sidebar is expanded
27574
- if (this.collapsible) {
27575
- event.preventDefault();
27576
- event.stopPropagation();
27577
- this.open = !this.open;
27578
- }
27579
- // For non-collapsible items in expanded mode, let the link handle the navigation
27580
- // Don't prevent default or stop propagation - allow the link to work normally
27581
- };
27582
- this.isAnimating = false;
27583
- this.hasInitializedHeight = false;
27584
- /** Tracks the last open state that was animated to, to prevent redundant animations */
27585
- this.lastAnimatedOpenState = null;
27586
- this.updateSubitemsHeight = (force = false) => {
27587
- if (!this.subitemsRef)
27588
- return;
27589
- // Skip animation if we're already in the target state (prevents animation on active change)
27590
- // Only animate if:
27591
- // 1. forced (explicit toggle by user via @Watch)
27592
- // 2. OR this is the first animation (lastAnimatedOpenState is null)
27593
- // 3. OR the open state has actually changed since last animation
27594
- if (!force &&
27595
- this.lastAnimatedOpenState !== null &&
27596
- this.lastAnimatedOpenState === this.open) {
27597
- return;
27598
- }
27599
- // Don't re-animate if already animating and not forced
27600
- if (this.isAnimating && !force) {
27601
- return;
27602
- }
27603
- this.isAnimating = true;
27604
- this.lastAnimatedOpenState = this.open;
27605
- if (this.open) {
27606
- // Calculate real height and animate to it
27607
- this.subitemsRef.style.transition = 'none';
27608
- this.subitemsRef.style.maxHeight = '0px';
27609
- requestAnimationFrame(() => {
27610
- if (this.subitemsRef) {
27611
- this.subitemsRef.style.transition =
27612
- 'max-height 0.3s ease, opacity 0.2s ease';
27613
- this.subitemsRef.style.maxHeight =
27614
- this.subitemsRef.scrollHeight + 'px';
27615
- // Reset animation flag after animation completes
27616
- setTimeout(() => {
27617
- this.isAnimating = false;
27618
- }, 300); // Match animation duration
27619
- }
27620
- });
27621
- }
27622
- else {
27623
- // Animate to 0
27624
- this.subitemsRef.style.transition = 'none';
27625
- this.subitemsRef.style.maxHeight = this.subitemsRef.scrollHeight + 'px';
27626
- requestAnimationFrame(() => {
27627
- if (this.subitemsRef) {
27628
- this.subitemsRef.style.transition =
27629
- 'max-height 0.3s ease, opacity 0.2s ease';
27630
- this.subitemsRef.style.maxHeight = '0px';
27631
- // Reset animation flag after animation completes
27632
- setTimeout(() => {
27633
- this.isAnimating = false;
27634
- }, 300); // Match animation duration
27635
- }
27636
- });
27637
- }
27638
- };
27639
- this.checkSidebarCollapsed = () => {
27640
- var _a;
27641
- const sidebar = this.el.closest('nv-sidebar');
27642
- const wasCollapsed = this.isSidebarCollapsed;
27643
- this.isSidebarCollapsed = (_a = sidebar === null || sidebar === void 0 ? void 0 : sidebar.hasAttribute('collapsed')) !== null && _a !== void 0 ? _a : false;
27644
- // When sidebar collapse state changes, update active state based on subitems
27645
- if (wasCollapsed !== this.isSidebarCollapsed) {
27646
- this.updateActiveFromSubitems();
27647
- }
27648
- };
27649
- /**
27650
- * Checks if any sub-item is active and updates parent active state.
27651
- * - When sidebar is collapsed: if a sub-item is active, parent should be active
27652
- * - When sidebar is expanded: if a sub-item is active AND parent is not open, parent should be active
27653
- * (because sub-items are hidden, we need to indicate the parent contains an active child)
27654
- */
27655
- this.updateActiveFromSubitems = () => {
27656
- if (!this.hasSubitems)
27657
- return;
27658
- // Find all sub-items
27659
- const subItems = Array.from(this.el.querySelectorAll('nv-sidebarnavsubitem'));
27660
- // Check if any sub-item is active
27661
- const hasActiveSubitem = subItems.some(subItem => subItem.active);
27662
- if (this.isSidebarCollapsed) {
27663
- // When sidebar is collapsed AND a sub-item is active, make parent active
27664
- if (hasActiveSubitem) {
27665
- this.active = true;
27666
- this.wasActiveFromSubitem = true;
27667
- }
27668
- else {
27669
- // When collapsed and no sub-item is active, remove active state only if we set it
27670
- if (this.wasActiveFromSubitem) {
27671
- this.active = false;
27672
- this.wasActiveFromSubitem = false;
27673
- }
27674
- }
27675
- }
27676
- else {
27677
- // When sidebar is expanded
27678
- if (hasActiveSubitem && !this.open) {
27679
- // If a sub-item is active AND parent is not open (sub-items hidden),
27680
- // make parent active to indicate it contains an active child
27681
- this.active = true;
27682
- this.wasActiveFromSubitem = true;
27683
- }
27684
- else if (hasActiveSubitem && this.open) {
27685
- // If a sub-item is active BUT parent is open (sub-items visible),
27686
- // remove active state from parent (only sub-item should be active)
27687
- if (this.wasActiveFromSubitem) {
27688
- this.active = false;
27689
- this.wasActiveFromSubitem = false;
27690
- }
27691
- }
27692
- else {
27693
- // No active sub-item, remove active state if we set it
27694
- if (this.wasActiveFromSubitem) {
27695
- this.active = false;
27696
- this.wasActiveFromSubitem = false;
27697
- }
27698
- }
27699
- // Note: activePath logic in nv-sidebar can also manage parent active state
27700
- // (when parent href matches activePath exactly)
27701
- }
27702
- };
27703
- }
27704
- //#endregion METHODS
27705
- /****************************************************************************/
27706
- //#region LIFECYCLE
27707
- componentWillLoad() {
27708
- // Check if there are sub-items in any slot
27709
- const subItems = Array.from(this.el.children).filter(child => child.tagName.toLowerCase() === 'nv-sidebarnavsubitem');
27710
- this.hasSubitems = subItems.length > 0;
27711
- // Move sub-items to the subitems slot
27712
- if (this.hasSubitems) {
27713
- subItems.forEach(item => {
27714
- item.setAttribute('slot', 'subitems');
27715
- });
27716
- }
27717
- // Check sidebar collapsed state
27718
- this.checkSidebarCollapsed();
27719
- // Watch for sidebar state changes
27720
- const sidebar = this.el.closest('nv-sidebar');
27721
- if (sidebar) {
27722
- this.mutationObserver = new MutationObserver(() => {
27723
- this.checkSidebarCollapsed();
27724
- });
27725
- this.mutationObserver.observe(sidebar, {
27726
- attributes: true,
27727
- attributeFilter: ['collapsed'],
27728
- });
27729
- }
27730
- // Watch for sub-items active state changes
27731
- if (this.hasSubitems) {
27732
- // Observe the subitems container for changes (including new sub-items being added)
27733
- // Using subtree: true to catch all attribute changes in descendants
27734
- const subitemsContainer = this.el.querySelector('.nv-sidebarnavitem-subitems');
27735
- if (subitemsContainer) {
27736
- this.subitemsMutationObserver = new MutationObserver(() => {
27737
- this.updateActiveFromSubitems();
27738
- });
27739
- // Observe the container for child list changes and attribute changes in descendants
27740
- this.subitemsMutationObserver.observe(subitemsContainer, {
27741
- childList: true,
27742
- subtree: true,
27743
- attributes: true,
27744
- attributeFilter: ['active'],
27745
- });
27746
- }
27747
- else {
27748
- // If container doesn't exist yet (not collapsible or not rendered), observe the element itself
27749
- // This handles cases where sub-items are direct children
27750
- this.subitemsMutationObserver = new MutationObserver(() => {
27751
- this.updateActiveFromSubitems();
27752
- });
27753
- this.subitemsMutationObserver.observe(this.el, {
27754
- childList: true,
27755
- subtree: true,
27756
- attributes: true,
27757
- attributeFilter: ['active'],
27758
- });
27759
- }
27760
- }
27761
- // Initial check for active subitems
27762
- this.updateActiveFromSubitems();
27763
- }
27764
- disconnectedCallback() {
27765
- if (this.mutationObserver) {
27766
- this.mutationObserver.disconnect();
27767
- }
27768
- if (this.subitemsMutationObserver) {
27769
- this.subitemsMutationObserver.disconnect();
27770
- }
27771
- }
27772
- //#endregion LIFECYCLE
27773
- /****************************************************************************/
27774
- //#region WATCHERS
27775
- onOpenChanged(newValue, oldValue) {
27776
- // Only animate if the value actually changed (prevents false triggers from React re-renders)
27777
- if (newValue === oldValue) {
27778
- return;
27779
- }
27780
- // Force update when open state changes (user clicked toggle)
27781
- this.updateSubitemsHeight(true);
27782
- // Update active state based on subitems when open state changes
27783
- this.updateActiveFromSubitems();
27784
- }
27785
- //#endregion WATCHERS
27786
- /****************************************************************************/
27787
- //#region RENDER
27788
- render() {
27789
- const showNotificationBullet = this.notificationCount !== undefined && this.notificationCount > 0;
27790
- const notificationSize = this.isSidebarCollapsed ? 'reduced' : 'default';
27791
- return (hAsync(Host, { key: 'c0c9c63cb295441389b5ced9a4b0a0d5a1af99cd', role: "listitem" }, hAsync("div", { key: '6673c3f4c14762bff8512ecc430febddfa74b307', class: "nv-sidebarnavitem-trigger", onClick: this.handleToggle, "aria-expanded": this.collapsible ? String(this.open) : undefined, "aria-current": this.active && !this.collapsible ? 'page' : undefined }, this.icon && (hAsync("div", { key: '25f703e9fb7375b8b562be54f080120ae037dd9f', class: "nv-sidebarnavitem-icon" }, hAsync("nv-icon", { key: '1a4e345c90afcec159890db6c6b0e22d53dd673d', name: this.icon, size: "md" }), showNotificationBullet && this.isSidebarCollapsed && (hAsync("nv-notification-bullet", { key: '15b69d1a2325daed7d6583ed10906fe4e91809e5', count: this.notificationCount, size: notificationSize, contrastingBorder: true })))), hAsync("div", { key: 'c717c09f39eab07616de419a35b11a5b7dfce5d1', class: "nv-sidebarnavitem-content" }, hAsync("slot", { key: '9f8687f151fd082a6737e7fbe6036cc3ebff3cc2' })), hAsync("div", { key: 'b2c3d7a4c30ce96273731a05a1d361f5654582de', class: "nv-sidebarnavitem-trailing" }, hAsync("slot", { key: 'acf2dddbbbc7d2e83703c731a244237e0dc81153', name: "trailing" }), showNotificationBullet && !this.isSidebarCollapsed && (hAsync("nv-notification-bullet", { key: 'adca5c7418a3b58afa5ef21ddd3fa9b2d880a56c', count: this.notificationCount, size: notificationSize })), this.collapsible && (hAsync("nv-icon", { key: 'a4a4369d4ba76f567cca439d1b4c7e95ad5ba98c', name: "chevron-down", size: "sm", class: "nv-sidebarnavitem-chevron" })))), this.collapsible && this.hasSubitems && (hAsync("div", { key: '2d4fadb0b547eb369a702bb8210b3312dde505b2', class: "nv-sidebarnavitem-subitems", ref: el => {
27792
- // Only update ref and initialize if element changed or not yet initialized
27793
- if (el !== this.subitemsRef) {
27794
- this.subitemsRef = el;
27795
- if (el && !this.hasInitializedHeight) {
27796
- // Initialize height only on first mount, not on re-renders
27797
- this.hasInitializedHeight = true;
27798
- requestAnimationFrame(() => {
27799
- // Only animate if item is open, otherwise it will animate when opened
27800
- if (this.open) {
27801
- this.updateSubitemsHeight();
27802
- }
27803
- });
27804
- }
27805
- }
27806
- } }, hAsync("slot", { key: 'f0ffb970aa2d84580205ba110858d3f1c27875a3', name: "subitems" })))));
27807
- }
27808
- get el() { return getElement(this); }
27809
- static get watchers() { return {
27810
- "open": ["onOpenChanged"]
27811
- }; }
27812
- static get style() { return NvSidebarnavitemStyle0; }
27813
- static get cmpMeta() { return {
27814
- "$flags$": 4,
27815
- "$tagName$": "nv-sidebarnavitem",
27816
- "$members$": {
27817
- "icon": [513],
27818
- "active": [1540],
27819
- "collapsible": [516],
27820
- "open": [1540],
27821
- "notificationCount": [514, "notification-count"],
27822
- "hasSubitems": [32],
27823
- "isSidebarCollapsed": [32]
27824
- },
27825
- "$listeners$": undefined,
27826
- "$lazyBundleId$": "-",
27827
- "$attrsToReflect$": [["icon", "icon"], ["active", "active"], ["collapsible", "collapsible"], ["open", "open"], ["notificationCount", "notification-count"]]
27828
- }; }
27829
- }
27830
-
27831
- const nvSidebarnavsubitemCss = "nv-sidebarnavsubitem{display:flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3) var(--spacing-2) var(--list-dropdown-sub-item-padding-left);cursor:pointer;transition:all 0.15s ease;position:relative;min-height:var(--spacing-10);background-color:var(--color-interaction-container-neutral-background);border-radius:var(--sidebar-primary-item-radius);--nv-component-background:var(--color-interaction-container-neutral-background)}nv-sidebarnavsubitem:hover{background-color:var(--color-interaction-container-neutral-background-hover);--nv-component-background:var(--color-interaction-container-neutral-background-hover)}nv-sidebarnavsubitem:focus,nv-sidebarnavsubitem:focus-within{outline:none}nv-sidebarnavsubitem:focus-visible,nv-sidebarnavsubitem:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-sidebarnavsubitem .nv-sidebarnavsubitem-indicator{display:none}nv-sidebarnavsubitem .nv-sidebarnavsubitem-content{flex:1;display:flex;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-sm);color:var(--color-content-medium-text);text-decoration:none;font-weight:var(--font-weight-medium-emphasis)}nv-sidebarnavsubitem .nv-sidebarnavsubitem-content a{color:inherit !important;text-decoration:none !important;font-weight:var(--font-weight-medium-emphasis) !important;flex:1}nv-sidebarnavsubitem:hover .nv-sidebarnavsubitem-content{color:var(--color-content-medium-text)}nv-sidebarnavsubitem[active]{background-color:var(--color-interaction-container-neutral-background-active);--nv-component-background:var(--color-interaction-container-neutral-background-active)}nv-sidebarnavsubitem[active] .nv-sidebarnavsubitem-content{color:var(--color-orange-600);font-weight:var(--font-weight-high-emphasis)}nv-sidebarnavsubitem .nv-sidebarnavsubitem-trailing{display:flex;align-items:center}nv-sidebar[collapsed] nv-sidebarnavsubitem .nv-sidebarnavsubitem-content{max-width:0;opacity:0;margin:0;overflow:hidden;transition:opacity 0.2s ease, max-width 0.2s ease}nv-sidebar[collapsed] nv-sidebarnavsubitem .nv-sidebarnavsubitem-indicator{margin-right:0;width:var(--spacing-6);justify-content:center}nv-sidebar[collapsed] nv-sidebarnavsubitem .nv-sidebarnavsubitem-trailing{display:none}";
27832
- var NvSidebarnavsubitemStyle0 = nvSidebarnavsubitemCss;
27833
-
27834
- /**
27835
- * A sub-item in the sidebar navigation, typically used as a child of nv-sidebarnavitem.
27836
- * @slot default - The link or content of the sub-item (usually an <a> tag).
27837
- * @slot trailing - Optional content displayed at the end of the sub-item (e.g., badges, icons).
27838
- */
27839
- class NvSidebarnavsubitem {
27840
- constructor(hostRef) {
27841
- registerInstance(this, hostRef);
27842
- /****************************************************************************/
27843
- //#region PROPERTIES
27844
- /**
27845
- * Whether this sub-item represents the active/current page.
27846
- */
27847
- this.active = false;
27848
- }
27849
- //#endregion PROPERTIES
27850
- /****************************************************************************/
27851
- //#region METHODS
27852
- // Note: We no longer use stopPropagation() here because it prevents React Router
27853
- // (and other SPA routers) from receiving the click event due to event delegation.
27854
- // Instead, the parent nv-sidebarnavitem checks if clicks originate from subitems.
27855
- //#endregion METHODS
27856
- /****************************************************************************/
27857
- //#region RENDER
27858
- render() {
27859
- return (hAsync(Host, { key: '8ae8c5e2038145bd458a35d237495a06fde97294', role: "listitem", "aria-current": this.active ? 'page' : undefined }, hAsync("div", { key: '559a99d72973f7af43091c5c920e77d8cad3944c', class: "nv-sidebarnavsubitem-indicator" }), hAsync("div", { key: '204c7ad681d51310f43b618ef14a12d0ccc93ddc', class: "nv-sidebarnavsubitem-content" }, hAsync("slot", { key: 'f4717aee216fbeac4dbfe0d98b34fe7e83476701' })), hAsync("div", { key: 'b5db84c75ae4e51d8a048000a49697eaf4b20f1d', class: "nv-sidebarnavsubitem-trailing" }, hAsync("slot", { key: 'b6d0afcd6b4ace60b32f531f414b70aba513a274', name: "trailing" }))));
27860
- }
27861
- static get style() { return NvSidebarnavsubitemStyle0; }
27862
- static get cmpMeta() { return {
27863
- "$flags$": 4,
27864
- "$tagName$": "nv-sidebarnavsubitem",
27865
- "$members$": {
27866
- "active": [516]
27867
- },
27868
- "$listeners$": undefined,
27869
- "$lazyBundleId$": "-",
27870
- "$attrsToReflect$": [["active", "active"]]
27871
- }; }
27872
- }
27873
-
27874
27062
  const nvSplitCss = "nv-split{display:flex;width:100%;height:100%;position:relative}nv-split[direction=horizontal]{flex-direction:row}nv-split[direction=vertical]{flex-direction:column}nv-split .nv-split-gutter{position:absolute;z-index:10;background:transparent;display:flex;align-items:center;justify-content:center;flex:0 0 auto;transition:background-color 0.2s ease}nv-split .nv-split-gutter::after{content:\"\";position:absolute;background:var(--nv-color-neutral-400, #ccc);border-radius:2px;transition:background-color 0.2s ease}nv-split .nv-split-gutter:hover::after{background:var(--nv-color-brand-primary, #0066cc)}nv-split .nv-split-gutter::before{content:\"\";position:absolute;background-repeat:no-repeat;background-position:center;opacity:0.4;transition:opacity 0.2s ease;pointer-events:none}nv-split .nv-split-gutter:hover::before{opacity:0.7}nv-split[direction=horizontal]>.nv-split-gutter{width:var(--nv-split-gutter-size, 24px);top:0;bottom:0;transform:translateX(-50%);cursor:col-resize}nv-split[direction=horizontal]>.nv-split-gutter::after{width:2px;height:60%;left:50%;top:20%;transform:translateX(-50%)}nv-split[direction=horizontal]>.nv-split-gutter::before{width:16px;height:16px}nv-split[direction=vertical]>.nv-split-gutter{height:var(--nv-split-gutter-size, 24px);left:0;right:0;transform:translateY(-50%);cursor:row-resize}nv-split[direction=vertical]>.nv-split-gutter::after{height:2px;width:60%;top:50%;left:20%;transform:translateY(-50%)}nv-split[direction=vertical]>.nv-split-gutter::before{width:16px;height:16px}nv-split[data-dragging=true]>.nv-split-gutter::after{background:var(--nv-color-neutral-500, #9ca3af)}nv-split>[slot=pane]{flex:1 1 auto;overflow:hidden;min-width:0;min-height:0;display:flex;flex-direction:column}nv-split>[slot=pane]>nv-split{flex:1 1 auto;width:100%;height:100%}";
27875
27063
  var NvSplitStyle0 = nvSplitCss;
27876
27064
 
@@ -28196,7 +27384,7 @@ class NvSplit {
28196
27384
  /****************************************************************************/
28197
27385
  //#region RENDER
28198
27386
  render() {
28199
- return (hAsync(Host, { key: 'df6a2141e14d1f691af162d1eae2e2763ffad014', "data-dragging": this.isDragging.toString() }, hAsync("slot", { key: 'ce9d941bc73fa6e12161f334d4cd86e9045f6271', name: "pane" }), hAsync("slot", { key: 'a70c14b0989a758ad35dc3c611563f7d03be0d02', name: "gutter" })));
27387
+ return (hAsync(Host, { key: '6b1fd4447295f209a9b0ea95b7d2a07200204504', "data-dragging": this.isDragging.toString() }, hAsync("slot", { key: '67089b66457c4ad64abb80749d64ca67c881a1c0', name: "pane" }), hAsync("slot", { key: '2fe9da5dd2aa2ff5b14bdd9ea99e9f0fa027931d', name: "gutter" })));
28200
27388
  }
28201
27389
  get el() { return getElement(this); }
28202
27390
  static get watchers() { return {
@@ -28246,7 +27434,7 @@ class NvStack {
28246
27434
  /****************************************************************************/
28247
27435
  //#region RENDER
28248
27436
  render() {
28249
- return (hAsync(Host, { key: 'fbdaf5b2fb134b050883a512b4aeb96b070017c1', class: clsx(this.fill && 'nv-stack-fill', this.flex && 'nv-stack-flex', this.full && 'w-full', this.gutter && !this.vertical && `gap-x-${this.gutter}`, this.gutter && this.vertical && `gap-y-${this.gutter}`, this.vertical && 'nv-stack-vertical') }, hAsync("slot", { key: '6c7c231b8ff2575a1b509539d227468629fae6ab' })));
27437
+ return (hAsync(Host, { key: '65adeb492f9eb9b709c809d65b52f4447d1c938d', class: clsx(this.fill && 'nv-stack-fill', this.flex && 'nv-stack-flex', this.full && 'w-full', this.gutter && !this.vertical && `gap-x-${this.gutter}`, this.gutter && this.vertical && `gap-y-${this.gutter}`, this.vertical && 'nv-stack-vertical') }, hAsync("slot", { key: '09773d6affbc9bf3c18e75162d9c096dd31a48e7' })));
28250
27438
  }
28251
27439
  static get style() { return NvStackStyle0; }
28252
27440
  static get cmpMeta() { return {
@@ -28500,7 +27688,7 @@ class NvTable {
28500
27688
  /****************************************************************************/
28501
27689
  //#region RENDER
28502
27690
  render() {
28503
- return (hAsync(Host, { key: 'ec194bed7ec58642be9f6b52a737e2f9375a152e' }, hAsync("slot", { key: '009ce0f20491156ca93141c85683f0be499a9938' })));
27691
+ return (hAsync(Host, { key: '684a51e016d83eeb0ab76f07fe6d26a06bf00457' }, hAsync("slot", { key: '420b9cbcb641692ed95d54ec2e0af1c0b09776c3' })));
28504
27692
  }
28505
27693
  get host() { return getElement(this); }
28506
27694
  static get style() { return NvTableStyle0; }
@@ -28575,7 +27763,7 @@ class NvTableheader {
28575
27763
  /****************************************************************************/
28576
27764
  //#region RENDER
28577
27765
  render() {
28578
- return (hAsync(Host, { key: '6719336a9812b1d1abd161b955b841c1459fb584', role: "columnheader", "aria-sort": this.ariaSort, tabindex: this.sortable ? 0 : undefined, onKeyDown: this.handleKeyDown.bind(this), onClick: this.cycleSortDirection.bind(this) }, hAsync("slot", { key: 'd559e3b7c74f6dcf8197e2d082310660a23291d6' }), this.sortable && (hAsync("span", { key: '540c8c8cf3cccac47a3ece7d9be4e97c4e283690', class: "sort-icon-wrap", "aria-hidden": "true" }, hAsync("nv-iconbutton", { key: 'ac713c7af3b5b2e452f02d0d77cb64398b0febd4', disableTabindex: true, name: "arrow-up", size: "xs", emphasis: this.sortDirection === 'none' ? 'lower' : 'low',
27766
+ return (hAsync(Host, { key: '03d7e74c19c0c1ef54f4d6f53eab0964af821f57', role: "columnheader", "aria-sort": this.ariaSort, tabindex: this.sortable ? 0 : undefined, onKeyDown: this.handleKeyDown.bind(this), onClick: this.cycleSortDirection.bind(this) }, hAsync("slot", { key: '7408d11ba38b59f05bcdcffcb55d11ae36f93a34' }), this.sortable && (hAsync("span", { key: 'c76ddbf61861d9cd45eb7b0d8c59095947677135', class: "sort-icon-wrap", "aria-hidden": "true" }, hAsync("nv-iconbutton", { key: '6d59b4b14dfe588142ccba2e1dc452754ea5a2f7', disableTabindex: true, name: "arrow-up", size: "xs", emphasis: this.sortDirection === 'none' ? 'lower' : 'low',
28579
27767
  // prevent mousedown from selecting text
28580
27768
  onMouseDown: (e) => e.preventDefault(), class: {
28581
27769
  'is-none': this.sortDirection === 'none',
@@ -28660,8 +27848,8 @@ class NvToggle {
28660
27848
  /****************************************************************************/
28661
27849
  //#region RENDER
28662
27850
  render() {
28663
- return (hAsync(Host, { key: '1a217a31999750cb1c8f26af5407ef2d7277600c', class: clsx(this.labelPlacement === 'before' && 'label-placement-before') }, hAsync("div", { key: '35e39e8df6475ffa41cd8b811948454ba956e814', class: "input-container" }, hAsync("input", { key: '359a584d868d37affcb7b5fe5c24fef71eae209e', type: "checkbox", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: Boolean(this.checked), disabled: this.disabled || this.readonly, readonly: this.readonly })), hAsync("div", { key: '3bc4c7d7ef8bca23391ede4b08eb596bab68289a', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '61be38f883222b69807c0e8b8540f6ad20ed0cf4', htmlFor: this.inputId, class: clsx(this.hideLabel && 'visually-hidden') }, hAsync("slot", { key: 'e5ad1f81fc6e98794931b5e6dc811d9cc6aa9c73', name: "label" }, this.label))), (this.description ||
28664
- this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: 'f1f0d41c28be40b24e17d9f6f29224fbb2f9f05e', class: "description" }, hAsync("slot", { key: '5418c3c3195045200e9ad0eb4bc6438eee453fd9', name: "description" }, this.description))))));
27851
+ return (hAsync(Host, { key: 'c4307e84431894271a4fbe3ccd236f8b26d8d499', class: clsx(this.labelPlacement === 'before' && 'label-placement-before') }, hAsync("div", { key: 'edb8c0ba8d92aa3864ff778a037bfb148601663a', class: "input-container" }, hAsync("input", { key: 'f8be6f1936b390acdfaab0a87acea69d479e7a5a', type: "checkbox", id: this.inputId, name: this.name, autocomplete: "off", value: this.value, checked: Boolean(this.checked), disabled: this.disabled || this.readonly, readonly: this.readonly })), hAsync("div", { key: 'c9dae62cda7d33fcd3dc4e1a2fd8173295a32ed3', class: "text-container" }, (this.label || this.el.querySelector('[slot="label"]')) && (hAsync("label", { key: '365ed61ccd3ca72372998b4a3fc58d36de944f3a', htmlFor: this.inputId, class: clsx(this.hideLabel && 'visually-hidden') }, hAsync("slot", { key: '77ee33f84756787e0f34507da294abb9514b703d', name: "label" }, this.label))), (this.description ||
27852
+ this.el.querySelector('[slot="description"]')) && (hAsync("div", { key: '5076c7b3cbf9f820592bb339df3251e280a9be9c', class: "description" }, hAsync("slot", { key: '75f461109ac021aa51e6717ab56b1319a2b7f6ca', name: "description" }, this.description))))));
28665
27853
  }
28666
27854
  static get formAssociated() { return true; }
28667
27855
  get el() { return getElement(this); }
@@ -28737,7 +27925,7 @@ class NvTogglebutton {
28737
27925
  /****************************************************************************/
28738
27926
  //#region RENDER
28739
27927
  render() {
28740
- return (hAsync(Host, { key: '35199476bd724fe4a6b4dde51b7822bed5c374ff', role: "button", tabindex: "0", "aria-pressed": String(this.active), onClick: this.handleClick }, hAsync("slot", { key: '864cf0f2550b66b0b34c4f779086d4b4847732e6' })));
27928
+ return (hAsync(Host, { key: 'ef2adf60f4a453ba0c5c7bd83d3fc52d5c37f5d8', role: "button", tabindex: "0", "aria-pressed": String(this.active), onClick: this.handleClick }, hAsync("slot", { key: '242d30a2d6f3d0cbaba1ee8cfb4abb2e607b66c4' })));
28741
27929
  }
28742
27930
  static get style() { return NvTogglebuttonStyle0; }
28743
27931
  static get cmpMeta() { return {
@@ -28911,7 +28099,7 @@ class NvTogglebuttongroup {
28911
28099
  /****************************************************************************/
28912
28100
  //#region RENDER
28913
28101
  render() {
28914
- return (hAsync(Host, { key: 'b7c5cb46244f10a93330dc601d0347e3cb53c276' }, hAsync("slot", { key: '0808ec94f479f52f60b50ac14ce1a4eb989e5778' })));
28102
+ return (hAsync(Host, { key: '8b42c5392c429b249ccc8be4f97fa6eccf4e2383' }, hAsync("slot", { key: '78046dc23352a3fab760cc3c1b53edc47e16d48b' })));
28915
28103
  }
28916
28104
  get el() { return getElement(this); }
28917
28105
  static get watchers() { return {
@@ -28982,7 +28170,7 @@ class NvTooltip {
28982
28170
  /****************************************************************************/
28983
28171
  //#region RENDER
28984
28172
  render() {
28985
- return (hAsync(Host, { key: 'ff1ca24735ec78d279cdc2f98cb54c0d6a7b4103' }, hAsync("slot", { key: '3e0676a49b957ecb6eb3e0e6bfc1d8d8f0d2e02a' }), hAsync("nv-popover", { key: '063fb414e47a1a6b722ee8b61f3dd68a61c5b7df', triggerMode: "hover", hasArrow: true, placement: this.placement, strategy: this.strategy, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, hAsync("p", { key: 'a8714211a3a5c723d187acdcb23484610bd91a36', slot: "content" }, this.message), hAsync("slot", { key: 'edae83eb3c0f5c57b9b7263ccc139463b044f68e', name: "content" }))));
28173
+ return (hAsync(Host, { key: 'f0560549d1168fed22c4e48a2e11be5dda49f005' }, hAsync("slot", { key: '698227e9bea7ea94eff00ff72f124656ed11624d' }), hAsync("nv-popover", { key: 'df4ddd77e40b4998a32e166710a2ff27a1e0c216', triggerMode: "hover", hasArrow: true, placement: this.placement, strategy: this.strategy, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, hAsync("p", { key: 'b8fc42997671fafc15173bce2fdf7dec667d76e5', slot: "content" }, this.message), hAsync("slot", { key: '5b8a27ff474367ba2e5771deb62137e40f5d911d', name: "content" }))));
28986
28174
  }
28987
28175
  get el() { return getElement(this); }
28988
28176
  static get style() { return NvTooltipStyle0; }
@@ -29040,19 +28228,9 @@ registerComponents([
29040
28228
  NvMenu,
29041
28229
  NvMenuitem,
29042
28230
  NvNotification,
29043
- NvNotificationBullet,
29044
28231
  NvNotificationContainer,
29045
28232
  NvPopover,
29046
28233
  NvRow,
29047
- NvSidebar,
29048
- NvSidebarcontent,
29049
- NvSidebardivider,
29050
- NvSidebarfooter,
29051
- NvSidebargroup,
29052
- NvSidebarheader,
29053
- NvSidebarlogo,
29054
- NvSidebarnavitem,
29055
- NvSidebarnavsubitem,
29056
28234
  NvSplit,
29057
28235
  NvStack,
29058
28236
  NvTable,