@lumiapassport/ui-kit 1.14.21 → 1.14.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/iframe/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +621 -492
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +678 -549
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3834,28 +3834,32 @@ async function sendUserOperation(session, callTarget, amountWei, innerData = "0x
|
|
|
3834
3834
|
try {
|
|
3835
3835
|
const envCaps = typeof import.meta !== "undefined" && import.meta.env || {};
|
|
3836
3836
|
const maxBundlerVerifGas = envCaps.VITE_MAX_VERIFICATION_GAS ? BigInt(envCaps.VITE_MAX_VERIFICATION_GAS) : MAX_BUNDLER_VERIFICATION_GAS;
|
|
3837
|
-
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) :
|
|
3837
|
+
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) : null;
|
|
3838
3838
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
3839
3839
|
const maxAccountVerifGas = usePaymaster ? maxBundlerVerifGas - PAYMASTER_VERIFICATION_GAS : maxBundlerVerifGas;
|
|
3840
3840
|
const verGas = BigInt(userOp.verificationGasLimit || "0x0");
|
|
3841
3841
|
if (verGas > maxAccountVerifGas) userOp.verificationGasLimit = toHex2(maxAccountVerifGas);
|
|
3842
3842
|
const callGas = BigInt(userOp.callGasLimit || "0x0");
|
|
3843
|
-
if (callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
3843
|
+
if (maxCallGas && callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
3844
3844
|
} catch {
|
|
3845
3845
|
}
|
|
3846
3846
|
};
|
|
3847
3847
|
let estimated = false;
|
|
3848
3848
|
try {
|
|
3849
3849
|
const gasEst = await estimateUserOperationGas({ ...userOp, signature: `0x${"00".repeat(65)}` });
|
|
3850
|
+
console.log("[Account] Gas estimation from bundler:", { callGasLimit: gasEst.callGasLimit, verificationGasLimit: gasEst.verificationGasLimit, preVerificationGas: gasEst.preVerificationGas });
|
|
3850
3851
|
userOp.callGasLimit = gasEst.callGasLimit;
|
|
3851
3852
|
userOp.verificationGasLimit = gasEst.verificationGasLimit;
|
|
3852
3853
|
userOp.preVerificationGas = gasEst.preVerificationGas;
|
|
3853
3854
|
ensureGenerousDefaults();
|
|
3854
3855
|
enforceCaps(session.usePaymaster);
|
|
3855
3856
|
estimated = true;
|
|
3856
|
-
|
|
3857
|
+
console.log("[Account] Gas after caps:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
3858
|
+
} catch (e) {
|
|
3859
|
+
console.log("[Account] Gas estimation failed, using defaults:", e);
|
|
3857
3860
|
ensureGenerousDefaults();
|
|
3858
3861
|
enforceCaps(session.usePaymaster);
|
|
3862
|
+
console.log("[Account] Gas after defaults:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
3859
3863
|
}
|
|
3860
3864
|
try {
|
|
3861
3865
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
@@ -4019,28 +4023,32 @@ async function prepareUserOperation(session, callTarget, amountWei, innerData =
|
|
|
4019
4023
|
try {
|
|
4020
4024
|
const envCaps = typeof import.meta !== "undefined" && import.meta.env || {};
|
|
4021
4025
|
const maxBundlerVerifGas = envCaps.VITE_MAX_VERIFICATION_GAS ? BigInt(envCaps.VITE_MAX_VERIFICATION_GAS) : MAX_BUNDLER_VERIFICATION_GAS;
|
|
4022
|
-
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) :
|
|
4026
|
+
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) : null;
|
|
4023
4027
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
4024
4028
|
const maxAccountVerifGas = usePaymaster ? maxBundlerVerifGas - PAYMASTER_VERIFICATION_GAS : maxBundlerVerifGas;
|
|
4025
4029
|
const verGas = BigInt(userOp.verificationGasLimit || "0x0");
|
|
4026
4030
|
if (verGas > maxAccountVerifGas) userOp.verificationGasLimit = toHex2(maxAccountVerifGas);
|
|
4027
4031
|
const callGas = BigInt(userOp.callGasLimit || "0x0");
|
|
4028
|
-
if (callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
4032
|
+
if (maxCallGas && callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
4029
4033
|
} catch {
|
|
4030
4034
|
}
|
|
4031
4035
|
};
|
|
4032
4036
|
let estimated = false;
|
|
4033
4037
|
try {
|
|
4034
4038
|
const gasEst = await estimateUserOperationGas({ ...userOp, signature: `0x${"00".repeat(65)}` });
|
|
4039
|
+
console.log("[Account] Gas estimation from bundler:", { callGasLimit: gasEst.callGasLimit, verificationGasLimit: gasEst.verificationGasLimit, preVerificationGas: gasEst.preVerificationGas });
|
|
4035
4040
|
userOp.callGasLimit = gasEst.callGasLimit;
|
|
4036
4041
|
userOp.verificationGasLimit = gasEst.verificationGasLimit;
|
|
4037
4042
|
userOp.preVerificationGas = gasEst.preVerificationGas;
|
|
4038
4043
|
ensureGenerousDefaults();
|
|
4039
4044
|
enforceCaps(session.usePaymaster);
|
|
4040
4045
|
estimated = true;
|
|
4041
|
-
|
|
4046
|
+
console.log("[Account] Gas after caps:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
4047
|
+
} catch (e) {
|
|
4048
|
+
console.log("[Account] Gas estimation failed, using defaults:", e);
|
|
4042
4049
|
ensureGenerousDefaults();
|
|
4043
4050
|
enforceCaps(session.usePaymaster);
|
|
4051
|
+
console.log("[Account] Gas after defaults:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
4044
4052
|
}
|
|
4045
4053
|
try {
|
|
4046
4054
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
@@ -4386,7 +4394,7 @@ var init_profile = __esm({
|
|
|
4386
4394
|
});
|
|
4387
4395
|
|
|
4388
4396
|
// src/styles/built.css
|
|
4389
|
-
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-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.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-0{right:0}.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-\\[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 .m-4{margin:1rem}.lumia-scope .-mx-1{margin-left:-.25rem;margin-right:-.25rem}.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-1{margin-top:.25rem;margin-bottom:.25rem}.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 .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-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.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 .mt-\\[var\\(--l-pass-gap\\)\\]{margin-top:var(--l-pass-gap)}.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 .aspect-square{aspect-ratio:1/1}.lumia-scope .size-3{width:.75rem;height:.75rem}.lumia-scope .size-3\\.5{width:.875rem;height:.875rem}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.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-\\[100dvh\\]{height:100dvh}.lumia-scope .h-\\[48px\\]{height:48px}.lumia-scope .h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.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-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-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[40px\\]{width:40px}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.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-\\[8rem\\]{min-width:8rem}.lumia-scope .min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.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-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.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-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.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 .grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lumia-scope .grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lumia-scope .grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lumia-scope .grid-cols-8{grid-template-columns:repeat(8,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-x-hidden{overflow-x:hidden}.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-normal{overflow-wrap:normal;word-break:normal}.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-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-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-accent\\)\\]{background-color:var(--l-pass-accent)}.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-muted\\)\\]{background-color:var(--l-pass-bg-muted)}.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-error\\)\\]{background-color:var(--l-pass-error)}.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-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-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-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-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.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-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-1{padding-left:.25rem;padding-right:.25rem}.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-gap\\)\\]{padding-left:var(--l-pass-gap);padding-right:var(--l-pass-gap)}.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-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-gap\\)\\]{padding-top:var(--l-pass-gap);padding-bottom:var(--l-pass-gap)}.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 .pl-2{padding-left:.5rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pr-8{padding-right:2rem}.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-\\[14px\\]{font-size:14px}.lumia-scope .text-\\[16px\\]{font-size:16px}.lumia-scope .text-\\[8px\\]{font-size:8px}.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-normal{font-weight:400}.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-8{line-height:2rem}.lumia-scope .leading-\\[8px\\]{line-height:8px}.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-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-black{--tw-text-opacity:1;color:rgb(0 0 0/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-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-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.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-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-2{text-underline-offset:2px}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.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 .shadow-sm,.lumia-scope .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-xl{--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)}.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 .grayscale{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 .grayscale{--tw-grayscale:grayscale(100%)}.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-\\[color\\2c box-shadow\\]{transition-property:color,box-shadow;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,384px);--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,#ebebeb);--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%,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.6));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.6));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.4));--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,.1));--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;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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!important;appearance:none!important;-webkit-appearance:none;-moz-appearance:none}.lumia-scope input,.lumia-scope textarea{font-size:16px!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 20px 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-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@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;overflow-x:hidden;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 div[data-radix-popper-content-wrapper]{z-index:10000!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\\:font-mono::file-selector-button{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .file\\:text-\\[10px\\]::file-selector-button{font-size:10px}.lumia-scope .file\\:text-base::file-selector-button{font-size:1rem;line-height:1.5rem}.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 .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\\: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-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/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-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/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-h\\)\\]:hover{color:var(--l-pass-fg-h)}.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\\:underline:hover{text-decoration-line:underline}.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 .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-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\\:bg-\\[var\\(--l-pass-secondary\\)\\]:hover:disabled{background-color:var(--l-pass-secondary)}.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-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.lumia-scope .data-\\[size\\=default\\]\\:h-12[data-size=default]{height:3rem}.lumia-scope .data-\\[size\\=sm\\]\\:h-10[data-size=sm]{height:2.5rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{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 .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{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 .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.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)}.lumia-scope .data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1[data-slot=select-value]>*){overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex[data-slot=select-value]>*){display:flex}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center[data-slot=select-value]>*){align-items:center}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-\\[var\\(--l-pass-gap\\)\\][data-slot=select-value]>*){gap:var(--l-pass-gap)}@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 (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@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\\:not\\(\\[class\\*\\=\\\'size-\\\'\\]\\)\\]\\:size-4 svg:not([class*=size-])){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4397
|
+
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-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.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-0{right:0}.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-\\[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 .m-4{margin:1rem}.lumia-scope .-mx-1{margin-left:-.25rem;margin-right:-.25rem}.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-1{margin-top:.25rem;margin-bottom:.25rem}.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 .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-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.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 .mt-\\[var\\(--l-pass-gap\\)\\]{margin-top:var(--l-pass-gap)}.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 .aspect-square{aspect-ratio:1/1}.lumia-scope .size-3{width:.75rem;height:.75rem}.lumia-scope .size-3\\.5{width:.875rem;height:.875rem}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.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-7{height:1.75rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[100dvh\\]{height:100dvh}.lumia-scope .h-\\[48px\\]{height:48px}.lumia-scope .h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.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-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-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[40px\\]{width:40px}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.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-5{min-width:1.25rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[8rem\\]{min-width:8rem}.lumia-scope .min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.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-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.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-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.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 .grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lumia-scope .grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lumia-scope .grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lumia-scope .grid-cols-8{grid-template-columns:repeat(8,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-x-hidden{overflow-x:hidden}.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-normal{overflow-wrap:normal;word-break:normal}.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-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-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-accent\\)\\]{background-color:var(--l-pass-accent)}.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-muted\\)\\]{background-color:var(--l-pass-bg-muted)}.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-error\\)\\]{background-color:var(--l-pass-error)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-fg-inverted\\)\\]{background-color:var(--l-pass-fg-inverted)}.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-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-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-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-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.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-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-gap\\)\\]{padding:var(--l-pass-gap)}.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-1{padding-left:.25rem;padding-right:.25rem}.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-gap\\)\\]{padding-left:var(--l-pass-gap);padding-right:var(--l-pass-gap)}.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-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-gap\\)\\]{padding-top:var(--l-pass-gap);padding-bottom:var(--l-pass-gap)}.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 .pl-2{padding-left:.5rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pr-8{padding-right:2rem}.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-\\[14px\\]{font-size:14px}.lumia-scope .text-\\[16px\\]{font-size:16px}.lumia-scope .text-\\[8px\\]{font-size:8px}.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-normal{font-weight:400}.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-8{line-height:2rem}.lumia-scope .leading-\\[8px\\]{line-height:8px}.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-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-black{--tw-text-opacity:1;color:rgb(0 0 0/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-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-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.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-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-2{text-underline-offset:2px}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.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 .shadow-sm,.lumia-scope .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-xl{--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)}.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 .grayscale{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 .grayscale{--tw-grayscale:grayscale(100%)}.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-\\[color\\2c box-shadow\\]{transition-property:color,box-shadow;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,384px);--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,#ebebeb);--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%,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.6));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.6));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.4));--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,.1));--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;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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!important;appearance:none!important;-webkit-appearance:none;-moz-appearance:none}.lumia-scope input,.lumia-scope textarea{font-size:16px!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 20px 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-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@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;overflow-x:hidden;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 div[data-radix-popper-content-wrapper]{z-index:10000!important}.lumia-scope .file\\:mr-\\[var\\(--l-pass-gap\\)\\]::file-selector-button{margin-right:var(--l-pass-gap)}.lumia-scope .file\\:h-12::file-selector-button{height:3rem}.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-\\[16px\\]::file-selector-button{font-size:16px}.lumia-scope .file\\:text-base::file-selector-button{font-size:1rem;line-height:1.5rem}.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 .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\\: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-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/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-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/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-h\\)\\]:hover{color:var(--l-pass-fg-h)}.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\\:underline:hover{text-decoration-line:underline}.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 .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-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\\:bg-\\[var\\(--l-pass-secondary\\)\\]:hover:disabled{background-color:var(--l-pass-secondary)}.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-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.lumia-scope .data-\\[size\\=default\\]\\:h-12[data-size=default]{height:3rem}.lumia-scope .data-\\[size\\=sm\\]\\:h-10[data-size=sm]{height:2.5rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{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 .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{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 .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.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)}.lumia-scope .data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1[data-slot=select-value]>*){overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex[data-slot=select-value]>*){display:flex}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center[data-slot=select-value]>*){align-items:center}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-\\[var\\(--l-pass-gap\\)\\][data-slot=select-value]>*){gap:var(--l-pass-gap)}@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 (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@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\\:not\\(\\[class\\*\\=\\\'size-\\\'\\]\\)\\]\\:size-4 svg:not([class*=size-])){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4390
4398
|
|
|
4391
4399
|
// src/context/LumiaPassportContext.tsx
|
|
4392
4400
|
init_lumiaPassport();
|
|
@@ -4397,9 +4405,9 @@ import {
|
|
|
4397
4405
|
createContext,
|
|
4398
4406
|
useCallback as useCallback20,
|
|
4399
4407
|
useContext,
|
|
4400
|
-
useEffect as
|
|
4408
|
+
useEffect as useEffect34,
|
|
4401
4409
|
useMemo as useMemo5,
|
|
4402
|
-
useRef as
|
|
4410
|
+
useRef as useRef14
|
|
4403
4411
|
} from "react";
|
|
4404
4412
|
|
|
4405
4413
|
// src/context/LumiaPassportSessionContext.tsx
|
|
@@ -4581,7 +4589,7 @@ function BalanceFeedProvider() {
|
|
|
4581
4589
|
|
|
4582
4590
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4583
4591
|
import { AnimatePresence as AnimatePresence3, motion as motion3 } from "framer-motion";
|
|
4584
|
-
import { useEffect as
|
|
4592
|
+
import { useEffect as useEffect32 } from "react";
|
|
4585
4593
|
|
|
4586
4594
|
// src/internal/components/Footer/Footer.tsx
|
|
4587
4595
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
@@ -4642,6 +4650,35 @@ var LumiaLogo = forwardRef(({ size = 24, className = "" }, ref) => /* @__PURE__
|
|
|
4642
4650
|
init_auth();
|
|
4643
4651
|
init_base();
|
|
4644
4652
|
|
|
4653
|
+
// src/internal/hooks/useLayoutStore.ts
|
|
4654
|
+
import { create as create2 } from "zustand";
|
|
4655
|
+
var useLayoutStore = create2((set) => ({
|
|
4656
|
+
colorMode: "light",
|
|
4657
|
+
// layoutView: 'desktop',
|
|
4658
|
+
// deviceType: 'non-touch',
|
|
4659
|
+
isMobileView: false,
|
|
4660
|
+
maxScrollHeight: MAX_CONTENT_HEIGHT,
|
|
4661
|
+
isDialogClosing: false,
|
|
4662
|
+
isDialogOpen: false,
|
|
4663
|
+
isDialogForced: false,
|
|
4664
|
+
dialogTitle: null,
|
|
4665
|
+
dialogDescription: null,
|
|
4666
|
+
dialogContent: null,
|
|
4667
|
+
isSettings: false,
|
|
4668
|
+
setColorMode: (colorMode) => set({ colorMode }),
|
|
4669
|
+
// setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
4670
|
+
// setDeviceType: (deviceType) => set(() => ({ deviceType })),
|
|
4671
|
+
setIsMobileView: (isMobileView) => set({ isMobileView }),
|
|
4672
|
+
setMaxScrollHeight: (maxScrollHeight) => set({ maxScrollHeight }),
|
|
4673
|
+
setIsDialogClosing: (isDialogClosing) => set({ isDialogClosing }),
|
|
4674
|
+
setIsDialogOpen: (isDialogOpen) => set({ isDialogOpen }),
|
|
4675
|
+
setIsDialogForced: (isDialogForced) => set({ isDialogForced }),
|
|
4676
|
+
setDialogTitle: (dialogTitle) => set({ dialogTitle }),
|
|
4677
|
+
setDialogDescription: (dialogDescription) => set({ dialogDescription }),
|
|
4678
|
+
setDialogContent: (dialogContent) => set({ dialogContent }),
|
|
4679
|
+
setIsSettings: (isSettings) => set({ isSettings })
|
|
4680
|
+
}));
|
|
4681
|
+
|
|
4645
4682
|
// src/internal/lib/utils.ts
|
|
4646
4683
|
import { clsx } from "clsx";
|
|
4647
4684
|
import { twMerge } from "tailwind-merge";
|
|
@@ -4734,9 +4771,11 @@ function Footer() {
|
|
|
4734
4771
|
const { callbacks } = useLumiaPassportConfig();
|
|
4735
4772
|
const { address, setSession, setAddress, setStatus, setError, setIsLoading } = useLumiaPassportSession();
|
|
4736
4773
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
4774
|
+
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
4737
4775
|
const { mutate: disconnect, isPending: isDisconnecting } = useMutation({
|
|
4738
4776
|
mutationFn: async (disconnectAddress) => {
|
|
4739
4777
|
if (!disconnectAddress) throw new Error("No address to disconnect");
|
|
4778
|
+
setIsDialogForced(true);
|
|
4740
4779
|
setError(null);
|
|
4741
4780
|
setStatus("disconnecting");
|
|
4742
4781
|
setIsLoading(true);
|
|
@@ -4753,12 +4792,16 @@ function Footer() {
|
|
|
4753
4792
|
setStatus("idle");
|
|
4754
4793
|
setIsLoading(false);
|
|
4755
4794
|
callbacks?.onLumiaPassportDisconnect?.({ address: disconnectAddress, userId: disconnectedUserId });
|
|
4756
|
-
setTimeout(() =>
|
|
4795
|
+
setTimeout(() => {
|
|
4796
|
+
setPage("auth" /* AUTH */);
|
|
4797
|
+
setIsDialogForced(false);
|
|
4798
|
+
}, 200);
|
|
4757
4799
|
},
|
|
4758
4800
|
onError: (err) => {
|
|
4759
4801
|
setError(err.message || "An unknown error occurred during sign out");
|
|
4760
4802
|
setStatus("idle");
|
|
4761
4803
|
setIsLoading(false);
|
|
4804
|
+
setIsDialogForced(false);
|
|
4762
4805
|
}
|
|
4763
4806
|
});
|
|
4764
4807
|
const { name, logo, logoDataUri } = lumiaBeam;
|
|
@@ -4944,35 +4987,6 @@ function BalanceView(props) {
|
|
|
4944
4987
|
// src/internal/components/KYC/KycMenu.tsx
|
|
4945
4988
|
import { ArrowLeft } from "lucide-react";
|
|
4946
4989
|
|
|
4947
|
-
// src/internal/hooks/useLayoutStore.ts
|
|
4948
|
-
import { create as create2 } from "zustand";
|
|
4949
|
-
var useLayoutStore = create2((set) => ({
|
|
4950
|
-
colorMode: "light",
|
|
4951
|
-
// layoutView: 'desktop',
|
|
4952
|
-
// deviceType: 'non-touch',
|
|
4953
|
-
isMobileView: false,
|
|
4954
|
-
maxScrollHeight: MAX_CONTENT_HEIGHT,
|
|
4955
|
-
isDialogClosing: false,
|
|
4956
|
-
isDialogOpen: false,
|
|
4957
|
-
isDialogForced: false,
|
|
4958
|
-
dialogTitle: null,
|
|
4959
|
-
dialogDescription: null,
|
|
4960
|
-
dialogContent: null,
|
|
4961
|
-
isSettings: false,
|
|
4962
|
-
setColorMode: (colorMode) => set({ colorMode }),
|
|
4963
|
-
// setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
4964
|
-
// setDeviceType: (deviceType) => set(() => ({ deviceType })),
|
|
4965
|
-
setIsMobileView: (isMobileView) => set({ isMobileView }),
|
|
4966
|
-
setMaxScrollHeight: (maxScrollHeight) => set({ maxScrollHeight }),
|
|
4967
|
-
setIsDialogClosing: (isDialogClosing) => set({ isDialogClosing }),
|
|
4968
|
-
setIsDialogOpen: (isDialogOpen) => set({ isDialogOpen }),
|
|
4969
|
-
setIsDialogForced: (isDialogForced) => set({ isDialogForced }),
|
|
4970
|
-
setDialogTitle: (dialogTitle) => set({ dialogTitle }),
|
|
4971
|
-
setDialogDescription: (dialogDescription) => set({ dialogDescription }),
|
|
4972
|
-
setDialogContent: (dialogContent) => set({ dialogContent }),
|
|
4973
|
-
setIsSettings: (isSettings) => set({ isSettings })
|
|
4974
|
-
}));
|
|
4975
|
-
|
|
4976
4990
|
// src/internal/components/KYC/SumsubIframe.tsx
|
|
4977
4991
|
import { LoaderIcon } from "lucide-react";
|
|
4978
4992
|
|
|
@@ -5355,7 +5369,7 @@ function Header() {
|
|
|
5355
5369
|
// package.json
|
|
5356
5370
|
var package_default = {
|
|
5357
5371
|
name: "@lumiapassport/ui-kit",
|
|
5358
|
-
version: "1.14.
|
|
5372
|
+
version: "1.14.23",
|
|
5359
5373
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
5360
5374
|
type: "module",
|
|
5361
5375
|
main: "./dist/index.cjs",
|
|
@@ -5484,8 +5498,9 @@ var CONTENT_BG_SETUP = {
|
|
|
5484
5498
|
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
5485
5499
|
};
|
|
5486
5500
|
var DialogContent = forwardRef3(
|
|
5487
|
-
({ className, children,
|
|
5501
|
+
({ className, children, colorMode, ...props }, ref) => {
|
|
5488
5502
|
const isSettings = useLayoutStore((st) => st.isSettings);
|
|
5503
|
+
const isDialogForced = useLayoutStore((st) => st.isDialogForced);
|
|
5489
5504
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5490
5505
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
5491
5506
|
const { isMobileView, isClosing, style } = useDecideContentStyles();
|
|
@@ -5516,7 +5531,7 @@ var DialogContent = forwardRef3(
|
|
|
5516
5531
|
...props,
|
|
5517
5532
|
children: [
|
|
5518
5533
|
children,
|
|
5519
|
-
/* @__PURE__ */ jsxs12(
|
|
5534
|
+
!isDialogForced && /* @__PURE__ */ jsxs12(
|
|
5520
5535
|
"div",
|
|
5521
5536
|
{
|
|
5522
5537
|
className: cn(
|
|
@@ -5549,7 +5564,7 @@ var DialogContent = forwardRef3(
|
|
|
5549
5564
|
]
|
|
5550
5565
|
}
|
|
5551
5566
|
),
|
|
5552
|
-
|
|
5567
|
+
/* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsxs12(Button, { variant: "ghost", size: "icon", className: "w-4 h-4", children: [
|
|
5553
5568
|
/* @__PURE__ */ jsx13(X, { className: "h-4 w-4" }),
|
|
5554
5569
|
/* @__PURE__ */ jsx13("span", { className: "sr-only", children: "Close" })
|
|
5555
5570
|
] }) })
|
|
@@ -5822,23 +5837,25 @@ function useBackupStatusChanges() {
|
|
|
5822
5837
|
|
|
5823
5838
|
// src/internal/hooks/useBackupWarning.ts
|
|
5824
5839
|
import { useEffect as useEffect6, useRef as useRef3 } from "react";
|
|
5825
|
-
var WARNING_TIMEOUT_MS =
|
|
5840
|
+
var WARNING_TIMEOUT_MS = 4500;
|
|
5826
5841
|
function useBackupWarning() {
|
|
5827
|
-
const config = useLumiaPassportConfig().config;
|
|
5828
5842
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5829
5843
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
5830
5844
|
const page = useLayoutDataStore((st) => st.page);
|
|
5831
5845
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5832
5846
|
const timeoutRef = useRef3(null);
|
|
5847
|
+
const touchedRef = useRef3(false);
|
|
5833
5848
|
useEffect6(() => {
|
|
5849
|
+
if (touchedRef.current) return;
|
|
5834
5850
|
if (timeoutRef.current) {
|
|
5835
5851
|
clearTimeout(timeoutRef.current);
|
|
5836
5852
|
timeoutRef.current = null;
|
|
5837
5853
|
}
|
|
5838
|
-
|
|
5839
|
-
if (!address || !isShown || page === "keysare-backup" /* KEYSARE_BACKUP */) return;
|
|
5854
|
+
if (!address || !!hasServerVault || page === "keysare-backup" /* KEYSARE_BACKUP */) return;
|
|
5840
5855
|
timeoutRef.current = setTimeout(() => {
|
|
5841
5856
|
setPage("keysare-backup" /* KEYSARE_BACKUP */);
|
|
5857
|
+
touchedRef.current = true;
|
|
5858
|
+
timeoutRef.current = null;
|
|
5842
5859
|
}, WARNING_TIMEOUT_MS);
|
|
5843
5860
|
return () => {
|
|
5844
5861
|
if (timeoutRef.current) {
|
|
@@ -5903,12 +5920,12 @@ function useDetectMaxScrollHeight() {
|
|
|
5903
5920
|
}
|
|
5904
5921
|
|
|
5905
5922
|
// src/internal/hooks/usePageMapper.tsx
|
|
5906
|
-
import { useCallback as useCallback17, useEffect as
|
|
5923
|
+
import { useCallback as useCallback17, useEffect as useEffect29 } from "react";
|
|
5907
5924
|
|
|
5908
5925
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5909
5926
|
import { AnimatePresence, motion } from "framer-motion";
|
|
5910
5927
|
import { AlertTriangle as AlertTriangle2, Loader as Loader5 } from "lucide-react";
|
|
5911
|
-
import { useEffect as useEffect11, useMemo, useState as useState7 } from "react";
|
|
5928
|
+
import { useEffect as useEffect11, useMemo, useRef as useRef9, useState as useState7 } from "react";
|
|
5912
5929
|
|
|
5913
5930
|
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
5914
5931
|
import { useCallback as useCallback4, useEffect as useEffect9, useRef as useRef4 } from "react";
|
|
@@ -7140,8 +7157,18 @@ function useAuthMenuHandlers() {
|
|
|
7140
7157
|
const qc = useQueryClient2();
|
|
7141
7158
|
const pendingLoginResponseRef = useRef7(null);
|
|
7142
7159
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7160
|
+
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
7143
7161
|
const [telegramCleanup, setTelegramCleanup] = useState5(null);
|
|
7144
|
-
const {
|
|
7162
|
+
const {
|
|
7163
|
+
usePaymaster,
|
|
7164
|
+
setError,
|
|
7165
|
+
setStatus,
|
|
7166
|
+
setSession,
|
|
7167
|
+
setAddress,
|
|
7168
|
+
setRecoveryUserId,
|
|
7169
|
+
setHasServerVault,
|
|
7170
|
+
setIsLoading
|
|
7171
|
+
} = useLumiaPassportSession();
|
|
7145
7172
|
const setStep = useAuthStore((st) => st.setStep);
|
|
7146
7173
|
const setAlert = useAuthStore((st) => st.setAlert);
|
|
7147
7174
|
const createSessionWithKeyshare = useCallback7(
|
|
@@ -7179,6 +7206,7 @@ function useAuthMenuHandlers() {
|
|
|
7179
7206
|
[setStatus, callbacks, usePaymaster]
|
|
7180
7207
|
);
|
|
7181
7208
|
const onAuthSuccess = useCallback7(async () => {
|
|
7209
|
+
setIsLoading(true);
|
|
7182
7210
|
const loginResponse = pendingLoginResponseRef.current;
|
|
7183
7211
|
if (!loginResponse || !loginResponse.userId) {
|
|
7184
7212
|
setError("Authentication failed - no login data available");
|
|
@@ -7207,10 +7235,6 @@ function useAuthMenuHandlers() {
|
|
|
7207
7235
|
);
|
|
7208
7236
|
setError(null);
|
|
7209
7237
|
setAlert(null);
|
|
7210
|
-
setSession(sess);
|
|
7211
|
-
setAddress(addr);
|
|
7212
|
-
setStatus("ready");
|
|
7213
|
-
setPage(null);
|
|
7214
7238
|
try {
|
|
7215
7239
|
callbacks?.onLumiaPassportConnect?.({ address: addr, session: sess });
|
|
7216
7240
|
callbacks?.onLumiaPassportAccount?.({ userId, address: addr, session: sess, hasKeyshare: hasServerKeyshare });
|
|
@@ -7231,6 +7255,16 @@ function useAuthMenuHandlers() {
|
|
|
7231
7255
|
} catch (e) {
|
|
7232
7256
|
console.warn("[UI-KIT] Vault status check failed:", e);
|
|
7233
7257
|
}
|
|
7258
|
+
setSession(sess);
|
|
7259
|
+
setAddress(addr);
|
|
7260
|
+
setStatus("ready");
|
|
7261
|
+
if (jwt?.isNewUser) {
|
|
7262
|
+
console.log("[AuthMenu] New user detected - forcing backup flow");
|
|
7263
|
+
setIsDialogForced(true);
|
|
7264
|
+
setPage("keysare-backup" /* KEYSARE_BACKUP */);
|
|
7265
|
+
} else {
|
|
7266
|
+
setPage(null);
|
|
7267
|
+
}
|
|
7234
7268
|
} catch (error) {
|
|
7235
7269
|
if (error?.code === "KEYSHARE_RECOVERY_NEEDED") {
|
|
7236
7270
|
console.warn("[AuthMenu] Keyshare recovery needed for user:", userId);
|
|
@@ -7250,6 +7284,8 @@ function useAuthMenuHandlers() {
|
|
|
7250
7284
|
});
|
|
7251
7285
|
setStep("failed");
|
|
7252
7286
|
}
|
|
7287
|
+
} finally {
|
|
7288
|
+
setIsLoading(false);
|
|
7253
7289
|
}
|
|
7254
7290
|
}, [
|
|
7255
7291
|
// config.projectId,
|
|
@@ -7263,6 +7299,7 @@ function useAuthMenuHandlers() {
|
|
|
7263
7299
|
setAddress,
|
|
7264
7300
|
setRecoveryUserId,
|
|
7265
7301
|
setHasServerVault,
|
|
7302
|
+
setIsDialogForced,
|
|
7266
7303
|
createSessionWithKeyshare
|
|
7267
7304
|
]);
|
|
7268
7305
|
const checkDisplayNameRequired = useCallback7(async (loginResponse) => {
|
|
@@ -7636,20 +7673,28 @@ function VerifyStep(props) {
|
|
|
7636
7673
|
import { jsx as jsx30, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
7637
7674
|
var AuthMenu = () => {
|
|
7638
7675
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7639
|
-
const [isMenuReady, setIsMenuReady] = useState7(false);
|
|
7640
7676
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
7641
7677
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7642
7678
|
const { step, alert: alert2, setStep, setPasskeyStatus, setEmail, setAlert } = useAuthStore();
|
|
7643
7679
|
const { pendingLoginResponseRef, onAuthSuccess, goBackToSignIn, checkDisplayNameRequired } = useAuthMenuHandlers();
|
|
7680
|
+
const [isAlertShowReady, setIsAlertShowReady] = useState7(false);
|
|
7681
|
+
const readyTimeout = useRef9(null);
|
|
7682
|
+
useEffect11(() => {
|
|
7683
|
+
if (readyTimeout.current) {
|
|
7684
|
+
clearTimeout(readyTimeout.current);
|
|
7685
|
+
readyTimeout.current = null;
|
|
7686
|
+
}
|
|
7687
|
+
setIsAlertShowReady(false);
|
|
7688
|
+
readyTimeout.current = setTimeout(() => setIsAlertShowReady(true), 750);
|
|
7689
|
+
}, [step]);
|
|
7644
7690
|
useEffect11(() => {
|
|
7645
7691
|
setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT);
|
|
7646
|
-
setTimeout(() => setIsMenuReady(true), 500);
|
|
7647
7692
|
return () => {
|
|
7648
7693
|
setStep("signin");
|
|
7649
7694
|
setEmail("");
|
|
7650
7695
|
setPasskeyStatus("idle");
|
|
7651
7696
|
setAlert(null);
|
|
7652
|
-
|
|
7697
|
+
setIsAlertShowReady(false);
|
|
7653
7698
|
};
|
|
7654
7699
|
}, []);
|
|
7655
7700
|
if (!isIframeReady) {
|
|
@@ -7703,12 +7748,12 @@ var AuthMenu = () => {
|
|
|
7703
7748
|
},
|
|
7704
7749
|
step
|
|
7705
7750
|
) }),
|
|
7706
|
-
|
|
7751
|
+
isAlertShowReady && /* --------------------------------------------------------------------------------------------------------------- */
|
|
7707
7752
|
/* -------- EXPANDABLE is designed to adjust its height automatically whenever ANY 1ST LEVEL CHILD changes! ------ */
|
|
7708
7753
|
/* In order to ensure smooth expand animation consistency do not use 2nd (or 3rd etc) nested conditional rendering */
|
|
7709
7754
|
/* elements, cause it might outcome Expandable not reacting to deeply nested elements' height changes ------------ */
|
|
7710
7755
|
/* --------------------------------------------------------------------------------------------------------------- */
|
|
7711
|
-
/* @__PURE__ */ jsx30(Expandable, { isExpanded: !!alert2 &&
|
|
7756
|
+
/* @__PURE__ */ jsx30(Expandable, { isExpanded: !!alert2 && isAlertShowReady, contentClassName: "px-[var(--l-pass-pd)]", children: /* @__PURE__ */ jsxs24(Highlight, { type: "error", className: "w-full flex gap-[var(--l-pass-gap)] ", children: [
|
|
7712
7757
|
/* @__PURE__ */ jsx30(AlertTriangle2, { className: "w-5 h-5 text-[var(--l-pass-error)]" }),
|
|
7713
7758
|
/* @__PURE__ */ jsxs24("span", { className: "block w-full flex flex-col gap-1 flex-1", children: [
|
|
7714
7759
|
alert2?.title && /* @__PURE__ */ jsx30("span", { className: "block font-bold leading-5", children: alert2.title }),
|
|
@@ -7817,7 +7862,7 @@ function RampnowIcon() {
|
|
|
7817
7862
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7818
7863
|
import { useMutation as useMutation6, useQuery as useQuery3, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
7819
7864
|
import { DollarSign, LoaderIcon as LoaderIcon2 } from "lucide-react";
|
|
7820
|
-
import { useEffect as useEffect13, useRef as
|
|
7865
|
+
import { useEffect as useEffect13, useRef as useRef10 } from "react";
|
|
7821
7866
|
|
|
7822
7867
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7823
7868
|
import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
@@ -7982,7 +8027,7 @@ function Binance(props) {
|
|
|
7982
8027
|
queryKey: [QUERY_KEYS3.binancePaymentModes, walletAddress, isLumiaAvailable, srcQueryAmount],
|
|
7983
8028
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7984
8029
|
});
|
|
7985
|
-
const lastLoadedPaymentModes =
|
|
8030
|
+
const lastLoadedPaymentModes = useRef10([]);
|
|
7986
8031
|
useEffect13(() => {
|
|
7987
8032
|
if (!paymentModes?.length) return;
|
|
7988
8033
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
@@ -8303,7 +8348,7 @@ var RAMP_PROVIDERS = {
|
|
|
8303
8348
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
8304
8349
|
|
|
8305
8350
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
8306
|
-
import { useCallback as useCallback8, useEffect as useEffect15, useRef as
|
|
8351
|
+
import { useCallback as useCallback8, useEffect as useEffect15, useRef as useRef11, useState as useState8 } from "react";
|
|
8307
8352
|
|
|
8308
8353
|
// src/internal/utils/debounce.ts
|
|
8309
8354
|
function debounce2(func, waitFor) {
|
|
@@ -8320,7 +8365,7 @@ var useSelectables = () => {
|
|
|
8320
8365
|
const [redirecting, setRedirecting] = useState8(false);
|
|
8321
8366
|
const [rampProvider, setrRampProvider] = useState8("binance");
|
|
8322
8367
|
const [minAmount, setMinAmount] = useState8(0);
|
|
8323
|
-
const inputRef =
|
|
8368
|
+
const inputRef = useRef11(null);
|
|
8324
8369
|
const [srcQueryAmount, setSrcQueryAmount] = useState8(0);
|
|
8325
8370
|
const [srcInputAmount, setSrcInputAmount] = useState8(0);
|
|
8326
8371
|
const [paymentMode, setPaymentMode] = useState8(null);
|
|
@@ -8396,7 +8441,7 @@ function BuyMenu() {
|
|
|
8396
8441
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8397
8442
|
import { useMutation as useMutation10, useQuery as useQuery7, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
8398
8443
|
import { AlertCircle as AlertCircle2, CheckCircle2, CloudDownload as CloudDownload2, Loader as Loader8, UserCircle as UserCircle2 } from "lucide-react";
|
|
8399
|
-
import { useEffect as
|
|
8444
|
+
import { useEffect as useEffect21 } from "react";
|
|
8400
8445
|
init_vaultClient();
|
|
8401
8446
|
|
|
8402
8447
|
// src/internal/components/KeyshareRestoreMenu/components/MethodSelector.tsx
|
|
@@ -8584,13 +8629,22 @@ function useOnRestoreSuccess() {
|
|
|
8584
8629
|
}
|
|
8585
8630
|
|
|
8586
8631
|
// src/internal/components/KeyshareRestoreMenu/hooks/useCreateBackup.ts
|
|
8587
|
-
init_iframe_manager();
|
|
8588
8632
|
import { useMutation as useMutation8, useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
8633
|
+
import { useEffect as useEffect17 } from "react";
|
|
8634
|
+
init_iframe_manager();
|
|
8589
8635
|
function useCreateBackup() {
|
|
8590
8636
|
const qc = useQueryClient6();
|
|
8591
8637
|
const session = useLumiaPassportSession((st) => st.session);
|
|
8592
8638
|
const address = useLumiaPassportSession((st) => st.address);
|
|
8593
|
-
const
|
|
8639
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8640
|
+
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8641
|
+
const { usePasskey, restorePassword, selectedCloudProvider, setSuccess, setError, setMethod } = useRestoreStore();
|
|
8642
|
+
useEffect17(() => {
|
|
8643
|
+
if (!hasServerVault) {
|
|
8644
|
+
setMethod("server");
|
|
8645
|
+
setIsDialogForced(true);
|
|
8646
|
+
}
|
|
8647
|
+
}, [hasServerVault, setIsDialogForced, setMethod]);
|
|
8594
8648
|
const passportUserId = session?.mpcUserId || "";
|
|
8595
8649
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
8596
8650
|
const { mutate: createPasswordBackup, isPending: isPasswordBackupCreating } = useMutation8({
|
|
@@ -8620,7 +8674,7 @@ function useCreateBackup() {
|
|
|
8620
8674
|
})
|
|
8621
8675
|
);
|
|
8622
8676
|
}
|
|
8623
|
-
onBackupSuccess
|
|
8677
|
+
onBackupSuccess();
|
|
8624
8678
|
} else {
|
|
8625
8679
|
setError(response.error || "Server backup failed");
|
|
8626
8680
|
}
|
|
@@ -8657,7 +8711,7 @@ function useCreateBackup() {
|
|
|
8657
8711
|
})
|
|
8658
8712
|
);
|
|
8659
8713
|
}
|
|
8660
|
-
onBackupSuccess
|
|
8714
|
+
onBackupSuccess();
|
|
8661
8715
|
},
|
|
8662
8716
|
onError: async (error) => {
|
|
8663
8717
|
setError(error?.message || "Backup creation failed");
|
|
@@ -8697,7 +8751,7 @@ function useCreateBackup() {
|
|
|
8697
8751
|
})
|
|
8698
8752
|
);
|
|
8699
8753
|
}
|
|
8700
|
-
onBackupSuccess
|
|
8754
|
+
onBackupSuccess();
|
|
8701
8755
|
},
|
|
8702
8756
|
onError: async (error) => {
|
|
8703
8757
|
setError(error?.message || "Backup creation failed");
|
|
@@ -8827,7 +8881,7 @@ function useRestoreAccount() {
|
|
|
8827
8881
|
}
|
|
8828
8882
|
|
|
8829
8883
|
// src/internal/components/KeyshareRestoreMenu/hooks/useValidateFileBackup.ts
|
|
8830
|
-
import { useEffect as
|
|
8884
|
+
import { useEffect as useEffect18 } from "react";
|
|
8831
8885
|
function validateRestoreFileFormat(parsedData) {
|
|
8832
8886
|
if (typeof parsedData !== "object" || parsedData === null) return false;
|
|
8833
8887
|
const data = parsedData;
|
|
@@ -8837,7 +8891,7 @@ function useValidateFileBackup() {
|
|
|
8837
8891
|
const restoreFile = useRestoreStore((st) => st.restoreFile);
|
|
8838
8892
|
const setError = useRestoreStore((st) => st.setError);
|
|
8839
8893
|
const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
|
|
8840
|
-
|
|
8894
|
+
useEffect18(() => {
|
|
8841
8895
|
if (!restoreFile) {
|
|
8842
8896
|
return;
|
|
8843
8897
|
}
|
|
@@ -8919,7 +8973,7 @@ function MethodSelector(props) {
|
|
|
8919
8973
|
},
|
|
8920
8974
|
children: [
|
|
8921
8975
|
/* @__PURE__ */ jsx38(Icon2, { className: "w-5 h-5 md:w-8 md:h-8" }),
|
|
8922
|
-
!!data?.lastBackup && /* @__PURE__ */ jsx38("div", { className: "w-6 h-6 absolute -top-2 -right-2 flex items-center justify-center bg-
|
|
8976
|
+
!!data?.lastBackup && /* @__PURE__ */ jsx38("div", { className: "w-6 h-6 absolute -top-2 -right-2 flex items-center justify-center bg-transparent", children: /* @__PURE__ */ jsx38(PositiveIcon, { className: "w-4 h-4" }) })
|
|
8923
8977
|
]
|
|
8924
8978
|
}
|
|
8925
8979
|
),
|
|
@@ -8931,39 +8985,12 @@ function MethodSelector(props) {
|
|
|
8931
8985
|
}
|
|
8932
8986
|
|
|
8933
8987
|
// src/internal/components/KeyshareRestoreMenu/components/NoBackupFound.tsx
|
|
8934
|
-
import { AlertCircle, FileUp as FileUp2,
|
|
8935
|
-
|
|
8936
|
-
// src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
|
|
8937
|
-
import { Eye, EyeOff, Info, Loader as Loader6 } from "lucide-react";
|
|
8938
|
-
import { useRef as useRef11 } from "react";
|
|
8939
|
-
|
|
8940
|
-
// src/internal/components/ui/checkbox.tsx
|
|
8941
|
-
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
8942
|
-
import { CheckIcon } from "lucide-react";
|
|
8943
|
-
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
8944
|
-
function Checkbox({ className, ...props }) {
|
|
8945
|
-
return /* @__PURE__ */ jsx39(
|
|
8946
|
-
CheckboxPrimitive.Root,
|
|
8947
|
-
{
|
|
8948
|
-
"data-slot": "checkbox",
|
|
8949
|
-
className: cn(
|
|
8950
|
-
"cursor-pointer peer size-5 shrink-0 rounded-[5px] outline-none",
|
|
8951
|
-
"border border-[var(--l-pass-bd)] data-[state=checked]:border-[var(--l-pass-bd-intense)] aria-invalid:border-[var(--l-pass-error)]",
|
|
8952
|
-
"bg-[var(--l-pass-secondary)] data-[state=checked]:bg-[var(--l-pass-secondary)]",
|
|
8953
|
-
"data-[state=checked]:text-[var(--l-pass-fg)]",
|
|
8954
|
-
"aria-invalid:ring-[var(--l-pass-error)]",
|
|
8955
|
-
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[2px]",
|
|
8956
|
-
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
8957
|
-
className
|
|
8958
|
-
),
|
|
8959
|
-
...props,
|
|
8960
|
-
children: /* @__PURE__ */ jsx39(CheckboxPrimitive.Indicator, { "data-slot": "checkbox-indicator", className: "grid place-content-center transition-none", children: /* @__PURE__ */ jsx39(CheckIcon, { className: "w-4 h-4 text-[var(--l-pass-fg)]" }) })
|
|
8961
|
-
}
|
|
8962
|
-
);
|
|
8963
|
-
}
|
|
8988
|
+
import { AlertCircle, FileUp as FileUp2, Upload, User as User2 } from "lucide-react";
|
|
8964
8989
|
|
|
8965
8990
|
// src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
|
|
8966
|
-
import {
|
|
8991
|
+
import { ChevronRight as ChevronRight2, Eye, EyeOff, Info, Loader as Loader6 } from "lucide-react";
|
|
8992
|
+
import { useRef as useRef12 } from "react";
|
|
8993
|
+
import { Fragment as Fragment8, jsx as jsx39, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
8967
8994
|
function PasswordPasskey(props) {
|
|
8968
8995
|
const {
|
|
8969
8996
|
mode = "restore",
|
|
@@ -8974,11 +9001,17 @@ function PasswordPasskey(props) {
|
|
|
8974
9001
|
isEncryptionMethod,
|
|
8975
9002
|
actionHandler
|
|
8976
9003
|
} = props;
|
|
8977
|
-
const
|
|
8978
|
-
const
|
|
9004
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
9005
|
+
const actionRef = useRef12(null);
|
|
9006
|
+
const { showPassword, restorePassword, usePasskey, error, setRestorePassword, setShowPassword } = useRestoreStore();
|
|
8979
9007
|
return /* @__PURE__ */ jsxs31(Fragment8, { children: [
|
|
9008
|
+
!hasServerVault && /* @__PURE__ */ jsxs31("span", { className: "block w-full text-[10px] leading-4 px-[var(--l-pass-pd)] truncate", children: [
|
|
9009
|
+
"Use your ",
|
|
9010
|
+
/* @__PURE__ */ jsx39("strong", { children: usePasskey ? "Passkey" : "Password" }),
|
|
9011
|
+
" to complete account security setup."
|
|
9012
|
+
] }),
|
|
8980
9013
|
!usePasskey ? /* @__PURE__ */ jsxs31("div", { className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
8981
|
-
/* @__PURE__ */
|
|
9014
|
+
/* @__PURE__ */ jsx39(
|
|
8982
9015
|
Input,
|
|
8983
9016
|
{
|
|
8984
9017
|
autoComplete: "off",
|
|
@@ -8994,7 +9027,7 @@ function PasswordPasskey(props) {
|
|
|
8994
9027
|
onKeyDown: (e) => {
|
|
8995
9028
|
if (e.key === "Enter" && !isLoading && restorePassword) actionRef.current?.click();
|
|
8996
9029
|
},
|
|
8997
|
-
element: /* @__PURE__ */
|
|
9030
|
+
element: /* @__PURE__ */ jsx39(
|
|
8998
9031
|
Button,
|
|
8999
9032
|
{
|
|
9000
9033
|
variant: "ghost",
|
|
@@ -9003,12 +9036,12 @@ function PasswordPasskey(props) {
|
|
|
9003
9036
|
title: "Toggle Password Visibility",
|
|
9004
9037
|
disabled: isLoading || disabled,
|
|
9005
9038
|
onClick: () => setShowPassword(!showPassword),
|
|
9006
|
-
children: showPassword ? /* @__PURE__ */
|
|
9039
|
+
children: showPassword ? /* @__PURE__ */ jsx39(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx39(Eye, { className: "h-4 w-4" })
|
|
9007
9040
|
}
|
|
9008
9041
|
)
|
|
9009
9042
|
}
|
|
9010
9043
|
),
|
|
9011
|
-
/* @__PURE__ */
|
|
9044
|
+
/* @__PURE__ */ jsx39(
|
|
9012
9045
|
Button,
|
|
9013
9046
|
{
|
|
9014
9047
|
ref: actionRef,
|
|
@@ -9018,7 +9051,7 @@ function PasswordPasskey(props) {
|
|
|
9018
9051
|
title: actionCaption,
|
|
9019
9052
|
disabled: isLoading || disabled || error?.includes("Invalid backup file") || !usePasskey && !restorePassword,
|
|
9020
9053
|
className: "w-full w-12 h-12 flex-shrink-0 rounded-[var(--l-pass-el-bdrs)]",
|
|
9021
|
-
children: isLoading ? /* @__PURE__ */
|
|
9054
|
+
children: isLoading ? /* @__PURE__ */ jsx39(Loader6, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ jsx39(ChevronRight2, { className: "h-4 w-4" })
|
|
9022
9055
|
}
|
|
9023
9056
|
)
|
|
9024
9057
|
] }) : /* @__PURE__ */ jsxs31(
|
|
@@ -9032,54 +9065,35 @@ function PasswordPasskey(props) {
|
|
|
9032
9065
|
disabled: isLoading || disabled || !!error || !usePasskey && !restorePassword,
|
|
9033
9066
|
className: "w-full",
|
|
9034
9067
|
children: [
|
|
9035
|
-
isLoading ? /* @__PURE__ */
|
|
9036
|
-
!isLoading && /* @__PURE__ */
|
|
9068
|
+
isLoading ? /* @__PURE__ */ jsx39(Loader6, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ jsx39(ActionIcon, { className: "h-4 w-4" }),
|
|
9069
|
+
!isLoading && /* @__PURE__ */ jsx39("span", { children: actionCaption })
|
|
9037
9070
|
]
|
|
9038
9071
|
}
|
|
9039
9072
|
),
|
|
9040
|
-
!isEncryptionMethod && /* @__PURE__ */
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
/* @__PURE__ */
|
|
9044
|
-
|
|
9045
|
-
|
|
9046
|
-
/* @__PURE__ */
|
|
9047
|
-
"
|
|
9048
|
-
|
|
9049
|
-
"
|
|
9050
|
-
|
|
9051
|
-
|
|
9052
|
-
|
|
9053
|
-
|
|
9054
|
-
className: "inline font-bold underline underline-offset-2",
|
|
9055
|
-
children: "Learn more about Google Passkey"
|
|
9056
|
-
}
|
|
9057
|
-
)
|
|
9058
|
-
] })
|
|
9059
|
-
] })
|
|
9060
|
-
] }),
|
|
9061
|
-
/* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9062
|
-
/* @__PURE__ */ jsx40(
|
|
9063
|
-
Checkbox,
|
|
9064
|
-
{
|
|
9065
|
-
id: "use-backup-password-or-passkey",
|
|
9066
|
-
name: "use-backup-password-checkbox",
|
|
9067
|
-
checked: usePasskey,
|
|
9068
|
-
disabled: isLoading || disabled || !!error,
|
|
9069
|
-
onCheckedChange: (checked) => {
|
|
9070
|
-
if (!!checked) setRestorePassword("");
|
|
9071
|
-
setUsePasskey(!!checked);
|
|
9073
|
+
!isEncryptionMethod && !!usePasskey && /* @__PURE__ */ jsx39(Highlight, { type: "info", className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-[10px]", children: mode === "backup" && /* @__PURE__ */ jsxs31("div", { className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9074
|
+
/* @__PURE__ */ jsx39(Info, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9075
|
+
/* @__PURE__ */ jsxs31("span", { className: "text-[var(--l-pass-fg-muted)] block flex-1", children: [
|
|
9076
|
+
/* @__PURE__ */ jsx39("span", { className: "block mb-1", children: "Your Backup must be encrypted with a password or a passkey, so only you can decrypt it no matter where backup is stored." }),
|
|
9077
|
+
/* @__PURE__ */ jsxs31("span", { className: "block", children: [
|
|
9078
|
+
" Passkeys are a password-free alternative. ",
|
|
9079
|
+
/* @__PURE__ */ jsx39(
|
|
9080
|
+
"a",
|
|
9081
|
+
{
|
|
9082
|
+
target: "_blank",
|
|
9083
|
+
rel: "noopener noreferrer",
|
|
9084
|
+
href: "https://safety.google/safety/authentication/passkey/",
|
|
9085
|
+
className: "inline font-bold underline underline-offset-2 text-[var(--l-pass-fg)] hover:text-[var(--l-pass-fg-h)] active:text-[var(--l-pass-fg-a)]",
|
|
9086
|
+
children: "(Learn more about Google Passkey)"
|
|
9072
9087
|
}
|
|
9073
|
-
|
|
9074
|
-
)
|
|
9075
|
-
/* @__PURE__ */ jsx40("label", { htmlFor: "use-backup-password-or-passkey", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use Passkey to encrypt your keyshare backup" })
|
|
9088
|
+
)
|
|
9089
|
+
] })
|
|
9076
9090
|
] })
|
|
9077
|
-
] })
|
|
9091
|
+
] }) })
|
|
9078
9092
|
] });
|
|
9079
9093
|
}
|
|
9080
9094
|
|
|
9081
9095
|
// src/internal/components/KeyshareRestoreMenu/components/NoBackupFound.tsx
|
|
9082
|
-
import { Fragment as Fragment9, jsx as
|
|
9096
|
+
import { Fragment as Fragment9, jsx as jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
9083
9097
|
function NoBackupFound(props) {
|
|
9084
9098
|
const { isLoading, restoreFromFile } = props;
|
|
9085
9099
|
const restoreFile = useRestoreStore((st) => st.restoreFile);
|
|
@@ -9089,37 +9103,32 @@ function NoBackupFound(props) {
|
|
|
9089
9103
|
const setError = useRestoreStore((st) => st.setError);
|
|
9090
9104
|
useValidateFileBackup();
|
|
9091
9105
|
return /* @__PURE__ */ jsxs32(Fragment9, { children: [
|
|
9106
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
9107
|
+
/* @__PURE__ */ jsx40(User2, { className: "w-6 h-6" }),
|
|
9108
|
+
/* @__PURE__ */ jsx40("span", { className: "font-bold text-xl leading-6", children: "Account Recovery" })
|
|
9109
|
+
] }),
|
|
9092
9110
|
!restoreFile && /* @__PURE__ */ jsxs32(Highlight, { type: "warning", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
9093
|
-
/* @__PURE__ */
|
|
9111
|
+
/* @__PURE__ */ jsx40(AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
9094
9112
|
/* @__PURE__ */ jsxs32("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
|
|
9095
|
-
/* @__PURE__ */
|
|
9113
|
+
/* @__PURE__ */ jsx40("span", { className: "block w-full text-sm leading-4 font-bold", children: "No Backup Found" }),
|
|
9096
9114
|
/* @__PURE__ */ jsxs32("span", { className: "block w-full text-xs", children: [
|
|
9097
|
-
"
|
|
9098
|
-
/* @__PURE__ */
|
|
9099
|
-
"If you are using any other device but the one where you created your account, try using the original device to create a backup, then restore account access on current device with created backup."
|
|
9115
|
+
/* @__PURE__ */ jsx40("span", { className: "block mb-1", children: "This device doesn't have access to your wallet keyshare, and no backup was found." }),
|
|
9116
|
+
/* @__PURE__ */ jsx40("span", { className: "block w-full", children: "If you're using a different device, please return to the one where you created your account to create a backup, then restore access on this device." })
|
|
9100
9117
|
] })
|
|
9101
9118
|
] })
|
|
9102
9119
|
] }),
|
|
9103
|
-
restoreFile
|
|
9104
|
-
/* @__PURE__ */
|
|
9105
|
-
/* @__PURE__ */
|
|
9106
|
-
] }) : /* @__PURE__ */ jsxs32("div", { className: "w-full flex items-center", children: [
|
|
9107
|
-
/* @__PURE__ */ jsx41("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
9108
|
-
/* @__PURE__ */ jsx41("div", { className: "flex-none font-bold px-2 text-xs leading-4", children: "Account Recovery" }),
|
|
9109
|
-
/* @__PURE__ */ jsx41("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
9110
|
-
] }),
|
|
9111
|
-
!restoreFile && /* @__PURE__ */ jsxs32(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9112
|
-
/* @__PURE__ */ jsx41(Upload, { className: "h-4 w-4 flex-0" }),
|
|
9113
|
-
/* @__PURE__ */ jsx41("span", { className: "block w-full text-xs", children: "Upload a backup file if you have one" })
|
|
9120
|
+
!restoreFile && /* @__PURE__ */ jsxs32(Highlight, { type: "info", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9121
|
+
/* @__PURE__ */ jsx40(Upload, { className: "h-4 w-4 flex-0" }),
|
|
9122
|
+
/* @__PURE__ */ jsx40("span", { className: "block w-full text-xs", children: "Upload a backup file if you have one" })
|
|
9114
9123
|
] }),
|
|
9115
|
-
/* @__PURE__ */
|
|
9124
|
+
/* @__PURE__ */ jsx40(
|
|
9116
9125
|
"label",
|
|
9117
9126
|
{
|
|
9118
9127
|
className: cn(
|
|
9119
|
-
"block w-full
|
|
9120
|
-
"p-[var(--l-pass-
|
|
9128
|
+
"block w-full flex items-center justify-center cursor-pointer",
|
|
9129
|
+
"p-[var(--l-pass-gap)] bg-[var(--l-pass-secondary)] rounded-[var(--l-pass-el-bdrs)]"
|
|
9121
9130
|
),
|
|
9122
|
-
children: /* @__PURE__ */
|
|
9131
|
+
children: /* @__PURE__ */ jsx40(
|
|
9123
9132
|
"input",
|
|
9124
9133
|
{
|
|
9125
9134
|
type: "file",
|
|
@@ -9131,16 +9140,16 @@ function NoBackupFound(props) {
|
|
|
9131
9140
|
className: cn(
|
|
9132
9141
|
"file:cursor-pointer",
|
|
9133
9142
|
"transition-colors duration-200 ease-in-out",
|
|
9134
|
-
"block w-
|
|
9135
|
-
"file:
|
|
9143
|
+
"block w-full font-medium font-mono",
|
|
9144
|
+
"file:h-12 file:text-[16px] file:bg-[var(--l-pass-primary)] file:text-[var(--l-pass-fg-inverted)]",
|
|
9136
9145
|
"file:hover:opacity-90 file:active:opacity-80",
|
|
9137
|
-
"file:mr-[var(--l-pass-
|
|
9146
|
+
"file:mr-[var(--l-pass-gap)] file:px-[var(--l-pass-pd)] file:rounded-[var(--l-pass-el-bdrs)] file:border-0"
|
|
9138
9147
|
)
|
|
9139
9148
|
}
|
|
9140
9149
|
)
|
|
9141
9150
|
}
|
|
9142
9151
|
),
|
|
9143
|
-
restoreFile && /* @__PURE__ */
|
|
9152
|
+
restoreFile && /* @__PURE__ */ jsx40(
|
|
9144
9153
|
PasswordPasskey,
|
|
9145
9154
|
{
|
|
9146
9155
|
mode: "restore",
|
|
@@ -9156,39 +9165,130 @@ function NoBackupFound(props) {
|
|
|
9156
9165
|
|
|
9157
9166
|
// src/internal/components/KeyshareRestoreMenu/methods/File.tsx
|
|
9158
9167
|
import { ArrowLeft as ArrowLeft6, FileDown as FileDown2, FileUp as FileUp3 } from "lucide-react";
|
|
9159
|
-
|
|
9168
|
+
|
|
9169
|
+
// src/internal/components/ui/switch.tsx
|
|
9170
|
+
import { forwardRef as forwardRef4, useState as useState10 } from "react";
|
|
9171
|
+
import { jsx as jsx41, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
9172
|
+
var Switch = forwardRef4((props, ref) => {
|
|
9173
|
+
const { className, labels, ...inputProps } = props;
|
|
9174
|
+
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
9175
|
+
const [labelW, setLabelW] = useState10(0);
|
|
9176
|
+
return /* @__PURE__ */ jsx41(
|
|
9177
|
+
"div",
|
|
9178
|
+
{
|
|
9179
|
+
role: "switch",
|
|
9180
|
+
"aria-checked": inputProps.checked,
|
|
9181
|
+
className: cn(
|
|
9182
|
+
"block rounded-full w-fit h-7 p-1 outline-none flex-none",
|
|
9183
|
+
inputProps.checked ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-info)]",
|
|
9184
|
+
className
|
|
9185
|
+
),
|
|
9186
|
+
children: /* @__PURE__ */ jsxs33(
|
|
9187
|
+
"label",
|
|
9188
|
+
{
|
|
9189
|
+
className: "relative inline-block h-5 outline-none",
|
|
9190
|
+
style: {
|
|
9191
|
+
width: `calc(20px + ${labelW}px)`,
|
|
9192
|
+
transition: "width 200ms ease",
|
|
9193
|
+
cursor: inputProps.disabled ? "not-allowed" : "pointer"
|
|
9194
|
+
},
|
|
9195
|
+
children: [
|
|
9196
|
+
/* @__PURE__ */ jsx41("input", { type: "checkbox", className: "hidden sr-only peer outline-none", ref, ...inputProps }),
|
|
9197
|
+
/* @__PURE__ */ jsx41(
|
|
9198
|
+
"span",
|
|
9199
|
+
{
|
|
9200
|
+
ref: (inst) => {
|
|
9201
|
+
if (inst) setLabelW(inst.clientWidth);
|
|
9202
|
+
},
|
|
9203
|
+
style: {
|
|
9204
|
+
left: inputProps.checked ? "0px" : "20px",
|
|
9205
|
+
color: inputProps.checked ? colorMode === "dark" ? "var(--l-pass-fg-inverted)" : "var(--l-pass-fg)" : "var(--l-pass-fg)",
|
|
9206
|
+
transition: "left 200ms ease"
|
|
9207
|
+
},
|
|
9208
|
+
className: "absolute top-0 px-2 text-xs leading-5 font-semibold min-w-5 select-none",
|
|
9209
|
+
children: inputProps.checked ? labels?.checked : labels?.unchecked
|
|
9210
|
+
}
|
|
9211
|
+
),
|
|
9212
|
+
/* @__PURE__ */ jsx41(
|
|
9213
|
+
"span",
|
|
9214
|
+
{
|
|
9215
|
+
style: {
|
|
9216
|
+
left: inputProps.checked ? `${labelW}px` : "0px",
|
|
9217
|
+
transition: "left 200ms ease"
|
|
9218
|
+
},
|
|
9219
|
+
className: cn("absolute top-0 w-5 h-5 rounded-full bg-[var(--l-pass-fg)]", {
|
|
9220
|
+
// 'bg-[var(--l-pass-fg-inverted)]': inputProps.checked,
|
|
9221
|
+
// 'bg-[var(--l-pass-fg)]': !inputProps.checked
|
|
9222
|
+
})
|
|
9223
|
+
}
|
|
9224
|
+
)
|
|
9225
|
+
]
|
|
9226
|
+
}
|
|
9227
|
+
)
|
|
9228
|
+
}
|
|
9229
|
+
);
|
|
9230
|
+
});
|
|
9231
|
+
Switch.displayName = "Switch";
|
|
9232
|
+
|
|
9233
|
+
// src/internal/components/KeyshareRestoreMenu/methods/File.tsx
|
|
9234
|
+
import { Fragment as Fragment10, jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
9160
9235
|
function File2(props) {
|
|
9161
9236
|
const { isLoading, mode = "restore", fileHandler } = props;
|
|
9162
|
-
const {
|
|
9237
|
+
const {
|
|
9238
|
+
restoreFile,
|
|
9239
|
+
error,
|
|
9240
|
+
usePasskey,
|
|
9241
|
+
setRestorePassword,
|
|
9242
|
+
setMethod,
|
|
9243
|
+
setRestoreFile,
|
|
9244
|
+
setUsePasskey,
|
|
9245
|
+
setError,
|
|
9246
|
+
setSuccess
|
|
9247
|
+
} = useRestoreStore();
|
|
9163
9248
|
useValidateFileBackup();
|
|
9164
9249
|
const actionText = mode === "backup" ? "Download" : "Restore with";
|
|
9165
9250
|
const isPasswordPasskey = mode === "restore" && !!restoreFile || mode === "backup";
|
|
9166
|
-
return /* @__PURE__ */
|
|
9167
|
-
/* @__PURE__ */
|
|
9168
|
-
/* @__PURE__ */
|
|
9169
|
-
|
|
9251
|
+
return /* @__PURE__ */ jsxs34(Fragment10, { children: [
|
|
9252
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between", children: [
|
|
9253
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9254
|
+
/* @__PURE__ */ jsx42(
|
|
9255
|
+
Button,
|
|
9256
|
+
{
|
|
9257
|
+
variant: "ghost",
|
|
9258
|
+
size: "icon",
|
|
9259
|
+
title: "Back",
|
|
9260
|
+
onClick: () => {
|
|
9261
|
+
setRestoreFile(null);
|
|
9262
|
+
setError(null);
|
|
9263
|
+
setSuccess(null);
|
|
9264
|
+
setUsePasskey(false);
|
|
9265
|
+
setMethod(null);
|
|
9266
|
+
},
|
|
9267
|
+
children: /* @__PURE__ */ jsx42(ArrowLeft6, { className: "h-4 w-4" })
|
|
9268
|
+
}
|
|
9269
|
+
),
|
|
9270
|
+
/* @__PURE__ */ jsx42("span", { className: "text-xl font-semibold", children: `${mode === "restore" ? "Restore with" : ""} File ${mode === "restore" ? "by" : "Backup by"}`.trim() })
|
|
9271
|
+
] }),
|
|
9272
|
+
mode !== "restore" && /* @__PURE__ */ jsx42(
|
|
9273
|
+
Switch,
|
|
9170
9274
|
{
|
|
9171
|
-
|
|
9172
|
-
|
|
9173
|
-
|
|
9174
|
-
|
|
9175
|
-
|
|
9176
|
-
|
|
9177
|
-
|
|
9178
|
-
|
|
9179
|
-
setMethod(null);
|
|
9180
|
-
},
|
|
9181
|
-
children: /* @__PURE__ */ jsx42(ArrowLeft6, { className: "h-4 w-4" })
|
|
9275
|
+
name: "password-passkey-toggle",
|
|
9276
|
+
labels: { checked: "Password", unchecked: "Passkey" },
|
|
9277
|
+
disabled: isLoading || !!error,
|
|
9278
|
+
checked: !usePasskey,
|
|
9279
|
+
onChange: (e) => {
|
|
9280
|
+
if (!!e.target.checked) setRestorePassword("");
|
|
9281
|
+
setUsePasskey(!e.target.checked);
|
|
9282
|
+
}
|
|
9182
9283
|
}
|
|
9183
|
-
)
|
|
9184
|
-
/* @__PURE__ */ jsx42("span", { className: "text-xl font-semibold", children: `${mode === "restore" ? "Restore with" : "Create"} File ${mode === "restore" ? "" : "Backup"}`.trim() })
|
|
9284
|
+
)
|
|
9185
9285
|
] }),
|
|
9186
9286
|
mode === "restore" && /* @__PURE__ */ jsx42(
|
|
9187
9287
|
"label",
|
|
9188
9288
|
{
|
|
9189
9289
|
className: cn(
|
|
9190
|
-
"block w-full
|
|
9191
|
-
"p-[var(--l-pass-
|
|
9290
|
+
"block w-full flex items-center justify-center cursor-pointer",
|
|
9291
|
+
"p-[var(--l-pass-gap)] bg-[var(--l-pass-secondary)] rounded-[var(--l-pass-el-bdrs)]"
|
|
9192
9292
|
),
|
|
9193
9293
|
children: /* @__PURE__ */ jsx42(
|
|
9194
9294
|
"input",
|
|
@@ -9202,9 +9302,9 @@ function File2(props) {
|
|
|
9202
9302
|
className: cn(
|
|
9203
9303
|
"file:cursor-pointer",
|
|
9204
9304
|
"transition-colors duration-200 ease-in-out",
|
|
9205
|
-
"block w-
|
|
9305
|
+
"block w-full file:h-12 text-xs file:bg-[var(--l-pass-primary)] file:text-[var(--l-pass-fg-inverted)]",
|
|
9206
9306
|
"file:hover:opacity-90 file:active:opacity-80",
|
|
9207
|
-
"file:mr-[var(--l-pass-
|
|
9307
|
+
"file:mr-[var(--l-pass-gap)] file:px-[var(--l-pass-pd)] file:rounded-[var(--l-pass-el-bdrs)] file:border-0 text-xs font-medium"
|
|
9208
9308
|
)
|
|
9209
9309
|
}
|
|
9210
9310
|
)
|
|
@@ -9229,57 +9329,75 @@ function File2(props) {
|
|
|
9229
9329
|
import { useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
9230
9330
|
import dayjs from "dayjs";
|
|
9231
9331
|
import { ArrowLeft as ArrowLeft7, Download, Key as Key4, Upload as Upload2 } from "lucide-react";
|
|
9232
|
-
import { useEffect as
|
|
9233
|
-
import { Fragment as Fragment11, jsx as jsx43, jsxs as
|
|
9332
|
+
import { useEffect as useEffect19 } from "react";
|
|
9333
|
+
import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
9234
9334
|
function Server(props) {
|
|
9235
9335
|
const { isLoading, mode = "restore", serverHandler } = props;
|
|
9236
9336
|
const qc = useQueryClient7();
|
|
9237
9337
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9238
|
-
const
|
|
9338
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
9339
|
+
const { usePasskey, error, setUsePasskey, setRestorePassword, setShowPassword, setMethod, setError, setSuccess } = useRestoreStore();
|
|
9239
9340
|
const serverRecoveryStatus = qc.getQueryData([CHECK_BACKUP_QUERY_KEY, address]);
|
|
9240
|
-
|
|
9341
|
+
useEffect19(() => {
|
|
9241
9342
|
if (mode === "backup" || !serverRecoveryStatus?.created?.encryptionMethod) return;
|
|
9242
9343
|
setUsePasskey(serverRecoveryStatus.created.encryptionMethod === "passkey");
|
|
9243
9344
|
}, [mode, serverRecoveryStatus, setUsePasskey]);
|
|
9244
|
-
|
|
9245
|
-
|
|
9246
|
-
|
|
9247
|
-
|
|
9345
|
+
const isEncryptionMethod = mode === "restore" && !!serverRecoveryStatus?.created?.encryptionMethod;
|
|
9346
|
+
return /* @__PURE__ */ jsxs35(Fragment11, { children: [
|
|
9347
|
+
/* @__PURE__ */ jsxs35("div", { className: cn("flex items-center justify-between", { "px-[var(--l-pass-pd)]": !hasServerVault }), children: [
|
|
9348
|
+
/* @__PURE__ */ jsxs35("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9349
|
+
!!hasServerVault && /* @__PURE__ */ jsx43(
|
|
9350
|
+
Button,
|
|
9351
|
+
{
|
|
9352
|
+
variant: "ghost",
|
|
9353
|
+
size: "icon",
|
|
9354
|
+
title: "Back",
|
|
9355
|
+
onClick: () => {
|
|
9356
|
+
setShowPassword(false);
|
|
9357
|
+
setUsePasskey(false);
|
|
9358
|
+
setRestorePassword("");
|
|
9359
|
+
setUsePasskey(false);
|
|
9360
|
+
setError(null);
|
|
9361
|
+
setSuccess(null);
|
|
9362
|
+
setMethod(null);
|
|
9363
|
+
},
|
|
9364
|
+
children: /* @__PURE__ */ jsx43(ArrowLeft7, { className: "h-4 w-4" })
|
|
9365
|
+
}
|
|
9366
|
+
),
|
|
9367
|
+
/* @__PURE__ */ jsx43("span", { className: "text-xl font-semibold", children: mode === "restore" ? "Restore with" : usePasskey ? "Passkey" : "Password" })
|
|
9368
|
+
] }),
|
|
9369
|
+
!isEncryptionMethod && /* @__PURE__ */ jsx43(
|
|
9370
|
+
Switch,
|
|
9248
9371
|
{
|
|
9249
|
-
|
|
9250
|
-
|
|
9251
|
-
|
|
9252
|
-
|
|
9253
|
-
|
|
9254
|
-
|
|
9255
|
-
setRestorePassword("");
|
|
9256
|
-
setUsePasskey(
|
|
9257
|
-
|
|
9258
|
-
setSuccess(null);
|
|
9259
|
-
setMethod(null);
|
|
9260
|
-
},
|
|
9261
|
-
children: /* @__PURE__ */ jsx43(ArrowLeft7, { className: "h-4 w-4" })
|
|
9372
|
+
name: "password-passkey-toggle",
|
|
9373
|
+
labels: { checked: "Password", unchecked: "Passkey" },
|
|
9374
|
+
disabled: isLoading,
|
|
9375
|
+
checked: !usePasskey,
|
|
9376
|
+
onChange: (e) => {
|
|
9377
|
+
if (!!error) setError(null);
|
|
9378
|
+
if (!!e.target.checked) setRestorePassword("");
|
|
9379
|
+
setUsePasskey(!e.target.checked);
|
|
9380
|
+
}
|
|
9262
9381
|
}
|
|
9263
|
-
)
|
|
9264
|
-
/* @__PURE__ */ jsx43("span", { className: "text-xl font-semibold", children: `${mode === "restore" ? "Restore with" : "Create"} ${usePasskey ? "Passkey" : "Password"} ${mode === "restore" ? "" : "Backup"}`.trim() })
|
|
9382
|
+
)
|
|
9265
9383
|
] }),
|
|
9266
9384
|
/* @__PURE__ */ jsx43(
|
|
9267
9385
|
PasswordPasskey,
|
|
9268
9386
|
{
|
|
9269
9387
|
mode,
|
|
9270
|
-
isEncryptionMethod
|
|
9388
|
+
isEncryptionMethod,
|
|
9271
9389
|
isLoading,
|
|
9272
|
-
actionCaption: mode === "backup" ? "Create Backup" : "Restore from Vault",
|
|
9390
|
+
actionCaption: mode === "backup" ? "Create Vault Backup" : "Restore from Vault",
|
|
9273
9391
|
actionIcon: mode === "backup" ? Upload2 : Download,
|
|
9274
9392
|
actionHandler: () => serverHandler()
|
|
9275
9393
|
}
|
|
9276
9394
|
),
|
|
9277
|
-
!!serverRecoveryStatus?.created?.at && /* @__PURE__ */
|
|
9395
|
+
!!serverRecoveryStatus?.created?.at && /* @__PURE__ */ jsxs35(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9278
9396
|
serverRecoveryStatus.created.encryptionMethod === "password" ? /* @__PURE__ */ jsx43(OtpIcon, { className: "w-4 h-4 inline" }) : /* @__PURE__ */ jsx43(Key4, { className: "w-4 h-4 inline" }),
|
|
9279
|
-
/* @__PURE__ */
|
|
9397
|
+
/* @__PURE__ */ jsxs35("span", { className: "text-[10px] flex-1 block", children: [
|
|
9280
9398
|
/* @__PURE__ */ jsx43("span", { children: `We found a ${serverRecoveryStatus.created.encryptionMethod?.toUpperCase()} Backup` }),
|
|
9281
9399
|
/* @__PURE__ */ jsx43("br", {}),
|
|
9282
|
-
/* @__PURE__ */
|
|
9400
|
+
/* @__PURE__ */ jsxs35("span", { children: [
|
|
9283
9401
|
"Created: ",
|
|
9284
9402
|
/* @__PURE__ */ jsx43("span", { className: "font-mono", children: dayjs(serverRecoveryStatus.created.at).format("MMMM DD, YYYY HH:mm") })
|
|
9285
9403
|
] })
|
|
@@ -9291,12 +9409,12 @@ function Server(props) {
|
|
|
9291
9409
|
// src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx
|
|
9292
9410
|
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
9293
9411
|
import { ArrowLeft as ArrowLeft8, CloudDownload, CloudUpload, Loader as Loader7 } from "lucide-react";
|
|
9294
|
-
import { useEffect as
|
|
9412
|
+
import { useEffect as useEffect20 } from "react";
|
|
9295
9413
|
|
|
9296
9414
|
// src/internal/components/ui/select.tsx
|
|
9297
9415
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
9298
|
-
import { CheckIcon
|
|
9299
|
-
import { jsx as jsx44, jsxs as
|
|
9416
|
+
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
9417
|
+
import { jsx as jsx44, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
9300
9418
|
function Select({ ...props }) {
|
|
9301
9419
|
return /* @__PURE__ */ jsx44(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
9302
9420
|
}
|
|
@@ -9309,7 +9427,7 @@ function SelectTrigger({
|
|
|
9309
9427
|
children,
|
|
9310
9428
|
...props
|
|
9311
9429
|
}) {
|
|
9312
|
-
return /* @__PURE__ */
|
|
9430
|
+
return /* @__PURE__ */ jsxs36(
|
|
9313
9431
|
SelectPrimitive.Trigger,
|
|
9314
9432
|
{
|
|
9315
9433
|
"data-slot": "select-trigger",
|
|
@@ -9338,7 +9456,7 @@ function SelectContent({
|
|
|
9338
9456
|
...props
|
|
9339
9457
|
}) {
|
|
9340
9458
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
9341
|
-
return /* @__PURE__ */ jsx44(SelectPrimitive.Portal, { children: /* @__PURE__ */
|
|
9459
|
+
return /* @__PURE__ */ jsx44(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs36(
|
|
9342
9460
|
SelectPrimitive.Content,
|
|
9343
9461
|
{
|
|
9344
9462
|
"data-slot": "select-content",
|
|
@@ -9376,7 +9494,7 @@ function SelectContent({
|
|
|
9376
9494
|
) });
|
|
9377
9495
|
}
|
|
9378
9496
|
function SelectItem({ className, children, ...props }) {
|
|
9379
|
-
return /* @__PURE__ */
|
|
9497
|
+
return /* @__PURE__ */ jsxs36(
|
|
9380
9498
|
SelectPrimitive.Item,
|
|
9381
9499
|
{
|
|
9382
9500
|
"data-slot": "select-item",
|
|
@@ -9386,7 +9504,7 @@ function SelectItem({ className, children, ...props }) {
|
|
|
9386
9504
|
),
|
|
9387
9505
|
...props,
|
|
9388
9506
|
children: [
|
|
9389
|
-
/* @__PURE__ */ jsx44("span", { "data-slot": "select-item-indicator", className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx44(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx44(
|
|
9507
|
+
/* @__PURE__ */ jsx44("span", { "data-slot": "select-item-indicator", className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx44(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx44(CheckIcon, { className: "size-4" }) }) }),
|
|
9390
9508
|
/* @__PURE__ */ jsx44(SelectPrimitive.ItemText, { children })
|
|
9391
9509
|
]
|
|
9392
9510
|
}
|
|
@@ -9419,7 +9537,7 @@ function SelectScrollDownButton({
|
|
|
9419
9537
|
}
|
|
9420
9538
|
|
|
9421
9539
|
// src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx
|
|
9422
|
-
import { Fragment as Fragment12, jsx as jsx45, jsxs as
|
|
9540
|
+
import { Fragment as Fragment12, jsx as jsx45, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
9423
9541
|
function Cloud2(props) {
|
|
9424
9542
|
const { isLoading, mode = "restore", cloudHandler } = props;
|
|
9425
9543
|
const session = useLumiaPassportSession((st) => st.session);
|
|
@@ -9439,7 +9557,7 @@ function Cloud2(props) {
|
|
|
9439
9557
|
return availableProviders.map((p) => ({ id: p.id, name: p.name, available: p.isAvailable() }));
|
|
9440
9558
|
}
|
|
9441
9559
|
});
|
|
9442
|
-
|
|
9560
|
+
useEffect20(() => {
|
|
9443
9561
|
if (isCloudProvidersLoading) return;
|
|
9444
9562
|
if (!!cloudProvidersError) {
|
|
9445
9563
|
console.error("[KeyshareBackup] Failed to load cloud providers:", cloudProvidersError);
|
|
@@ -9447,8 +9565,8 @@ function Cloud2(props) {
|
|
|
9447
9565
|
}
|
|
9448
9566
|
if (cloudProviders.length > 0 && !selectedCloudProvider) setSelectedCloudProvider(cloudProviders[0].id);
|
|
9449
9567
|
}, [cloudProviders, selectedCloudProvider, cloudProvidersError, isCloudProvidersLoading]);
|
|
9450
|
-
return /* @__PURE__ */
|
|
9451
|
-
/* @__PURE__ */
|
|
9568
|
+
return /* @__PURE__ */ jsxs37(Fragment12, { children: [
|
|
9569
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9452
9570
|
/* @__PURE__ */ jsx45(
|
|
9453
9571
|
Button,
|
|
9454
9572
|
{
|
|
@@ -9468,7 +9586,7 @@ function Cloud2(props) {
|
|
|
9468
9586
|
] }),
|
|
9469
9587
|
isCloudProvidersLoading && /* @__PURE__ */ jsx45(Loader7, { className: "animate-spin w-4 h-4 mx-auto" }),
|
|
9470
9588
|
/* @__PURE__ */ jsx45("span", { className: "block text-[10px] text-[var(--l-pass-fg-muted)]", children: "1. Select Cloud Backup Vault" }),
|
|
9471
|
-
/* @__PURE__ */
|
|
9589
|
+
/* @__PURE__ */ jsxs37(
|
|
9472
9590
|
Select,
|
|
9473
9591
|
{
|
|
9474
9592
|
disabled: isCloudProvidersLoading,
|
|
@@ -9505,7 +9623,7 @@ function Cloud2(props) {
|
|
|
9505
9623
|
}
|
|
9506
9624
|
|
|
9507
9625
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
9508
|
-
import { Fragment as Fragment13, jsx as jsx46, jsxs as
|
|
9626
|
+
import { Fragment as Fragment13, jsx as jsx46, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
9509
9627
|
var RESTORE_COMPONENTS = {
|
|
9510
9628
|
server: Server,
|
|
9511
9629
|
cloud: Cloud2,
|
|
@@ -9523,7 +9641,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
9523
9641
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9524
9642
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
9525
9643
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9526
|
-
|
|
9644
|
+
useEffect21(() => setIsDialogForced(true), []);
|
|
9527
9645
|
useCheckBackupAvailability();
|
|
9528
9646
|
const {
|
|
9529
9647
|
method: currentRestoreMethod,
|
|
@@ -9584,8 +9702,8 @@ var KeyshareRestoreMenu = () => {
|
|
|
9584
9702
|
{
|
|
9585
9703
|
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
9586
9704
|
className: "list-scrollbar-y w-full",
|
|
9587
|
-
children: /* @__PURE__ */
|
|
9588
|
-
isBackupChecking && /* @__PURE__ */
|
|
9705
|
+
children: /* @__PURE__ */ jsxs38(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
9706
|
+
isBackupChecking && /* @__PURE__ */ jsxs38("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
|
|
9589
9707
|
/* @__PURE__ */ jsx46(Loader8, { className: "w-5 h-5 animate-spin" }),
|
|
9590
9708
|
/* @__PURE__ */ jsx46("span", { className: "block w-full text-xs leading-4", children: "Checking for backups..." }),
|
|
9591
9709
|
/* @__PURE__ */ jsx46("span", { className: "block w-full text-xs leading-4", children: "Please wait while we check for available backups..." })
|
|
@@ -9597,8 +9715,8 @@ var KeyshareRestoreMenu = () => {
|
|
|
9597
9715
|
restoreFromFile
|
|
9598
9716
|
}
|
|
9599
9717
|
),
|
|
9600
|
-
!success && !isBackupChecking && !isDisconnecting && hasServerBackup && /* @__PURE__ */
|
|
9601
|
-
/* @__PURE__ */
|
|
9718
|
+
!success && !isBackupChecking && !isDisconnecting && hasServerBackup && /* @__PURE__ */ jsxs38(Fragment13, { children: [
|
|
9719
|
+
/* @__PURE__ */ jsxs38("div", { className: "flex items-center justify-center gap-[var(--l-pass-gap)] px-[var(--l-pass-pd)] py-[var(--l-pass-gap)]", children: [
|
|
9602
9720
|
/* @__PURE__ */ jsx46(CloudDownload2, { className: "w-6 h-6" }),
|
|
9603
9721
|
/* @__PURE__ */ jsx46("span", { className: "font-bold text-xl leading-6", children: "Restore Account" })
|
|
9604
9722
|
] }),
|
|
@@ -9613,9 +9731,9 @@ var KeyshareRestoreMenu = () => {
|
|
|
9613
9731
|
}
|
|
9614
9732
|
)
|
|
9615
9733
|
] }),
|
|
9616
|
-
!success && !currentRestoreMethod && !isBackupChecking && /* @__PURE__ */
|
|
9734
|
+
!success && !currentRestoreMethod && !isBackupChecking && /* @__PURE__ */ jsxs38(Fragment13, { children: [
|
|
9617
9735
|
/* @__PURE__ */ jsx46("div", { className: "w-full mt-[var(--l-pass-gap)]", style: { borderTop: "1px solid var(--l-pass-bd)" } }),
|
|
9618
|
-
/* @__PURE__ */
|
|
9736
|
+
/* @__PURE__ */ jsxs38(
|
|
9619
9737
|
Button,
|
|
9620
9738
|
{
|
|
9621
9739
|
size: "large",
|
|
@@ -9639,11 +9757,11 @@ var KeyshareRestoreMenu = () => {
|
|
|
9639
9757
|
}
|
|
9640
9758
|
)
|
|
9641
9759
|
] }),
|
|
9642
|
-
error && /* @__PURE__ */
|
|
9760
|
+
error && /* @__PURE__ */ jsxs38(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9643
9761
|
/* @__PURE__ */ jsx46(AlertCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9644
9762
|
/* @__PURE__ */ jsx46("span", { className: "w-full flex-1 block", children: error })
|
|
9645
9763
|
] }),
|
|
9646
|
-
success && /* @__PURE__ */
|
|
9764
|
+
success && /* @__PURE__ */ jsxs38(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9647
9765
|
/* @__PURE__ */ jsx46(CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9648
9766
|
/* @__PURE__ */ jsx46("span", { className: "w-full flex-1 block", children: success })
|
|
9649
9767
|
] })
|
|
@@ -9654,10 +9772,10 @@ var KeyshareRestoreMenu = () => {
|
|
|
9654
9772
|
|
|
9655
9773
|
// src/internal/components/KeyshareRestoreMenu/KeyshareBackupMenu.tsx
|
|
9656
9774
|
import { useQuery as useQuery8 } from "@tanstack/react-query";
|
|
9657
|
-
import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft9, CheckCircle2 as CheckCircle22 } from "lucide-react";
|
|
9658
|
-
import { useEffect as
|
|
9775
|
+
import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft9, CheckCircle2 as CheckCircle22, LockIcon } from "lucide-react";
|
|
9776
|
+
import { useEffect as useEffect22 } from "react";
|
|
9659
9777
|
init_vaultClient();
|
|
9660
|
-
import { Fragment as Fragment14, jsx as jsx47, jsxs as
|
|
9778
|
+
import { Fragment as Fragment14, jsx as jsx47, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
9661
9779
|
var COMPONENTS = {
|
|
9662
9780
|
server: Server,
|
|
9663
9781
|
file: File2,
|
|
@@ -9665,10 +9783,10 @@ var COMPONENTS = {
|
|
|
9665
9783
|
};
|
|
9666
9784
|
function KeyshareBackupMenu() {
|
|
9667
9785
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9786
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
9668
9787
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9669
9788
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9670
9789
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9671
|
-
useEffect21(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
9672
9790
|
const {
|
|
9673
9791
|
method: currentBackupMethod,
|
|
9674
9792
|
error,
|
|
@@ -9679,8 +9797,15 @@ function KeyshareBackupMenu() {
|
|
|
9679
9797
|
setRestorePassword,
|
|
9680
9798
|
setRestoreFile,
|
|
9681
9799
|
setShowPassword,
|
|
9682
|
-
setUsePasskey
|
|
9800
|
+
setUsePasskey,
|
|
9801
|
+
setMethod
|
|
9683
9802
|
} = useRestoreStore();
|
|
9803
|
+
useEffect22(() => {
|
|
9804
|
+
setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT);
|
|
9805
|
+
return () => {
|
|
9806
|
+
setMethod(null);
|
|
9807
|
+
};
|
|
9808
|
+
}, []);
|
|
9684
9809
|
const { data: serverRecoveryStatus } = useQuery8({
|
|
9685
9810
|
retry: false,
|
|
9686
9811
|
queryKey: [CHECK_BACKUP_QUERY_KEY, address],
|
|
@@ -9701,8 +9826,12 @@ function KeyshareBackupMenu() {
|
|
|
9701
9826
|
{
|
|
9702
9827
|
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
9703
9828
|
className: "list-scrollbar-y w-full",
|
|
9704
|
-
children: /* @__PURE__ */
|
|
9705
|
-
!
|
|
9829
|
+
children: /* @__PURE__ */ jsxs39(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
9830
|
+
!hasServerVault && /* @__PURE__ */ jsxs39("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
9831
|
+
/* @__PURE__ */ jsx47(LockIcon, { className: "w-6 h-6" }),
|
|
9832
|
+
/* @__PURE__ */ jsx47("span", { className: "font-bold text-xl leading-6", children: "Secure Account" })
|
|
9833
|
+
] }),
|
|
9834
|
+
!!hasServerVault && !currentBackupMethod && /* @__PURE__ */ jsxs39("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9706
9835
|
/* @__PURE__ */ jsx47(
|
|
9707
9836
|
Button,
|
|
9708
9837
|
{
|
|
@@ -9717,14 +9846,15 @@ function KeyshareBackupMenu() {
|
|
|
9717
9846
|
setUsePasskey(false);
|
|
9718
9847
|
setError(null);
|
|
9719
9848
|
setSuccess(null);
|
|
9849
|
+
setMethod(null);
|
|
9720
9850
|
setPage("settings" /* SETTINGS */);
|
|
9721
9851
|
},
|
|
9722
9852
|
children: /* @__PURE__ */ jsx47(ArrowLeft9, { className: "h-4 w-4" })
|
|
9723
9853
|
}
|
|
9724
9854
|
),
|
|
9725
|
-
/* @__PURE__ */ jsx47("span", { className: "text-xl font-semibold", children: "Create Backup" })
|
|
9855
|
+
/* @__PURE__ */ jsx47("span", { className: "text-xl font-semibold leading-8", children: "Create Backup" })
|
|
9726
9856
|
] }),
|
|
9727
|
-
!currentBackupMethod && /* @__PURE__ */ jsx47(MethodSelector, { mode: "backup", serverRecoveryStatus }),
|
|
9857
|
+
!!hasServerVault && !currentBackupMethod && /* @__PURE__ */ jsx47(MethodSelector, { mode: "backup", serverRecoveryStatus }),
|
|
9728
9858
|
!!currentBackupMethod && /* @__PURE__ */ jsx47(Fragment14, { children: /* @__PURE__ */ jsx47(
|
|
9729
9859
|
BackupComponent,
|
|
9730
9860
|
{
|
|
@@ -9735,21 +9865,21 @@ function KeyshareBackupMenu() {
|
|
|
9735
9865
|
cloudHandler: createCloudBackup
|
|
9736
9866
|
}
|
|
9737
9867
|
) }),
|
|
9738
|
-
!isRecoveryLoading && !currentBackupMethod && !hasRecoveryData && /* @__PURE__ */
|
|
9868
|
+
!isRecoveryLoading && !currentBackupMethod && !hasRecoveryData && /* @__PURE__ */ jsxs39(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9739
9869
|
/* @__PURE__ */ jsx47(AlertCircle3, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9740
|
-
/* @__PURE__ */
|
|
9870
|
+
/* @__PURE__ */ jsxs39("span", { className: "block flex-1", children: [
|
|
9741
9871
|
/* @__PURE__ */ jsx47("span", { className: "font-semibold", children: "No Backup Found" }),
|
|
9742
9872
|
/* @__PURE__ */ jsx47("br", {}),
|
|
9743
|
-
/* @__PURE__ */ jsx47("span", { children: "Create a backup to restore access if you switch devices or clear your browser." }),
|
|
9873
|
+
/* @__PURE__ */ jsx47("span", { className: "text-[10px]", children: "Create a backup to restore access if you switch devices or clear your browser." }),
|
|
9744
9874
|
/* @__PURE__ */ jsx47("br", {}),
|
|
9745
|
-
/* @__PURE__ */ jsx47("span", { children: "You can ignore this if you already have a backup or don't want to use Keyshare Vault." })
|
|
9875
|
+
/* @__PURE__ */ jsx47("span", { className: "text-[10px]", children: "You can ignore this if you already have a backup or don't want to use Keyshare Vault." })
|
|
9746
9876
|
] })
|
|
9747
9877
|
] }),
|
|
9748
|
-
error && /* @__PURE__ */
|
|
9878
|
+
error && /* @__PURE__ */ jsxs39(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9749
9879
|
/* @__PURE__ */ jsx47(AlertCircle3, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9750
9880
|
/* @__PURE__ */ jsx47("span", { className: "block w-full flex-1", children: error })
|
|
9751
9881
|
] }),
|
|
9752
|
-
success && /* @__PURE__ */
|
|
9882
|
+
success && /* @__PURE__ */ jsxs39(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9753
9883
|
/* @__PURE__ */ jsx47(CheckCircle22, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9754
9884
|
/* @__PURE__ */ jsx47("span", { className: "block w-full flex-1", children: success })
|
|
9755
9885
|
] })
|
|
@@ -9759,8 +9889,8 @@ function KeyshareBackupMenu() {
|
|
|
9759
9889
|
}
|
|
9760
9890
|
|
|
9761
9891
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9762
|
-
import { ChevronLeft, ChevronRight as
|
|
9763
|
-
import { useEffect as
|
|
9892
|
+
import { ChevronLeft, ChevronRight as ChevronRight3, DollarSign as DollarSign3, Wallet2 as Wallet23 } from "lucide-react";
|
|
9893
|
+
import { useEffect as useEffect23 } from "react";
|
|
9764
9894
|
|
|
9765
9895
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9766
9896
|
init_common();
|
|
@@ -9779,9 +9909,9 @@ function useProvidersList() {
|
|
|
9779
9909
|
}
|
|
9780
9910
|
|
|
9781
9911
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9782
|
-
import { jsx as jsx48, jsxs as
|
|
9912
|
+
import { jsx as jsx48, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
9783
9913
|
var MAIN_MENU_BUTTONS = [
|
|
9784
|
-
{ id: "send" /* SEND */, label: "Send", icon:
|
|
9914
|
+
{ id: "send" /* SEND */, label: "Send", icon: ChevronRight3 },
|
|
9785
9915
|
{ id: "receive" /* RECEIVE */, label: "Receive", icon: ChevronLeft },
|
|
9786
9916
|
{ id: "buy" /* BUY */, label: "Buy", icon: DollarSign3 },
|
|
9787
9917
|
{ id: "assets" /* ASSETS */, label: "Portfolio", icon: Wallet23 }
|
|
@@ -9790,9 +9920,9 @@ function MainMenu() {
|
|
|
9790
9920
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9791
9921
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9792
9922
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9793
|
-
|
|
9923
|
+
useEffect23(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
9794
9924
|
useProvidersList();
|
|
9795
|
-
return /* @__PURE__ */ jsx48("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: /* @__PURE__ */ jsx48("div", { className: "w-full grid grid-cols-4 gap-0 md:gap-[var(--l-pass-gap)] py-[10px] md:py-1", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon2 }) => /* @__PURE__ */
|
|
9925
|
+
return /* @__PURE__ */ jsx48("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: /* @__PURE__ */ jsx48("div", { className: "w-full grid grid-cols-4 gap-0 md:gap-[var(--l-pass-gap)] py-[10px] md:py-1", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon2 }) => /* @__PURE__ */ jsxs40(
|
|
9796
9926
|
Button,
|
|
9797
9927
|
{
|
|
9798
9928
|
size: "large",
|
|
@@ -9863,7 +9993,7 @@ init_passkey2();
|
|
|
9863
9993
|
init_lumiaPassport();
|
|
9864
9994
|
init_projectId();
|
|
9865
9995
|
import { useMutation as useMutation11 } from "@tanstack/react-query";
|
|
9866
|
-
import { ChevronRight as
|
|
9996
|
+
import { ChevronRight as ChevronRight4, Loader as Loader9, Mail as Mail4 } from "lucide-react";
|
|
9867
9997
|
|
|
9868
9998
|
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
9869
9999
|
import { create as create5 } from "zustand";
|
|
@@ -9887,7 +10017,7 @@ var useManageWalletStore = create5((set) => ({
|
|
|
9887
10017
|
}));
|
|
9888
10018
|
|
|
9889
10019
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9890
|
-
import { jsx as jsx49, jsxs as
|
|
10020
|
+
import { jsx as jsx49, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
9891
10021
|
function EmailForm() {
|
|
9892
10022
|
const {
|
|
9893
10023
|
config: { current: config },
|
|
@@ -9954,7 +10084,7 @@ function EmailForm() {
|
|
|
9954
10084
|
}
|
|
9955
10085
|
}
|
|
9956
10086
|
});
|
|
9957
|
-
return /* @__PURE__ */
|
|
10087
|
+
return /* @__PURE__ */ jsxs41("div", { className: "w-full flex gap-[10px] items-center", children: [
|
|
9958
10088
|
/* @__PURE__ */ jsx49(
|
|
9959
10089
|
Input,
|
|
9960
10090
|
{
|
|
@@ -9976,7 +10106,7 @@ function EmailForm() {
|
|
|
9976
10106
|
size: "large",
|
|
9977
10107
|
disabled: !email || isLoading,
|
|
9978
10108
|
onClick: () => onSendVerificationCode(),
|
|
9979
|
-
children: isLoading ? /* @__PURE__ */ jsx49(Loader9, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx49(
|
|
10109
|
+
children: isLoading ? /* @__PURE__ */ jsx49(Loader9, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx49(ChevronRight4, { className: "w-4 h-4" })
|
|
9980
10110
|
}
|
|
9981
10111
|
)
|
|
9982
10112
|
] });
|
|
@@ -10056,7 +10186,7 @@ function useVerifyCode() {
|
|
|
10056
10186
|
}
|
|
10057
10187
|
|
|
10058
10188
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
10059
|
-
import { Fragment as Fragment15, jsx as jsx50, jsxs as
|
|
10189
|
+
import { Fragment as Fragment15, jsx as jsx50, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10060
10190
|
function normalizePasskeyLinkError(msg) {
|
|
10061
10191
|
const lower = msg.toLowerCase();
|
|
10062
10192
|
if (lower.includes("already registered") || lower.includes("credential") && lower.includes("exists")) {
|
|
@@ -10086,13 +10216,13 @@ function AddProvider() {
|
|
|
10086
10216
|
const { mutate: onVerifyCode, isPending: isCodeVerifying } = useVerifyCode();
|
|
10087
10217
|
const isLoading = linkIsLoading || isCodeSending || isCodeVerifying;
|
|
10088
10218
|
if (!providerType) return null;
|
|
10089
|
-
return /* @__PURE__ */
|
|
10090
|
-
providerType === "email" && emailStep === "input" && /* @__PURE__ */
|
|
10219
|
+
return /* @__PURE__ */ jsxs42(Fragment15, { children: [
|
|
10220
|
+
providerType === "email" && emailStep === "input" && /* @__PURE__ */ jsxs42("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10091
10221
|
/* @__PURE__ */ jsx50("div", { className: "w-full flex flex-col gap-1 text-center", children: /* @__PURE__ */ jsx50("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Provide Email to connect" }) }),
|
|
10092
10222
|
/* @__PURE__ */ jsx50(EmailForm, {})
|
|
10093
10223
|
] }),
|
|
10094
|
-
providerType === "email" && emailStep === "verify" && /* @__PURE__ */
|
|
10095
|
-
/* @__PURE__ */
|
|
10224
|
+
providerType === "email" && emailStep === "verify" && /* @__PURE__ */ jsxs42("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10225
|
+
/* @__PURE__ */ jsxs42("div", { className: "w-full flex flex-col gap-1 text-center", children: [
|
|
10096
10226
|
/* @__PURE__ */ jsx50("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "We sent a verification code to:" }),
|
|
10097
10227
|
/* @__PURE__ */ jsx50("strong", { className: "text-xs", children: email })
|
|
10098
10228
|
] }),
|
|
@@ -10106,12 +10236,12 @@ function AddProvider() {
|
|
|
10106
10236
|
}
|
|
10107
10237
|
)
|
|
10108
10238
|
] }),
|
|
10109
|
-
providerType === "passkey" && /* @__PURE__ */
|
|
10110
|
-
/* @__PURE__ */
|
|
10239
|
+
providerType === "passkey" && /* @__PURE__ */ jsxs42("div", { className: "flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10240
|
+
/* @__PURE__ */ jsxs42(Highlight, { children: [
|
|
10111
10241
|
/* @__PURE__ */ jsx50("span", { className: "block mb-1", children: "Link a passkey to your account using WebAuth. Your device may let you choose an existing passkey" }),
|
|
10112
10242
|
/* @__PURE__ */ jsx50("span", { className: "block", children: "Otherwise a new one will be created" })
|
|
10113
10243
|
] }),
|
|
10114
|
-
/* @__PURE__ */
|
|
10244
|
+
/* @__PURE__ */ jsxs42(
|
|
10115
10245
|
Button,
|
|
10116
10246
|
{
|
|
10117
10247
|
className: "w-full",
|
|
@@ -10151,7 +10281,7 @@ function AddProvider() {
|
|
|
10151
10281
|
]
|
|
10152
10282
|
}
|
|
10153
10283
|
),
|
|
10154
|
-
/* @__PURE__ */
|
|
10284
|
+
/* @__PURE__ */ jsxs42(
|
|
10155
10285
|
Button,
|
|
10156
10286
|
{
|
|
10157
10287
|
className: "w-full",
|
|
@@ -10201,7 +10331,7 @@ function AddProvider() {
|
|
|
10201
10331
|
init_auth();
|
|
10202
10332
|
import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-motion";
|
|
10203
10333
|
import { Mail as Mail5 } from "lucide-react";
|
|
10204
|
-
import { jsx as jsx51, jsxs as
|
|
10334
|
+
import { jsx as jsx51, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
10205
10335
|
function EmailNotConnectedWarning() {
|
|
10206
10336
|
const providers = jwtTokenManager2.getProviders();
|
|
10207
10337
|
const hasEmail = providers.includes("email");
|
|
@@ -10216,8 +10346,8 @@ function EmailNotConnectedWarning() {
|
|
|
10216
10346
|
animate: { opacity: 1, height: "auto" },
|
|
10217
10347
|
exit: { opacity: 0, height: 0 },
|
|
10218
10348
|
transition: Y_ANIMATION_SETUP,
|
|
10219
|
-
children: /* @__PURE__ */
|
|
10220
|
-
/* @__PURE__ */
|
|
10349
|
+
children: /* @__PURE__ */ jsxs43(Highlight, { type: "warning", className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
10350
|
+
/* @__PURE__ */ jsxs43("span", { className: "flex items-center gap-[var(--l-pass-gap)] text-lg font-bold", children: [
|
|
10221
10351
|
/* @__PURE__ */ jsx51(Mail5, { className: "w-5 h-5" }),
|
|
10222
10352
|
"CONNECT EMAIL"
|
|
10223
10353
|
] }),
|
|
@@ -10229,7 +10359,7 @@ function EmailNotConnectedWarning() {
|
|
|
10229
10359
|
|
|
10230
10360
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
10231
10361
|
import { useQueryClient as useQueryClient12 } from "@tanstack/react-query";
|
|
10232
|
-
import React6, { useEffect as
|
|
10362
|
+
import React6, { useEffect as useEffect24 } from "react";
|
|
10233
10363
|
init_auth();
|
|
10234
10364
|
function useLinkSocial() {
|
|
10235
10365
|
const qc = useQueryClient12();
|
|
@@ -10294,7 +10424,7 @@ function useLinkSocial() {
|
|
|
10294
10424
|
[config.social?.providers, callbacks]
|
|
10295
10425
|
);
|
|
10296
10426
|
const [socialLinkStarted, setSocialLinkStarted] = React6.useState(false);
|
|
10297
|
-
|
|
10427
|
+
useEffect24(() => {
|
|
10298
10428
|
const key = providerType?.toLowerCase();
|
|
10299
10429
|
console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
|
|
10300
10430
|
if (isWalletLinking) {
|
|
@@ -10316,7 +10446,7 @@ function useLinkSocial() {
|
|
|
10316
10446
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
10317
10447
|
init_telegram2();
|
|
10318
10448
|
import { useQueryClient as useQueryClient13 } from "@tanstack/react-query";
|
|
10319
|
-
import { useCallback as useCallback11, useEffect as
|
|
10449
|
+
import { useCallback as useCallback11, useEffect as useEffect25, useState as useState11 } from "react";
|
|
10320
10450
|
function useLinkTelegram() {
|
|
10321
10451
|
const {
|
|
10322
10452
|
config: { current: config },
|
|
@@ -10369,8 +10499,8 @@ function useLinkTelegram() {
|
|
|
10369
10499
|
setLinkIsLoading(false);
|
|
10370
10500
|
}
|
|
10371
10501
|
}, [config.social?.providers, callbacks]);
|
|
10372
|
-
const [telegramLinkStarted, setTelegramLinkStarted] =
|
|
10373
|
-
|
|
10502
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = useState11(false);
|
|
10503
|
+
useEffect25(() => {
|
|
10374
10504
|
console.log("[useLinkTelegram] Effect triggered:", {
|
|
10375
10505
|
providerType,
|
|
10376
10506
|
linkIsLoading,
|
|
@@ -10387,7 +10517,7 @@ function useLinkTelegram() {
|
|
|
10387
10517
|
handleLinkTelegram();
|
|
10388
10518
|
}
|
|
10389
10519
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
|
|
10390
|
-
|
|
10520
|
+
useEffect25(() => {
|
|
10391
10521
|
if (providerType !== "telegram") {
|
|
10392
10522
|
setTelegramLinkStarted(false);
|
|
10393
10523
|
}
|
|
@@ -10397,7 +10527,7 @@ function useLinkTelegram() {
|
|
|
10397
10527
|
// src/internal/components/ManageWalletMenu/ProviderCard.tsx
|
|
10398
10528
|
init_types();
|
|
10399
10529
|
import { CheckCircle, Clock, Trash2 } from "lucide-react";
|
|
10400
|
-
import { jsx as jsx52, jsxs as
|
|
10530
|
+
import { jsx as jsx52, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
10401
10531
|
function ProviderCard(props) {
|
|
10402
10532
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10403
10533
|
const setConfirmUnlink = useManageWalletStore((st) => st.setConfirmUnlink);
|
|
@@ -10414,20 +10544,20 @@ function ProviderCard(props) {
|
|
|
10414
10544
|
const info = getProviderDisplayInfo(props.provider);
|
|
10415
10545
|
const allowUnlink = canUnlink(props);
|
|
10416
10546
|
const IconComponent = info.icon;
|
|
10417
|
-
return /* @__PURE__ */
|
|
10547
|
+
return /* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
10418
10548
|
/* @__PURE__ */ jsx52("div", { className: "w-12 h-12 flex items-center justify-center flex-none border border-[var(--l-pass-bd)] rounded-full", children: /* @__PURE__ */ jsx52(IconComponent, { className: "w-5 h-5" }) }),
|
|
10419
|
-
/* @__PURE__ */
|
|
10549
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex flex-col gap-1 flex-1", children: [
|
|
10420
10550
|
/* @__PURE__ */ jsx52("span", { className: "block w-full text-[10px] font-medium", children: info.name }),
|
|
10421
10551
|
props.externalId && /* @__PURE__ */ jsx52(
|
|
10422
10552
|
"span",
|
|
10423
10553
|
{
|
|
10424
|
-
style: { maxWidth:
|
|
10425
|
-
className: "block w-full font-bold text-
|
|
10554
|
+
style: { maxWidth: 184 },
|
|
10555
|
+
className: "block w-full font-bold text-xs whitespace-nowrap text-ellipsis overflow-hidden",
|
|
10426
10556
|
children: props.externalId
|
|
10427
10557
|
}
|
|
10428
10558
|
)
|
|
10429
10559
|
] }),
|
|
10430
|
-
/* @__PURE__ */
|
|
10560
|
+
/* @__PURE__ */ jsxs44("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] flex-none", children: [
|
|
10431
10561
|
props.verified ? /* @__PURE__ */ jsx52(CheckCircle, { className: `w-4 h-4 text-[var(--l-pass-bg-success)]` }) : /* @__PURE__ */ jsx52(Clock, { className: "w-4 h-4 text-[var(--l-pass-bg-warning)]" }),
|
|
10432
10562
|
allowUnlink && /* @__PURE__ */ jsx52(
|
|
10433
10563
|
Button,
|
|
@@ -10448,7 +10578,7 @@ function ProviderCard(props) {
|
|
|
10448
10578
|
}
|
|
10449
10579
|
|
|
10450
10580
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
10451
|
-
import { Fragment as Fragment16, jsx as jsx53, jsxs as
|
|
10581
|
+
import { Fragment as Fragment16, jsx as jsx53, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
10452
10582
|
var POSSIBLE_PROVIDERS = [
|
|
10453
10583
|
"email",
|
|
10454
10584
|
// 'google',
|
|
@@ -10515,7 +10645,7 @@ function ManageWalletMenu() {
|
|
|
10515
10645
|
}
|
|
10516
10646
|
} else {
|
|
10517
10647
|
unused.push(
|
|
10518
|
-
/* @__PURE__ */
|
|
10648
|
+
/* @__PURE__ */ jsxs45(
|
|
10519
10649
|
Button,
|
|
10520
10650
|
{
|
|
10521
10651
|
variant: "default",
|
|
@@ -10562,7 +10692,7 @@ function ManageWalletMenu() {
|
|
|
10562
10692
|
const showCurrentProviders = !isProvidersLoading && !providersError && (providerType !== "email" && providerType !== "passkey" || providerType === null);
|
|
10563
10693
|
const showExtraProvidersUi = !isProvidersLoading && !providersError && (providerType === "email" || providerType === "passkey");
|
|
10564
10694
|
const combinedAlertMessage = alert2?.message || providersError?.message || null;
|
|
10565
|
-
return /* @__PURE__ */
|
|
10695
|
+
return /* @__PURE__ */ jsxs45(
|
|
10566
10696
|
"div",
|
|
10567
10697
|
{
|
|
10568
10698
|
style: {
|
|
@@ -10571,7 +10701,7 @@ function ManageWalletMenu() {
|
|
|
10571
10701
|
},
|
|
10572
10702
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
10573
10703
|
children: [
|
|
10574
|
-
/* @__PURE__ */
|
|
10704
|
+
/* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10575
10705
|
/* @__PURE__ */ jsx53(
|
|
10576
10706
|
Button,
|
|
10577
10707
|
{
|
|
@@ -10598,10 +10728,10 @@ function ManageWalletMenu() {
|
|
|
10598
10728
|
/* @__PURE__ */ jsx53(EmailNotConnectedWarning, {}),
|
|
10599
10729
|
showCurrentProviders && renderProviders.map((node) => node),
|
|
10600
10730
|
showExtraProvidersUi && /* @__PURE__ */ jsx53(AddProvider, {}),
|
|
10601
|
-
combinedAlertMessage && /* @__PURE__ */
|
|
10731
|
+
combinedAlertMessage && /* @__PURE__ */ jsxs45(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10602
10732
|
/* @__PURE__ */ jsx53(AlertTriangle3, { className: "w-4 h-4 shrink-0" }),
|
|
10603
|
-
/* @__PURE__ */
|
|
10604
|
-
alert2?.title && /* @__PURE__ */
|
|
10733
|
+
/* @__PURE__ */ jsxs45("span", { className: "break-words whitespace-pre-wrap", children: [
|
|
10734
|
+
alert2?.title && /* @__PURE__ */ jsxs45(Fragment16, { children: [
|
|
10605
10735
|
/* @__PURE__ */ jsx53("strong", { children: alert2.title }),
|
|
10606
10736
|
/* @__PURE__ */ jsx53("br", {})
|
|
10607
10737
|
] }),
|
|
@@ -10616,16 +10746,16 @@ function ManageWalletMenu() {
|
|
|
10616
10746
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
10617
10747
|
import { useMutation as useMutation14, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
|
|
10618
10748
|
import { Key as Key5, Loader as Loader11 } from "lucide-react";
|
|
10619
|
-
import { useState as
|
|
10749
|
+
import { useState as useState12 } from "react";
|
|
10620
10750
|
init_auth();
|
|
10621
|
-
import { jsx as jsx54, jsxs as
|
|
10751
|
+
import { jsx as jsx54, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
10622
10752
|
function UnlinkProviderMenu() {
|
|
10623
10753
|
const qc = useQueryClient14();
|
|
10624
10754
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10625
10755
|
const { callbacks } = useLumiaPassportConfig();
|
|
10626
10756
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10627
10757
|
const { confirmUnlink, setConfirmUnlink, setAlert } = useManageWalletStore();
|
|
10628
|
-
const [confirmInput, setConfirmInput] =
|
|
10758
|
+
const [confirmInput, setConfirmInput] = useState12("");
|
|
10629
10759
|
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = useMutation14({
|
|
10630
10760
|
mutationFn: async () => {
|
|
10631
10761
|
if (!confirmUnlink) {
|
|
@@ -10650,9 +10780,9 @@ function UnlinkProviderMenu() {
|
|
|
10650
10780
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
10651
10781
|
}
|
|
10652
10782
|
});
|
|
10653
|
-
return /* @__PURE__ */
|
|
10783
|
+
return /* @__PURE__ */ jsxs46("div", { className: "w-full p-5 flex flex-col gap-4", children: [
|
|
10654
10784
|
/* @__PURE__ */ jsx54("div", { className: "text-xl font-semibold text-[var(--l-pass-error)]", children: "This action cannot be undone." }),
|
|
10655
|
-
confirmUnlink && /* @__PURE__ */
|
|
10785
|
+
confirmUnlink && /* @__PURE__ */ jsxs46("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10656
10786
|
/* @__PURE__ */ jsx54("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Type the provider ID to confirm removal:" }),
|
|
10657
10787
|
/* @__PURE__ */ jsx54("div", { className: "text-sm font-mono break-all", children: confirmUnlink.externalId }),
|
|
10658
10788
|
/* @__PURE__ */ jsx54(
|
|
@@ -10665,7 +10795,7 @@ function UnlinkProviderMenu() {
|
|
|
10665
10795
|
}
|
|
10666
10796
|
)
|
|
10667
10797
|
] }),
|
|
10668
|
-
/* @__PURE__ */
|
|
10798
|
+
/* @__PURE__ */ jsxs46("div", { className: "w-full flex justify-between gap-2", children: [
|
|
10669
10799
|
/* @__PURE__ */ jsx54(
|
|
10670
10800
|
Button,
|
|
10671
10801
|
{
|
|
@@ -10681,7 +10811,7 @@ function UnlinkProviderMenu() {
|
|
|
10681
10811
|
children: "Cancel"
|
|
10682
10812
|
}
|
|
10683
10813
|
),
|
|
10684
|
-
/* @__PURE__ */
|
|
10814
|
+
/* @__PURE__ */ jsxs46(
|
|
10685
10815
|
Button,
|
|
10686
10816
|
{
|
|
10687
10817
|
size: "large",
|
|
@@ -10706,7 +10836,7 @@ import { useCallback as useCallback13 } from "react";
|
|
|
10706
10836
|
// src/internal/hooks/useBlockscoutAssets.ts
|
|
10707
10837
|
init_lumiaPassport();
|
|
10708
10838
|
init_base();
|
|
10709
|
-
import { useCallback as useCallback12, useMemo as useMemo4, useRef as
|
|
10839
|
+
import { useCallback as useCallback12, useMemo as useMemo4, useRef as useRef13 } from "react";
|
|
10710
10840
|
import { useQuery as useQuery11 } from "@tanstack/react-query";
|
|
10711
10841
|
import { useBalance as useBalance2, usePublicClient } from "wagmi";
|
|
10712
10842
|
import { formatUnits as formatUnits2 } from "viem";
|
|
@@ -10854,7 +10984,7 @@ function useBlockscoutAssets(options) {
|
|
|
10854
10984
|
[blockscoutApiUrl]
|
|
10855
10985
|
);
|
|
10856
10986
|
const publicClient2 = usePublicClient({ chainId: lumiaBeam.id });
|
|
10857
|
-
const lastRefreshRef =
|
|
10987
|
+
const lastRefreshRef = useRef13(0);
|
|
10858
10988
|
const {
|
|
10859
10989
|
data: nativeBalanceData,
|
|
10860
10990
|
isLoading: nativeLoading,
|
|
@@ -11017,9 +11147,9 @@ function useBlockscoutAssets(options) {
|
|
|
11017
11147
|
init_base();
|
|
11018
11148
|
import { useQuery as useQuery12, useQueryClient as useQueryClient15 } from "@tanstack/react-query";
|
|
11019
11149
|
import { Image as ImageIcon, Loader as Loader12, Shield, Sparkles } from "lucide-react";
|
|
11020
|
-
import { useState as
|
|
11150
|
+
import { useState as useState13 } from "react";
|
|
11021
11151
|
import { formatUnits as formatUnits3 } from "viem";
|
|
11022
|
-
import { Fragment as Fragment17, jsx as jsx55, jsxs as
|
|
11152
|
+
import { Fragment as Fragment17, jsx as jsx55, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
11023
11153
|
function openInExplorer(address) {
|
|
11024
11154
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11025
11155
|
}
|
|
@@ -11054,8 +11184,8 @@ async function getAssetRate2(symbol) {
|
|
|
11054
11184
|
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
11055
11185
|
function PortfolioItem(props) {
|
|
11056
11186
|
const { address, asset, isProjectAsset } = props;
|
|
11057
|
-
const [nftImageError, setNftImageError] =
|
|
11058
|
-
const [logoError, setLogoError] =
|
|
11187
|
+
const [nftImageError, setNftImageError] = useState13(false);
|
|
11188
|
+
const [logoError, setLogoError] = useState13(false);
|
|
11059
11189
|
const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
|
|
11060
11190
|
const qc = useQueryClient15();
|
|
11061
11191
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
@@ -11073,7 +11203,7 @@ function PortfolioItem(props) {
|
|
|
11073
11203
|
const showProjectFiatBalance = isProjectAsset && !!projectAssetBalance?.fiatFormatted;
|
|
11074
11204
|
const renderBalance = showProjectFiatBalance ? projectAssetBalance?.fiatFormatted || 0 : Number(formatUnits3(BigInt(asset?.balance || "0"), asset?.decimals || 18));
|
|
11075
11205
|
const usdRenderBalance = !!assetRate?.price ? renderBalance * Number(assetRate.price) : 0;
|
|
11076
|
-
return /* @__PURE__ */
|
|
11206
|
+
return /* @__PURE__ */ jsxs47(
|
|
11077
11207
|
"div",
|
|
11078
11208
|
{
|
|
11079
11209
|
className: cn(
|
|
@@ -11084,7 +11214,7 @@ function PortfolioItem(props) {
|
|
|
11084
11214
|
),
|
|
11085
11215
|
onClick: () => asset.address ? openInExplorer(asset.address) : void 0,
|
|
11086
11216
|
children: [
|
|
11087
|
-
/* @__PURE__ */
|
|
11217
|
+
/* @__PURE__ */ jsxs47(
|
|
11088
11218
|
"div",
|
|
11089
11219
|
{
|
|
11090
11220
|
className: cn(
|
|
@@ -11127,8 +11257,8 @@ function PortfolioItem(props) {
|
|
|
11127
11257
|
]
|
|
11128
11258
|
}
|
|
11129
11259
|
),
|
|
11130
|
-
/* @__PURE__ */
|
|
11131
|
-
/* @__PURE__ */
|
|
11260
|
+
/* @__PURE__ */ jsxs47("div", { className: "w-full flex-1", children: [
|
|
11261
|
+
/* @__PURE__ */ jsxs47("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
11132
11262
|
/* @__PURE__ */ jsx55(
|
|
11133
11263
|
"span",
|
|
11134
11264
|
{
|
|
@@ -11141,19 +11271,19 @@ function PortfolioItem(props) {
|
|
|
11141
11271
|
!isSecurity && isNft && "type" in asset && /* @__PURE__ */ jsx55("span", { className: "uppercase text-[10px] px-1 bg-[var(--l-pass-bg-info)] rounded-full", children: asset.type === "erc721" ? "ERC-721" : "ERC-1155" }),
|
|
11142
11272
|
isSecurity && /* @__PURE__ */ jsx55("span", { className: "uppercase text-[10px] px-1 bg-[var(--l-pass-bg-warning)] rounded-full", children: "Security Token" })
|
|
11143
11273
|
] }),
|
|
11144
|
-
/* @__PURE__ */ jsx55("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: isNft ? /* @__PURE__ */
|
|
11274
|
+
/* @__PURE__ */ jsx55("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: isNft ? /* @__PURE__ */ jsxs47(Fragment17, { children: [
|
|
11145
11275
|
/* @__PURE__ */ jsx55("span", { className: "truncate max-w-[160px]", title: asset.nftMetadata?.name || asset.symbol, children: asset.nftMetadata?.name || asset.symbol }),
|
|
11146
|
-
"tokenId" in asset && asset.tokenId && /* @__PURE__ */
|
|
11276
|
+
"tokenId" in asset && asset.tokenId && /* @__PURE__ */ jsxs47("span", { className: "text-xs text-[var(--l-pass-fg-muted)] font-normal", children: [
|
|
11147
11277
|
"#",
|
|
11148
11278
|
asset.tokenId.length > 8 ? `${asset.tokenId.slice(0, 6)}...` : asset.tokenId
|
|
11149
11279
|
] })
|
|
11150
|
-
] }) : /* @__PURE__ */
|
|
11151
|
-
/* @__PURE__ */
|
|
11280
|
+
] }) : /* @__PURE__ */ jsxs47(Fragment17, { children: [
|
|
11281
|
+
/* @__PURE__ */ jsxs47("span", { children: [
|
|
11152
11282
|
/* @__PURE__ */ jsx55("span", { children: formatPrice(Number(renderBalance)) }),
|
|
11153
11283
|
/* @__PURE__ */ jsx55("span", { children: " " + asset.symbol })
|
|
11154
11284
|
] }),
|
|
11155
11285
|
isRateLoading && /* @__PURE__ */ jsx55(Loader12, { className: "h-4 w-4 animate-spin" }),
|
|
11156
|
-
!isRateLoading && !!usdRenderBalance && /* @__PURE__ */
|
|
11286
|
+
!isRateLoading && !!usdRenderBalance && /* @__PURE__ */ jsxs47("span", { children: [
|
|
11157
11287
|
/* @__PURE__ */ jsx55("span", { children: "$" }),
|
|
11158
11288
|
/* @__PURE__ */ jsx55("span", { children: formatPrice(usdRenderBalance) })
|
|
11159
11289
|
] })
|
|
@@ -11165,7 +11295,7 @@ function PortfolioItem(props) {
|
|
|
11165
11295
|
}
|
|
11166
11296
|
|
|
11167
11297
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
11168
|
-
import { jsx as jsx56, jsxs as
|
|
11298
|
+
import { jsx as jsx56, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
11169
11299
|
function PortfolioMenu() {
|
|
11170
11300
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
11171
11301
|
const qc = useQueryClient16();
|
|
@@ -11193,8 +11323,8 @@ function PortfolioMenu() {
|
|
|
11193
11323
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
11194
11324
|
},
|
|
11195
11325
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11196
|
-
children: /* @__PURE__ */
|
|
11197
|
-
/* @__PURE__ */
|
|
11326
|
+
children: /* @__PURE__ */ jsxs48(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11327
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11198
11328
|
/* @__PURE__ */ jsx56(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx56(ArrowLeft11, { className: "h-4 w-4" }) }),
|
|
11199
11329
|
/* @__PURE__ */ jsx56("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11200
11330
|
/* @__PURE__ */ jsx56(
|
|
@@ -11210,7 +11340,7 @@ function PortfolioMenu() {
|
|
|
11210
11340
|
)
|
|
11211
11341
|
] }),
|
|
11212
11342
|
isBlockscoutLoading && /* @__PURE__ */ jsx56("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: /* @__PURE__ */ jsx56(Loader13, { className: "h-5 w-5 animate-spin" }) }),
|
|
11213
|
-
!isBlockscoutLoading && blockscoutAssets?.length === 0 && /* @__PURE__ */
|
|
11343
|
+
!isBlockscoutLoading && blockscoutAssets?.length === 0 && /* @__PURE__ */ jsxs48(Highlight, { type: "info", className: "flex flex-col items-center justify-center gap-[var(--l-pass-gap)]", children: [
|
|
11214
11344
|
/* @__PURE__ */ jsx56(Gem, { className: "w-8 h-8" }),
|
|
11215
11345
|
/* @__PURE__ */ jsx56("span", { className: "block", children: "No assets found" })
|
|
11216
11346
|
] }),
|
|
@@ -11223,7 +11353,7 @@ function PortfolioMenu() {
|
|
|
11223
11353
|
},
|
|
11224
11354
|
`${asset.type}-${asset.address || "native"}-${asset.tokenId || index}`
|
|
11225
11355
|
)),
|
|
11226
|
-
blockscoutError && !isBlockscoutAvailable && /* @__PURE__ */
|
|
11356
|
+
blockscoutError && !isBlockscoutAvailable && /* @__PURE__ */ jsxs48(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11227
11357
|
/* @__PURE__ */ jsx56(AlertCircle4, { className: "h-4 w-4 flex-shrink-0" }),
|
|
11228
11358
|
/* @__PURE__ */ jsx56("span", { className: "text-xs", children: blockscoutError.message })
|
|
11229
11359
|
] })
|
|
@@ -11236,8 +11366,9 @@ function PortfolioMenu() {
|
|
|
11236
11366
|
init_auth();
|
|
11237
11367
|
init_keyshare();
|
|
11238
11368
|
import { useQuery as useQuery13, useQueryClient as useQueryClient17 } from "@tanstack/react-query";
|
|
11369
|
+
import dayjs3 from "dayjs";
|
|
11239
11370
|
import { ArrowLeft as ArrowLeft12, Loader as Loader16, Trash2 as Trash22 } from "lucide-react";
|
|
11240
|
-
import { useState as
|
|
11371
|
+
import { useState as useState14 } from "react";
|
|
11241
11372
|
init_iframe_manager();
|
|
11242
11373
|
init_vaultClient();
|
|
11243
11374
|
|
|
@@ -11248,10 +11379,10 @@ var KEYSHARE_RECOVERY_STATS_QUERY = "keyshare-recovery-stats-query";
|
|
|
11248
11379
|
import { Cloud as Cloud4, Laptop, Loader as Loader15, RefreshCw as RefreshCw2, Server as Server3 } from "lucide-react";
|
|
11249
11380
|
|
|
11250
11381
|
// src/internal/assets/NegativeIcon.tsx
|
|
11251
|
-
import { jsx as jsx57, jsxs as
|
|
11382
|
+
import { jsx as jsx57, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
11252
11383
|
function NegativeIcon(props) {
|
|
11253
11384
|
const { width = "16", height = "16", ...rest } = props;
|
|
11254
|
-
return /* @__PURE__ */
|
|
11385
|
+
return /* @__PURE__ */ jsxs49("svg", { ...rest, width, height, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
11255
11386
|
/* @__PURE__ */ jsx57("rect", { width: "16", height: "16", rx: "8", fill: "var(--l-pass-bg-error)" }),
|
|
11256
11387
|
/* @__PURE__ */ jsx57("path", { d: "M10.8048 5.19482L5.19434 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" }),
|
|
11257
11388
|
/* @__PURE__ */ jsx57("path", { d: "M5.19421 5.19482L10.8047 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" })
|
|
@@ -11263,11 +11394,11 @@ init_vaultClient();
|
|
|
11263
11394
|
|
|
11264
11395
|
// src/internal/components/SecurityMenu/Keyshare/KeyshareStatus.tsx
|
|
11265
11396
|
import { Loader as Loader14 } from "lucide-react";
|
|
11266
|
-
import { jsx as jsx58, jsxs as
|
|
11397
|
+
import { jsx as jsx58, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
11267
11398
|
function KeyshareStatus(props) {
|
|
11268
11399
|
const { isLoading, content, icon: Icon2, children } = props;
|
|
11269
11400
|
if (isLoading) return /* @__PURE__ */ jsx58(Loader14, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" });
|
|
11270
|
-
return /* @__PURE__ */
|
|
11401
|
+
return /* @__PURE__ */ jsxs50("div", { className: "group relative w-full h-full", children: [
|
|
11271
11402
|
children,
|
|
11272
11403
|
/* @__PURE__ */ jsx58(
|
|
11273
11404
|
"div",
|
|
@@ -11298,8 +11429,9 @@ function KeyshareStatus(props) {
|
|
|
11298
11429
|
}
|
|
11299
11430
|
|
|
11300
11431
|
// src/internal/components/SecurityMenu/Keyshare/LastBackup.tsx
|
|
11432
|
+
import dayjs2 from "dayjs";
|
|
11301
11433
|
import { Cloud as Cloud3, HardDrive, Server as Server2 } from "lucide-react";
|
|
11302
|
-
import { Fragment as Fragment18, jsx as jsx59, jsxs as
|
|
11434
|
+
import { Fragment as Fragment18, jsx as jsx59, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
11303
11435
|
function parseOS(ua) {
|
|
11304
11436
|
if (!ua) return null;
|
|
11305
11437
|
if (ua.includes("Mac OS X")) return "macOS";
|
|
@@ -11321,49 +11453,49 @@ function LastBackup(props) {
|
|
|
11321
11453
|
} = createdRecoveryStats || {};
|
|
11322
11454
|
const hasBackupData = backup?.server?.enabled && backup.server.lastBackup || !backup.server.lastBackup && recoveryCreatedAt || backup.cloud.enabled && backup.cloud?.lastBackup || backup.local.enabled && backup.local.lastBackup;
|
|
11323
11455
|
if (!hasBackupData) return null;
|
|
11324
|
-
return /* @__PURE__ */
|
|
11325
|
-
/* @__PURE__ */
|
|
11456
|
+
return /* @__PURE__ */ jsxs51(Highlight, { type: "info", className: "flex flex-col gap-[var(--l-pass-gap)] text-[10px] leading-tight", children: [
|
|
11457
|
+
/* @__PURE__ */ jsxs51("span", { className: "flex items-center gap-[var(--l-pass-gap)] font-bold text-xs leading-4", children: [
|
|
11326
11458
|
/* @__PURE__ */ jsx59(Server2, { className: "w-4 h-4 inline" }),
|
|
11327
|
-
" Last Keyshare Vault Backup"
|
|
11459
|
+
/* @__PURE__ */ jsx59("span", { children: "Last Keyshare Vault Backup" })
|
|
11328
11460
|
] }),
|
|
11329
|
-
recoveryCreatedAt && /* @__PURE__ */
|
|
11330
|
-
/* @__PURE__ */ jsx59("span", { children:
|
|
11461
|
+
recoveryCreatedAt && /* @__PURE__ */ jsxs51(Fragment18, { children: [
|
|
11462
|
+
/* @__PURE__ */ jsx59("span", { children: dayjs2(recoveryCreatedAt).format("MMMM DD, YYYY HH:mm") }),
|
|
11331
11463
|
/* @__PURE__ */ jsx59("span", { children: `${recoveryBrowser || "UNKNOWN"} browser at ${recoveryDeviceName || "UNKNOWN"} device under ${parseOS(recoveryUa) || "UNKNOWN"} OS` })
|
|
11332
11464
|
] }),
|
|
11333
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */
|
|
11465
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs51("div", { className: "flex items-center gap-1", children: [
|
|
11334
11466
|
/* @__PURE__ */ jsx59(Cloud3, { className: "h-3 w-3" }),
|
|
11335
|
-
/* @__PURE__ */
|
|
11467
|
+
/* @__PURE__ */ jsxs51("span", { children: [
|
|
11336
11468
|
"Cloud: ",
|
|
11337
|
-
|
|
11469
|
+
dayjs2(backup.cloud.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11338
11470
|
] })
|
|
11339
11471
|
] }),
|
|
11340
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */
|
|
11472
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs51("div", { className: "flex items-center gap-1", children: [
|
|
11341
11473
|
/* @__PURE__ */ jsx59(HardDrive, { className: "h-3 w-3" }),
|
|
11342
|
-
/* @__PURE__ */
|
|
11474
|
+
/* @__PURE__ */ jsxs51("span", { children: [
|
|
11343
11475
|
"Local: ",
|
|
11344
|
-
|
|
11476
|
+
dayjs2(backup.local.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11345
11477
|
] })
|
|
11346
11478
|
] })
|
|
11347
11479
|
] });
|
|
11348
11480
|
}
|
|
11349
11481
|
|
|
11350
11482
|
// src/internal/components/SecurityMenu/Keyshare/Keyshare.tsx
|
|
11351
|
-
import { Fragment as Fragment19, jsx as jsx60, jsxs as
|
|
11483
|
+
import { Fragment as Fragment19, jsx as jsx60, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
11352
11484
|
function Keyshare(props) {
|
|
11353
11485
|
const { userId, serverHasKeyshare, localInfo, hasServerBackup, createdRecoveryStats, isLoading, refresh } = props;
|
|
11354
11486
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
11355
|
-
return /* @__PURE__ */
|
|
11356
|
-
/* @__PURE__ */
|
|
11487
|
+
return /* @__PURE__ */ jsxs52(Fragment19, { children: [
|
|
11488
|
+
/* @__PURE__ */ jsxs52("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
11357
11489
|
/* @__PURE__ */ jsx60("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Keyshare Status" }),
|
|
11358
11490
|
/* @__PURE__ */ jsx60(Button, { variant: "ghost", size: "icon", title: "Refresh", disabled: isLoading, onClick: refresh, children: isLoading ? /* @__PURE__ */ jsx60(Loader15, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx60(RefreshCw2, { className: "h-4 w-4" }) })
|
|
11359
11491
|
] }),
|
|
11360
|
-
/* @__PURE__ */
|
|
11492
|
+
/* @__PURE__ */ jsxs52("div", { className: "grid grid-cols-3 gap-[var(--l-pass-gap)] px-[var(--l-pass-gap)]", children: [
|
|
11361
11493
|
/* @__PURE__ */ jsx60(
|
|
11362
11494
|
KeyshareStatus,
|
|
11363
11495
|
{
|
|
11364
11496
|
content: serverHasKeyshare ? "Your Server Security Key Share is safe and ready" : "Server Security Key Share is missing",
|
|
11365
11497
|
icon: serverHasKeyshare ? PositiveIcon : NegativeIcon,
|
|
11366
|
-
children: /* @__PURE__ */
|
|
11498
|
+
children: /* @__PURE__ */ jsxs52(
|
|
11367
11499
|
Highlight,
|
|
11368
11500
|
{
|
|
11369
11501
|
type: serverHasKeyshare ? "success" : "warning",
|
|
@@ -11381,7 +11513,7 @@ function Keyshare(props) {
|
|
|
11381
11513
|
{
|
|
11382
11514
|
content: localInfo?.hasKeyshare ? "Your Private Local Security Key Share is safe and ready" : "Private Local Security Key Share is missing",
|
|
11383
11515
|
icon: localInfo?.hasKeyshare ? PositiveIcon : NegativeIcon,
|
|
11384
|
-
children: /* @__PURE__ */
|
|
11516
|
+
children: /* @__PURE__ */ jsxs52(
|
|
11385
11517
|
Highlight,
|
|
11386
11518
|
{
|
|
11387
11519
|
type: localInfo?.hasKeyshare ? "success" : "warning",
|
|
@@ -11399,7 +11531,7 @@ function Keyshare(props) {
|
|
|
11399
11531
|
{
|
|
11400
11532
|
content: hasServerBackup ? "Security Key Share Vault Backup exists and ready" : "Security Key Share Vault Backup Missing. Create one to ensure your data is safe.",
|
|
11401
11533
|
icon: hasServerBackup ? PositiveIcon : NegativeIcon,
|
|
11402
|
-
children: /* @__PURE__ */
|
|
11534
|
+
children: /* @__PURE__ */ jsxs52(
|
|
11403
11535
|
Highlight,
|
|
11404
11536
|
{
|
|
11405
11537
|
type: hasServerBackup ? "success" : "warning",
|
|
@@ -11419,15 +11551,15 @@ function Keyshare(props) {
|
|
|
11419
11551
|
}
|
|
11420
11552
|
|
|
11421
11553
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
11422
|
-
import { Fragment as Fragment20, jsx as jsx61, jsxs as
|
|
11554
|
+
import { Fragment as Fragment20, jsx as jsx61, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
11423
11555
|
function SecurityMenu() {
|
|
11424
11556
|
const qc = useQueryClient17();
|
|
11425
11557
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11426
11558
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11427
11559
|
const userId = jwtTokenManager2.getUserId();
|
|
11428
11560
|
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
11429
|
-
const [isRemoving, setIsRemoving] =
|
|
11430
|
-
const [appToRemove, setAppToRemove] =
|
|
11561
|
+
const [isRemoving, setIsRemoving] = useState14(false);
|
|
11562
|
+
const [appToRemove, setAppToRemove] = useState14(null);
|
|
11431
11563
|
const { data: recoveryData, isFetching: isRecoveryLoading } = useQuery13({
|
|
11432
11564
|
enabled: !!userId,
|
|
11433
11565
|
queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
|
|
@@ -11475,8 +11607,8 @@ function SecurityMenu() {
|
|
|
11475
11607
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
11476
11608
|
},
|
|
11477
11609
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11478
|
-
children: /* @__PURE__ */
|
|
11479
|
-
/* @__PURE__ */
|
|
11610
|
+
children: /* @__PURE__ */ jsxs53(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11611
|
+
/* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11480
11612
|
/* @__PURE__ */ jsx61(
|
|
11481
11613
|
Button,
|
|
11482
11614
|
{
|
|
@@ -11492,7 +11624,7 @@ function SecurityMenu() {
|
|
|
11492
11624
|
),
|
|
11493
11625
|
/* @__PURE__ */ jsx61("span", { className: "text-xl font-semibold", children: "Security" })
|
|
11494
11626
|
] }),
|
|
11495
|
-
!appToRemove && /* @__PURE__ */
|
|
11627
|
+
!appToRemove && /* @__PURE__ */ jsxs53(Fragment20, { children: [
|
|
11496
11628
|
/* @__PURE__ */ jsx61(
|
|
11497
11629
|
Keyshare,
|
|
11498
11630
|
{
|
|
@@ -11505,21 +11637,28 @@ function SecurityMenu() {
|
|
|
11505
11637
|
refresh: () => qc.invalidateQueries({ queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId] })
|
|
11506
11638
|
}
|
|
11507
11639
|
),
|
|
11508
|
-
trustedApps.length > 0 && /* @__PURE__ */
|
|
11509
|
-
/* @__PURE__ */
|
|
11640
|
+
trustedApps.length > 0 && /* @__PURE__ */ jsxs53(Fragment20, { children: [
|
|
11641
|
+
/* @__PURE__ */ jsxs53("div", { className: "w-full space-y-2", children: [
|
|
11510
11642
|
/* @__PURE__ */ jsx61("div", { className: "font-medium text-xs text-[var(--l-pass-fg)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
11511
|
-
/* @__PURE__ */ jsx61("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */
|
|
11643
|
+
/* @__PURE__ */ jsx61("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs53(
|
|
11512
11644
|
"div",
|
|
11513
11645
|
{
|
|
11514
|
-
className: "text-[10px] leading-tight p-2 rounded flex items-center gap-
|
|
11646
|
+
className: "text-[10px] leading-tight p-2 rounded-[var(--l-pass-el-bdrs)] flex items-center gap-[var(--l-pass-gap)] bg-[var(--l-pass-bg-info)]",
|
|
11515
11647
|
children: [
|
|
11516
|
-
app.appLogo ? /* @__PURE__ */ jsx61(
|
|
11517
|
-
|
|
11518
|
-
|
|
11648
|
+
app.appLogo ? /* @__PURE__ */ jsx61(
|
|
11649
|
+
"img",
|
|
11650
|
+
{
|
|
11651
|
+
src: app.appLogo,
|
|
11652
|
+
alt: app.appName,
|
|
11653
|
+
className: "w-8 h-8 rounded-[var(--l-pass-el-bdrs)] object-cover flex-shrink-0"
|
|
11654
|
+
}
|
|
11655
|
+
) : /* @__PURE__ */ jsx61("div", { className: "w-8 h-8 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-muted)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx61("span", { className: "text-sm", children: "\u{1F517}" }) }),
|
|
11656
|
+
/* @__PURE__ */ jsxs53("div", { className: "flex-1 min-w-0", children: [
|
|
11657
|
+
/* @__PURE__ */ jsx61("div", { className: "font-semibold truncate", children: app.appName || new URL(app.origin).hostname }),
|
|
11519
11658
|
/* @__PURE__ */ jsx61("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: new URL(app.origin).hostname }),
|
|
11520
|
-
/* @__PURE__ */
|
|
11659
|
+
/* @__PURE__ */ jsxs53("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: [
|
|
11521
11660
|
"Trusted: ",
|
|
11522
|
-
|
|
11661
|
+
dayjs3(app.trustedAt).format("MMM D, YYYY HH:mm")
|
|
11523
11662
|
] })
|
|
11524
11663
|
] }),
|
|
11525
11664
|
/* @__PURE__ */ jsx61(
|
|
@@ -11528,7 +11667,7 @@ function SecurityMenu() {
|
|
|
11528
11667
|
variant: "ghost",
|
|
11529
11668
|
size: "icon",
|
|
11530
11669
|
title: "Remove from trusted",
|
|
11531
|
-
className: "text-[var(--l-pass-error)] flex-shrink-0",
|
|
11670
|
+
className: "text-[var(--l-pass-bg-error)] flex-shrink-0",
|
|
11532
11671
|
onClick: () => setAppToRemove({
|
|
11533
11672
|
projectId: app.projectId,
|
|
11534
11673
|
origin: app.origin,
|
|
@@ -11536,7 +11675,7 @@ function SecurityMenu() {
|
|
|
11536
11675
|
appName: app.appName,
|
|
11537
11676
|
appLogo: app.appLogo
|
|
11538
11677
|
}),
|
|
11539
|
-
children: /* @__PURE__ */ jsx61(Trash22, { className: "h-
|
|
11678
|
+
children: /* @__PURE__ */ jsx61(Trash22, { className: "h-4 w-4" })
|
|
11540
11679
|
}
|
|
11541
11680
|
)
|
|
11542
11681
|
]
|
|
@@ -11547,25 +11686,25 @@ function SecurityMenu() {
|
|
|
11547
11686
|
/* @__PURE__ */ jsx61("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } })
|
|
11548
11687
|
] })
|
|
11549
11688
|
] }),
|
|
11550
|
-
!!appToRemove && /* @__PURE__ */
|
|
11551
|
-
/* @__PURE__ */
|
|
11689
|
+
!!appToRemove && /* @__PURE__ */ jsxs53("div", { className: "w-full", children: [
|
|
11690
|
+
/* @__PURE__ */ jsxs53("div", { className: "text-center", children: [
|
|
11552
11691
|
/* @__PURE__ */ jsx61("div", { className: "text-lg font-semibold mb-2", children: "Remove Trusted App?" }),
|
|
11553
|
-
/* @__PURE__ */
|
|
11692
|
+
/* @__PURE__ */ jsxs53("div", { className: "flex items-center justify-center gap-2 mb-3", children: [
|
|
11554
11693
|
appToRemove.appLogo ? /* @__PURE__ */ jsx61("img", { src: appToRemove.appLogo, alt: "", className: "w-10 h-10 rounded-md object-cover" }) : /* @__PURE__ */ jsx61("div", { className: "w-10 h-10 rounded-md bg-[var(--l-pass-bg-muted)] flex items-center justify-center", children: /* @__PURE__ */ jsx61("span", { className: "text-lg", children: "\u{1F517}" }) }),
|
|
11555
|
-
/* @__PURE__ */
|
|
11694
|
+
/* @__PURE__ */ jsxs53("div", { className: "text-left", children: [
|
|
11556
11695
|
/* @__PURE__ */ jsx61("div", { className: "font-medium", children: appToRemove.appName || appToRemove.hostname }),
|
|
11557
11696
|
/* @__PURE__ */ jsx61("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: appToRemove.hostname })
|
|
11558
11697
|
] })
|
|
11559
11698
|
] }),
|
|
11560
|
-
/* @__PURE__ */
|
|
11699
|
+
/* @__PURE__ */ jsxs53("div", { className: "text-xs text-[var(--l-pass-fg-muted)] text-left space-y-1 mb-4", children: [
|
|
11561
11700
|
/* @__PURE__ */ jsx61("p", { children: "After removing this application:" }),
|
|
11562
|
-
/* @__PURE__ */
|
|
11701
|
+
/* @__PURE__ */ jsxs53("ul", { className: "list-disc list-inside ml-2 space-y-0.5", children: [
|
|
11563
11702
|
/* @__PURE__ */ jsx61("li", { children: "All transactions will require confirmation" }),
|
|
11564
11703
|
/* @__PURE__ */ jsx61("li", { children: 'You can re-add it anytime by checking "Trust this app"' })
|
|
11565
11704
|
] })
|
|
11566
11705
|
] })
|
|
11567
11706
|
] }),
|
|
11568
|
-
/* @__PURE__ */
|
|
11707
|
+
/* @__PURE__ */ jsxs53("div", { className: "flex gap-2", children: [
|
|
11569
11708
|
/* @__PURE__ */ jsx61(Button, { variant: "outline", className: "flex-1", onClick: () => setAppToRemove(null), disabled: isRemoving, children: "Cancel" }),
|
|
11570
11709
|
/* @__PURE__ */ jsx61(
|
|
11571
11710
|
Button,
|
|
@@ -11586,20 +11725,20 @@ function SecurityMenu() {
|
|
|
11586
11725
|
|
|
11587
11726
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
11588
11727
|
import { AlertCircle as AlertCircle5, ArrowLeft as ArrowLeft13, CheckCircle2 as CheckCircle23, Loader as Loader17, Wallet as Wallet3 } from "lucide-react";
|
|
11589
|
-
import { useEffect as
|
|
11728
|
+
import { useEffect as useEffect26, useState as useState16 } from "react";
|
|
11590
11729
|
import { isAddress as isAddress2 } from "viem";
|
|
11591
11730
|
import { useBalance as useBalance4 } from "wagmi";
|
|
11592
11731
|
|
|
11593
11732
|
// src/hooks/useSendTransaction.ts
|
|
11594
|
-
import { useCallback as useCallback14, useState as
|
|
11733
|
+
import { useCallback as useCallback14, useState as useState15 } from "react";
|
|
11595
11734
|
import { isAddress, parseEther as parseEther2 } from "viem";
|
|
11596
11735
|
init_account();
|
|
11597
11736
|
function useSendTransaction() {
|
|
11598
11737
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11599
11738
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11600
|
-
const [isLoading, setIsLoading] =
|
|
11601
|
-
const [error, setError] =
|
|
11602
|
-
const [userOpHash, setUserOpHash] =
|
|
11739
|
+
const [isLoading, setIsLoading] = useState15(false);
|
|
11740
|
+
const [error, setError] = useState15(null);
|
|
11741
|
+
const [userOpHash, setUserOpHash] = useState15(null);
|
|
11603
11742
|
const sendTransaction = useCallback14(
|
|
11604
11743
|
async (params) => {
|
|
11605
11744
|
if (!session || !address) {
|
|
@@ -11817,7 +11956,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
11817
11956
|
|
|
11818
11957
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
11819
11958
|
init_base();
|
|
11820
|
-
import { Fragment as Fragment21, jsx as jsx62, jsxs as
|
|
11959
|
+
import { Fragment as Fragment21, jsx as jsx62, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
11821
11960
|
function SendLumiaMenu() {
|
|
11822
11961
|
const page = useLayoutDataStore((st) => st.page);
|
|
11823
11962
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -11829,13 +11968,13 @@ function SendLumiaMenu() {
|
|
|
11829
11968
|
address,
|
|
11830
11969
|
chainId: lumiaBeam.id
|
|
11831
11970
|
});
|
|
11832
|
-
const [recipient, setRecipient] =
|
|
11833
|
-
const [amount, setAmount] =
|
|
11834
|
-
const [txStep, setTxStep] =
|
|
11835
|
-
const [validationError, setValidationError] =
|
|
11971
|
+
const [recipient, setRecipient] = useState16("");
|
|
11972
|
+
const [amount, setAmount] = useState16("");
|
|
11973
|
+
const [txStep, setTxStep] = useState16("input");
|
|
11974
|
+
const [validationError, setValidationError] = useState16(null);
|
|
11836
11975
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
11837
11976
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
11838
|
-
|
|
11977
|
+
useEffect26(() => {
|
|
11839
11978
|
if (open) {
|
|
11840
11979
|
setTxStep("input");
|
|
11841
11980
|
setValidationError(null);
|
|
@@ -11890,13 +12029,13 @@ function SendLumiaMenu() {
|
|
|
11890
12029
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
11891
12030
|
setAmount(maxAmount.toFixed(6));
|
|
11892
12031
|
};
|
|
11893
|
-
return /* @__PURE__ */
|
|
11894
|
-
/* @__PURE__ */
|
|
12032
|
+
return /* @__PURE__ */ jsxs54("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12033
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11895
12034
|
txStep === "input" && /* @__PURE__ */ jsx62(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx62(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
11896
12035
|
/* @__PURE__ */ jsx62("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
11897
12036
|
] }),
|
|
11898
|
-
txStep === "input" && /* @__PURE__ */
|
|
11899
|
-
/* @__PURE__ */
|
|
12037
|
+
txStep === "input" && /* @__PURE__ */ jsxs54(Fragment21, { children: [
|
|
12038
|
+
/* @__PURE__ */ jsxs54("div", { className: "w-full flex flex-col gap-2", children: [
|
|
11900
12039
|
/* @__PURE__ */ jsx62("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient Address" }),
|
|
11901
12040
|
/* @__PURE__ */ jsx62(
|
|
11902
12041
|
Input,
|
|
@@ -11909,16 +12048,16 @@ function SendLumiaMenu() {
|
|
|
11909
12048
|
}
|
|
11910
12049
|
)
|
|
11911
12050
|
] }),
|
|
11912
|
-
/* @__PURE__ */
|
|
11913
|
-
/* @__PURE__ */
|
|
12051
|
+
/* @__PURE__ */ jsxs54("div", { className: "w-full flex flex-col gap-2", children: [
|
|
12052
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex justify-between items-center", children: [
|
|
11914
12053
|
/* @__PURE__ */ jsx62("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: "Amount" }),
|
|
11915
|
-
/* @__PURE__ */
|
|
12054
|
+
/* @__PURE__ */ jsxs54("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
11916
12055
|
"Balance: ",
|
|
11917
12056
|
balance.toFixed(4),
|
|
11918
12057
|
" LUMIA"
|
|
11919
12058
|
] })
|
|
11920
12059
|
] }),
|
|
11921
|
-
/* @__PURE__ */
|
|
12060
|
+
/* @__PURE__ */ jsxs54("div", { className: "w-full relative", children: [
|
|
11922
12061
|
/* @__PURE__ */ jsx62(
|
|
11923
12062
|
Input,
|
|
11924
12063
|
{
|
|
@@ -11943,50 +12082,50 @@ function SendLumiaMenu() {
|
|
|
11943
12082
|
)
|
|
11944
12083
|
] })
|
|
11945
12084
|
] }),
|
|
11946
|
-
(validationError || error) && /* @__PURE__ */
|
|
12085
|
+
(validationError || error) && /* @__PURE__ */ jsxs54("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
11947
12086
|
/* @__PURE__ */ jsx62(AlertCircle5, { className: "h-4 w-4" }),
|
|
11948
12087
|
/* @__PURE__ */ jsx62("span", { className: "text-sm", children: validationError || error })
|
|
11949
12088
|
] }),
|
|
11950
12089
|
/* @__PURE__ */ jsx62(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
11951
12090
|
] }),
|
|
11952
|
-
txStep === "confirm" && /* @__PURE__ */
|
|
11953
|
-
/* @__PURE__ */
|
|
12091
|
+
txStep === "confirm" && /* @__PURE__ */ jsxs54(Fragment21, { children: [
|
|
12092
|
+
/* @__PURE__ */ jsxs54("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
11954
12093
|
/* @__PURE__ */ jsx62("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
11955
|
-
/* @__PURE__ */
|
|
11956
|
-
/* @__PURE__ */
|
|
12094
|
+
/* @__PURE__ */ jsxs54("div", { className: "space-y-2 text-sm", children: [
|
|
12095
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex justify-between", children: [
|
|
11957
12096
|
/* @__PURE__ */ jsx62("span", { children: "To:" }),
|
|
11958
12097
|
/* @__PURE__ */ jsx62("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
11959
12098
|
] }),
|
|
11960
|
-
/* @__PURE__ */
|
|
12099
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex justify-between", children: [
|
|
11961
12100
|
/* @__PURE__ */ jsx62("span", { children: "Amount:" }),
|
|
11962
|
-
/* @__PURE__ */
|
|
12101
|
+
/* @__PURE__ */ jsxs54("span", { className: `font-semibold`, children: [
|
|
11963
12102
|
amount,
|
|
11964
12103
|
" LUMIA"
|
|
11965
12104
|
] })
|
|
11966
12105
|
] }),
|
|
11967
|
-
/* @__PURE__ */
|
|
12106
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex justify-between", children: [
|
|
11968
12107
|
/* @__PURE__ */ jsx62("span", { children: "Network:" }),
|
|
11969
12108
|
/* @__PURE__ */ jsx62("span", { children: "Lumia Beam" })
|
|
11970
12109
|
] })
|
|
11971
12110
|
] })
|
|
11972
12111
|
] }),
|
|
11973
|
-
/* @__PURE__ */
|
|
12112
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex gap-2", children: [
|
|
11974
12113
|
/* @__PURE__ */ jsx62(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
11975
|
-
/* @__PURE__ */
|
|
12114
|
+
/* @__PURE__ */ jsxs54(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
11976
12115
|
isLoading && /* @__PURE__ */ jsx62(Loader17, { className: "h-4 w-4 animate-spin" }),
|
|
11977
12116
|
"Confirm"
|
|
11978
12117
|
] })
|
|
11979
12118
|
] })
|
|
11980
12119
|
] }),
|
|
11981
|
-
txStep === "pending" && /* @__PURE__ */
|
|
12120
|
+
txStep === "pending" && /* @__PURE__ */ jsxs54("div", { className: "py-8 text-center space-y-4", children: [
|
|
11982
12121
|
/* @__PURE__ */ jsx62(Loader17, { className: "h-5 w-5 animate-spin mx-auto" }),
|
|
11983
|
-
/* @__PURE__ */
|
|
12122
|
+
/* @__PURE__ */ jsxs54("div", { children: [
|
|
11984
12123
|
/* @__PURE__ */ jsx62("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
11985
12124
|
/* @__PURE__ */ jsx62("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
11986
12125
|
] })
|
|
11987
12126
|
] }),
|
|
11988
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
11989
|
-
/* @__PURE__ */
|
|
12127
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs54(Fragment21, { children: [
|
|
12128
|
+
/* @__PURE__ */ jsxs54("div", { className: "text-center py-4", children: [
|
|
11990
12129
|
/* @__PURE__ */ jsx62(CheckCircle23, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
11991
12130
|
/* @__PURE__ */ jsx62("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
11992
12131
|
/* @__PURE__ */ jsx62("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
@@ -12000,17 +12139,17 @@ function SendLumiaMenu() {
|
|
|
12000
12139
|
init_clients();
|
|
12001
12140
|
import { ArrowLeft as ArrowLeft14, CheckCircle2 as CheckCircle24, Copy as Copy2, Loader as Loader18 } from "lucide-react";
|
|
12002
12141
|
import QRCode from "qrcode";
|
|
12003
|
-
import { useCallback as useCallback15, useEffect as
|
|
12004
|
-
import { Fragment as Fragment22, jsx as jsx63, jsxs as
|
|
12142
|
+
import { useCallback as useCallback15, useEffect as useEffect27, useState as useState17 } from "react";
|
|
12143
|
+
import { Fragment as Fragment22, jsx as jsx63, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
12005
12144
|
function ReceiveLumiaMenu() {
|
|
12006
12145
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12007
12146
|
const page = useLayoutDataStore((st) => st.page);
|
|
12008
12147
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12009
12148
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
12010
12149
|
const open = page === "receive";
|
|
12011
|
-
const [qrCodeUrl, setQrCodeUrl] =
|
|
12012
|
-
const [copied, setCopied] =
|
|
12013
|
-
|
|
12150
|
+
const [qrCodeUrl, setQrCodeUrl] = useState17("");
|
|
12151
|
+
const [copied, setCopied] = useState17(false);
|
|
12152
|
+
useEffect27(() => {
|
|
12014
12153
|
if (open && address) {
|
|
12015
12154
|
QRCode.toDataURL(address, {
|
|
12016
12155
|
width: 200,
|
|
@@ -12033,7 +12172,7 @@ function ReceiveLumiaMenu() {
|
|
|
12033
12172
|
console.error("Failed to copy address:", error);
|
|
12034
12173
|
}
|
|
12035
12174
|
}, [address]);
|
|
12036
|
-
return /* @__PURE__ */
|
|
12175
|
+
return /* @__PURE__ */ jsxs55(
|
|
12037
12176
|
"div",
|
|
12038
12177
|
{
|
|
12039
12178
|
style: {
|
|
@@ -12042,21 +12181,21 @@ function ReceiveLumiaMenu() {
|
|
|
12042
12181
|
},
|
|
12043
12182
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
12044
12183
|
children: [
|
|
12045
|
-
/* @__PURE__ */
|
|
12184
|
+
/* @__PURE__ */ jsxs55("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12046
12185
|
/* @__PURE__ */ jsx63(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx63(ArrowLeft14, { className: "h-4 w-4" }) }),
|
|
12047
12186
|
/* @__PURE__ */ jsx63("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
12048
12187
|
] }),
|
|
12049
|
-
/* @__PURE__ */
|
|
12188
|
+
/* @__PURE__ */ jsxs55(Highlight, { className: "text-center", type: "warning", children: [
|
|
12050
12189
|
/* @__PURE__ */ jsx63("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
12051
12190
|
/* @__PURE__ */ jsx63("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
12052
12191
|
] }),
|
|
12053
12192
|
/* @__PURE__ */ jsx63("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx63("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx63(Loader18, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
12054
|
-
/* @__PURE__ */
|
|
12193
|
+
/* @__PURE__ */ jsxs55(Highlight, { type: "info", children: [
|
|
12055
12194
|
/* @__PURE__ */ jsx63("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
12056
|
-
/* @__PURE__ */ jsx63(Button, { onClick: handleCopy, className: "w-full", size: "
|
|
12195
|
+
/* @__PURE__ */ jsx63(Button, { onClick: handleCopy, className: "w-full", size: "large", children: copied ? /* @__PURE__ */ jsxs55(Fragment22, { children: [
|
|
12057
12196
|
/* @__PURE__ */ jsx63(CheckCircle24, { className: "h-4 w-4" }),
|
|
12058
12197
|
/* @__PURE__ */ jsx63("span", { children: "Copied!" })
|
|
12059
|
-
] }) : /* @__PURE__ */
|
|
12198
|
+
] }) : /* @__PURE__ */ jsxs55(Fragment22, { children: [
|
|
12060
12199
|
/* @__PURE__ */ jsx63(Copy2, { className: "h-4 w-4" }),
|
|
12061
12200
|
/* @__PURE__ */ jsx63("span", { children: "Copy Address" })
|
|
12062
12201
|
] }) })
|
|
@@ -12069,7 +12208,7 @@ function ReceiveLumiaMenu() {
|
|
|
12069
12208
|
|
|
12070
12209
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
12071
12210
|
import { ArrowLeft as ArrowLeft15 } from "lucide-react";
|
|
12072
|
-
import { useEffect as
|
|
12211
|
+
import { useEffect as useEffect28 } from "react";
|
|
12073
12212
|
|
|
12074
12213
|
// src/internal/components/SettingsMenu/constants.ts
|
|
12075
12214
|
import { ArrowLeftRight, DatabaseBackup, LockKeyhole, UsersRound } from "lucide-react";
|
|
@@ -12097,22 +12236,22 @@ var NAV_BUTTONS = [
|
|
|
12097
12236
|
];
|
|
12098
12237
|
|
|
12099
12238
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
12100
|
-
import { jsx as jsx65, jsxs as
|
|
12239
|
+
import { jsx as jsx65, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
12101
12240
|
function SettingsMenu() {
|
|
12102
12241
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12103
12242
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12104
12243
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
12105
12244
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
12106
|
-
|
|
12245
|
+
useEffect28(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
12107
12246
|
useProvidersList();
|
|
12108
12247
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
12109
12248
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
12110
|
-
return /* @__PURE__ */
|
|
12111
|
-
/* @__PURE__ */
|
|
12249
|
+
return /* @__PURE__ */ jsxs56("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12250
|
+
/* @__PURE__ */ jsxs56("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12112
12251
|
/* @__PURE__ */ jsx65(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx65(ArrowLeft15, { className: "h-4 w-4" }) }),
|
|
12113
12252
|
/* @__PURE__ */ jsx65("span", { className: "text-xl font-semibold", children: "Settings" })
|
|
12114
12253
|
] }),
|
|
12115
|
-
/* @__PURE__ */ jsx65("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */
|
|
12254
|
+
/* @__PURE__ */ jsx65("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */ jsxs56(
|
|
12116
12255
|
Button,
|
|
12117
12256
|
{
|
|
12118
12257
|
variant: "outline",
|
|
@@ -12136,12 +12275,12 @@ function SettingsMenu() {
|
|
|
12136
12275
|
|
|
12137
12276
|
// src/internal/components/TermsOfService.tsx
|
|
12138
12277
|
import { ArrowLeft as ArrowLeft16 } from "lucide-react";
|
|
12139
|
-
import { jsx as jsx66, jsxs as
|
|
12278
|
+
import { jsx as jsx66, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
12140
12279
|
function TermsOfService() {
|
|
12141
12280
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12142
12281
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12143
|
-
return /* @__PURE__ */
|
|
12144
|
-
/* @__PURE__ */
|
|
12282
|
+
return /* @__PURE__ */ jsxs57("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12283
|
+
/* @__PURE__ */ jsxs57("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12145
12284
|
/* @__PURE__ */ jsx66(
|
|
12146
12285
|
Button,
|
|
12147
12286
|
{
|
|
@@ -12154,7 +12293,7 @@ function TermsOfService() {
|
|
|
12154
12293
|
),
|
|
12155
12294
|
/* @__PURE__ */ jsx66("span", { className: "text-xl font-semibold", children: "Terms of Service" })
|
|
12156
12295
|
] }),
|
|
12157
|
-
/* @__PURE__ */
|
|
12296
|
+
/* @__PURE__ */ jsxs57(Highlight, { type: "warning", className: "text-center", children: [
|
|
12158
12297
|
/* @__PURE__ */ jsx66("span", { className: "block text-xs", children: "By using Lumia Passport you agree to our terms." }),
|
|
12159
12298
|
/* @__PURE__ */ jsx66("span", { className: "block text-xs", children: "To be updated..." })
|
|
12160
12299
|
] })
|
|
@@ -12164,7 +12303,7 @@ function TermsOfService() {
|
|
|
12164
12303
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
12165
12304
|
import { useQuery as useQuery14, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
|
|
12166
12305
|
import { ArrowLeft as ArrowLeft17, Loader as Loader19, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
12167
|
-
import { useCallback as useCallback16, useState as
|
|
12306
|
+
import { useCallback as useCallback16, useState as useState18 } from "react";
|
|
12168
12307
|
|
|
12169
12308
|
// src/internal/components/TransactionsMenu/api.ts
|
|
12170
12309
|
init_base();
|
|
@@ -12455,7 +12594,7 @@ async function getTransactionsListQuery(address) {
|
|
|
12455
12594
|
}
|
|
12456
12595
|
|
|
12457
12596
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
12458
|
-
import { ChevronLeft as ChevronLeft2, ChevronRight as
|
|
12597
|
+
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight5, Copy as Copy3 } from "lucide-react";
|
|
12459
12598
|
|
|
12460
12599
|
// src/internal/components/TransactionsMenu/utils.ts
|
|
12461
12600
|
init_base();
|
|
@@ -12502,20 +12641,20 @@ var formatTimestamp = (timestampMs) => {
|
|
|
12502
12641
|
};
|
|
12503
12642
|
|
|
12504
12643
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
12505
|
-
import { Fragment as Fragment23, jsx as jsx67, jsxs as
|
|
12644
|
+
import { Fragment as Fragment23, jsx as jsx67, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
12506
12645
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
12507
12646
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
12508
12647
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
12509
|
-
return /* @__PURE__ */
|
|
12510
|
-
/* @__PURE__ */
|
|
12648
|
+
return /* @__PURE__ */ jsxs58("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
12649
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
12511
12650
|
/* @__PURE__ */ jsx67("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
12512
|
-
/* @__PURE__ */
|
|
12651
|
+
/* @__PURE__ */ jsxs58("span", { children: [
|
|
12513
12652
|
formatValue2(internal.value, internalDecimals),
|
|
12514
12653
|
" ",
|
|
12515
12654
|
internalSymbol
|
|
12516
12655
|
] })
|
|
12517
12656
|
] }),
|
|
12518
|
-
/* @__PURE__ */
|
|
12657
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
12519
12658
|
/* @__PURE__ */ jsx67("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
12520
12659
|
/* @__PURE__ */ jsx67("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
12521
12660
|
] })
|
|
@@ -12528,7 +12667,7 @@ function TransactionsGroup(props) {
|
|
|
12528
12667
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
12529
12668
|
const assetDecimals = parent.decimals ?? 18;
|
|
12530
12669
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
12531
|
-
return /* @__PURE__ */
|
|
12670
|
+
return /* @__PURE__ */ jsxs58(
|
|
12532
12671
|
"div",
|
|
12533
12672
|
{
|
|
12534
12673
|
onClick: () => openInExplorer2(parent.parentHash),
|
|
@@ -12538,21 +12677,21 @@ function TransactionsGroup(props) {
|
|
|
12538
12677
|
"bg-transparent hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
12539
12678
|
),
|
|
12540
12679
|
children: [
|
|
12541
|
-
/* @__PURE__ */
|
|
12542
|
-
/* @__PURE__ */
|
|
12543
|
-
parent.direction === "in" ? /* @__PURE__ */ jsx67(ChevronLeft2, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx67(
|
|
12680
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
12681
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1 flex-0 w-fit", children: [
|
|
12682
|
+
parent.direction === "in" ? /* @__PURE__ */ jsx67(ChevronLeft2, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx67(ChevronRight5, { className: "w-4 h-4" }),
|
|
12544
12683
|
/* @__PURE__ */ jsx67("span", { className: "text-[10px]", children: isIncoming ? "RECEIVED" : "SENT" }),
|
|
12545
12684
|
parent.status === "ok" ? /* @__PURE__ */ jsx67(PositiveIcon, {}) : /* @__PURE__ */ jsx67(NegativeIcon, {})
|
|
12546
12685
|
] }),
|
|
12547
12686
|
/* @__PURE__ */ jsx67("span", { className: "block flex-0 font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) })
|
|
12548
12687
|
] }),
|
|
12549
|
-
/* @__PURE__ */
|
|
12550
|
-
/* @__PURE__ */
|
|
12688
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
12689
|
+
/* @__PURE__ */ jsxs58("span", { className: "font-bold", children: [
|
|
12551
12690
|
formatValue2(parent.value, assetDecimals),
|
|
12552
12691
|
" ",
|
|
12553
12692
|
assetSymbol
|
|
12554
12693
|
] }),
|
|
12555
|
-
/* @__PURE__ */
|
|
12694
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-0", children: [
|
|
12556
12695
|
/* @__PURE__ */ jsx67(
|
|
12557
12696
|
Button,
|
|
12558
12697
|
{
|
|
@@ -12579,19 +12718,19 @@ function TransactionsGroup(props) {
|
|
|
12579
12718
|
)
|
|
12580
12719
|
] })
|
|
12581
12720
|
] }),
|
|
12582
|
-
internalsToRender.length > 0 && /* @__PURE__ */
|
|
12583
|
-
/* @__PURE__ */
|
|
12721
|
+
internalsToRender.length > 0 && /* @__PURE__ */ jsxs58(Fragment23, { children: [
|
|
12722
|
+
/* @__PURE__ */ jsxs58("div", { className: "w-full flex items-center", children: [
|
|
12584
12723
|
/* @__PURE__ */ jsx67("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
12585
12724
|
/* @__PURE__ */ jsx67("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Internals" }),
|
|
12586
12725
|
/* @__PURE__ */ jsx67("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
12587
12726
|
] }),
|
|
12588
|
-
/* @__PURE__ */
|
|
12727
|
+
/* @__PURE__ */ jsxs58(
|
|
12589
12728
|
"div",
|
|
12590
12729
|
{
|
|
12591
12730
|
className: "w-full rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
12592
12731
|
onClick: (event) => event.stopPropagation(),
|
|
12593
12732
|
children: [
|
|
12594
|
-
/* @__PURE__ */
|
|
12733
|
+
/* @__PURE__ */ jsxs58(
|
|
12595
12734
|
Button,
|
|
12596
12735
|
{
|
|
12597
12736
|
variant: "ghost",
|
|
@@ -12599,7 +12738,7 @@ function TransactionsGroup(props) {
|
|
|
12599
12738
|
className: "w-full justify-between",
|
|
12600
12739
|
onClick: () => onToggleExpanded(group.id),
|
|
12601
12740
|
children: [
|
|
12602
|
-
/* @__PURE__ */
|
|
12741
|
+
/* @__PURE__ */ jsxs58("span", { children: [
|
|
12603
12742
|
"View internal calls (",
|
|
12604
12743
|
internalsToRender.length,
|
|
12605
12744
|
")"
|
|
@@ -12627,14 +12766,14 @@ function TransactionsGroup(props) {
|
|
|
12627
12766
|
}
|
|
12628
12767
|
|
|
12629
12768
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
12630
|
-
import { jsx as jsx68, jsxs as
|
|
12769
|
+
import { jsx as jsx68, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
12631
12770
|
function TransactionsMenu() {
|
|
12632
12771
|
const qc = useQueryClient18();
|
|
12633
12772
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12634
12773
|
const page = useLayoutDataStore((st) => st.page);
|
|
12635
12774
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12636
12775
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
12637
|
-
const [expandedGroups, setExpandedGroups] =
|
|
12776
|
+
const [expandedGroups, setExpandedGroups] = useState18({});
|
|
12638
12777
|
const {
|
|
12639
12778
|
data: txHistoryGroups = [],
|
|
12640
12779
|
isLoading: isTxHistoryLoading,
|
|
@@ -12659,8 +12798,8 @@ function TransactionsMenu() {
|
|
|
12659
12798
|
"--l-pass-list-scrollbar-pd-r": "calc(var(--l-pass-pd) - 4px)"
|
|
12660
12799
|
},
|
|
12661
12800
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
12662
|
-
children: /* @__PURE__ */
|
|
12663
|
-
/* @__PURE__ */
|
|
12801
|
+
children: /* @__PURE__ */ jsxs59(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12802
|
+
/* @__PURE__ */ jsxs59("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12664
12803
|
/* @__PURE__ */ jsx68(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx68(ArrowLeft17, { className: "h-4 w-4" }) }),
|
|
12665
12804
|
/* @__PURE__ */ jsx68("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
12666
12805
|
/* @__PURE__ */ jsx68(
|
|
@@ -12676,11 +12815,11 @@ function TransactionsMenu() {
|
|
|
12676
12815
|
)
|
|
12677
12816
|
] }),
|
|
12678
12817
|
isTxHistoryLoading && /* @__PURE__ */ jsx68("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx68(Loader19, { className: "h-5 w-5 animate-spin" }) }),
|
|
12679
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */
|
|
12818
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs59(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
12680
12819
|
/* @__PURE__ */ jsx68(XCircle2, { className: "w-4 h-4 flex-none" }),
|
|
12681
12820
|
/* @__PURE__ */ jsx68("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
12682
12821
|
] }),
|
|
12683
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsx68(Highlight, { type: "warning", children: /* @__PURE__ */ jsx68("span", { children: "No transactions found.
|
|
12822
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsx68(Highlight, { type: "warning", children: /* @__PURE__ */ jsx68("span", { children: "No transactions found." }) }),
|
|
12684
12823
|
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ jsx68("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx68(
|
|
12685
12824
|
TransactionsGroup,
|
|
12686
12825
|
{
|
|
@@ -12825,7 +12964,7 @@ function usePageMapper() {
|
|
|
12825
12964
|
},
|
|
12826
12965
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
12827
12966
|
);
|
|
12828
|
-
|
|
12967
|
+
useEffect29(() => {
|
|
12829
12968
|
if (page === null) return closeDialog();
|
|
12830
12969
|
const pageItem = protectedRoutes[page];
|
|
12831
12970
|
if (!pageItem) {
|
|
@@ -12839,29 +12978,17 @@ function usePageMapper() {
|
|
|
12839
12978
|
|
|
12840
12979
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
12841
12980
|
init_auth();
|
|
12842
|
-
import { useEffect as
|
|
12981
|
+
import { useEffect as useEffect30 } from "react";
|
|
12843
12982
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
12844
12983
|
id: "email-not-connected",
|
|
12845
12984
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
12846
12985
|
message: "Email is not connected"
|
|
12847
12986
|
};
|
|
12848
|
-
var BACKUP_IS_NOT_CREATED_NOTIFICATION = {
|
|
12849
|
-
id: "backup-is-not-created",
|
|
12850
|
-
target: "keysare-backup" /* KEYSARE_BACKUP */,
|
|
12851
|
-
message: "Backup is not created"
|
|
12852
|
-
};
|
|
12853
12987
|
function useSettingsNotifications() {
|
|
12854
|
-
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
12855
12988
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
12856
12989
|
const providers = jwtTokenManager2.getProviders();
|
|
12857
12990
|
const hasEmail = providers.includes("email");
|
|
12858
|
-
|
|
12859
|
-
setSettingsNotifications({
|
|
12860
|
-
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
12861
|
-
status: hasServerVault ? "resolved" : "active"
|
|
12862
|
-
});
|
|
12863
|
-
}, [hasServerVault, setSettingsNotifications]);
|
|
12864
|
-
useEffect29(() => {
|
|
12991
|
+
useEffect30(() => {
|
|
12865
12992
|
setSettingsNotifications({
|
|
12866
12993
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
12867
12994
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -12870,7 +12997,7 @@ function useSettingsNotifications() {
|
|
|
12870
12997
|
}
|
|
12871
12998
|
|
|
12872
12999
|
// src/internal/hooks/useWalletStatus.ts
|
|
12873
|
-
import { useEffect as
|
|
13000
|
+
import { useEffect as useEffect31 } from "react";
|
|
12874
13001
|
init_auth();
|
|
12875
13002
|
function useWalletStatus() {
|
|
12876
13003
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -12880,7 +13007,7 @@ function useWalletStatus() {
|
|
|
12880
13007
|
config: { current: config },
|
|
12881
13008
|
callbacks
|
|
12882
13009
|
} = useLumiaPassportConfig();
|
|
12883
|
-
|
|
13010
|
+
useEffect31(() => {
|
|
12884
13011
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
12885
13012
|
const userId = jwtTokenManager2.getUserId();
|
|
12886
13013
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -12900,16 +13027,17 @@ function useWalletStatus() {
|
|
|
12900
13027
|
}
|
|
12901
13028
|
|
|
12902
13029
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
12903
|
-
import { jsx as jsx70, jsxs as
|
|
13030
|
+
import { jsx as jsx70, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
12904
13031
|
function LumiaPassportDialog() {
|
|
12905
13032
|
const config = useLumiaPassportConfig().config;
|
|
12906
13033
|
const className = config.current?.ui?.dialogClassName;
|
|
12907
13034
|
const session = useLumiaPassportSession((st) => st.session);
|
|
13035
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
12908
13036
|
const page = useLayoutDataStore((st) => st.page);
|
|
12909
13037
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
12910
13038
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12911
13039
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
12912
|
-
|
|
13040
|
+
useEffect32(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
12913
13041
|
usePageMapper();
|
|
12914
13042
|
useAutoConnect();
|
|
12915
13043
|
useCheckVaultStatus();
|
|
@@ -12919,6 +13047,7 @@ function LumiaPassportDialog() {
|
|
|
12919
13047
|
useListenIframeAuthEvents();
|
|
12920
13048
|
useBackupWarning();
|
|
12921
13049
|
useWalletStatus();
|
|
13050
|
+
const isHeaderHidden = !session || page === "keysare-backup" /* KEYSARE_BACKUP */ && !hasServerVault;
|
|
12922
13051
|
return /* @__PURE__ */ jsx70(
|
|
12923
13052
|
Dialog,
|
|
12924
13053
|
{
|
|
@@ -12927,10 +13056,10 @@ function LumiaPassportDialog() {
|
|
|
12927
13056
|
if (isDialogForced) return;
|
|
12928
13057
|
if (!open) setPage(null);
|
|
12929
13058
|
},
|
|
12930
|
-
children: /* @__PURE__ */
|
|
13059
|
+
children: /* @__PURE__ */ jsxs60(DialogContent, { colorMode, className, children: [
|
|
12931
13060
|
/* @__PURE__ */ jsx70(VisuallyHidden, { children: /* @__PURE__ */ jsx70(DialogTitle, { children: dialogTitle }) }),
|
|
12932
13061
|
/* @__PURE__ */ jsx70(DialogDescription, { className: "sr-only", children: dialogDescription }),
|
|
12933
|
-
|
|
13062
|
+
!isHeaderHidden && /* @__PURE__ */ jsx70(Header, {}),
|
|
12934
13063
|
/* @__PURE__ */ jsx70(AnimatePresence3, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx70(
|
|
12935
13064
|
motion3.div,
|
|
12936
13065
|
{
|
|
@@ -12995,7 +13124,7 @@ var TssManagerWithRef = React9.forwardRef((props, ref) => {
|
|
|
12995
13124
|
init_wallet();
|
|
12996
13125
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
12997
13126
|
import { useMutation as useMutation15, useQueryClient as useQueryClient19 } from "@tanstack/react-query";
|
|
12998
|
-
import React10, { useCallback as useCallback19, useEffect as
|
|
13127
|
+
import React10, { useCallback as useCallback19, useEffect as useEffect33 } from "react";
|
|
12999
13128
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
13000
13129
|
function WalletConnectHandler() {
|
|
13001
13130
|
const qc = useQueryClient19();
|
|
@@ -13040,7 +13169,7 @@ function WalletConnectHandler() {
|
|
|
13040
13169
|
[qc, passportWalletAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
13041
13170
|
);
|
|
13042
13171
|
const [hasStartedLinking, setHasStartedLinking] = React10.useState(false);
|
|
13043
|
-
|
|
13172
|
+
useEffect33(() => {
|
|
13044
13173
|
if (isWalletLinking && !hasStartedLinking) {
|
|
13045
13174
|
setHasStartedLinking(true);
|
|
13046
13175
|
setProviderType(null);
|
|
@@ -13060,7 +13189,7 @@ function WalletConnectHandler() {
|
|
|
13060
13189
|
if (isConnected) disconnect();
|
|
13061
13190
|
}
|
|
13062
13191
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
13063
|
-
|
|
13192
|
+
useEffect33(() => {
|
|
13064
13193
|
if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
|
|
13065
13194
|
console.log("[WalletConnectHandler] Modal closed without connecting");
|
|
13066
13195
|
onLinkingComplete(false);
|
|
@@ -13136,7 +13265,7 @@ function WalletConnectHandler() {
|
|
|
13136
13265
|
setPage(passportWalletAddress ? "manage-wallet" /* MANAGE_WALLET */ : "auth" /* AUTH */);
|
|
13137
13266
|
}
|
|
13138
13267
|
});
|
|
13139
|
-
|
|
13268
|
+
useEffect33(() => {
|
|
13140
13269
|
if (!!chain?.id && isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
13141
13270
|
console.log("[WalletConnectHandler] handleWalletSign triggered");
|
|
13142
13271
|
handleWalletSign({ chainId: chain.id, signingWalletAddress: walletAddress });
|
|
@@ -13146,7 +13275,7 @@ function WalletConnectHandler() {
|
|
|
13146
13275
|
}
|
|
13147
13276
|
|
|
13148
13277
|
// src/context/LumiaPassportSessionContext.tsx
|
|
13149
|
-
import { jsx as jsx71, jsxs as
|
|
13278
|
+
import { jsx as jsx71, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
13150
13279
|
var useLumiaPassportSession = create6((set) => ({
|
|
13151
13280
|
isLoading: false,
|
|
13152
13281
|
usePaymaster: true,
|
|
@@ -13172,7 +13301,7 @@ var useLumiaPassportSession = create6((set) => ({
|
|
|
13172
13301
|
}));
|
|
13173
13302
|
function LumiaPassportSessionProvider({ children }) {
|
|
13174
13303
|
const config = useLumiaPassportConfig().config;
|
|
13175
|
-
return /* @__PURE__ */
|
|
13304
|
+
return /* @__PURE__ */ jsxs61(Fragment24, { children: [
|
|
13176
13305
|
children,
|
|
13177
13306
|
config.current?.wallet?.enabled && /* @__PURE__ */ jsx71(WalletConnectHandler, {}),
|
|
13178
13307
|
/* @__PURE__ */ jsx71(BalanceFeedProvider, {}),
|
|
@@ -13229,8 +13358,8 @@ function LumiaPassportProvider(props) {
|
|
|
13229
13358
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
13230
13359
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
13231
13360
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
13232
|
-
|
|
13233
|
-
const config =
|
|
13361
|
+
useEffect34(() => notifyNoProjetctId(projectId), [projectId]);
|
|
13362
|
+
const config = useRef14({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
13234
13363
|
const updateConfig = useCallback20((updates) => {
|
|
13235
13364
|
const prev = config.current;
|
|
13236
13365
|
const next = { ...prev };
|
|
@@ -13266,7 +13395,7 @@ function LumiaPassportProvider(props) {
|
|
|
13266
13395
|
}
|
|
13267
13396
|
config.current = next;
|
|
13268
13397
|
}, []);
|
|
13269
|
-
|
|
13398
|
+
useEffect34(() => {
|
|
13270
13399
|
if (typeof window === "undefined" || !projectId) return;
|
|
13271
13400
|
const mergedConfig = merge2(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
13272
13401
|
updateConfig(mergedConfig);
|
|
@@ -13322,9 +13451,9 @@ var useLumiaPassportConfig = () => {
|
|
|
13322
13451
|
|
|
13323
13452
|
// src/components/ConnectWalletButton.tsx
|
|
13324
13453
|
import { Cloud as Cloud5, Laptop as Laptop2, Loader as Loader20, Shield as Shield2 } from "lucide-react";
|
|
13325
|
-
import { useEffect as
|
|
13454
|
+
import { useEffect as useEffect35, useMemo as useMemo6 } from "react";
|
|
13326
13455
|
init_auth();
|
|
13327
|
-
import { Fragment as Fragment25, jsx as jsx74, jsxs as
|
|
13456
|
+
import { Fragment as Fragment25, jsx as jsx74, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
13328
13457
|
function getFormattedStatus(label, status, showStatus) {
|
|
13329
13458
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
13330
13459
|
if (!isStatus) return label;
|
|
@@ -13343,7 +13472,7 @@ function ConnectWalletButton(props) {
|
|
|
13343
13472
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
13344
13473
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
13345
13474
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
13346
|
-
|
|
13475
|
+
useEffect35(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
13347
13476
|
const avatar = jwtTokenManager2.getAvatar();
|
|
13348
13477
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
13349
13478
|
const indicators = useMemo6(() => {
|
|
@@ -13356,7 +13485,7 @@ function ConnectWalletButton(props) {
|
|
|
13356
13485
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
13357
13486
|
return /* @__PURE__ */ jsx74("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
13358
13487
|
/** external Buttons can be provided */
|
|
13359
|
-
/* @__PURE__ */ jsx74(Fragment25, { children: ConnectButton ? /* @__PURE__ */
|
|
13488
|
+
/* @__PURE__ */ jsx74(Fragment25, { children: ConnectButton ? /* @__PURE__ */ jsxs62(
|
|
13360
13489
|
ConnectButton,
|
|
13361
13490
|
{
|
|
13362
13491
|
type: "button",
|
|
@@ -13367,7 +13496,7 @@ function ConnectWalletButton(props) {
|
|
|
13367
13496
|
connectButtonLabel
|
|
13368
13497
|
]
|
|
13369
13498
|
}
|
|
13370
|
-
) : /* @__PURE__ */
|
|
13499
|
+
) : /* @__PURE__ */ jsxs62(
|
|
13371
13500
|
Button,
|
|
13372
13501
|
{
|
|
13373
13502
|
type: "button",
|
|
@@ -13389,7 +13518,7 @@ function ConnectWalletButton(props) {
|
|
|
13389
13518
|
]
|
|
13390
13519
|
}
|
|
13391
13520
|
) })
|
|
13392
|
-
) : /* @__PURE__ */
|
|
13521
|
+
) : /* @__PURE__ */ jsxs62(
|
|
13393
13522
|
"button",
|
|
13394
13523
|
{
|
|
13395
13524
|
type: "button",
|
|
@@ -13403,22 +13532,22 @@ function ConnectWalletButton(props) {
|
|
|
13403
13532
|
),
|
|
13404
13533
|
children: [
|
|
13405
13534
|
/* @__PURE__ */ jsx74("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx74("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx74(LumiaIcon, { width: 48, height: 48 }) }),
|
|
13406
|
-
/* @__PURE__ */
|
|
13407
|
-
/* @__PURE__ */
|
|
13535
|
+
/* @__PURE__ */ jsxs62("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
13536
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13408
13537
|
/* @__PURE__ */ jsx74("span", { className: "w-fit text-[14px] leading-4 truncate max-w-[144px] text-[var(--l-pass-fg)]", children: displayName }),
|
|
13409
13538
|
/* @__PURE__ */ jsx74(KYCStatus, {})
|
|
13410
13539
|
] }),
|
|
13411
13540
|
/* @__PURE__ */ jsx74(BalanceView, {})
|
|
13412
13541
|
] }),
|
|
13413
|
-
/* @__PURE__ */
|
|
13414
|
-
/* @__PURE__ */
|
|
13542
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center space-x-1", children: [
|
|
13543
|
+
/* @__PURE__ */ jsxs62("div", { className: "group relative", children: [
|
|
13415
13544
|
/* @__PURE__ */ jsx74(
|
|
13416
13545
|
Cloud5,
|
|
13417
13546
|
{
|
|
13418
13547
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
13419
13548
|
}
|
|
13420
13549
|
),
|
|
13421
|
-
/* @__PURE__ */
|
|
13550
|
+
/* @__PURE__ */ jsxs62(
|
|
13422
13551
|
"div",
|
|
13423
13552
|
{
|
|
13424
13553
|
className: cn(
|
|
@@ -13433,14 +13562,14 @@ function ConnectWalletButton(props) {
|
|
|
13433
13562
|
}
|
|
13434
13563
|
)
|
|
13435
13564
|
] }),
|
|
13436
|
-
/* @__PURE__ */
|
|
13565
|
+
/* @__PURE__ */ jsxs62("div", { className: "group relative", children: [
|
|
13437
13566
|
/* @__PURE__ */ jsx74(
|
|
13438
13567
|
Laptop2,
|
|
13439
13568
|
{
|
|
13440
13569
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
13441
13570
|
}
|
|
13442
13571
|
),
|
|
13443
|
-
/* @__PURE__ */
|
|
13572
|
+
/* @__PURE__ */ jsxs62(
|
|
13444
13573
|
"div",
|
|
13445
13574
|
{
|
|
13446
13575
|
className: cn(
|
|
@@ -13455,14 +13584,14 @@ function ConnectWalletButton(props) {
|
|
|
13455
13584
|
}
|
|
13456
13585
|
)
|
|
13457
13586
|
] }),
|
|
13458
|
-
/* @__PURE__ */
|
|
13587
|
+
/* @__PURE__ */ jsxs62("div", { className: "group relative", children: [
|
|
13459
13588
|
/* @__PURE__ */ jsx74(
|
|
13460
13589
|
Shield2,
|
|
13461
13590
|
{
|
|
13462
13591
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
13463
13592
|
}
|
|
13464
13593
|
),
|
|
13465
|
-
/* @__PURE__ */
|
|
13594
|
+
/* @__PURE__ */ jsxs62(
|
|
13466
13595
|
"div",
|
|
13467
13596
|
{
|
|
13468
13597
|
className: cn(
|
|
@@ -13539,7 +13668,7 @@ function useLumiaPassportOpen() {
|
|
|
13539
13668
|
}
|
|
13540
13669
|
|
|
13541
13670
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
13542
|
-
import { useCallback as useCallback22, useEffect as
|
|
13671
|
+
import { useCallback as useCallback22, useEffect as useEffect36 } from "react";
|
|
13543
13672
|
function useLumiaPassportColorMode() {
|
|
13544
13673
|
const {
|
|
13545
13674
|
config: { current: config }
|
|
@@ -13554,7 +13683,7 @@ function useLumiaPassportColorMode() {
|
|
|
13554
13683
|
},
|
|
13555
13684
|
[handleStoreColorMode]
|
|
13556
13685
|
);
|
|
13557
|
-
|
|
13686
|
+
useEffect36(() => {
|
|
13558
13687
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
13559
13688
|
if (!targetColorMode && !preferedColorMode) {
|
|
13560
13689
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -13863,7 +13992,7 @@ function cn2(...inputs) {
|
|
|
13863
13992
|
// src/internal/components/Address.tsx
|
|
13864
13993
|
import { Copy as Copy4, ExternalLink } from "lucide-react";
|
|
13865
13994
|
import * as React11 from "react";
|
|
13866
|
-
import { jsx as jsx77, jsxs as
|
|
13995
|
+
import { jsx as jsx77, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
13867
13996
|
function toExplorerAddressUrl(address, chain) {
|
|
13868
13997
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
13869
13998
|
if (!base2) return null;
|
|
@@ -13886,7 +14015,7 @@ var Address = ({
|
|
|
13886
14015
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
13887
14016
|
const [copied, setCopied] = React11.useState(false);
|
|
13888
14017
|
if (!addr) return /* @__PURE__ */ jsx77("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
13889
|
-
return /* @__PURE__ */
|
|
14018
|
+
return /* @__PURE__ */ jsxs63("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
13890
14019
|
label && /* @__PURE__ */ jsx77("span", { className: "text-sm font-medium", children: label }),
|
|
13891
14020
|
/* @__PURE__ */ jsx77("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
13892
14021
|
showCopy && /* @__PURE__ */ jsx77(
|
|
@@ -13946,7 +14075,7 @@ function Badge({ className, variant, ...props }) {
|
|
|
13946
14075
|
}
|
|
13947
14076
|
|
|
13948
14077
|
// src/internal/components/UserOpStatus.tsx
|
|
13949
|
-
import { jsx as jsx79, jsxs as
|
|
14078
|
+
import { jsx as jsx79, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
13950
14079
|
var UserOpStatus = ({
|
|
13951
14080
|
userOpHash,
|
|
13952
14081
|
chain,
|
|
@@ -14079,35 +14208,35 @@ var UserOpStatus = ({
|
|
|
14079
14208
|
const stateBadge = () => {
|
|
14080
14209
|
if (receipt) {
|
|
14081
14210
|
const ok = !!receipt.success;
|
|
14082
|
-
return /* @__PURE__ */
|
|
14211
|
+
return /* @__PURE__ */ jsxs64(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
14083
14212
|
ok ? /* @__PURE__ */ jsx79(CheckCircle26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx79(AlertCircle6, { className: "h-3 w-3" }),
|
|
14084
14213
|
ok ? "Included" : "Failed"
|
|
14085
14214
|
] });
|
|
14086
14215
|
}
|
|
14087
14216
|
if (rejected) {
|
|
14088
|
-
return /* @__PURE__ */
|
|
14217
|
+
return /* @__PURE__ */ jsxs64(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
14089
14218
|
/* @__PURE__ */ jsx79(AlertCircle6, { className: "h-3 w-3" }),
|
|
14090
14219
|
" Rejected by bundler"
|
|
14091
14220
|
] });
|
|
14092
14221
|
}
|
|
14093
14222
|
if (timedOut) {
|
|
14094
|
-
return /* @__PURE__ */
|
|
14223
|
+
return /* @__PURE__ */ jsxs64(Badge, { variant: "warning", className: "gap-1", children: [
|
|
14095
14224
|
/* @__PURE__ */ jsx79(AlertCircle6, { className: "h-3 w-3" }),
|
|
14096
14225
|
" Timeout - may be rejected"
|
|
14097
14226
|
] });
|
|
14098
14227
|
}
|
|
14099
14228
|
if (mempool) {
|
|
14100
|
-
return /* @__PURE__ */
|
|
14229
|
+
return /* @__PURE__ */ jsxs64(Badge, { variant: "outline", className: "gap-1", children: [
|
|
14101
14230
|
/* @__PURE__ */ jsx79(Clock2, { className: "h-3 w-3" }),
|
|
14102
14231
|
" Pending in bundler"
|
|
14103
14232
|
] });
|
|
14104
14233
|
}
|
|
14105
|
-
return /* @__PURE__ */
|
|
14234
|
+
return /* @__PURE__ */ jsxs64(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
14106
14235
|
/* @__PURE__ */ jsx79(Clock2, { className: "h-3 w-3" }),
|
|
14107
14236
|
" Waiting"
|
|
14108
14237
|
] });
|
|
14109
14238
|
};
|
|
14110
|
-
return /* @__PURE__ */
|
|
14239
|
+
return /* @__PURE__ */ jsxs64(
|
|
14111
14240
|
"div",
|
|
14112
14241
|
{
|
|
14113
14242
|
className: cn2(
|
|
@@ -14116,17 +14245,17 @@ var UserOpStatus = ({
|
|
|
14116
14245
|
),
|
|
14117
14246
|
style: { textAlign: "left", listStyle: "none" },
|
|
14118
14247
|
children: [
|
|
14119
|
-
/* @__PURE__ */
|
|
14120
|
-
/* @__PURE__ */
|
|
14248
|
+
/* @__PURE__ */ jsxs64("div", { className: "flex items-center justify-between mb-3", children: [
|
|
14249
|
+
/* @__PURE__ */ jsxs64("div", { className: "flex items-center gap-2", children: [
|
|
14121
14250
|
stateBadge(),
|
|
14122
14251
|
/* @__PURE__ */ jsx79("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
14123
14252
|
] }),
|
|
14124
|
-
/* @__PURE__ */
|
|
14253
|
+
/* @__PURE__ */ jsxs64(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
14125
14254
|
/* @__PURE__ */ jsx79(RefreshCw4, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
14126
14255
|
/* @__PURE__ */ jsx79("span", { className: "text-xs", children: "Refresh" })
|
|
14127
14256
|
] })
|
|
14128
14257
|
] }),
|
|
14129
|
-
/* @__PURE__ */
|
|
14258
|
+
/* @__PURE__ */ jsxs64("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
14130
14259
|
/* @__PURE__ */ jsx79("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
14131
14260
|
/* @__PURE__ */ jsx79("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
14132
14261
|
/* @__PURE__ */ jsx79(
|
|
@@ -14145,7 +14274,7 @@ var UserOpStatus = ({
|
|
|
14145
14274
|
}
|
|
14146
14275
|
)
|
|
14147
14276
|
] }),
|
|
14148
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */
|
|
14277
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs64("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
14149
14278
|
/* @__PURE__ */ jsx79("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
14150
14279
|
/* @__PURE__ */ jsx79("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
14151
14280
|
/* @__PURE__ */ jsx79(
|
|
@@ -14175,7 +14304,7 @@ var UserOpStatus = ({
|
|
|
14175
14304
|
}
|
|
14176
14305
|
)
|
|
14177
14306
|
] }),
|
|
14178
|
-
receipt && /* @__PURE__ */
|
|
14307
|
+
receipt && /* @__PURE__ */ jsxs64("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
14179
14308
|
"Block ",
|
|
14180
14309
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
14181
14310
|
" \u2022 Gas Used",
|
|
@@ -14184,31 +14313,31 @@ var UserOpStatus = ({
|
|
|
14184
14313
|
" \u2022 Success ",
|
|
14185
14314
|
String(!!receipt.success)
|
|
14186
14315
|
] }),
|
|
14187
|
-
/* @__PURE__ */ jsx79("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */
|
|
14316
|
+
/* @__PURE__ */ jsx79("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs64("span", { className: "ml-2", children: [
|
|
14188
14317
|
"\u2022 Polling for ",
|
|
14189
14318
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
14190
14319
|
"s"
|
|
14191
14320
|
] }) }),
|
|
14192
|
-
mempool && /* @__PURE__ */
|
|
14193
|
-
/* @__PURE__ */
|
|
14321
|
+
mempool && /* @__PURE__ */ jsxs64("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
14322
|
+
/* @__PURE__ */ jsxs64("div", { children: [
|
|
14194
14323
|
"Seen by bundler at ",
|
|
14195
14324
|
/* @__PURE__ */ jsx79(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
14196
14325
|
] }),
|
|
14197
|
-
/* @__PURE__ */
|
|
14326
|
+
/* @__PURE__ */ jsxs64("div", { children: [
|
|
14198
14327
|
"sender ",
|
|
14199
14328
|
/* @__PURE__ */ jsx79(Address, { address: mempool.sender, chain, truncate: false })
|
|
14200
14329
|
] })
|
|
14201
14330
|
] }),
|
|
14202
|
-
error && /* @__PURE__ */
|
|
14331
|
+
error && /* @__PURE__ */ jsxs64("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
14203
14332
|
/* @__PURE__ */ jsx79(AlertCircle6, { className: "h-4 w-4" }),
|
|
14204
14333
|
" ",
|
|
14205
14334
|
error
|
|
14206
14335
|
] }),
|
|
14207
|
-
rejected && /* @__PURE__ */
|
|
14336
|
+
rejected && /* @__PURE__ */ jsxs64("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
14208
14337
|
/* @__PURE__ */ jsx79(AlertCircle6, { className: "h-4 w-4" }),
|
|
14209
14338
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
14210
14339
|
] }),
|
|
14211
|
-
timedOut && /* @__PURE__ */
|
|
14340
|
+
timedOut && /* @__PURE__ */ jsxs64("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
14212
14341
|
/* @__PURE__ */ jsx79(AlertCircle6, { className: "h-4 w-4" }),
|
|
14213
14342
|
"Stopped polling after ",
|
|
14214
14343
|
Math.round(maxPollTimeMs / 1e3),
|
|
@@ -14222,7 +14351,7 @@ var UserOpStatus = ({
|
|
|
14222
14351
|
// src/internal/components/Hash.tsx
|
|
14223
14352
|
import { Copy as Copy6, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
14224
14353
|
import * as React13 from "react";
|
|
14225
|
-
import { jsx as jsx80, jsxs as
|
|
14354
|
+
import { jsx as jsx80, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
14226
14355
|
function toExplorerUrl(kind, value, chain) {
|
|
14227
14356
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
14228
14357
|
if (!base2) return null;
|
|
@@ -14247,7 +14376,7 @@ var Hash = ({
|
|
|
14247
14376
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
14248
14377
|
const [copied, setCopied] = React13.useState(false);
|
|
14249
14378
|
if (!value) return /* @__PURE__ */ jsx80("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
14250
|
-
return /* @__PURE__ */
|
|
14379
|
+
return /* @__PURE__ */ jsxs65("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
14251
14380
|
label && /* @__PURE__ */ jsx80("span", { className: "text-sm font-medium", children: label }),
|
|
14252
14381
|
/* @__PURE__ */ jsx80("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
14253
14382
|
showCopy && /* @__PURE__ */ jsx80(
|
|
@@ -14283,13 +14412,13 @@ var Hash = ({
|
|
|
14283
14412
|
|
|
14284
14413
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
14285
14414
|
init_base();
|
|
14286
|
-
import { useEffect as
|
|
14287
|
-
import { jsx as jsx81, jsxs as
|
|
14415
|
+
import { useEffect as useEffect38, useState as useState22 } from "react";
|
|
14416
|
+
import { jsx as jsx81, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
14288
14417
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
14289
|
-
const [transactions, setTransactions] =
|
|
14290
|
-
const [loading, setLoading] =
|
|
14291
|
-
const [error, setError] =
|
|
14292
|
-
|
|
14418
|
+
const [transactions, setTransactions] = useState22([]);
|
|
14419
|
+
const [loading, setLoading] = useState22(true);
|
|
14420
|
+
const [error, setError] = useState22(null);
|
|
14421
|
+
useEffect38(() => {
|
|
14293
14422
|
const fetchTransactions = async () => {
|
|
14294
14423
|
try {
|
|
14295
14424
|
setLoading(true);
|
|
@@ -14335,13 +14464,13 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
14335
14464
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
14336
14465
|
};
|
|
14337
14466
|
if (loading) {
|
|
14338
|
-
return /* @__PURE__ */
|
|
14467
|
+
return /* @__PURE__ */ jsxs66("div", { className: "p-4 text-center", children: [
|
|
14339
14468
|
/* @__PURE__ */ jsx81("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
14340
14469
|
/* @__PURE__ */ jsx81("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
14341
14470
|
] });
|
|
14342
14471
|
}
|
|
14343
14472
|
if (error) {
|
|
14344
|
-
return /* @__PURE__ */
|
|
14473
|
+
return /* @__PURE__ */ jsxs66("div", { className: "p-4 text-center", children: [
|
|
14345
14474
|
/* @__PURE__ */ jsx81("p", { className: "text-red-600 text-sm", children: error }),
|
|
14346
14475
|
/* @__PURE__ */ jsx81("button", { onClick: () => window.location.reload(), className: "mt-2 text-blue-600 text-sm hover:underline", children: "Retry" })
|
|
14347
14476
|
] });
|
|
@@ -14349,15 +14478,15 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
14349
14478
|
if (transactions.length === 0) {
|
|
14350
14479
|
return /* @__PURE__ */ jsx81("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx81("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
14351
14480
|
}
|
|
14352
|
-
return /* @__PURE__ */ jsx81("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx81("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */
|
|
14481
|
+
return /* @__PURE__ */ jsx81("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx81("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs66(
|
|
14353
14482
|
"div",
|
|
14354
14483
|
{
|
|
14355
14484
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
14356
14485
|
onClick: () => openTransaction(tx.hash),
|
|
14357
14486
|
children: [
|
|
14358
|
-
/* @__PURE__ */
|
|
14359
|
-
/* @__PURE__ */
|
|
14360
|
-
/* @__PURE__ */
|
|
14487
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex justify-between items-start mb-2", children: [
|
|
14488
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex-1", children: [
|
|
14489
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
14361
14490
|
/* @__PURE__ */ jsx81("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress3(tx.hash) }),
|
|
14362
14491
|
/* @__PURE__ */ jsx81(
|
|
14363
14492
|
"span",
|
|
@@ -14367,33 +14496,33 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
14367
14496
|
}
|
|
14368
14497
|
)
|
|
14369
14498
|
] }),
|
|
14370
|
-
/* @__PURE__ */
|
|
14371
|
-
/* @__PURE__ */
|
|
14499
|
+
/* @__PURE__ */ jsxs66("div", { className: "text-sm space-y-1", children: [
|
|
14500
|
+
/* @__PURE__ */ jsxs66("div", { children: [
|
|
14372
14501
|
/* @__PURE__ */ jsx81("span", { className: "text-gray-600", children: "From:" }),
|
|
14373
|
-
/* @__PURE__ */
|
|
14502
|
+
/* @__PURE__ */ jsxs66("span", { className: "font-mono ml-1", children: [
|
|
14374
14503
|
formatAddress3(tx.from.hash),
|
|
14375
14504
|
tx.from.is_contract && /* @__PURE__ */ jsx81("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
14376
14505
|
] })
|
|
14377
14506
|
] }),
|
|
14378
|
-
/* @__PURE__ */
|
|
14507
|
+
/* @__PURE__ */ jsxs66("div", { children: [
|
|
14379
14508
|
/* @__PURE__ */ jsx81("span", { className: "text-gray-600", children: "To:" }),
|
|
14380
|
-
/* @__PURE__ */
|
|
14509
|
+
/* @__PURE__ */ jsxs66("span", { className: "font-mono ml-1", children: [
|
|
14381
14510
|
formatAddress3(tx.to.hash),
|
|
14382
14511
|
tx.to.is_contract && /* @__PURE__ */ jsx81("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
14383
14512
|
] })
|
|
14384
14513
|
] }),
|
|
14385
|
-
/* @__PURE__ */
|
|
14514
|
+
/* @__PURE__ */ jsxs66("div", { children: [
|
|
14386
14515
|
/* @__PURE__ */ jsx81("span", { className: "text-gray-600", children: "Value:" }),
|
|
14387
|
-
/* @__PURE__ */
|
|
14516
|
+
/* @__PURE__ */ jsxs66("span", { className: "font-semibold ml-1", children: [
|
|
14388
14517
|
formatValue3(tx.value),
|
|
14389
14518
|
" LUMIA"
|
|
14390
14519
|
] })
|
|
14391
14520
|
] })
|
|
14392
14521
|
] })
|
|
14393
14522
|
] }),
|
|
14394
|
-
/* @__PURE__ */
|
|
14523
|
+
/* @__PURE__ */ jsxs66("div", { className: "text-right text-xs text-gray-500", children: [
|
|
14395
14524
|
/* @__PURE__ */ jsx81("div", { children: formatDate3(tx.timestamp) }),
|
|
14396
|
-
/* @__PURE__ */
|
|
14525
|
+
/* @__PURE__ */ jsxs66("div", { className: "mt-1", children: [
|
|
14397
14526
|
"Gas: ",
|
|
14398
14527
|
parseInt(tx.gas_used).toLocaleString()
|
|
14399
14528
|
] }),
|