@nova-design-system/nova-react 3.11.0 → 3.12.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 (51) hide show
  1. package/dist/cjs/{index-9kW3hkgy.js → index-jBgPO7HC.js} +378 -78
  2. package/dist/cjs/index.js +64 -1
  3. package/dist/cjs/{nv-accordion-item.entry-77CmzSqs.js → nv-accordion-item.entry-BUb_Apy8.js} +1 -1
  4. package/dist/cjs/{nv-accordion.entry-DCspxUr-.js → nv-accordion.entry-hi3M0POV.js} +1 -1
  5. package/dist/cjs/{nv-alert.entry-4ATJ67O4.js → nv-alert.entry-nzJu8E5h.js} +8 -8
  6. package/dist/cjs/{nv-avatar.entry-DOI0QFTW.js → nv-avatar.entry-BPp1d-QO.js} +7 -7
  7. package/dist/cjs/{nv-badge_2.entry-h081ah26.js → nv-badge_2.entry-Bk56p4jv.js} +2 -2
  8. package/dist/cjs/{nv-breadcrumb.entry-C6TteX7v.js → nv-breadcrumb.entry-DB3zR7FC.js} +2 -2
  9. package/dist/cjs/{nv-breadcrumbs.entry-CpYRzd4I.js → nv-breadcrumbs.entry-CoGgEsro.js} +1 -1
  10. package/dist/cjs/{nv-button.entry-DUU-LHJM.js → nv-button.entry-psZ3_t6i.js} +8 -8
  11. package/dist/cjs/{nv-buttongroup.entry-BDdi1Z66.js → nv-buttongroup.entry-cNenBx1F.js} +1 -1
  12. package/dist/cjs/{nv-calendar.entry-DMpLDXJG.js → nv-calendar.entry-nkrORr_V.js} +7 -7
  13. package/dist/cjs/{nv-col.entry-WTuI3NnF.js → nv-col.entry-D4mInxLU.js} +1 -1
  14. package/dist/cjs/{nv-datagrid.entry-BXqZFjrC.js → nv-datagrid.entry-D50O7eyc.js} +7 -7
  15. package/dist/cjs/{nv-datagridcolumn.entry-B-M6q2Tk.js → nv-datagridcolumn.entry-BuGX-3ev.js} +1 -1
  16. package/dist/cjs/{nv-dialog.entry-DEM7iOao.js → nv-dialog.entry-yiZIq-TV.js} +3 -3
  17. package/dist/cjs/{nv-dialogfooter_2.entry-B09v2yKV.js → nv-dialogfooter_2.entry-C9ykJQK6.js} +3 -3
  18. package/dist/cjs/{nv-fieldcheckbox.entry-Z5tjeUuU.js → nv-fieldcheckbox.entry-CCRvvFJ3.js} +2 -2
  19. package/dist/cjs/{nv-fielddate.entry-5lSIc9Ek.js → nv-fielddate.entry-C4k6k980.js} +2 -2
  20. package/dist/cjs/{nv-fielddaterange.entry-CuhBqqML.js → nv-fielddaterange.entry-BhfV2KCd.js} +2 -2
  21. package/dist/cjs/{nv-fielddropdown.entry-BFFr0ATC.js → nv-fielddropdown.entry-Xkkvl_gb.js} +2 -2
  22. package/dist/cjs/{nv-fielddropdownitem.entry-BugR9GTU.js → nv-fielddropdownitem.entry-Ckwq6k6r.js} +1 -1
  23. package/dist/cjs/{nv-fieldmultiselect.entry-S7ur1tcN.js → nv-fieldmultiselect.entry-D4PgRSFv.js} +2 -2
  24. package/dist/cjs/{nv-fieldnumber.entry-BMpv7Xab.js → nv-fieldnumber.entry-BEnJ81XX.js} +2 -2
  25. package/dist/cjs/{nv-fieldpassword.entry-B5WsGvF8.js → nv-fieldpassword.entry-elzveqP8.js} +2 -2
  26. package/dist/cjs/{nv-fieldradio.entry-BhojWkU4.js → nv-fieldradio.entry-xJpdsXGo.js} +2 -2
  27. package/dist/cjs/{nv-fieldselect.entry-CCM3U7mj.js → nv-fieldselect.entry-DVyO7LMD.js} +2 -2
  28. package/dist/cjs/{nv-fieldslider.entry-XQRuw_C-.js → nv-fieldslider.entry-O4TFO-Rl.js} +1 -1
  29. package/dist/cjs/{nv-fieldtext.entry-DtgMcL9y.js → nv-fieldtext.entry-p-9GEp1g.js} +1 -1
  30. package/dist/cjs/{nv-fieldtextarea.entry-BF4luAgA.js → nv-fieldtextarea.entry-Cvik8cci.js} +1 -1
  31. package/dist/cjs/{nv-fieldtime.entry-DyP6QWzm.js → nv-fieldtime.entry-mnsDon9M.js} +61 -61
  32. package/dist/cjs/nv-icon.entry-CrgnozDL.js +79 -0
  33. package/dist/cjs/{nv-iconbutton_2.entry-DlLquYC0.js → nv-iconbutton_2.entry-M5EY3-1s.js} +2 -2
  34. package/dist/cjs/{nv-menu.entry-Dj2paHp_.js → nv-menu.entry-D7bORqXp.js} +1 -1
  35. package/dist/cjs/{nv-menuitem.entry-DbV-21bC.js → nv-menuitem.entry-CaN6qNoB.js} +1 -1
  36. package/dist/cjs/{nv-popover.entry-mefWRuFR.js → nv-popover.entry-DGeXSyhZ.js} +22 -5
  37. package/dist/cjs/{nv-row.entry-Ds7BSvjO.js → nv-row.entry-B17DsCjM.js} +1 -1
  38. package/dist/cjs/{nv-stack.entry-vlegAAKj.js → nv-stack.entry-Dv3YU4nJ.js} +1 -1
  39. package/dist/cjs/{nv-table.entry-CiZvYc93.js → nv-table.entry-BILyG-43.js} +1 -1
  40. package/dist/cjs/{nv-tablecolumn.entry-ChUzCWVu.js → nv-tablecolumn.entry-II6Z_gdO.js} +1 -1
  41. package/dist/cjs/{nv-toggle.entry-CLY7TxJv.js → nv-toggle.entry-5Wmww2Cd.js} +2 -2
  42. package/dist/cjs/nv-togglebutton.entry-Dnmfrj0O.js +55 -0
  43. package/dist/cjs/{nv-togglebuttongroup.entry-JZNZk6j2.js → nv-togglebuttongroup.entry-C9mplQcb.js} +1 -1
  44. package/dist/cjs/{nv-tooltip.entry-BhwdNKUk.js → nv-tooltip.entry-CcUQrjAv.js} +12 -3
  45. package/dist/generated/components.server.js +3 -1
  46. package/dist/index.js +1 -0
  47. package/dist/types/index.d.ts +1 -0
  48. package/package.json +4 -2
  49. package/dist/cjs/nv-icon.entry-DlnsNiSG.js +0 -79
  50. package/dist/cjs/nv-togglebutton.entry-C6dUap1P.js +0 -55
  51. /package/dist/cjs/{constants-23aaef7b-Cj2b-su0.js → constants-a857c476-Cj2b-su0.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  require('react');
5
5
 
6
6
  const nvMenuCss = "nv-menuitem{display:flex;align-items:center;max-width:300px;width:100vw;font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);gap:var(--menu-contextual-item-gap-x);padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);transition:background-color 150ms ease-out;cursor:pointer}nv-menuitem:hover,nv-menuitem:focus,nv-menuitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menuitem *{pointer-events:none}nv-menuitem kbd{color:var(--components-menu-contextual-item-shortcut)}nv-menuitem [data-scope=text]{margin-right:auto}nv-menuitem[disabled]:not([disabled=false]){cursor:unset;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-menu{display:inline-block;position:relative}nv-menu:has([fluid]:not([fluid=false])){display:block}nv-menu nv-popover{display:unset}nv-menu nv-popover [data-scope=popover]{background-color:transparent !important;padding:0 !important}nv-menu [slot=content]{padding:var(--menu-contextual-padding-y) var(--menu-contextual-padding-x);border-radius:var(--menu-contextual-radius);gap:var(--menu-contextual-gap-y);background-color:var(--components-menu-contextual-background);border-color:var(--components-menu-contextual-border);display:flex;flex-direction:column}nv-menu nv-menu[open]:not([open=false])>nv-menuitem{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menu hr{display:block;margin:var(--menu-contextual-divider-padding-top) var(--menu-contextual-divider-padding-x) var(--menu-contextual-divider-padding-bottom) var(--menu-contextual-divider-padding-x)}";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  require('react');
5
5
 
6
6
  const nvMenuitemCss = "nv-menuitem{display:flex;align-items:center;max-width:300px;width:100vw;font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);gap:var(--menu-contextual-item-gap-x);padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);transition:background-color 150ms ease-out;cursor:pointer}nv-menuitem:hover,nv-menuitem:focus,nv-menuitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menuitem *{pointer-events:none}nv-menuitem kbd{color:var(--components-menu-contextual-item-shortcut)}nv-menuitem [data-scope=text]{margin-right:auto}nv-menuitem[disabled]:not([disabled=false]){cursor:unset;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  var stylefire_es74da334a = require('./stylefire.es-74da334a-y0piPjlz.js');
5
5
  var fade_animation71e8e34c = require('./fade.animation-71e8e34c-BAw_TYsB.js');
6
6
  var events_utilsFe1d907f = require('./events.utils-fe1d907f-01N__3wY.js');
@@ -1647,7 +1647,7 @@ const createStore = (defaultState, shouldUpdate) => {
1647
1647
  return map;
1648
1648
  };
1649
1649
 
1650
- const nvPopoverCss = "nv-popover{display:inline-block;position:relative}nv-popover:has([fluid]:not([fluid=false])){display:block}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-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}";
1650
+ 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}";
1651
1651
  const NvPopoverStyle0 = nvPopoverCss;
1652
1652
 
1653
1653
  const { state } = createStore({
@@ -1675,6 +1675,15 @@ const NvPopover = class {
1675
1675
  * Defines where the popover appears relative to the trigger.
1676
1676
  */
1677
1677
  this.placement = 'bottom';
1678
+ /**
1679
+ * Sets the positioning strategy for the popover. Options include:
1680
+ * - `absolute`: Positions the popover relative to the trigger element
1681
+ * (default).
1682
+ * - `fixed`: Positions the popover relative to the viewport, useful when you
1683
+ * need the popover to break out of overflow hidden containers, it will not
1684
+ * scroll inside a scroll container due to the fixed positioning.
1685
+ */
1686
+ this.strategy = 'absolute';
1678
1687
  /**
1679
1688
  * Adjust the gap between the popover and its trigger element by setting how
1680
1689
  * many pixels they should be apart.
@@ -1819,6 +1828,7 @@ const NvPopover = class {
1819
1828
  return;
1820
1829
  computePosition(this.triggerElement, this.popoverElement, {
1821
1830
  placement: this.placement,
1831
+ strategy: this.strategy,
1822
1832
  middleware: [
1823
1833
  offset(this.offset),
1824
1834
  !this.disableFlip &&
@@ -1830,10 +1840,11 @@ const NvPopover = class {
1830
1840
  shift({ padding: this.shiftPadding }),
1831
1841
  this.hasArrow && arrow({ element: this.arrowElement }),
1832
1842
  ],
1833
- }).then(({ x, y, placement, middlewareData }) => {
1843
+ }).then(({ x, y, placement, middlewareData, strategy }) => {
1834
1844
  Object.assign(this.popoverElement.style, {
1835
1845
  left: `${x}px`,
1836
1846
  top: `${y}px`,
1847
+ position: strategy,
1837
1848
  });
1838
1849
  if (this.hasArrow) {
1839
1850
  const staticSide = {
@@ -1906,6 +1917,11 @@ const NvPopover = class {
1906
1917
  this.isAnimating = false;
1907
1918
  this.openChanged.emit(open);
1908
1919
  }
1920
+ handleStrategyChange() {
1921
+ if (this.open) {
1922
+ this.positionPopover();
1923
+ }
1924
+ }
1909
1925
  //#endregion WATCHERS
1910
1926
  /****************************************************************************/
1911
1927
  //#region LIFECYCLE
@@ -1951,11 +1967,12 @@ const NvPopover = class {
1951
1967
  /****************************************************************************/
1952
1968
  //#region RENDER
1953
1969
  render() {
1954
- return (index.h(index.Host, { key: '14f8a4ffc146664a2fd00bbfc413494929eec492' }, index.h("slot", { key: 'aaf84cb70beb8f63f030c16c47b41340c238a47c', name: "trigger" }), index.h("div", { key: 'e75b6f6a1131ae9bd39d3a10a1a9801a8c14d756', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (index.h("div", { key: '98233b5961fe5476062b671db8274f6802afa700', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), index.h("slot", { key: '5bf731ff7007e4e1128405a22b9f0c8a16305228', name: "content" }))));
1970
+ return (index.h(index.Host, { key: '290f9c76a0a4db0648061ce3778bec21b5926ae4' }, index.h("slot", { key: 'ca90cba5de160880308dfc12b1f82f0047c57b75', name: "trigger" }), index.h("div", { key: 'f9b5e11a4a6fd63fe1a640acd936cf883fc91563', "data-scope": "popover", "data-strategy": this.strategy, hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (index.h("div", { key: '39f7287b5614326cc5eb29be9b94c70f1574671b', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), index.h("slot", { key: '45ac045f3669f3ebe3e8200bff75b26284e609a6', name: "content" }))));
1955
1971
  }
1956
1972
  get el() { return index.getElement(this); }
1957
1973
  static get watchers() { return {
1958
- "open": ["handleOpenChange"]
1974
+ "open": ["handleOpenChange"],
1975
+ "strategy": ["handleStrategyChange"]
1959
1976
  }; }
1960
1977
  };
1961
1978
  NvPopover.style = NvPopoverStyle0;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  require('react');
5
5
 
6
6
  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)}";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  var clsx297c1ffe = require('./clsx-297c1ffe-BtxeOLZW.js');
5
5
  require('react');
6
6
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  var dom_utilsAc71e0ef = require('./dom.utils-ac71e0ef-CmIwRr6O.js');
5
5
  require('react');
6
6
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  require('react');
5
5
 
6
6
  const NvTablecolumn = class {
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  var clsx297c1ffe = require('./clsx-297c1ffe-BtxeOLZW.js');
5
5
  var v4A79185f4 = require('./v4-a79185f4-2n0dOd_Y.js');
6
6
  require('react');
7
7
 
8
- const nvToggleCss = "nv-toggle{display:inline-flex;align-items:flex-start;gap:var(--form-gap-x);position:relative}nv-toggle:not([disabled],[readonly]) input,nv-toggle:not([disabled],[readonly]) label{cursor:pointer}nv-toggle.label-placement-before{flex-direction:row-reverse}nv-toggle[disabled]{opacity:0.5}nv-toggle label{align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-toggle label.visually-hidden{position:absolute;padding:0;border:0;overflow:hidden;white-space:nowrap;width:1px;height:1px;margin:-1px;clip:rect(0, 0, 0, 0)}nv-toggle .input-container{position:relative;color:var(--components-form-shape-foreground-default)}nv-toggle .input-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--components-form-shape-foreground-disabled)}nv-toggle .input-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-toggle-width);height:var(--form-toggle-height);flex-direction:column;align-items:flex-start;border-radius:var(--form-toggle-radius);border-width:var(--form-toggle-border-width);border-style:solid;border-color:var(--components-form-field-border-default);background:var(--components-form-field-background-default)}nv-toggle .input-container input[type=checkbox]::after{content:\"\";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-form-shape-foreground-switch-dot);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:25%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:hover{border-color:var(--components-form-field-border-hover)}nv-toggle .input-container input[type=checkbox]:focus{border-color:var(--components-form-field-border-default)}nv-toggle .input-container input[type=checkbox]:focus,nv-toggle .input-container input[type=checkbox]:focus-within{outline:none}nv-toggle .input-container input[type=checkbox]:focus-visible,nv-toggle .input-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1);z-index:111}nv-toggle .input-container input[type=checkbox]:checked{background:var(--components-form-field-background-checked);border-color:var(--components-form-field-background-checked)}nv-toggle .input-container input[type=checkbox]:checked::after{content:\"\";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-form-shape-foreground-default);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:75%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:checked:focus{background:var(--components-form-field-background-checked);border-color:var(--components-form-field-border-focus)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]){box-shadow:unset;background:var(--components-form-field-background-disabled);border-color:var(--components-form-field-border-default)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]):checked::after{background-color:var(--components-form-shape-foreground-disabled)}nv-toggle .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:450;line-height:var(--form-description-line-height)}nv-toggle .text-container{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}";
8
+ const nvToggleCss = "nv-toggle{display:inline-flex;align-items:flex-start;gap:var(--form-gap-x);position:relative}nv-toggle:not([disabled],[readonly]) input,nv-toggle:not([disabled],[readonly]) label{cursor:pointer}nv-toggle.label-placement-before{flex-direction:row-reverse}nv-toggle[disabled]{opacity:0.5}nv-toggle label{align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-toggle label.visually-hidden{position:absolute;padding:0;border:0;overflow:hidden;white-space:nowrap;width:1px;height:1px;margin:-1px;clip:rect(0, 0, 0, 0)}nv-toggle .input-container{position:relative;color:var(--components-form-shape-foreground-default)}nv-toggle .input-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--components-form-shape-foreground-disabled)}nv-toggle .input-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-toggle-width);height:var(--form-toggle-height);flex-direction:column;align-items:flex-start;border-radius:var(--form-toggle-radius);border-width:var(--form-toggle-border-width);border-style:solid;border-color:var(--components-form-field-border-default);background:var(--components-form-field-background-default)}nv-toggle .input-container input[type=checkbox]::after{content:\"\";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-form-shape-foreground-switch-dot);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:25%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:hover{border-color:var(--components-form-field-border-hover)}nv-toggle .input-container input[type=checkbox]:focus{border-color:var(--components-form-field-border-default)}nv-toggle .input-container input[type=checkbox]:focus,nv-toggle .input-container input[type=checkbox]:focus-within{outline:none}nv-toggle .input-container input[type=checkbox]:focus-visible,nv-toggle .input-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-toggle .input-container input[type=checkbox]:checked{background:var(--components-form-field-background-checked);border-color:var(--components-form-field-background-checked)}nv-toggle .input-container input[type=checkbox]:checked::after{content:\"\";display:block;width:var(--form-toggle-switch-dot-default);height:var(--form-toggle-switch-dot-default);background-color:var(--components-form-shape-foreground-default);border-radius:var(--radius-rounded-full);position:absolute;top:50%;left:75%;transform:translate(-50%, -50%)}nv-toggle .input-container input[type=checkbox]:checked:focus{background:var(--components-form-field-background-checked);border-color:var(--components-form-field-border-focus)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]){box-shadow:unset;background:var(--components-form-field-background-disabled);border-color:var(--components-form-field-border-default)}nv-toggle .input-container input[type=checkbox]:disabled:not([readonly]):checked::after{background-color:var(--components-form-shape-foreground-disabled)}nv-toggle .description{align-self:stretch;color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;font-weight:450;line-height:var(--form-description-line-height)}nv-toggle .text-container{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0}";
9
9
  const NvToggleStyle0 = nvToggleCss;
10
10
 
11
11
  const NvToggle = class {
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-jBgPO7HC.js');
4
+ require('react');
5
+
6
+ const nvTogglebuttonCss = "nv-togglebutton{display:inline-flex;justify-content:center;align-items:center}nv-togglebutton:focus-visible,nv-togglebutton:has(:focus-visible){z-index:1}nv-togglebutton[size=xs]{padding:var(--button-xs-padding-y) var(--button-xs-padding-x);gap:var(--button-xs-gap);border-radius:var(--button-xs-border-radius);line-height:var(--button-xs-line-height);font-size:var(--button-xs-font-size);padding-top:calc(var(--togglegroup-xs-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-xs-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-xs-button-radius));border-width:0}nv-togglebutton[size=xs] nv-icon>svg{width:var(--spacing-3);height:var(--spacing-3);stroke-width:1.2px}nv-togglebutton[size=sm]{padding:var(--button-sm-padding-y) var(--button-sm-padding-x);gap:var(--button-sm-gap);border-radius:var(--button-sm-border-radius);line-height:var(--button-sm-line-height);font-size:var(--button-sm-font-size);padding-top:calc(var(--togglegroup-sm-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-sm-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-sm-button-radius));border-width:0}nv-togglebutton[size=sm] nv-icon>svg{width:var(--spacing-4);height:var(--spacing-4);stroke-width:1.5px}nv-togglebutton[size=md]{padding:var(--button-md-padding-y) var(--button-md-padding-x);gap:var(--button-md-gap);border-radius:var(--button-md-border-radius);line-height:var(--button-md-line-height);font-size:var(--button-md-font-size);padding-top:calc(var(--togglegroup-md-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-md-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-md-button-radius));border-width:0}nv-togglebutton[size=md] nv-icon>svg{width:var(--spacing-5);height:var(--spacing-5);stroke-width:1.6px}nv-togglebutton[size=lg]{padding:var(--button-lg-padding-y) var(--button-lg-padding-x);gap:var(--button-lg-gap);border-radius:var(--button-lg-border-radius);line-height:var(--button-lg-line-height);font-size:var(--button-lg-font-size);padding-top:calc(var(--togglegroup-lg-button-padding-y) - 1px);padding-bottom:calc(var(--togglegroup-lg-button-padding-y) - 1px);border-radius:calc(var(--togglegroup-lg-button-radius));border-width:0}nv-togglebutton[size=lg] nv-icon>svg{width:var(--spacing-6);height:var(--spacing-6);stroke-width:1.8px}nv-togglebutton[emphasis=high]{background:var(--components-button-low-background);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text)}nv-togglebutton[emphasis=high]:hover{background:var(--components-button-low-background-hover);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text-hover)}nv-togglebutton[emphasis=high]:active{background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=high]:focus,nv-togglebutton[emphasis=high]:focus-within{outline:none}nv-togglebutton[emphasis=high]:focus-visible,nv-togglebutton[emphasis=high]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=high]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=high][active]:not([active=false]){background:var(--components-button-low-background-active);border:1px solid var(--components-button-low-border-active);color:var(--components-button-low-text-active)}nv-togglebutton[emphasis=low]{background:var(--components-button-lower-background);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text)}nv-togglebutton[emphasis=low]:hover{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-active);border:1px solid var(--components-button-lower-border-active);color:var(--components-button-lower-text-active)}nv-togglebutton[emphasis=low]:focus,nv-togglebutton[emphasis=low]:focus-within{outline:none}nv-togglebutton[emphasis=low]:focus-visible,nv-togglebutton[emphasis=low]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-togglebutton[emphasis=low]:disabled:not([disabled=false]){opacity:0.5;cursor:not-allowed;box-shadow:none}nv-togglebutton[emphasis=low][active]:not([active=false]),nv-togglebutton[emphasis=low]:active{background:var(--components-button-lower-background-hover);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text-hover)}";
7
+ const NvTogglebuttonStyle0 = nvTogglebuttonCss;
8
+
9
+ const NvTogglebutton = class {
10
+ constructor(hostRef) {
11
+ index.registerInstance(this, hostRef);
12
+ this.toggled = index.createEvent(this, "toggled");
13
+ /****************************************************************************/
14
+ //#region PROPERTIES
15
+ /**
16
+ * Determines how large or small the togglebutton appears, allowing for
17
+ * customization of the togglebutton's dimensions to fit different design
18
+ * specifications and user needs.
19
+ */
20
+ this.size = 'md';
21
+ /**
22
+ * Prevents all interaction, rendering the toggle in a non-interactive state.
23
+ */
24
+ this.disabled = false;
25
+ /**
26
+ * Whether the button is active or not. Will not toggle automatically but
27
+ * needs to be controlled externally.
28
+ */
29
+ this.active = false;
30
+ /**
31
+ * Make it more or less visually prominent to users.
32
+ */
33
+ this.emphasis = 'high';
34
+ //#endregion PROPERTIES
35
+ /****************************************************************************/
36
+ //#region METHODS
37
+ this.handleClick = () => {
38
+ if (this.disabled)
39
+ return;
40
+ this.toggled.emit({
41
+ value: this.value,
42
+ active: this.active,
43
+ });
44
+ };
45
+ }
46
+ //#endregion EVENTS
47
+ /****************************************************************************/
48
+ //#region RENDER
49
+ render() {
50
+ return (index.h(index.Host, { key: '81e773d6bafc0fd451fb7e71cb14ca709af2d07e', role: "button", tabindex: "0", "aria-pressed": String(this.active), onClick: this.handleClick }, index.h("slot", { key: '4cec2d6ae5388cdfd285ab15af356e9833b0ccb3' })));
51
+ }
52
+ };
53
+ NvTogglebutton.style = NvTogglebuttonStyle0;
54
+
55
+ exports.nv_togglebutton = NvTogglebutton;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  require('react');
5
5
 
6
6
  const nvTogglebuttongroupCss = "nv-togglebuttongroup{display:flex;gap:var(--togglegroup-lg-gap);border-radius:var(--togglegroup-lg-radius);width:fit-content;padding:var(--togglegroup-lg-gap)}nv-togglebuttongroup[emphasis=high]{border:1px solid var(--components-togglegroup-high-border)}nv-togglebuttongroup[emphasis=low]{border:1px solid var(--components-togglegroup-low-border)}nv-togglebuttongroup[size=xs]{padding:calc(var(--togglegroup-xs-padding) - 1px);gap:var(--togglegroup-xs-gap);border-radius:var(--togglegroup-xs-radius)}nv-togglebuttongroup[size=sm]{padding:calc(var(--togglegroup-sm-padding) - 1px);gap:var(--togglegroup-sm-gap);border-radius:var(--togglegroup-sm-radius)}nv-togglebuttongroup[size=md]{padding:calc(var(--togglegroup-md-padding) - 1px);gap:var(--togglegroup-md-gap);border-radius:var(--togglegroup-md-radius)}nv-togglebuttongroup[size=lg]{padding:calc(var(--togglegroup-lg-padding) - 1px);gap:var(--togglegroup-lg-gap);border-radius:var(--togglegroup-lg-radius)}";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-9kW3hkgy.js');
3
+ var index = require('./index-jBgPO7HC.js');
4
4
  require('react');
5
5
 
6
6
  const nvTooltipCss = "nv-tooltip{display:inline-block;position:relative;user-select:none}nv-tooltip:has([fluid]:not([fluid=false])){display:block}nv-tooltip nv-popover>[data-scope=popover]{background:var(--components-tooltip-background);color:var(--components-tooltip-text);font-weight:var(--font-weight-medium-emphasis);padding:var(--tooltip-padding-y) var(--tooltip-padding-x);font-size:var(--tooltip-font-size);border-radius:var(--tooltip-radius);border:none;box-shadow:0px var(--shadow-y-axis-lg-1) var(--shadow-blur-lg-1) var(--shadow-spread-lg-1) var(--shadow-color-opacity-1), 0px var(--shadow-y-axis-lg-2) var(--shadow-blur-lg-2) var(--shadow-spread-lg-2) var(--shadow-color-opacity-2)}nv-tooltip nv-popover>[data-scope=popover] [data-scope=arrow]{background:var(--components-tooltip-background);box-shadow:none;border:none}";
@@ -19,9 +19,18 @@ const NvTooltip = class {
19
19
  /**
20
20
  * Controls how long (in milliseconds) the tooltip waits to show after you
21
21
  * hover over or focus on an element. If you move away before the delay is up,
22
- * the tooltip wont appear.
22
+ * the tooltip won't appear.
23
23
  */
24
24
  this.enterDelay = 0;
25
+ /**
26
+ * Sets the positioning strategy for the tooltip. Options include:
27
+ * - `absolute`: Positions the tooltip relative to the trigger element
28
+ * (default).
29
+ * - `fixed`: Positions the tooltip relative to the viewport, useful when you
30
+ * need the tooltip to break out of overflow hidden containers, it will not
31
+ * scroll inside a scroll container due to the fixed positioning.
32
+ */
33
+ this.strategy = 'absolute';
25
34
  }
26
35
  //#endregion EVENTS
27
36
  /****************************************************************************/
@@ -36,7 +45,7 @@ const NvTooltip = class {
36
45
  /****************************************************************************/
37
46
  //#region RENDER
38
47
  render() {
39
- return (index.h(index.Host, { key: 'd4ee448b0dddf4229d3d845d86758a1e794c35e8' }, index.h("slot", { key: '5d24c99b18925e44a8dedd868922227339638e73' }), index.h("nv-popover", { key: '4ee6f08994042689a628c238905484b1aa9de555', triggerMode: "hover", hasArrow: true, placement: this.placement, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, index.h("p", { key: 'e8ac1f3f739f3b12172884e298494dede993b888', slot: "content" }, this.message), index.h("slot", { key: '96c2e3f5d9b72f5311ebe89e8ebe18274b2bfb13', name: "content" }))));
48
+ return (index.h(index.Host, { key: '02f95c0f1f41fe11785859fc8f1bf585cbe35af5' }, index.h("slot", { key: '338049b6a5ce354b5ddcba1f183488e2f6b2116e' }), index.h("nv-popover", { key: 'f2e82343908d4e59a3ecf93f791c2756f29714ae', triggerMode: "hover", hasArrow: true, placement: this.placement, strategy: this.strategy, triggerElement: this.triggerElement, groupName: 'tooltip', enterDelay: this.enterDelay }, index.h("p", { key: 'ee35eff1233d1d03accdff3260b6d71ef0815d47', slot: "content" }, this.message), index.h("slot", { key: '1a5cdc8a671ea9f3f84cb0414579b9a85a183630', name: "content" }))));
40
49
  }
41
50
  get el() { return index.getElement(this); }
42
51
  };
@@ -652,6 +652,7 @@ export const NvPopover = createComponent({
652
652
  open: 'open',
653
653
  triggerMode: 'trigger-mode',
654
654
  placement: 'placement',
655
+ strategy: 'strategy',
655
656
  groupName: 'group-name',
656
657
  offset: 'offset',
657
658
  hasArrow: 'has-arrow',
@@ -747,7 +748,8 @@ export const NvTooltip = createComponent({
747
748
  properties: {
748
749
  message: 'message',
749
750
  placement: 'placement',
750
- enterDelay: 'enter-delay'
751
+ enterDelay: 'enter-delay',
752
+ strategy: 'strategy'
751
753
  },
752
754
  hydrateModule: import('@nova-design-system/nova-webcomponents/hydrate'),
753
755
  serializeShadowRoot
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './generated/components';
2
+ export * from '@nova-design-system/nova-webcomponents/constants';
2
3
  export { defineCustomElements } from '@nova-design-system/nova-webcomponents/loader';
@@ -1,2 +1,3 @@
1
1
  export * from './generated/components';
2
+ export * from '@nova-design-system/nova-webcomponents/constants';
2
3
  export { defineCustomElements } from '@nova-design-system/nova-webcomponents/loader';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nova-design-system/nova-react",
3
- "version": "3.11.0",
3
+ "version": "3.12.0",
4
4
  "description": "Nova is a design system created by Elia Group to empower creators to efficiently build solutions that people love to use.",
5
5
  "author": "Elia Group",
6
6
  "homepage": "https://nova.eliagroup.io",
@@ -33,12 +33,14 @@
33
33
  "clean": "rimraf dist lib/generated",
34
34
  "typecheck": "tsc --emitDeclarationOnly false --noEmit"
35
35
  },
36
+ "dependencies": {
37
+ "@nova-design-system/nova-webcomponents": "*"
38
+ },
36
39
  "devDependencies": {
37
40
  "react": "^18.3.1",
38
41
  "react-dom": "^18.3.1",
39
42
  "nova-utils": "*",
40
43
  "nova-storybook-utils": "*",
41
- "@nova-design-system/nova-webcomponents": "*",
42
44
  "@rollup/plugin-commonjs": "28.0.2",
43
45
  "@rollup/plugin-node-resolve": "16.0.0",
44
46
  "@rollup/plugin-typescript": "12.1.2"