@wavelengthusaf/web-components 1.13.0 → 1.15.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.
- package/dist/cjs/index.cjs +379 -203
- package/dist/cjs/index.d.cts +45 -2
- package/dist/esm/index.d.ts +45 -2
- package/dist/esm/index.js +369 -193
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -28,17 +28,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
var require_react_production_min = __commonJS({
|
|
29
29
|
"../../../node_modules/react/cjs/react.production.min.js"(exports) {
|
|
30
30
|
"use strict";
|
|
31
|
-
var l = Symbol.for("react.element");
|
|
32
|
-
var n = Symbol.for("react.portal");
|
|
33
|
-
var p = Symbol.for("react.fragment");
|
|
34
|
-
var q = Symbol.for("react.strict_mode");
|
|
35
|
-
var r = Symbol.for("react.profiler");
|
|
36
|
-
var t = Symbol.for("react.provider");
|
|
37
|
-
var u = Symbol.for("react.context");
|
|
38
|
-
var v = Symbol.for("react.forward_ref");
|
|
39
|
-
var w = Symbol.for("react.suspense");
|
|
40
|
-
var x = Symbol.for("react.memo");
|
|
41
|
-
var y = Symbol.for("react.lazy");
|
|
31
|
+
var l = /* @__PURE__ */ Symbol.for("react.element");
|
|
32
|
+
var n = /* @__PURE__ */ Symbol.for("react.portal");
|
|
33
|
+
var p = /* @__PURE__ */ Symbol.for("react.fragment");
|
|
34
|
+
var q = /* @__PURE__ */ Symbol.for("react.strict_mode");
|
|
35
|
+
var r = /* @__PURE__ */ Symbol.for("react.profiler");
|
|
36
|
+
var t = /* @__PURE__ */ Symbol.for("react.provider");
|
|
37
|
+
var u = /* @__PURE__ */ Symbol.for("react.context");
|
|
38
|
+
var v = /* @__PURE__ */ Symbol.for("react.forward_ref");
|
|
39
|
+
var w = /* @__PURE__ */ Symbol.for("react.suspense");
|
|
40
|
+
var x = /* @__PURE__ */ Symbol.for("react.memo");
|
|
41
|
+
var y = /* @__PURE__ */ Symbol.for("react.lazy");
|
|
42
42
|
var z = Symbol.iterator;
|
|
43
43
|
function A(a) {
|
|
44
44
|
if (null === a || "object" !== typeof a) return null;
|
|
@@ -308,19 +308,19 @@ var require_react_development = __commonJS({
|
|
|
308
308
|
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
|
|
309
309
|
}
|
|
310
310
|
var ReactVersion = "18.3.1";
|
|
311
|
-
var REACT_ELEMENT_TYPE = Symbol.for("react.element");
|
|
312
|
-
var REACT_PORTAL_TYPE = Symbol.for("react.portal");
|
|
313
|
-
var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
|
|
314
|
-
var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
|
|
315
|
-
var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
|
|
316
|
-
var REACT_PROVIDER_TYPE = Symbol.for("react.provider");
|
|
317
|
-
var REACT_CONTEXT_TYPE = Symbol.for("react.context");
|
|
318
|
-
var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
|
|
319
|
-
var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
|
|
320
|
-
var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
|
|
321
|
-
var REACT_MEMO_TYPE = Symbol.for("react.memo");
|
|
322
|
-
var REACT_LAZY_TYPE = Symbol.for("react.lazy");
|
|
323
|
-
var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
|
|
311
|
+
var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element");
|
|
312
|
+
var REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for("react.portal");
|
|
313
|
+
var REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for("react.fragment");
|
|
314
|
+
var REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for("react.strict_mode");
|
|
315
|
+
var REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for("react.profiler");
|
|
316
|
+
var REACT_PROVIDER_TYPE = /* @__PURE__ */ Symbol.for("react.provider");
|
|
317
|
+
var REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for("react.context");
|
|
318
|
+
var REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref");
|
|
319
|
+
var REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for("react.suspense");
|
|
320
|
+
var REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for("react.suspense_list");
|
|
321
|
+
var REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo");
|
|
322
|
+
var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
|
|
323
|
+
var REACT_OFFSCREEN_TYPE = /* @__PURE__ */ Symbol.for("react.offscreen");
|
|
324
324
|
var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
|
|
325
325
|
var FAUX_ITERATOR_SYMBOL = "@@iterator";
|
|
326
326
|
function getIteratorFn(maybeIterable) {
|
|
@@ -1284,7 +1284,7 @@ var require_react_development = __commonJS({
|
|
|
1284
1284
|
}
|
|
1285
1285
|
var REACT_MODULE_REFERENCE;
|
|
1286
1286
|
{
|
|
1287
|
-
REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
|
|
1287
|
+
REACT_MODULE_REFERENCE = /* @__PURE__ */ Symbol.for("react.module.reference");
|
|
1288
1288
|
}
|
|
1289
1289
|
function isValidElementType(type) {
|
|
1290
1290
|
if (typeof type === "string" || typeof type === "function") {
|
|
@@ -3183,7 +3183,7 @@ if (!customElements.get("wavelength-progress-bar")) {
|
|
|
3183
3183
|
}
|
|
3184
3184
|
|
|
3185
3185
|
// src/web-components/wavelength-input.template.html
|
|
3186
|
-
var wavelength_input_template_default = '<style>\n :host {\n display: block;\n width: 100%;\n font-family: sans-serif;\n --wavelength-container-background: #f8f8f8;\n --wavelength-label-background: #ffffff;\n }\n\n .field-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .input-wrapper {\n width: 100%;\n height: 100%;\n }\n\n .floating-label {\n position: absolute;\n top: -0.325rem;\n left: 12px;\n font-size: 0.75rem;\n line-height: 1;\n color: var(--wavelength-label-color, #666666);\n padding: 0 4px;\n z-index: 1;\n pointer-events: none;\n user-select: none;\n }\n\n .floating-label::before,\n .floating-label::after {\n content: "";\n position: absolute;\n left: 0;\n width: 100%;\n z-index: -1;\n }\n\n .floating-label::before {\n top: 0;\n height: 50%;\n background: var(--wavelength-container-background, white);\n }\n\n .floating-label::after {\n bottom: 0;\n height: 50%;\n background: var(--wavelength-label-background, #ffffff);\n }\n\n :host([disabled]) .floating-label::before {\n opacity: 0;\n }\n\n input {\n font-size: 16px;\n padding: 16.5px 14px;\n border: 1px solid var(--wavelength-border-color, #cccccc);\n border-radius: 8px;\n width: 100%;\n box-sizing: border-box;\n background-color: var(--wavelength-background, #ffffff);\n transition: border-color 0.2s ease;\n overflow: auto;\n font-family: inherit;\n }\n\n input:focus {\n outline: none;\n }\n\n input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :host([disabled]) .floating-label::after {\n opacity: 0;\n cursor: not-allowed;\n }\n\n input::placeholder {\n color: #999999;\n }\n\n .helper-message {\n margin-top: 4px;\n font-size: 0.75rem;\n max-width: 100%;\n word-wrap: break-word;\n white-space: normal;\n overflow-wrap: break-word;\n color: #000000;\n padding-left: 14px;\n margin-left: 2px;\n user-select: none;\n }\n\n .required-marker {\n color: red;\n font-weight: lighter;\n font-size: 0.75rem;\n }\n\n .clear-button {\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 1.25 rem;\n color: #666666;\n cursor: pointer;\n opacity: 0.5;\n user-select: none;\n transition: opacity 0.2s ease;\n z-index: 2;\n display: none;\n line-height: 1;\n padding: 0 4px;\n }\n\n .clear-button:hover {\n opacity: 1;\n }\n\n :host([disabled]) .clear-button {\n display: none;\n }\n</style>\n<div class="field-wrapper">\n <label class="floating-label" id="floating-label"></label>\n <div class="input-wrapper"></div>\n <div class="clear-button" id="clear-button" title="Clear input">\u2715</div>\n</div>\n<div class="helper-message" id="helper"></div>\n';
|
|
3186
|
+
var wavelength_input_template_default = '<style>\n :host {\n display: block;\n width: 100%;\n font-family: sans-serif;\n --wavelength-container-background: #f8f8f8;\n --wavelength-label-background: #ffffff;\n }\n\n .field-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .input-wrapper {\n width: 100%;\n height: 100%;\n }\n\n .floating-label {\n position: absolute;\n top: -0.325rem;\n left: 12px;\n font-size: 0.75rem;\n line-height: 1;\n color: var(--wavelength-label-color, #666666);\n padding: 0 4px;\n z-index: 1;\n pointer-events: none;\n user-select: none;\n }\n\n .floating-label::before,\n .floating-label::after {\n content: "";\n position: absolute;\n left: 0;\n width: 100%;\n z-index: -1;\n }\n\n .floating-label::before {\n top: 0;\n height: 50%;\n background: var(--wavelength-container-background, white);\n }\n\n .floating-label::after {\n bottom: 0;\n height: 50%;\n background: var(--wavelength-label-background, #ffffff);\n }\n\n :host([disabled]) .floating-label::before {\n opacity: 0;\n }\n\n input,\n textarea {\n font-size: 16px;\n padding: 16.5px 14px;\n border: 1px solid var(--wavelength-border-color, #cccccc);\n border-radius: 8px;\n width: 100%;\n box-sizing: border-box;\n background-color: var(--wavelength-background, #ffffff);\n transition: border-color 0.2s ease;\n overflow: auto;\n font-family: inherit;\n display: block;\n }\n\n textarea {\n resize: vertical;\n min-height: 100px;\n }\n\n input:focus,\n textarea:focus {\n outline: none;\n }\n\n input:disabled,\n textarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :host([disabled]) .floating-label::after {\n opacity: 0;\n cursor: not-allowed;\n }\n\n input::placeholder,\n textarea::placeholder {\n color: #999999;\n }\n\n .helper-message {\n margin-top: 4px;\n font-size: 0.75rem;\n max-width: 100%;\n word-wrap: break-word;\n white-space: normal;\n overflow-wrap: break-word;\n color: #000000;\n padding-left: 14px;\n margin-left: 2px;\n user-select: none;\n }\n\n .required-marker {\n color: red;\n font-weight: lighter;\n font-size: 0.75rem;\n }\n\n .clear-button {\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 1.25 rem;\n color: #666666;\n cursor: pointer;\n opacity: 0.5;\n user-select: none;\n transition: opacity 0.2s ease;\n z-index: 2;\n display: none;\n line-height: 1;\n padding: 0 4px;\n }\n\n .clear-button:hover {\n opacity: 1;\n }\n\n :host([disabled]) .clear-button {\n display: none;\n }\n</style>\n<div class="field-wrapper">\n <label class="floating-label" id="floating-label"></label>\n <div class="input-wrapper"></div>\n <div class="clear-button" id="clear-button" title="Clear input">\u2715</div>\n</div>\n<div class="helper-message" id="helper"></div>\n';
|
|
3187
3187
|
|
|
3188
3188
|
// src/web-components/wavelength-input.ts
|
|
3189
3189
|
function getAncestor(el) {
|
|
@@ -3264,12 +3264,11 @@ var BaseWavelengthInput = class extends HTMLElement {
|
|
|
3264
3264
|
this.internals = this.attachInternals();
|
|
3265
3265
|
const shadow = this.attachShadow({ mode: "open" });
|
|
3266
3266
|
shadow.innerHTML = wavelength_input_template_default;
|
|
3267
|
-
this.inputEl = document.createElement("input");
|
|
3268
3267
|
this.labelEl = shadow.getElementById("floating-label");
|
|
3269
3268
|
this.helperEl = shadow.getElementById("helper");
|
|
3270
3269
|
this.clearButtonEl = shadow.getElementById("clear-button");
|
|
3271
3270
|
this.clearButtonEl.addEventListener("click", this._onClearClick);
|
|
3272
|
-
|
|
3271
|
+
this._ensureInputType();
|
|
3273
3272
|
shadow.appendChild(this.placeholderStyleEl);
|
|
3274
3273
|
}
|
|
3275
3274
|
static get observedAttributes() {
|
|
@@ -3304,9 +3303,33 @@ var BaseWavelengthInput = class extends HTMLElement {
|
|
|
3304
3303
|
"force-error",
|
|
3305
3304
|
"label",
|
|
3306
3305
|
"font-size",
|
|
3307
|
-
"font-family"
|
|
3306
|
+
"font-family",
|
|
3307
|
+
"multi-line"
|
|
3308
3308
|
];
|
|
3309
3309
|
}
|
|
3310
|
+
_ensureInputType() {
|
|
3311
|
+
const isMulti = this.hasAttribute("multi-line");
|
|
3312
|
+
const newTag = isMulti ? "textarea" : "input";
|
|
3313
|
+
if (this.inputEl && this.inputEl.tagName.toLowerCase() === newTag) {
|
|
3314
|
+
return;
|
|
3315
|
+
}
|
|
3316
|
+
const oldValue = this.inputEl ? this.inputEl.value : "";
|
|
3317
|
+
const newEl = document.createElement(newTag);
|
|
3318
|
+
if (this.inputEl) {
|
|
3319
|
+
this.inputEl.removeEventListener("input", this._onInput);
|
|
3320
|
+
this.inputEl.removeEventListener("blur", this._onBlur);
|
|
3321
|
+
this.inputEl.removeEventListener("focus", this._onFocus);
|
|
3322
|
+
this.inputEl.replaceWith(newEl);
|
|
3323
|
+
} else {
|
|
3324
|
+
this.shadowRoot.querySelector(".input-wrapper").appendChild(newEl);
|
|
3325
|
+
}
|
|
3326
|
+
this.inputEl = newEl;
|
|
3327
|
+
this.inputEl.value = oldValue;
|
|
3328
|
+
this.inputEl.addEventListener("input", this._onInput);
|
|
3329
|
+
this.inputEl.addEventListener("blur", this._onBlur);
|
|
3330
|
+
this.inputEl.addEventListener("focus", this._onFocus);
|
|
3331
|
+
this._applyAttributes();
|
|
3332
|
+
}
|
|
3310
3333
|
connectedCallback() {
|
|
3311
3334
|
["placeholder", "value", "input-type", "disabled", "id", "name"].forEach(this._upgradeProperty.bind(this));
|
|
3312
3335
|
this.validationType = this.getAttribute("validation-type") || "none";
|
|
@@ -3486,7 +3509,9 @@ var BaseWavelengthInput = class extends HTMLElement {
|
|
|
3486
3509
|
if (maxLength) this.inputEl.maxLength = Number(maxLength);
|
|
3487
3510
|
this.inputEl.placeholder = this.getAttribute("placeholder") || "";
|
|
3488
3511
|
this.inputEl.value = this.getAttribute("value") || "";
|
|
3489
|
-
this.inputEl
|
|
3512
|
+
if (this.inputEl instanceof HTMLInputElement) {
|
|
3513
|
+
this.inputEl.type = this.getAttribute("input-type") || "text";
|
|
3514
|
+
}
|
|
3490
3515
|
this.inputEl.disabled = this.disabled;
|
|
3491
3516
|
this.labelEl.innerHTML = `
|
|
3492
3517
|
<span class="label-text">${label || ""}</span>
|
|
@@ -3626,6 +3651,9 @@ var BaseWavelengthInput = class extends HTMLElement {
|
|
|
3626
3651
|
case "required":
|
|
3627
3652
|
this._updateRequiredMarker();
|
|
3628
3653
|
break;
|
|
3654
|
+
case "multi-line":
|
|
3655
|
+
this._ensureInputType();
|
|
3656
|
+
break;
|
|
3629
3657
|
default:
|
|
3630
3658
|
this._applyAttributes();
|
|
3631
3659
|
break;
|
|
@@ -4603,167 +4631,42 @@ if (!customElements.get("wavelength-multi-select-autocomplete")) {
|
|
|
4603
4631
|
customElements.define("wavelength-multi-select-autocomplete", WavelengthMultiSelectAutocomplete);
|
|
4604
4632
|
}
|
|
4605
4633
|
|
|
4606
|
-
// src/web-components/wavelength-nav-bar.
|
|
4607
|
-
var
|
|
4608
|
-
template4.innerHTML = `
|
|
4609
|
-
<style>
|
|
4610
|
-
:host {
|
|
4611
|
-
display: block;
|
|
4612
|
-
font-family: sans-serif;
|
|
4613
|
-
height: 100%;
|
|
4614
|
-
}
|
|
4615
|
-
|
|
4616
|
-
|
|
4617
|
-
nav {
|
|
4618
|
-
display: flex;
|
|
4619
|
-
width: 95%;
|
|
4620
|
-
height: var(--height, 25px);
|
|
4621
|
-
padding: var(--padding, 1rem);
|
|
4622
|
-
border-bottom: var(--border, 1px solid #ddd);
|
|
4623
|
-
position: fixed;
|
|
4624
|
-
top: -25;
|
|
4625
|
-
z-index: 1000;
|
|
4626
|
-
background: var(--bg, #ffffffff);
|
|
4627
|
-
color: var(--txt, #000);
|
|
4628
|
-
gap:1rem;
|
|
4629
|
-
white-space: nowrap;
|
|
4630
|
-
align-items: center;
|
|
4631
|
-
justify-content: space-between;
|
|
4632
|
-
}
|
|
4634
|
+
// src/web-components/wavelength-nav-bar.html
|
|
4635
|
+
var wavelength_nav_bar_default = '<style>\n :host {\n display: block;\n font-family: sans-serif;\n height: 100%;\n }\n\n nav {\n display: flex;\n width: 95%;\n height: var(--height, 25px);\n padding: var(--padding, 1rem);\n border-bottom: var(--border, 1px solid #ddd);\n position: fixed;\n top: -25;\n z-index: 1000;\n background: var(--bg, #ffffffff);\n color: var(--txt, #000);\n gap: 1rem;\n align-items: center;\n justify-content: space-between;\n }\n\n .nav-center {\n display: flex;\n justify-content: center;\n }\n\n .home {\n flex: 1;\n justify-content: flex-start;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n #logo svg {\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n cursor: pointer;\n }\n\n .tab {\n padding: 0.35rem 0.75rem;\n border: 1px solid #ffffffff;\n border-radius: 4px;\n text-align: center;\n cursor: pointer;\n background: #fff;\n }\n\n .tab:hover {\n background: #f0f0f0; /* optional hover effect */\n }\n\n .settings {\n flex: 1;\n justify-content: flex-end;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .profile-note {\n font-size: 0.8rem;\n opacity: 0.75;\n }\n\n .middle-tab-group {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n flex: 3;\n }\n .notification-wrapper {\n position: relative;\n height: 100%;\n display: flex;\n }\n</style>\n<nav>\n <div class="section home" id="logo">\n <svg id="a" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="280" height="280" viewBox="0 0 280 280">\n <defs>\n <style>\n .b {\n fill: #231f20;\n }\n .c {\n fill: #fff;\n }\n </style>\n </defs>\n <path\n class="b"\n d="M82.5,272.3c-8,.5-13.5-2-17.5-5.5s-34-47.5-36-50.5-2-2.5-2-7.5-1.5-122-1.5-122c1.5-5.5,7-17.5,18-16l72-3.5c1-3.5,4-4.5,4-4.5l-44.5-40.5c-5.5-5.5,1.5-11.5,6.5-7l46,41c4-1.5,10.5-2,15.5-1l38.5-44.5c5.5-5.5,12,0,8,5.5l-36,42.5c1.5,1,4,4.5,4.5,6l28-2c5.5,0,47.5,14,57,17s12,9,12,17-1.5,140-1.5,140c-2.7,12.3-10.5,19-27.5,20.5l-143.5,15Z"\n />\n <path class="c" d="M240,113.3c.3-11.6-9.4-21-21-20.4l-122.5,6.4c-10.6.6-19,9.3-19,20v100.8c0,11.9,10.3,21.1,22.1,19.9l120.4-12.8c10-1.1,17.7-9.4,17.9-19.4l2.1-94.4Z" />\n <ellipse class="c" cx="228.4" cy="241.6" rx="7" ry="6.5" transform="translate(-89 340.5) rotate(-63.9)" />\n <path\n d="M132,217.5c-9.5,0-16.3-3.5-21-9.9-6-8.3-7.5-23.5-7.5-39.6s1-29.2,9.5-38.6c6-6.6,10-9.9,22-9.9s16.5,2.8,21,9.4c6.5,9.6,7.5,23.1,7.5,39.2s-.4,20.3-3.1,27.7c-2.7,7.3-6.3,12.8-11,16.4-4.7,3.6-11.3,5.4-17.4,5.4ZM132.5,200.4c5.2,0,7.8-2.9,10-8.8,1.5-6.6,2-11.9,2-23.7s0-17.6-1.5-24.2c-2.3-5.8-4.8-8.8-9.8-8.8-5.2,1.1-6.4,3.6-8.7,9.4-1.5,10.5-1.5,12.7-1.5,23.7s0,19.3,1.5,25.3c2.5,5,2.7,7.2,8,7.2Z"\n />\n <path\n d="M172.7,209.3c-1.1-1.1-.5-12.3-.5-12.3,0,0,0-.6,1.1-1.1,5.9,0,10.1-1.6,10.7-2.8,1.1-1.1,1.6-1.3,1.6-3.9l.5-44.1c0-6.1-7-2.8-12.9-3.3-.5,0-1.1-.6-1.1-1.1v-12.8c3.7-.7,8-1.9,11.1-3.9,3.1-2,4.3-5.7,6.4-8.4l16.8-1.1-.5,73.1s.5,3.3,2.1,3.9c1.1.4,7.5.6,9.1.6s1.6,1.1,1.6,1.1c0,1.7.5,11.7,0,12.3,0,.6-45,5-46.1,3.9Z"\n />\n </svg>\n <slot name="home"></slot>\n </div>\n <div class="nav-center"></div>\n <div class="middle-tab-group"></div>\n <div class="notification-wrapper">\n <wavelength-notification-panel></wavelength-notification-panel>\n </div>\n</nav>\n`;\n';
|
|
4633
4636
|
|
|
4634
|
-
|
|
4635
|
-
display: flex;
|
|
4636
|
-
justify-content: center;
|
|
4637
|
-
}
|
|
4638
|
-
|
|
4639
|
-
.home {
|
|
4640
|
-
flex: 1;
|
|
4641
|
-
justify-content: flex-start;
|
|
4642
|
-
cursor: pointer;
|
|
4643
|
-
display: flex;
|
|
4644
|
-
align-items: center;
|
|
4645
|
-
gap: 0.5rem;
|
|
4646
|
-
}
|
|
4647
|
-
|
|
4648
|
-
#logo svg {
|
|
4649
|
-
width: 28px;
|
|
4650
|
-
height: 28px;
|
|
4651
|
-
flex-shrink: 0;
|
|
4652
|
-
cursor: pointer;
|
|
4653
|
-
}
|
|
4654
|
-
|
|
4655
|
-
.tab {
|
|
4656
|
-
padding: 0.35rem 0.75rem;
|
|
4657
|
-
border: 1px solid #ffffffff;
|
|
4658
|
-
border-radius: 4px;
|
|
4659
|
-
text-align: center;
|
|
4660
|
-
cursor: pointer;
|
|
4661
|
-
background: #fff;
|
|
4662
|
-
}
|
|
4663
|
-
|
|
4664
|
-
.tab:hover {
|
|
4665
|
-
background: #f0f0f0; /* optional hover effect */
|
|
4666
|
-
}
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
.settings {
|
|
4670
|
-
flex: 1;
|
|
4671
|
-
justify-content: flex-end;
|
|
4672
|
-
cursor: pointer;
|
|
4673
|
-
display: flex;
|
|
4674
|
-
align-items: center;
|
|
4675
|
-
gap: 0.5rem;
|
|
4676
|
-
}
|
|
4677
|
-
|
|
4678
|
-
.profile {
|
|
4679
|
-
padding: var(--padding, 1rem);
|
|
4680
|
-
border: 2px solid #ccc;
|
|
4681
|
-
border-radius: 6px;
|
|
4682
|
-
cursor: pointer;
|
|
4683
|
-
display: flex;
|
|
4684
|
-
flex-direction: column;
|
|
4685
|
-
text-align: center;
|
|
4686
|
-
width: 100%;
|
|
4687
|
-
height: var(--height, 25px);
|
|
4688
|
-
position: fixed;
|
|
4689
|
-
}
|
|
4690
|
-
|
|
4691
|
-
.profile-name {
|
|
4692
|
-
font-weight: 600;
|
|
4693
|
-
}
|
|
4694
|
-
|
|
4695
|
-
.profile-note {
|
|
4696
|
-
font-size: 0.8rem;
|
|
4697
|
-
opacity: 0.75;
|
|
4698
|
-
}
|
|
4699
|
-
|
|
4700
|
-
.middle-tab-group {
|
|
4701
|
-
display: flex;
|
|
4702
|
-
align-items: center;
|
|
4703
|
-
gap: 0.5rem;
|
|
4704
|
-
flex: 3;
|
|
4705
|
-
}
|
|
4706
|
-
.notification-wrapper {
|
|
4707
|
-
position: relative;
|
|
4708
|
-
height: 100%;
|
|
4709
|
-
display: flex;
|
|
4710
|
-
|
|
4711
|
-
}
|
|
4712
|
-
|
|
4713
|
-
|
|
4714
|
-
</style>
|
|
4715
|
-
<nav>
|
|
4716
|
-
<div class="section home" id="logo">
|
|
4717
|
-
<!-- Inline SVG to ensure universal compatibility -->
|
|
4718
|
-
<svg id="a" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="280" height="280" viewBox="0 0 280 280">
|
|
4719
|
-
<defs>
|
|
4720
|
-
<style>
|
|
4721
|
-
.b {
|
|
4722
|
-
fill: #231f20;
|
|
4723
|
-
}
|
|
4724
|
-
.c {
|
|
4725
|
-
fill: #fff;
|
|
4726
|
-
}
|
|
4727
|
-
</style>
|
|
4728
|
-
</defs>
|
|
4729
|
-
<path class="b" d="M82.5,272.3c-8,.5-13.5-2-17.5-5.5s-34-47.5-36-50.5-2-2.5-2-7.5-1.5-122-1.5-122c1.5-5.5,7-17.5,18-16l72-3.5c1-3.5,4-4.5,4-4.5l-44.5-40.5c-5.5-5.5,1.5-11.5,6.5-7l46,41c4-1.5,10.5-2,15.5-1l38.5-44.5c5.5-5.5,12,0,8,5.5l-36,42.5c1.5,1,4,4.5,4.5,6l28-2c5.5,0,47.5,14,57,17s12,9,12,17-1.5,140-1.5,140c-2.7,12.3-10.5,19-27.5,20.5l-143.5,15Z"/>
|
|
4730
|
-
<path class="c" d="M240,113.3c.3-11.6-9.4-21-21-20.4l-122.5,6.4c-10.6.6-19,9.3-19,20v100.8c0,11.9,10.3,21.1,22.1,19.9l120.4-12.8c10-1.1,17.7-9.4,17.9-19.4l2.1-94.4Z"/>
|
|
4731
|
-
<ellipse class="c" cx="228.4" cy="241.6" rx="7" ry="6.5" transform="translate(-89 340.5) rotate(-63.9)"/>
|
|
4732
|
-
<path d="M132,217.5c-9.5,0-16.3-3.5-21-9.9-6-8.3-7.5-23.5-7.5-39.6s1-29.2,9.5-38.6c6-6.6,10-9.9,22-9.9s16.5,2.8,21,9.4c6.5,9.6,7.5,23.1,7.5,39.2s-.4,20.3-3.1,27.7c-2.7,7.3-6.3,12.8-11,16.4-4.7,3.6-11.3,5.4-17.4,5.4ZM132.5,200.4c5.2,0,7.8-2.9,10-8.8,1.5-6.6,2-11.9,2-23.7s0-17.6-1.5-24.2c-2.3-5.8-4.8-8.8-9.8-8.8-5.2,1.1-6.4,3.6-8.7,9.4-1.5,10.5-1.5,12.7-1.5,23.7s0,19.3,1.5,25.3c2.5,5,2.7,7.2,8,7.2Z"/>
|
|
4733
|
-
<path d="M172.7,209.3c-1.1-1.1-.5-12.3-.5-12.3,0,0,0-.6,1.1-1.1,5.9,0,10.1-1.6,10.7-2.8,1.1-1.1,1.6-1.3,1.6-3.9l.5-44.1c0-6.1-7-2.8-12.9-3.3-.5,0-1.1-.6-1.1-1.1v-12.8c3.7-.7,8-1.9,11.1-3.9,3.1-2,4.3-5.7,6.4-8.4l16.8-1.1-.5,73.1s.5,3.3,2.1,3.9c1.1.4,7.5.6,9.1.6s1.6,1.1,1.6,1.1c0,1.7.5,11.7,0,12.3,0,.6-45,5-46.1,3.9Z"/>
|
|
4734
|
-
</svg>
|
|
4735
|
-
<slot name="home"></slot>
|
|
4736
|
-
</div>
|
|
4737
|
-
<div class="nav-center"></div>
|
|
4738
|
-
<div class = "middle-tab-group">
|
|
4739
|
-
<div class="tab"><a href="/applications"><slot name="tab">Applications</slot></a></div>
|
|
4740
|
-
<div class="tab"><a href="/users"><slot name="tab">Users</slot></a></div>
|
|
4741
|
-
<div class="tab"><a href="/apikeys"><slot name="tab">API Keys</slot></a></div>
|
|
4742
|
-
</div>
|
|
4743
|
-
<div class="notification-wrapper">
|
|
4744
|
-
<wavelength-notification-panel ></wavelength-notification-panel>
|
|
4745
|
-
</div>
|
|
4746
|
-
</nav>
|
|
4747
|
-
`;
|
|
4637
|
+
// src/web-components/wavelength-nav-bar.ts
|
|
4748
4638
|
var WavelengthNavBar = class extends HTMLElement {
|
|
4749
|
-
static get observedAttributes() {
|
|
4750
|
-
return ["bg-color", "txt-color", "height", "padding", "border", "items"];
|
|
4751
|
-
}
|
|
4752
4639
|
constructor() {
|
|
4753
4640
|
super();
|
|
4641
|
+
this._handleHomeClick = () => {
|
|
4642
|
+
this.dispatchEvent(new CustomEvent("home-click", { bubbles: true, composed: true }));
|
|
4643
|
+
};
|
|
4754
4644
|
const shadow = this.attachShadow({ mode: "open" });
|
|
4755
|
-
shadow.
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
|
|
4645
|
+
shadow.innerHTML = wavelength_nav_bar_default;
|
|
4646
|
+
}
|
|
4647
|
+
static get observedAttributes() {
|
|
4648
|
+
return ["bg-color", "txt-color", "height", "padding", "border", "items"];
|
|
4649
|
+
}
|
|
4650
|
+
disconnectedCallback() {
|
|
4651
|
+
const logo = _optionalChain([this, 'access', _62 => _62.shadowRoot, 'optionalAccess', _63 => _63.querySelector, 'call', _64 => _64("#logo")]);
|
|
4652
|
+
if (logo) {
|
|
4653
|
+
logo.removeEventListener("click", this._handleHomeClick);
|
|
4654
|
+
}
|
|
4759
4655
|
}
|
|
4760
4656
|
connectedCallback() {
|
|
4761
4657
|
this.applyStyles();
|
|
4762
4658
|
this.renderTabs();
|
|
4659
|
+
const logo = _optionalChain([this, 'access', _65 => _65.shadowRoot, 'optionalAccess', _66 => _66.querySelector, 'call', _67 => _67("#logo")]);
|
|
4660
|
+
if (logo) {
|
|
4661
|
+
logo.addEventListener("click", this._handleHomeClick);
|
|
4662
|
+
}
|
|
4763
4663
|
}
|
|
4764
|
-
attributeChangedCallback() {
|
|
4664
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
4665
|
+
if (oldValue === newValue) return;
|
|
4666
|
+
if (name === "items") {
|
|
4667
|
+
this.renderTabs();
|
|
4668
|
+
}
|
|
4765
4669
|
this.applyStyles();
|
|
4766
|
-
this.renderTabs();
|
|
4767
4670
|
}
|
|
4768
4671
|
applyStyles() {
|
|
4769
4672
|
this.style.setProperty("--bg", this.getAttribute("bg-color") || "#ffffffff");
|
|
@@ -4773,20 +4676,33 @@ var WavelengthNavBar = class extends HTMLElement {
|
|
|
4773
4676
|
this.style.setProperty("--border", this.getAttribute("border") || "1px solid #ddd");
|
|
4774
4677
|
}
|
|
4775
4678
|
renderTabs() {
|
|
4776
|
-
const container = _optionalChain([this, 'access',
|
|
4679
|
+
const container = _optionalChain([this, 'access', _68 => _68.shadowRoot, 'optionalAccess', _69 => _69.querySelector, 'call', _70 => _70(".middle-tab-group")]);
|
|
4777
4680
|
if (!container) return;
|
|
4778
|
-
container.
|
|
4681
|
+
container.replaceChildren();
|
|
4779
4682
|
const itemsAttr = this.getAttribute("items");
|
|
4780
|
-
|
|
4683
|
+
let items = [];
|
|
4684
|
+
const attr = this.getAttribute("items");
|
|
4685
|
+
if (attr) {
|
|
4686
|
+
try {
|
|
4687
|
+
items = JSON.parse(attr);
|
|
4688
|
+
} catch (e) {
|
|
4689
|
+
console.warn("Invalid items JSON", e);
|
|
4690
|
+
}
|
|
4691
|
+
}
|
|
4781
4692
|
items.forEach((item) => {
|
|
4782
4693
|
const tab = document.createElement("div");
|
|
4783
4694
|
tab.className = "tab";
|
|
4784
4695
|
tab.textContent = item.title;
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4788
|
-
|
|
4789
|
-
|
|
4696
|
+
tab.setAttribute("role", "tab");
|
|
4697
|
+
tab.tabIndex = 0;
|
|
4698
|
+
this.dispatchEvent(
|
|
4699
|
+
new CustomEvent("tab-click", {
|
|
4700
|
+
detail: { title: item.title, path: item.path },
|
|
4701
|
+
bubbles: true,
|
|
4702
|
+
composed: true,
|
|
4703
|
+
cancelable: true
|
|
4704
|
+
})
|
|
4705
|
+
);
|
|
4790
4706
|
container.appendChild(tab);
|
|
4791
4707
|
});
|
|
4792
4708
|
}
|
|
@@ -4797,8 +4713,8 @@ if (!customElements.get("wavelength-nav-bar")) {
|
|
|
4797
4713
|
|
|
4798
4714
|
// src/web-components/wavelength-child-data-table.ts
|
|
4799
4715
|
var import_react = __toESM(require_react(), 1);
|
|
4800
|
-
var
|
|
4801
|
-
|
|
4716
|
+
var template4 = document.createElement("template");
|
|
4717
|
+
template4.innerHTML = `
|
|
4802
4718
|
|
|
4803
4719
|
<style>
|
|
4804
4720
|
|
|
@@ -4949,7 +4865,7 @@ var ChildDataTable = class extends HTMLElement {
|
|
|
4949
4865
|
<path d="M13.2375 0L7.5 5.725L1.7625 0L0 1.7625L7.5 9.2625L15 1.7625L13.2375 0Z" fill="currentColor"/>
|
|
4950
4866
|
</svg>`;
|
|
4951
4867
|
this.shadow = this.attachShadow({ mode: "open" });
|
|
4952
|
-
this.shadow.append(
|
|
4868
|
+
this.shadow.append(template4.content.cloneNode(true));
|
|
4953
4869
|
}
|
|
4954
4870
|
static get observedAttributes() {
|
|
4955
4871
|
return ["table-columns", "table-data", "dropdown-arrow-location", "sort-icon", "dropdown-button-icon"];
|
|
@@ -5676,26 +5592,26 @@ var WavelengthFileDropZone = class extends HTMLElement {
|
|
|
5676
5592
|
if (!this.dropZone || !this.fileInput) return;
|
|
5677
5593
|
this.dropZone.addEventListener("dragover", (e) => {
|
|
5678
5594
|
e.preventDefault();
|
|
5679
|
-
_optionalChain([this, 'access',
|
|
5595
|
+
_optionalChain([this, 'access', _71 => _71.dropZone, 'optionalAccess', _72 => _72.classList, 'access', _73 => _73.add, 'call', _74 => _74("dragover")]);
|
|
5680
5596
|
});
|
|
5681
5597
|
this.dropZone.addEventListener("dragleave", (e) => {
|
|
5682
5598
|
e.preventDefault();
|
|
5683
|
-
_optionalChain([this, 'access',
|
|
5599
|
+
_optionalChain([this, 'access', _75 => _75.dropZone, 'optionalAccess', _76 => _76.classList, 'access', _77 => _77.remove, 'call', _78 => _78("dragover")]);
|
|
5684
5600
|
});
|
|
5685
5601
|
this.dropZone.addEventListener("drop", (e) => {
|
|
5686
5602
|
e.preventDefault();
|
|
5687
|
-
_optionalChain([this, 'access',
|
|
5688
|
-
const files = _optionalChain([e, 'access',
|
|
5689
|
-
if (_optionalChain([files, 'optionalAccess',
|
|
5603
|
+
_optionalChain([this, 'access', _79 => _79.dropZone, 'optionalAccess', _80 => _80.classList, 'access', _81 => _81.remove, 'call', _82 => _82("dragover")]);
|
|
5604
|
+
const files = _optionalChain([e, 'access', _83 => _83.dataTransfer, 'optionalAccess', _84 => _84.files]);
|
|
5605
|
+
if (_optionalChain([files, 'optionalAccess', _85 => _85.length])) {
|
|
5690
5606
|
this.validateAndProcessFiles(files);
|
|
5691
5607
|
}
|
|
5692
5608
|
});
|
|
5693
5609
|
this.dropZone.addEventListener("click", () => {
|
|
5694
|
-
_optionalChain([this, 'access',
|
|
5610
|
+
_optionalChain([this, 'access', _86 => _86.fileInput, 'optionalAccess', _87 => _87.click, 'call', _88 => _88()]);
|
|
5695
5611
|
});
|
|
5696
5612
|
this.fileInput.addEventListener("change", (event) => {
|
|
5697
5613
|
const input = event.target;
|
|
5698
|
-
if (_optionalChain([input, 'access',
|
|
5614
|
+
if (_optionalChain([input, 'access', _89 => _89.files, 'optionalAccess', _90 => _90.length])) {
|
|
5699
5615
|
this.validateAndProcessFiles(input.files);
|
|
5700
5616
|
}
|
|
5701
5617
|
});
|
|
@@ -5703,7 +5619,7 @@ var WavelengthFileDropZone = class extends HTMLElement {
|
|
|
5703
5619
|
validateAndProcessFiles(files) {
|
|
5704
5620
|
const fileList = Array.from(files);
|
|
5705
5621
|
let errorMessage = "";
|
|
5706
|
-
const acceptedTypes = _optionalChain([this, 'access',
|
|
5622
|
+
const acceptedTypes = _optionalChain([this, 'access', _91 => _91.getAttribute, 'call', _92 => _92("accepted-types"), 'optionalAccess', _93 => _93.split, 'call', _94 => _94(",")]) || [];
|
|
5707
5623
|
if (acceptedTypes.length) {
|
|
5708
5624
|
const invalidFiles = fileList.filter((file) => !acceptedTypes.some((type) => file.name.toLowerCase().endsWith(type.toLowerCase().replace("*", ""))));
|
|
5709
5625
|
if (invalidFiles.length) {
|
|
@@ -5747,8 +5663,8 @@ var WavelengthFileDropZone = class extends HTMLElement {
|
|
|
5747
5663
|
customElements.define("wavelength-file-drop-zone", WavelengthFileDropZone);
|
|
5748
5664
|
|
|
5749
5665
|
// src/web-components/wavelength-dropdown.ts
|
|
5750
|
-
var
|
|
5751
|
-
|
|
5666
|
+
var template5 = document.createElement("template");
|
|
5667
|
+
template5.innerHTML = `
|
|
5752
5668
|
<style>
|
|
5753
5669
|
:host {
|
|
5754
5670
|
display: inline-block;
|
|
@@ -5828,7 +5744,7 @@ var WavelengthDropdown = class extends HTMLElement {
|
|
|
5828
5744
|
super();
|
|
5829
5745
|
this._options = [];
|
|
5830
5746
|
const shadow = this.attachShadow({ mode: "open" });
|
|
5831
|
-
shadow.appendChild(
|
|
5747
|
+
shadow.appendChild(template5.content.cloneNode(true));
|
|
5832
5748
|
this.dropdownField = shadow.querySelector(".dropdown-field");
|
|
5833
5749
|
this.dropdownBox = shadow.querySelector(".dropdown-box");
|
|
5834
5750
|
this.selectedSpan = shadow.querySelector(".selected");
|
|
@@ -6783,6 +6699,266 @@ if (!customElements.get("wavelength-search")) {
|
|
|
6783
6699
|
customElements.define("wavelength-search", WavelengthSearch);
|
|
6784
6700
|
}
|
|
6785
6701
|
|
|
6702
|
+
// src/web-components/wavelength-switch.template.html
|
|
6703
|
+
var wavelength_switch_template_default = '<style>\n :host {\n display: block;\n --font-color: #333;\n --font-size: 20px;\n --font-family: "Montserrat", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n --switch-color: #2196f3;\n --label-font: "Montserrat", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n\n /* Variable-based sizing */\n --container-width: 60px;\n --container-height: 34px;\n --track-height: 22px;\n --knob-size: 28px;\n\n /* Internal Calculations */\n --track-top: calc((var(--container-height) - var(--track-height)) / 2);\n --knob-top: calc((var(--container-height) - var(--knob-size)) / 2);\n --knob-translate: calc(var(--container-width) - var(--knob-size));\n }\n\n :host([size="small"]) {\n --container-width: 40px;\n --container-height: 24px;\n --track-height: 14px;\n --knob-size: 20px;\n --font-size: 16px;\n }\n\n :host([size="large"]) {\n --container-width: 80px;\n --container-height: 48px;\n --track-height: 30px;\n --knob-size: 40px;\n --font-size: 24px;\n }\n\n /* Switch Base Styles */\n .switch {\n position: relative;\n display: inline-block;\n width: var(--container-width);\n height: var(--container-height);\n }\n\n .switch input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n /* Slider (The Track) */\n .slider {\n position: absolute;\n cursor: pointer;\n top: var(--track-top);\n left: 0;\n right: 0;\n bottom: var(--track-top);\n background-color: #ccc;\n -webkit-transition: 0.4s;\n transition: 0.4s;\n border-radius: var(--track-height);\n }\n\n .slider:hover {\n cursor: pointer;\n }\n\n /* Handle (The Slider Portion) */\n .slider:before {\n position: absolute;\n content: "";\n height: var(--knob-size);\n width: var(--knob-size);\n left: 0;\n top: calc((var(--track-height) - var(--knob-size)) / 2);\n background-color: white;\n -webkit-transition: 0.4s;\n transition: 0.4s;\n border-radius: var(--knob-size);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n z-index: 2;\n }\n\n .slider:hover:before {\n box-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.3),\n 0 0 0 8px rgba(0, 0, 0, 0.1);\n }\n\n /* Input Checked State Styles */\n input:checked + .slider {\n background-color: var(--switch-color);\n }\n\n input:focus + .slider {\n box-shadow: 0 0 1px #2196f3;\n }\n\n input:checked + .slider:before {\n -webkit-transform: translateX(var(--knob-translate));\n -ms-transform: translateX(var(--knob-translate));\n transform: translateX(var(--knob-translate));\n }\n\n input:checked + .slider:hover:before {\n box-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.3),\n 0 0 0 8px color-mix(in srgb, var(--switch-color), transparent 80%);\n }\n\n /* Disabled State Styles */\n input:disabled + .slider {\n background-color: #e0e0e0;\n cursor: not-allowed;\n }\n\n input:disabled + .slider:before {\n background-color: #f5f5f5;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n }\n\n input:disabled + .slider:hover:before {\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n }\n\n input:disabled:checked + .slider {\n background-color: color-mix(in srgb, var(--switch-color), white 50%);\n opacity: 0.8;\n }\n\n /* Label Styles */\n .label {\n font-size: var(--font-size);\n font-weight: 500;\n color: var(--font-color);\n font-family: var(--label-font);\n }\n\n :host([disabled]) .label {\n color: #9e9e9e;\n }\n\n .flex-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n }\n</style>\n\n<div class="flex-container">\n <span id="label-span" class="label"></span>\n <label class="switch">\n <input type="checkbox" aria-labelledby="label" />\n <div class="slider"></div>\n </label>\n</div>\n';
|
|
6704
|
+
|
|
6705
|
+
// src/web-components/wavelength-switch.ts
|
|
6706
|
+
var WavelengthSwitch = class extends HTMLElement {
|
|
6707
|
+
static get observedAttributes() {
|
|
6708
|
+
return ["checked", "label", "label-placement", "size", "disabled", "color", "label-font", "value"];
|
|
6709
|
+
}
|
|
6710
|
+
constructor() {
|
|
6711
|
+
super();
|
|
6712
|
+
this.shadow = this.attachShadow({ mode: "open" });
|
|
6713
|
+
this.shadow.innerHTML = wavelength_switch_template_default;
|
|
6714
|
+
}
|
|
6715
|
+
get checked() {
|
|
6716
|
+
return this.input.checked;
|
|
6717
|
+
}
|
|
6718
|
+
set checked(value) {
|
|
6719
|
+
this.input.checked = !!value;
|
|
6720
|
+
this.toggleAttribute("checked", this.input.checked);
|
|
6721
|
+
}
|
|
6722
|
+
connectedCallback() {
|
|
6723
|
+
this.input = this.shadow.querySelector("input");
|
|
6724
|
+
this.labelElement = this.shadow.querySelector(".label");
|
|
6725
|
+
this.flexContainer = this.shadow.querySelector(".flex-container");
|
|
6726
|
+
this._updateLabel();
|
|
6727
|
+
this._updateChecked();
|
|
6728
|
+
this._updateDisabled();
|
|
6729
|
+
this._updateColor();
|
|
6730
|
+
this._updateLabelFont();
|
|
6731
|
+
this.input.addEventListener("change", (e) => {
|
|
6732
|
+
this.dispatchEvent(
|
|
6733
|
+
new CustomEvent("wavelength-switch-change", {
|
|
6734
|
+
detail: {
|
|
6735
|
+
checked: e.target.checked,
|
|
6736
|
+
value: this.getAttribute("value")
|
|
6737
|
+
},
|
|
6738
|
+
bubbles: true,
|
|
6739
|
+
composed: true
|
|
6740
|
+
})
|
|
6741
|
+
);
|
|
6742
|
+
});
|
|
6743
|
+
}
|
|
6744
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
6745
|
+
if (oldValue === newValue) return;
|
|
6746
|
+
if (!this.input) return;
|
|
6747
|
+
switch (name) {
|
|
6748
|
+
case "checked":
|
|
6749
|
+
this._updateChecked();
|
|
6750
|
+
break;
|
|
6751
|
+
case "label":
|
|
6752
|
+
this._updateLabel();
|
|
6753
|
+
break;
|
|
6754
|
+
case "disabled":
|
|
6755
|
+
this._updateDisabled();
|
|
6756
|
+
break;
|
|
6757
|
+
case "label-placement":
|
|
6758
|
+
this._updateLabel();
|
|
6759
|
+
break;
|
|
6760
|
+
case "color":
|
|
6761
|
+
this._updateColor();
|
|
6762
|
+
break;
|
|
6763
|
+
case "label-font":
|
|
6764
|
+
this._updateLabelFont();
|
|
6765
|
+
break;
|
|
6766
|
+
case "value":
|
|
6767
|
+
this._updateValue();
|
|
6768
|
+
break;
|
|
6769
|
+
}
|
|
6770
|
+
}
|
|
6771
|
+
disconnectedCallback() {
|
|
6772
|
+
this.input.removeEventListener("change", this._updateChecked);
|
|
6773
|
+
}
|
|
6774
|
+
_updateChecked() {
|
|
6775
|
+
this.input.checked = this.hasAttribute("checked") && this.getAttribute("checked") !== "false";
|
|
6776
|
+
}
|
|
6777
|
+
_updateLabel() {
|
|
6778
|
+
if (this.labelElement) {
|
|
6779
|
+
this.labelElement.textContent = this.getAttribute("label") || "";
|
|
6780
|
+
this.labelElement.style.display = this.hasAttribute("label") ? "block" : "none";
|
|
6781
|
+
}
|
|
6782
|
+
this._updateLabelPlacement();
|
|
6783
|
+
}
|
|
6784
|
+
_updateDisabled() {
|
|
6785
|
+
if (this.input) {
|
|
6786
|
+
this.input.disabled = this.hasAttribute("disabled") && this.getAttribute("disabled") !== "false";
|
|
6787
|
+
}
|
|
6788
|
+
}
|
|
6789
|
+
_updateColor() {
|
|
6790
|
+
if (this.hasAttribute("color")) {
|
|
6791
|
+
this.style.setProperty("--switch-color", this.getAttribute("color") || "");
|
|
6792
|
+
} else {
|
|
6793
|
+
this.style.removeProperty("--switch-color");
|
|
6794
|
+
}
|
|
6795
|
+
}
|
|
6796
|
+
_updateLabelFont() {
|
|
6797
|
+
if (this.hasAttribute("label-font")) {
|
|
6798
|
+
this.style.setProperty("--label-font", this.getAttribute("label-font") || "");
|
|
6799
|
+
} else {
|
|
6800
|
+
this.style.removeProperty("--label-font");
|
|
6801
|
+
}
|
|
6802
|
+
}
|
|
6803
|
+
_updateValue() {
|
|
6804
|
+
if (this.hasAttribute("value")) {
|
|
6805
|
+
this.input.value = this.getAttribute("value") || "";
|
|
6806
|
+
}
|
|
6807
|
+
}
|
|
6808
|
+
_updateLabelPlacement() {
|
|
6809
|
+
const placement = _nullishCoalesce(this.getAttribute("label-placement"), () => ( "left"));
|
|
6810
|
+
const directions = {
|
|
6811
|
+
left: "row",
|
|
6812
|
+
right: "row-reverse",
|
|
6813
|
+
top: "column",
|
|
6814
|
+
bottom: "column-reverse"
|
|
6815
|
+
};
|
|
6816
|
+
this.flexContainer.style.flexDirection = _nullishCoalesce(directions[placement], () => ( "row"));
|
|
6817
|
+
}
|
|
6818
|
+
};
|
|
6819
|
+
if (!customElements.get("wavelength-switch")) {
|
|
6820
|
+
customElements.define("wavelength-switch", WavelengthSwitch);
|
|
6821
|
+
}
|
|
6822
|
+
|
|
6823
|
+
// src/web-components/wavelength-badge.template.html
|
|
6824
|
+
var wavelength_badge_template_default = '<style>\n @import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap");\n\n :host {\n display: inline-block;\n font-family: var(--main-font-stack);\n --badge-font: "Montserrat";\n --font-family: "Montserrat";\n --fallback-fonts: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n\n --badge-font-stack: var(--badge-font), var(--fallback-fonts);\n --main-font-stack: var(--font-family), var(--fallback-fonts);\n\n --badge-color: rgb(69, 95, 230);\n --badge-text-color: rgb(255, 255, 255);\n --badge-hover-color: color-mix(in srgb, var(--badge-color), black 15%);\n --badge-border-radius: 50%;\n --font-size: 14px;\n --badge-size: 24px;\n\n --text-box-border-radius: 8px;\n --text-box-background-color: #f3f3f3;\n --text-box-text-color: black;\n --text-box-border-color: black;\n --text-box-hover-border-color: color-mix(in srgb, var(--text-box-border-color), black 40%);\n --text-box-font-size: 12px;\n --text-box-font-family: "Montserrat";\n --text-box-font-stack: var(--text-box-font-family), var(--fallback-fonts);\n --text-box-align-items: center;\n --text-box-justify-content: center;\n --text-box-width: auto;\n --text-box-height: auto;\n }\n\n :host([href]) {\n cursor: pointer;\n }\n\n :host([href]) .badge:hover {\n background: var(--badge-hover-color, color-mix(in srgb, var(--badge-color, rgb(69, 95, 230)), black 15%));\n color: #f3f3f3;\n }\n\n :host([href]) .contentBox:hover {\n border-color: var(--text-box-hover-border-color, color-mix(in srgb, var(--text-box-border-color, black), black 40%));\n }\n\n .badge {\n background: var(--badge-color, rgb(69, 95, 230));\n color: var(--badge-text-color, rgb(255, 255, 255));\n border-radius: var(--badge-border-radius, 50%);\n font-size: var(--font-size, 14px);\n text-align: center;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n box-sizing: border-box;\n font-family: var(--badge-font-stack);\n min-width: var(--badge-size, 24px);\n width: var(--badge-size, 24px);\n height: var(--badge-size, 24px);\n transition: background-color 0.2s ease;\n padding: 0;\n overflow: hidden;\n white-space: nowrap;\n }\n\n .badge slot[name="badge"]::slotted(*) {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: clip;\n font-size: inherit;\n padding: 0 1px;\n }\n\n .badge.len-3 {\n font-size: calc(var(--font-size) * 0.55);\n letter-spacing: -0.06em;\n }\n\n .badge.len-4 {\n font-size: calc(var(--font-size) * 0.45);\n letter-spacing: -0.08em;\n }\n\n .badge.len-long {\n font-size: calc(var(--font-size) * 0.35);\n letter-spacing: -0.12em;\n }\n\n .basic {\n display: inline-flex;\n }\n\n .wrapper {\n position: relative;\n display: inline-flex;\n width: fit-content;\n height: fit-content;\n }\n\n .instanceBadge {\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n z-index: 1;\n }\n\n .contentBox {\n border-radius: var(--text-box-border-radius, 8px);\n background: var(--text-box-background-color, #f3f3f3);\n color: var(--text-box-text-color, black);\n display: inline-flex;\n flex-direction: column;\n align-items: var(--text-box-align-items, center);\n justify-content: var(--text-box-justify-content, center);\n border: 1px solid var(--text-box-border-color, black);\n box-sizing: border-box;\n font-family: var(--text-box-font-stack);\n width: var(--text-box-width, auto);\n height: var(--text-box-height, auto);\n padding: 6px 10px;\n transition: border-color 0.2s ease;\n overflow: scroll;\n text-overflow: ellipsis;\n word-break: break-word;\n }\n\n .contentBox slot {\n display: flex;\n flex-direction: column;\n align-items: var(--text-box-align-items);\n justify-content: var(--text-box-justify-content);\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n ::slotted(:not([slot])) {\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex: 1;\n }\n</style>\n<div id="root"></div>\n';
|
|
6825
|
+
|
|
6826
|
+
// src/web-components/wavelength-badge.ts
|
|
6827
|
+
var _WavelengthBadge = class _WavelengthBadge extends HTMLElement {
|
|
6828
|
+
constructor() {
|
|
6829
|
+
super();
|
|
6830
|
+
this.badgeSlot = null;
|
|
6831
|
+
this._handleClick = () => {
|
|
6832
|
+
const href = this.getAttribute("href");
|
|
6833
|
+
if (href) {
|
|
6834
|
+
window.open(href, "_blank");
|
|
6835
|
+
}
|
|
6836
|
+
};
|
|
6837
|
+
this._handleSlotChange = () => {
|
|
6838
|
+
if (!this.badgeSlot) return;
|
|
6839
|
+
const assignedNodes = this.badgeSlot.assignedNodes();
|
|
6840
|
+
const textContent = assignedNodes.map((node) => node.textContent).join("").trim();
|
|
6841
|
+
if (textContent) {
|
|
6842
|
+
this._updateLengthClass(textContent);
|
|
6843
|
+
}
|
|
6844
|
+
};
|
|
6845
|
+
this.shadow = this.attachShadow({ mode: "open" });
|
|
6846
|
+
this.shadow.innerHTML = wavelength_badge_template_default;
|
|
6847
|
+
this.rootElement = this.shadow.getElementById("root");
|
|
6848
|
+
}
|
|
6849
|
+
static get observedAttributes() {
|
|
6850
|
+
return [..._WavelengthBadge.styleAttributes, "variant", "badge-content", "href"];
|
|
6851
|
+
}
|
|
6852
|
+
connectedCallback() {
|
|
6853
|
+
this._syncStyles();
|
|
6854
|
+
this._render();
|
|
6855
|
+
this._updateA11y();
|
|
6856
|
+
this.addEventListener("click", this._handleClick);
|
|
6857
|
+
}
|
|
6858
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
6859
|
+
if (_WavelengthBadge.styleAttributes.includes(name)) {
|
|
6860
|
+
this._syncStyles();
|
|
6861
|
+
} else if (name === "variant") {
|
|
6862
|
+
this._render();
|
|
6863
|
+
} else if (name === "badge-content") {
|
|
6864
|
+
this._updateLengthClass(newValue || "");
|
|
6865
|
+
this._updateSlotText(newValue || "");
|
|
6866
|
+
} else if (name === "href") {
|
|
6867
|
+
this._updateA11y();
|
|
6868
|
+
}
|
|
6869
|
+
}
|
|
6870
|
+
disconnectedCallback() {
|
|
6871
|
+
this.removeEventListener("click", this._handleClick);
|
|
6872
|
+
_optionalChain([this, 'access', _95 => _95.badgeSlot, 'optionalAccess', _96 => _96.removeEventListener, 'call', _97 => _97("slotchange", this._handleSlotChange)]);
|
|
6873
|
+
}
|
|
6874
|
+
_syncStyles() {
|
|
6875
|
+
_WavelengthBadge.styleAttributes.forEach((attr) => {
|
|
6876
|
+
const value = this.getAttribute(attr);
|
|
6877
|
+
if (value !== null && value !== "") {
|
|
6878
|
+
this.style.setProperty(`--${attr}`, value);
|
|
6879
|
+
} else {
|
|
6880
|
+
this.style.removeProperty(`--${attr}`);
|
|
6881
|
+
}
|
|
6882
|
+
});
|
|
6883
|
+
}
|
|
6884
|
+
_render() {
|
|
6885
|
+
if (!this.rootElement) return;
|
|
6886
|
+
const variant = this.getAttribute("variant") || "basic";
|
|
6887
|
+
const badgeContent = this.getAttribute("badge-content") || "";
|
|
6888
|
+
const contentLength = badgeContent.length;
|
|
6889
|
+
const lengthClass = contentLength > 4 ? "len-long" : `len-${contentLength}`;
|
|
6890
|
+
this.rootElement.textContent = "";
|
|
6891
|
+
this.badgeSlot = document.createElement("slot");
|
|
6892
|
+
this.badgeSlot.name = "badge";
|
|
6893
|
+
this.badgeSlot.textContent = badgeContent;
|
|
6894
|
+
this.badgeSlot.addEventListener("slotchange", this._handleSlotChange);
|
|
6895
|
+
const badgeDiv = document.createElement("div");
|
|
6896
|
+
badgeDiv.appendChild(this.badgeSlot);
|
|
6897
|
+
if (variant === "withInstance") {
|
|
6898
|
+
const wrapper = document.createElement("div");
|
|
6899
|
+
wrapper.className = "wrapper";
|
|
6900
|
+
const contentBox = document.createElement("div");
|
|
6901
|
+
contentBox.className = "contentBox";
|
|
6902
|
+
const mainSlot = document.createElement("slot");
|
|
6903
|
+
contentBox.appendChild(mainSlot);
|
|
6904
|
+
badgeDiv.className = `badge instanceBadge ${lengthClass}`;
|
|
6905
|
+
wrapper.appendChild(contentBox);
|
|
6906
|
+
wrapper.appendChild(badgeDiv);
|
|
6907
|
+
this.rootElement.appendChild(wrapper);
|
|
6908
|
+
} else {
|
|
6909
|
+
badgeDiv.className = `badge basic ${lengthClass}`;
|
|
6910
|
+
this.rootElement.appendChild(badgeDiv);
|
|
6911
|
+
}
|
|
6912
|
+
this.badgeSlot = this.shadowRoot.querySelector('slot[name="badge"]');
|
|
6913
|
+
_optionalChain([this, 'access', _98 => _98.badgeSlot, 'optionalAccess', _99 => _99.addEventListener, 'call', _100 => _100("slotchange", this._handleSlotChange)]);
|
|
6914
|
+
}
|
|
6915
|
+
_updateLengthClass(content) {
|
|
6916
|
+
const badge = this.shadowRoot.querySelector(".badge");
|
|
6917
|
+
if (!badge) return;
|
|
6918
|
+
badge.classList.remove("len-1", "len-2", "len-3", "len-4", "len-long");
|
|
6919
|
+
const lengthClass = content.length > 4 ? "len-long" : `len-${content.length}`;
|
|
6920
|
+
badge.classList.add(lengthClass);
|
|
6921
|
+
}
|
|
6922
|
+
_updateSlotText(content) {
|
|
6923
|
+
const slot = this.shadowRoot.querySelector('slot[name="badge"]');
|
|
6924
|
+
if (slot) {
|
|
6925
|
+
slot.textContent = content;
|
|
6926
|
+
}
|
|
6927
|
+
}
|
|
6928
|
+
_updateA11y() {
|
|
6929
|
+
const href = this.getAttribute("href");
|
|
6930
|
+
if (href) {
|
|
6931
|
+
this.setAttribute("role", "link");
|
|
6932
|
+
this.setAttribute("tabindex", "0");
|
|
6933
|
+
} else {
|
|
6934
|
+
this.removeAttribute("role");
|
|
6935
|
+
this.removeAttribute("tabindex");
|
|
6936
|
+
}
|
|
6937
|
+
}
|
|
6938
|
+
};
|
|
6939
|
+
_WavelengthBadge.styleAttributes = [
|
|
6940
|
+
"badge-color",
|
|
6941
|
+
"badge-text-color",
|
|
6942
|
+
"badge-border-radius",
|
|
6943
|
+
"font-size",
|
|
6944
|
+
"badge-size",
|
|
6945
|
+
"badge-font",
|
|
6946
|
+
"text-box-width",
|
|
6947
|
+
"text-box-height",
|
|
6948
|
+
"text-box-background-color",
|
|
6949
|
+
"text-box-text-color",
|
|
6950
|
+
"text-box-border-color",
|
|
6951
|
+
"text-box-border-radius",
|
|
6952
|
+
"badge-hover-color",
|
|
6953
|
+
"text-box-hover-border-color"
|
|
6954
|
+
];
|
|
6955
|
+
var WavelengthBadge = _WavelengthBadge;
|
|
6956
|
+
if (!customElements.get("wavelength-badge")) {
|
|
6957
|
+
customElements.define("wavelength-badge", WavelengthBadge);
|
|
6958
|
+
}
|
|
6959
|
+
|
|
6960
|
+
|
|
6961
|
+
|
|
6786
6962
|
|
|
6787
6963
|
|
|
6788
6964
|
|
|
@@ -6807,7 +6983,7 @@ if (!customElements.get("wavelength-search")) {
|
|
|
6807
6983
|
|
|
6808
6984
|
|
|
6809
6985
|
|
|
6810
|
-
exports.BaseWavelengthInput = BaseWavelengthInput; exports.BaseWavelengthMultiSelectAutocomplete = BaseWavelengthMultiSelectAutocomplete; exports.ChildDataTable = ChildDataTable; exports.SampleComponent = SampleComponent; exports.WavelengthBanner = WavelengthBanner; exports.WavelengthButton = WavelengthButton; exports.WavelengthCheckbox = WavelengthCheckbox; exports.WavelengthDatePicker = WavelengthDatePicker; exports.WavelengthDropdown = WavelengthDropdown; exports.WavelengthFileDropZone = WavelengthFileDropZone; exports.WavelengthForm = WavelengthForm; exports.WavelengthInput = WavelengthInput; exports.WavelengthManyPlanes = WavelengthManyPlanes; exports.WavelengthMenu = WavelengthMenu; exports.WavelengthMultiSelectAutocomplete = WavelengthMultiSelectAutocomplete; exports.WavelengthNavBar = WavelengthNavBar; exports.WavelengthNotificationPanel = WavelengthNotificationPanel; exports.WavelengthPagination = WavelengthPagination; exports.WavelengthPlaneTrail = WavelengthPlaneTrail; exports.WavelengthProgressBar = WavelengthProgressBar; exports.WavelengthSearch = WavelengthSearch; exports.WavelengthSnackbar = WavelengthSnackbar; exports.WavelengthTitleBar = WavelengthTitleBar; exports.WavelengthToolTip = WavelengthToolTip;
|
|
6986
|
+
exports.BaseWavelengthInput = BaseWavelengthInput; exports.BaseWavelengthMultiSelectAutocomplete = BaseWavelengthMultiSelectAutocomplete; exports.ChildDataTable = ChildDataTable; exports.SampleComponent = SampleComponent; exports.WavelengthBadge = WavelengthBadge; exports.WavelengthBanner = WavelengthBanner; exports.WavelengthButton = WavelengthButton; exports.WavelengthCheckbox = WavelengthCheckbox; exports.WavelengthDatePicker = WavelengthDatePicker; exports.WavelengthDropdown = WavelengthDropdown; exports.WavelengthFileDropZone = WavelengthFileDropZone; exports.WavelengthForm = WavelengthForm; exports.WavelengthInput = WavelengthInput; exports.WavelengthManyPlanes = WavelengthManyPlanes; exports.WavelengthMenu = WavelengthMenu; exports.WavelengthMultiSelectAutocomplete = WavelengthMultiSelectAutocomplete; exports.WavelengthNavBar = WavelengthNavBar; exports.WavelengthNotificationPanel = WavelengthNotificationPanel; exports.WavelengthPagination = WavelengthPagination; exports.WavelengthPlaneTrail = WavelengthPlaneTrail; exports.WavelengthProgressBar = WavelengthProgressBar; exports.WavelengthSearch = WavelengthSearch; exports.WavelengthSnackbar = WavelengthSnackbar; exports.WavelengthSwitch = WavelengthSwitch; exports.WavelengthTitleBar = WavelengthTitleBar; exports.WavelengthToolTip = WavelengthToolTip;
|
|
6811
6987
|
/*! Bundled license information:
|
|
6812
6988
|
|
|
6813
6989
|
react/cjs/react.production.min.js:
|