@lumiapassport/ui-kit 1.13.9 → 1.13.11
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/README.md +15 -4
- package/dist/iframe/index.html +1 -1
- package/dist/iframe/main.js +286 -29
- package/dist/iframe/main.js.map +1 -1
- package/dist/index.cjs +367 -574
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +439 -647
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2458,6 +2458,7 @@ var init_iframe_manager = __esm({
|
|
|
2458
2458
|
this.iframe = null;
|
|
2459
2459
|
this.sessionToken = null;
|
|
2460
2460
|
this.isReady = false;
|
|
2461
|
+
// private themeColors?: IframeManagerConfig['themeColors']
|
|
2461
2462
|
// Message handling
|
|
2462
2463
|
this.pendingRequests = /* @__PURE__ */ new Map();
|
|
2463
2464
|
this.usedNonces = /* @__PURE__ */ new Set();
|
|
@@ -2477,14 +2478,13 @@ var init_iframe_manager = __esm({
|
|
|
2477
2478
|
this.projectId = config.projectId;
|
|
2478
2479
|
this.debug = config.debug || false;
|
|
2479
2480
|
this.onWalletReadyCallback = config.onWalletReady;
|
|
2480
|
-
this.themeColors = config.themeColors;
|
|
2481
2481
|
this.readyPromise = new Promise((resolve) => {
|
|
2482
2482
|
this.readyResolve = resolve;
|
|
2483
2483
|
});
|
|
2484
2484
|
this.log("[IframeManager] Initialized with:", {
|
|
2485
2485
|
iframeUrl: this.iframeUrl,
|
|
2486
|
-
projectId: this.projectId
|
|
2487
|
-
hasThemeColors: !!this.themeColors
|
|
2486
|
+
projectId: this.projectId
|
|
2487
|
+
// hasThemeColors: !!this.themeColors
|
|
2488
2488
|
});
|
|
2489
2489
|
}
|
|
2490
2490
|
/**
|
|
@@ -2496,16 +2496,6 @@ var init_iframe_manager = __esm({
|
|
|
2496
2496
|
}
|
|
2497
2497
|
this.iframe = document.createElement("iframe");
|
|
2498
2498
|
let iframeUrl = this.iframeUrl;
|
|
2499
|
-
if (this.themeColors) {
|
|
2500
|
-
const params = new URLSearchParams();
|
|
2501
|
-
if (this.themeColors.background) params.set("bg", this.themeColors.background);
|
|
2502
|
-
if (this.themeColors.text) params.set("text", this.themeColors.text);
|
|
2503
|
-
if (this.themeColors.textSecondary) params.set("textSec", this.themeColors.textSecondary);
|
|
2504
|
-
if (this.themeColors.border) params.set("border", this.themeColors.border);
|
|
2505
|
-
if (params.toString()) {
|
|
2506
|
-
iframeUrl += (iframeUrl.includes("?") ? "&" : "?") + params.toString();
|
|
2507
|
-
}
|
|
2508
|
-
}
|
|
2509
2499
|
this.iframe.src = iframeUrl;
|
|
2510
2500
|
this.iframe.id = "lumia-passport-iframe";
|
|
2511
2501
|
this.iframe.style.display = "none";
|
|
@@ -4249,18 +4239,18 @@ var init_profile = __esm({
|
|
|
4249
4239
|
});
|
|
4250
4240
|
|
|
4251
4241
|
// src/styles/built.css
|
|
4252
|
-
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .invisible{visibility:hidden}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none;appearance:none;-webkit-appearance:none;-moz-appearance:none}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-r,0);overflow-y:auto;max-height:var(--l-pass-scrollbar-mah,300px)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .noScrollbars::-webkit-scrollbar{display:none}[data-rk]{z-index:99999!important}[data-rk-modal-overlay]{z-index:99998!important}.lumia-scope .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4242
|
+
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .invisible{visibility:hidden}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-end{align-items:flex-end}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none;appearance:none;-webkit-appearance:none;-moz-appearance:none}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-r,0);overflow-y:auto;max-height:var(--l-pass-scrollbar-mah,300px)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .noScrollbars::-webkit-scrollbar{display:none}.lumia-scope .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4253
4243
|
|
|
4254
4244
|
// src/context/LumiaPassportContext.tsx
|
|
4255
4245
|
init_lumiaPassport();
|
|
4256
4246
|
init_iframe_manager();
|
|
4257
4247
|
import { initSdkErrorTracking } from "@lumiapassport/core/internal/error-tracking";
|
|
4258
|
-
import { merge } from "lodash-es";
|
|
4248
|
+
import { merge as merge2 } from "lodash-es";
|
|
4259
4249
|
import {
|
|
4260
4250
|
createContext,
|
|
4261
4251
|
useCallback as useCallback20,
|
|
4262
4252
|
useContext,
|
|
4263
|
-
useEffect as
|
|
4253
|
+
useEffect as useEffect31,
|
|
4264
4254
|
useMemo as useMemo3,
|
|
4265
4255
|
useRef as useRef11
|
|
4266
4256
|
} from "react";
|
|
@@ -4272,7 +4262,7 @@ import { create as create5 } from "zustand";
|
|
|
4272
4262
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
4273
4263
|
init_base();
|
|
4274
4264
|
import { useQuery } from "@tanstack/react-query";
|
|
4275
|
-
import { useEffect
|
|
4265
|
+
import { useEffect, useState } from "react";
|
|
4276
4266
|
import { useBalance } from "wagmi";
|
|
4277
4267
|
|
|
4278
4268
|
// src/internal/hooks/useLayoutDataStore.ts
|
|
@@ -4281,19 +4271,13 @@ import { create } from "zustand";
|
|
|
4281
4271
|
// src/internal/constants.ts
|
|
4282
4272
|
init_assets();
|
|
4283
4273
|
import { Key as Key2, Mail as Mail2, Wallet2 as Wallet22 } from "lucide-react";
|
|
4274
|
+
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
4284
4275
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4285
4276
|
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4286
4277
|
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4287
|
-
var
|
|
4288
|
-
mobileSM: 384,
|
|
4289
|
-
mobileXL: 384,
|
|
4290
|
-
tablet: 512,
|
|
4291
|
-
laptop: 640,
|
|
4292
|
-
desktop: 768
|
|
4293
|
-
};
|
|
4278
|
+
var MAX_CONTENT_HEIGHT = 640;
|
|
4294
4279
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4295
4280
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4296
|
-
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
4297
4281
|
var PROVIDERS_META2 = {
|
|
4298
4282
|
passkey: { name: "Passkey", icon: Key2, description: "Biometric authentication" },
|
|
4299
4283
|
email: { name: "Email", icon: Mail2, description: "Email verification" },
|
|
@@ -4353,166 +4337,20 @@ var useLayoutDataStore = create((set) => ({
|
|
|
4353
4337
|
})
|
|
4354
4338
|
}));
|
|
4355
4339
|
|
|
4356
|
-
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
4357
|
-
import { useMutation } from "@tanstack/react-query";
|
|
4358
|
-
import { useEffect } from "react";
|
|
4359
|
-
|
|
4360
|
-
// src/internal/lib/LumiaPriceSSEService.ts
|
|
4361
|
-
var FALLBACK = "https://fallback.lumia.passport.io";
|
|
4362
|
-
var API_DOMAIN = (true ? "" : FALLBACK) || FALLBACK;
|
|
4363
|
-
var LumiaPriceSSEService = class {
|
|
4364
|
-
// private readonly baseUrl: string = API_DOMAIN
|
|
4365
|
-
constructor() {
|
|
4366
|
-
this.eventSource = null;
|
|
4367
|
-
this.listeners = /* @__PURE__ */ new Set();
|
|
4368
|
-
this.currentPrice = null;
|
|
4369
|
-
this.isConnected = false;
|
|
4370
|
-
this.reconnectTimeout = null;
|
|
4371
|
-
}
|
|
4372
|
-
connect() {
|
|
4373
|
-
return new Promise((resolve, reject) => {
|
|
4374
|
-
console.log("[LumiaPriceSSEService]: Connecting to LUMIA Price SSE...");
|
|
4375
|
-
if (this.isConnected) {
|
|
4376
|
-
resolve();
|
|
4377
|
-
return;
|
|
4378
|
-
}
|
|
4379
|
-
try {
|
|
4380
|
-
this.eventSource = new EventSource(`${API_DOMAIN}/api/lumia/sse`);
|
|
4381
|
-
this.eventSource.onopen = () => {
|
|
4382
|
-
console.log("[LumiaPriceSSEService]: LUMIA Price SSE connected");
|
|
4383
|
-
this.isConnected = true;
|
|
4384
|
-
this.clearReconnectTimeout();
|
|
4385
|
-
resolve();
|
|
4386
|
-
};
|
|
4387
|
-
this.eventSource.onmessage = () => {
|
|
4388
|
-
};
|
|
4389
|
-
this.eventSource.addEventListener("rate", (event) => {
|
|
4390
|
-
try {
|
|
4391
|
-
const data = JSON.parse(event.data);
|
|
4392
|
-
if (data.price !== void 0 && data.symbol === "LUMIAUSDT") {
|
|
4393
|
-
this.currentPrice = typeof data.price === "number" ? data.price : parseFloat(data.price);
|
|
4394
|
-
if (this.currentPrice !== null) {
|
|
4395
|
-
const update = {
|
|
4396
|
-
symbol: data.symbol,
|
|
4397
|
-
price: this.currentPrice,
|
|
4398
|
-
ts: data.ts || Date.now()
|
|
4399
|
-
};
|
|
4400
|
-
this.listeners.forEach((listener) => listener(update));
|
|
4401
|
-
}
|
|
4402
|
-
}
|
|
4403
|
-
} catch (error) {
|
|
4404
|
-
console.error("Error parsing price event:", error, event.data);
|
|
4405
|
-
}
|
|
4406
|
-
});
|
|
4407
|
-
this.eventSource.addEventListener("ping", () => {
|
|
4408
|
-
});
|
|
4409
|
-
this.eventSource.onerror = (error) => {
|
|
4410
|
-
console.error("LUMIA Price SSE error:", error);
|
|
4411
|
-
this.isConnected = false;
|
|
4412
|
-
if (this.eventSource?.readyState === EventSource.CLOSED) {
|
|
4413
|
-
console.log("SSE connection closed, attempting to reconnect...");
|
|
4414
|
-
this.scheduleReconnect();
|
|
4415
|
-
reject(error);
|
|
4416
|
-
}
|
|
4417
|
-
};
|
|
4418
|
-
setTimeout(() => {
|
|
4419
|
-
if (!this.isConnected) {
|
|
4420
|
-
reject(new Error("SSE connection timeout"));
|
|
4421
|
-
}
|
|
4422
|
-
}, 1e4);
|
|
4423
|
-
} catch (error) {
|
|
4424
|
-
reject(error);
|
|
4425
|
-
}
|
|
4426
|
-
});
|
|
4427
|
-
}
|
|
4428
|
-
disconnect() {
|
|
4429
|
-
this.clearReconnectTimeout();
|
|
4430
|
-
if (this.eventSource) {
|
|
4431
|
-
this.eventSource.close();
|
|
4432
|
-
this.eventSource = null;
|
|
4433
|
-
}
|
|
4434
|
-
this.isConnected = false;
|
|
4435
|
-
this.currentPrice = null;
|
|
4436
|
-
console.log("[LumiaPriceSSEService]: LUMIA Price SSE disconnected");
|
|
4437
|
-
}
|
|
4438
|
-
addListener(listener) {
|
|
4439
|
-
this.listeners.add(listener);
|
|
4440
|
-
}
|
|
4441
|
-
removeListener(listener) {
|
|
4442
|
-
this.listeners.delete(listener);
|
|
4443
|
-
}
|
|
4444
|
-
clearListeners() {
|
|
4445
|
-
this.listeners.clear();
|
|
4446
|
-
}
|
|
4447
|
-
getCurrentPrice() {
|
|
4448
|
-
return this.currentPrice;
|
|
4449
|
-
}
|
|
4450
|
-
getConnectionStatus() {
|
|
4451
|
-
return this.isConnected;
|
|
4452
|
-
}
|
|
4453
|
-
scheduleReconnect() {
|
|
4454
|
-
this.clearReconnectTimeout();
|
|
4455
|
-
this.reconnectTimeout = window.setTimeout(() => {
|
|
4456
|
-
console.log("Attempting to reconnect to BTC Price SSE...");
|
|
4457
|
-
this.connect().catch((error) => {
|
|
4458
|
-
console.error("Reconnection failed:", error);
|
|
4459
|
-
this.scheduleReconnect();
|
|
4460
|
-
});
|
|
4461
|
-
}, 5e3);
|
|
4462
|
-
}
|
|
4463
|
-
clearReconnectTimeout() {
|
|
4464
|
-
if (this.reconnectTimeout) {
|
|
4465
|
-
clearTimeout(this.reconnectTimeout);
|
|
4466
|
-
this.reconnectTimeout = null;
|
|
4467
|
-
}
|
|
4468
|
-
}
|
|
4469
|
-
};
|
|
4470
|
-
var lumiaPriceSSE = new LumiaPriceSSEService();
|
|
4471
|
-
async function sseConnectMutation() {
|
|
4472
|
-
try {
|
|
4473
|
-
await lumiaPriceSSE.connect();
|
|
4474
|
-
console.info("[LUMIA SSE] price feed connected");
|
|
4475
|
-
return { ok: true };
|
|
4476
|
-
} catch (error) {
|
|
4477
|
-
console.error("[LUMIA SSE] Error connecting to SSE:", error);
|
|
4478
|
-
throw new Error("[LUMIA SSE] Error connecting to SSE");
|
|
4479
|
-
}
|
|
4480
|
-
}
|
|
4481
|
-
|
|
4482
|
-
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
4483
|
-
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
4484
|
-
const { mutate: connectSSE } = useMutation({
|
|
4485
|
-
mutationFn: sseConnectMutation,
|
|
4486
|
-
onSuccess: () => {
|
|
4487
|
-
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
4488
|
-
},
|
|
4489
|
-
onError: (err) => {
|
|
4490
|
-
console.error("Lumia Price SSE connection error:", err);
|
|
4491
|
-
}
|
|
4492
|
-
});
|
|
4493
|
-
useEffect(() => {
|
|
4494
|
-
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
4495
|
-
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
4496
|
-
if (!enabled) {
|
|
4497
|
-
lumiaPriceSSE.clearListeners();
|
|
4498
|
-
lumiaPriceSSE.disconnect();
|
|
4499
|
-
return;
|
|
4500
|
-
}
|
|
4501
|
-
return () => {
|
|
4502
|
-
lumiaPriceSSE.clearListeners();
|
|
4503
|
-
lumiaPriceSSE.disconnect();
|
|
4504
|
-
};
|
|
4505
|
-
}, [enabled, connectSSE]);
|
|
4506
|
-
}
|
|
4507
|
-
|
|
4508
4340
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
4509
4341
|
var BALANCE_POLLING_INTERVAL = 3e4;
|
|
4342
|
+
async function getAssetRate(symbol = "LUMIA", fiat = "USDT") {
|
|
4343
|
+
const assetURL = `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}${fiat.toUpperCase()}`;
|
|
4344
|
+
const response = await fetch(assetURL);
|
|
4345
|
+
return await response.json();
|
|
4346
|
+
}
|
|
4347
|
+
var LUMIA_RATE_QUERY_KEY = "lumia-passport-rate-query-key";
|
|
4510
4348
|
function BalanceFeedProvider() {
|
|
4511
4349
|
const config = useLumiaPassportConfig().config;
|
|
4512
4350
|
const address = useLumiaPassportSession((st) => st.address);
|
|
4513
|
-
const {
|
|
4351
|
+
const { setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore();
|
|
4514
4352
|
const [balanceSymbol, setBalanceSymbol] = useState(null);
|
|
4515
|
-
|
|
4353
|
+
useEffect(() => {
|
|
4516
4354
|
const { assets, showBalanceAs: customBalanceSymbol } = config.current?.projectAssets || {};
|
|
4517
4355
|
const { balanceQuery, balanceQueryKey } = assets?.find((a) => a.symbol === customBalanceSymbol) || {};
|
|
4518
4356
|
const isCustom = !!customBalanceSymbol && !!balanceQuery && !!balanceQueryKey;
|
|
@@ -4529,14 +4367,31 @@ function BalanceFeedProvider() {
|
|
|
4529
4367
|
refetchOnWindowFocus: true
|
|
4530
4368
|
}
|
|
4531
4369
|
});
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
|
|
4370
|
+
const { data: cryptoRate } = useQuery({
|
|
4371
|
+
queryKey: [LUMIA_RATE_QUERY_KEY, address],
|
|
4372
|
+
enabled: !!address && !!isNativeBalanceFeedEnabled,
|
|
4373
|
+
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
4374
|
+
queryFn: async () => getAssetRate("LUMIA", "USDT")
|
|
4375
|
+
// TODO: get LUMIA-FIAT pair from config
|
|
4376
|
+
});
|
|
4377
|
+
useEffect(() => {
|
|
4378
|
+
const rate = cryptoRate ? Number(cryptoRate.price) : null;
|
|
4379
|
+
if (!isNativeBalanceFeedEnabled || !balance || !rate) return;
|
|
4380
|
+
setCryptoRate(rate);
|
|
4535
4381
|
setCryptoSymbol("LUMIA");
|
|
4536
4382
|
setFiatSymbol("USD");
|
|
4537
|
-
setFiatBalance(Number(balance?.formatted || 0) *
|
|
4383
|
+
setFiatBalance(Number(balance?.formatted || 0) * rate);
|
|
4538
4384
|
setBalance(balance);
|
|
4539
|
-
}, [
|
|
4385
|
+
}, [
|
|
4386
|
+
isNativeBalanceFeedEnabled,
|
|
4387
|
+
balance,
|
|
4388
|
+
cryptoRate,
|
|
4389
|
+
setFiatBalance,
|
|
4390
|
+
setCryptoRate,
|
|
4391
|
+
setBalance,
|
|
4392
|
+
setCryptoSymbol,
|
|
4393
|
+
setFiatSymbol
|
|
4394
|
+
]);
|
|
4540
4395
|
const {
|
|
4541
4396
|
balanceQuery: customBalanceQuery,
|
|
4542
4397
|
balanceQueryKey: CUSTOM_BALANCE_QUERY_KEY,
|
|
@@ -4551,7 +4406,7 @@ function BalanceFeedProvider() {
|
|
|
4551
4406
|
// should be invalidated by host app via provided queryKey
|
|
4552
4407
|
queryFn: async () => await customBalanceQuery?.()
|
|
4553
4408
|
});
|
|
4554
|
-
|
|
4409
|
+
useEffect(() => {
|
|
4555
4410
|
if (!isCustomBalanceEnabled || !customBalance) return;
|
|
4556
4411
|
const { cryptoFiatRate, fiatFormatted, cryptoFormatted, cryptoSymbol, fiatSymbol } = customBalance;
|
|
4557
4412
|
setCryptoSymbol(cryptoSymbol.toUpperCase());
|
|
@@ -4570,12 +4425,12 @@ function BalanceFeedProvider() {
|
|
|
4570
4425
|
|
|
4571
4426
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4572
4427
|
import { AnimatePresence as AnimatePresence4, motion as motion4 } from "framer-motion";
|
|
4573
|
-
import { useEffect as
|
|
4428
|
+
import { useEffect as useEffect29 } from "react";
|
|
4574
4429
|
|
|
4575
4430
|
// package.json
|
|
4576
4431
|
var package_default = {
|
|
4577
4432
|
name: "@lumiapassport/ui-kit",
|
|
4578
|
-
version: "1.13.
|
|
4433
|
+
version: "1.13.11",
|
|
4579
4434
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4580
4435
|
type: "module",
|
|
4581
4436
|
main: "./dist/index.cjs",
|
|
@@ -4663,7 +4518,7 @@ var package_default = {
|
|
|
4663
4518
|
};
|
|
4664
4519
|
|
|
4665
4520
|
// src/internal/components/Footer/Footer.tsx
|
|
4666
|
-
import { useMutation
|
|
4521
|
+
import { useMutation } from "@tanstack/react-query";
|
|
4667
4522
|
import { Loader, LogOut } from "lucide-react";
|
|
4668
4523
|
|
|
4669
4524
|
// src/internal/assets/LumiaLogo.tsx
|
|
@@ -4724,21 +4579,6 @@ init_base();
|
|
|
4724
4579
|
// src/internal/lib/utils.ts
|
|
4725
4580
|
import { clsx } from "clsx";
|
|
4726
4581
|
import { twMerge } from "tailwind-merge";
|
|
4727
|
-
var LP_JWT_TOKENS_LS_KEY = "lumia-passport-jwt-tokens";
|
|
4728
|
-
function getBearer() {
|
|
4729
|
-
try {
|
|
4730
|
-
const sessionString = localStorage.getItem(LP_JWT_TOKENS_LS_KEY);
|
|
4731
|
-
if (!sessionString) return null;
|
|
4732
|
-
const session = JSON.parse(sessionString);
|
|
4733
|
-
if (session && typeof session.accessToken === "string" && typeof session.userId === "string") {
|
|
4734
|
-
return `Bearer ${session.accessToken}`;
|
|
4735
|
-
}
|
|
4736
|
-
return null;
|
|
4737
|
-
} catch (error) {
|
|
4738
|
-
console.error("Failed to parse Lumia Passport session:", error);
|
|
4739
|
-
return null;
|
|
4740
|
-
}
|
|
4741
|
-
}
|
|
4742
4582
|
function cn(...inputs) {
|
|
4743
4583
|
return twMerge(clsx(inputs));
|
|
4744
4584
|
}
|
|
@@ -4808,7 +4648,7 @@ function Footer() {
|
|
|
4808
4648
|
const { callbacks } = useLumiaPassportConfig();
|
|
4809
4649
|
const { address, setSession, setAddress, setStatus, setError, setIsLoading } = useLumiaPassportSession();
|
|
4810
4650
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
4811
|
-
const { mutate: disconnect, isPending: isDisconnecting } =
|
|
4651
|
+
const { mutate: disconnect, isPending: isDisconnecting } = useMutation({
|
|
4812
4652
|
mutationFn: async (disconnectAddress) => {
|
|
4813
4653
|
if (!disconnectAddress) throw new Error("No address to disconnect");
|
|
4814
4654
|
setError(null);
|
|
@@ -5115,47 +4955,20 @@ function Header() {
|
|
|
5115
4955
|
{
|
|
5116
4956
|
}
|
|
5117
4957
|
|
|
5118
|
-
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
5119
|
-
import { create as create2 } from "zustand";
|
|
5120
|
-
var useManageWalletStore = create2((set) => ({
|
|
5121
|
-
emailStep: "input",
|
|
5122
|
-
email: "",
|
|
5123
|
-
emailCode: "",
|
|
5124
|
-
emailCodeSentError: "",
|
|
5125
|
-
emailCodeExpiresIn: 0,
|
|
5126
|
-
isWalletLinking: false,
|
|
5127
|
-
linkIsLoading: false,
|
|
5128
|
-
linkError: "",
|
|
5129
|
-
verificationError: "",
|
|
5130
|
-
providerType: null,
|
|
5131
|
-
confirmUnlink: null,
|
|
5132
|
-
setEmailStep: (emailStep) => set({ emailStep }),
|
|
5133
|
-
setEmail: (email) => set({ email }),
|
|
5134
|
-
setEmailCode: (emailCode) => set({ emailCode }),
|
|
5135
|
-
setEmailCodeSentError: (emailCodeSentError) => set({ emailCodeSentError }),
|
|
5136
|
-
setEmailCodeExpiresIn: (emailCodeExpiresIn) => set({ emailCodeExpiresIn }),
|
|
5137
|
-
setIsWalletLinking: (isWalletLinking) => set({ isWalletLinking }),
|
|
5138
|
-
setLinkIsLoading: (linkIsLoading) => set({ linkIsLoading }),
|
|
5139
|
-
setLinkError: (linkError) => set({ linkError }),
|
|
5140
|
-
setVerificationError: (verificationError) => set({ verificationError }),
|
|
5141
|
-
setProviderType: (providerType) => {
|
|
5142
|
-
console.log("[ManageWalletStore] setProviderType called with:", providerType, new Error().stack);
|
|
5143
|
-
set({ providerType });
|
|
5144
|
-
},
|
|
5145
|
-
setConfirmUnlink: (confirmUnlink) => set({ confirmUnlink })
|
|
5146
|
-
}));
|
|
5147
|
-
|
|
5148
4958
|
// src/internal/components/ui/dialog.tsx
|
|
5149
4959
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
4960
|
+
import { merge } from "lodash-es";
|
|
5150
4961
|
import { ArrowLeft, SlidersHorizontal, X } from "lucide-react";
|
|
5151
|
-
import
|
|
4962
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
5152
4963
|
|
|
5153
4964
|
// src/internal/hooks/useLayoutStore.ts
|
|
5154
|
-
import { create as
|
|
5155
|
-
var useLayoutStore =
|
|
4965
|
+
import { create as create2 } from "zustand";
|
|
4966
|
+
var useLayoutStore = create2((set) => ({
|
|
5156
4967
|
colorMode: "light",
|
|
5157
|
-
layoutView:
|
|
4968
|
+
// layoutView: 'desktop',
|
|
5158
4969
|
// deviceType: 'non-touch',
|
|
4970
|
+
isMobileView: false,
|
|
4971
|
+
maxScrollHeight: MAX_CONTENT_HEIGHT,
|
|
5159
4972
|
isDialogClosing: false,
|
|
5160
4973
|
isDialogOpen: false,
|
|
5161
4974
|
isDialogForced: false,
|
|
@@ -5164,8 +4977,10 @@ var useLayoutStore = create3((set) => ({
|
|
|
5164
4977
|
dialogContent: null,
|
|
5165
4978
|
isSettings: false,
|
|
5166
4979
|
setColorMode: (colorMode) => set({ colorMode }),
|
|
5167
|
-
setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
4980
|
+
// setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
5168
4981
|
// setDeviceType: (deviceType) => set(() => ({ deviceType })),
|
|
4982
|
+
setIsMobileView: (isMobileView) => set({ isMobileView }),
|
|
4983
|
+
setMaxScrollHeight: (maxScrollHeight) => set({ maxScrollHeight }),
|
|
5169
4984
|
setIsDialogClosing: (isDialogClosing) => set({ isDialogClosing }),
|
|
5170
4985
|
setIsDialogOpen: (isDialogOpen) => set({ isDialogOpen }),
|
|
5171
4986
|
setIsDialogForced: (isDialogForced) => set({ isDialogForced }),
|
|
@@ -5179,7 +4994,7 @@ var useLayoutStore = create3((set) => ({
|
|
|
5179
4994
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
5180
4995
|
var Dialog = DialogPrimitive.Root;
|
|
5181
4996
|
var DialogPortal = DialogPrimitive.Portal;
|
|
5182
|
-
var DialogOverlay =
|
|
4997
|
+
var DialogOverlay = forwardRef3(
|
|
5183
4998
|
({ className, closing, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
5184
4999
|
DialogPrimitive.Overlay,
|
|
5185
5000
|
{
|
|
@@ -5195,97 +5010,97 @@ var DialogOverlay = React2.forwardRef(
|
|
|
5195
5010
|
)
|
|
5196
5011
|
);
|
|
5197
5012
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
5198
|
-
|
|
5013
|
+
function useDecideContentStyles() {
|
|
5014
|
+
const isMobileView = useLayoutStore((st) => st.isMobileView);
|
|
5015
|
+
const isClosing = useLayoutStore((st) => !!st.isDialogOpen && !!st.isDialogClosing);
|
|
5016
|
+
const mobileStyles = isMobileView ? { "--l-pass-maw": "100%", "--l-pass-bdrs": "20px 20px 0px 0px" } : {};
|
|
5017
|
+
return {
|
|
5018
|
+
isClosing,
|
|
5019
|
+
isMobileView,
|
|
5020
|
+
style: merge({}, mobileStyles)
|
|
5021
|
+
};
|
|
5022
|
+
}
|
|
5023
|
+
var CONTENT_BG_SETUP = {
|
|
5024
|
+
backgroundColor: "var(--l-pass-bg)",
|
|
5025
|
+
border: "1px solid var(--l-pass-bd)",
|
|
5026
|
+
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
5027
|
+
};
|
|
5028
|
+
var DialogContent = forwardRef3(
|
|
5199
5029
|
({ className, children, hideClose, colorMode, ...props }, ref) => {
|
|
5200
5030
|
const isSettings = useLayoutStore((st) => st.isSettings);
|
|
5201
|
-
const isDialogOpen = useLayoutStore((st) => st.isDialogOpen);
|
|
5202
|
-
const isDialogClosing = useLayoutStore((st) => st.isDialogClosing);
|
|
5203
|
-
const isWalletLinking = useManageWalletStore((st) => st.isWalletLinking);
|
|
5204
5031
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5205
5032
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
5206
|
-
const
|
|
5207
|
-
return /* @__PURE__ */ jsx9(DialogPortal, { children: /* @__PURE__ */ jsxs8(
|
|
5208
|
-
|
|
5209
|
-
|
|
5210
|
-
|
|
5211
|
-
|
|
5212
|
-
|
|
5213
|
-
|
|
5214
|
-
|
|
5215
|
-
|
|
5216
|
-
|
|
5033
|
+
const { isMobileView, isClosing, style } = useDecideContentStyles();
|
|
5034
|
+
return /* @__PURE__ */ jsx9(DialogPortal, { children: /* @__PURE__ */ jsxs8("div", { className: "lumia-scope", "data-lumia-passport-mode": colorMode, style, children: [
|
|
5035
|
+
/* @__PURE__ */ jsx9(DialogOverlay, { closing: isClosing }),
|
|
5036
|
+
/* @__PURE__ */ jsx9(
|
|
5037
|
+
"div",
|
|
5038
|
+
{
|
|
5039
|
+
className: cn(
|
|
5040
|
+
"fixed inset-0 z-[9999] flex items-center justify-center pointer-events-none",
|
|
5041
|
+
isClosing ? "animate-dialog-out" : "animate-dialog-in",
|
|
5042
|
+
isMobileView ? "items-end" : "items-center"
|
|
5043
|
+
),
|
|
5044
|
+
children: /* @__PURE__ */ jsxs8(
|
|
5045
|
+
DialogPrimitive.Content,
|
|
5217
5046
|
{
|
|
5047
|
+
ref,
|
|
5048
|
+
style: !!className ? void 0 : CONTENT_BG_SETUP,
|
|
5218
5049
|
className: cn(
|
|
5219
|
-
"
|
|
5220
|
-
|
|
5050
|
+
"relative pointer-events-auto w-full",
|
|
5051
|
+
"max-w-[var(--l-pass-maw)] max-h-[95dvh] p-0 gap-0",
|
|
5052
|
+
"text-[var(--l-pass-fg)]",
|
|
5053
|
+
"rounded-[var(--l-pass-bdrs)] overflow-hidden",
|
|
5054
|
+
className
|
|
5221
5055
|
),
|
|
5222
|
-
|
|
5223
|
-
|
|
5224
|
-
|
|
5225
|
-
|
|
5226
|
-
|
|
5227
|
-
|
|
5228
|
-
|
|
5229
|
-
|
|
5230
|
-
|
|
5231
|
-
|
|
5232
|
-
|
|
5233
|
-
|
|
5234
|
-
|
|
5235
|
-
|
|
5236
|
-
|
|
5237
|
-
|
|
5238
|
-
|
|
5239
|
-
|
|
5240
|
-
|
|
5241
|
-
|
|
5242
|
-
|
|
5243
|
-
|
|
5244
|
-
|
|
5245
|
-
|
|
5246
|
-
|
|
5247
|
-
|
|
5248
|
-
|
|
5249
|
-
|
|
5250
|
-
|
|
5251
|
-
|
|
5252
|
-
|
|
5253
|
-
|
|
5254
|
-
|
|
5255
|
-
|
|
5256
|
-
|
|
5257
|
-
|
|
5258
|
-
|
|
5259
|
-
|
|
5260
|
-
|
|
5261
|
-
|
|
5262
|
-
|
|
5263
|
-
|
|
5264
|
-
|
|
5265
|
-
"items-center justify-center rounded-full bg-[var(--l-pass-bg-error)]",
|
|
5266
|
-
"text-xs font-semibold text-[var(--l-pass-error)]"
|
|
5267
|
-
),
|
|
5268
|
-
children: settingsNotifications.length
|
|
5269
|
-
}
|
|
5270
|
-
)
|
|
5271
|
-
]
|
|
5272
|
-
}
|
|
5273
|
-
),
|
|
5274
|
-
!hideClose && /* @__PURE__ */ jsx9(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsxs8(Button, { variant: "ghost", size: "icon", className: "w-4 h-4", children: [
|
|
5275
|
-
/* @__PURE__ */ jsx9(X, { className: "h-4 w-4" }),
|
|
5276
|
-
/* @__PURE__ */ jsx9("span", { className: "sr-only", children: "Close" })
|
|
5277
|
-
] }) })
|
|
5278
|
-
]
|
|
5279
|
-
}
|
|
5280
|
-
)
|
|
5281
|
-
]
|
|
5282
|
-
}
|
|
5283
|
-
)
|
|
5056
|
+
...props,
|
|
5057
|
+
children: [
|
|
5058
|
+
children,
|
|
5059
|
+
/* @__PURE__ */ jsxs8(
|
|
5060
|
+
"div",
|
|
5061
|
+
{
|
|
5062
|
+
className: cn(
|
|
5063
|
+
"flex items-center justify-center gap-[var(--l-pass-gap)]",
|
|
5064
|
+
"absolute right-[var(--l-pass-pd)] top-[var(--l-pass-pd)]"
|
|
5065
|
+
),
|
|
5066
|
+
children: [
|
|
5067
|
+
isSettings && /* @__PURE__ */ jsxs8(
|
|
5068
|
+
Button,
|
|
5069
|
+
{
|
|
5070
|
+
variant: "ghost",
|
|
5071
|
+
size: "icon",
|
|
5072
|
+
className: "relative w-4 h-4",
|
|
5073
|
+
onClick: () => setPage("settings" /* SETTINGS */),
|
|
5074
|
+
children: [
|
|
5075
|
+
/* @__PURE__ */ jsx9("span", { className: "sr-only", children: "Settings" }),
|
|
5076
|
+
/* @__PURE__ */ jsx9(SlidersHorizontal, { className: "w-4 h-4" }),
|
|
5077
|
+
!!settingsNotifications.length && /* @__PURE__ */ jsx9(
|
|
5078
|
+
"div",
|
|
5079
|
+
{
|
|
5080
|
+
className: cn(
|
|
5081
|
+
"absolute -top-2 -right-2 flex h-4 w-4",
|
|
5082
|
+
"items-center justify-center rounded-full bg-[var(--l-pass-bg-error)]",
|
|
5083
|
+
"text-xs font-semibold text-[var(--l-pass-error)]"
|
|
5084
|
+
),
|
|
5085
|
+
children: settingsNotifications.length
|
|
5086
|
+
}
|
|
5087
|
+
)
|
|
5088
|
+
]
|
|
5089
|
+
}
|
|
5090
|
+
),
|
|
5091
|
+
!hideClose && /* @__PURE__ */ jsx9(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsxs8(Button, { variant: "ghost", size: "icon", className: "w-4 h-4", children: [
|
|
5092
|
+
/* @__PURE__ */ jsx9(X, { className: "h-4 w-4" }),
|
|
5093
|
+
/* @__PURE__ */ jsx9("span", { className: "sr-only", children: "Close" })
|
|
5094
|
+
] }) })
|
|
5095
|
+
]
|
|
5096
|
+
}
|
|
5097
|
+
)
|
|
5098
|
+
]
|
|
5284
5099
|
}
|
|
5285
5100
|
)
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
) });
|
|
5101
|
+
}
|
|
5102
|
+
)
|
|
5103
|
+
] }) });
|
|
5289
5104
|
}
|
|
5290
5105
|
);
|
|
5291
5106
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
@@ -5293,7 +5108,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { cl
|
|
|
5293
5108
|
DialogHeader.displayName = "DialogHeader";
|
|
5294
5109
|
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
|
|
5295
5110
|
DialogFooter.displayName = "DialogFooter";
|
|
5296
|
-
var DialogTitle =
|
|
5111
|
+
var DialogTitle = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
5297
5112
|
DialogPrimitive.Title,
|
|
5298
5113
|
{
|
|
5299
5114
|
ref,
|
|
@@ -5302,7 +5117,7 @@ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
5302
5117
|
}
|
|
5303
5118
|
));
|
|
5304
5119
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
5305
|
-
var DialogDescription =
|
|
5120
|
+
var DialogDescription = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
|
|
5306
5121
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
5307
5122
|
|
|
5308
5123
|
// src/internal/components/ui/visually-hidden.tsx
|
|
@@ -5310,7 +5125,7 @@ import { jsx as jsx10 } from "react/jsx-runtime";
|
|
|
5310
5125
|
var VisuallyHidden = ({ children }) => /* @__PURE__ */ jsx10("span", { className: "sr-only absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0", children });
|
|
5311
5126
|
|
|
5312
5127
|
// src/internal/hooks/useAutoConnect.ts
|
|
5313
|
-
import { useCallback, useEffect as
|
|
5128
|
+
import { useCallback, useEffect as useEffect2, useRef } from "react";
|
|
5314
5129
|
function useAutoConnect() {
|
|
5315
5130
|
const {
|
|
5316
5131
|
config: { current: config },
|
|
@@ -5365,7 +5180,7 @@ function useAutoConnect() {
|
|
|
5365
5180
|
[usePaymaster, setStatus, callbacks]
|
|
5366
5181
|
);
|
|
5367
5182
|
const autoConnectAttemptedRef = useRef(false);
|
|
5368
|
-
|
|
5183
|
+
useEffect2(() => {
|
|
5369
5184
|
if (autoConnectAttemptedRef.current) return;
|
|
5370
5185
|
setIsLoading(true);
|
|
5371
5186
|
const tryAutoConnect = async (attempt) => {
|
|
@@ -5484,11 +5299,11 @@ function useAutoConnect() {
|
|
|
5484
5299
|
}
|
|
5485
5300
|
|
|
5486
5301
|
// src/internal/hooks/useBackupStatusChanges.ts
|
|
5487
|
-
import { useEffect as
|
|
5302
|
+
import { useEffect as useEffect3 } from "react";
|
|
5488
5303
|
init_vaultClient();
|
|
5489
5304
|
function useBackupStatusChanges() {
|
|
5490
5305
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5491
|
-
|
|
5306
|
+
useEffect3(() => {
|
|
5492
5307
|
const handleBackupStatusChanged = async (event) => {
|
|
5493
5308
|
const customEvent = event;
|
|
5494
5309
|
const { method, success } = customEvent.detail || {};
|
|
@@ -5514,13 +5329,13 @@ function useBackupStatusChanges() {
|
|
|
5514
5329
|
}
|
|
5515
5330
|
|
|
5516
5331
|
// src/internal/hooks/useCheckVaultStatus.ts
|
|
5517
|
-
import { useMutation as
|
|
5518
|
-
import { useEffect as
|
|
5332
|
+
import { useMutation as useMutation2 } from "@tanstack/react-query";
|
|
5333
|
+
import { useEffect as useEffect4 } from "react";
|
|
5519
5334
|
init_vaultClient();
|
|
5520
5335
|
function useCheckVaultStatus() {
|
|
5521
5336
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5522
5337
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5523
|
-
const { mutate: checkVaultStatus } =
|
|
5338
|
+
const { mutate: checkVaultStatus } = useMutation2({
|
|
5524
5339
|
mutationFn: async () => {
|
|
5525
5340
|
const stats = await getShareRecoveryStats();
|
|
5526
5341
|
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
@@ -5534,37 +5349,29 @@ function useCheckVaultStatus() {
|
|
|
5534
5349
|
setHasServerVault(false);
|
|
5535
5350
|
}
|
|
5536
5351
|
});
|
|
5537
|
-
|
|
5352
|
+
useEffect4(() => {
|
|
5538
5353
|
if (!address) return setHasServerVault(false);
|
|
5539
5354
|
checkVaultStatus();
|
|
5540
5355
|
}, [address, checkVaultStatus]);
|
|
5541
5356
|
}
|
|
5542
5357
|
|
|
5543
|
-
// src/internal/hooks/
|
|
5358
|
+
// src/internal/hooks/useDetectMaxScrollHeight.ts
|
|
5544
5359
|
import { debounce } from "lodash-es";
|
|
5545
|
-
import { useCallback as useCallback2, useEffect as
|
|
5546
|
-
var BREAKPOINTS = {
|
|
5547
|
-
mobileSM: 0,
|
|
5548
|
-
mobileXL: 475,
|
|
5549
|
-
tablet: 960,
|
|
5550
|
-
laptop: 1440,
|
|
5551
|
-
desktop: 1920
|
|
5552
|
-
};
|
|
5360
|
+
import { useCallback as useCallback2, useEffect as useEffect5 } from "react";
|
|
5553
5361
|
var DEBOUNCE_DELAY = 50;
|
|
5554
|
-
function
|
|
5555
|
-
const
|
|
5362
|
+
function useDetectMaxScrollHeight() {
|
|
5363
|
+
const setIsMobileView = useLayoutStore((state) => state.setIsMobileView);
|
|
5364
|
+
const setMaxScrollHeight = useLayoutStore((state) => state.setMaxScrollHeight);
|
|
5556
5365
|
const onResize = useCallback2(
|
|
5557
|
-
debounce((
|
|
5558
|
-
|
|
5559
|
-
|
|
5560
|
-
|
|
5561
|
-
if (viewportWidth < BREAKPOINTS.desktop) return setLayoutView("laptop");
|
|
5562
|
-
setLayoutView("desktop");
|
|
5366
|
+
debounce(({ width, height }) => {
|
|
5367
|
+
const limContentHeight = height * 0.92 - 116 - 72;
|
|
5368
|
+
setIsMobileView(width < height && (width < 475 || limContentHeight <= MAX_CONTENT_HEIGHT));
|
|
5369
|
+
setMaxScrollHeight(Math.min(limContentHeight, MAX_CONTENT_HEIGHT));
|
|
5563
5370
|
}, DEBOUNCE_DELAY),
|
|
5564
|
-
[
|
|
5371
|
+
[setMaxScrollHeight, setIsMobileView]
|
|
5565
5372
|
);
|
|
5566
|
-
|
|
5567
|
-
const obs = new ResizeObserver(([entry]) => onResize(entry.contentRect
|
|
5373
|
+
useEffect5(() => {
|
|
5374
|
+
const obs = new ResizeObserver(([entry]) => onResize(entry.contentRect));
|
|
5568
5375
|
const doc = window.document.getElementsByTagName("html")[0];
|
|
5569
5376
|
if (doc) obs.observe(doc);
|
|
5570
5377
|
return () => obs.disconnect();
|
|
@@ -5572,19 +5379,19 @@ function useDetectLayoutView() {
|
|
|
5572
5379
|
}
|
|
5573
5380
|
|
|
5574
5381
|
// src/internal/hooks/usePageMapper.tsx
|
|
5575
|
-
import { useCallback as useCallback17, useEffect as
|
|
5382
|
+
import { useCallback as useCallback17, useEffect as useEffect26 } from "react";
|
|
5576
5383
|
|
|
5577
5384
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5578
5385
|
import { AnimatePresence, motion } from "framer-motion";
|
|
5579
5386
|
import { Loader as Loader5 } from "lucide-react";
|
|
5580
|
-
import { useEffect as
|
|
5387
|
+
import { useEffect as useEffect9, useMemo } from "react";
|
|
5581
5388
|
|
|
5582
5389
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5583
5390
|
import { AlertTriangle, Cross } from "lucide-react";
|
|
5584
5391
|
|
|
5585
5392
|
// src/internal/components/AuthMenu/useAuthStore.ts
|
|
5586
|
-
import { create as
|
|
5587
|
-
var useAuthStore =
|
|
5393
|
+
import { create as create3 } from "zustand";
|
|
5394
|
+
var useAuthStore = create3((set) => ({
|
|
5588
5395
|
step: "signin",
|
|
5589
5396
|
alert: null,
|
|
5590
5397
|
email: "",
|
|
@@ -5670,9 +5477,9 @@ init_auth();
|
|
|
5670
5477
|
init_profile();
|
|
5671
5478
|
|
|
5672
5479
|
// src/internal/components/ui/input.tsx
|
|
5673
|
-
import
|
|
5480
|
+
import React2, { useImperativeHandle, useRef as useRef2 } from "react";
|
|
5674
5481
|
import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
5675
|
-
var Input =
|
|
5482
|
+
var Input = React2.forwardRef((props, ref) => {
|
|
5676
5483
|
const { className, disabled, error, Icon, element, ...inputProps } = props;
|
|
5677
5484
|
const internalRef = useRef2(null);
|
|
5678
5485
|
useImperativeHandle(ref, () => internalRef.current);
|
|
@@ -5863,12 +5670,12 @@ function PasskeyAddIcon(props) {
|
|
|
5863
5670
|
init_auth();
|
|
5864
5671
|
|
|
5865
5672
|
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
5866
|
-
import { useCallback as useCallback3, useEffect as
|
|
5673
|
+
import { useCallback as useCallback3, useEffect as useEffect6, useRef as useRef3 } from "react";
|
|
5867
5674
|
var useExpandable = (props) => {
|
|
5868
5675
|
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
5869
5676
|
const expandableRef = useRef3(null);
|
|
5870
5677
|
const contentRef = useRef3(null);
|
|
5871
|
-
|
|
5678
|
+
useEffect6(() => {
|
|
5872
5679
|
if (!expandableRef.current) return;
|
|
5873
5680
|
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
5874
5681
|
}, []);
|
|
@@ -5883,7 +5690,7 @@ var useExpandable = (props) => {
|
|
|
5883
5690
|
// ON_RESIZE_DELEAY),
|
|
5884
5691
|
[minHeight]
|
|
5885
5692
|
);
|
|
5886
|
-
|
|
5693
|
+
useEffect6(() => {
|
|
5887
5694
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5888
5695
|
const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
|
|
5889
5696
|
obs.observe(expandableRef.current);
|
|
@@ -6142,7 +5949,7 @@ import { Fragment as Fragment2 } from "react";
|
|
|
6142
5949
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
6143
5950
|
init_lumiaPassport();
|
|
6144
5951
|
init_projectId();
|
|
6145
|
-
import { useMutation as
|
|
5952
|
+
import { useMutation as useMutation3 } from "@tanstack/react-query";
|
|
6146
5953
|
import { ChevronRight, Loader as Loader3, Mail as Mail3 } from "lucide-react";
|
|
6147
5954
|
|
|
6148
5955
|
// src/internal/components/ui/highlight.tsx
|
|
@@ -6178,7 +5985,7 @@ function Email() {
|
|
|
6178
5985
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6179
5986
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6180
5987
|
const { email, codeSendError, alert: alert2, setEmail, setCodeSendError, setExpiresIn, setStep, setAlert } = useAuthStore();
|
|
6181
|
-
const { mutate: onSendVerificationCode } =
|
|
5988
|
+
const { mutate: onSendVerificationCode } = useMutation3({
|
|
6182
5989
|
mutationFn: async (mail) => {
|
|
6183
5990
|
const isEmailValid = mail.length !== 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail);
|
|
6184
5991
|
if (!isEmailValid) {
|
|
@@ -6985,7 +6792,7 @@ function useAuthMenuHandlers() {
|
|
|
6985
6792
|
}
|
|
6986
6793
|
|
|
6987
6794
|
// src/internal/components/AuthMenu/useListenIframeAuthEvents.ts
|
|
6988
|
-
import { useCallback as useCallback7, useEffect as
|
|
6795
|
+
import { useCallback as useCallback7, useEffect as useEffect7 } from "react";
|
|
6989
6796
|
function useListenIframeAuthEvents() {
|
|
6990
6797
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
6991
6798
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
@@ -7007,7 +6814,7 @@ function useListenIframeAuthEvents() {
|
|
|
7007
6814
|
},
|
|
7008
6815
|
[setPage, setIsIframeReady]
|
|
7009
6816
|
);
|
|
7010
|
-
|
|
6817
|
+
useEffect7(() => {
|
|
7011
6818
|
window.addEventListener("message", handleIframeMessage);
|
|
7012
6819
|
return () => window.removeEventListener("message", handleIframeMessage);
|
|
7013
6820
|
}, [handleIframeMessage]);
|
|
@@ -7015,7 +6822,7 @@ function useListenIframeAuthEvents() {
|
|
|
7015
6822
|
|
|
7016
6823
|
// src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
|
|
7017
6824
|
init_lumiaPassport();
|
|
7018
|
-
import { useMutation as
|
|
6825
|
+
import { useMutation as useMutation4 } from "@tanstack/react-query";
|
|
7019
6826
|
import { ArrowLeft as ArrowLeft3, Loader as Loader4 } from "lucide-react";
|
|
7020
6827
|
|
|
7021
6828
|
// src/internal/assets/OtpIcon.tsx
|
|
@@ -7036,21 +6843,21 @@ init_auth();
|
|
|
7036
6843
|
init_projectId();
|
|
7037
6844
|
|
|
7038
6845
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
7039
|
-
import { useEffect as
|
|
6846
|
+
import { useEffect as useEffect8, useRef as useRef5, useState as useState5 } from "react";
|
|
7040
6847
|
import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
7041
6848
|
var VerificationCodeInput = (props) => {
|
|
7042
6849
|
const { onVerifyCode, onResendCode, isLoading, expiresIn, error } = props;
|
|
7043
6850
|
const setVerificationError = useAuthStore((st) => st.setVerificationError);
|
|
7044
6851
|
const [timeLeft, setTimeLeft] = useState5(expiresIn);
|
|
7045
|
-
|
|
7046
|
-
|
|
6852
|
+
useEffect8(() => setTimeLeft(expiresIn), [expiresIn]);
|
|
6853
|
+
useEffect8(() => {
|
|
7047
6854
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
7048
6855
|
return () => clearInterval(t);
|
|
7049
6856
|
}, []);
|
|
7050
6857
|
const lastSubmittedRef = useRef5(null);
|
|
7051
6858
|
const inputsRef = useRef5([]);
|
|
7052
6859
|
const [digits, setDigits] = useState5(["", "", "", "", "", ""]);
|
|
7053
|
-
|
|
6860
|
+
useEffect8(() => {
|
|
7054
6861
|
const code = digits.join("");
|
|
7055
6862
|
if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
|
|
7056
6863
|
if (lastSubmittedRef.current !== code) {
|
|
@@ -7059,7 +6866,7 @@ var VerificationCodeInput = (props) => {
|
|
|
7059
6866
|
}
|
|
7060
6867
|
}
|
|
7061
6868
|
}, [digits, isLoading, onVerifyCode]);
|
|
7062
|
-
|
|
6869
|
+
useEffect8(() => {
|
|
7063
6870
|
const t = setTimeout(() => {
|
|
7064
6871
|
inputsRef.current[0]?.focus();
|
|
7065
6872
|
}, 0);
|
|
@@ -7184,7 +6991,7 @@ function VerifyStep(props) {
|
|
|
7184
6991
|
setEmail,
|
|
7185
6992
|
setExpiresIn
|
|
7186
6993
|
} = useAuthStore();
|
|
7187
|
-
const { mutate: onVerifyCode, isPending: isCodeVerifying } =
|
|
6994
|
+
const { mutate: onVerifyCode, isPending: isCodeVerifying } = useMutation4({
|
|
7188
6995
|
mutationFn: async (code) => {
|
|
7189
6996
|
setIsLoading(true);
|
|
7190
6997
|
setVerificationError("");
|
|
@@ -7257,7 +7064,7 @@ function VerifyStep(props) {
|
|
|
7257
7064
|
setIsLoading(false);
|
|
7258
7065
|
}
|
|
7259
7066
|
});
|
|
7260
|
-
const { mutate: onResendCode, isPending: isCodeResending } =
|
|
7067
|
+
const { mutate: onResendCode, isPending: isCodeResending } = useMutation4({
|
|
7261
7068
|
mutationFn: async () => {
|
|
7262
7069
|
setVerificationError("");
|
|
7263
7070
|
setIsLoading(true);
|
|
@@ -7335,7 +7142,7 @@ var AuthMenu = () => {
|
|
|
7335
7142
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7336
7143
|
const page = useLayoutDataStore((st) => st.page);
|
|
7337
7144
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7338
|
-
|
|
7145
|
+
useEffect9(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
7339
7146
|
const {
|
|
7340
7147
|
step,
|
|
7341
7148
|
setStep,
|
|
@@ -7346,7 +7153,7 @@ var AuthMenu = () => {
|
|
|
7346
7153
|
setFailedMessage,
|
|
7347
7154
|
setCodeSendError
|
|
7348
7155
|
} = useAuthStore();
|
|
7349
|
-
|
|
7156
|
+
useEffect9(() => {
|
|
7350
7157
|
if (page !== "auth" /* AUTH */) {
|
|
7351
7158
|
setStep("signin");
|
|
7352
7159
|
setEmail("");
|
|
@@ -7511,9 +7318,9 @@ function RampnowIcon() {
|
|
|
7511
7318
|
}
|
|
7512
7319
|
|
|
7513
7320
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7514
|
-
import { useMutation as
|
|
7321
|
+
import { useMutation as useMutation5, useQuery as useQuery3, useQueryClient } from "@tanstack/react-query";
|
|
7515
7322
|
import { DollarSign, LoaderIcon } from "lucide-react";
|
|
7516
|
-
import { useEffect as
|
|
7323
|
+
import { useEffect as useEffect11, useRef as useRef6 } from "react";
|
|
7517
7324
|
|
|
7518
7325
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7519
7326
|
import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
@@ -7554,81 +7361,38 @@ var QUERY_KEYS2 = {
|
|
|
7554
7361
|
};
|
|
7555
7362
|
|
|
7556
7363
|
// src/internal/components/BuyMenu/binance/api.ts
|
|
7557
|
-
|
|
7364
|
+
init_iframe_manager();
|
|
7558
7365
|
async function getLumiaNetworkQuery() {
|
|
7559
|
-
const
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
headers: {
|
|
7563
|
-
"Content-Type": "application/json",
|
|
7564
|
-
...auth && { Authorization: auth }
|
|
7565
|
-
}
|
|
7566
|
-
});
|
|
7567
|
-
const data = await response.json();
|
|
7568
|
-
if (!data?.success) {
|
|
7569
|
-
throw new Error(`${data.code}: ${data.message}`);
|
|
7366
|
+
const iframeManager = getIframeManager();
|
|
7367
|
+
if (!iframeManager) {
|
|
7368
|
+
throw new Error("Iframe manager is not initialized");
|
|
7570
7369
|
}
|
|
7571
|
-
|
|
7572
|
-
if (!lumiaNetwork) {
|
|
7573
|
-
console.error("Lumia is not available in Binance pairs API");
|
|
7574
|
-
throw new Error("Lumia is not available in API");
|
|
7575
|
-
}
|
|
7576
|
-
return lumiaNetwork;
|
|
7370
|
+
return await iframeManager.sendMessage("BINANCE_GET_LUMIA_NETWORK_QUERY", {});
|
|
7577
7371
|
}
|
|
7578
7372
|
async function getPaymentMethodsQuery(payload) {
|
|
7579
|
-
const
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
headers: {
|
|
7583
|
-
"Content-Type": "application/json",
|
|
7584
|
-
...auth && { Authorization: auth }
|
|
7585
|
-
},
|
|
7586
|
-
body: JSON.stringify(payload)
|
|
7587
|
-
});
|
|
7588
|
-
const data = await response.json();
|
|
7589
|
-
if (!data.success) {
|
|
7590
|
-
throw new Error(`${data.code}: ${data.message}`);
|
|
7591
|
-
}
|
|
7592
|
-
if (!data.data.paymentMethods.length) {
|
|
7593
|
-
throw new Error("No payment methods available yet");
|
|
7373
|
+
const iframeManager = getIframeManager();
|
|
7374
|
+
if (!iframeManager) {
|
|
7375
|
+
throw new Error("Iframe manager is not initialized");
|
|
7594
7376
|
}
|
|
7595
|
-
return
|
|
7377
|
+
return await iframeManager.sendMessage("BINANCE_GET_PAYMENT_METHODS_QUERY", payload);
|
|
7596
7378
|
}
|
|
7597
7379
|
async function getQuoteQuery(payload) {
|
|
7598
|
-
const
|
|
7599
|
-
|
|
7600
|
-
|
|
7601
|
-
headers: {
|
|
7602
|
-
"Content-Type": "application/json",
|
|
7603
|
-
...auth && { Authorization: auth }
|
|
7604
|
-
},
|
|
7605
|
-
body: JSON.stringify(payload)
|
|
7606
|
-
});
|
|
7607
|
-
const data = await response.json();
|
|
7608
|
-
if (!data.success) {
|
|
7609
|
-
throw new Error(`${data.code}: ${data.message}`);
|
|
7380
|
+
const iframeManager = getIframeManager();
|
|
7381
|
+
if (!iframeManager) {
|
|
7382
|
+
throw new Error("Iframe manager is not initialized");
|
|
7610
7383
|
}
|
|
7611
|
-
return
|
|
7384
|
+
return await iframeManager.sendMessage("BINANCE_GET_QUOTE_QUERY", payload);
|
|
7612
7385
|
}
|
|
7613
7386
|
async function createPreorderMutation(payload) {
|
|
7614
|
-
const
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
headers: {
|
|
7618
|
-
"Content-Type": "application/json",
|
|
7619
|
-
...auth && { Authorization: auth }
|
|
7620
|
-
},
|
|
7621
|
-
body: JSON.stringify(payload)
|
|
7622
|
-
});
|
|
7623
|
-
const data = await response.json();
|
|
7624
|
-
if (!data.success) {
|
|
7625
|
-
throw new Error(`${data.code}: ${data.message}`);
|
|
7387
|
+
const iframeManager = getIframeManager();
|
|
7388
|
+
if (!iframeManager) {
|
|
7389
|
+
throw new Error("Iframe manager is not initialized");
|
|
7626
7390
|
}
|
|
7627
|
-
return
|
|
7391
|
+
return await iframeManager.sendMessage("BINANCE_CREATE_PREORDER_MUTATION", payload);
|
|
7628
7392
|
}
|
|
7629
7393
|
|
|
7630
7394
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7631
|
-
import { useEffect as
|
|
7395
|
+
import { useEffect as useEffect10 } from "react";
|
|
7632
7396
|
|
|
7633
7397
|
// src/internal/components/BuyMenu/binance/utils.ts
|
|
7634
7398
|
function getPayMethodID(pm) {
|
|
@@ -7648,7 +7412,7 @@ function handleErrors(errors) {
|
|
|
7648
7412
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7649
7413
|
var useQueriesErrorHandler = (errors, stateUpdater) => {
|
|
7650
7414
|
const { error: errorTitle, message: errorMessage } = handleErrors(errors);
|
|
7651
|
-
|
|
7415
|
+
useEffect10(() => {
|
|
7652
7416
|
if (!errorTitle && !errorMessage) return;
|
|
7653
7417
|
console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
|
|
7654
7418
|
stateUpdater(1);
|
|
@@ -7697,14 +7461,14 @@ function Binance(props) {
|
|
|
7697
7461
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7698
7462
|
});
|
|
7699
7463
|
const lastLoadedPaymentModes = useRef6([]);
|
|
7700
|
-
|
|
7464
|
+
useEffect11(() => {
|
|
7701
7465
|
if (!paymentModes?.length) return;
|
|
7702
7466
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
7703
7467
|
lastLoadedPaymentModes.current = paymentModes;
|
|
7704
7468
|
}, [paymentModes]);
|
|
7705
7469
|
const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
|
|
7706
7470
|
const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
|
|
7707
|
-
|
|
7471
|
+
useEffect11(() => setMinAmount(minimum), [minimum]);
|
|
7708
7472
|
const {
|
|
7709
7473
|
data: quoteData = null,
|
|
7710
7474
|
isLoading: isQuoteDataLoading,
|
|
@@ -7725,7 +7489,7 @@ function Binance(props) {
|
|
|
7725
7489
|
[lumiaNetworkError, paymentMethodsError, quoteError],
|
|
7726
7490
|
setSrcInputAmount
|
|
7727
7491
|
);
|
|
7728
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } =
|
|
7492
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = useMutation5({
|
|
7729
7493
|
mutationFn: async () => {
|
|
7730
7494
|
setRedirecting(true);
|
|
7731
7495
|
const returnUrl = window.location.href.split("?")[0];
|
|
@@ -7749,7 +7513,7 @@ function Binance(props) {
|
|
|
7749
7513
|
setRedirecting(false);
|
|
7750
7514
|
}
|
|
7751
7515
|
});
|
|
7752
|
-
|
|
7516
|
+
useEffect11(() => {
|
|
7753
7517
|
return () => {
|
|
7754
7518
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceNetworksQuery] });
|
|
7755
7519
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binancePaymentModes] });
|
|
@@ -7811,36 +7575,25 @@ function Binance(props) {
|
|
|
7811
7575
|
}
|
|
7812
7576
|
|
|
7813
7577
|
// src/internal/components/BuyMenu/rampnow/Rampnow.tsx
|
|
7814
|
-
import { useMutation as
|
|
7578
|
+
import { useMutation as useMutation6, useQuery as useQuery4, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
|
|
7815
7579
|
import { DollarSign as DollarSign2, LoaderIcon as LoaderIcon2 } from "lucide-react";
|
|
7816
|
-
import { useEffect as
|
|
7580
|
+
import { useEffect as useEffect12 } from "react";
|
|
7817
7581
|
|
|
7818
7582
|
// src/internal/components/BuyMenu/rampnow/api.ts
|
|
7819
|
-
|
|
7583
|
+
init_iframe_manager();
|
|
7820
7584
|
async function getRampnowConfigQuery() {
|
|
7821
|
-
const
|
|
7822
|
-
|
|
7823
|
-
|
|
7824
|
-
|
|
7825
|
-
});
|
|
7826
|
-
const data = await response.json();
|
|
7827
|
-
return data;
|
|
7585
|
+
const iframeManager = getIframeManager();
|
|
7586
|
+
if (!iframeManager) {
|
|
7587
|
+
throw new Error("Iframe manager is not initialized");
|
|
7588
|
+
}
|
|
7589
|
+
return await iframeManager.sendMessage("RAMPNOW_GET_CONFIG", {});
|
|
7828
7590
|
}
|
|
7829
7591
|
async function getRampOrderQuoteQuery(payload) {
|
|
7830
|
-
const
|
|
7831
|
-
|
|
7832
|
-
|
|
7833
|
-
headers: {
|
|
7834
|
-
"Content-Type": "application/json",
|
|
7835
|
-
...auth && { Authorization: auth }
|
|
7836
|
-
},
|
|
7837
|
-
body: JSON.stringify(payload)
|
|
7838
|
-
});
|
|
7839
|
-
const data = await response.json();
|
|
7840
|
-
if (!data.data) {
|
|
7841
|
-
throw new Error(`${data.code}: ${data.message}`);
|
|
7592
|
+
const iframeManager = getIframeManager();
|
|
7593
|
+
if (!iframeManager) {
|
|
7594
|
+
throw new Error("Iframe manager is not initialized");
|
|
7842
7595
|
}
|
|
7843
|
-
return
|
|
7596
|
+
return await iframeManager.sendMessage("RAMPNOW_GET_ORDER_QUOTE", payload);
|
|
7844
7597
|
}
|
|
7845
7598
|
|
|
7846
7599
|
// src/internal/components/BuyMenu/rampnow/constants.ts
|
|
@@ -7878,7 +7631,7 @@ function Rampnow(props) {
|
|
|
7878
7631
|
setMinAmount
|
|
7879
7632
|
} = control;
|
|
7880
7633
|
const qc = useQueryClient2();
|
|
7881
|
-
|
|
7634
|
+
useEffect12(() => {
|
|
7882
7635
|
setMinAmount(MINIMUM_RAMP_AMOUNT);
|
|
7883
7636
|
setPaymentMode(PAYMENT_MODES[0].id);
|
|
7884
7637
|
}, []);
|
|
@@ -7906,7 +7659,7 @@ function Rampnow(props) {
|
|
|
7906
7659
|
paymentMode
|
|
7907
7660
|
})
|
|
7908
7661
|
});
|
|
7909
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } =
|
|
7662
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = useMutation6({
|
|
7910
7663
|
mutationFn: async () => {
|
|
7911
7664
|
if (!configData?.apiKey?.length || !configData?.orderUrl?.length) {
|
|
7912
7665
|
throw new Error("RampNow order service is not available");
|
|
@@ -7935,7 +7688,7 @@ function Rampnow(props) {
|
|
|
7935
7688
|
console.error("Create CheckoutOrder failed:", err);
|
|
7936
7689
|
}
|
|
7937
7690
|
});
|
|
7938
|
-
|
|
7691
|
+
useEffect12(() => {
|
|
7939
7692
|
return () => {
|
|
7940
7693
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowConfig] });
|
|
7941
7694
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowQuote] });
|
|
@@ -8017,7 +7770,7 @@ var RAMP_PROVIDERS = {
|
|
|
8017
7770
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
8018
7771
|
|
|
8019
7772
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
8020
|
-
import { useCallback as useCallback8, useEffect as
|
|
7773
|
+
import { useCallback as useCallback8, useEffect as useEffect13, useRef as useRef7, useState as useState6 } from "react";
|
|
8021
7774
|
|
|
8022
7775
|
// src/internal/utils/debounce.ts
|
|
8023
7776
|
function debounce2(func, waitFor) {
|
|
@@ -8046,7 +7799,7 @@ var useSelectables = () => {
|
|
|
8046
7799
|
}, ON_INPUT_QUERY_DELAY),
|
|
8047
7800
|
[minAmount]
|
|
8048
7801
|
);
|
|
8049
|
-
|
|
7802
|
+
useEffect13(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
|
|
8050
7803
|
return {
|
|
8051
7804
|
inputRef,
|
|
8052
7805
|
redirecting,
|
|
@@ -8109,7 +7862,7 @@ import {
|
|
|
8109
7862
|
Loader as Loader6,
|
|
8110
7863
|
Lock
|
|
8111
7864
|
} from "lucide-react";
|
|
8112
|
-
import
|
|
7865
|
+
import React7, { useEffect as useEffect14 } from "react";
|
|
8113
7866
|
init_iframe_manager();
|
|
8114
7867
|
|
|
8115
7868
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -8142,33 +7895,33 @@ import { Fragment as Fragment5, jsx as jsx35, jsxs as jsxs26 } from "react/jsx-r
|
|
|
8142
7895
|
function KeyshareBackupMenu() {
|
|
8143
7896
|
const session = useLumiaPassportSession((st) => st.session);
|
|
8144
7897
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8145
|
-
const
|
|
7898
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8146
7899
|
const userId = session?.mpcUserId || "";
|
|
8147
7900
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
8148
|
-
|
|
7901
|
+
useEffect14(() => {
|
|
8149
7902
|
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
8150
7903
|
}, [userId, setPage]);
|
|
8151
|
-
const [backupStatus, setBackupStatus] =
|
|
7904
|
+
const [backupStatus, setBackupStatus] = React7.useState({
|
|
8152
7905
|
server: {},
|
|
8153
7906
|
cloud: {},
|
|
8154
7907
|
local: {}
|
|
8155
7908
|
});
|
|
8156
|
-
const [loading, setLoading] =
|
|
7909
|
+
const [loading, setLoading] = React7.useState({
|
|
8157
7910
|
server: false,
|
|
8158
7911
|
cloud: false,
|
|
8159
7912
|
local: false
|
|
8160
7913
|
});
|
|
8161
|
-
const [error, setError] =
|
|
8162
|
-
const [success, setSuccess] =
|
|
8163
|
-
const [showPassword, setShowPassword] =
|
|
8164
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8165
|
-
const [customPassword, setCustomPassword] =
|
|
8166
|
-
const [cloudProviders, setCloudProviders] =
|
|
7914
|
+
const [error, setError] = React7.useState(null);
|
|
7915
|
+
const [success, setSuccess] = React7.useState(null);
|
|
7916
|
+
const [showPassword, setShowPassword] = React7.useState(false);
|
|
7917
|
+
const [useCustomPassword, setUseCustomPassword] = React7.useState(false);
|
|
7918
|
+
const [customPassword, setCustomPassword] = React7.useState("");
|
|
7919
|
+
const [cloudProviders, setCloudProviders] = React7.useState(
|
|
8167
7920
|
[]
|
|
8168
7921
|
);
|
|
8169
|
-
const [selectedCloudProvider, setSelectedCloudProvider] =
|
|
8170
|
-
const [hasKeyshareData, setHasKeyshareData] =
|
|
8171
|
-
const iframeManager =
|
|
7922
|
+
const [selectedCloudProvider, setSelectedCloudProvider] = React7.useState(null);
|
|
7923
|
+
const [hasKeyshareData, setHasKeyshareData] = React7.useState(true);
|
|
7924
|
+
const iframeManager = React7.useMemo(() => {
|
|
8172
7925
|
try {
|
|
8173
7926
|
return getIframeManager();
|
|
8174
7927
|
} catch (e) {
|
|
@@ -8176,7 +7929,7 @@ function KeyshareBackupMenu() {
|
|
|
8176
7929
|
return null;
|
|
8177
7930
|
}
|
|
8178
7931
|
}, []);
|
|
8179
|
-
|
|
7932
|
+
useEffect14(() => {
|
|
8180
7933
|
const loadCloudProviders = async () => {
|
|
8181
7934
|
try {
|
|
8182
7935
|
const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
|
|
@@ -8196,7 +7949,7 @@ function KeyshareBackupMenu() {
|
|
|
8196
7949
|
};
|
|
8197
7950
|
loadCloudProviders();
|
|
8198
7951
|
}, [selectedCloudProvider]);
|
|
8199
|
-
const refreshStatus =
|
|
7952
|
+
const refreshStatus = React7.useCallback(async () => {
|
|
8200
7953
|
if (!iframeManager) return;
|
|
8201
7954
|
try {
|
|
8202
7955
|
const status = await iframeManager.getBackupStatus(userId);
|
|
@@ -8205,7 +7958,7 @@ function KeyshareBackupMenu() {
|
|
|
8205
7958
|
console.error("[KeyshareBackup] Failed to get backup status:", error2);
|
|
8206
7959
|
}
|
|
8207
7960
|
}, [iframeManager, userId]);
|
|
8208
|
-
|
|
7961
|
+
useEffect14(() => {
|
|
8209
7962
|
refreshStatus();
|
|
8210
7963
|
}, [refreshStatus]);
|
|
8211
7964
|
const handleBackup = async (method) => {
|
|
@@ -8297,7 +8050,7 @@ function KeyshareBackupMenu() {
|
|
|
8297
8050
|
return /* @__PURE__ */ jsx35(
|
|
8298
8051
|
"div",
|
|
8299
8052
|
{
|
|
8300
|
-
style: { "--l-pass-scrollbar-mah": `${
|
|
8053
|
+
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
8301
8054
|
className: "list-scrollbar-y w-full",
|
|
8302
8055
|
children: /* @__PURE__ */ jsxs26(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
8303
8056
|
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2", children: [
|
|
@@ -8434,9 +8187,9 @@ function KeyshareBackupMenu() {
|
|
|
8434
8187
|
}
|
|
8435
8188
|
|
|
8436
8189
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8437
|
-
import { useMutation as
|
|
8190
|
+
import { useMutation as useMutation7 } from "@tanstack/react-query";
|
|
8438
8191
|
import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle22, Loader as Loader9, LogOut as LogOut2 } from "lucide-react";
|
|
8439
|
-
import
|
|
8192
|
+
import React8, { useCallback as useCallback9, useEffect as useEffect15 } from "react";
|
|
8440
8193
|
init_vaultClient();
|
|
8441
8194
|
|
|
8442
8195
|
// src/internal/components/KeyshareRestoreMenu/NoBackupFound.tsx
|
|
@@ -8618,19 +8371,19 @@ var KeyshareRestoreMenu = () => {
|
|
|
8618
8371
|
config: { current: config },
|
|
8619
8372
|
callbacks
|
|
8620
8373
|
} = useLumiaPassportConfig();
|
|
8621
|
-
const
|
|
8374
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8622
8375
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8623
8376
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8624
|
-
|
|
8377
|
+
useEffect15(() => setIsDialogForced(true), []);
|
|
8625
8378
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
8626
|
-
const [error, setError] =
|
|
8627
|
-
const [success, setSuccess] =
|
|
8628
|
-
const [showPassword, setShowPassword] =
|
|
8629
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8630
|
-
const [restoreFile, setRestoreFile] =
|
|
8631
|
-
const [restorePassword, setRestorePassword] =
|
|
8632
|
-
const [hasServerBackup, setHasServerBackup] =
|
|
8633
|
-
const [checkingBackup, setCheckingBackup] =
|
|
8379
|
+
const [error, setError] = React8.useState(null);
|
|
8380
|
+
const [success, setSuccess] = React8.useState(null);
|
|
8381
|
+
const [showPassword, setShowPassword] = React8.useState(false);
|
|
8382
|
+
const [useCustomPassword, setUseCustomPassword] = React8.useState(false);
|
|
8383
|
+
const [restoreFile, setRestoreFile] = React8.useState(null);
|
|
8384
|
+
const [restorePassword, setRestorePassword] = React8.useState("");
|
|
8385
|
+
const [hasServerBackup, setHasServerBackup] = React8.useState(null);
|
|
8386
|
+
const [checkingBackup, setCheckingBackup] = React8.useState(true);
|
|
8634
8387
|
const createSessionWithKeyshare = useCallback9(
|
|
8635
8388
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
8636
8389
|
try {
|
|
@@ -8730,7 +8483,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8730
8483
|
callbacks,
|
|
8731
8484
|
config.projectId
|
|
8732
8485
|
]);
|
|
8733
|
-
|
|
8486
|
+
useEffect15(() => {
|
|
8734
8487
|
const checkBackupAvailability = async () => {
|
|
8735
8488
|
try {
|
|
8736
8489
|
setCheckingBackup(true);
|
|
@@ -8748,7 +8501,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8748
8501
|
};
|
|
8749
8502
|
checkBackupAvailability();
|
|
8750
8503
|
}, [recoveryUserId]);
|
|
8751
|
-
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } =
|
|
8504
|
+
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = useMutation7({
|
|
8752
8505
|
mutationFn: async () => {
|
|
8753
8506
|
setError(null);
|
|
8754
8507
|
setSuccess(null);
|
|
@@ -8783,7 +8536,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8783
8536
|
setError(errorMsg);
|
|
8784
8537
|
}
|
|
8785
8538
|
});
|
|
8786
|
-
const { mutate: restoreFromFile, isPending: isRestoringFromFile } =
|
|
8539
|
+
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = useMutation7({
|
|
8787
8540
|
mutationFn: async () => {
|
|
8788
8541
|
if (!restoreFile) {
|
|
8789
8542
|
throw new Error("Please select a backup file");
|
|
@@ -8817,7 +8570,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8817
8570
|
setError(errorMsg);
|
|
8818
8571
|
}
|
|
8819
8572
|
});
|
|
8820
|
-
const { mutate: disconnect, isPending: isDisconnecting } =
|
|
8573
|
+
const { mutate: disconnect, isPending: isDisconnecting } = useMutation7({
|
|
8821
8574
|
mutationFn: async () => {
|
|
8822
8575
|
setError(null);
|
|
8823
8576
|
setStatus("disconnecting");
|
|
@@ -8846,7 +8599,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8846
8599
|
return /* @__PURE__ */ jsx38(
|
|
8847
8600
|
"div",
|
|
8848
8601
|
{
|
|
8849
|
-
style: { "--l-pass-scrollbar-mah": `${
|
|
8602
|
+
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
8850
8603
|
className: "list-scrollbar-y w-full",
|
|
8851
8604
|
children: /* @__PURE__ */ jsxs29(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
8852
8605
|
checkingBackup && /* @__PURE__ */ jsxs29("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
|
|
@@ -8909,7 +8662,7 @@ import { ArrowLeft as ArrowLeft6 } from "lucide-react";
|
|
|
8909
8662
|
import { LoaderIcon as LoaderIcon3 } from "lucide-react";
|
|
8910
8663
|
|
|
8911
8664
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8912
|
-
import { useEffect as
|
|
8665
|
+
import { useEffect as useEffect16, useRef as useRef8, useState as useState8 } from "react";
|
|
8913
8666
|
|
|
8914
8667
|
// src/internal/components/KYC/api/sumsub.ts
|
|
8915
8668
|
init_httpClient();
|
|
@@ -9038,7 +8791,7 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
9038
8791
|
const [height, setHeight] = useState8(0);
|
|
9039
8792
|
const [status, setStatus] = useState8("");
|
|
9040
8793
|
const levelName = config.kyc?.options?.levelName;
|
|
9041
|
-
|
|
8794
|
+
useEffect16(() => {
|
|
9042
8795
|
setError(null);
|
|
9043
8796
|
setIsLoading(true);
|
|
9044
8797
|
setStatus("Preparing verification...");
|
|
@@ -9121,12 +8874,12 @@ var KycContent = () => {
|
|
|
9121
8874
|
};
|
|
9122
8875
|
function KycMenu() {
|
|
9123
8876
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9124
|
-
const
|
|
8877
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9125
8878
|
return /* @__PURE__ */ jsxs31(
|
|
9126
8879
|
"div",
|
|
9127
8880
|
{
|
|
9128
8881
|
style: {
|
|
9129
|
-
"--l-pass-scrollbar-mah": `${
|
|
8882
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
9130
8883
|
"--l-pass-list-scrollbar-pd-r": "4px",
|
|
9131
8884
|
"paddingTop": "var(--l-pass-pd)",
|
|
9132
8885
|
"paddingBottom": "var(--l-pass-pd)",
|
|
@@ -9146,7 +8899,7 @@ function KycMenu() {
|
|
|
9146
8899
|
|
|
9147
8900
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9148
8901
|
import { ChevronLeft, ChevronRight as ChevronRight2, DollarSign as DollarSign3, Wallet2 as Wallet23 } from "lucide-react";
|
|
9149
|
-
import { useEffect as
|
|
8902
|
+
import { useEffect as useEffect17 } from "react";
|
|
9150
8903
|
|
|
9151
8904
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
9152
8905
|
import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-motion";
|
|
@@ -9202,7 +8955,7 @@ function MainMenu() {
|
|
|
9202
8955
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9203
8956
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9204
8957
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9205
|
-
|
|
8958
|
+
useEffect17(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
9206
8959
|
return /* @__PURE__ */ jsxs33("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9207
8960
|
/* @__PURE__ */ jsx42("div", { className: "grid grid-cols-4 gap-[var(--l-pass-gap)]", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ jsxs33(
|
|
9208
8961
|
Button,
|
|
@@ -9276,8 +9029,39 @@ init_passkey2();
|
|
|
9276
9029
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9277
9030
|
init_lumiaPassport();
|
|
9278
9031
|
init_projectId();
|
|
9279
|
-
import { useMutation as
|
|
9032
|
+
import { useMutation as useMutation8 } from "@tanstack/react-query";
|
|
9280
9033
|
import { ChevronRight as ChevronRight3, Loader as Loader10, Mail as Mail4 } from "lucide-react";
|
|
9034
|
+
|
|
9035
|
+
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
9036
|
+
import { create as create4 } from "zustand";
|
|
9037
|
+
var useManageWalletStore = create4((set) => ({
|
|
9038
|
+
emailStep: "input",
|
|
9039
|
+
email: "",
|
|
9040
|
+
emailCode: "",
|
|
9041
|
+
emailCodeSentError: "",
|
|
9042
|
+
emailCodeExpiresIn: 0,
|
|
9043
|
+
isWalletLinking: false,
|
|
9044
|
+
linkIsLoading: false,
|
|
9045
|
+
linkError: "",
|
|
9046
|
+
verificationError: "",
|
|
9047
|
+
providerType: null,
|
|
9048
|
+
confirmUnlink: null,
|
|
9049
|
+
setEmailStep: (emailStep) => set({ emailStep }),
|
|
9050
|
+
setEmail: (email) => set({ email }),
|
|
9051
|
+
setEmailCode: (emailCode) => set({ emailCode }),
|
|
9052
|
+
setEmailCodeSentError: (emailCodeSentError) => set({ emailCodeSentError }),
|
|
9053
|
+
setEmailCodeExpiresIn: (emailCodeExpiresIn) => set({ emailCodeExpiresIn }),
|
|
9054
|
+
setIsWalletLinking: (isWalletLinking) => set({ isWalletLinking }),
|
|
9055
|
+
setLinkIsLoading: (linkIsLoading) => set({ linkIsLoading }),
|
|
9056
|
+
setLinkError: (linkError) => set({ linkError }),
|
|
9057
|
+
setVerificationError: (verificationError) => set({ verificationError }),
|
|
9058
|
+
setProviderType: (providerType) => {
|
|
9059
|
+
set({ providerType });
|
|
9060
|
+
},
|
|
9061
|
+
setConfirmUnlink: (confirmUnlink) => set({ confirmUnlink })
|
|
9062
|
+
}));
|
|
9063
|
+
|
|
9064
|
+
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9281
9065
|
import { jsx as jsx43, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
9282
9066
|
function EmailForm() {
|
|
9283
9067
|
const {
|
|
@@ -9287,7 +9071,7 @@ function EmailForm() {
|
|
|
9287
9071
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
9288
9072
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9289
9073
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
9290
|
-
const { mutate: onSendVerificationCode } =
|
|
9074
|
+
const { mutate: onSendVerificationCode } = useMutation8({
|
|
9291
9075
|
mutationFn: async () => {
|
|
9292
9076
|
if (!email) return;
|
|
9293
9077
|
setIsLoading(true);
|
|
@@ -9380,10 +9164,10 @@ function useProvidersList() {
|
|
|
9380
9164
|
|
|
9381
9165
|
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9382
9166
|
init_email();
|
|
9383
|
-
import { useMutation as
|
|
9167
|
+
import { useMutation as useMutation9 } from "@tanstack/react-query";
|
|
9384
9168
|
function useSendVerificationCode() {
|
|
9385
9169
|
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9386
|
-
return
|
|
9170
|
+
return useMutation9({
|
|
9387
9171
|
mutationFn: async (email) => {
|
|
9388
9172
|
if (!email) {
|
|
9389
9173
|
throw new Error("Email is required");
|
|
@@ -9406,7 +9190,7 @@ function useSendVerificationCode() {
|
|
|
9406
9190
|
}
|
|
9407
9191
|
|
|
9408
9192
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9409
|
-
import { useMutation as
|
|
9193
|
+
import { useMutation as useMutation10, useQueryClient as useQueryClient4 } from "@tanstack/react-query";
|
|
9410
9194
|
init_email();
|
|
9411
9195
|
function useVerifyCode() {
|
|
9412
9196
|
const { callbacks } = useLumiaPassportConfig();
|
|
@@ -9424,7 +9208,7 @@ function useVerifyCode() {
|
|
|
9424
9208
|
setVerificationError,
|
|
9425
9209
|
setEmailCodeSentError
|
|
9426
9210
|
} = useManageWalletStore();
|
|
9427
|
-
return
|
|
9211
|
+
return useMutation10({
|
|
9428
9212
|
mutationFn: async (codeToVerify) => {
|
|
9429
9213
|
const code = codeToVerify ?? emailCode;
|
|
9430
9214
|
if (!code) {
|
|
@@ -9635,7 +9419,7 @@ function EmailNotConnectedWarning() {
|
|
|
9635
9419
|
|
|
9636
9420
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9637
9421
|
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
9638
|
-
import
|
|
9422
|
+
import React9, { useEffect as useEffect18 } from "react";
|
|
9639
9423
|
init_auth();
|
|
9640
9424
|
function useLinkSocial() {
|
|
9641
9425
|
const qc = useQueryClient6();
|
|
@@ -9646,7 +9430,7 @@ function useLinkSocial() {
|
|
|
9646
9430
|
} = useLumiaPassportConfig();
|
|
9647
9431
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9648
9432
|
const { providerType, linkIsLoading, isWalletLinking, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9649
|
-
const handleLinkSocialProvider =
|
|
9433
|
+
const handleLinkSocialProvider = React9.useCallback(
|
|
9650
9434
|
async (providerIdRaw) => {
|
|
9651
9435
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9652
9436
|
const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
|
|
@@ -9698,8 +9482,8 @@ function useLinkSocial() {
|
|
|
9698
9482
|
},
|
|
9699
9483
|
[config.social?.providers, callbacks]
|
|
9700
9484
|
);
|
|
9701
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9702
|
-
|
|
9485
|
+
const [socialLinkStarted, setSocialLinkStarted] = React9.useState(false);
|
|
9486
|
+
useEffect18(() => {
|
|
9703
9487
|
const key = providerType?.toLowerCase();
|
|
9704
9488
|
console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
|
|
9705
9489
|
if (isWalletLinking) {
|
|
@@ -9720,7 +9504,7 @@ function useLinkSocial() {
|
|
|
9720
9504
|
|
|
9721
9505
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9722
9506
|
import { useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
9723
|
-
import { useCallback as useCallback11, useEffect as
|
|
9507
|
+
import { useCallback as useCallback11, useEffect as useEffect19, useState as useState9 } from "react";
|
|
9724
9508
|
init_telegram2();
|
|
9725
9509
|
function useLinkTelegram() {
|
|
9726
9510
|
const {
|
|
@@ -9774,7 +9558,7 @@ function useLinkTelegram() {
|
|
|
9774
9558
|
}
|
|
9775
9559
|
}, [config.social?.providers, callbacks]);
|
|
9776
9560
|
const [telegramLinkStarted, setTelegramLinkStarted] = useState9(false);
|
|
9777
|
-
|
|
9561
|
+
useEffect19(() => {
|
|
9778
9562
|
console.log("[useLinkTelegram] Effect triggered:", { providerType, linkIsLoading, telegramLinkStarted, isWalletLinking });
|
|
9779
9563
|
if (isWalletLinking) {
|
|
9780
9564
|
console.log("[useLinkTelegram] Skipping - wallet linking in progress");
|
|
@@ -9786,7 +9570,7 @@ function useLinkTelegram() {
|
|
|
9786
9570
|
handleLinkTelegram();
|
|
9787
9571
|
}
|
|
9788
9572
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
|
|
9789
|
-
|
|
9573
|
+
useEffect19(() => {
|
|
9790
9574
|
if (providerType !== "telegram") {
|
|
9791
9575
|
setTelegramLinkStarted(false);
|
|
9792
9576
|
}
|
|
@@ -9894,7 +9678,6 @@ function ManageWalletMenu() {
|
|
|
9894
9678
|
} = useManageWalletStore();
|
|
9895
9679
|
const configuredProviders = getConfiguredProviders(config);
|
|
9896
9680
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9897
|
-
console.log("[MANAGE WALLET MENU] RENDER", providers);
|
|
9898
9681
|
const renderProviders = useMemo2(() => {
|
|
9899
9682
|
const usedProviders = fromPairs(providers.map((p) => [p.provider, true]));
|
|
9900
9683
|
const used = [];
|
|
@@ -9997,7 +9780,7 @@ function ManageWalletMenu() {
|
|
|
9997
9780
|
}
|
|
9998
9781
|
|
|
9999
9782
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
10000
|
-
import { useMutation as
|
|
9783
|
+
import { useMutation as useMutation11, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
10001
9784
|
import { Key as Key7, Loader as Loader12 } from "lucide-react";
|
|
10002
9785
|
import { useState as useState10 } from "react";
|
|
10003
9786
|
init_auth();
|
|
@@ -10009,7 +9792,7 @@ function UnlinkProviderMenu() {
|
|
|
10009
9792
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10010
9793
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
10011
9794
|
const [confirmInput, setConfirmInput] = useState10("");
|
|
10012
|
-
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } =
|
|
9795
|
+
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = useMutation11({
|
|
10013
9796
|
mutationFn: async () => {
|
|
10014
9797
|
if (!confirmUnlink) {
|
|
10015
9798
|
throw new Error("No provider to unlink");
|
|
@@ -10084,11 +9867,11 @@ function UnlinkProviderMenu() {
|
|
|
10084
9867
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10085
9868
|
import { useQueryClient as useQueryClient10 } from "@tanstack/react-query";
|
|
10086
9869
|
import { ArrowLeft as ArrowLeft8, Gem, Loader as Loader14, RefreshCw } from "lucide-react";
|
|
10087
|
-
import { useCallback as useCallback12, useEffect as
|
|
9870
|
+
import { useCallback as useCallback12, useEffect as useEffect20, useRef as useRef9 } from "react";
|
|
10088
9871
|
|
|
10089
9872
|
// src/modules/assets.ts
|
|
10090
9873
|
init_base();
|
|
10091
|
-
import
|
|
9874
|
+
import React10 from "react";
|
|
10092
9875
|
import { useBalance as useBalance2, useReadContract, useReadContracts } from "wagmi";
|
|
10093
9876
|
import { formatUnits, erc20Abi } from "viem";
|
|
10094
9877
|
var COMMON_TOKENS = [
|
|
@@ -10234,7 +10017,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10234
10017
|
}
|
|
10235
10018
|
});
|
|
10236
10019
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
10237
|
-
const formattedBalance =
|
|
10020
|
+
const formattedBalance = React10.useMemo(() => {
|
|
10238
10021
|
if (!balance || !tokenInfo) return "0";
|
|
10239
10022
|
return formatUnits(balance, tokenInfo.decimals);
|
|
10240
10023
|
}, [balance, tokenInfo]);
|
|
@@ -10270,7 +10053,7 @@ function formatValue(price) {
|
|
|
10270
10053
|
function openInExplorer(address) {
|
|
10271
10054
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
10272
10055
|
}
|
|
10273
|
-
async function
|
|
10056
|
+
async function getAssetRate2(symbol) {
|
|
10274
10057
|
const assetURL = `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}USDT`;
|
|
10275
10058
|
const response = await fetch(assetURL);
|
|
10276
10059
|
return await response.json();
|
|
@@ -10287,7 +10070,7 @@ function PortfolioItem(props) {
|
|
|
10287
10070
|
staleTime: 4 * 60 * 1e3,
|
|
10288
10071
|
enabled: !!address && !!asset.symbol && !isProjectAsset,
|
|
10289
10072
|
queryKey: [ASSETS_RATES_QUERY_KEY, address, asset.symbol],
|
|
10290
|
-
queryFn: async () => await
|
|
10073
|
+
queryFn: async () => await getAssetRate2(asset.symbol)
|
|
10291
10074
|
});
|
|
10292
10075
|
const renderBalance = isProjectAsset && projectAssetBalance?.fiatFormatted ? projectAssetBalance.fiatFormatted : asset.formattedBalance;
|
|
10293
10076
|
return /* @__PURE__ */ jsxs40(
|
|
@@ -10343,7 +10126,7 @@ function PortfolioMenu() {
|
|
|
10343
10126
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10344
10127
|
const qc = useQueryClient10();
|
|
10345
10128
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10346
|
-
const
|
|
10129
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10347
10130
|
const assetsContainerListRef = useRef9(null);
|
|
10348
10131
|
const assetsListRef = useRef9(null);
|
|
10349
10132
|
const address = useLumiaPassportSession((st) => st.address);
|
|
@@ -10352,9 +10135,9 @@ function PortfolioMenu() {
|
|
|
10352
10135
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10353
10136
|
refreshBalances();
|
|
10354
10137
|
}, [qc, projectAssets, refreshBalances]);
|
|
10355
|
-
|
|
10138
|
+
useEffect20(() => {
|
|
10356
10139
|
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10357
|
-
const listTargetHeight =
|
|
10140
|
+
const listTargetHeight = maxScrollHeight - 128;
|
|
10358
10141
|
assetsContainerListRef.current.style.setProperty("--l-pass-scrollbar-mah", `${listTargetHeight}px`);
|
|
10359
10142
|
assetsContainerListRef.current.style.setProperty(
|
|
10360
10143
|
"--l-pass-list-bd",
|
|
@@ -10366,7 +10149,7 @@ function PortfolioMenu() {
|
|
|
10366
10149
|
assetsListRef.current.clientHeight >= listTargetHeight ? "4px" : "0px"
|
|
10367
10150
|
// remove padding if no scrollbar
|
|
10368
10151
|
);
|
|
10369
|
-
}, [
|
|
10152
|
+
}, [maxScrollHeight]);
|
|
10370
10153
|
return /* @__PURE__ */ jsxs41("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10371
10154
|
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10372
10155
|
/* @__PURE__ */ jsx50(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx50(ArrowLeft8, { className: "h-4 w-4" }) }),
|
|
@@ -10439,7 +10222,7 @@ import {
|
|
|
10439
10222
|
Shield,
|
|
10440
10223
|
Trash2 as Trash22
|
|
10441
10224
|
} from "lucide-react";
|
|
10442
|
-
import { useCallback as useCallback13, useEffect as
|
|
10225
|
+
import { useCallback as useCallback13, useEffect as useEffect21, useState as useState11 } from "react";
|
|
10443
10226
|
init_vaultClient();
|
|
10444
10227
|
import { jsx as jsx51, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10445
10228
|
function SecurityMenu() {
|
|
@@ -10493,7 +10276,7 @@ function SecurityMenu() {
|
|
|
10493
10276
|
setIsRefreshing(false);
|
|
10494
10277
|
}
|
|
10495
10278
|
}, [userId]);
|
|
10496
|
-
|
|
10279
|
+
useEffect21(() => {
|
|
10497
10280
|
if (open) fetchRecovery();
|
|
10498
10281
|
}, [open, fetchRecovery]);
|
|
10499
10282
|
const parseOS = (ua) => {
|
|
@@ -10685,7 +10468,7 @@ function SecurityMenu() {
|
|
|
10685
10468
|
|
|
10686
10469
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10687
10470
|
import { AlertCircle as AlertCircle5, ArrowLeft as ArrowLeft10, CheckCircle2 as CheckCircle24, Loader as Loader16, Wallet } from "lucide-react";
|
|
10688
|
-
import { useEffect as
|
|
10471
|
+
import { useEffect as useEffect22, useState as useState13 } from "react";
|
|
10689
10472
|
import { isAddress as isAddress2 } from "viem";
|
|
10690
10473
|
import { useBalance as useBalance3 } from "wagmi";
|
|
10691
10474
|
|
|
@@ -10773,7 +10556,7 @@ function SendLumiaMenu() {
|
|
|
10773
10556
|
const [validationError, setValidationError] = useState13(null);
|
|
10774
10557
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10775
10558
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10776
|
-
|
|
10559
|
+
useEffect22(() => {
|
|
10777
10560
|
if (open) {
|
|
10778
10561
|
setTxStep("input");
|
|
10779
10562
|
setValidationError(null);
|
|
@@ -10938,17 +10721,17 @@ function SendLumiaMenu() {
|
|
|
10938
10721
|
init_clients();
|
|
10939
10722
|
import { ArrowLeft as ArrowLeft11, CheckCircle2 as CheckCircle25, Copy as Copy2, Loader as Loader17 } from "lucide-react";
|
|
10940
10723
|
import QRCode from "qrcode";
|
|
10941
|
-
import { useCallback as useCallback15, useEffect as
|
|
10724
|
+
import { useCallback as useCallback15, useEffect as useEffect23, useState as useState14 } from "react";
|
|
10942
10725
|
import { Fragment as Fragment13, jsx as jsx53, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
10943
10726
|
function ReceiveLumiaMenu() {
|
|
10944
10727
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10945
10728
|
const page = useLayoutDataStore((st) => st.page);
|
|
10946
10729
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10947
|
-
const
|
|
10730
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10948
10731
|
const open = page === "receive";
|
|
10949
10732
|
const [qrCodeUrl, setQrCodeUrl] = useState14("");
|
|
10950
10733
|
const [copied, setCopied] = useState14(false);
|
|
10951
|
-
|
|
10734
|
+
useEffect23(() => {
|
|
10952
10735
|
if (open && address) {
|
|
10953
10736
|
QRCode.toDataURL(address, {
|
|
10954
10737
|
width: 200,
|
|
@@ -10975,7 +10758,7 @@ function ReceiveLumiaMenu() {
|
|
|
10975
10758
|
"div",
|
|
10976
10759
|
{
|
|
10977
10760
|
style: {
|
|
10978
|
-
"--l-pass-scrollbar-mah": `${
|
|
10761
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10979
10762
|
"--l-pass-list-scrollbar-pd-r": "8px"
|
|
10980
10763
|
},
|
|
10981
10764
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
@@ -11007,7 +10790,7 @@ function ReceiveLumiaMenu() {
|
|
|
11007
10790
|
|
|
11008
10791
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
11009
10792
|
import { ArrowLeft as ArrowLeft12 } from "lucide-react";
|
|
11010
|
-
import { useEffect as
|
|
10793
|
+
import { useEffect as useEffect24 } from "react";
|
|
11011
10794
|
|
|
11012
10795
|
// src/internal/components/SettingsMenu/constants.ts
|
|
11013
10796
|
import { ArrowLeftRight, DatabaseBackup as DatabaseBackup2, LockKeyhole, UsersRound } from "lucide-react";
|
|
@@ -11041,7 +10824,7 @@ function SettingsMenu() {
|
|
|
11041
10824
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11042
10825
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
11043
10826
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
11044
|
-
|
|
10827
|
+
useEffect24(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
11045
10828
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
11046
10829
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
11047
10830
|
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
@@ -11101,7 +10884,7 @@ function TermsOfService() {
|
|
|
11101
10884
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
11102
10885
|
import { useQuery as useQuery8, useQueryClient as useQueryClient11 } from "@tanstack/react-query";
|
|
11103
10886
|
import { ArrowLeft as ArrowLeft14, Loader as Loader18, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
11104
|
-
import { useCallback as useCallback16, useEffect as
|
|
10887
|
+
import { useCallback as useCallback16, useEffect as useEffect25, useRef as useRef10, useState as useState15 } from "react";
|
|
11105
10888
|
|
|
11106
10889
|
// src/internal/components/TransactionsMenu/api.ts
|
|
11107
10890
|
init_base();
|
|
@@ -11581,7 +11364,7 @@ function TransactionsMenu() {
|
|
|
11581
11364
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11582
11365
|
const page = useLayoutDataStore((st) => st.page);
|
|
11583
11366
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11584
|
-
const
|
|
11367
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11585
11368
|
const txContainerListRef = useRef10(null);
|
|
11586
11369
|
const txListRef = useRef10(null);
|
|
11587
11370
|
const [expandedGroups, setExpandedGroups] = useState15({});
|
|
@@ -11601,9 +11384,9 @@ function TransactionsMenu() {
|
|
|
11601
11384
|
[qc, address]
|
|
11602
11385
|
);
|
|
11603
11386
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11604
|
-
|
|
11387
|
+
useEffect25(() => {
|
|
11605
11388
|
if (!txContainerListRef.current || !txListRef.current) return;
|
|
11606
|
-
const listTargetHeight =
|
|
11389
|
+
const listTargetHeight = maxScrollHeight - 128;
|
|
11607
11390
|
txContainerListRef.current.style.setProperty("--l-pass-scrollbar-mah", `${listTargetHeight}px`);
|
|
11608
11391
|
txContainerListRef.current.style.setProperty(
|
|
11609
11392
|
"--l-pass-list-bd",
|
|
@@ -11615,7 +11398,7 @@ function TransactionsMenu() {
|
|
|
11615
11398
|
txListRef.current.clientHeight >= listTargetHeight ? "4px" : "0px"
|
|
11616
11399
|
// remove padding if no scrollbar
|
|
11617
11400
|
);
|
|
11618
|
-
}, [
|
|
11401
|
+
}, [maxScrollHeight]);
|
|
11619
11402
|
return /* @__PURE__ */ jsxs49("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11620
11403
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-2", children: [
|
|
11621
11404
|
/* @__PURE__ */ jsx59(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx59(ArrowLeft14, { className: "h-4 w-4" }) }),
|
|
@@ -11793,7 +11576,7 @@ function usePageMapper() {
|
|
|
11793
11576
|
},
|
|
11794
11577
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11795
11578
|
);
|
|
11796
|
-
|
|
11579
|
+
useEffect26(() => {
|
|
11797
11580
|
if (page === null) return closeDialog();
|
|
11798
11581
|
const pageItem = protectedRoutes[page];
|
|
11799
11582
|
if (!pageItem) {
|
|
@@ -11807,7 +11590,7 @@ function usePageMapper() {
|
|
|
11807
11590
|
|
|
11808
11591
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11809
11592
|
init_auth();
|
|
11810
|
-
import { useEffect as
|
|
11593
|
+
import { useEffect as useEffect27 } from "react";
|
|
11811
11594
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11812
11595
|
id: "email-not-connected",
|
|
11813
11596
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11823,13 +11606,13 @@ function useSettingsNotifications() {
|
|
|
11823
11606
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11824
11607
|
const providers = jwtTokenManager2.getProviders();
|
|
11825
11608
|
const hasEmail = providers.includes("email");
|
|
11826
|
-
|
|
11609
|
+
useEffect27(() => {
|
|
11827
11610
|
setSettingsNotifications({
|
|
11828
11611
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11829
11612
|
status: hasServerVault ? "resolved" : "active"
|
|
11830
11613
|
});
|
|
11831
11614
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11832
|
-
|
|
11615
|
+
useEffect27(() => {
|
|
11833
11616
|
setSettingsNotifications({
|
|
11834
11617
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11835
11618
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11838,7 +11621,7 @@ function useSettingsNotifications() {
|
|
|
11838
11621
|
}
|
|
11839
11622
|
|
|
11840
11623
|
// src/internal/hooks/useWalletStatus.ts
|
|
11841
|
-
import { useEffect as
|
|
11624
|
+
import { useEffect as useEffect28 } from "react";
|
|
11842
11625
|
init_auth();
|
|
11843
11626
|
function useWalletStatus() {
|
|
11844
11627
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -11848,7 +11631,7 @@ function useWalletStatus() {
|
|
|
11848
11631
|
config: { current: config },
|
|
11849
11632
|
callbacks
|
|
11850
11633
|
} = useLumiaPassportConfig();
|
|
11851
|
-
|
|
11634
|
+
useEffect28(() => {
|
|
11852
11635
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11853
11636
|
const userId = jwtTokenManager2.getUserId();
|
|
11854
11637
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -11871,26 +11654,24 @@ function useWalletStatus() {
|
|
|
11871
11654
|
import { jsx as jsx61, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
11872
11655
|
function LumiaPassportDialog() {
|
|
11873
11656
|
const config = useLumiaPassportConfig().config;
|
|
11874
|
-
const isWalletLinking = useManageWalletStore((st) => st.isWalletLinking);
|
|
11875
11657
|
const className = config.current?.ui?.dialogClassName;
|
|
11876
11658
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11877
11659
|
const page = useLayoutDataStore((st) => st.page);
|
|
11878
11660
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11879
11661
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11880
11662
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11881
|
-
|
|
11663
|
+
useEffect29(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11882
11664
|
usePageMapper();
|
|
11883
11665
|
useAutoConnect();
|
|
11884
11666
|
useCheckVaultStatus();
|
|
11885
11667
|
useBackupStatusChanges();
|
|
11886
|
-
|
|
11668
|
+
useDetectMaxScrollHeight();
|
|
11887
11669
|
useSettingsNotifications();
|
|
11888
11670
|
useWalletStatus();
|
|
11889
11671
|
return /* @__PURE__ */ jsx61(
|
|
11890
11672
|
Dialog,
|
|
11891
11673
|
{
|
|
11892
11674
|
open: isDialogOpen,
|
|
11893
|
-
modal: !isWalletLinking,
|
|
11894
11675
|
onOpenChange: (open) => {
|
|
11895
11676
|
if (isDialogForced) return;
|
|
11896
11677
|
if (!open) setPage(null);
|
|
@@ -11918,10 +11699,10 @@ function LumiaPassportDialog() {
|
|
|
11918
11699
|
}
|
|
11919
11700
|
|
|
11920
11701
|
// src/internal/components/TssManager.tsx
|
|
11921
|
-
import
|
|
11702
|
+
import React12, { useCallback as useCallback18 } from "react";
|
|
11922
11703
|
init_auth();
|
|
11923
11704
|
init_clients();
|
|
11924
|
-
var TssManagerWithRef =
|
|
11705
|
+
var TssManagerWithRef = React12.forwardRef((props, ref) => {
|
|
11925
11706
|
const { mpcPin } = props;
|
|
11926
11707
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11927
11708
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
@@ -11934,7 +11715,7 @@ var TssManagerWithRef = React13.forwardRef((props, ref) => {
|
|
|
11934
11715
|
},
|
|
11935
11716
|
[setSession, setAddress]
|
|
11936
11717
|
);
|
|
11937
|
-
const createSessionWithKeyshare =
|
|
11718
|
+
const createSessionWithKeyshare = React12.useCallback(
|
|
11938
11719
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11939
11720
|
setStatus("checking key management setup...");
|
|
11940
11721
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11955,7 +11736,7 @@ var TssManagerWithRef = React13.forwardRef((props, ref) => {
|
|
|
11955
11736
|
},
|
|
11956
11737
|
[setStatus, usePaymaster, mpcPin]
|
|
11957
11738
|
);
|
|
11958
|
-
|
|
11739
|
+
React12.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11959
11740
|
return null;
|
|
11960
11741
|
});
|
|
11961
11742
|
|
|
@@ -11963,7 +11744,7 @@ var TssManagerWithRef = React13.forwardRef((props, ref) => {
|
|
|
11963
11744
|
init_wallet();
|
|
11964
11745
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
11965
11746
|
import { useQueryClient as useQueryClient12 } from "@tanstack/react-query";
|
|
11966
|
-
import
|
|
11747
|
+
import React13, { useCallback as useCallback19, useEffect as useEffect30 } from "react";
|
|
11967
11748
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
11968
11749
|
function WalletConnectHandler() {
|
|
11969
11750
|
const qc = useQueryClient12();
|
|
@@ -11979,26 +11760,32 @@ function WalletConnectHandler() {
|
|
|
11979
11760
|
setIsWalletLinking(false);
|
|
11980
11761
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11981
11762
|
}, []);
|
|
11982
|
-
const onLinkingComplete = useCallback19(
|
|
11983
|
-
|
|
11984
|
-
|
|
11985
|
-
|
|
11763
|
+
const onLinkingComplete = useCallback19(
|
|
11764
|
+
async (success) => {
|
|
11765
|
+
console.log("[WalletConnectHandler] onLinkingComplete called:", { success, userAddress });
|
|
11766
|
+
setIsWalletLinking(false);
|
|
11986
11767
|
setProviderType(null);
|
|
11987
11768
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11988
|
-
|
|
11989
|
-
|
|
11990
|
-
|
|
11991
|
-
|
|
11992
|
-
|
|
11993
|
-
|
|
11994
|
-
|
|
11769
|
+
if (success) {
|
|
11770
|
+
console.log("[WalletConnectHandler] Invalidating and refetching queries with key:", [
|
|
11771
|
+
PROVIDERS_QUERY_KEY,
|
|
11772
|
+
userAddress
|
|
11773
|
+
]);
|
|
11774
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, userAddress], refetchType: "active" });
|
|
11775
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, userAddress], refetchType: "active" });
|
|
11776
|
+
await qc.refetchQueries({ queryKey: [PROVIDERS_QUERY_KEY, userAddress] });
|
|
11777
|
+
try {
|
|
11778
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, userAddress]) });
|
|
11779
|
+
} catch {
|
|
11780
|
+
}
|
|
11995
11781
|
}
|
|
11996
|
-
}
|
|
11997
|
-
|
|
11782
|
+
},
|
|
11783
|
+
[qc, userAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
11784
|
+
);
|
|
11998
11785
|
const { openConnectModal, connectModalOpen } = useConnectModal();
|
|
11999
|
-
const [hasStartedLinking, setHasStartedLinking] =
|
|
12000
|
-
const timeoutRef =
|
|
12001
|
-
|
|
11786
|
+
const [hasStartedLinking, setHasStartedLinking] = React13.useState(false);
|
|
11787
|
+
const timeoutRef = React13.useRef();
|
|
11788
|
+
useEffect30(() => {
|
|
12002
11789
|
if (isWalletLinking && !hasStartedLinking) {
|
|
12003
11790
|
setHasStartedLinking(true);
|
|
12004
11791
|
setProviderType(null);
|
|
@@ -12006,34 +11793,37 @@ function WalletConnectHandler() {
|
|
|
12006
11793
|
disconnect();
|
|
12007
11794
|
setTimeout(() => {
|
|
12008
11795
|
if (openConnectModal) {
|
|
11796
|
+
setPage(null);
|
|
12009
11797
|
openConnectModal();
|
|
12010
11798
|
}
|
|
12011
|
-
},
|
|
11799
|
+
}, 500);
|
|
12012
11800
|
} else {
|
|
12013
11801
|
if (openConnectModal) {
|
|
11802
|
+
setPage(null);
|
|
12014
11803
|
openConnectModal();
|
|
12015
11804
|
}
|
|
12016
11805
|
}
|
|
12017
11806
|
}
|
|
12018
11807
|
if (!isWalletLinking && hasStartedLinking) {
|
|
12019
11808
|
setHasStartedLinking(false);
|
|
12020
|
-
if (timeoutRef.current)
|
|
12021
|
-
|
|
12022
|
-
|
|
12023
|
-
|
|
12024
|
-
|
|
12025
|
-
|
|
12026
|
-
|
|
12027
|
-
|
|
12028
|
-
|
|
12029
|
-
|
|
11809
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
11810
|
+
if (isConnected) disconnect();
|
|
11811
|
+
}
|
|
11812
|
+
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
11813
|
+
useEffect30(() => {
|
|
11814
|
+
console.log("[WalletConnectHandler] Modal state check:", {
|
|
11815
|
+
hasStartedLinking,
|
|
11816
|
+
connectModalOpen,
|
|
11817
|
+
isConnected,
|
|
11818
|
+
isWalletLinking
|
|
11819
|
+
});
|
|
12030
11820
|
if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
|
|
12031
11821
|
console.log("[WalletConnectHandler] Modal closed without connecting, resetting state");
|
|
12032
11822
|
onLinkingComplete(false);
|
|
12033
11823
|
setHasStartedLinking(false);
|
|
12034
11824
|
}
|
|
12035
11825
|
}, [connectModalOpen, hasStartedLinking, isConnected, isWalletLinking]);
|
|
12036
|
-
|
|
11826
|
+
useEffect30(() => {
|
|
12037
11827
|
if (isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
12038
11828
|
handleWalletSign();
|
|
12039
11829
|
}
|
|
@@ -12118,12 +11908,10 @@ var useLumiaPassportSession = create5((set) => ({
|
|
|
12118
11908
|
setWalletReadyStatus: (status) => set({ walletReadyStatus: status })
|
|
12119
11909
|
}));
|
|
12120
11910
|
function LumiaPassportSessionProvider({ children }) {
|
|
12121
|
-
const
|
|
12122
|
-
config: { current: config }
|
|
12123
|
-
} = useLumiaPassportConfig();
|
|
11911
|
+
const config = useLumiaPassportConfig().config;
|
|
12124
11912
|
return /* @__PURE__ */ jsxs51(Fragment15, { children: [
|
|
12125
11913
|
children,
|
|
12126
|
-
config.wallet?.enabled && /* @__PURE__ */ jsx62(WalletConnectHandler, {}),
|
|
11914
|
+
config.current?.wallet?.enabled && /* @__PURE__ */ jsx62(WalletConnectHandler, {}),
|
|
12127
11915
|
/* @__PURE__ */ jsx62(BalanceFeedProvider, {}),
|
|
12128
11916
|
/* @__PURE__ */ jsx62(
|
|
12129
11917
|
TssManagerWithRef,
|
|
@@ -12178,7 +11966,7 @@ function LumiaPassportProvider(props) {
|
|
|
12178
11966
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
12179
11967
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
12180
11968
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
12181
|
-
|
|
11969
|
+
useEffect31(() => notifyNoProjetctId(projectId), [projectId]);
|
|
12182
11970
|
const config = useRef11({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
12183
11971
|
const updateConfig = useCallback20((updates) => {
|
|
12184
11972
|
const prev = config.current;
|
|
@@ -12215,9 +12003,9 @@ function LumiaPassportProvider(props) {
|
|
|
12215
12003
|
}
|
|
12216
12004
|
config.current = next;
|
|
12217
12005
|
}, []);
|
|
12218
|
-
|
|
12006
|
+
useEffect31(() => {
|
|
12219
12007
|
if (typeof window === "undefined" || !projectId) return;
|
|
12220
|
-
const mergedConfig =
|
|
12008
|
+
const mergedConfig = merge2(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12221
12009
|
updateConfig(mergedConfig);
|
|
12222
12010
|
console.log("[ MERGED PROVIDER STORED CONFIG ]", mergedConfig);
|
|
12223
12011
|
try {
|
|
@@ -12271,7 +12059,7 @@ var useLumiaPassportConfig = () => {
|
|
|
12271
12059
|
|
|
12272
12060
|
// src/components/ConnectWalletButton.tsx
|
|
12273
12061
|
import { Cloud as Cloud3, Laptop as Laptop2, Loader as Loader19, Shield as Shield2 } from "lucide-react";
|
|
12274
|
-
import { useEffect as
|
|
12062
|
+
import { useEffect as useEffect32, useMemo as useMemo4 } from "react";
|
|
12275
12063
|
init_auth();
|
|
12276
12064
|
import { Fragment as Fragment16, jsx as jsx65, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
12277
12065
|
function getFormattedStatus(label, status, showStatus) {
|
|
@@ -12291,7 +12079,7 @@ function ConnectWalletButton(props) {
|
|
|
12291
12079
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12292
12080
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12293
12081
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12294
|
-
|
|
12082
|
+
useEffect32(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12295
12083
|
const avatar = jwtTokenManager2.getAvatar();
|
|
12296
12084
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
12297
12085
|
const indicators = useMemo4(() => {
|
|
@@ -12428,6 +12216,9 @@ function ConnectWalletButton(props) {
|
|
|
12428
12216
|
}
|
|
12429
12217
|
|
|
12430
12218
|
// src/hooks/childAppHooks.ts
|
|
12219
|
+
var useLumiaPassportIsMobileView = () => {
|
|
12220
|
+
return useLayoutStore((st) => st.isMobileView);
|
|
12221
|
+
};
|
|
12431
12222
|
var useLumiaPassportBalance = () => {
|
|
12432
12223
|
const walletBalance = useLayoutDataStore((st) => st.balance);
|
|
12433
12224
|
const fiatBalance = useLayoutDataStore((st) => st.fiatBalance);
|
|
@@ -12469,7 +12260,7 @@ function useLumiaPassportOpen() {
|
|
|
12469
12260
|
}
|
|
12470
12261
|
|
|
12471
12262
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12472
|
-
import { useCallback as useCallback22, useEffect as
|
|
12263
|
+
import { useCallback as useCallback22, useEffect as useEffect33 } from "react";
|
|
12473
12264
|
function useLumiaPassportColorMode() {
|
|
12474
12265
|
const {
|
|
12475
12266
|
config: { current: config }
|
|
@@ -12484,7 +12275,7 @@ function useLumiaPassportColorMode() {
|
|
|
12484
12275
|
},
|
|
12485
12276
|
[handleStoreColorMode]
|
|
12486
12277
|
);
|
|
12487
|
-
|
|
12278
|
+
useEffect33(() => {
|
|
12488
12279
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12489
12280
|
if (!targetColorMode && !preferedColorMode) {
|
|
12490
12281
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12526,7 +12317,7 @@ function ThemeToggle(props) {
|
|
|
12526
12317
|
}
|
|
12527
12318
|
|
|
12528
12319
|
// src/context/RainbowKitContext.tsx
|
|
12529
|
-
import
|
|
12320
|
+
import React14 from "react";
|
|
12530
12321
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
12531
12322
|
import { darkTheme, lightTheme, RainbowKitProvider } from "@rainbow-me/rainbowkit";
|
|
12532
12323
|
import { WagmiProvider as WagmiProvider2 } from "wagmi";
|
|
@@ -12682,10 +12473,10 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12682
12473
|
config: { current: config }
|
|
12683
12474
|
} = useLumiaPassportConfig();
|
|
12684
12475
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
12685
|
-
const rainbowConfig2 =
|
|
12476
|
+
const rainbowConfig2 = React14.useMemo(() => {
|
|
12686
12477
|
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12687
12478
|
}, [config.wallet?.walletConnectProjectId]);
|
|
12688
|
-
const customTheme =
|
|
12479
|
+
const customTheme = React14.useMemo(
|
|
12689
12480
|
() => isDark ? {
|
|
12690
12481
|
...darkTheme(),
|
|
12691
12482
|
colors: {
|
|
@@ -12715,7 +12506,7 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12715
12506
|
// src/internal/components/UserOpStatus.tsx
|
|
12716
12507
|
init_base();
|
|
12717
12508
|
import { AlertCircle as AlertCircle6, CheckCircle2 as CheckCircle27, Clock as Clock2, Copy as Copy5, ExternalLink as ExternalLink2, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
12718
|
-
import * as
|
|
12509
|
+
import * as React16 from "react";
|
|
12719
12510
|
|
|
12720
12511
|
// src/internal/utils/cn.ts
|
|
12721
12512
|
import { clsx as clsx2 } from "clsx";
|
|
@@ -12726,7 +12517,7 @@ function cn2(...inputs) {
|
|
|
12726
12517
|
|
|
12727
12518
|
// src/internal/components/Address.tsx
|
|
12728
12519
|
import { Copy as Copy4, ExternalLink } from "lucide-react";
|
|
12729
|
-
import * as
|
|
12520
|
+
import * as React15 from "react";
|
|
12730
12521
|
import { jsx as jsx68, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
12731
12522
|
function toExplorerAddressUrl(address, chain) {
|
|
12732
12523
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12748,7 +12539,7 @@ var Address = ({
|
|
|
12748
12539
|
}) => {
|
|
12749
12540
|
const addr = address || "";
|
|
12750
12541
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12751
|
-
const [copied, setCopied] =
|
|
12542
|
+
const [copied, setCopied] = React15.useState(false);
|
|
12752
12543
|
if (!addr) return /* @__PURE__ */ jsx68("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12753
12544
|
return /* @__PURE__ */ jsxs53("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12754
12545
|
label && /* @__PURE__ */ jsx68("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12821,20 +12612,20 @@ var UserOpStatus = ({
|
|
|
12821
12612
|
externalState
|
|
12822
12613
|
}) => {
|
|
12823
12614
|
const useExternalState = !!externalState;
|
|
12824
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12825
|
-
const [internalMempool, setInternalMempool] =
|
|
12826
|
-
const [internalError, setInternalError] =
|
|
12827
|
-
const [attempt, setAttempt] =
|
|
12828
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12829
|
-
const [timedOut, setTimedOut] =
|
|
12830
|
-
const [rejected, setRejected] =
|
|
12831
|
-
const intervalRef =
|
|
12832
|
-
const startTimeRef =
|
|
12615
|
+
const [internalReceipt, setInternalReceipt] = React16.useState(null);
|
|
12616
|
+
const [internalMempool, setInternalMempool] = React16.useState(null);
|
|
12617
|
+
const [internalError, setInternalError] = React16.useState(null);
|
|
12618
|
+
const [attempt, setAttempt] = React16.useState(0);
|
|
12619
|
+
const [internalRefreshing, setInternalRefreshing] = React16.useState(false);
|
|
12620
|
+
const [timedOut, setTimedOut] = React16.useState(false);
|
|
12621
|
+
const [rejected, setRejected] = React16.useState(false);
|
|
12622
|
+
const intervalRef = React16.useRef(null);
|
|
12623
|
+
const startTimeRef = React16.useRef(Date.now());
|
|
12833
12624
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12834
12625
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12835
12626
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12836
12627
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12837
|
-
const rpc =
|
|
12628
|
+
const rpc = React16.useCallback(async (method, params) => {
|
|
12838
12629
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12839
12630
|
const res = await fetch(getBundlerUrl(), {
|
|
12840
12631
|
method: "POST",
|
|
@@ -12845,14 +12636,14 @@ var UserOpStatus = ({
|
|
|
12845
12636
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12846
12637
|
return json.result;
|
|
12847
12638
|
}, []);
|
|
12848
|
-
const extractMempoolInfo =
|
|
12639
|
+
const extractMempoolInfo = React16.useCallback((m) => {
|
|
12849
12640
|
if (!m) return null;
|
|
12850
12641
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12851
12642
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12852
12643
|
if (!entryPoint && !sender) return null;
|
|
12853
12644
|
return { entryPoint, sender };
|
|
12854
12645
|
}, []);
|
|
12855
|
-
const tick =
|
|
12646
|
+
const tick = React16.useCallback(async () => {
|
|
12856
12647
|
if (useExternalState) return;
|
|
12857
12648
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12858
12649
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12896,7 +12687,7 @@ var UserOpStatus = ({
|
|
|
12896
12687
|
setAttempt((x) => x + 1);
|
|
12897
12688
|
}
|
|
12898
12689
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12899
|
-
|
|
12690
|
+
React16.useEffect(() => {
|
|
12900
12691
|
if (useExternalState) return;
|
|
12901
12692
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12902
12693
|
startTimeRef.current = Date.now();
|
|
@@ -12908,7 +12699,7 @@ var UserOpStatus = ({
|
|
|
12908
12699
|
setAttempt(0);
|
|
12909
12700
|
setInternalRefreshing(false);
|
|
12910
12701
|
}, [userOpHash, useExternalState]);
|
|
12911
|
-
|
|
12702
|
+
React16.useEffect(() => {
|
|
12912
12703
|
if (useExternalState) {
|
|
12913
12704
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12914
12705
|
return;
|
|
@@ -13085,7 +12876,7 @@ var UserOpStatus = ({
|
|
|
13085
12876
|
|
|
13086
12877
|
// src/internal/components/Hash.tsx
|
|
13087
12878
|
import { Copy as Copy6, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
13088
|
-
import * as
|
|
12879
|
+
import * as React17 from "react";
|
|
13089
12880
|
import { jsx as jsx71, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
13090
12881
|
function toExplorerUrl(kind, value, chain) {
|
|
13091
12882
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -13109,7 +12900,7 @@ var Hash = ({
|
|
|
13109
12900
|
}) => {
|
|
13110
12901
|
const value = hash || "";
|
|
13111
12902
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
13112
|
-
const [copied, setCopied] =
|
|
12903
|
+
const [copied, setCopied] = React17.useState(false);
|
|
13113
12904
|
if (!value) return /* @__PURE__ */ jsx71("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
13114
12905
|
return /* @__PURE__ */ jsxs55("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
13115
12906
|
label && /* @__PURE__ */ jsx71("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -13147,13 +12938,13 @@ var Hash = ({
|
|
|
13147
12938
|
|
|
13148
12939
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
13149
12940
|
init_base();
|
|
13150
|
-
import { useEffect as
|
|
12941
|
+
import { useEffect as useEffect35, useState as useState19 } from "react";
|
|
13151
12942
|
import { jsx as jsx72, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
13152
12943
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
13153
12944
|
const [transactions, setTransactions] = useState19([]);
|
|
13154
12945
|
const [loading, setLoading] = useState19(true);
|
|
13155
12946
|
const [error, setError] = useState19(null);
|
|
13156
|
-
|
|
12947
|
+
useEffect35(() => {
|
|
13157
12948
|
const fetchTransactions = async () => {
|
|
13158
12949
|
try {
|
|
13159
12950
|
setLoading(true);
|
|
@@ -13273,7 +13064,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
13273
13064
|
|
|
13274
13065
|
// src/hooks/useUserOpStatus.ts
|
|
13275
13066
|
init_base();
|
|
13276
|
-
import * as
|
|
13067
|
+
import * as React19 from "react";
|
|
13277
13068
|
function useUserOpStatus(options = {}) {
|
|
13278
13069
|
const {
|
|
13279
13070
|
userOpHash,
|
|
@@ -13284,16 +13075,16 @@ function useUserOpStatus(options = {}) {
|
|
|
13284
13075
|
onReceipt,
|
|
13285
13076
|
onTxHash
|
|
13286
13077
|
} = options;
|
|
13287
|
-
const [state, setState] =
|
|
13288
|
-
const [receipt, setReceipt] =
|
|
13289
|
-
const [mempool, setMempool] =
|
|
13290
|
-
const [txHash, setTxHash] =
|
|
13291
|
-
const [error, setError] =
|
|
13292
|
-
const [isPolling, setIsPolling] =
|
|
13293
|
-
const intervalRef =
|
|
13294
|
-
const startTimeRef =
|
|
13295
|
-
const prevStateRef =
|
|
13296
|
-
const rpc =
|
|
13078
|
+
const [state, setState] = React19.useState("waiting");
|
|
13079
|
+
const [receipt, setReceipt] = React19.useState(null);
|
|
13080
|
+
const [mempool, setMempool] = React19.useState(null);
|
|
13081
|
+
const [txHash, setTxHash] = React19.useState(null);
|
|
13082
|
+
const [error, setError] = React19.useState(null);
|
|
13083
|
+
const [isPolling, setIsPolling] = React19.useState(false);
|
|
13084
|
+
const intervalRef = React19.useRef(null);
|
|
13085
|
+
const startTimeRef = React19.useRef(Date.now());
|
|
13086
|
+
const prevStateRef = React19.useRef("waiting");
|
|
13087
|
+
const rpc = React19.useCallback(async (method, params) => {
|
|
13297
13088
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
13298
13089
|
const res = await fetch(getBundlerUrl(), {
|
|
13299
13090
|
method: "POST",
|
|
@@ -13304,21 +13095,21 @@ function useUserOpStatus(options = {}) {
|
|
|
13304
13095
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
13305
13096
|
return json.result;
|
|
13306
13097
|
}, []);
|
|
13307
|
-
const extractMempoolInfo =
|
|
13098
|
+
const extractMempoolInfo = React19.useCallback((m) => {
|
|
13308
13099
|
if (!m) return null;
|
|
13309
13100
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
13310
13101
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
13311
13102
|
if (!entryPoint && !sender) return null;
|
|
13312
13103
|
return { entryPoint, sender };
|
|
13313
13104
|
}, []);
|
|
13314
|
-
const updateState =
|
|
13105
|
+
const updateState = React19.useCallback((newState) => {
|
|
13315
13106
|
setState(newState);
|
|
13316
13107
|
if (prevStateRef.current !== newState) {
|
|
13317
13108
|
prevStateRef.current = newState;
|
|
13318
13109
|
onStateChange?.(newState);
|
|
13319
13110
|
}
|
|
13320
13111
|
}, [onStateChange]);
|
|
13321
|
-
const tick =
|
|
13112
|
+
const tick = React19.useCallback(async () => {
|
|
13322
13113
|
if (!userOpHash || !enabled) return;
|
|
13323
13114
|
if (receipt) {
|
|
13324
13115
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13391,7 +13182,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13391
13182
|
onTxHash,
|
|
13392
13183
|
onReceipt
|
|
13393
13184
|
]);
|
|
13394
|
-
|
|
13185
|
+
React19.useEffect(() => {
|
|
13395
13186
|
if (!userOpHash || !enabled) return;
|
|
13396
13187
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13397
13188
|
startTimeRef.current = Date.now();
|
|
@@ -13403,7 +13194,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13403
13194
|
setError(null);
|
|
13404
13195
|
setIsPolling(false);
|
|
13405
13196
|
}, [userOpHash, enabled]);
|
|
13406
|
-
|
|
13197
|
+
React19.useEffect(() => {
|
|
13407
13198
|
if (!userOpHash || !enabled) {
|
|
13408
13199
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13409
13200
|
return;
|
|
@@ -13439,7 +13230,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13439
13230
|
}
|
|
13440
13231
|
};
|
|
13441
13232
|
}, [userOpHash, enabled, pollMs]);
|
|
13442
|
-
const refresh =
|
|
13233
|
+
const refresh = React19.useCallback(async () => {
|
|
13443
13234
|
await tick();
|
|
13444
13235
|
}, [tick]);
|
|
13445
13236
|
return {
|
|
@@ -13660,6 +13451,7 @@ export {
|
|
|
13660
13451
|
useLumiaPassportError,
|
|
13661
13452
|
useLumiaPassportHasServerVault,
|
|
13662
13453
|
useLumiaPassportIFrameReady,
|
|
13454
|
+
useLumiaPassportIsMobileView,
|
|
13663
13455
|
useLumiaPassportLinkedProfiles,
|
|
13664
13456
|
useLumiaPassportLoadingStatus,
|
|
13665
13457
|
useLumiaPassportOpen,
|