@nyx-ds/treeview 0.1.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.
@@ -0,0 +1,669 @@
1
+ import { LitElement as k, html as l, unsafeCSS as m, nothing as y } from "lit";
2
+ import { property as a, state as f, queryAssignedElements as M } from "lit/decorators.js";
3
+ import { repeat as U } from "lit/directives/repeat.js";
4
+ import { classMap as O } from "lit/directives/class-map.js";
5
+ import { eyeSlash as W, eye as V, xmark as G, check as j, minus as J, spinnerThird as K, magnifyingGlass as Q, chevronRightRegular as X } from "@nyx-ds/core";
6
+ import { classMap as $ } from "lit-html/directives/class-map.js";
7
+ import "@nyx-ds/icon";
8
+ import { unsafeHTML as B } from "lit-html/directives/unsafe-html.js";
9
+ function Y(c, o) {
10
+ return function(e, n) {
11
+ const { native: t = !1, ...r } = n || {}, i = t ? new Event(o, r) : new CustomEvent(o, { detail: e, ...r });
12
+ c.dispatchEvent(i);
13
+ };
14
+ }
15
+ function q(c) {
16
+ return (o, e) => {
17
+ Object.defineProperty(o, e, {
18
+ get() {
19
+ return Y(this, c || e);
20
+ },
21
+ enumerable: !0,
22
+ configurable: !0
23
+ });
24
+ };
25
+ }
26
+ const Z = ":host{display:flex;flex-direction:column;width:100%;--treeview-radius: var(--nyx-radii-s);--treeview-search-padding: var(--nyx-sizing-1-25) var(--nyx-sizing-1-75) 0 var(--nyx-sizing-1-75);--treeview-header-padding: var(--nyx-sizing-2) var(--nyx-sizing-2) var(--nyx-sizing-1-75) var(--nyx-sizing-2);--treeview-row-padding: var(--nyx-sizing-1-5, 12px) var(--nyx-sizing-2);--treeview-row-gap: var(--nyx-sizing-2);--treeview-col-gap: var(--nyx-sizing-1);--treeview-node-gap: var(--nyx-sizing-1);--treeview-row-min-height: 56px;--treeview-expander-wrapper-size: var(--nyx-sizing-4);--treeview-expander-padding: var(--nyx-sizing-1-25);--treeview-col-width: var(--treeview-header-icon-size);--treeview-background: var(--nyx-color-neutral-background-primary);--treeview-border-color: var(--nyx-color-neutral-border-tertiary);--treeview-content-color: var(--nyx-color-neutral-content-primary);--treeview-focus-border-color: var(--nyx-color-brand-border-default);--treeview-row-selected-background: var(--nyx-color-brand-background-softer);--treeview-row-selected-hover-background: var( --nyx-color-brand-background-softer-hover );--treeview-row-selected-color: var(--nyx-color-neutral-content-primary);--treeview-font-family: var(--nyx-font-family-font-family);--treeview-title-font-size: var(--nyx-label-medium-font-size);--treeview-title-line-height: var(--nyx-label-medium-line-height);--treeview-text-font-size: var(--nyx-label-medium-font-size);--treeview-text-line-height: var(--nyx-label-medium-line-height);--treeview-header-icon-size: var(--nyx-label-large-font-size);--treeview-node-icon-size: var(--nyx-label-medium-font-size);--treeview-expander-icon-size: var(--nyx-label-large-font-size);--treeview-row-hover-background: var(--nyx-color-brand-background-hover);--treeview-row-hover-color: var(--nyx-color-neutral-content-primary-inverse)}.nyx-treeview{display:flex;flex-direction:column;width:100%;font-family:var(--treeview-font-family);align-items:flex-start;border-radius:var(--treeview-radius);border:1px solid var(--treeview-border-color);background:var(--treeview-background);box-sizing:border-box}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.search-container{display:flex;padding:var(--treeview-search-padding);flex-direction:column;align-items:flex-start;align-self:stretch}.tree-scroll{width:100%}.tree-header{display:flex;justify-content:space-between;align-items:center;align-self:stretch;padding:var(--treeview-header-padding);border-bottom:.5px solid var(--treeview-border-color);box-sizing:border-box}.tree-title{color:var(--treeview-content-color);font-size:var(--treeview-title-font-size);line-height:var(--treeview-title-line-height);font-weight:600}.header-columns,.node-columns{display:flex;align-items:center;justify-content:flex-end;gap:var(--treeview-col-gap);flex-shrink:0}.col-cell{min-width:var(--treeview-col-width);width:var(--treeview-col-width);flex:0 0 auto}.col-cell,.header-columns ::slotted(*){display:flex;justify-content:center;align-items:center;box-sizing:border-box}.header-columns ::slotted(nyx-icon){--nyx-icon-size: var(--treeview-header-icon-size);color:var(--treeview-content-color)}.tree-body{width:100%;display:flex;flex-direction:column}.node-wrapper{display:flex;flex-direction:column;width:100%}.node-row{display:flex;align-items:center;justify-content:space-between;min-height:var(--treeview-row-min-height);border-bottom:.5px solid var(--treeview-border-color);gap:var(--treeview-row-gap);padding:var(--treeview-row-padding);box-sizing:border-box;background:transparent;color:var(--treeview-content-color);outline:none;cursor:default}.node-row:hover{background:var(--treeview-row-hover-background);color:var(--treeview-row-hover-color)}.node-row:focus-within{background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)!important}.node-row:hover .expander nyx-icon,.node-row:hover .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row:focus-within .expander nyx-icon,.node-row:focus-within .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row.selectable.selected{background-color:var(--treeview-row-selected-background);color:var(--treeview-row-selected-color)}.node-row.selectable.selected .expander nyx-icon,.node-row.selectable.selected .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-selected-color)}.node-row.selectable.selected:hover{background-color:var(--treeview-row-selected-hover-background);color:var(--treeview-row-selected-color)}.node-row:focus-visible{position:relative;z-index:2;outline:2px solid var(--treeview-content-color);outline-offset:-4px;background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)}.row-checkbox{display:flex;align-items:center;margin-right:4px}.node-info{display:flex;align-items:center;gap:var(--treeview-node-gap);flex:1 0 0;overflow:hidden;min-height:32px;padding-left:4px}.expander{--button-icon-color: inherit}.expander nyx-icon{--nyx-icon-size: var(--treeview-expander-icon-size);transition:transform .2s ease;transform-origin:center}.expander nyx-icon.expanded{transform:rotate(90deg)}.expander:hover,.expander:focus-within{--button-icon-color: var(--treeview-content-color) !important}.expander:hover nyx-icon,.expander:focus-within nyx-icon{color:var(--treeview-content-color)!important;--nyx-icon-color: var(--treeview-content-color) !important}.node-type-icon-wrapper{display:flex;align-items:center;justify-content:center;flex-shrink:0}.node-type-icon-wrapper ::slotted(nyx-icon){--nyx-icon-size: var(--treeview-node-icon-size)}.node-text{font-size:var(--treeview-text-font-size);line-height:var(--treeview-text-line-height);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-children{width:100%}@media (max-width: 768px){.tree-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.tree-header,.tree-body{min-width:calc(250px + ((var(--treeview-col-width) + var(--treeview-col-gap)) * 4))}.node-text{white-space:normal;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}", oo = ':host{--field-padding: var(--nyx-sizing-1-5);--field-padding-small: var(--nyx-sizing-1) var(--nyx-sizing-1-5);--field-border-radius-sharp: var(--nyx-radii-xs);--field-border-radius-rounded: var(--nyx-radii-100);--field-border: var(--nyx-stroke-number-2) solid var(--nyx-color-neutral-border-tertiary);--field-text-color: var(--nyx-color-neutral-content-primary);--field-font-family: var(--nyx-font-family-font-family);--field-font-size: var(--nyx-label-medium-font-size);--field-line-height: var(--nyx-label-medium-line-height);--placeholder-color: var(--nyx-color-neutral-content-tertiary);--field-hover-border: var(--nyx-stroke-number-3) solid var(--nyx-color-neutral-border-active);--field-focus-outline: var(--nyx-stroke-number-3) solid var(--nyx-color-neutral-border-active);--field-invalid-border: var(--nyx-stroke-number-3) solid var(--nyx-color-danger-border-default);--field-disabled-border: var(--nyx-stroke-number-2) solid var(--nyx-color-neutral-border-disable);--field-disabled-text-color: var(--nyx-color-neutral-content-disabled);--icon-color: var(--nyx-color-neutral-content-tertiary);--icon-disabled-color: var(--nyx-color-neutral-content-disabled);box-sizing:border-box;display:inline-flex;width:100%}*{box-sizing:inherit}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.container{width:100%;position:relative}.container.small ::slotted([slot="field"]){padding:var(--field-padding-small)}.container.iconLeft ::slotted([slot="field"]){padding-left:36px}.container.iconLeft ::slotted([slot="field"]){padding-right:36px}.password,.clear{display:none;position:absolute;top:0;bottom:0;right:12px;font-size:var(--field-font-size)}::slotted([slot="field"]){width:100%;margin:0;box-sizing:inherit;padding:var(--field-padding);border-radius:var(--field-border-radius-sharp);border:var(--field-border);color:var(--field-text-color);background-color:transparent;font-family:var(--field-font-family);font-size:var(--field-font-size);font-style:normal;font-weight:400;line-height:var(--field-line-height);resize:none}.container.rounded ::slotted([slot="field"]){border-radius:var(--field-border-radius-rounded)}::slotted([slot="field"])::placeholder{color:var(--placeholder-color)}::slotted([slot="field"]:hover:not([disabled])){border:var(--field-hover-border)}::slotted([slot="field"]:focus){outline:var(--field-focus-outline)}::slotted([slot="field"][invalid]){border:var(--field-invalid-border)}::slotted([slot="field"][disabled]){border:var(--field-disabled-border);color:var(--field-disabled-text-color)}::slotted([slot="field"][disabled])::placeholder{color:var(--field-disabled-text-color)}::slotted([slot="iconLeft"]),::slotted([slot="iconRight"]){position:absolute;top:12px;font-size:var(--field-font-size)}.container.small ::slotted([slot="iconLeft"]),.container.small ::slotted([slot="iconRight"]){top:8px}::slotted([slot="iconLeft"]){left:12px}::slotted([slot="iconRight"]){right:12px}::slotted([slot="iconLeft"]:not([action])),::slotted([slot="iconRight"]:not([action])){color:var(--icon-color)}::slotted([slot="iconLeft"][clickable]:not([disabled])),::slotted([slot="iconRight"][clickable]:not([disabled])){cursor:pointer}:host(.disabled) ::slotted([slot="iconLeft"]),:host(.disabled) ::slotted([slot="iconRight"]){color:var(--icon-disabled-color)}.container.passwordToggle ::slotted([slot="iconRight"]),.container.clearable ::slotted([slot="iconRight"]){display:none}.container.passwordToggle .password,.container.clearable .clear{display:flex;cursor:pointer}';
27
+ var to = Object.defineProperty, w = (c, o, e, n) => {
28
+ for (var t = void 0, r = c.length - 1, i; r >= 0; r--)
29
+ (i = c[r]) && (t = i(o, e, t) || t);
30
+ return t && to(o, e, t), t;
31
+ };
32
+ const C = class C extends k {
33
+ constructor() {
34
+ super(...arguments), this.size = "medium", this.border = "sharp", this.passwordToggle = !1, this.clearable = !1, this.showPassword = !1;
35
+ }
36
+ updated(o) {
37
+ const e = this.querySelector('[slot="field"]'), n = e instanceof HTMLInputElement && e.disabled;
38
+ this.classList.toggle("disabled", n);
39
+ }
40
+ /** @internal */
41
+ handleClick() {
42
+ this.showPassword = !this.showPassword;
43
+ const e = this.shadowRoot.querySelector("slot[name='field']").assignedElements({ flatten: !0 })[0];
44
+ e && (e.type = this.showPassword ? "text" : "password");
45
+ }
46
+ /** @internal */
47
+ handleClear() {
48
+ const e = this.shadowRoot.querySelector("slot[name='field']").assignedElements({ flatten: !0 })[0];
49
+ e && (e.value = "");
50
+ }
51
+ render() {
52
+ const o = !!this.querySelector('[slot="iconLeft"]'), e = !!this.querySelector('[slot="iconRight"]'), n = {
53
+ container: !0,
54
+ small: this.size === "small",
55
+ iconLeft: o,
56
+ iconRight: e,
57
+ passwordToggle: this.passwordToggle,
58
+ clearable: this.clearable,
59
+ rounded: this.border === "rounded"
60
+ };
61
+ return l`
62
+ <div class=${$(n)}>
63
+ <slot name="field"></slot>
64
+ <slot name="iconLeft"></slot>
65
+ <slot name="iconRight"></slot>
66
+ <div class="password">
67
+ <nyx-icon @click=${this.handleClick} svg=${this.showPassword ? W : V}></nyx-icon>
68
+ </div>
69
+ <div class="clear">
70
+ <nyx-icon @click=${this.handleClear} svg=${G}></nyx-icon>
71
+ </div>
72
+ </div>
73
+ `;
74
+ }
75
+ };
76
+ C.styles = m(oo);
77
+ let h = C;
78
+ w([
79
+ a({ type: String, reflect: !0 })
80
+ ], h.prototype, "size");
81
+ w([
82
+ a({ type: String, reflect: !0 })
83
+ ], h.prototype, "border");
84
+ w([
85
+ a({ type: Boolean, reflect: !0 })
86
+ ], h.prototype, "passwordToggle");
87
+ w([
88
+ a({ type: Boolean, reflect: !0 })
89
+ ], h.prototype, "clearable");
90
+ w([
91
+ f()
92
+ ], h.prototype, "showPassword");
93
+ customElements.get("nyx-input") || customElements.define("nyx-input", h);
94
+ const eo = ':host{--checkbox-container-gap: var(--nyx-sizing-1);--checkbox-container-color: var(--nyx-color-neutral-content-primary);--checkbox-container-font-family: var(--nyx-font-family-font-family);--checkbox-container-font-size: var(--nyx-label-medium-font-size);--checkbox-container-line-height: var(--nyx-label-medium-line-height);--checkbox-container-disabled-color: var(--nyx-color-neutral-content-disabled);--checkbox-background: var(--nyx-color-neutral-background-primary);--checkbox-border: 1px solid var(--nyx-color-neutral-border-primary);--checkbox-disabled-border: 1px solid var(--nyx-color-neutral-border-disable);--checkbox-hover-border: 1px solid var(--nyx-color-brand-border-hover);--checkbox-checked-background: var(--nyx-color-brand-background-default);--checkbox-background-hover: var(--nyx-color-neutral-content-primary-inverse);--checkbox-checked-color: var(--nyx-color-neutral-content-primary-inverse);--checkbox-checked-disabled-background: var(--nyx-color-neutral-background-disable);--checkbox-checked-disabled-color: var(--nyx-color-neutral-content-disabled);--checkbox-checked-hover-background: var(--nyx-color-brand-background-hover);box-sizing:border-box;display:inline-flex}*{box-sizing:inherit}::slotted(input[type="checkbox"]){position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.container{display:inline-flex;justify-content:center;align-items:center;gap:var(--checkbox-container-gap);color:var(--checkbox-container-color);font-family:var(--checkbox-container-font-family);font-size:var(--checkbox-container-font-size);font-style:normal;font-weight:400;line-height:var(--checkbox-container-line-height);cursor:pointer}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.container[disabled]{color:var(--checkbox-container-disabled-color)}.container:focus-visible:not([disabled]),.container:focus-within:not([disabled]){outline:2px solid var(--checkbox-container-color);outline-offset:2px;border-radius:1px}.container:focus-visible .checkbox:not([disabled]),.container:focus-within .checkbox:not([disabled]){border:var(--checkbox-hover-border);background-color:var(--checkbox-background-hover)}.container:focus-visible .checkbox.checked:not([disabled]),.container:focus-visible .checkbox.indeterminate:not([disabled]),.container:focus-within .checkbox.checked:not([disabled]),.container:focus-within .checkbox.indeterminate:not([disabled]){background-color:var(--checkbox-checked-hover-background);border-color:transparent}.checkbox{display:inline-flex;gap:var(--checkbox-container-gap);padding:1px;justify-content:center;align-items:center;cursor:pointer;border-radius:4px;background-color:var(--checkbox-background);border:var(--checkbox-border)}.checkbox nyx-icon{opacity:0;--nyx-icon-size: var(--checkbox-container-font-size)}.checkbox.checked nyx-icon,.checkbox.indeterminate nyx-icon{opacity:1}.checkbox[disabled]{border:var(--checkbox-disabled-border);background-color:var(--checkbox-checked-disabled-background);color:var(--checkbox-checked-disabled-color);cursor:default}.container:hover .checkbox:not([disabled]){border:var(--checkbox-hover-border);background-color:var(--checkbox-background-hover)}.checkbox.checked,.checkbox.indeterminate{background-color:var(--checkbox-checked-background);color:var(--checkbox-checked-color);border:1px solid transparent}.checkbox[disabled].checked,.checkbox[disabled].indeterminate{border:var(--checkbox-disabled-border);background-color:var(--checkbox-checked-disabled-background);color:var(--checkbox-checked-disabled-color)}.container:hover .checkbox.checked:not([disabled]),.container:hover .checkbox.indeterminate:not([disabled]){background-color:var(--checkbox-checked-hover-background);border-color:transparent}';
95
+ var no = Object.defineProperty, S = (c, o, e, n) => {
96
+ for (var t = void 0, r = c.length - 1, i; r >= 0; r--)
97
+ (i = c[r]) && (t = i(o, e, t) || t);
98
+ return t && no(o, e, t), t;
99
+ };
100
+ const A = class A extends k {
101
+ constructor() {
102
+ super(...arguments), this.checked = !1, this.indeterminate = !1, this.disabled = !1;
103
+ }
104
+ updated(o) {
105
+ super.updated(o);
106
+ const e = this._slottedInputs[0];
107
+ e && (o.has("checked") && e.checked !== this.checked && (e.checked = this.checked), o.has("disabled") && (e.disabled = this.disabled, this.disabled ? e.setAttribute("tabindex", "-1") : e.removeAttribute("tabindex")));
108
+ }
109
+ _toggleCheck() {
110
+ if (this.disabled) return;
111
+ this.checked = !this.checked, this.indeterminate = !1;
112
+ const o = this._slottedInputs[0];
113
+ o && (o.checked = this.checked, o.dispatchEvent(new Event("change", { bubbles: !0 })));
114
+ }
115
+ render() {
116
+ const o = {
117
+ checkbox: !0,
118
+ checked: this.checked,
119
+ indeterminate: this.indeterminate,
120
+ disabled: this.disabled
121
+ };
122
+ return l`
123
+ <div class="container" ?disabled=${this.disabled} @click=${this._toggleCheck}>
124
+ <div class=${$(o)} ?disabled=${this.disabled}>
125
+ <nyx-icon svg=${this.checked ? j : this.indeterminate ? J : j}></nyx-icon>
126
+ </div>
127
+ <slot name="input"></slot>
128
+ <slot></slot>
129
+ </div>
130
+ `;
131
+ }
132
+ };
133
+ A.styles = m(eo);
134
+ let x = A;
135
+ S([
136
+ a({ type: Boolean, reflect: !0 })
137
+ ], x.prototype, "checked");
138
+ S([
139
+ a({ type: Boolean, reflect: !0 })
140
+ ], x.prototype, "indeterminate");
141
+ S([
142
+ a({ type: Boolean, reflect: !0 })
143
+ ], x.prototype, "disabled");
144
+ S([
145
+ M({ slot: "input" })
146
+ ], x.prototype, "_slottedInputs");
147
+ customElements.get("nyx-checkbox") || customElements.define("nyx-checkbox", x);
148
+ const ro = ":host{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;font-size:var(--nyx-icon-size, 1rem);color:var(--nyx-icon-color, currentColor)}*{box-sizing:inherit}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}::slotted(svg),svg{width:var(--nyx-icon-size, 1rem);height:var(--nyx-icon-size, 1rem);fill:currentColor}i{font-size:inherit;color:inherit}";
149
+ var io = Object.defineProperty, _ = (c, o, e, n) => {
150
+ for (var t = void 0, r = c.length - 1, i; r >= 0; r--)
151
+ (i = c[r]) && (t = i(o, e, t) || t);
152
+ return t && io(o, e, t), t;
153
+ };
154
+ const E = class E extends k {
155
+ constructor() {
156
+ super(...arguments), this.variant = "solid";
157
+ }
158
+ /**
159
+ * Watches for property changes and loads the SVG if `src` changes.
160
+ * @param changedProperties Properties that have been changed.
161
+ */
162
+ async updated(o) {
163
+ o.has("src") && this.src && await this.loadSvg();
164
+ }
165
+ /**
166
+ * @private
167
+ * Loads an external SVG file and stores its contents.
168
+ */
169
+ async loadSvg() {
170
+ if (this.src)
171
+ try {
172
+ const o = await fetch(this.src);
173
+ if (!o.ok)
174
+ throw new Error("Error on load SVG.");
175
+ this._svgContentImported = await o.text();
176
+ } catch (o) {
177
+ this.dispatchEvent(new CustomEvent("nyx-icon-load-error", {
178
+ detail: {
179
+ src: this.src,
180
+ message: o instanceof Error ? o.message : String(o)
181
+ },
182
+ bubbles: !0,
183
+ composed: !0
184
+ }));
185
+ }
186
+ }
187
+ render() {
188
+ if (this.svg)
189
+ return l`${B(this.svg)}`;
190
+ if (this.src)
191
+ return l`${B(this._svgContentImported)}`;
192
+ const o = [`fa-${this.name}`];
193
+ this.variant && o.push(...this.variant.split(" ").map((n) => `fa-${n}`));
194
+ const e = document.createElement("i");
195
+ return e.className = o.join(" "), this.shadowRoot.host.innerHTML = "", this.shadowRoot.host.appendChild(e), l`<slot></slot>`;
196
+ }
197
+ };
198
+ E.styles = m(ro);
199
+ let v = E;
200
+ _([
201
+ a({ type: String })
202
+ ], v.prototype, "name");
203
+ _([
204
+ a({ type: String })
205
+ ], v.prototype, "variant");
206
+ _([
207
+ a({ type: String })
208
+ ], v.prototype, "src");
209
+ _([
210
+ a({ type: String })
211
+ ], v.prototype, "svg");
212
+ _([
213
+ f()
214
+ ], v.prototype, "_svgContentImported");
215
+ customElements.get("nyx-icon") || customElements.define("nyx-icon", v);
216
+ const ao = ":host{--button-padding: var(--nyx-sizing-2);--button-gap: var(--nyx-sizing-1);--button-border-radius: var(--nyx-radii-2xs);--button-color: var(--nyx-color-neutral-content-always-white);--button-font-family: var(--nyx-font-family-font-family);--button-font-size: var(--nyx-label-medium-font-size);--button-line-height: var(--nyx-label-medium-line-height);--button-small-padding: var(--nyx-sizing-1-25);--button-small-font-size: var(--nyx-label-medium-font-size);--button-small-line-height: var(--nyx-label-medium-line-height);--button-medium-padding: var(--nyx-sizing-1-5);--button-brand-background: var(--nyx-color-brand-background-default);--button-warning-background: var(--nyx-color-warning-background-default);--button-danger-background: var(--nyx-color-danger-background-default);--button-info-background: var(--nyx-color-info-background-default);--button-success-background: var(--nyx-color-success-background-default);--button-brand-background-hover: var(--nyx-color-brand-background-hover);--button-warning-background-hover: var(--nyx-color-warning-background-hover);--button-danger-background-hover: var(--nyx-color-danger-background-hover);--button-info-background-hover: var(--nyx-color-info-background-hover);--button-success-background-hover: var(--nyx-color-success-background-hover);--button-neutral-background-hover: var(--nyx-color-neutral-background-hover);--button-brand-background-active: var(--nyx-color-brand-background-strong);--button-warning-background-active: var(--nyx-color-warning-background-strong);--button-danger-background-active: var(--nyx-color-danger-background-strong);--button-info-background-active: var(--nyx-color-info-background-strong);--button-success-background-active: var(--nyx-color-success-background-strong);--button-color-inverse: var(--nyx-color-neutral-content-primary-inverse);--button-disabled-background: var(--nyx-color-neutral-background-disable);--button-disabled-color: var(--nyx-color-neutral-content-disabled);--button-outline-border: 1px solid var(--nyx-color-neutral-border-primary);--button-outline-color: var(--nyx-color-neutral-content-primary);--button-outline-background: var(--nyx-color-neutral-background-primary);--button-outline-danger-border: 1px solid var(--nyx-color-danger-border-default);--button-outline-danger-color: var(--nyx-color-danger-content-default);--button-outline-warning-border: 1px solid var(--nyx-color-warning-border-default);--button-outline-warning-color: var(--nyx-color-warning-content-default);--button-outline-info-border: 1px solid var(--nyx-color-info-border-default);--button-outline-info-color: var(--nyx-color-info-content-default);--button-outline-success-border: 1px solid var(--nyx-color-success-border-default);--button-outline-success-color: var(--nyx-color-success-content-default);--button-outline-background-hover: var(--nyx-color-neutral-background-hover);--button-outline-border-hover: 1px solid var(--nyx-color-neutral-border-primary);--button-outline-color-hover: var(--nyx-color-neutral-content-primary);--button-outline-danger-background-hover: var(--nyx-color-danger-background-softer-hover);--button-outline-danger-border-hover: 1px solid var(--nyx-color-danger-border-softer);--button-outline-danger-color-hover: var(--nyx-color-danger-content-strong);--button-outline-warning-background-hover: var(--nyx-color-warning-background-softer-hover);--button-outline-warning-border-hover: 1px solid var(--nyx-color-warning-border-softer);--button-outline-warning-color-hover: var(--nyx-color-warning-content-strong);--button-outline-info-background-hover: var(--nyx-color-info-background-softer-hover);--button-outline-info-border-hover: 1px solid var(--nyx-color-info-border-softer);--button-outline-info-color-hover: var(--nyx-color-info-content-default);--button-outline-success-background-hover: var(--nyx-color-success-background-softer-hover);--button-outline-success-border-hover: 1px solid var(--nyx-color-success-border-softer);--button-outline-success-color-hover: var(--nyx-color-success-content-strong);--button-outline-background-active: var(--nyx-color-neutral-background-active);--button-outline-color-active: var(--nyx-color-neutral-content-primary);--button-outline-warning-background-active: var(--nyx-color-warning-background-strong);--button-outline-warning-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-danger-background-active: var(--nyx-color-danger-background-strong);--button-outline-danger-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-info-background-active: var(--nyx-color-info-background-strong);--button-outline-info-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-success-background-active: var(--nyx-color-success-background-strong);--button-outline-success-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-disabled-color: var(--nyx-color-neutral-content-disabled);--button-outline-disabled-border: 1px solid var(--nyx-color-neutral-border-disable);--button-ghost-color: var(--nyx-color-neutral-content-primary);--button-ghost-warning-color: var(--nyx-color-warning-content-default);--button-ghost-danger-color: var(--nyx-color-danger-content-default);--button-ghost-info-color: var(--nyx-color-info-content-default);--button-ghost-success-color: var(--nyx-color-success-content-default);--button-ghost-background: transparent;--button-ghost-neutral-color-hover: var(--nyx-color-neutral-content-tertiary);--button-ghost-warning-color-hover: var(--nyx-color-warning-content-hover);--button-ghost-danger-color-hover: var(--nyx-color-danger-content-hover);--button-ghost-info-color-hover: var(--nyx-color-info-content-hover);--button-ghost-success-color-hover: var(--nyx-color-success-content-hover);--button-ghost-neutral-color-active: var(--nyx-color-neutral-content-secondary);--button-ghost-warning-color-active: var(--nyx-color-warning-content-strong);--button-ghost-danger-color-active: var(--nyx-color-danger-content-strong);--button-ghost-info-color-active: var(--nyx-color-info-content-strong);--button-ghost-success-color-active: var(--nyx-color-success-content-strong);--button-loading-line-height: calc(var(--nyx-label-medium-line-height) - 4px);--button-icon-background-hover: var(--nyx-color-brand-background-softer-hover);--button-icon-border-hover: 1px solid var(--nyx-color-brand-border-hover);--button-icon-color-disabled: var(--nyx-color-neutral-content-disabled);--button-icon-border-disabled: 1px solid var(--nyx-color-neutral-border-disable);--button-icon-border-with-border: 1px solid var(--nyx-color-neutral-border-active);--button-icon-border-radius-with-border: var(--nyx-radii-2xs);--button-icon-color: var(--nyx-color-neutral-content-primary);--button-icon-border-radius: var(--nyx-radii-100);--button-icon-small-icon-font-size: var(--nyx-label-small-font-size);--button-icon-medium-icon-font-size: var(--nyx-label-medium-font-size);--button-icon-large-icon-font-size: var(--nyx-heading-h6-font-size);--button-icon-xlarge-icon-font-size: var(--nyx-heading-h4-font-size);box-sizing:border-box;display:inline-flex}:host([block]){width:100%}*{box-sizing:inherit}button.brand:not([disabled]):not(.loading):hover,button.brand:not([disabled]):not(.loading):active,button.warning:not([disabled]):not(.loading):hover,button.warning:not([disabled]):not(.loading):active,button.danger:not([disabled]):not(.loading):hover,button.danger:not([disabled]):not(.loading):active,button.info:not([disabled]):not(.loading):hover,button.info:not([disabled]):not(.loading):active,button.success:not([disabled]):not(.loading):hover,button.success:not([disabled]):not(.loading):active{color:var(--button-color-inverse)}button{display:inline-flex;padding:var(--button-padding);align-items:center;justify-content:center;gap:var(--button-gap);border-radius:var(--button-border-radius);color:var(--button-color);cursor:pointer;border:none;text-align:center;font-family:var(--button-font-family);font-size:var(--button-font-size);font-style:normal;font-weight:600;line-height:var(--button-line-height)}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}button.icon-right{flex-direction:row-reverse}button.small{padding:var(--button-small-padding);font-size:var(--button-small-font-size);line-height:var(--button-small-line-height)}button.medium{padding:var(--button-medium-padding)}button.block{width:100%}button.brand{background-color:var(--button-brand-background)}button.warning{background-color:var(--button-warning-background)}button.danger{background-color:var(--button-danger-background)}button.info{background-color:var(--button-info-background)}button.success{background-color:var(--button-success-background)}button.ghost{color:var(--button-ghost-color);background-color:var(--button-ghost-background)}button.ghost.danger{color:var(--button-ghost-danger-color);background-color:var(--button-ghost-background)}button.ghost.warning{color:var(--button-ghost-warning-color);background-color:var(--button-ghost-background)}button.ghost.info{color:var(--button-ghost-info-color);background-color:var(--button-ghost-background)}button.ghost.success{color:var(--button-ghost-success-color);background-color:var(--button-ghost-background)}button.brand:not([disabled]):not(.loading):hover{background-color:var(--button-brand-background-hover);color:var(--button-color-inverse)}button.warning:not([disabled]):not(.loading):hover{background-color:var(--button-warning-background-hover);color:var(--button-color-inverse)}button.danger:not([disabled]):not(.loading):hover{background-color:var(--button-danger-background-hover);color:var(--button-color-inverse)}button.info:not([disabled]):not(.loading):hover{background-color:var(--button-info-background-hover);color:var(--button-color-inverse)}button.outline:not([disabled]):not(.loading):hover{background-color:var(--button-success-background-hover);color:var(--button-color-inverse)}button.brand:not([disabled]):not(.loading):active{background-color:var(--button-brand-background-active)}button.warning:not([disabled]):not(.loading):active{background-color:var(--button-warning-background-active)}button.danger:not([disabled]):not(.loading):active{background-color:var(--button-danger-background-active)}button.info:not([disabled]):not(.loading):active{background-color:var(--button-info-background-active)}button.success:not([disabled]):not(.loading):active{background-color:var(--button-success-background-active)}button.outline:not([disabled]):not(.loading):active{background-color:var(--button-outline-background-active);color:var(--button-outline-color-active)}button.outline.warning:not([disabled]):not(.loading):active{background-color:var(--button-outline-warning-background-active);color:var(--button-outline-warning-background-active)}button.outline.danger:not([disabled]):not(.loading):active{background-color:var(--button-outline-danger-background-active);color:var(--button-outline-danger-background-active)}button.outline.info:not([disabled]):not(.loading):active{background-color:var(--button-outline-info-background-active);color:var(--button-outline-info-background-active)}button.outline.success:not([disabled]):not(.loading):active{background-color:var(--button-outline-success-background-active);color:var(--button-outline-success-background-active)}button.ghost:not([disabled]):not(.loading):active{background-color:var(--button-ghost-background-active);color:var(--button-ghost-neutral-color-active)}button.ghost.warning:not([disabled]):not(.loading):active{background-color:var(--button-warning-background-active);color:var(--button-ghost-warning-color-active)}button.ghost.danger:not([disabled]):not(.loading):active{background-color:var(--button-danger-background-active);color:var(--button-ghost-danger-color-active)}button.ghost.info:not([disabled]):not(.loading):active{background-color:var(--button-info-background-active);color:var(--button-ghost-info-color-active)}button.ghost.success:not([disabled]):not(.loading):active{background-color:var(--button-success-background-active);color:var(--button-ghost-success-color-active)}button:disabled{background:var(--button-disabled-background);color:var(--button-disabled-color);cursor:default}button.outline{background-color:transparent;border:var(--button-outline-border);color:var(--button-outline-color)}button.outline.danger{color:var(--button-outline-danger-color)}button.outline.warning{color:var(--button-outline-warning-color)}button.outline.info{color:var(--button-outline-info-color)}button.outline.success{color:var(--button-outline-success-color)}button.outline:not([disabled]):not(.loading):hover{background-color:var(--button-outline-background-hover);border:var(--button-outline-border-hover);color:var(--button-outline-color)}button.outline.danger:not([disabled]):not(.loading):hover{background-color:var(--button-outline-danger-background-hover);border:var(--button-outline-danger-border-hover);color:var(--button-outline-danger-color-hover)}button.outline.warning:not([disabled]):not(.loading):hover{background-color:var(--button-outline-warning-background-hover);border:var(--button-outline-warning-border-hover);color:var(--button-outline-warning-color-hover)}button.outline.info:not([disabled]):not(.loading):hover{background-color:var(--button-outline-info-background-hover);border:var(--button-outline-info-border-hover);color:var(--button-outline-info-color-hover)}button.outline.success:not([disabled]):not(.loading):hover{background-color:var(--button-outline-success-background-hover);border:var(--button-outline-success-border-hover);color:var(--button-outline-success-color-hover)}button.outline:disabled{border:1px solid var(--nyx-color-neutral-border-disable);background:var(--nyx-color-neutral-background-primary)}button.ghost{background-color:transparent;border:none;color:var(--button-ghost-color)}button.ghost.info{color:var(--button-ghost-info-color);background-color:transparent}button.ghost.danger{color:var(--button-ghost-danger-color);background-color:transparent}button.ghost.warning{color:var(--button-ghost-warning-color);background-color:transparent}button.ghost.success{color:var(--button-ghost-success-color);background-color:transparent}button.ghost:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-color)}button.ghost.danger:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-danger-color-hover)}button.ghost.warning:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-warning-color-hover)}button.ghost.info:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-info-color-hover)}button.ghost.success:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-success-color-hover)}button.ghost:disabled{background-color:var(--button-ghost-background);color:var(--button-disabled-color)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading nyx-icon{animation:spin 1s linear infinite}button.loading{cursor:default;line-height:var(--button-loading-line-height)}button.button-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:var(--button-icon-border-radius);align-self:stretch;border:none;cursor:pointer;background-color:transparent;color:var(--button-icon-color);text-align:center}button.button-icon:not([disabled]):hover{background-color:var(--button-icon-background-hover)!important}button.button-icon.neutral:not([disabled]):hover{background-color:var(--button-neutral-background-hover)!important}button.button-icon[disabled]{color:var(--button-icon-color-disabled);cursor:default}button:focus-visible,button:focus-within{outline:2px solid var(--button-outline-color);outline-offset:2px}button.brand:focus-visible,button.brand:focus-within{background-color:var(--button-brand-background-hover)}button.warning:focus-visible,button.warning:focus-within{background-color:var(--button-warning-background-hover)}button.danger:focus-visible,button.danger:focus-within{background-color:var(--button-danger-background-hover)}button.info:focus-visible,button.info:focus-within{background-color:var(--button-info-background-hover)}button.success:focus-visible,button.success:focus-within{background-color:var(--button-success-background-hover)}button.ghost:focus-visible,button.ghost:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-color)}button.ghost.danger:focus-visible,button.ghost.danger:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-danger-color-hover)}button.ghost.info:focus-visible,button.ghost.info:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-info-color-hover)}button.ghost.success:focus-visible,button.ghost.success:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-success-color-hover)}button.ghost.warning:focus-visible,button.ghost.warning:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-warning-color-hover)}button.outline:focus-visible,button.outline:focus-within{background-color:var(--button-outline-background-hover)}button.outline.danger:focus-visible,button.outline.danger:focus-within{background-color:var(--button-outline-danger-background-hover)}button.outline.warning:focus-visible,button.outline.warning:focus-within{background-color:var(--button-outline-warning-background-hover)}button.outline.info:focus-visible,button.outline.info:focus-within{background-color:var(--button-outline-info-background-hover)}button.outline.success:focus-visible,button.outline.success:focus-within{background-color:var(--button-outline-success-background-hover)}button.button-icon:focus-visible,button.button-icon:focus-within{background-color:var( --button-icon-background-focus, var(--button-icon-background-hover) )!important}button.button-icon.neutral:focus-visible,button.button-icon.neutral:focus-within{background-color:var( --button-icon-background-focus, var(--button-neutral-background-hover) )!important}:host(.active) button.button-icon:not([disabled]){background-color:var( --button-icon-background-focus, var(--button-icon-background-hover) )!important}button.button-icon.button-icon-with-border{border:var(--button-icon-border-with-border);border-radius:var(--button-icon-border-radius-with-border)}button.button-icon.button-icon-with-border:not([disabled]):hover{border:var(--button-icon-border-hover)}button.button-icon.button-icon-with-border[disabled]{border:var(--button-icon-border-disabled)}button.button-icon nyx-icon{font-style:normal;font-weight:400;line-height:normal}button.button-icon.small{width:var(--button-icon-override-width, 24px);height:var(--button-icon-override-height, 24px)}button.button-icon.small nyx-icon{font-size:var(--button-icon-small-icon-font-size)}button.button-icon.medium{width:var(--button-icon-override-width, 30px);height:var(--button-icon-override-height, 30px)}button.button-icon.medium nyx-icon{font-size:var(--button-icon-medium-icon-font-size)}button.button-icon.large{width:var(--button-icon-override-width, 34px);height:var(--button-icon-override-height, 34px)}button.button-icon.large nyx-icon{font-size:var(--button-icon-large-icon-font-size)}button.button-icon.xlarge{width:var(--button-icon-override-width, 40px);height:var(--button-icon-override-height, 40px)}button.button-icon.xlarge nyx-icon{font-size:var(--button-icon-xlarge-icon-font-size)}";
217
+ var co = Object.defineProperty, u = (c, o, e, n) => {
218
+ for (var t = void 0, r = c.length - 1, i; r >= 0; r--)
219
+ (i = c[r]) && (t = i(o, e, t) || t);
220
+ return t && co(o, e, t), t;
221
+ }, b;
222
+ const d = (b = class extends k {
223
+ constructor() {
224
+ super(...arguments), this.variant = "brand", this.size = "large", this.hierarchy = "solid", this.iconPosition = "left", this.disabled = !1, this.loading = !1, this.block = !1, this.buttonIcon = !1, this.buttonIconWithBorder = !1;
225
+ }
226
+ connectedCallback() {
227
+ super.connectedCallback(), this._hostAriaObserver = new MutationObserver(() => {
228
+ this.requestUpdate();
229
+ }), this._hostAriaObserver.observe(this, {
230
+ attributes: !0,
231
+ attributeFilter: [...b._HOST_ARIA_ATTRS]
232
+ });
233
+ }
234
+ willUpdate(o) {
235
+ this._pullHostAriaIntoShadowButton(), super.willUpdate(o);
236
+ }
237
+ disconnectedCallback() {
238
+ var o;
239
+ (o = this._hostAriaObserver) == null || o.disconnect(), this._hostAriaObserver = void 0, super.disconnectedCallback();
240
+ }
241
+ _pullHostAriaIntoShadowButton() {
242
+ var o, e;
243
+ if (this.hasAttribute("aria-label")) {
244
+ const n = this.getAttribute("aria-label") ?? "", t = n.trim() === "" ? void 0 : n;
245
+ t !== this._innerAriaLabel && (this._innerAriaLabel = t), this.removeAttribute("aria-label");
246
+ }
247
+ if (this.hasAttribute("aria-labelledby")) {
248
+ const n = (o = this.getAttribute("aria-labelledby")) == null ? void 0 : o.trim(), t = n === "" ? void 0 : n;
249
+ t !== this._innerAriaLabelledby && (this._innerAriaLabelledby = t), this.removeAttribute("aria-labelledby");
250
+ }
251
+ if (this.hasAttribute("aria-describedby")) {
252
+ const n = (e = this.getAttribute("aria-describedby")) == null ? void 0 : e.trim(), t = n === "" ? void 0 : n;
253
+ t !== this._innerAriaDescribedby && (this._innerAriaDescribedby = t), this.removeAttribute("aria-describedby");
254
+ }
255
+ }
256
+ /**
257
+ * @private
258
+ * Handles the click action performed on the button.
259
+ */
260
+ _handleClick(o) {
261
+ if (this.disabled || this.loading) {
262
+ o.preventDefault(), o.stopPropagation();
263
+ return;
264
+ }
265
+ o.stopPropagation(), this.click(void 0, { native: !0, bubbles: !0, composed: !0 });
266
+ }
267
+ render() {
268
+ const o = this.buttonIcon || this.buttonIconWithBorder, e = {
269
+ brand: this.variant === "brand",
270
+ info: this.variant === "info",
271
+ warning: this.variant === "warning",
272
+ danger: this.variant === "danger",
273
+ neutral: this.variant === "neutral",
274
+ success: this.variant === "success",
275
+ small: this.size === "small",
276
+ medium: this.size === "medium",
277
+ large: this.size === "large",
278
+ xlarge: this.size === "xlarge",
279
+ outline: this.hierarchy === "outline",
280
+ ghost: this.hierarchy === "ghost",
281
+ "icon-right": this.iconPosition === "right",
282
+ loading: this.loading,
283
+ block: this.block,
284
+ "button-icon": o,
285
+ "button-icon-with-border": this.buttonIconWithBorder
286
+ };
287
+ return l`
288
+ <button
289
+ type="button"
290
+ ?disabled=${this.disabled}
291
+ class=${$(e)}
292
+ aria-label=${this._innerAriaLabel ?? y}
293
+ aria-labelledby=${this._innerAriaLabelledby ?? y}
294
+ aria-describedby=${this._innerAriaDescribedby ?? y}
295
+ @click=${this._handleClick}
296
+ >
297
+ ${this.loading ? "" : l`<slot name="icon"></slot>`}
298
+ ${this.loading ? l`<div class="loading"><nyx-icon svg=${K}></nyx-icon></div>` : ""}
299
+ ${o ? "" : l`<slot></slot>`}
300
+ </button>
301
+ `;
302
+ }
303
+ }, b._HOST_ARIA_ATTRS = [
304
+ "aria-label",
305
+ "aria-labelledby",
306
+ "aria-describedby"
307
+ ], b.styles = m(ao), b);
308
+ u([
309
+ a({ type: String, reflect: !0 })
310
+ ], d.prototype, "variant");
311
+ u([
312
+ a({ type: String, reflect: !0 })
313
+ ], d.prototype, "size");
314
+ u([
315
+ a({ type: String, reflect: !0 })
316
+ ], d.prototype, "hierarchy");
317
+ u([
318
+ a()
319
+ ], d.prototype, "iconPosition");
320
+ u([
321
+ a({ type: Boolean, reflect: !0 })
322
+ ], d.prototype, "disabled");
323
+ u([
324
+ a({ type: Boolean, reflect: !0 })
325
+ ], d.prototype, "loading");
326
+ u([
327
+ a({ type: Boolean, reflect: !0 })
328
+ ], d.prototype, "block");
329
+ u([
330
+ a({ attribute: "button-icon", type: Boolean, reflect: !0 })
331
+ ], d.prototype, "buttonIcon");
332
+ u([
333
+ a({ attribute: "button-icon-with-border", type: Boolean, reflect: !0 })
334
+ ], d.prototype, "buttonIconWithBorder");
335
+ u([
336
+ q()
337
+ ], d.prototype, "click");
338
+ u([
339
+ f()
340
+ ], d.prototype, "_innerAriaLabel");
341
+ u([
342
+ f()
343
+ ], d.prototype, "_innerAriaLabelledby");
344
+ u([
345
+ f()
346
+ ], d.prototype, "_innerAriaDescribedby");
347
+ let lo = d;
348
+ customElements.get("nyx-button") || customElements.define("nyx-button", lo);
349
+ var so = Object.defineProperty, z = (c, o, e, n) => {
350
+ for (var t = void 0, r = c.length - 1, i; r >= 0; r--)
351
+ (i = c[r]) && (t = i(o, e, t) || t);
352
+ return t && so(o, e, t), t;
353
+ };
354
+ const R = class R extends k {
355
+ constructor() {
356
+ super(...arguments), this._items = [], this._expandedIds = /* @__PURE__ */ new Set(), this._searchTerm = "";
357
+ }
358
+ updated(o) {
359
+ o.has("options") && this.options && (this._items = JSON.parse(JSON.stringify(this.options.items)), this.options.defaultExpandedLevel !== void 0 && this._expandedIds.size === 0 && this._expandToLevel(
360
+ this._items,
361
+ 0,
362
+ this.options.defaultExpandedLevel
363
+ ), this._generateLightDomIcons());
364
+ }
365
+ _generateLightDomIcons() {
366
+ var n;
367
+ if (this.querySelectorAll("[data-auto-generated]").forEach((t) => t.remove()), !this.options) return;
368
+ (n = this.options.columns) == null || n.forEach((t, r) => {
369
+ t.icon && this._createIconElement(t.icon, `generated-header-icon-${r}`);
370
+ });
371
+ const e = (t) => {
372
+ t.icon && this._createIconElement(
373
+ t.icon,
374
+ `generated-tree-icon-${t.id}`
375
+ ), t.children && t.children.forEach(e);
376
+ };
377
+ this._items.forEach(e);
378
+ }
379
+ _createIconElement(o, e) {
380
+ const n = document.createElement("nyx-icon");
381
+ let t = "regular";
382
+ typeof o == "string" ? n.setAttribute("name", o) : (o.name && n.setAttribute("name", o.name), o.variant && (t = o.variant), o.src && n.setAttribute("src", o.src), o.svg && (n.svg = o.svg)), n.setAttribute("variant", t), n.setAttribute("slot", e), n.setAttribute("data-auto-generated", ""), this.appendChild(n);
383
+ }
384
+ _expandToLevel(o, e, n) {
385
+ o.forEach((t) => {
386
+ e < n && (this._expandedIds.add(t.id), t.children && this._expandToLevel(t.children, e + 1, n));
387
+ });
388
+ }
389
+ _isColumnDisabled(o, e) {
390
+ return !!o.disabledColumns && o.disabledColumns.includes(e);
391
+ }
392
+ _isNodeSelected(o, e) {
393
+ return this._isColumnDisabled(o, e) ? !1 : (o.selectedColumns || []).includes(e);
394
+ }
395
+ _isIndeterminate(o, e) {
396
+ if (!o.children || o.children.length === 0) return !1;
397
+ const n = this._getFlatDescendants(o), t = n.filter(
398
+ (r) => this._isNodeSelected(r, e)
399
+ ).length;
400
+ return t > 0 && t < n.length;
401
+ }
402
+ _allDescendantsSelected(o, e) {
403
+ return !o.children || o.children.length === 0 ? this._isNodeSelected(o, e) : this._getFlatDescendants(o).every((t) => this._isNodeSelected(t, e));
404
+ }
405
+ _getFlatDescendants(o) {
406
+ let e = [];
407
+ return o.children && o.children.forEach((n) => {
408
+ e.push(n), e = e.concat(this._getFlatDescendants(n));
409
+ }), e;
410
+ }
411
+ _handleCheck(o, e) {
412
+ const t = !this._isNodeSelected(o, e);
413
+ this._toggleNodeState(o, e, t), o.children && this._getFlatDescendants(o).forEach((r) => {
414
+ this._toggleNodeState(r, e, t);
415
+ }), this._updateParents(this._items, o.id, e), this._triggerChange();
416
+ }
417
+ _toggleNodeState(o, e, n) {
418
+ if (this._isColumnDisabled(o, e)) return;
419
+ o.selectedColumns || (o.selectedColumns = []);
420
+ const t = o.selectedColumns.indexOf(e);
421
+ n && t === -1 ? o.selectedColumns.push(e) : !n && t > -1 && o.selectedColumns.splice(t, 1);
422
+ }
423
+ _updateParents(o, e, n) {
424
+ for (const t of o)
425
+ if (t.children && t.children.some(
426
+ (r) => r.id === e || this._updateParents(t.children, e, n)
427
+ )) {
428
+ const r = t.children.every(
429
+ (i) => this._allDescendantsSelected(i, n)
430
+ );
431
+ return this._toggleNodeState(t, n, r), !0;
432
+ }
433
+ return !1;
434
+ }
435
+ _isRowAllSelected(o) {
436
+ var n;
437
+ if (!((n = this.options) != null && n.columns)) return !1;
438
+ const e = this.options.columns.every((t) => this._isColumnDisabled(o, t.id) ? !0 : this._isNodeSelected(o, t.id));
439
+ return o.children && o.children.length > 0 ? e && o.children.every((t) => this._isRowAllSelected(t)) : e;
440
+ }
441
+ _isRowIndeterminate(o) {
442
+ var t;
443
+ if (this._isRowAllSelected(o) || !((t = this.options) != null && t.columns)) return !1;
444
+ const e = this.options.columns.some(
445
+ (r) => this._isNodeSelected(o, r.id)
446
+ ), n = o.children ? o.children.some(
447
+ (r) => this._isRowAllSelected(r) || this._isRowIndeterminate(r)
448
+ ) : !1;
449
+ return e || n;
450
+ }
451
+ _handleRowCheck(o) {
452
+ var t;
453
+ const n = !this._isRowAllSelected(o);
454
+ this._toggleRowRecursively(o, n), (t = this.options) != null && t.columns && this.options.columns.forEach((r) => {
455
+ this._updateParents(this._items, o.id, r.id);
456
+ }), this._triggerChange();
457
+ }
458
+ _toggleRowRecursively(o, e) {
459
+ var n;
460
+ (n = this.options) != null && n.columns && (e ? this.options.columns.forEach((t) => {
461
+ this._isColumnDisabled(o, t.id) || (o.selectedColumns || (o.selectedColumns = []), o.selectedColumns.includes(t.id) || o.selectedColumns.push(t.id));
462
+ }) : o.selectedColumns = [], o.children && o.children.forEach((t) => this._toggleRowRecursively(t, e)));
463
+ }
464
+ _triggerChange() {
465
+ this._items = [...this._items], this.onChange({ items: this._items }, { bubbles: !0, composed: !0 });
466
+ }
467
+ async _toggleExpand(o, e = !1) {
468
+ var r;
469
+ if (!(o.children && o.children.length > 0)) return;
470
+ const t = this._expandedIds.has(o.id);
471
+ if (t ? this._expandedIds.delete(o.id) : this._expandedIds.add(o.id), this._expandedIds = new Set(this._expandedIds), !t && e && o.children && o.children[0]) {
472
+ await this.updateComplete;
473
+ const i = o.children[0].id, p = (r = this.shadowRoot) == null ? void 0 : r.querySelector(
474
+ `#row-${i}`
475
+ );
476
+ p && p.focus();
477
+ }
478
+ }
479
+ _handleRowKeyDown(o, e) {
480
+ var t;
481
+ const n = o.currentTarget;
482
+ if ((o.key === "Enter" || o.key === " ") && o.target === n) {
483
+ o.preventDefault(), this._enableChildren(n);
484
+ const r = n.querySelector(
485
+ "nyx-checkbox input, nyx-button:not([disabled])"
486
+ );
487
+ if (r)
488
+ if (r instanceof HTMLInputElement)
489
+ r.focus();
490
+ else {
491
+ const i = (t = r.shadowRoot) == null ? void 0 : t.querySelector("button");
492
+ i == null || i.focus();
493
+ }
494
+ return;
495
+ }
496
+ o.key === "Escape" && (o.preventDefault(), o.stopPropagation(), this._disableChildren(n), n.focus());
497
+ }
498
+ _handleRowFocusOut(o) {
499
+ const e = o.currentTarget;
500
+ e.contains(o.relatedTarget) || this._disableChildren(e);
501
+ }
502
+ _enableChildren(o) {
503
+ const e = o.querySelectorAll('input[slot="input"]'), n = o.querySelectorAll("nyx-button");
504
+ e.forEach((t) => t.setAttribute("tabindex", "0")), n.forEach((t) => t.removeAttribute("tabindex"));
505
+ }
506
+ _disableChildren(o) {
507
+ const e = o.querySelectorAll('input[slot="input"]'), n = o.querySelectorAll("nyx-button");
508
+ e.forEach((t) => t.setAttribute("tabindex", "-1")), n.forEach((t) => t.setAttribute("tabindex", "-1"));
509
+ }
510
+ _clearAllFocus() {
511
+ var n, t;
512
+ const o = (n = this.shadowRoot) == null ? void 0 : n.activeElement;
513
+ o == null || o.blur();
514
+ const e = (t = this.shadowRoot) == null ? void 0 : t.querySelectorAll(".node-row");
515
+ e == null || e.forEach((r) => {
516
+ this._disableChildren(r);
517
+ });
518
+ }
519
+ render() {
520
+ var o, e, n;
521
+ return l`
522
+ <div class="nyx-treeview" @mousedown=${() => this._clearAllFocus()}>
523
+ <div class="search-container">
524
+ <nyx-input>
525
+ <nyx-icon .svg=${Q} slot="iconLeft"></nyx-icon>
526
+ <input
527
+ class="search-input"
528
+ type="text"
529
+ slot="field"
530
+ placeholder="Search..."
531
+ @input=${(t) => this._searchTerm = t.target.value}
532
+ />
533
+ </nyx-input>
534
+ </div>
535
+
536
+ <div class="tree-scroll">
537
+ <div class="tree-header">
538
+ <div class="tree-title">${(o = this.options) == null ? void 0 : o.title}</div>
539
+ <div class="header-columns">
540
+ ${(n = (e = this.options) == null ? void 0 : e.columns) == null ? void 0 : n.map(
541
+ (t, r) => l`
542
+ <div class="col-cell" title="${t.title || ""}">
543
+ <slot name="generated-header-icon-${r}"></slot>
544
+ </div>
545
+ `
546
+ )}
547
+ </div>
548
+ </div>
549
+
550
+ <div class="tree-body">${this._renderNodes(this._items, 0)}</div>
551
+ </div>
552
+ </div>
553
+ `;
554
+ }
555
+ _renderNodes(o, e) {
556
+ var r;
557
+ const n = o.filter(
558
+ (i) => !this._searchTerm || i.label.toLowerCase().includes(this._searchTerm.toLowerCase()) || i.children && i.children.some(
559
+ (p) => p.label.toLowerCase().includes(this._searchTerm.toLowerCase())
560
+ )
561
+ ), t = 16 + e * 24 - ((r = this.options) != null && r.showRowSelection ? 4 : 0);
562
+ return U(
563
+ n,
564
+ (i) => i.id,
565
+ (i) => {
566
+ var I, D, P, T;
567
+ const p = this._expandedIds.has(i.id), L = i.children && i.children.length > 0, N = this._isRowAllSelected(i), F = this._isRowIndeterminate(i), H = !!((I = this.options) != null && I.showRowSelection);
568
+ return l`
569
+ <div class="node-wrapper">
570
+ <div
571
+ id="row-${i.id}"
572
+ class=${O({
573
+ "node-row": !0,
574
+ selectable: H,
575
+ selected: N || F
576
+ })}
577
+ style="padding-left: ${t}px;"
578
+ tabindex="0"
579
+ @mousedown=${(s) => s.preventDefault()}
580
+ @keydown=${(s) => this._handleRowKeyDown(s, i)}
581
+ @focusout=${this._handleRowFocusOut}
582
+ >
583
+ <div class="node-info">
584
+ ${(D = this.options) != null && D.showRowSelection ? l`
585
+ <div class="row-checkbox">
586
+ <nyx-checkbox
587
+ ?checked=${this._isRowAllSelected(i)}
588
+ ?indeterminate=${this._isRowIndeterminate(i)}
589
+ @click=${(s) => {
590
+ s.stopPropagation(), this._handleRowCheck(i);
591
+ }}
592
+ >
593
+ <input type="checkbox" slot="input" tabindex="-1" />
594
+ </nyx-checkbox>
595
+ </div>
596
+ ` : y}
597
+ ${L ? l`
598
+ <nyx-button
599
+ class="expander"
600
+ size="small"
601
+ button-icon
602
+ tabindex="-1"
603
+ hierarchy="ghost"
604
+ @click=${() => this._toggleExpand(i, !1)}
605
+ @keydown=${(s) => {
606
+ (s.key === "Enter" || s.key === " ") && (s.preventDefault(), s.stopPropagation(), this._toggleExpand(i, !0));
607
+ }}
608
+ >
609
+ <nyx-icon
610
+ slot="icon"
611
+ class=${O({ expanded: p })}
612
+ .svg=${X}
613
+ ></nyx-icon>
614
+ </nyx-button>
615
+ ` : y}
616
+ <div class="node-type-icon-wrapper">
617
+ <slot name="generated-tree-icon-${i.id}"></slot>
618
+ </div>
619
+ <span class="node-text" title="${i.label}"
620
+ >${i.label}</span
621
+ >
622
+ </div>
623
+ <div class="node-columns">
624
+ ${(T = (P = this.options) == null ? void 0 : P.columns) == null ? void 0 : T.map(
625
+ (s) => l`
626
+ <div class="col-cell">
627
+ <nyx-checkbox
628
+ ?checked=${this._allDescendantsSelected(i, s.id)}
629
+ ?indeterminate=${this._isIndeterminate(i, s.id)}
630
+ ?disabled=${this._isColumnDisabled(i, s.id)}
631
+ @click=${() => this._handleCheck(i, s.id)}
632
+ >
633
+ <input type="checkbox" slot="input" tabindex="-1" />
634
+ </nyx-checkbox>
635
+ </div>
636
+ `
637
+ )}
638
+ </div>
639
+ </div>
640
+ ${p && L ? l`<div class="node-children">
641
+ ${this._renderNodes(i.children, e + 1)}
642
+ </div>` : ""}
643
+ </div>
644
+ `;
645
+ }
646
+ );
647
+ }
648
+ };
649
+ R.styles = m(Z);
650
+ let g = R;
651
+ z([
652
+ a({ type: Object })
653
+ ], g.prototype, "options");
654
+ z([
655
+ f()
656
+ ], g.prototype, "_items");
657
+ z([
658
+ f()
659
+ ], g.prototype, "_expandedIds");
660
+ z([
661
+ f()
662
+ ], g.prototype, "_searchTerm");
663
+ z([
664
+ q("nyx-change")
665
+ ], g.prototype, "onChange");
666
+ customElements.get("nyx-treeview") || customElements.define("nyx-treeview", g);
667
+ export {
668
+ g as NyxTreeview
669
+ };
@@ -0,0 +1,131 @@
1
+ (function(u,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("lit"),require("lit/decorators.js"),require("lit/directives/repeat.js"),require("lit/directives/class-map.js"),require("@nyx-ds/core"),require("lit-html/directives/class-map.js"),require("@nyx-ds/icon"),require("lit-html/directives/unsafe-html.js")):typeof define=="function"&&define.amd?define(["exports","lit","lit/decorators.js","lit/directives/repeat.js","lit/directives/class-map.js","@nyx-ds/core","lit-html/directives/class-map.js","@nyx-ds/icon","lit-html/directives/unsafe-html.js"],a):(u=typeof globalThis<"u"?globalThis:u||self,a(u.treeview={},u.lit,u.decorators_js,u.repeat_js,u.classMap_js$1,u.core,u.classMap_js,null,u.unsafeHtml_js))})(this,function(u,a,l,O,E,h,z,Z,R){"use strict";var p;function B(c,o){return function(e,n){const{native:t=!1,...r}=n||{},i=t?new Event(o,r):new CustomEvent(o,{detail:e,...r});c.dispatchEvent(i)}}function L(c){return(o,e)=>{Object.defineProperty(o,e,{get(){return B(this,c||e)},enumerable:!0,configurable:!0})}}const N=":host{display:flex;flex-direction:column;width:100%;--treeview-radius: var(--nyx-radii-s);--treeview-search-padding: var(--nyx-sizing-1-25) var(--nyx-sizing-1-75) 0 var(--nyx-sizing-1-75);--treeview-header-padding: var(--nyx-sizing-2) var(--nyx-sizing-2) var(--nyx-sizing-1-75) var(--nyx-sizing-2);--treeview-row-padding: var(--nyx-sizing-1-5, 12px) var(--nyx-sizing-2);--treeview-row-gap: var(--nyx-sizing-2);--treeview-col-gap: var(--nyx-sizing-1);--treeview-node-gap: var(--nyx-sizing-1);--treeview-row-min-height: 56px;--treeview-expander-wrapper-size: var(--nyx-sizing-4);--treeview-expander-padding: var(--nyx-sizing-1-25);--treeview-col-width: var(--treeview-header-icon-size);--treeview-background: var(--nyx-color-neutral-background-primary);--treeview-border-color: var(--nyx-color-neutral-border-tertiary);--treeview-content-color: var(--nyx-color-neutral-content-primary);--treeview-focus-border-color: var(--nyx-color-brand-border-default);--treeview-row-selected-background: var(--nyx-color-brand-background-softer);--treeview-row-selected-hover-background: var( --nyx-color-brand-background-softer-hover );--treeview-row-selected-color: var(--nyx-color-neutral-content-primary);--treeview-font-family: var(--nyx-font-family-font-family);--treeview-title-font-size: var(--nyx-label-medium-font-size);--treeview-title-line-height: var(--nyx-label-medium-line-height);--treeview-text-font-size: var(--nyx-label-medium-font-size);--treeview-text-line-height: var(--nyx-label-medium-line-height);--treeview-header-icon-size: var(--nyx-label-large-font-size);--treeview-node-icon-size: var(--nyx-label-medium-font-size);--treeview-expander-icon-size: var(--nyx-label-large-font-size);--treeview-row-hover-background: var(--nyx-color-brand-background-hover);--treeview-row-hover-color: var(--nyx-color-neutral-content-primary-inverse)}.nyx-treeview{display:flex;flex-direction:column;width:100%;font-family:var(--treeview-font-family);align-items:flex-start;border-radius:var(--treeview-radius);border:1px solid var(--treeview-border-color);background:var(--treeview-background);box-sizing:border-box}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.search-container{display:flex;padding:var(--treeview-search-padding);flex-direction:column;align-items:flex-start;align-self:stretch}.tree-scroll{width:100%}.tree-header{display:flex;justify-content:space-between;align-items:center;align-self:stretch;padding:var(--treeview-header-padding);border-bottom:.5px solid var(--treeview-border-color);box-sizing:border-box}.tree-title{color:var(--treeview-content-color);font-size:var(--treeview-title-font-size);line-height:var(--treeview-title-line-height);font-weight:600}.header-columns,.node-columns{display:flex;align-items:center;justify-content:flex-end;gap:var(--treeview-col-gap);flex-shrink:0}.col-cell{min-width:var(--treeview-col-width);width:var(--treeview-col-width);flex:0 0 auto}.col-cell,.header-columns ::slotted(*){display:flex;justify-content:center;align-items:center;box-sizing:border-box}.header-columns ::slotted(nyx-icon){--nyx-icon-size: var(--treeview-header-icon-size);color:var(--treeview-content-color)}.tree-body{width:100%;display:flex;flex-direction:column}.node-wrapper{display:flex;flex-direction:column;width:100%}.node-row{display:flex;align-items:center;justify-content:space-between;min-height:var(--treeview-row-min-height);border-bottom:.5px solid var(--treeview-border-color);gap:var(--treeview-row-gap);padding:var(--treeview-row-padding);box-sizing:border-box;background:transparent;color:var(--treeview-content-color);outline:none;cursor:default}.node-row:hover{background:var(--treeview-row-hover-background);color:var(--treeview-row-hover-color)}.node-row:focus-within{background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)!important}.node-row:hover .expander nyx-icon,.node-row:hover .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row:focus-within .expander nyx-icon,.node-row:focus-within .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row.selectable.selected{background-color:var(--treeview-row-selected-background);color:var(--treeview-row-selected-color)}.node-row.selectable.selected .expander nyx-icon,.node-row.selectable.selected .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-selected-color)}.node-row.selectable.selected:hover{background-color:var(--treeview-row-selected-hover-background);color:var(--treeview-row-selected-color)}.node-row:focus-visible{position:relative;z-index:2;outline:2px solid var(--treeview-content-color);outline-offset:-4px;background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)}.row-checkbox{display:flex;align-items:center;margin-right:4px}.node-info{display:flex;align-items:center;gap:var(--treeview-node-gap);flex:1 0 0;overflow:hidden;min-height:32px;padding-left:4px}.expander{--button-icon-color: inherit}.expander nyx-icon{--nyx-icon-size: var(--treeview-expander-icon-size);transition:transform .2s ease;transform-origin:center}.expander nyx-icon.expanded{transform:rotate(90deg)}.expander:hover,.expander:focus-within{--button-icon-color: var(--treeview-content-color) !important}.expander:hover nyx-icon,.expander:focus-within nyx-icon{color:var(--treeview-content-color)!important;--nyx-icon-color: var(--treeview-content-color) !important}.node-type-icon-wrapper{display:flex;align-items:center;justify-content:center;flex-shrink:0}.node-type-icon-wrapper ::slotted(nyx-icon){--nyx-icon-size: var(--treeview-node-icon-size)}.node-text{font-size:var(--treeview-text-font-size);line-height:var(--treeview-text-line-height);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-children{width:100%}@media (max-width: 768px){.tree-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.tree-header,.tree-body{min-width:calc(250px + ((var(--treeview-col-width) + var(--treeview-col-gap)) * 4))}.node-text{white-space:normal;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}",M=':host{--field-padding: var(--nyx-sizing-1-5);--field-padding-small: var(--nyx-sizing-1) var(--nyx-sizing-1-5);--field-border-radius-sharp: var(--nyx-radii-xs);--field-border-radius-rounded: var(--nyx-radii-100);--field-border: var(--nyx-stroke-number-2) solid var(--nyx-color-neutral-border-tertiary);--field-text-color: var(--nyx-color-neutral-content-primary);--field-font-family: var(--nyx-font-family-font-family);--field-font-size: var(--nyx-label-medium-font-size);--field-line-height: var(--nyx-label-medium-line-height);--placeholder-color: var(--nyx-color-neutral-content-tertiary);--field-hover-border: var(--nyx-stroke-number-3) solid var(--nyx-color-neutral-border-active);--field-focus-outline: var(--nyx-stroke-number-3) solid var(--nyx-color-neutral-border-active);--field-invalid-border: var(--nyx-stroke-number-3) solid var(--nyx-color-danger-border-default);--field-disabled-border: var(--nyx-stroke-number-2) solid var(--nyx-color-neutral-border-disable);--field-disabled-text-color: var(--nyx-color-neutral-content-disabled);--icon-color: var(--nyx-color-neutral-content-tertiary);--icon-disabled-color: var(--nyx-color-neutral-content-disabled);box-sizing:border-box;display:inline-flex;width:100%}*{box-sizing:inherit}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.container{width:100%;position:relative}.container.small ::slotted([slot="field"]){padding:var(--field-padding-small)}.container.iconLeft ::slotted([slot="field"]){padding-left:36px}.container.iconLeft ::slotted([slot="field"]){padding-right:36px}.password,.clear{display:none;position:absolute;top:0;bottom:0;right:12px;font-size:var(--field-font-size)}::slotted([slot="field"]){width:100%;margin:0;box-sizing:inherit;padding:var(--field-padding);border-radius:var(--field-border-radius-sharp);border:var(--field-border);color:var(--field-text-color);background-color:transparent;font-family:var(--field-font-family);font-size:var(--field-font-size);font-style:normal;font-weight:400;line-height:var(--field-line-height);resize:none}.container.rounded ::slotted([slot="field"]){border-radius:var(--field-border-radius-rounded)}::slotted([slot="field"])::placeholder{color:var(--placeholder-color)}::slotted([slot="field"]:hover:not([disabled])){border:var(--field-hover-border)}::slotted([slot="field"]:focus){outline:var(--field-focus-outline)}::slotted([slot="field"][invalid]){border:var(--field-invalid-border)}::slotted([slot="field"][disabled]){border:var(--field-disabled-border);color:var(--field-disabled-text-color)}::slotted([slot="field"][disabled])::placeholder{color:var(--field-disabled-text-color)}::slotted([slot="iconLeft"]),::slotted([slot="iconRight"]){position:absolute;top:12px;font-size:var(--field-font-size)}.container.small ::slotted([slot="iconLeft"]),.container.small ::slotted([slot="iconRight"]){top:8px}::slotted([slot="iconLeft"]){left:12px}::slotted([slot="iconRight"]){right:12px}::slotted([slot="iconLeft"]:not([action])),::slotted([slot="iconRight"]:not([action])){color:var(--icon-color)}::slotted([slot="iconLeft"][clickable]:not([disabled])),::slotted([slot="iconRight"][clickable]:not([disabled])){cursor:pointer}:host(.disabled) ::slotted([slot="iconLeft"]),:host(.disabled) ::slotted([slot="iconRight"]){color:var(--icon-disabled-color)}.container.passwordToggle ::slotted([slot="iconRight"]),.container.clearable ::slotted([slot="iconRight"]){display:none}.container.passwordToggle .password,.container.clearable .clear{display:flex;cursor:pointer}';var F=Object.defineProperty,k=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&F(o,e,t),t};const S=class S extends a.LitElement{constructor(){super(...arguments),this.size="medium",this.border="sharp",this.passwordToggle=!1,this.clearable=!1,this.showPassword=!1}updated(o){const e=this.querySelector('[slot="field"]'),n=e instanceof HTMLInputElement&&e.disabled;this.classList.toggle("disabled",n)}handleClick(){this.showPassword=!this.showPassword;const e=this.shadowRoot.querySelector("slot[name='field']").assignedElements({flatten:!0})[0];e&&(e.type=this.showPassword?"text":"password")}handleClear(){const e=this.shadowRoot.querySelector("slot[name='field']").assignedElements({flatten:!0})[0];e&&(e.value="")}render(){const o=!!this.querySelector('[slot="iconLeft"]'),e=!!this.querySelector('[slot="iconRight"]'),n={container:!0,small:this.size==="small",iconLeft:o,iconRight:e,passwordToggle:this.passwordToggle,clearable:this.clearable,rounded:this.border==="rounded"};return a.html`
2
+ <div class=${z.classMap(n)}>
3
+ <slot name="field"></slot>
4
+ <slot name="iconLeft"></slot>
5
+ <slot name="iconRight"></slot>
6
+ <div class="password">
7
+ <nyx-icon @click=${this.handleClick} svg=${this.showPassword?h.eyeSlash:h.eye}></nyx-icon>
8
+ </div>
9
+ <div class="clear">
10
+ <nyx-icon @click=${this.handleClear} svg=${h.xmark}></nyx-icon>
11
+ </div>
12
+ </div>
13
+ `}};S.styles=a.unsafeCSS(M);let g=S;k([l.property({type:String,reflect:!0})],g.prototype,"size"),k([l.property({type:String,reflect:!0})],g.prototype,"border"),k([l.property({type:Boolean,reflect:!0})],g.prototype,"passwordToggle"),k([l.property({type:Boolean,reflect:!0})],g.prototype,"clearable"),k([l.state()],g.prototype,"showPassword"),customElements.get("nyx-input")||customElements.define("nyx-input",g);const H=':host{--checkbox-container-gap: var(--nyx-sizing-1);--checkbox-container-color: var(--nyx-color-neutral-content-primary);--checkbox-container-font-family: var(--nyx-font-family-font-family);--checkbox-container-font-size: var(--nyx-label-medium-font-size);--checkbox-container-line-height: var(--nyx-label-medium-line-height);--checkbox-container-disabled-color: var(--nyx-color-neutral-content-disabled);--checkbox-background: var(--nyx-color-neutral-background-primary);--checkbox-border: 1px solid var(--nyx-color-neutral-border-primary);--checkbox-disabled-border: 1px solid var(--nyx-color-neutral-border-disable);--checkbox-hover-border: 1px solid var(--nyx-color-brand-border-hover);--checkbox-checked-background: var(--nyx-color-brand-background-default);--checkbox-background-hover: var(--nyx-color-neutral-content-primary-inverse);--checkbox-checked-color: var(--nyx-color-neutral-content-primary-inverse);--checkbox-checked-disabled-background: var(--nyx-color-neutral-background-disable);--checkbox-checked-disabled-color: var(--nyx-color-neutral-content-disabled);--checkbox-checked-hover-background: var(--nyx-color-brand-background-hover);box-sizing:border-box;display:inline-flex}*{box-sizing:inherit}::slotted(input[type="checkbox"]){position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.container{display:inline-flex;justify-content:center;align-items:center;gap:var(--checkbox-container-gap);color:var(--checkbox-container-color);font-family:var(--checkbox-container-font-family);font-size:var(--checkbox-container-font-size);font-style:normal;font-weight:400;line-height:var(--checkbox-container-line-height);cursor:pointer}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.container[disabled]{color:var(--checkbox-container-disabled-color)}.container:focus-visible:not([disabled]),.container:focus-within:not([disabled]){outline:2px solid var(--checkbox-container-color);outline-offset:2px;border-radius:1px}.container:focus-visible .checkbox:not([disabled]),.container:focus-within .checkbox:not([disabled]){border:var(--checkbox-hover-border);background-color:var(--checkbox-background-hover)}.container:focus-visible .checkbox.checked:not([disabled]),.container:focus-visible .checkbox.indeterminate:not([disabled]),.container:focus-within .checkbox.checked:not([disabled]),.container:focus-within .checkbox.indeterminate:not([disabled]){background-color:var(--checkbox-checked-hover-background);border-color:transparent}.checkbox{display:inline-flex;gap:var(--checkbox-container-gap);padding:1px;justify-content:center;align-items:center;cursor:pointer;border-radius:4px;background-color:var(--checkbox-background);border:var(--checkbox-border)}.checkbox nyx-icon{opacity:0;--nyx-icon-size: var(--checkbox-container-font-size)}.checkbox.checked nyx-icon,.checkbox.indeterminate nyx-icon{opacity:1}.checkbox[disabled]{border:var(--checkbox-disabled-border);background-color:var(--checkbox-checked-disabled-background);color:var(--checkbox-checked-disabled-color);cursor:default}.container:hover .checkbox:not([disabled]){border:var(--checkbox-hover-border);background-color:var(--checkbox-background-hover)}.checkbox.checked,.checkbox.indeterminate{background-color:var(--checkbox-checked-background);color:var(--checkbox-checked-color);border:1px solid transparent}.checkbox[disabled].checked,.checkbox[disabled].indeterminate{border:var(--checkbox-disabled-border);background-color:var(--checkbox-checked-disabled-background);color:var(--checkbox-checked-disabled-color)}.container:hover .checkbox.checked:not([disabled]),.container:hover .checkbox.indeterminate:not([disabled]){background-color:var(--checkbox-checked-hover-background);border-color:transparent}';var U=Object.defineProperty,_=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&U(o,e,t),t};const $=class $ extends a.LitElement{constructor(){super(...arguments),this.checked=!1,this.indeterminate=!1,this.disabled=!1}updated(o){super.updated(o);const e=this._slottedInputs[0];e&&(o.has("checked")&&e.checked!==this.checked&&(e.checked=this.checked),o.has("disabled")&&(e.disabled=this.disabled,this.disabled?e.setAttribute("tabindex","-1"):e.removeAttribute("tabindex")))}_toggleCheck(){if(this.disabled)return;this.checked=!this.checked,this.indeterminate=!1;const o=this._slottedInputs[0];o&&(o.checked=this.checked,o.dispatchEvent(new Event("change",{bubbles:!0})))}render(){const o={checkbox:!0,checked:this.checked,indeterminate:this.indeterminate,disabled:this.disabled};return a.html`
14
+ <div class="container" ?disabled=${this.disabled} @click=${this._toggleCheck}>
15
+ <div class=${z.classMap(o)} ?disabled=${this.disabled}>
16
+ <nyx-icon svg=${this.checked?h.check:this.indeterminate?h.minus:h.check}></nyx-icon>
17
+ </div>
18
+ <slot name="input"></slot>
19
+ <slot></slot>
20
+ </div>
21
+ `}};$.styles=a.unsafeCSS(H);let y=$;_([l.property({type:Boolean,reflect:!0})],y.prototype,"checked"),_([l.property({type:Boolean,reflect:!0})],y.prototype,"indeterminate"),_([l.property({type:Boolean,reflect:!0})],y.prototype,"disabled"),_([l.queryAssignedElements({slot:"input"})],y.prototype,"_slottedInputs"),customElements.get("nyx-checkbox")||customElements.define("nyx-checkbox",y);const W=":host{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;font-size:var(--nyx-icon-size, 1rem);color:var(--nyx-icon-color, currentColor)}*{box-sizing:inherit}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}::slotted(svg),svg{width:var(--nyx-icon-size, 1rem);height:var(--nyx-icon-size, 1rem);fill:currentColor}i{font-size:inherit;color:inherit}";var V=Object.defineProperty,m=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&V(o,e,t),t};const C=class C extends a.LitElement{constructor(){super(...arguments),this.variant="solid"}async updated(o){o.has("src")&&this.src&&await this.loadSvg()}async loadSvg(){if(this.src)try{const o=await fetch(this.src);if(!o.ok)throw new Error("Error on load SVG.");this._svgContentImported=await o.text()}catch(o){this.dispatchEvent(new CustomEvent("nyx-icon-load-error",{detail:{src:this.src,message:o instanceof Error?o.message:String(o)},bubbles:!0,composed:!0}))}}render(){if(this.svg)return a.html`${R.unsafeHTML(this.svg)}`;if(this.src)return a.html`${R.unsafeHTML(this._svgContentImported)}`;const o=[`fa-${this.name}`];this.variant&&o.push(...this.variant.split(" ").map(n=>`fa-${n}`));const e=document.createElement("i");return e.className=o.join(" "),this.shadowRoot.host.innerHTML="",this.shadowRoot.host.appendChild(e),a.html`<slot></slot>`}};C.styles=a.unsafeCSS(W);let f=C;m([l.property({type:String})],f.prototype,"name"),m([l.property({type:String})],f.prototype,"variant"),m([l.property({type:String})],f.prototype,"src"),m([l.property({type:String})],f.prototype,"svg"),m([l.state()],f.prototype,"_svgContentImported"),customElements.get("nyx-icon")||customElements.define("nyx-icon",f);const j=":host{--button-padding: var(--nyx-sizing-2);--button-gap: var(--nyx-sizing-1);--button-border-radius: var(--nyx-radii-2xs);--button-color: var(--nyx-color-neutral-content-always-white);--button-font-family: var(--nyx-font-family-font-family);--button-font-size: var(--nyx-label-medium-font-size);--button-line-height: var(--nyx-label-medium-line-height);--button-small-padding: var(--nyx-sizing-1-25);--button-small-font-size: var(--nyx-label-medium-font-size);--button-small-line-height: var(--nyx-label-medium-line-height);--button-medium-padding: var(--nyx-sizing-1-5);--button-brand-background: var(--nyx-color-brand-background-default);--button-warning-background: var(--nyx-color-warning-background-default);--button-danger-background: var(--nyx-color-danger-background-default);--button-info-background: var(--nyx-color-info-background-default);--button-success-background: var(--nyx-color-success-background-default);--button-brand-background-hover: var(--nyx-color-brand-background-hover);--button-warning-background-hover: var(--nyx-color-warning-background-hover);--button-danger-background-hover: var(--nyx-color-danger-background-hover);--button-info-background-hover: var(--nyx-color-info-background-hover);--button-success-background-hover: var(--nyx-color-success-background-hover);--button-neutral-background-hover: var(--nyx-color-neutral-background-hover);--button-brand-background-active: var(--nyx-color-brand-background-strong);--button-warning-background-active: var(--nyx-color-warning-background-strong);--button-danger-background-active: var(--nyx-color-danger-background-strong);--button-info-background-active: var(--nyx-color-info-background-strong);--button-success-background-active: var(--nyx-color-success-background-strong);--button-color-inverse: var(--nyx-color-neutral-content-primary-inverse);--button-disabled-background: var(--nyx-color-neutral-background-disable);--button-disabled-color: var(--nyx-color-neutral-content-disabled);--button-outline-border: 1px solid var(--nyx-color-neutral-border-primary);--button-outline-color: var(--nyx-color-neutral-content-primary);--button-outline-background: var(--nyx-color-neutral-background-primary);--button-outline-danger-border: 1px solid var(--nyx-color-danger-border-default);--button-outline-danger-color: var(--nyx-color-danger-content-default);--button-outline-warning-border: 1px solid var(--nyx-color-warning-border-default);--button-outline-warning-color: var(--nyx-color-warning-content-default);--button-outline-info-border: 1px solid var(--nyx-color-info-border-default);--button-outline-info-color: var(--nyx-color-info-content-default);--button-outline-success-border: 1px solid var(--nyx-color-success-border-default);--button-outline-success-color: var(--nyx-color-success-content-default);--button-outline-background-hover: var(--nyx-color-neutral-background-hover);--button-outline-border-hover: 1px solid var(--nyx-color-neutral-border-primary);--button-outline-color-hover: var(--nyx-color-neutral-content-primary);--button-outline-danger-background-hover: var(--nyx-color-danger-background-softer-hover);--button-outline-danger-border-hover: 1px solid var(--nyx-color-danger-border-softer);--button-outline-danger-color-hover: var(--nyx-color-danger-content-strong);--button-outline-warning-background-hover: var(--nyx-color-warning-background-softer-hover);--button-outline-warning-border-hover: 1px solid var(--nyx-color-warning-border-softer);--button-outline-warning-color-hover: var(--nyx-color-warning-content-strong);--button-outline-info-background-hover: var(--nyx-color-info-background-softer-hover);--button-outline-info-border-hover: 1px solid var(--nyx-color-info-border-softer);--button-outline-info-color-hover: var(--nyx-color-info-content-default);--button-outline-success-background-hover: var(--nyx-color-success-background-softer-hover);--button-outline-success-border-hover: 1px solid var(--nyx-color-success-border-softer);--button-outline-success-color-hover: var(--nyx-color-success-content-strong);--button-outline-background-active: var(--nyx-color-neutral-background-active);--button-outline-color-active: var(--nyx-color-neutral-content-primary);--button-outline-warning-background-active: var(--nyx-color-warning-background-strong);--button-outline-warning-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-danger-background-active: var(--nyx-color-danger-background-strong);--button-outline-danger-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-info-background-active: var(--nyx-color-info-background-strong);--button-outline-info-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-success-background-active: var(--nyx-color-success-background-strong);--button-outline-success-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-disabled-color: var(--nyx-color-neutral-content-disabled);--button-outline-disabled-border: 1px solid var(--nyx-color-neutral-border-disable);--button-ghost-color: var(--nyx-color-neutral-content-primary);--button-ghost-warning-color: var(--nyx-color-warning-content-default);--button-ghost-danger-color: var(--nyx-color-danger-content-default);--button-ghost-info-color: var(--nyx-color-info-content-default);--button-ghost-success-color: var(--nyx-color-success-content-default);--button-ghost-background: transparent;--button-ghost-neutral-color-hover: var(--nyx-color-neutral-content-tertiary);--button-ghost-warning-color-hover: var(--nyx-color-warning-content-hover);--button-ghost-danger-color-hover: var(--nyx-color-danger-content-hover);--button-ghost-info-color-hover: var(--nyx-color-info-content-hover);--button-ghost-success-color-hover: var(--nyx-color-success-content-hover);--button-ghost-neutral-color-active: var(--nyx-color-neutral-content-secondary);--button-ghost-warning-color-active: var(--nyx-color-warning-content-strong);--button-ghost-danger-color-active: var(--nyx-color-danger-content-strong);--button-ghost-info-color-active: var(--nyx-color-info-content-strong);--button-ghost-success-color-active: var(--nyx-color-success-content-strong);--button-loading-line-height: calc(var(--nyx-label-medium-line-height) - 4px);--button-icon-background-hover: var(--nyx-color-brand-background-softer-hover);--button-icon-border-hover: 1px solid var(--nyx-color-brand-border-hover);--button-icon-color-disabled: var(--nyx-color-neutral-content-disabled);--button-icon-border-disabled: 1px solid var(--nyx-color-neutral-border-disable);--button-icon-border-with-border: 1px solid var(--nyx-color-neutral-border-active);--button-icon-border-radius-with-border: var(--nyx-radii-2xs);--button-icon-color: var(--nyx-color-neutral-content-primary);--button-icon-border-radius: var(--nyx-radii-100);--button-icon-small-icon-font-size: var(--nyx-label-small-font-size);--button-icon-medium-icon-font-size: var(--nyx-label-medium-font-size);--button-icon-large-icon-font-size: var(--nyx-heading-h6-font-size);--button-icon-xlarge-icon-font-size: var(--nyx-heading-h4-font-size);box-sizing:border-box;display:inline-flex}:host([block]){width:100%}*{box-sizing:inherit}button.brand:not([disabled]):not(.loading):hover,button.brand:not([disabled]):not(.loading):active,button.warning:not([disabled]):not(.loading):hover,button.warning:not([disabled]):not(.loading):active,button.danger:not([disabled]):not(.loading):hover,button.danger:not([disabled]):not(.loading):active,button.info:not([disabled]):not(.loading):hover,button.info:not([disabled]):not(.loading):active,button.success:not([disabled]):not(.loading):hover,button.success:not([disabled]):not(.loading):active{color:var(--button-color-inverse)}button{display:inline-flex;padding:var(--button-padding);align-items:center;justify-content:center;gap:var(--button-gap);border-radius:var(--button-border-radius);color:var(--button-color);cursor:pointer;border:none;text-align:center;font-family:var(--button-font-family);font-size:var(--button-font-size);font-style:normal;font-weight:600;line-height:var(--button-line-height)}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}button.icon-right{flex-direction:row-reverse}button.small{padding:var(--button-small-padding);font-size:var(--button-small-font-size);line-height:var(--button-small-line-height)}button.medium{padding:var(--button-medium-padding)}button.block{width:100%}button.brand{background-color:var(--button-brand-background)}button.warning{background-color:var(--button-warning-background)}button.danger{background-color:var(--button-danger-background)}button.info{background-color:var(--button-info-background)}button.success{background-color:var(--button-success-background)}button.ghost{color:var(--button-ghost-color);background-color:var(--button-ghost-background)}button.ghost.danger{color:var(--button-ghost-danger-color);background-color:var(--button-ghost-background)}button.ghost.warning{color:var(--button-ghost-warning-color);background-color:var(--button-ghost-background)}button.ghost.info{color:var(--button-ghost-info-color);background-color:var(--button-ghost-background)}button.ghost.success{color:var(--button-ghost-success-color);background-color:var(--button-ghost-background)}button.brand:not([disabled]):not(.loading):hover{background-color:var(--button-brand-background-hover);color:var(--button-color-inverse)}button.warning:not([disabled]):not(.loading):hover{background-color:var(--button-warning-background-hover);color:var(--button-color-inverse)}button.danger:not([disabled]):not(.loading):hover{background-color:var(--button-danger-background-hover);color:var(--button-color-inverse)}button.info:not([disabled]):not(.loading):hover{background-color:var(--button-info-background-hover);color:var(--button-color-inverse)}button.outline:not([disabled]):not(.loading):hover{background-color:var(--button-success-background-hover);color:var(--button-color-inverse)}button.brand:not([disabled]):not(.loading):active{background-color:var(--button-brand-background-active)}button.warning:not([disabled]):not(.loading):active{background-color:var(--button-warning-background-active)}button.danger:not([disabled]):not(.loading):active{background-color:var(--button-danger-background-active)}button.info:not([disabled]):not(.loading):active{background-color:var(--button-info-background-active)}button.success:not([disabled]):not(.loading):active{background-color:var(--button-success-background-active)}button.outline:not([disabled]):not(.loading):active{background-color:var(--button-outline-background-active);color:var(--button-outline-color-active)}button.outline.warning:not([disabled]):not(.loading):active{background-color:var(--button-outline-warning-background-active);color:var(--button-outline-warning-background-active)}button.outline.danger:not([disabled]):not(.loading):active{background-color:var(--button-outline-danger-background-active);color:var(--button-outline-danger-background-active)}button.outline.info:not([disabled]):not(.loading):active{background-color:var(--button-outline-info-background-active);color:var(--button-outline-info-background-active)}button.outline.success:not([disabled]):not(.loading):active{background-color:var(--button-outline-success-background-active);color:var(--button-outline-success-background-active)}button.ghost:not([disabled]):not(.loading):active{background-color:var(--button-ghost-background-active);color:var(--button-ghost-neutral-color-active)}button.ghost.warning:not([disabled]):not(.loading):active{background-color:var(--button-warning-background-active);color:var(--button-ghost-warning-color-active)}button.ghost.danger:not([disabled]):not(.loading):active{background-color:var(--button-danger-background-active);color:var(--button-ghost-danger-color-active)}button.ghost.info:not([disabled]):not(.loading):active{background-color:var(--button-info-background-active);color:var(--button-ghost-info-color-active)}button.ghost.success:not([disabled]):not(.loading):active{background-color:var(--button-success-background-active);color:var(--button-ghost-success-color-active)}button:disabled{background:var(--button-disabled-background);color:var(--button-disabled-color);cursor:default}button.outline{background-color:transparent;border:var(--button-outline-border);color:var(--button-outline-color)}button.outline.danger{color:var(--button-outline-danger-color)}button.outline.warning{color:var(--button-outline-warning-color)}button.outline.info{color:var(--button-outline-info-color)}button.outline.success{color:var(--button-outline-success-color)}button.outline:not([disabled]):not(.loading):hover{background-color:var(--button-outline-background-hover);border:var(--button-outline-border-hover);color:var(--button-outline-color)}button.outline.danger:not([disabled]):not(.loading):hover{background-color:var(--button-outline-danger-background-hover);border:var(--button-outline-danger-border-hover);color:var(--button-outline-danger-color-hover)}button.outline.warning:not([disabled]):not(.loading):hover{background-color:var(--button-outline-warning-background-hover);border:var(--button-outline-warning-border-hover);color:var(--button-outline-warning-color-hover)}button.outline.info:not([disabled]):not(.loading):hover{background-color:var(--button-outline-info-background-hover);border:var(--button-outline-info-border-hover);color:var(--button-outline-info-color-hover)}button.outline.success:not([disabled]):not(.loading):hover{background-color:var(--button-outline-success-background-hover);border:var(--button-outline-success-border-hover);color:var(--button-outline-success-color-hover)}button.outline:disabled{border:1px solid var(--nyx-color-neutral-border-disable);background:var(--nyx-color-neutral-background-primary)}button.ghost{background-color:transparent;border:none;color:var(--button-ghost-color)}button.ghost.info{color:var(--button-ghost-info-color);background-color:transparent}button.ghost.danger{color:var(--button-ghost-danger-color);background-color:transparent}button.ghost.warning{color:var(--button-ghost-warning-color);background-color:transparent}button.ghost.success{color:var(--button-ghost-success-color);background-color:transparent}button.ghost:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-color)}button.ghost.danger:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-danger-color-hover)}button.ghost.warning:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-warning-color-hover)}button.ghost.info:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-info-color-hover)}button.ghost.success:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-success-color-hover)}button.ghost:disabled{background-color:var(--button-ghost-background);color:var(--button-disabled-color)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading nyx-icon{animation:spin 1s linear infinite}button.loading{cursor:default;line-height:var(--button-loading-line-height)}button.button-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:var(--button-icon-border-radius);align-self:stretch;border:none;cursor:pointer;background-color:transparent;color:var(--button-icon-color);text-align:center}button.button-icon:not([disabled]):hover{background-color:var(--button-icon-background-hover)!important}button.button-icon.neutral:not([disabled]):hover{background-color:var(--button-neutral-background-hover)!important}button.button-icon[disabled]{color:var(--button-icon-color-disabled);cursor:default}button:focus-visible,button:focus-within{outline:2px solid var(--button-outline-color);outline-offset:2px}button.brand:focus-visible,button.brand:focus-within{background-color:var(--button-brand-background-hover)}button.warning:focus-visible,button.warning:focus-within{background-color:var(--button-warning-background-hover)}button.danger:focus-visible,button.danger:focus-within{background-color:var(--button-danger-background-hover)}button.info:focus-visible,button.info:focus-within{background-color:var(--button-info-background-hover)}button.success:focus-visible,button.success:focus-within{background-color:var(--button-success-background-hover)}button.ghost:focus-visible,button.ghost:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-color)}button.ghost.danger:focus-visible,button.ghost.danger:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-danger-color-hover)}button.ghost.info:focus-visible,button.ghost.info:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-info-color-hover)}button.ghost.success:focus-visible,button.ghost.success:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-success-color-hover)}button.ghost.warning:focus-visible,button.ghost.warning:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-warning-color-hover)}button.outline:focus-visible,button.outline:focus-within{background-color:var(--button-outline-background-hover)}button.outline.danger:focus-visible,button.outline.danger:focus-within{background-color:var(--button-outline-danger-background-hover)}button.outline.warning:focus-visible,button.outline.warning:focus-within{background-color:var(--button-outline-warning-background-hover)}button.outline.info:focus-visible,button.outline.info:focus-within{background-color:var(--button-outline-info-background-hover)}button.outline.success:focus-visible,button.outline.success:focus-within{background-color:var(--button-outline-success-background-hover)}button.button-icon:focus-visible,button.button-icon:focus-within{background-color:var( --button-icon-background-focus, var(--button-icon-background-hover) )!important}button.button-icon.neutral:focus-visible,button.button-icon.neutral:focus-within{background-color:var( --button-icon-background-focus, var(--button-neutral-background-hover) )!important}:host(.active) button.button-icon:not([disabled]){background-color:var( --button-icon-background-focus, var(--button-icon-background-hover) )!important}button.button-icon.button-icon-with-border{border:var(--button-icon-border-with-border);border-radius:var(--button-icon-border-radius-with-border)}button.button-icon.button-icon-with-border:not([disabled]):hover{border:var(--button-icon-border-hover)}button.button-icon.button-icon-with-border[disabled]{border:var(--button-icon-border-disabled)}button.button-icon nyx-icon{font-style:normal;font-weight:400;line-height:normal}button.button-icon.small{width:var(--button-icon-override-width, 24px);height:var(--button-icon-override-height, 24px)}button.button-icon.small nyx-icon{font-size:var(--button-icon-small-icon-font-size)}button.button-icon.medium{width:var(--button-icon-override-width, 30px);height:var(--button-icon-override-height, 30px)}button.button-icon.medium nyx-icon{font-size:var(--button-icon-medium-icon-font-size)}button.button-icon.large{width:var(--button-icon-override-width, 34px);height:var(--button-icon-override-height, 34px)}button.button-icon.large nyx-icon{font-size:var(--button-icon-large-icon-font-size)}button.button-icon.xlarge{width:var(--button-icon-override-width, 40px);height:var(--button-icon-override-height, 40px)}button.button-icon.xlarge nyx-icon{font-size:var(--button-icon-xlarge-icon-font-size)}";var G=Object.defineProperty,b=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&G(o,e,t),t};const d=(p=class extends a.LitElement{constructor(){super(...arguments),this.variant="brand",this.size="large",this.hierarchy="solid",this.iconPosition="left",this.disabled=!1,this.loading=!1,this.block=!1,this.buttonIcon=!1,this.buttonIconWithBorder=!1}connectedCallback(){super.connectedCallback(),this._hostAriaObserver=new MutationObserver(()=>{this.requestUpdate()}),this._hostAriaObserver.observe(this,{attributes:!0,attributeFilter:[...p._HOST_ARIA_ATTRS]})}willUpdate(o){this._pullHostAriaIntoShadowButton(),super.willUpdate(o)}disconnectedCallback(){var o;(o=this._hostAriaObserver)==null||o.disconnect(),this._hostAriaObserver=void 0,super.disconnectedCallback()}_pullHostAriaIntoShadowButton(){var o,e;if(this.hasAttribute("aria-label")){const n=this.getAttribute("aria-label")??"",t=n.trim()===""?void 0:n;t!==this._innerAriaLabel&&(this._innerAriaLabel=t),this.removeAttribute("aria-label")}if(this.hasAttribute("aria-labelledby")){const n=(o=this.getAttribute("aria-labelledby"))==null?void 0:o.trim(),t=n===""?void 0:n;t!==this._innerAriaLabelledby&&(this._innerAriaLabelledby=t),this.removeAttribute("aria-labelledby")}if(this.hasAttribute("aria-describedby")){const n=(e=this.getAttribute("aria-describedby"))==null?void 0:e.trim(),t=n===""?void 0:n;t!==this._innerAriaDescribedby&&(this._innerAriaDescribedby=t),this.removeAttribute("aria-describedby")}}_handleClick(o){if(this.disabled||this.loading){o.preventDefault(),o.stopPropagation();return}o.stopPropagation(),this.click(void 0,{native:!0,bubbles:!0,composed:!0})}render(){const o=this.buttonIcon||this.buttonIconWithBorder,e={brand:this.variant==="brand",info:this.variant==="info",warning:this.variant==="warning",danger:this.variant==="danger",neutral:this.variant==="neutral",success:this.variant==="success",small:this.size==="small",medium:this.size==="medium",large:this.size==="large",xlarge:this.size==="xlarge",outline:this.hierarchy==="outline",ghost:this.hierarchy==="ghost","icon-right":this.iconPosition==="right",loading:this.loading,block:this.block,"button-icon":o,"button-icon-with-border":this.buttonIconWithBorder};return a.html`
22
+ <button
23
+ type="button"
24
+ ?disabled=${this.disabled}
25
+ class=${z.classMap(e)}
26
+ aria-label=${this._innerAriaLabel??a.nothing}
27
+ aria-labelledby=${this._innerAriaLabelledby??a.nothing}
28
+ aria-describedby=${this._innerAriaDescribedby??a.nothing}
29
+ @click=${this._handleClick}
30
+ >
31
+ ${this.loading?"":a.html`<slot name="icon"></slot>`}
32
+ ${this.loading?a.html`<div class="loading"><nyx-icon svg=${h.spinnerThird}></nyx-icon></div>`:""}
33
+ ${o?"":a.html`<slot></slot>`}
34
+ </button>
35
+ `}},p._HOST_ARIA_ATTRS=["aria-label","aria-labelledby","aria-describedby"],p.styles=a.unsafeCSS(j),p);b([l.property({type:String,reflect:!0})],d.prototype,"variant"),b([l.property({type:String,reflect:!0})],d.prototype,"size"),b([l.property({type:String,reflect:!0})],d.prototype,"hierarchy"),b([l.property()],d.prototype,"iconPosition"),b([l.property({type:Boolean,reflect:!0})],d.prototype,"disabled"),b([l.property({type:Boolean,reflect:!0})],d.prototype,"loading"),b([l.property({type:Boolean,reflect:!0})],d.prototype,"block"),b([l.property({attribute:"button-icon",type:Boolean,reflect:!0})],d.prototype,"buttonIcon"),b([l.property({attribute:"button-icon-with-border",type:Boolean,reflect:!0})],d.prototype,"buttonIconWithBorder"),b([L()],d.prototype,"click"),b([l.state()],d.prototype,"_innerAriaLabel"),b([l.state()],d.prototype,"_innerAriaLabelledby"),b([l.state()],d.prototype,"_innerAriaDescribedby");let J=d;customElements.get("nyx-button")||customElements.define("nyx-button",J);var K=Object.defineProperty,w=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&K(o,e,t),t};const A=class A extends a.LitElement{constructor(){super(...arguments),this._items=[],this._expandedIds=new Set,this._searchTerm=""}updated(o){o.has("options")&&this.options&&(this._items=JSON.parse(JSON.stringify(this.options.items)),this.options.defaultExpandedLevel!==void 0&&this._expandedIds.size===0&&this._expandToLevel(this._items,0,this.options.defaultExpandedLevel),this._generateLightDomIcons())}_generateLightDomIcons(){var n;if(this.querySelectorAll("[data-auto-generated]").forEach(t=>t.remove()),!this.options)return;(n=this.options.columns)==null||n.forEach((t,r)=>{t.icon&&this._createIconElement(t.icon,`generated-header-icon-${r}`)});const e=t=>{t.icon&&this._createIconElement(t.icon,`generated-tree-icon-${t.id}`),t.children&&t.children.forEach(e)};this._items.forEach(e)}_createIconElement(o,e){const n=document.createElement("nyx-icon");let t="regular";typeof o=="string"?n.setAttribute("name",o):(o.name&&n.setAttribute("name",o.name),o.variant&&(t=o.variant),o.src&&n.setAttribute("src",o.src),o.svg&&(n.svg=o.svg)),n.setAttribute("variant",t),n.setAttribute("slot",e),n.setAttribute("data-auto-generated",""),this.appendChild(n)}_expandToLevel(o,e,n){o.forEach(t=>{e<n&&(this._expandedIds.add(t.id),t.children&&this._expandToLevel(t.children,e+1,n))})}_isColumnDisabled(o,e){return!!o.disabledColumns&&o.disabledColumns.includes(e)}_isNodeSelected(o,e){return this._isColumnDisabled(o,e)?!1:(o.selectedColumns||[]).includes(e)}_isIndeterminate(o,e){if(!o.children||o.children.length===0)return!1;const n=this._getFlatDescendants(o),t=n.filter(r=>this._isNodeSelected(r,e)).length;return t>0&&t<n.length}_allDescendantsSelected(o,e){return!o.children||o.children.length===0?this._isNodeSelected(o,e):this._getFlatDescendants(o).every(t=>this._isNodeSelected(t,e))}_getFlatDescendants(o){let e=[];return o.children&&o.children.forEach(n=>{e.push(n),e=e.concat(this._getFlatDescendants(n))}),e}_handleCheck(o,e){const t=!this._isNodeSelected(o,e);this._toggleNodeState(o,e,t),o.children&&this._getFlatDescendants(o).forEach(r=>{this._toggleNodeState(r,e,t)}),this._updateParents(this._items,o.id,e),this._triggerChange()}_toggleNodeState(o,e,n){if(this._isColumnDisabled(o,e))return;o.selectedColumns||(o.selectedColumns=[]);const t=o.selectedColumns.indexOf(e);n&&t===-1?o.selectedColumns.push(e):!n&&t>-1&&o.selectedColumns.splice(t,1)}_updateParents(o,e,n){for(const t of o)if(t.children&&t.children.some(r=>r.id===e||this._updateParents(t.children,e,n))){const r=t.children.every(i=>this._allDescendantsSelected(i,n));return this._toggleNodeState(t,n,r),!0}return!1}_isRowAllSelected(o){var n;if(!((n=this.options)!=null&&n.columns))return!1;const e=this.options.columns.every(t=>this._isColumnDisabled(o,t.id)?!0:this._isNodeSelected(o,t.id));return o.children&&o.children.length>0?e&&o.children.every(t=>this._isRowAllSelected(t)):e}_isRowIndeterminate(o){var t;if(this._isRowAllSelected(o)||!((t=this.options)!=null&&t.columns))return!1;const e=this.options.columns.some(r=>this._isNodeSelected(o,r.id)),n=o.children?o.children.some(r=>this._isRowAllSelected(r)||this._isRowIndeterminate(r)):!1;return e||n}_handleRowCheck(o){var t;const n=!this._isRowAllSelected(o);this._toggleRowRecursively(o,n),(t=this.options)!=null&&t.columns&&this.options.columns.forEach(r=>{this._updateParents(this._items,o.id,r.id)}),this._triggerChange()}_toggleRowRecursively(o,e){var n;(n=this.options)!=null&&n.columns&&(e?this.options.columns.forEach(t=>{this._isColumnDisabled(o,t.id)||(o.selectedColumns||(o.selectedColumns=[]),o.selectedColumns.includes(t.id)||o.selectedColumns.push(t.id))}):o.selectedColumns=[],o.children&&o.children.forEach(t=>this._toggleRowRecursively(t,e)))}_triggerChange(){this._items=[...this._items],this.onChange({items:this._items},{bubbles:!0,composed:!0})}async _toggleExpand(o,e=!1){var r;if(!(o.children&&o.children.length>0))return;const t=this._expandedIds.has(o.id);if(t?this._expandedIds.delete(o.id):this._expandedIds.add(o.id),this._expandedIds=new Set(this._expandedIds),!t&&e&&o.children&&o.children[0]){await this.updateComplete;const i=o.children[0].id,x=(r=this.shadowRoot)==null?void 0:r.querySelector(`#row-${i}`);x&&x.focus()}}_handleRowKeyDown(o,e){var t;const n=o.currentTarget;if((o.key==="Enter"||o.key===" ")&&o.target===n){o.preventDefault(),this._enableChildren(n);const r=n.querySelector("nyx-checkbox input, nyx-button:not([disabled])");if(r)if(r instanceof HTMLInputElement)r.focus();else{const i=(t=r.shadowRoot)==null?void 0:t.querySelector("button");i==null||i.focus()}return}o.key==="Escape"&&(o.preventDefault(),o.stopPropagation(),this._disableChildren(n),n.focus())}_handleRowFocusOut(o){const e=o.currentTarget;e.contains(o.relatedTarget)||this._disableChildren(e)}_enableChildren(o){const e=o.querySelectorAll('input[slot="input"]'),n=o.querySelectorAll("nyx-button");e.forEach(t=>t.setAttribute("tabindex","0")),n.forEach(t=>t.removeAttribute("tabindex"))}_disableChildren(o){const e=o.querySelectorAll('input[slot="input"]'),n=o.querySelectorAll("nyx-button");e.forEach(t=>t.setAttribute("tabindex","-1")),n.forEach(t=>t.setAttribute("tabindex","-1"))}_clearAllFocus(){var n,t;const o=(n=this.shadowRoot)==null?void 0:n.activeElement;o==null||o.blur();const e=(t=this.shadowRoot)==null?void 0:t.querySelectorAll(".node-row");e==null||e.forEach(r=>{this._disableChildren(r)})}render(){var o,e,n;return a.html`
36
+ <div class="nyx-treeview" @mousedown=${()=>this._clearAllFocus()}>
37
+ <div class="search-container">
38
+ <nyx-input>
39
+ <nyx-icon .svg=${h.magnifyingGlass} slot="iconLeft"></nyx-icon>
40
+ <input
41
+ class="search-input"
42
+ type="text"
43
+ slot="field"
44
+ placeholder="Search..."
45
+ @input=${t=>this._searchTerm=t.target.value}
46
+ />
47
+ </nyx-input>
48
+ </div>
49
+
50
+ <div class="tree-scroll">
51
+ <div class="tree-header">
52
+ <div class="tree-title">${(o=this.options)==null?void 0:o.title}</div>
53
+ <div class="header-columns">
54
+ ${(n=(e=this.options)==null?void 0:e.columns)==null?void 0:n.map((t,r)=>a.html`
55
+ <div class="col-cell" title="${t.title||""}">
56
+ <slot name="generated-header-icon-${r}"></slot>
57
+ </div>
58
+ `)}
59
+ </div>
60
+ </div>
61
+
62
+ <div class="tree-body">${this._renderNodes(this._items,0)}</div>
63
+ </div>
64
+ </div>
65
+ `}_renderNodes(o,e){var r;const n=o.filter(i=>!this._searchTerm||i.label.toLowerCase().includes(this._searchTerm.toLowerCase())||i.children&&i.children.some(x=>x.label.toLowerCase().includes(this._searchTerm.toLowerCase()))),t=16+e*24-((r=this.options)!=null&&r.showRowSelection?4:0);return O.repeat(n,i=>i.id,i=>{var T,P,D,q;const x=this._expandedIds.has(i.id),I=i.children&&i.children.length>0,Q=this._isRowAllSelected(i),X=this._isRowIndeterminate(i),Y=!!((T=this.options)!=null&&T.showRowSelection);return a.html`
66
+ <div class="node-wrapper">
67
+ <div
68
+ id="row-${i.id}"
69
+ class=${E.classMap({"node-row":!0,selectable:Y,selected:Q||X})}
70
+ style="padding-left: ${t}px;"
71
+ tabindex="0"
72
+ @mousedown=${s=>s.preventDefault()}
73
+ @keydown=${s=>this._handleRowKeyDown(s,i)}
74
+ @focusout=${this._handleRowFocusOut}
75
+ >
76
+ <div class="node-info">
77
+ ${(P=this.options)!=null&&P.showRowSelection?a.html`
78
+ <div class="row-checkbox">
79
+ <nyx-checkbox
80
+ ?checked=${this._isRowAllSelected(i)}
81
+ ?indeterminate=${this._isRowIndeterminate(i)}
82
+ @click=${s=>{s.stopPropagation(),this._handleRowCheck(i)}}
83
+ >
84
+ <input type="checkbox" slot="input" tabindex="-1" />
85
+ </nyx-checkbox>
86
+ </div>
87
+ `:a.nothing}
88
+ ${I?a.html`
89
+ <nyx-button
90
+ class="expander"
91
+ size="small"
92
+ button-icon
93
+ tabindex="-1"
94
+ hierarchy="ghost"
95
+ @click=${()=>this._toggleExpand(i,!1)}
96
+ @keydown=${s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),s.stopPropagation(),this._toggleExpand(i,!0))}}
97
+ >
98
+ <nyx-icon
99
+ slot="icon"
100
+ class=${E.classMap({expanded:x})}
101
+ .svg=${h.chevronRightRegular}
102
+ ></nyx-icon>
103
+ </nyx-button>
104
+ `:a.nothing}
105
+ <div class="node-type-icon-wrapper">
106
+ <slot name="generated-tree-icon-${i.id}"></slot>
107
+ </div>
108
+ <span class="node-text" title="${i.label}"
109
+ >${i.label}</span
110
+ >
111
+ </div>
112
+ <div class="node-columns">
113
+ ${(q=(D=this.options)==null?void 0:D.columns)==null?void 0:q.map(s=>a.html`
114
+ <div class="col-cell">
115
+ <nyx-checkbox
116
+ ?checked=${this._allDescendantsSelected(i,s.id)}
117
+ ?indeterminate=${this._isIndeterminate(i,s.id)}
118
+ ?disabled=${this._isColumnDisabled(i,s.id)}
119
+ @click=${()=>this._handleCheck(i,s.id)}
120
+ >
121
+ <input type="checkbox" slot="input" tabindex="-1" />
122
+ </nyx-checkbox>
123
+ </div>
124
+ `)}
125
+ </div>
126
+ </div>
127
+ ${x&&I?a.html`<div class="node-children">
128
+ ${this._renderNodes(i.children,e+1)}
129
+ </div>`:""}
130
+ </div>
131
+ `})}};A.styles=a.unsafeCSS(N);let v=A;w([l.property({type:Object})],v.prototype,"options"),w([l.state()],v.prototype,"_items"),w([l.state()],v.prototype,"_expandedIds"),w([l.state()],v.prototype,"_searchTerm"),w([L("nyx-change")],v.prototype,"onChange"),customElements.get("nyx-treeview")||customElements.define("nyx-treeview",v),u.NyxTreeview=v,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@nyx-ds/treeview",
3
+ "private": false,
4
+ "version": "0.1.0",
5
+ "type": "module",
6
+ "main": "dist/treeview.js",
7
+ "module": "dist/treeview.js",
8
+ "types": "treeview.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "build": "vite build"
14
+ },
15
+ "peerDependencies": {
16
+ "@nyx-ds/button": "^0.1.3",
17
+ "@nyx-ds/checkbox": "^0.1.4",
18
+ "@nyx-ds/core": "^0.1.11",
19
+ "@nyx-ds/icon": "^0.1.1",
20
+ "@nyx-ds/input": "^0.1.6",
21
+ "lit": "^3.2.1",
22
+ "lit-html": "^3.2.1"
23
+ },
24
+ "gitHead": "322d90fcbbce1bf63b8ea2bcdedc48a98e8b5f62"
25
+ }