@nova-design-system/nova-react 3.22.0 → 3.24.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 (91) hide show
  1. package/dist/cjs/_commonjsHelpers-B85MJLTf-CFO10eej.js +7 -0
  2. package/dist/cjs/{collapse.animation-6e0b08df-AHWzNGm_.js → collapse.animation-DZDm0vSK-C2TOIhIK.js} +3 -3
  3. package/dist/cjs/events.utils-B6GgGra--01N__3wY.js +23 -0
  4. package/dist/cjs/{fade.animation-9b939939-DV--bM4S.js → fade.animation-DcRL9lcm-DAZeHoKN.js} +75 -75
  5. package/dist/cjs/generated/components.server.js +292 -50
  6. package/dist/cjs/{grow.animation-24ad5cf8-LUp_ITEx.js → grow.animation-D7ep_aVl-BuXEDSK-.js} +5 -26
  7. package/dist/cjs/i18n.utils-IlwlcG9l-ku0bScip.js +2494 -0
  8. package/dist/cjs/{index-WPRkQD3O.js → index-kU2nW5aN.js} +12692 -7009
  9. package/dist/cjs/{nv-dialog.entry-CDSK9pUH.js → index.esm-D3eWMME9-CG1TVKfu.js} +1 -296
  10. package/dist/cjs/index.js +15 -1
  11. package/dist/cjs/inputmask-CSo292ul-DlvupPk6.js +3758 -0
  12. package/dist/cjs/{nv-accordion-item.entry-BuTvA6w9.js → nv-accordion-item.entry-Bu1tAcCq.js} +11 -10
  13. package/dist/cjs/{nv-accordion.entry-Dtsfw6He.js → nv-accordion.entry-jWjLdX8w.js} +9 -11
  14. package/dist/cjs/{nv-alert.entry-TIdfdU7Y.js → nv-alert.entry-E9ZJay_K.js} +22 -23
  15. package/dist/cjs/{nv-avatar.entry-CaxrhPuw.js → nv-avatar.entry-CUX7u0kR.js} +11 -11
  16. package/dist/cjs/{nv-badge_2.entry-CfYvTZxX.js → nv-badge_2.entry-bxpV5gxE.js} +24 -24
  17. package/dist/cjs/{nv-breadcrumb.entry-BCZ4MmfD.js → nv-breadcrumb.entry-Cbbb9Qeh.js} +5 -5
  18. package/dist/cjs/{nv-breadcrumbs.entry-DwzCE7F6.js → nv-breadcrumbs.entry-BTqnp9zO.js} +3 -3
  19. package/dist/cjs/{nv-button.entry-Cr_86bcZ.js → nv-button.entry-upWH19y6.js} +12 -14
  20. package/dist/cjs/{nv-buttongroup.entry-CWjRoHY1.js → nv-buttongroup.entry-CuZCRsnV.js} +3 -3
  21. package/dist/cjs/{nv-calendar.entry-CXfwNt6G.js → nv-calendar.entry-CT3mASW6.js} +113 -97
  22. package/dist/cjs/{nv-col.entry-CJLDS3LY.js → nv-col.entry--pCxkaTh.js} +5 -5
  23. package/dist/cjs/{nv-datagrid.entry-Cns8XSud.js → nv-datagrid.entry-CGCEhO8C.js} +80 -85
  24. package/dist/cjs/{nv-datagridcolumn.entry-CFFAipHF.js → nv-datagridcolumn.entry-Fsqc7CT_.js} +2 -1
  25. package/dist/cjs/nv-dialog.entry-B6OYcZxQ.js +300 -0
  26. package/dist/cjs/{nv-dialogfooter_2.entry-To_dGUn4.js → nv-dialogfooter_2.entry-C4fP_n2-.js} +10 -11
  27. package/dist/cjs/nv-drawer.entry-C5O4KvHU.js +445 -0
  28. package/dist/cjs/nv-drawerfooter_2.entry-C-reYJXG.js +146 -0
  29. package/dist/cjs/nv-fieldcheckbox.entry-bk7UNQny.js +177 -0
  30. package/dist/cjs/{nv-fielddate.entry-C3pXtMHL.js → nv-fielddate.entry-dqZDBVmm.js} +89 -46
  31. package/dist/cjs/{nv-fielddaterange.entry-CjVVPEK_.js → nv-fielddaterange.entry-wNRasXky.js} +151 -103
  32. package/dist/cjs/nv-fielddropdown.entry-BA15piWa.js +678 -0
  33. package/dist/cjs/{nv-fielddropdownitem.entry-Dah-PaE8.js → nv-fielddropdownitem.entry-DEWaf9dC.js} +7 -7
  34. package/dist/cjs/{nv-fieldmultiselect.entry-BMLjhqoJ.js → nv-fieldmultiselect.entry-BWY5xOAd.js} +343 -236
  35. package/dist/cjs/nv-fieldnumber.entry-DoYORd0d.js +187 -0
  36. package/dist/cjs/nv-fieldpassword.entry-CPaLj9aD.js +165 -0
  37. package/dist/cjs/{nv-fieldradio.entry-X_2VT1Dj.js → nv-fieldradio.entry-CvUmEaCa.js} +11 -11
  38. package/dist/cjs/{nv-fieldselect.entry-pSp-2rNn.js → nv-fieldselect.entry-uUIZ6hmN.js} +52 -13
  39. package/dist/cjs/{nv-fieldslider.entry-pZf7zzLU.js → nv-fieldslider.entry-DnvmxxYY.js} +16 -31
  40. package/dist/cjs/nv-fieldtext.entry-BYAJp3n_.js +163 -0
  41. package/dist/cjs/{nv-fieldtextarea.entry-t3Ixxi23.js → nv-fieldtextarea.entry-DU2bWYeg.js} +52 -14
  42. package/dist/cjs/{nv-fieldtime.entry-DY7D5_6K.js → nv-fieldtime.entry-DlMNDTht.js} +128 -84
  43. package/dist/cjs/{nv-icon.entry-6oYPSf4c.js → nv-icon.entry-CnUkRzaA.js} +12 -12
  44. package/dist/cjs/{nv-iconbutton_2.entry-ChULGovr.js → nv-iconbutton_2.entry-hqp4AcRq.js} +10 -12
  45. package/dist/cjs/{nv-menu.entry-sd0tatWq.js → nv-menu.entry-Dc_FvIx7.js} +18 -32
  46. package/dist/cjs/{nv-menuitem.entry-CCOqR7UF.js → nv-menuitem.entry-DzMhx6c_.js} +6 -5
  47. package/dist/cjs/nv-notification-bullet.entry-BwhHCMQF.js +76 -0
  48. package/dist/cjs/{nv-notification.entry-Cc3zE3yY.js → nv-notification.entry-C3m5p5BL.js} +42 -128
  49. package/dist/cjs/{nv-notificationcontainer.entry-DV4D6oOH.js → nv-notificationcontainer.entry-DTRNn7VE.js} +4 -4
  50. package/dist/cjs/{nv-popover.entry-DQSwI2jT.js → nv-popover.entry-B0c-2rO4.js} +51 -47
  51. package/dist/cjs/{nv-row.entry-UUuMSAY5.js → nv-row.entry-CdcjVGZv.js} +4 -4
  52. package/dist/cjs/nv-sidebar.entry-CiN813gQ.js +177 -0
  53. package/dist/cjs/nv-sidebarcontent.entry-D9hpAhK8.js +22 -0
  54. package/dist/cjs/nv-sidebardivider.entry-B4EMyca5.js +22 -0
  55. package/dist/cjs/nv-sidebarfooter.entry-CHi4qOFe.js +22 -0
  56. package/dist/cjs/nv-sidebargroup.entry-RVqrsyIU.js +23 -0
  57. package/dist/cjs/nv-sidebarheader.entry-_7ch0O3G.js +22 -0
  58. package/dist/cjs/nv-sidebarlogo.entry-Ch9F-JnT.js +32 -0
  59. package/dist/cjs/nv-sidebarnavitem.entry-DVrafSMr.js +296 -0
  60. package/dist/cjs/nv-sidebarnavsubitem.entry-C0XDAzma.js +35 -0
  61. package/dist/cjs/{nv-split.entry-CYP2bTTM.js → nv-split.entry-0HTslRAX.js} +47 -45
  62. package/dist/cjs/{nv-stack.entry-D35-75Vw.js → nv-stack.entry-CqO7uTQf.js} +5 -5
  63. package/dist/cjs/{nv-table.entry-DevWJBnL.js → nv-table.entry-DH85n8Mc.js} +9 -11
  64. package/dist/cjs/{nv-tableheader.entry-Hs7nUSOC.js → nv-tableheader.entry-CKfocdxD.js} +7 -7
  65. package/dist/cjs/{nv-toggle.entry-Eje9d--6.js → nv-toggle.entry-BHUl76Im.js} +9 -9
  66. package/dist/cjs/nv-togglebutton.entry-D_9COjY-.js +67 -0
  67. package/dist/cjs/{nv-togglebuttongroup.entry-CWN_Ucry.js → nv-togglebuttongroup.entry-C0NLbsq7.js} +10 -8
  68. package/dist/cjs/{nv-tooltip.entry-BGkKDEFg.js → nv-tooltip.entry-BfViGE_U.js} +5 -5
  69. package/dist/cjs/slide.animation-CmH5d1of-BZuw607U.js +90 -0
  70. package/dist/cjs/{style-value-types.es-f5d10b79-D0QCM8OB.js → style-value-types.es-xlgmw4x8-B1vLqX9m.js} +6 -3
  71. package/dist/cjs/{v4-a79185f4-2n0dOd_Y.js → v4-BdYh22OP-C1vaJ4yP.js} +1 -1
  72. package/dist/components/NvDatatable/NvDatatable.js +40 -24
  73. package/dist/generated/components.js +107 -0
  74. package/dist/generated/components.server.js +260 -50
  75. package/dist/providers/NotificationProvider.js +3 -4
  76. package/dist/types/components/NvDatatable/NvDatatable.d.ts +1 -1
  77. package/dist/types/components/NvDatatable/types.d.ts +8 -3
  78. package/dist/types/generated/components.d.ts +46 -0
  79. package/dist/types/generated/components.server.d.ts +46 -0
  80. package/package.json +2 -2
  81. package/dist/cjs/_commonjsHelpers-1789f0cf-BJu3ubxk.js +0 -10
  82. package/dist/cjs/inputmask-edcad3c1-B9Omti4z.js +0 -3749
  83. package/dist/cjs/nv-fieldcheckbox.entry-fdonR07Z.js +0 -138
  84. package/dist/cjs/nv-fielddropdown.entry-C9mXuNNj.js +0 -392
  85. package/dist/cjs/nv-fieldnumber.entry-DBdJviXu.js +0 -148
  86. package/dist/cjs/nv-fieldpassword.entry-Cim_usSM.js +0 -122
  87. package/dist/cjs/nv-fieldtext.entry-DlI_ExaV.js +0 -124
  88. package/dist/cjs/nv-togglebutton.entry-LGI7pIeK.js +0 -56
  89. /package/dist/cjs/{clsx-297c1ffe-BtxeOLZW.js → clsx-ChV9xqsO-BtxeOLZW.js} +0 -0
  90. /package/dist/cjs/{constants-69bafca2-DpB_ghPF.js → constants-BReL3Lsa-DpB_ghPF.js} +0 -0
  91. /package/dist/cjs/{timeline.animation-79215cd4-KteJaZPb.js → timeline.animation-CgHCo_Ho-KteJaZPb.js} +0 -0
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-WPRkQD3O.js');
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
4
5
  require('react');
5
6
  require('react-dom');
6
7
 
7
8
  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}";
8
- const NvNotificationcontainerStyle0 = nvNotificationcontainerCss;
9
9
 
10
10
  const NvNotificationContainer = class {
11
11
  constructor(hostRef) {
@@ -33,9 +33,9 @@ const NvNotificationContainer = class {
33
33
  /****************************************************************************/
34
34
  //#region RENDER
35
35
  render() {
36
- return (index.h(index.Host, { key: 'bf0b7cd02e0d214516f352eb7016d6060d6959c5', class: `position-${this.position}` }, index.h("slot", { key: 'f042e3f11b4d2af4b47aadeba04a332c57889616' })));
36
+ return (index.h(index.Host, { key: '5dee0dc22cb8917d8134e2f256996118e3e30b42', class: `position-${this.position}` }, index.h("slot", { key: '14664d70fb1840877d80eda1b3c7804457ffa67f' })));
37
37
  }
38
38
  };
39
- NvNotificationContainer.style = NvNotificationcontainerStyle0;
39
+ NvNotificationContainer.style = nvNotificationcontainerCss;
40
40
 
41
41
  exports.nv_notificationcontainer = NvNotificationContainer;
@@ -1,12 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-WPRkQD3O.js');
4
- var fade_animation9b939939 = require('./fade.animation-9b939939-DV--bM4S.js');
5
- var grow_animation24ad5cf8 = require('./grow.animation-24ad5cf8-LUp_ITEx.js');
6
- require('./style-value-types.es-f5d10b79-D0QCM8OB.js');
3
+ var index = require('./index-kU2nW5aN.js');
4
+ var fade_animationDcRL9lcm = require('./fade.animation-DcRL9lcm-DAZeHoKN.js');
5
+ var grow_animationD7ep_aVl = require('./grow.animation-D7ep_aVl-BuXEDSK-.js');
6
+ require('./style-value-types.es-xlgmw4x8-B1vLqX9m.js');
7
+ var events_utilsB6GgGra_ = require('./events.utils-B6GgGra--01N__3wY.js');
8
+ require('@stencil/react-output-target/runtime');
7
9
  require('react');
8
10
  require('react-dom');
9
11
 
12
+ /**
13
+ * Custom positioning reference element.
14
+ * @see https://floating-ui.com/docs/virtual-elements
15
+ */
16
+
10
17
  const min = Math.min;
11
18
  const max = Math.max;
12
19
  const round = Math.round;
@@ -843,7 +850,6 @@ function getOverflowAncestors(node, list, traverseIframes) {
843
850
  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
844
851
  const win = getWindow(scrollableAncestor);
845
852
  if (isBody) {
846
- getFrameElement(win);
847
853
  return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], []);
848
854
  }
849
855
  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));
@@ -1409,7 +1415,7 @@ const cleanupElements = debounce((map) => {
1409
1415
  for (let key of map.keys()) {
1410
1416
  map.set(key, map.get(key).filter(isConnected));
1411
1417
  }
1412
- }, 2000);
1418
+ }, 2_000);
1413
1419
  const stencilSubscription = () => {
1414
1420
  if (typeof index.getRenderingRef !== 'function') {
1415
1421
  // If we are not in a stencil project, we do nothing.
@@ -1442,18 +1448,19 @@ const stencilSubscription = () => {
1442
1448
  const unwrap = (val) => (typeof val === 'function' ? val() : val);
1443
1449
  const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {
1444
1450
  const unwrappedState = unwrap(defaultState);
1445
- let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));
1451
+ let states = new Map(Object.entries(unwrappedState ?? {}));
1446
1452
  const handlers = {
1447
1453
  dispose: [],
1448
1454
  get: [],
1449
1455
  set: [],
1450
1456
  reset: [],
1451
1457
  };
1458
+ // Track onChange listeners to enable removeListener functionality
1459
+ const changeListeners = new Map();
1452
1460
  const reset = () => {
1453
- var _a;
1454
1461
  // When resetting the state, the default state may be a function - unwrap it to invoke it.
1455
1462
  // otherwise, the state won't be properly reset
1456
- states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));
1463
+ states = new Map(Object.entries(unwrap(defaultState) ?? {}));
1457
1464
  handlers.reset.forEach((cb) => cb());
1458
1465
  };
1459
1466
  const dispose = () => {
@@ -1503,17 +1510,21 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
1503
1510
  };
1504
1511
  };
1505
1512
  const onChange = (propName, cb) => {
1506
- const unSet = on('set', (key, newValue) => {
1513
+ const setHandler = (key, newValue) => {
1507
1514
  if (key === propName) {
1508
1515
  cb(newValue);
1509
1516
  }
1510
- });
1511
- // We need to unwrap the defaultState because it might be a function.
1512
- // Otherwise we might not be sending the right reset value.
1513
- const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));
1517
+ };
1518
+ const resetHandler = () => cb(unwrap(defaultState)[propName]);
1519
+ // Register the handlers
1520
+ const unSet = on('set', setHandler);
1521
+ const unReset = on('reset', resetHandler);
1522
+ // Track the relationship between the user callback and internal handlers
1523
+ changeListeners.set(cb, { setHandler, resetHandler, propName });
1514
1524
  return () => {
1515
1525
  unSet();
1516
1526
  unReset();
1527
+ changeListeners.delete(cb);
1517
1528
  };
1518
1529
  };
1519
1530
  const use = (...subscriptions) => {
@@ -1538,6 +1549,15 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
1538
1549
  const oldValue = states.get(key);
1539
1550
  handlers.set.forEach((cb) => cb(key, oldValue, oldValue));
1540
1551
  };
1552
+ const removeListener = (propName, listener) => {
1553
+ const listenerInfo = changeListeners.get(listener);
1554
+ if (listenerInfo && listenerInfo.propName === propName) {
1555
+ // Remove the specific handlers that were created for this listener
1556
+ removeFromArray(handlers.set, listenerInfo.setHandler);
1557
+ removeFromArray(handlers.reset, listenerInfo.resetHandler);
1558
+ changeListeners.delete(listener);
1559
+ }
1560
+ };
1541
1561
  return {
1542
1562
  state,
1543
1563
  get,
@@ -1548,6 +1568,7 @@ const createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) =>
1548
1568
  dispose,
1549
1569
  reset,
1550
1570
  forceUpdate,
1571
+ removeListener,
1551
1572
  };
1552
1573
  };
1553
1574
  const removeFromArray = (array, item) => {
@@ -1565,7 +1586,6 @@ const createStore = (defaultState, shouldUpdate) => {
1565
1586
  };
1566
1587
 
1567
1588
  const nvPopoverCss = "nv-popover{display:inline-block;position:relative}nv-popover:has([fluid]:not([fluid=false])){display:block}nv-popover[strategy=fixed]{position:static}nv-popover>[data-scope=popover]{width:max-content;background-color:var(--components-popover-background);border-color:var(--components-popover-border);font-weight:var(--font-weight-medium-emphasis);border-width:1px;border-style:solid;border-radius:var(--popover-radius);padding:var(--popover-padding-y) var(--popover-padding-x);position:absolute;top:0;left:0;z-index:1;box-shadow:var(--popover-shadow-1-x) var(--popover-shadow-1-y) var(--popover-shadow-1-blur) -2px var(--popover-shadow-1-opacity), var(--popover-shadow-2-x) var(--popover-shadow-2-y) var(--popover-shadow-2-blur) var(--shadow-spread-lg-2) var(--popover-shadow-2-opacity)}nv-popover>[data-scope=popover][hidden]:not([hidden=false]){display:none}nv-popover>[data-scope=popover][data-strategy=fixed]{position:fixed;z-index:9999}nv-popover>[data-scope=popover]>[data-scope=arrow]{background-color:var(--components-popover-background);position:absolute;border-color:var(--components-popover-border);border-width:1px;border-style:solid;border-bottom-color:transparent;border-right-color:transparent;width:8px;height:8px;transform:rotate(45deg);border-radius:1px}nv-popover>[data-scope=popover]>[slot=content]{position:relative;z-index:1}nv-popover>slot-fb{display:none}";
1568
- const NvPopoverStyle0 = nvPopoverCss;
1569
1589
 
1570
1590
  const { state } = createStore({
1571
1591
  groups: new Map(),
@@ -1573,7 +1593,7 @@ const { state } = createStore({
1573
1593
  const NvPopover = class {
1574
1594
  constructor(hostRef) {
1575
1595
  index.registerInstance(this, hostRef);
1576
- this.openChanged = index.createEvent(this, "openChanged");
1596
+ this.openChanged = index.createEvent(this, "openChanged", 3);
1577
1597
  this.eventsAttached = false;
1578
1598
  this.isAnimating = false;
1579
1599
  this.clickEvents = [
@@ -1680,11 +1700,10 @@ const NvPopover = class {
1680
1700
  * @param {MouseEvent | TouchEvent} event - The event object.
1681
1701
  */
1682
1702
  this.handleClickOutside = (event) => {
1683
- var _a;
1684
1703
  // This popover should close when the user clicks outside of it.
1685
1704
  if (this.el.contains(event.target))
1686
1705
  return;
1687
- if ((_a = this.triggerElement) === null || _a === void 0 ? void 0 : _a.contains(event.target))
1706
+ if (this.triggerElement?.contains(event.target))
1688
1707
  return;
1689
1708
  this.open = false;
1690
1709
  };
@@ -1724,14 +1743,14 @@ const NvPopover = class {
1724
1743
  */
1725
1744
  attachEventListeners() {
1726
1745
  if (this.triggerElement && !this.eventsAttached) {
1727
- grow_animation24ad5cf8.addEventListeners(this.closeEvents, document, this);
1746
+ events_utilsB6GgGra_.addEventListeners(this.closeEvents, document, this);
1728
1747
  if (this.triggerMode === 'click') {
1729
- grow_animation24ad5cf8.addEventListeners(this.clickEvents, this.triggerElement, this);
1748
+ events_utilsB6GgGra_.addEventListeners(this.clickEvents, this.triggerElement, this);
1730
1749
  // Add document click and touch listeners
1731
- grow_animation24ad5cf8.addEventListeners(this.outsideClickEvents, document, this);
1750
+ events_utilsB6GgGra_.addEventListeners(this.outsideClickEvents, document, this);
1732
1751
  }
1733
1752
  if (this.triggerMode === 'hover') {
1734
- grow_animation24ad5cf8.addEventListeners(this.hoverEvents, this.triggerElement, this);
1753
+ events_utilsB6GgGra_.addEventListeners(this.hoverEvents, this.triggerElement, this);
1735
1754
  }
1736
1755
  this.eventsAttached = true;
1737
1756
  }
@@ -1806,11 +1825,11 @@ const NvPopover = class {
1806
1825
  state.groups.delete(this.groupName);
1807
1826
  if (this.groupName && open)
1808
1827
  state.groups.set(this.groupName, { openedBy: this.el });
1809
- const { growIn } = grow_animation24ad5cf8.useGrow(this.popoverElement, {
1828
+ const { growIn } = grow_animationD7ep_aVl.useGrow(this.popoverElement, {
1810
1829
  duration: isOtherMemberOpen ? 0 : 100,
1811
1830
  amount: 0.85,
1812
1831
  });
1813
- const { fadeOut } = fade_animation9b939939.useFade(this.popoverElement, {
1832
+ const { fadeOut } = fade_animationDcRL9lcm.useFade(this.popoverElement, {
1814
1833
  duration: isOtherMemberOpen ? 0 : 100,
1815
1834
  });
1816
1835
  if (open === true) {
@@ -1832,21 +1851,6 @@ const NvPopover = class {
1832
1851
  }
1833
1852
  //#endregion WATCHERS
1834
1853
  /****************************************************************************/
1835
- //#region LISTENERS
1836
- handleOpenChanged(event) {
1837
- var _a;
1838
- if (this.triggerMode === 'controlled')
1839
- return;
1840
- if (this.nested)
1841
- return;
1842
- if ((_a = event.target) === null || _a === void 0 ? void 0 : _a.hasAttribute('nested'))
1843
- return;
1844
- // This popover should close when another one is opened.
1845
- if (event.target !== this.el && event.detail === true)
1846
- this.open = false;
1847
- }
1848
- //#endregion LISTENERS
1849
- /****************************************************************************/
1850
1854
  //#region LIFECYCLE
1851
1855
  componentWillLoad() {
1852
1856
  if (!this.triggerElement)
@@ -1858,11 +1862,11 @@ const NvPopover = class {
1858
1862
  componentDidLoad() {
1859
1863
  // Initial inline style setup
1860
1864
  if (!this.open) {
1861
- const { setGrowOut } = grow_animation24ad5cf8.useGrow(this.popoverElement);
1865
+ const { setGrowOut } = grow_animationD7ep_aVl.useGrow(this.popoverElement);
1862
1866
  setGrowOut();
1863
1867
  }
1864
1868
  else {
1865
- const { setFadeIn } = fade_animation9b939939.useFade(this.popoverElement);
1869
+ const { setFadeIn } = fade_animationDcRL9lcm.useFade(this.popoverElement);
1866
1870
  setFadeIn();
1867
1871
  this.popoverElement.removeAttribute('hidden');
1868
1872
  }
@@ -1870,14 +1874,14 @@ const NvPopover = class {
1870
1874
  this.attachEventListeners();
1871
1875
  }
1872
1876
  disconnectedCallback() {
1873
- grow_animation24ad5cf8.removeEventListeners(this.closeEvents, document, this);
1877
+ events_utilsB6GgGra_.removeEventListeners(this.closeEvents, document, this);
1874
1878
  if (this.triggerMode === 'click') {
1875
- grow_animation24ad5cf8.removeEventListeners(this.clickEvents, this.triggerElement, this);
1879
+ events_utilsB6GgGra_.removeEventListeners(this.clickEvents, this.triggerElement, this);
1876
1880
  // Remove document listeners
1877
- grow_animation24ad5cf8.removeEventListeners(this.outsideClickEvents, document, this);
1881
+ events_utilsB6GgGra_.removeEventListeners(this.outsideClickEvents, document, this);
1878
1882
  }
1879
1883
  if (this.triggerMode === 'hover')
1880
- grow_animation24ad5cf8.removeEventListeners(this.hoverEvents, this.triggerElement, this);
1884
+ events_utilsB6GgGra_.removeEventListeners(this.hoverEvents, this.triggerElement, this);
1881
1885
  // Reset flag so events can be reattached if component is reconnected
1882
1886
  this.eventsAttached = false;
1883
1887
  // Clean up any pending timeouts
@@ -1890,7 +1894,7 @@ const NvPopover = class {
1890
1894
  /****************************************************************************/
1891
1895
  //#region RENDER
1892
1896
  render() {
1893
- return (index.h(index.Host, { key: 'c54fc90b90bbe48b0410c750bf4ba97e51eb24e5' }, index.h("slot", { key: 'd957fba61d4e91d8afd85f14b602290c88e5128a', name: "trigger" }), index.h("div", { key: '548c798fc047d41c06d8a84cc9a4f65a4cbf75b5', "data-scope": "popover", "data-strategy": this.strategy, hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (index.h("div", { key: 'd3c6e110e2c3f45ba0ed5c69b99f0a60413cbb39', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), index.h("slot", { key: '20c2d8e3ff0ed3d3b9957513e19586e4aa4a39ca', name: "content" }))));
1897
+ return (index.h(index.Host, { key: '3505c77a628a1c612d937703777b72459a71e256' }, index.h("slot", { key: '36596c5ca1b182ed5d9f723b81398cf54923bd83', name: "trigger" }), index.h("div", { key: 'efc6da5c69cefad2611f0b9fa96d072ddc48d07a', "data-scope": "popover", "data-strategy": this.strategy, hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (index.h("div", { key: '9439cf1c7fdadfd9538c4ed186d4c54300d00e95', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), index.h("slot", { key: '868cd1ce1ac648f4446aa6d4f86069551c208d1f', name: "content" }))));
1894
1898
  }
1895
1899
  get el() { return index.getElement(this); }
1896
1900
  static get watchers() { return {
@@ -1898,6 +1902,6 @@ const NvPopover = class {
1898
1902
  "strategy": ["handleStrategyChange"]
1899
1903
  }; }
1900
1904
  };
1901
- NvPopover.style = NvPopoverStyle0;
1905
+ NvPopover.style = nvPopoverCss;
1902
1906
 
1903
1907
  exports.nv_popover = NvPopover;
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-WPRkQD3O.js');
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
4
5
  require('react');
5
6
  require('react-dom');
6
7
 
7
8
  const nvRowCss = "nv-row{display:flex;flex-wrap:wrap;margin-right:calc(var(--spacing-4) * -1);margin-left:calc(var(--spacing-4) * -1);row-gap:var(--spacing-4)}";
8
- const NvRowStyle0 = nvRowCss;
9
9
 
10
10
  const NvRow = class {
11
11
  constructor(hostRef) {
@@ -14,9 +14,9 @@ const NvRow = class {
14
14
  /****************************************************************************/
15
15
  //#region RENDER
16
16
  render() {
17
- return (index.h(index.Host, { key: '8415bdad0106bd3d836996c617a749294e0c19e2' }, index.h("slot", { key: '77c069ced0dc25c4169945877c388f30d27fdc4f' })));
17
+ return (index.h(index.Host, { key: 'fda91377821b426a6cbc6ade6f253144a388fb62' }, index.h("slot", { key: '5d7cc9aa4d4ad0b251aa5c028adfddade4e4d1c4' })));
18
18
  }
19
19
  };
20
- NvRow.style = NvRowStyle0;
20
+ NvRow.style = nvRowCss;
21
21
 
22
22
  exports.nv_row = NvRow;
@@ -0,0 +1,177 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
5
+ require('react');
6
+ require('react-dom');
7
+
8
+ 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(--components-sidebar-background);border-right:var(--sidebar-divider-size) solid var(--components-sidebar-border);transition:width 0.3s ease;width:var(--sidebar-width)}nv-sidebar[collapsed]{width:var(--sidebar-width-collapsed)}nv-sidebar[collapsed] [data-hide-on-collapsed]{display:none !important}nv-sidebar[collapsed] .nv-sidebar-container{padding:var(--sidebar-padding-y) var(--sidebar-padding-x-collapsed)}nv-sidebar .nv-sidebar-container{display:flex;flex-direction:column;flex:1;overflow:hidden;padding:var(--sidebar-padding-y) var(--sidebar-padding-x);gap:var(--sidebar-gap-y)}nv-sidebar .nv-sidebar-toggle{position:absolute;top:var(--sidebar-collapsible-button-position-top);right:calc(-1 * var(--sidebar-collapsible-button-position-right));display:flex;align-items:center;justify-content:center;padding:var(--sidebar-collapsible-button-padding);background-color:var(--components-sidebar-background);border:1px 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-interaction-container-neutral-background-hover)}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)}nv-sidebar .nv-sidebar-toggle nv-icon:hover{color:var(--color-interaction-container-neutral-icon-hover)}";
9
+
10
+ const NvSidebar = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ this.openChanged = index.createEvent(this, "openChanged", 3);
14
+ /****************************************************************************/
15
+ //#region PROPERTIES
16
+ /**
17
+ * The type of sidebar behavior.
18
+ * - collapsible: Can be toggled open/closed
19
+ * - persistent: Always visible
20
+ */
21
+ this.type = 'persistent';
22
+ /**
23
+ * Whether the sidebar is currently open (only applies to collapsible type).
24
+ */
25
+ // eslint-disable-next-line @stencil-community/ban-default-true
26
+ this.open = true;
27
+ /**
28
+ * Determines the type of notification bullets in the sidebar.
29
+ * - neutral: Uses neutral colors (gray)
30
+ * - brand: Uses brand colors (orange/teal depending on theme)
31
+ */
32
+ this.notificationIntention = 'brand';
33
+ /**
34
+ * Determines the emphasis of notification bullets in the sidebar.
35
+ * - high: More prominent appearance
36
+ * - low: Less prominent appearance
37
+ */
38
+ this.notificationEmphasis = 'high';
39
+ //#endregion EVENTS
40
+ /****************************************************************************/
41
+ //#region METHODS
42
+ this.handleToggle = () => {
43
+ if (this.type === 'collapsible') {
44
+ // Changing open will trigger @Watch which emits the event
45
+ this.open = !this.open;
46
+ }
47
+ };
48
+ /**
49
+ * Sets the active state of navigation items based on activePath
50
+ */
51
+ this.setActiveNavItems = () => {
52
+ if (!this.activePath)
53
+ return;
54
+ // First, check all subitems to find if any matches exactly
55
+ const activeSubitemHrefs = new Set();
56
+ this.el.querySelectorAll('nv-sidebarnavsubitem').forEach(subItem => {
57
+ const link = subItem.querySelector('a');
58
+ const href = link?.getAttribute('href');
59
+ if (href) {
60
+ const isActive = this.activePath === href;
61
+ subItem.active = isActive;
62
+ if (isActive) {
63
+ activeSubitemHrefs.add(href);
64
+ }
65
+ }
66
+ });
67
+ // Then, set nav items active only if:
68
+ // 1. Exact match with activePath AND no subitem matches
69
+ // 2. OR the navitem has no subitems and activePath starts with its href
70
+ this.el.querySelectorAll('nv-sidebarnavitem').forEach(navItem => {
71
+ const link = navItem.querySelector(':scope > a, :scope > .nv-sidebarnavitem-trigger a, .nv-sidebarnavitem-content > a');
72
+ const href = link?.getAttribute('href');
73
+ const hasSubitems = navItem.querySelector('nv-sidebarnavsubitem') !== null;
74
+ if (href) {
75
+ if (hasSubitems) {
76
+ // Parent with subitems: only active if exact match (not when subitem is active)
77
+ navItem.active = this.activePath === href;
78
+ }
79
+ else {
80
+ // Item without subitems: active on exact match
81
+ navItem.active = this.activePath === href;
82
+ }
83
+ }
84
+ });
85
+ };
86
+ this.pendingActiveUpdate = null;
87
+ /**
88
+ * Sets up the MutationObserver to watch for changes in child elements.
89
+ * Only triggers on new nav items being added, not on attribute changes.
90
+ */
91
+ this.setupMutationObserver = () => {
92
+ this.mutationObserver = new MutationObserver(mutations => {
93
+ // Only react to new nav items being added, ignore other mutations
94
+ const hasNewNavItems = mutations.some(mutation => {
95
+ if (mutation.type !== 'childList')
96
+ return false;
97
+ return Array.from(mutation.addedNodes).some(node => {
98
+ if (node.nodeType !== Node.ELEMENT_NODE)
99
+ return false;
100
+ const el = node;
101
+ return (el.tagName.toLowerCase() === 'nv-sidebarnavitem' ||
102
+ el.tagName.toLowerCase() === 'nv-sidebarnavsubitem' ||
103
+ el.querySelector('nv-sidebarnavitem, nv-sidebarnavsubitem'));
104
+ });
105
+ });
106
+ if (hasNewNavItems) {
107
+ // Debounce to prevent multiple rapid calls
108
+ if (this.pendingActiveUpdate) {
109
+ clearTimeout(this.pendingActiveUpdate);
110
+ }
111
+ this.pendingActiveUpdate = window.setTimeout(() => {
112
+ this.setActiveNavItems();
113
+ this.pendingActiveUpdate = null;
114
+ }, 50);
115
+ }
116
+ });
117
+ this.mutationObserver.observe(this.el, {
118
+ childList: true,
119
+ subtree: true,
120
+ });
121
+ };
122
+ }
123
+ handleCollapsedSideEffects(isCollapsed) {
124
+ if (!isCollapsed) {
125
+ return;
126
+ }
127
+ this.el.querySelectorAll('nv-sidebarnavitem[open]').forEach(navItem => {
128
+ navItem.open = false;
129
+ });
130
+ }
131
+ //#endregion METHODS
132
+ /****************************************************************************/
133
+ //#region WATCHERS
134
+ onActivePathChanged() {
135
+ this.setActiveNavItems();
136
+ }
137
+ onOpenChanged(newValue, oldValue) {
138
+ this.handleCollapsedSideEffects(this.type === 'collapsible' && !newValue);
139
+ // Only emit event when open state actually changes (not on re-render with same value)
140
+ if (this.type === 'collapsible' && newValue !== oldValue) {
141
+ this.openChanged.emit(newValue);
142
+ }
143
+ }
144
+ //#endregion WATCHERS
145
+ /****************************************************************************/
146
+ //#region LIFECYCLE
147
+ componentWillLoad() {
148
+ this.setActiveNavItems();
149
+ this.setupMutationObserver();
150
+ this.handleCollapsedSideEffects(this.type === 'collapsible' && !this.open);
151
+ }
152
+ disconnectedCallback() {
153
+ if (this.mutationObserver) {
154
+ this.mutationObserver.disconnect();
155
+ }
156
+ if (this.pendingActiveUpdate) {
157
+ clearTimeout(this.pendingActiveUpdate);
158
+ }
159
+ }
160
+ //#endregion LIFECYCLE
161
+ /****************************************************************************/
162
+ //#region RENDER
163
+ render() {
164
+ const isCollapsed = this.type === 'collapsible' && !this.open;
165
+ return (index.h(index.Host, { key: 'ac14d7b4027c06d1aa19b1b6c7de3f0d2e231b1a', role: "navigation", collapsed: isCollapsed ? true : undefined, "notification-intention": this.notificationIntention, "notification-emphasis": this.notificationEmphasis, "aria-expanded": this.type === 'collapsible' ? String(this.open) : undefined }, index.h("div", { key: 'e567303c87a2308747290fae95d7ade9971cd67a', class: "nv-sidebar-container" }, index.h("slot", { key: '0b2e0e1b1721aae3c0f910500bde3c2db92f879b' })), this.type === 'collapsible' && (index.h("button", { key: '493204449f3bb9aedd5a34cb238242aadd61324b', class: "nv-sidebar-toggle", onClick: this.handleToggle, "aria-label": this.open ? 'Collapse sidebar' : 'Expand sidebar' }, index.h("nv-icon", { key: '0e389c1c6c92f02f7c1e39fc07ef17a469b1e0f2', name: this.open
166
+ ? 'layout-sidebar-left-collapse'
167
+ : 'layout-sidebar-right-collapse', size: "sm" })))));
168
+ }
169
+ get el() { return index.getElement(this); }
170
+ static get watchers() { return {
171
+ "activePath": ["onActivePathChanged"],
172
+ "open": ["onOpenChanged"]
173
+ }; }
174
+ };
175
+ NvSidebar.style = nvSidebarCss;
176
+
177
+ exports.nv_sidebar = NvSidebar;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
5
+ require('react');
6
+ require('react-dom');
7
+
8
+ const nvSidebarcontentCss = "nv-sidebarcontent{display:flex;flex-direction:column;flex:1;overflow-y:auto;overflow-x:hidden}";
9
+
10
+ const NvSidebarcontent = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ }
14
+ /****************************************************************************/
15
+ //#region RENDER
16
+ render() {
17
+ return (index.h(index.Host, { key: 'c72a3de4460c4de37c2008ec4d777771d8771d32', role: "list" }, index.h("slot", { key: '8d08c073aebf079dbb9062bb183370e4dc4d9fe8' })));
18
+ }
19
+ };
20
+ NvSidebarcontent.style = nvSidebarcontentCss;
21
+
22
+ exports.nv_sidebarcontent = NvSidebarcontent;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
5
+ require('react');
6
+ require('react-dom');
7
+
8
+ const nvSidebardividerCss = "nv-sidebardivider{display:block;height:var(--sidebar-divider-size);background-color:var(--components-sidebar-divider)}";
9
+
10
+ const NvSidebardivider = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ }
14
+ /****************************************************************************/
15
+ //#region RENDER
16
+ render() {
17
+ return index.h(index.Host, { key: '157045ee7209aa55574c54c2392f1e53d6cdba1e', role: "separator", "aria-orientation": "horizontal" });
18
+ }
19
+ };
20
+ NvSidebardivider.style = nvSidebardividerCss;
21
+
22
+ exports.nv_sidebardivider = NvSidebardivider;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
5
+ require('react');
6
+ require('react-dom');
7
+
8
+ const nvSidebarfooterCss = "nv-sidebarfooter{display:block;margin-top:auto}";
9
+
10
+ const NvSidebarfooter = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ }
14
+ /****************************************************************************/
15
+ //#region RENDER
16
+ render() {
17
+ return (index.h(index.Host, { key: 'be19b80fc56a296999532d986d477dcbd817a9f2' }, index.h("slot", { key: '55b3e91dab40b923d67eb140be42fd2483951254' })));
18
+ }
19
+ };
20
+ NvSidebarfooter.style = nvSidebarfooterCss;
21
+
22
+ exports.nv_sidebarfooter = NvSidebarfooter;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
5
+ require('react');
6
+ require('react-dom');
7
+
8
+ const nvSidebargroupCss = "nv-sidebargroup{display:flex;flex-direction:column;gap:var(--sidebar-group-gap-y)}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-title-padding-y) var(--sidebar-title-padding-x)}nv-sidebar[collapsed] nv-sidebargroup .nv-sidebargroup-label{display:none}";
9
+
10
+ const NvSidebargroup = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ }
14
+ //#endregion PROPERTIES
15
+ /****************************************************************************/
16
+ //#region RENDER
17
+ render() {
18
+ return (index.h(index.Host, { key: '64b17f621fef826a4105dfa39fbc57013bad0abc', role: "group", "aria-label": this.label }, this.label && index.h("div", { key: '48e36725296ecc87da7d15606977fbe616dd4aa3', class: "nv-sidebargroup-label" }, this.label), index.h("slot", { key: '61aaf8541e9372220df24dcf9cf0b5b43e22e19b' })));
19
+ }
20
+ };
21
+ NvSidebargroup.style = nvSidebargroupCss;
22
+
23
+ exports.nv_sidebargroup = NvSidebargroup;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
5
+ require('react');
6
+ require('react-dom');
7
+
8
+ const nvSidebarheaderCss = "nv-sidebarheader{display:block}";
9
+
10
+ const NvSidebarheader = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ }
14
+ /****************************************************************************/
15
+ //#region RENDER
16
+ render() {
17
+ return (index.h(index.Host, { key: '2c9c0c109138ed3a23cb8f1a2fb78f29f93a4056' }, index.h("slot", { key: 'a928008023c6ce8a77aafbe0042ec8ed72e9c32d' })));
18
+ }
19
+ };
20
+ NvSidebarheader.style = nvSidebarheaderCss;
21
+
22
+ exports.nv_sidebarheader = NvSidebarheader;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-kU2nW5aN.js');
4
+ require('@stencil/react-output-target/runtime');
5
+ require('react');
6
+ require('react-dom');
7
+
8
+ 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}";
9
+
10
+ const NvSidebarlogo = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ //#endregion PROPERTIES
14
+ /****************************************************************************/
15
+ //#region CONSTANTS
16
+ // Default Nova logo SVG (expanded - icon only, text comes from label prop)
17
+ 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';
18
+ // Default Nova icon (collapsed - same logo but will be displayed smaller)
19
+ 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';
20
+ }
21
+ //#endregion CONSTANTS
22
+ /****************************************************************************/
23
+ //#region RENDER
24
+ render() {
25
+ const logoSrc = this.logo || this.defaultLogo;
26
+ const collapsedLogoSrc = this.collapsedLogo || this.defaultCollapsedLogo;
27
+ return (index.h(index.Host, { key: '0d14763dcb7b1b961f2b32a7be44d8a8116087bb' }, index.h("div", { key: '78c2a6578cc48298aa88baf946954d79d36894db', class: "nv-sidebarlogo-container" }, index.h("img", { key: 'd4dd86b4d4a00bedfab84fd987d46e5e83fcb5a6', src: logoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-full" }), index.h("img", { key: 'c0382d6fb18fbc17a21bb411fde64dcd255f42a5', src: collapsedLogoSrc, alt: this.label || 'Logo', class: "nv-sidebarlogo-collapsed" }), this.label && index.h("span", { key: 'f75152415bb2569698a5cae856c6b26a202f8c7d', class: "nv-sidebarlogo-title" }, this.label))));
28
+ }
29
+ };
30
+ NvSidebarlogo.style = nvSidebarlogoCss;
31
+
32
+ exports.nv_sidebarlogo = NvSidebarlogo;