@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.cjs
CHANGED
|
@@ -3822,28 +3822,32 @@ async function sendUserOperation(session, callTarget, amountWei, innerData = "0x
|
|
|
3822
3822
|
try {
|
|
3823
3823
|
const envCaps = typeof import_meta !== "undefined" && import_meta.env || {};
|
|
3824
3824
|
const maxBundlerVerifGas = envCaps.VITE_MAX_VERIFICATION_GAS ? BigInt(envCaps.VITE_MAX_VERIFICATION_GAS) : MAX_BUNDLER_VERIFICATION_GAS;
|
|
3825
|
-
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) :
|
|
3825
|
+
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) : null;
|
|
3826
3826
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
3827
3827
|
const maxAccountVerifGas = usePaymaster ? maxBundlerVerifGas - PAYMASTER_VERIFICATION_GAS : maxBundlerVerifGas;
|
|
3828
3828
|
const verGas = BigInt(userOp.verificationGasLimit || "0x0");
|
|
3829
3829
|
if (verGas > maxAccountVerifGas) userOp.verificationGasLimit = toHex2(maxAccountVerifGas);
|
|
3830
3830
|
const callGas = BigInt(userOp.callGasLimit || "0x0");
|
|
3831
|
-
if (callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
3831
|
+
if (maxCallGas && callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
3832
3832
|
} catch {
|
|
3833
3833
|
}
|
|
3834
3834
|
};
|
|
3835
3835
|
let estimated = false;
|
|
3836
3836
|
try {
|
|
3837
3837
|
const gasEst = await (0, import_bundler.estimateUserOperationGas)({ ...userOp, signature: `0x${"00".repeat(65)}` });
|
|
3838
|
+
console.log("[Account] Gas estimation from bundler:", { callGasLimit: gasEst.callGasLimit, verificationGasLimit: gasEst.verificationGasLimit, preVerificationGas: gasEst.preVerificationGas });
|
|
3838
3839
|
userOp.callGasLimit = gasEst.callGasLimit;
|
|
3839
3840
|
userOp.verificationGasLimit = gasEst.verificationGasLimit;
|
|
3840
3841
|
userOp.preVerificationGas = gasEst.preVerificationGas;
|
|
3841
3842
|
ensureGenerousDefaults();
|
|
3842
3843
|
enforceCaps(session.usePaymaster);
|
|
3843
3844
|
estimated = true;
|
|
3844
|
-
|
|
3845
|
+
console.log("[Account] Gas after caps:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
3846
|
+
} catch (e) {
|
|
3847
|
+
console.log("[Account] Gas estimation failed, using defaults:", e);
|
|
3845
3848
|
ensureGenerousDefaults();
|
|
3846
3849
|
enforceCaps(session.usePaymaster);
|
|
3850
|
+
console.log("[Account] Gas after defaults:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
3847
3851
|
}
|
|
3848
3852
|
try {
|
|
3849
3853
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
@@ -4007,28 +4011,32 @@ async function prepareUserOperation(session, callTarget, amountWei, innerData =
|
|
|
4007
4011
|
try {
|
|
4008
4012
|
const envCaps = typeof import_meta !== "undefined" && import_meta.env || {};
|
|
4009
4013
|
const maxBundlerVerifGas = envCaps.VITE_MAX_VERIFICATION_GAS ? BigInt(envCaps.VITE_MAX_VERIFICATION_GAS) : MAX_BUNDLER_VERIFICATION_GAS;
|
|
4010
|
-
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) :
|
|
4014
|
+
const maxCallGas = envCaps.VITE_MAX_CALL_GAS_LIMIT ? BigInt(envCaps.VITE_MAX_CALL_GAS_LIMIT) : null;
|
|
4011
4015
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
4012
4016
|
const maxAccountVerifGas = usePaymaster ? maxBundlerVerifGas - PAYMASTER_VERIFICATION_GAS : maxBundlerVerifGas;
|
|
4013
4017
|
const verGas = BigInt(userOp.verificationGasLimit || "0x0");
|
|
4014
4018
|
if (verGas > maxAccountVerifGas) userOp.verificationGasLimit = toHex2(maxAccountVerifGas);
|
|
4015
4019
|
const callGas = BigInt(userOp.callGasLimit || "0x0");
|
|
4016
|
-
if (callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
4020
|
+
if (maxCallGas && callGas > maxCallGas) userOp.callGasLimit = toHex2(maxCallGas);
|
|
4017
4021
|
} catch {
|
|
4018
4022
|
}
|
|
4019
4023
|
};
|
|
4020
4024
|
let estimated = false;
|
|
4021
4025
|
try {
|
|
4022
4026
|
const gasEst = await (0, import_bundler.estimateUserOperationGas)({ ...userOp, signature: `0x${"00".repeat(65)}` });
|
|
4027
|
+
console.log("[Account] Gas estimation from bundler:", { callGasLimit: gasEst.callGasLimit, verificationGasLimit: gasEst.verificationGasLimit, preVerificationGas: gasEst.preVerificationGas });
|
|
4023
4028
|
userOp.callGasLimit = gasEst.callGasLimit;
|
|
4024
4029
|
userOp.verificationGasLimit = gasEst.verificationGasLimit;
|
|
4025
4030
|
userOp.preVerificationGas = gasEst.preVerificationGas;
|
|
4026
4031
|
ensureGenerousDefaults();
|
|
4027
4032
|
enforceCaps(session.usePaymaster);
|
|
4028
4033
|
estimated = true;
|
|
4029
|
-
|
|
4034
|
+
console.log("[Account] Gas after caps:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
4035
|
+
} catch (e) {
|
|
4036
|
+
console.log("[Account] Gas estimation failed, using defaults:", e);
|
|
4030
4037
|
ensureGenerousDefaults();
|
|
4031
4038
|
enforceCaps(session.usePaymaster);
|
|
4039
|
+
console.log("[Account] Gas after defaults:", { callGasLimit: userOp.callGasLimit, verificationGasLimit: userOp.verificationGasLimit, preVerificationGas: userOp.preVerificationGas });
|
|
4032
4040
|
}
|
|
4033
4041
|
try {
|
|
4034
4042
|
const toHex2 = (v) => `0x${v.toString(16)}`;
|
|
@@ -4439,17 +4447,17 @@ __export(index_exports, {
|
|
|
4439
4447
|
module.exports = __toCommonJS(index_exports);
|
|
4440
4448
|
|
|
4441
4449
|
// src/styles/built.css
|
|
4442
|
-
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}';
|
|
4450
|
+
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}';
|
|
4443
4451
|
|
|
4444
4452
|
// src/context/LumiaPassportContext.tsx
|
|
4445
4453
|
var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
|
|
4446
4454
|
var import_lodash_es4 = require("lodash-es");
|
|
4447
|
-
var
|
|
4455
|
+
var import_react61 = require("react");
|
|
4448
4456
|
init_lumiaPassport();
|
|
4449
4457
|
init_iframe_manager();
|
|
4450
4458
|
|
|
4451
4459
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4452
|
-
var
|
|
4460
|
+
var import_react60 = require("react");
|
|
4453
4461
|
var import_zustand6 = require("zustand");
|
|
4454
4462
|
|
|
4455
4463
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
@@ -4627,7 +4635,7 @@ function BalanceFeedProvider() {
|
|
|
4627
4635
|
|
|
4628
4636
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4629
4637
|
var import_framer_motion3 = require("framer-motion");
|
|
4630
|
-
var
|
|
4638
|
+
var import_react57 = require("react");
|
|
4631
4639
|
|
|
4632
4640
|
// src/internal/components/Footer/Footer.tsx
|
|
4633
4641
|
var import_react_query2 = require("@tanstack/react-query");
|
|
@@ -4688,6 +4696,35 @@ var LumiaLogo = (0, import_react2.forwardRef)(({ size = 24, className = "" }, re
|
|
|
4688
4696
|
init_auth();
|
|
4689
4697
|
init_base();
|
|
4690
4698
|
|
|
4699
|
+
// src/internal/hooks/useLayoutStore.ts
|
|
4700
|
+
var import_zustand2 = require("zustand");
|
|
4701
|
+
var useLayoutStore = (0, import_zustand2.create)((set) => ({
|
|
4702
|
+
colorMode: "light",
|
|
4703
|
+
// layoutView: 'desktop',
|
|
4704
|
+
// deviceType: 'non-touch',
|
|
4705
|
+
isMobileView: false,
|
|
4706
|
+
maxScrollHeight: MAX_CONTENT_HEIGHT,
|
|
4707
|
+
isDialogClosing: false,
|
|
4708
|
+
isDialogOpen: false,
|
|
4709
|
+
isDialogForced: false,
|
|
4710
|
+
dialogTitle: null,
|
|
4711
|
+
dialogDescription: null,
|
|
4712
|
+
dialogContent: null,
|
|
4713
|
+
isSettings: false,
|
|
4714
|
+
setColorMode: (colorMode) => set({ colorMode }),
|
|
4715
|
+
// setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
4716
|
+
// setDeviceType: (deviceType) => set(() => ({ deviceType })),
|
|
4717
|
+
setIsMobileView: (isMobileView) => set({ isMobileView }),
|
|
4718
|
+
setMaxScrollHeight: (maxScrollHeight) => set({ maxScrollHeight }),
|
|
4719
|
+
setIsDialogClosing: (isDialogClosing) => set({ isDialogClosing }),
|
|
4720
|
+
setIsDialogOpen: (isDialogOpen) => set({ isDialogOpen }),
|
|
4721
|
+
setIsDialogForced: (isDialogForced) => set({ isDialogForced }),
|
|
4722
|
+
setDialogTitle: (dialogTitle) => set({ dialogTitle }),
|
|
4723
|
+
setDialogDescription: (dialogDescription) => set({ dialogDescription }),
|
|
4724
|
+
setDialogContent: (dialogContent) => set({ dialogContent }),
|
|
4725
|
+
setIsSettings: (isSettings) => set({ isSettings })
|
|
4726
|
+
}));
|
|
4727
|
+
|
|
4691
4728
|
// src/internal/lib/utils.ts
|
|
4692
4729
|
var import_clsx = require("clsx");
|
|
4693
4730
|
var import_tailwind_merge = require("tailwind-merge");
|
|
@@ -4780,9 +4817,11 @@ function Footer() {
|
|
|
4780
4817
|
const { callbacks } = useLumiaPassportConfig();
|
|
4781
4818
|
const { address, setSession, setAddress, setStatus, setError, setIsLoading } = useLumiaPassportSession();
|
|
4782
4819
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
4820
|
+
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
4783
4821
|
const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query2.useMutation)({
|
|
4784
4822
|
mutationFn: async (disconnectAddress) => {
|
|
4785
4823
|
if (!disconnectAddress) throw new Error("No address to disconnect");
|
|
4824
|
+
setIsDialogForced(true);
|
|
4786
4825
|
setError(null);
|
|
4787
4826
|
setStatus("disconnecting");
|
|
4788
4827
|
setIsLoading(true);
|
|
@@ -4799,12 +4838,16 @@ function Footer() {
|
|
|
4799
4838
|
setStatus("idle");
|
|
4800
4839
|
setIsLoading(false);
|
|
4801
4840
|
callbacks?.onLumiaPassportDisconnect?.({ address: disconnectAddress, userId: disconnectedUserId });
|
|
4802
|
-
setTimeout(() =>
|
|
4841
|
+
setTimeout(() => {
|
|
4842
|
+
setPage("auth" /* AUTH */);
|
|
4843
|
+
setIsDialogForced(false);
|
|
4844
|
+
}, 200);
|
|
4803
4845
|
},
|
|
4804
4846
|
onError: (err) => {
|
|
4805
4847
|
setError(err.message || "An unknown error occurred during sign out");
|
|
4806
4848
|
setStatus("idle");
|
|
4807
4849
|
setIsLoading(false);
|
|
4850
|
+
setIsDialogForced(false);
|
|
4808
4851
|
}
|
|
4809
4852
|
});
|
|
4810
4853
|
const { name, logo, logoDataUri } = lumiaBeam;
|
|
@@ -4990,35 +5033,6 @@ function BalanceView(props) {
|
|
|
4990
5033
|
// src/internal/components/KYC/KycMenu.tsx
|
|
4991
5034
|
var import_lucide_react5 = require("lucide-react");
|
|
4992
5035
|
|
|
4993
|
-
// src/internal/hooks/useLayoutStore.ts
|
|
4994
|
-
var import_zustand2 = require("zustand");
|
|
4995
|
-
var useLayoutStore = (0, import_zustand2.create)((set) => ({
|
|
4996
|
-
colorMode: "light",
|
|
4997
|
-
// layoutView: 'desktop',
|
|
4998
|
-
// deviceType: 'non-touch',
|
|
4999
|
-
isMobileView: false,
|
|
5000
|
-
maxScrollHeight: MAX_CONTENT_HEIGHT,
|
|
5001
|
-
isDialogClosing: false,
|
|
5002
|
-
isDialogOpen: false,
|
|
5003
|
-
isDialogForced: false,
|
|
5004
|
-
dialogTitle: null,
|
|
5005
|
-
dialogDescription: null,
|
|
5006
|
-
dialogContent: null,
|
|
5007
|
-
isSettings: false,
|
|
5008
|
-
setColorMode: (colorMode) => set({ colorMode }),
|
|
5009
|
-
// setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
5010
|
-
// setDeviceType: (deviceType) => set(() => ({ deviceType })),
|
|
5011
|
-
setIsMobileView: (isMobileView) => set({ isMobileView }),
|
|
5012
|
-
setMaxScrollHeight: (maxScrollHeight) => set({ maxScrollHeight }),
|
|
5013
|
-
setIsDialogClosing: (isDialogClosing) => set({ isDialogClosing }),
|
|
5014
|
-
setIsDialogOpen: (isDialogOpen) => set({ isDialogOpen }),
|
|
5015
|
-
setIsDialogForced: (isDialogForced) => set({ isDialogForced }),
|
|
5016
|
-
setDialogTitle: (dialogTitle) => set({ dialogTitle }),
|
|
5017
|
-
setDialogDescription: (dialogDescription) => set({ dialogDescription }),
|
|
5018
|
-
setDialogContent: (dialogContent) => set({ dialogContent }),
|
|
5019
|
-
setIsSettings: (isSettings) => set({ isSettings })
|
|
5020
|
-
}));
|
|
5021
|
-
|
|
5022
5036
|
// src/internal/components/KYC/SumsubIframe.tsx
|
|
5023
5037
|
var import_lucide_react4 = require("lucide-react");
|
|
5024
5038
|
|
|
@@ -5401,7 +5415,7 @@ function Header() {
|
|
|
5401
5415
|
// package.json
|
|
5402
5416
|
var package_default = {
|
|
5403
5417
|
name: "@lumiapassport/ui-kit",
|
|
5404
|
-
version: "1.14.
|
|
5418
|
+
version: "1.14.23",
|
|
5405
5419
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
5406
5420
|
type: "module",
|
|
5407
5421
|
main: "./dist/index.cjs",
|
|
@@ -5530,8 +5544,9 @@ var CONTENT_BG_SETUP = {
|
|
|
5530
5544
|
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
5531
5545
|
};
|
|
5532
5546
|
var DialogContent = (0, import_react6.forwardRef)(
|
|
5533
|
-
({ className, children,
|
|
5547
|
+
({ className, children, colorMode, ...props }, ref) => {
|
|
5534
5548
|
const isSettings = useLayoutStore((st) => st.isSettings);
|
|
5549
|
+
const isDialogForced = useLayoutStore((st) => st.isDialogForced);
|
|
5535
5550
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5536
5551
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
5537
5552
|
const { isMobileView, isClosing, style } = useDecideContentStyles();
|
|
@@ -5562,7 +5577,7 @@ var DialogContent = (0, import_react6.forwardRef)(
|
|
|
5562
5577
|
...props,
|
|
5563
5578
|
children: [
|
|
5564
5579
|
children,
|
|
5565
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
5580
|
+
!isDialogForced && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
5566
5581
|
"div",
|
|
5567
5582
|
{
|
|
5568
5583
|
className: cn(
|
|
@@ -5595,7 +5610,7 @@ var DialogContent = (0, import_react6.forwardRef)(
|
|
|
5595
5610
|
]
|
|
5596
5611
|
}
|
|
5597
5612
|
),
|
|
5598
|
-
|
|
5613
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Button, { variant: "ghost", size: "icon", className: "w-4 h-4", children: [
|
|
5599
5614
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react8.X, { className: "h-4 w-4" }),
|
|
5600
5615
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "sr-only", children: "Close" })
|
|
5601
5616
|
] }) })
|
|
@@ -5868,23 +5883,25 @@ function useBackupStatusChanges() {
|
|
|
5868
5883
|
|
|
5869
5884
|
// src/internal/hooks/useBackupWarning.ts
|
|
5870
5885
|
var import_react10 = require("react");
|
|
5871
|
-
var WARNING_TIMEOUT_MS =
|
|
5886
|
+
var WARNING_TIMEOUT_MS = 4500;
|
|
5872
5887
|
function useBackupWarning() {
|
|
5873
|
-
const config = useLumiaPassportConfig().config;
|
|
5874
5888
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5875
5889
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
5876
5890
|
const page = useLayoutDataStore((st) => st.page);
|
|
5877
5891
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5878
5892
|
const timeoutRef = (0, import_react10.useRef)(null);
|
|
5893
|
+
const touchedRef = (0, import_react10.useRef)(false);
|
|
5879
5894
|
(0, import_react10.useEffect)(() => {
|
|
5895
|
+
if (touchedRef.current) return;
|
|
5880
5896
|
if (timeoutRef.current) {
|
|
5881
5897
|
clearTimeout(timeoutRef.current);
|
|
5882
5898
|
timeoutRef.current = null;
|
|
5883
5899
|
}
|
|
5884
|
-
|
|
5885
|
-
if (!address || !isShown || page === "keysare-backup" /* KEYSARE_BACKUP */) return;
|
|
5900
|
+
if (!address || !!hasServerVault || page === "keysare-backup" /* KEYSARE_BACKUP */) return;
|
|
5886
5901
|
timeoutRef.current = setTimeout(() => {
|
|
5887
5902
|
setPage("keysare-backup" /* KEYSARE_BACKUP */);
|
|
5903
|
+
touchedRef.current = true;
|
|
5904
|
+
timeoutRef.current = null;
|
|
5888
5905
|
}, WARNING_TIMEOUT_MS);
|
|
5889
5906
|
return () => {
|
|
5890
5907
|
if (timeoutRef.current) {
|
|
@@ -5949,7 +5966,7 @@ function useDetectMaxScrollHeight() {
|
|
|
5949
5966
|
}
|
|
5950
5967
|
|
|
5951
5968
|
// src/internal/hooks/usePageMapper.tsx
|
|
5952
|
-
var
|
|
5969
|
+
var import_react54 = require("react");
|
|
5953
5970
|
|
|
5954
5971
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5955
5972
|
var import_framer_motion = require("framer-motion");
|
|
@@ -7186,8 +7203,18 @@ function useAuthMenuHandlers() {
|
|
|
7186
7203
|
const qc = (0, import_react_query8.useQueryClient)();
|
|
7187
7204
|
const pendingLoginResponseRef = (0, import_react20.useRef)(null);
|
|
7188
7205
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7206
|
+
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
7189
7207
|
const [telegramCleanup, setTelegramCleanup] = (0, import_react20.useState)(null);
|
|
7190
|
-
const {
|
|
7208
|
+
const {
|
|
7209
|
+
usePaymaster,
|
|
7210
|
+
setError,
|
|
7211
|
+
setStatus,
|
|
7212
|
+
setSession,
|
|
7213
|
+
setAddress,
|
|
7214
|
+
setRecoveryUserId,
|
|
7215
|
+
setHasServerVault,
|
|
7216
|
+
setIsLoading
|
|
7217
|
+
} = useLumiaPassportSession();
|
|
7191
7218
|
const setStep = useAuthStore((st) => st.setStep);
|
|
7192
7219
|
const setAlert = useAuthStore((st) => st.setAlert);
|
|
7193
7220
|
const createSessionWithKeyshare = (0, import_react20.useCallback)(
|
|
@@ -7225,6 +7252,7 @@ function useAuthMenuHandlers() {
|
|
|
7225
7252
|
[setStatus, callbacks, usePaymaster]
|
|
7226
7253
|
);
|
|
7227
7254
|
const onAuthSuccess = (0, import_react20.useCallback)(async () => {
|
|
7255
|
+
setIsLoading(true);
|
|
7228
7256
|
const loginResponse = pendingLoginResponseRef.current;
|
|
7229
7257
|
if (!loginResponse || !loginResponse.userId) {
|
|
7230
7258
|
setError("Authentication failed - no login data available");
|
|
@@ -7253,10 +7281,6 @@ function useAuthMenuHandlers() {
|
|
|
7253
7281
|
);
|
|
7254
7282
|
setError(null);
|
|
7255
7283
|
setAlert(null);
|
|
7256
|
-
setSession(sess);
|
|
7257
|
-
setAddress(addr);
|
|
7258
|
-
setStatus("ready");
|
|
7259
|
-
setPage(null);
|
|
7260
7284
|
try {
|
|
7261
7285
|
callbacks?.onLumiaPassportConnect?.({ address: addr, session: sess });
|
|
7262
7286
|
callbacks?.onLumiaPassportAccount?.({ userId, address: addr, session: sess, hasKeyshare: hasServerKeyshare });
|
|
@@ -7277,6 +7301,16 @@ function useAuthMenuHandlers() {
|
|
|
7277
7301
|
} catch (e) {
|
|
7278
7302
|
console.warn("[UI-KIT] Vault status check failed:", e);
|
|
7279
7303
|
}
|
|
7304
|
+
setSession(sess);
|
|
7305
|
+
setAddress(addr);
|
|
7306
|
+
setStatus("ready");
|
|
7307
|
+
if (jwt?.isNewUser) {
|
|
7308
|
+
console.log("[AuthMenu] New user detected - forcing backup flow");
|
|
7309
|
+
setIsDialogForced(true);
|
|
7310
|
+
setPage("keysare-backup" /* KEYSARE_BACKUP */);
|
|
7311
|
+
} else {
|
|
7312
|
+
setPage(null);
|
|
7313
|
+
}
|
|
7280
7314
|
} catch (error) {
|
|
7281
7315
|
if (error?.code === "KEYSHARE_RECOVERY_NEEDED") {
|
|
7282
7316
|
console.warn("[AuthMenu] Keyshare recovery needed for user:", userId);
|
|
@@ -7296,6 +7330,8 @@ function useAuthMenuHandlers() {
|
|
|
7296
7330
|
});
|
|
7297
7331
|
setStep("failed");
|
|
7298
7332
|
}
|
|
7333
|
+
} finally {
|
|
7334
|
+
setIsLoading(false);
|
|
7299
7335
|
}
|
|
7300
7336
|
}, [
|
|
7301
7337
|
// config.projectId,
|
|
@@ -7309,6 +7345,7 @@ function useAuthMenuHandlers() {
|
|
|
7309
7345
|
setAddress,
|
|
7310
7346
|
setRecoveryUserId,
|
|
7311
7347
|
setHasServerVault,
|
|
7348
|
+
setIsDialogForced,
|
|
7312
7349
|
createSessionWithKeyshare
|
|
7313
7350
|
]);
|
|
7314
7351
|
const checkDisplayNameRequired = (0, import_react20.useCallback)(async (loginResponse) => {
|
|
@@ -7682,20 +7719,28 @@ function VerifyStep(props) {
|
|
|
7682
7719
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
7683
7720
|
var AuthMenu = () => {
|
|
7684
7721
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7685
|
-
const [isMenuReady, setIsMenuReady] = (0, import_react22.useState)(false);
|
|
7686
7722
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
7687
7723
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7688
7724
|
const { step, alert: alert2, setStep, setPasskeyStatus, setEmail, setAlert } = useAuthStore();
|
|
7689
7725
|
const { pendingLoginResponseRef, onAuthSuccess, goBackToSignIn, checkDisplayNameRequired } = useAuthMenuHandlers();
|
|
7726
|
+
const [isAlertShowReady, setIsAlertShowReady] = (0, import_react22.useState)(false);
|
|
7727
|
+
const readyTimeout = (0, import_react22.useRef)(null);
|
|
7728
|
+
(0, import_react22.useEffect)(() => {
|
|
7729
|
+
if (readyTimeout.current) {
|
|
7730
|
+
clearTimeout(readyTimeout.current);
|
|
7731
|
+
readyTimeout.current = null;
|
|
7732
|
+
}
|
|
7733
|
+
setIsAlertShowReady(false);
|
|
7734
|
+
readyTimeout.current = setTimeout(() => setIsAlertShowReady(true), 750);
|
|
7735
|
+
}, [step]);
|
|
7690
7736
|
(0, import_react22.useEffect)(() => {
|
|
7691
7737
|
setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT);
|
|
7692
|
-
setTimeout(() => setIsMenuReady(true), 500);
|
|
7693
7738
|
return () => {
|
|
7694
7739
|
setStep("signin");
|
|
7695
7740
|
setEmail("");
|
|
7696
7741
|
setPasskeyStatus("idle");
|
|
7697
7742
|
setAlert(null);
|
|
7698
|
-
|
|
7743
|
+
setIsAlertShowReady(false);
|
|
7699
7744
|
};
|
|
7700
7745
|
}, []);
|
|
7701
7746
|
if (!isIframeReady) {
|
|
@@ -7749,12 +7794,12 @@ var AuthMenu = () => {
|
|
|
7749
7794
|
},
|
|
7750
7795
|
step
|
|
7751
7796
|
) }),
|
|
7752
|
-
|
|
7797
|
+
isAlertShowReady && /* --------------------------------------------------------------------------------------------------------------- */
|
|
7753
7798
|
/* -------- EXPANDABLE is designed to adjust its height automatically whenever ANY 1ST LEVEL CHILD changes! ------ */
|
|
7754
7799
|
/* In order to ensure smooth expand animation consistency do not use 2nd (or 3rd etc) nested conditional rendering */
|
|
7755
7800
|
/* elements, cause it might outcome Expandable not reacting to deeply nested elements' height changes ------------ */
|
|
7756
7801
|
/* --------------------------------------------------------------------------------------------------------------- */
|
|
7757
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Expandable, { isExpanded: !!alert2 &&
|
|
7802
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Expandable, { isExpanded: !!alert2 && isAlertShowReady, contentClassName: "px-[var(--l-pass-pd)]", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Highlight, { type: "error", className: "w-full flex gap-[var(--l-pass-gap)] ", children: [
|
|
7758
7803
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.AlertTriangle, { className: "w-5 h-5 text-[var(--l-pass-error)]" }),
|
|
7759
7804
|
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { className: "block w-full flex flex-col gap-1 flex-1", children: [
|
|
7760
7805
|
alert2?.title && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "block font-bold leading-5", children: alert2.title }),
|
|
@@ -8441,13 +8486,13 @@ function BuyMenu() {
|
|
|
8441
8486
|
|
|
8442
8487
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8443
8488
|
var import_react_query17 = require("@tanstack/react-query");
|
|
8444
|
-
var
|
|
8445
|
-
var
|
|
8489
|
+
var import_lucide_react26 = require("lucide-react");
|
|
8490
|
+
var import_react36 = require("react");
|
|
8446
8491
|
init_vaultClient();
|
|
8447
8492
|
|
|
8448
8493
|
// src/internal/components/KeyshareRestoreMenu/components/MethodSelector.tsx
|
|
8449
8494
|
var import_lucide_react19 = require("lucide-react");
|
|
8450
|
-
var
|
|
8495
|
+
var import_react31 = require("react");
|
|
8451
8496
|
|
|
8452
8497
|
// src/internal/components/KeyshareRestoreMenu/hooks/useCheckBackupAvailability.ts
|
|
8453
8498
|
var import_react_query12 = require("@tanstack/react-query");
|
|
@@ -8631,12 +8676,21 @@ function useOnRestoreSuccess() {
|
|
|
8631
8676
|
|
|
8632
8677
|
// src/internal/components/KeyshareRestoreMenu/hooks/useCreateBackup.ts
|
|
8633
8678
|
var import_react_query13 = require("@tanstack/react-query");
|
|
8679
|
+
var import_react29 = require("react");
|
|
8634
8680
|
init_iframe_manager();
|
|
8635
8681
|
function useCreateBackup() {
|
|
8636
8682
|
const qc = (0, import_react_query13.useQueryClient)();
|
|
8637
8683
|
const session = useLumiaPassportSession((st) => st.session);
|
|
8638
8684
|
const address = useLumiaPassportSession((st) => st.address);
|
|
8639
|
-
const
|
|
8685
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8686
|
+
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8687
|
+
const { usePasskey, restorePassword, selectedCloudProvider, setSuccess, setError, setMethod } = useRestoreStore();
|
|
8688
|
+
(0, import_react29.useEffect)(() => {
|
|
8689
|
+
if (!hasServerVault) {
|
|
8690
|
+
setMethod("server");
|
|
8691
|
+
setIsDialogForced(true);
|
|
8692
|
+
}
|
|
8693
|
+
}, [hasServerVault, setIsDialogForced, setMethod]);
|
|
8640
8694
|
const passportUserId = session?.mpcUserId || "";
|
|
8641
8695
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
8642
8696
|
const { mutate: createPasswordBackup, isPending: isPasswordBackupCreating } = (0, import_react_query13.useMutation)({
|
|
@@ -8666,7 +8720,7 @@ function useCreateBackup() {
|
|
|
8666
8720
|
})
|
|
8667
8721
|
);
|
|
8668
8722
|
}
|
|
8669
|
-
onBackupSuccess
|
|
8723
|
+
onBackupSuccess();
|
|
8670
8724
|
} else {
|
|
8671
8725
|
setError(response.error || "Server backup failed");
|
|
8672
8726
|
}
|
|
@@ -8703,7 +8757,7 @@ function useCreateBackup() {
|
|
|
8703
8757
|
})
|
|
8704
8758
|
);
|
|
8705
8759
|
}
|
|
8706
|
-
onBackupSuccess
|
|
8760
|
+
onBackupSuccess();
|
|
8707
8761
|
},
|
|
8708
8762
|
onError: async (error) => {
|
|
8709
8763
|
setError(error?.message || "Backup creation failed");
|
|
@@ -8743,7 +8797,7 @@ function useCreateBackup() {
|
|
|
8743
8797
|
})
|
|
8744
8798
|
);
|
|
8745
8799
|
}
|
|
8746
|
-
onBackupSuccess
|
|
8800
|
+
onBackupSuccess();
|
|
8747
8801
|
},
|
|
8748
8802
|
onError: async (error) => {
|
|
8749
8803
|
setError(error?.message || "Backup creation failed");
|
|
@@ -8873,7 +8927,7 @@ function useRestoreAccount() {
|
|
|
8873
8927
|
}
|
|
8874
8928
|
|
|
8875
8929
|
// src/internal/components/KeyshareRestoreMenu/hooks/useValidateFileBackup.ts
|
|
8876
|
-
var
|
|
8930
|
+
var import_react30 = require("react");
|
|
8877
8931
|
function validateRestoreFileFormat(parsedData) {
|
|
8878
8932
|
if (typeof parsedData !== "object" || parsedData === null) return false;
|
|
8879
8933
|
const data = parsedData;
|
|
@@ -8883,7 +8937,7 @@ function useValidateFileBackup() {
|
|
|
8883
8937
|
const restoreFile = useRestoreStore((st) => st.restoreFile);
|
|
8884
8938
|
const setError = useRestoreStore((st) => st.setError);
|
|
8885
8939
|
const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
|
|
8886
|
-
(0,
|
|
8940
|
+
(0, import_react30.useEffect)(() => {
|
|
8887
8941
|
if (!restoreFile) {
|
|
8888
8942
|
return;
|
|
8889
8943
|
}
|
|
@@ -8923,7 +8977,7 @@ function MethodSelector(props) {
|
|
|
8923
8977
|
setError,
|
|
8924
8978
|
setSuccess
|
|
8925
8979
|
} = useRestoreStore();
|
|
8926
|
-
const recoveryRenderMethods = (0,
|
|
8980
|
+
const recoveryRenderMethods = (0, import_react31.useMemo)(() => {
|
|
8927
8981
|
const methodsWithBackupData = getRecoveryRenderMethods(mode).map((mt) => {
|
|
8928
8982
|
let data = null;
|
|
8929
8983
|
switch (true) {
|
|
@@ -8938,7 +8992,7 @@ function MethodSelector(props) {
|
|
|
8938
8992
|
return methodsWithBackupData;
|
|
8939
8993
|
}, [mode, serverRecoveryStatus]);
|
|
8940
8994
|
if (!!selectedRecoveryMethod) return null;
|
|
8941
|
-
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
8995
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_react31.Fragment, { children: [
|
|
8942
8996
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block w-full text-xs font-semibold text-center leading-8 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "leading-8", children: mode === "restore" ? "Choose restore method" : "Create or Update Backup via" }) }),
|
|
8943
8997
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
8944
8998
|
"div",
|
|
@@ -8965,7 +9019,7 @@ function MethodSelector(props) {
|
|
|
8965
9019
|
},
|
|
8966
9020
|
children: [
|
|
8967
9021
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Icon2, { className: "w-5 h-5 md:w-8 md:h-8" }),
|
|
8968
|
-
!!data?.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-6 h-6 absolute -top-2 -right-2 flex items-center justify-center bg-
|
|
9022
|
+
!!data?.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "w-6 h-6 absolute -top-2 -right-2 flex items-center justify-center bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(PositiveIcon, { className: "w-4 h-4" }) })
|
|
8969
9023
|
]
|
|
8970
9024
|
}
|
|
8971
9025
|
),
|
|
@@ -8977,39 +9031,12 @@ function MethodSelector(props) {
|
|
|
8977
9031
|
}
|
|
8978
9032
|
|
|
8979
9033
|
// src/internal/components/KeyshareRestoreMenu/components/NoBackupFound.tsx
|
|
8980
|
-
var import_lucide_react22 = require("lucide-react");
|
|
8981
|
-
|
|
8982
|
-
// src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
|
|
8983
9034
|
var import_lucide_react21 = require("lucide-react");
|
|
8984
|
-
var import_react31 = require("react");
|
|
8985
9035
|
|
|
8986
|
-
// src/internal/components/
|
|
8987
|
-
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
|
|
9036
|
+
// src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
|
|
8988
9037
|
var import_lucide_react20 = require("lucide-react");
|
|
9038
|
+
var import_react32 = require("react");
|
|
8989
9039
|
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
8990
|
-
function Checkbox({ className, ...props }) {
|
|
8991
|
-
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
8992
|
-
CheckboxPrimitive.Root,
|
|
8993
|
-
{
|
|
8994
|
-
"data-slot": "checkbox",
|
|
8995
|
-
className: cn(
|
|
8996
|
-
"cursor-pointer peer size-5 shrink-0 rounded-[5px] outline-none",
|
|
8997
|
-
"border border-[var(--l-pass-bd)] data-[state=checked]:border-[var(--l-pass-bd-intense)] aria-invalid:border-[var(--l-pass-error)]",
|
|
8998
|
-
"bg-[var(--l-pass-secondary)] data-[state=checked]:bg-[var(--l-pass-secondary)]",
|
|
8999
|
-
"data-[state=checked]:text-[var(--l-pass-fg)]",
|
|
9000
|
-
"aria-invalid:ring-[var(--l-pass-error)]",
|
|
9001
|
-
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[2px]",
|
|
9002
|
-
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
9003
|
-
className
|
|
9004
|
-
),
|
|
9005
|
-
...props,
|
|
9006
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CheckboxPrimitive.Indicator, { "data-slot": "checkbox-indicator", className: "grid place-content-center transition-none", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.CheckIcon, { className: "w-4 h-4 text-[var(--l-pass-fg)]" }) })
|
|
9007
|
-
}
|
|
9008
|
-
);
|
|
9009
|
-
}
|
|
9010
|
-
|
|
9011
|
-
// src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
|
|
9012
|
-
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
9013
9040
|
function PasswordPasskey(props) {
|
|
9014
9041
|
const {
|
|
9015
9042
|
mode = "restore",
|
|
@@ -9020,11 +9047,17 @@ function PasswordPasskey(props) {
|
|
|
9020
9047
|
isEncryptionMethod,
|
|
9021
9048
|
actionHandler
|
|
9022
9049
|
} = props;
|
|
9023
|
-
const
|
|
9024
|
-
const
|
|
9025
|
-
|
|
9026
|
-
|
|
9027
|
-
|
|
9050
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
9051
|
+
const actionRef = (0, import_react32.useRef)(null);
|
|
9052
|
+
const { showPassword, restorePassword, usePasskey, error, setRestorePassword, setShowPassword } = useRestoreStore();
|
|
9053
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
|
|
9054
|
+
!hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "block w-full text-[10px] leading-4 px-[var(--l-pass-pd)] truncate", children: [
|
|
9055
|
+
"Use your ",
|
|
9056
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("strong", { children: usePasskey ? "Passkey" : "Password" }),
|
|
9057
|
+
" to complete account security setup."
|
|
9058
|
+
] }),
|
|
9059
|
+
!usePasskey ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
9060
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
9028
9061
|
Input,
|
|
9029
9062
|
{
|
|
9030
9063
|
autoComplete: "off",
|
|
@@ -9040,7 +9073,7 @@ function PasswordPasskey(props) {
|
|
|
9040
9073
|
onKeyDown: (e) => {
|
|
9041
9074
|
if (e.key === "Enter" && !isLoading && restorePassword) actionRef.current?.click();
|
|
9042
9075
|
},
|
|
9043
|
-
element: /* @__PURE__ */ (0,
|
|
9076
|
+
element: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
9044
9077
|
Button,
|
|
9045
9078
|
{
|
|
9046
9079
|
variant: "ghost",
|
|
@@ -9049,12 +9082,12 @@ function PasswordPasskey(props) {
|
|
|
9049
9082
|
title: "Toggle Password Visibility",
|
|
9050
9083
|
disabled: isLoading || disabled,
|
|
9051
9084
|
onClick: () => setShowPassword(!showPassword),
|
|
9052
|
-
children: showPassword ? /* @__PURE__ */ (0,
|
|
9085
|
+
children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.Eye, { className: "h-4 w-4" })
|
|
9053
9086
|
}
|
|
9054
9087
|
)
|
|
9055
9088
|
}
|
|
9056
9089
|
),
|
|
9057
|
-
/* @__PURE__ */ (0,
|
|
9090
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
9058
9091
|
Button,
|
|
9059
9092
|
{
|
|
9060
9093
|
ref: actionRef,
|
|
@@ -9064,10 +9097,10 @@ function PasswordPasskey(props) {
|
|
|
9064
9097
|
title: actionCaption,
|
|
9065
9098
|
disabled: isLoading || disabled || error?.includes("Invalid backup file") || !usePasskey && !restorePassword,
|
|
9066
9099
|
className: "w-full w-12 h-12 flex-shrink-0 rounded-[var(--l-pass-el-bdrs)]",
|
|
9067
|
-
children: isLoading ? /* @__PURE__ */ (0,
|
|
9100
|
+
children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.ChevronRight, { className: "h-4 w-4" })
|
|
9068
9101
|
}
|
|
9069
9102
|
)
|
|
9070
|
-
] }) : /* @__PURE__ */ (0,
|
|
9103
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
9071
9104
|
Button,
|
|
9072
9105
|
{
|
|
9073
9106
|
ref: actionRef,
|
|
@@ -9078,54 +9111,35 @@ function PasswordPasskey(props) {
|
|
|
9078
9111
|
disabled: isLoading || disabled || !!error || !usePasskey && !restorePassword,
|
|
9079
9112
|
className: "w-full",
|
|
9080
9113
|
children: [
|
|
9081
|
-
isLoading ? /* @__PURE__ */ (0,
|
|
9082
|
-
!isLoading && /* @__PURE__ */ (0,
|
|
9114
|
+
isLoading ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ActionIcon, { className: "h-4 w-4" }),
|
|
9115
|
+
!isLoading && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { children: actionCaption })
|
|
9083
9116
|
]
|
|
9084
9117
|
}
|
|
9085
9118
|
),
|
|
9086
|
-
!isEncryptionMethod && /* @__PURE__ */ (0,
|
|
9087
|
-
|
|
9088
|
-
|
|
9089
|
-
/* @__PURE__ */ (0,
|
|
9090
|
-
|
|
9091
|
-
|
|
9092
|
-
/* @__PURE__ */ (0,
|
|
9093
|
-
"
|
|
9094
|
-
|
|
9095
|
-
"
|
|
9096
|
-
|
|
9097
|
-
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
className: "inline font-bold underline underline-offset-2",
|
|
9101
|
-
children: "Learn more about Google Passkey"
|
|
9102
|
-
}
|
|
9103
|
-
)
|
|
9104
|
-
] })
|
|
9105
|
-
] })
|
|
9106
|
-
] }),
|
|
9107
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9108
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
9109
|
-
Checkbox,
|
|
9110
|
-
{
|
|
9111
|
-
id: "use-backup-password-or-passkey",
|
|
9112
|
-
name: "use-backup-password-checkbox",
|
|
9113
|
-
checked: usePasskey,
|
|
9114
|
-
disabled: isLoading || disabled || !!error,
|
|
9115
|
-
onCheckedChange: (checked) => {
|
|
9116
|
-
if (!!checked) setRestorePassword("");
|
|
9117
|
-
setUsePasskey(!!checked);
|
|
9119
|
+
!isEncryptionMethod && !!usePasskey && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Highlight, { type: "info", className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-[10px]", children: mode === "backup" && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9120
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.Info, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9121
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "text-[var(--l-pass-fg-muted)] block flex-1", children: [
|
|
9122
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("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." }),
|
|
9123
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "block", children: [
|
|
9124
|
+
" Passkeys are a password-free alternative. ",
|
|
9125
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
9126
|
+
"a",
|
|
9127
|
+
{
|
|
9128
|
+
target: "_blank",
|
|
9129
|
+
rel: "noopener noreferrer",
|
|
9130
|
+
href: "https://safety.google/safety/authentication/passkey/",
|
|
9131
|
+
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)]",
|
|
9132
|
+
children: "(Learn more about Google Passkey)"
|
|
9118
9133
|
}
|
|
9119
|
-
|
|
9120
|
-
)
|
|
9121
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("label", { htmlFor: "use-backup-password-or-passkey", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use Passkey to encrypt your keyshare backup" })
|
|
9134
|
+
)
|
|
9135
|
+
] })
|
|
9122
9136
|
] })
|
|
9123
|
-
] })
|
|
9137
|
+
] }) })
|
|
9124
9138
|
] });
|
|
9125
9139
|
}
|
|
9126
9140
|
|
|
9127
9141
|
// src/internal/components/KeyshareRestoreMenu/components/NoBackupFound.tsx
|
|
9128
|
-
var
|
|
9142
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
9129
9143
|
function NoBackupFound(props) {
|
|
9130
9144
|
const { isLoading, restoreFromFile } = props;
|
|
9131
9145
|
const restoreFile = useRestoreStore((st) => st.restoreFile);
|
|
@@ -9134,38 +9148,33 @@ function NoBackupFound(props) {
|
|
|
9134
9148
|
const setRestoreFile = useRestoreStore((st) => st.setRestoreFile);
|
|
9135
9149
|
const setError = useRestoreStore((st) => st.setError);
|
|
9136
9150
|
useValidateFileBackup();
|
|
9137
|
-
return /* @__PURE__ */ (0,
|
|
9138
|
-
|
|
9139
|
-
/* @__PURE__ */ (0,
|
|
9140
|
-
/* @__PURE__ */ (0,
|
|
9141
|
-
|
|
9142
|
-
|
|
9143
|
-
|
|
9144
|
-
|
|
9145
|
-
|
|
9151
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
|
|
9152
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
9153
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react21.User, { className: "w-6 h-6" }),
|
|
9154
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "font-bold text-xl leading-6", children: "Account Recovery" })
|
|
9155
|
+
] }),
|
|
9156
|
+
!restoreFile && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(Highlight, { type: "warning", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
9157
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react21.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
9158
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
|
|
9159
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "block w-full text-sm leading-4 font-bold", children: "No Backup Found" }),
|
|
9160
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("span", { className: "block w-full text-xs", children: [
|
|
9161
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "block mb-1", children: "This device doesn't have access to your wallet keyshare, and no backup was found." }),
|
|
9162
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("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." })
|
|
9146
9163
|
] })
|
|
9147
9164
|
] })
|
|
9148
9165
|
] }),
|
|
9149
|
-
restoreFile
|
|
9150
|
-
/* @__PURE__ */ (0,
|
|
9151
|
-
/* @__PURE__ */ (0,
|
|
9152
|
-
] }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "w-full flex items-center", children: [
|
|
9153
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
9154
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "flex-none font-bold px-2 text-xs leading-4", children: "Account Recovery" }),
|
|
9155
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
9156
|
-
] }),
|
|
9157
|
-
!restoreFile && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9158
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react22.Upload, { className: "h-4 w-4 flex-0" }),
|
|
9159
|
-
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "block w-full text-xs", children: "Upload a backup file if you have one" })
|
|
9166
|
+
!restoreFile && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(Highlight, { type: "info", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9167
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react21.Upload, { className: "h-4 w-4 flex-0" }),
|
|
9168
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "block w-full text-xs", children: "Upload a backup file if you have one" })
|
|
9160
9169
|
] }),
|
|
9161
|
-
/* @__PURE__ */ (0,
|
|
9170
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
9162
9171
|
"label",
|
|
9163
9172
|
{
|
|
9164
9173
|
className: cn(
|
|
9165
|
-
"block w-full
|
|
9166
|
-
"p-[var(--l-pass-
|
|
9174
|
+
"block w-full flex items-center justify-center cursor-pointer",
|
|
9175
|
+
"p-[var(--l-pass-gap)] bg-[var(--l-pass-secondary)] rounded-[var(--l-pass-el-bdrs)]"
|
|
9167
9176
|
),
|
|
9168
|
-
children: /* @__PURE__ */ (0,
|
|
9177
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
9169
9178
|
"input",
|
|
9170
9179
|
{
|
|
9171
9180
|
type: "file",
|
|
@@ -9177,23 +9186,23 @@ function NoBackupFound(props) {
|
|
|
9177
9186
|
className: cn(
|
|
9178
9187
|
"file:cursor-pointer",
|
|
9179
9188
|
"transition-colors duration-200 ease-in-out",
|
|
9180
|
-
"block w-
|
|
9181
|
-
"file:
|
|
9189
|
+
"block w-full font-medium font-mono",
|
|
9190
|
+
"file:h-12 file:text-[16px] file:bg-[var(--l-pass-primary)] file:text-[var(--l-pass-fg-inverted)]",
|
|
9182
9191
|
"file:hover:opacity-90 file:active:opacity-80",
|
|
9183
|
-
"file:mr-[var(--l-pass-
|
|
9192
|
+
"file:mr-[var(--l-pass-gap)] file:px-[var(--l-pass-pd)] file:rounded-[var(--l-pass-el-bdrs)] file:border-0"
|
|
9184
9193
|
)
|
|
9185
9194
|
}
|
|
9186
9195
|
)
|
|
9187
9196
|
}
|
|
9188
9197
|
),
|
|
9189
|
-
restoreFile && /* @__PURE__ */ (0,
|
|
9198
|
+
restoreFile && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
9190
9199
|
PasswordPasskey,
|
|
9191
9200
|
{
|
|
9192
9201
|
mode: "restore",
|
|
9193
9202
|
isEncryptionMethod: true,
|
|
9194
9203
|
isLoading,
|
|
9195
9204
|
actionCaption: `Decrypt ${restoreFile ? restoreFile.name : "Backup File"} by ${usePasskey ? "Passkey" : "Password"}`,
|
|
9196
|
-
actionIcon:
|
|
9205
|
+
actionIcon: import_lucide_react21.FileUp,
|
|
9197
9206
|
actionHandler: () => restoreFromFile()
|
|
9198
9207
|
}
|
|
9199
9208
|
)
|
|
@@ -9201,40 +9210,131 @@ function NoBackupFound(props) {
|
|
|
9201
9210
|
}
|
|
9202
9211
|
|
|
9203
9212
|
// src/internal/components/KeyshareRestoreMenu/methods/File.tsx
|
|
9204
|
-
var
|
|
9213
|
+
var import_lucide_react22 = require("lucide-react");
|
|
9214
|
+
|
|
9215
|
+
// src/internal/components/ui/switch.tsx
|
|
9216
|
+
var import_react33 = require("react");
|
|
9217
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
9218
|
+
var Switch = (0, import_react33.forwardRef)((props, ref) => {
|
|
9219
|
+
const { className, labels, ...inputProps } = props;
|
|
9220
|
+
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
9221
|
+
const [labelW, setLabelW] = (0, import_react33.useState)(0);
|
|
9222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9223
|
+
"div",
|
|
9224
|
+
{
|
|
9225
|
+
role: "switch",
|
|
9226
|
+
"aria-checked": inputProps.checked,
|
|
9227
|
+
className: cn(
|
|
9228
|
+
"block rounded-full w-fit h-7 p-1 outline-none flex-none",
|
|
9229
|
+
inputProps.checked ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-info)]",
|
|
9230
|
+
className
|
|
9231
|
+
),
|
|
9232
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
9233
|
+
"label",
|
|
9234
|
+
{
|
|
9235
|
+
className: "relative inline-block h-5 outline-none",
|
|
9236
|
+
style: {
|
|
9237
|
+
width: `calc(20px + ${labelW}px)`,
|
|
9238
|
+
transition: "width 200ms ease",
|
|
9239
|
+
cursor: inputProps.disabled ? "not-allowed" : "pointer"
|
|
9240
|
+
},
|
|
9241
|
+
children: [
|
|
9242
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("input", { type: "checkbox", className: "hidden sr-only peer outline-none", ref, ...inputProps }),
|
|
9243
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9244
|
+
"span",
|
|
9245
|
+
{
|
|
9246
|
+
ref: (inst) => {
|
|
9247
|
+
if (inst) setLabelW(inst.clientWidth);
|
|
9248
|
+
},
|
|
9249
|
+
style: {
|
|
9250
|
+
left: inputProps.checked ? "0px" : "20px",
|
|
9251
|
+
color: inputProps.checked ? colorMode === "dark" ? "var(--l-pass-fg-inverted)" : "var(--l-pass-fg)" : "var(--l-pass-fg)",
|
|
9252
|
+
transition: "left 200ms ease"
|
|
9253
|
+
},
|
|
9254
|
+
className: "absolute top-0 px-2 text-xs leading-5 font-semibold min-w-5 select-none",
|
|
9255
|
+
children: inputProps.checked ? labels?.checked : labels?.unchecked
|
|
9256
|
+
}
|
|
9257
|
+
),
|
|
9258
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
9259
|
+
"span",
|
|
9260
|
+
{
|
|
9261
|
+
style: {
|
|
9262
|
+
left: inputProps.checked ? `${labelW}px` : "0px",
|
|
9263
|
+
transition: "left 200ms ease"
|
|
9264
|
+
},
|
|
9265
|
+
className: cn("absolute top-0 w-5 h-5 rounded-full bg-[var(--l-pass-fg)]", {
|
|
9266
|
+
// 'bg-[var(--l-pass-fg-inverted)]': inputProps.checked,
|
|
9267
|
+
// 'bg-[var(--l-pass-fg)]': !inputProps.checked
|
|
9268
|
+
})
|
|
9269
|
+
}
|
|
9270
|
+
)
|
|
9271
|
+
]
|
|
9272
|
+
}
|
|
9273
|
+
)
|
|
9274
|
+
}
|
|
9275
|
+
);
|
|
9276
|
+
});
|
|
9277
|
+
Switch.displayName = "Switch";
|
|
9278
|
+
|
|
9279
|
+
// src/internal/components/KeyshareRestoreMenu/methods/File.tsx
|
|
9205
9280
|
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
9206
9281
|
function File2(props) {
|
|
9207
9282
|
const { isLoading, mode = "restore", fileHandler } = props;
|
|
9208
|
-
const {
|
|
9283
|
+
const {
|
|
9284
|
+
restoreFile,
|
|
9285
|
+
error,
|
|
9286
|
+
usePasskey,
|
|
9287
|
+
setRestorePassword,
|
|
9288
|
+
setMethod,
|
|
9289
|
+
setRestoreFile,
|
|
9290
|
+
setUsePasskey,
|
|
9291
|
+
setError,
|
|
9292
|
+
setSuccess
|
|
9293
|
+
} = useRestoreStore();
|
|
9209
9294
|
useValidateFileBackup();
|
|
9210
9295
|
const actionText = mode === "backup" ? "Download" : "Restore with";
|
|
9211
9296
|
const isPasswordPasskey = mode === "restore" && !!restoreFile || mode === "backup";
|
|
9212
9297
|
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [
|
|
9213
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex items-center
|
|
9214
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.
|
|
9215
|
-
|
|
9298
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
9299
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9300
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
9301
|
+
Button,
|
|
9302
|
+
{
|
|
9303
|
+
variant: "ghost",
|
|
9304
|
+
size: "icon",
|
|
9305
|
+
title: "Back",
|
|
9306
|
+
onClick: () => {
|
|
9307
|
+
setRestoreFile(null);
|
|
9308
|
+
setError(null);
|
|
9309
|
+
setSuccess(null);
|
|
9310
|
+
setUsePasskey(false);
|
|
9311
|
+
setMethod(null);
|
|
9312
|
+
},
|
|
9313
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react22.ArrowLeft, { className: "h-4 w-4" })
|
|
9314
|
+
}
|
|
9315
|
+
),
|
|
9316
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-xl font-semibold", children: `${mode === "restore" ? "Restore with" : ""} File ${mode === "restore" ? "by" : "Backup by"}`.trim() })
|
|
9317
|
+
] }),
|
|
9318
|
+
mode !== "restore" && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
9319
|
+
Switch,
|
|
9216
9320
|
{
|
|
9217
|
-
|
|
9218
|
-
|
|
9219
|
-
|
|
9220
|
-
|
|
9221
|
-
|
|
9222
|
-
|
|
9223
|
-
|
|
9224
|
-
|
|
9225
|
-
setMethod(null);
|
|
9226
|
-
},
|
|
9227
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react23.ArrowLeft, { className: "h-4 w-4" })
|
|
9321
|
+
name: "password-passkey-toggle",
|
|
9322
|
+
labels: { checked: "Password", unchecked: "Passkey" },
|
|
9323
|
+
disabled: isLoading || !!error,
|
|
9324
|
+
checked: !usePasskey,
|
|
9325
|
+
onChange: (e) => {
|
|
9326
|
+
if (!!e.target.checked) setRestorePassword("");
|
|
9327
|
+
setUsePasskey(!e.target.checked);
|
|
9328
|
+
}
|
|
9228
9329
|
}
|
|
9229
|
-
)
|
|
9230
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-xl font-semibold", children: `${mode === "restore" ? "Restore with" : "Create"} File ${mode === "restore" ? "" : "Backup"}`.trim() })
|
|
9330
|
+
)
|
|
9231
9331
|
] }),
|
|
9232
9332
|
mode === "restore" && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
9233
9333
|
"label",
|
|
9234
9334
|
{
|
|
9235
9335
|
className: cn(
|
|
9236
|
-
"block w-full
|
|
9237
|
-
"p-[var(--l-pass-
|
|
9336
|
+
"block w-full flex items-center justify-center cursor-pointer",
|
|
9337
|
+
"p-[var(--l-pass-gap)] bg-[var(--l-pass-secondary)] rounded-[var(--l-pass-el-bdrs)]"
|
|
9238
9338
|
),
|
|
9239
9339
|
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
9240
9340
|
"input",
|
|
@@ -9248,9 +9348,9 @@ function File2(props) {
|
|
|
9248
9348
|
className: cn(
|
|
9249
9349
|
"file:cursor-pointer",
|
|
9250
9350
|
"transition-colors duration-200 ease-in-out",
|
|
9251
|
-
"block w-
|
|
9351
|
+
"block w-full file:h-12 text-xs file:bg-[var(--l-pass-primary)] file:text-[var(--l-pass-fg-inverted)]",
|
|
9252
9352
|
"file:hover:opacity-90 file:active:opacity-80",
|
|
9253
|
-
"file:mr-[var(--l-pass-
|
|
9353
|
+
"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"
|
|
9254
9354
|
)
|
|
9255
9355
|
}
|
|
9256
9356
|
)
|
|
@@ -9263,7 +9363,7 @@ function File2(props) {
|
|
|
9263
9363
|
isLoading,
|
|
9264
9364
|
isEncryptionMethod: mode === "restore",
|
|
9265
9365
|
actionCaption: `${actionText} ${restoreFile ? restoreFile.name : "Backup File"}`,
|
|
9266
|
-
actionIcon: mode === "restore" ?
|
|
9366
|
+
actionIcon: mode === "restore" ? import_lucide_react22.FileUp : import_lucide_react22.FileDown,
|
|
9267
9367
|
actionHandler: () => fileHandler(),
|
|
9268
9368
|
disabled: !!isLoading || mode === "restore" && !restoreFile
|
|
9269
9369
|
}
|
|
@@ -9274,54 +9374,72 @@ function File2(props) {
|
|
|
9274
9374
|
// src/internal/components/KeyshareRestoreMenu/methods/Server.tsx
|
|
9275
9375
|
var import_react_query15 = require("@tanstack/react-query");
|
|
9276
9376
|
var import_dayjs = __toESM(require("dayjs"), 1);
|
|
9277
|
-
var
|
|
9278
|
-
var
|
|
9377
|
+
var import_lucide_react23 = require("lucide-react");
|
|
9378
|
+
var import_react34 = require("react");
|
|
9279
9379
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
9280
9380
|
function Server(props) {
|
|
9281
9381
|
const { isLoading, mode = "restore", serverHandler } = props;
|
|
9282
9382
|
const qc = (0, import_react_query15.useQueryClient)();
|
|
9283
9383
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9284
|
-
const
|
|
9384
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
9385
|
+
const { usePasskey, error, setUsePasskey, setRestorePassword, setShowPassword, setMethod, setError, setSuccess } = useRestoreStore();
|
|
9285
9386
|
const serverRecoveryStatus = qc.getQueryData([CHECK_BACKUP_QUERY_KEY, address]);
|
|
9286
|
-
(0,
|
|
9387
|
+
(0, import_react34.useEffect)(() => {
|
|
9287
9388
|
if (mode === "backup" || !serverRecoveryStatus?.created?.encryptionMethod) return;
|
|
9288
9389
|
setUsePasskey(serverRecoveryStatus.created.encryptionMethod === "passkey");
|
|
9289
9390
|
}, [mode, serverRecoveryStatus, setUsePasskey]);
|
|
9391
|
+
const isEncryptionMethod = mode === "restore" && !!serverRecoveryStatus?.created?.encryptionMethod;
|
|
9290
9392
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [
|
|
9291
|
-
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex items-center
|
|
9292
|
-
/* @__PURE__ */ (0, import_jsx_runtime43.
|
|
9293
|
-
|
|
9393
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: cn("flex items-center justify-between", { "px-[var(--l-pass-pd)]": !hasServerVault }), children: [
|
|
9394
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9395
|
+
!!hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
9396
|
+
Button,
|
|
9397
|
+
{
|
|
9398
|
+
variant: "ghost",
|
|
9399
|
+
size: "icon",
|
|
9400
|
+
title: "Back",
|
|
9401
|
+
onClick: () => {
|
|
9402
|
+
setShowPassword(false);
|
|
9403
|
+
setUsePasskey(false);
|
|
9404
|
+
setRestorePassword("");
|
|
9405
|
+
setUsePasskey(false);
|
|
9406
|
+
setError(null);
|
|
9407
|
+
setSuccess(null);
|
|
9408
|
+
setMethod(null);
|
|
9409
|
+
},
|
|
9410
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react23.ArrowLeft, { className: "h-4 w-4" })
|
|
9411
|
+
}
|
|
9412
|
+
),
|
|
9413
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "text-xl font-semibold", children: mode === "restore" ? "Restore with" : usePasskey ? "Passkey" : "Password" })
|
|
9414
|
+
] }),
|
|
9415
|
+
!isEncryptionMethod && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
9416
|
+
Switch,
|
|
9294
9417
|
{
|
|
9295
|
-
|
|
9296
|
-
|
|
9297
|
-
|
|
9298
|
-
|
|
9299
|
-
|
|
9300
|
-
|
|
9301
|
-
setRestorePassword("");
|
|
9302
|
-
setUsePasskey(
|
|
9303
|
-
|
|
9304
|
-
setSuccess(null);
|
|
9305
|
-
setMethod(null);
|
|
9306
|
-
},
|
|
9307
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react24.ArrowLeft, { className: "h-4 w-4" })
|
|
9418
|
+
name: "password-passkey-toggle",
|
|
9419
|
+
labels: { checked: "Password", unchecked: "Passkey" },
|
|
9420
|
+
disabled: isLoading,
|
|
9421
|
+
checked: !usePasskey,
|
|
9422
|
+
onChange: (e) => {
|
|
9423
|
+
if (!!error) setError(null);
|
|
9424
|
+
if (!!e.target.checked) setRestorePassword("");
|
|
9425
|
+
setUsePasskey(!e.target.checked);
|
|
9426
|
+
}
|
|
9308
9427
|
}
|
|
9309
|
-
)
|
|
9310
|
-
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "text-xl font-semibold", children: `${mode === "restore" ? "Restore with" : "Create"} ${usePasskey ? "Passkey" : "Password"} ${mode === "restore" ? "" : "Backup"}`.trim() })
|
|
9428
|
+
)
|
|
9311
9429
|
] }),
|
|
9312
9430
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
9313
9431
|
PasswordPasskey,
|
|
9314
9432
|
{
|
|
9315
9433
|
mode,
|
|
9316
|
-
isEncryptionMethod
|
|
9434
|
+
isEncryptionMethod,
|
|
9317
9435
|
isLoading,
|
|
9318
|
-
actionCaption: mode === "backup" ? "Create Backup" : "Restore from Vault",
|
|
9319
|
-
actionIcon: mode === "backup" ?
|
|
9436
|
+
actionCaption: mode === "backup" ? "Create Vault Backup" : "Restore from Vault",
|
|
9437
|
+
actionIcon: mode === "backup" ? import_lucide_react23.Upload : import_lucide_react23.Download,
|
|
9320
9438
|
actionHandler: () => serverHandler()
|
|
9321
9439
|
}
|
|
9322
9440
|
),
|
|
9323
9441
|
!!serverRecoveryStatus?.created?.at && /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9324
|
-
serverRecoveryStatus.created.encryptionMethod === "password" ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(OtpIcon, { className: "w-4 h-4 inline" }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
9442
|
+
serverRecoveryStatus.created.encryptionMethod === "password" ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(OtpIcon, { className: "w-4 h-4 inline" }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react23.Key, { className: "w-4 h-4 inline" }),
|
|
9325
9443
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("span", { className: "text-[10px] flex-1 block", children: [
|
|
9326
9444
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { children: `We found a ${serverRecoveryStatus.created.encryptionMethod?.toUpperCase()} Backup` }),
|
|
9327
9445
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("br", {}),
|
|
@@ -9336,12 +9454,12 @@ function Server(props) {
|
|
|
9336
9454
|
|
|
9337
9455
|
// src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx
|
|
9338
9456
|
var import_react_query16 = require("@tanstack/react-query");
|
|
9339
|
-
var
|
|
9340
|
-
var
|
|
9457
|
+
var import_lucide_react25 = require("lucide-react");
|
|
9458
|
+
var import_react35 = require("react");
|
|
9341
9459
|
|
|
9342
9460
|
// src/internal/components/ui/select.tsx
|
|
9343
9461
|
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
9344
|
-
var
|
|
9462
|
+
var import_lucide_react24 = require("lucide-react");
|
|
9345
9463
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
9346
9464
|
function Select({ ...props }) {
|
|
9347
9465
|
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
@@ -9371,7 +9489,7 @@ function SelectTrigger({
|
|
|
9371
9489
|
...props,
|
|
9372
9490
|
children: [
|
|
9373
9491
|
children,
|
|
9374
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
9492
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react24.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
9375
9493
|
]
|
|
9376
9494
|
}
|
|
9377
9495
|
);
|
|
@@ -9432,7 +9550,7 @@ function SelectItem({ className, children, ...props }) {
|
|
|
9432
9550
|
),
|
|
9433
9551
|
...props,
|
|
9434
9552
|
children: [
|
|
9435
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { "data-slot": "select-item-indicator", className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
9553
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { "data-slot": "select-item-indicator", className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react24.CheckIcon, { className: "size-4" }) }) }),
|
|
9436
9554
|
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectPrimitive.ItemText, { children })
|
|
9437
9555
|
]
|
|
9438
9556
|
}
|
|
@@ -9445,7 +9563,7 @@ function SelectScrollUpButton({ className, ...props }) {
|
|
|
9445
9563
|
"data-slot": "select-scroll-up-button",
|
|
9446
9564
|
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
9447
9565
|
...props,
|
|
9448
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
9566
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react24.ChevronUpIcon, { className: "size-4" })
|
|
9449
9567
|
}
|
|
9450
9568
|
);
|
|
9451
9569
|
}
|
|
@@ -9459,7 +9577,7 @@ function SelectScrollDownButton({
|
|
|
9459
9577
|
"data-slot": "select-scroll-down-button",
|
|
9460
9578
|
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
9461
9579
|
...props,
|
|
9462
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
9580
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react24.ChevronDownIcon, { className: "size-4" })
|
|
9463
9581
|
}
|
|
9464
9582
|
);
|
|
9465
9583
|
}
|
|
@@ -9485,7 +9603,7 @@ function Cloud2(props) {
|
|
|
9485
9603
|
return availableProviders.map((p) => ({ id: p.id, name: p.name, available: p.isAvailable() }));
|
|
9486
9604
|
}
|
|
9487
9605
|
});
|
|
9488
|
-
(0,
|
|
9606
|
+
(0, import_react35.useEffect)(() => {
|
|
9489
9607
|
if (isCloudProvidersLoading) return;
|
|
9490
9608
|
if (!!cloudProvidersError) {
|
|
9491
9609
|
console.error("[KeyshareBackup] Failed to load cloud providers:", cloudProvidersError);
|
|
@@ -9507,12 +9625,12 @@ function Cloud2(props) {
|
|
|
9507
9625
|
setSelectedCloudProvider(null);
|
|
9508
9626
|
setMethod(null);
|
|
9509
9627
|
},
|
|
9510
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
9628
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react25.ArrowLeft, { className: "h-4 w-4" })
|
|
9511
9629
|
}
|
|
9512
9630
|
),
|
|
9513
9631
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-lg font-semibold", children: `${mode === "restore" ? "Restore" : "Create"} Cloud Backup` })
|
|
9514
9632
|
] }),
|
|
9515
|
-
isCloudProvidersLoading && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
9633
|
+
isCloudProvidersLoading && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react25.Loader, { className: "animate-spin w-4 h-4 mx-auto" }),
|
|
9516
9634
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "block text-[10px] text-[var(--l-pass-fg-muted)]", children: "1. Select Cloud Backup Vault" }),
|
|
9517
9635
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
9518
9636
|
Select,
|
|
@@ -9542,7 +9660,7 @@ function Cloud2(props) {
|
|
|
9542
9660
|
mode,
|
|
9543
9661
|
isLoading,
|
|
9544
9662
|
actionCaption: mode === "backup" ? "Create Cloud Backup" : "Restore Cloud Backup",
|
|
9545
|
-
actionIcon: mode === "backup" ?
|
|
9663
|
+
actionIcon: mode === "backup" ? import_lucide_react25.CloudUpload : import_lucide_react25.CloudDownload,
|
|
9546
9664
|
actionHandler: () => cloudHandler?.(),
|
|
9547
9665
|
disabled: !!isCloudProvidersLoading || !selectedCloudProvider || cloudProviders.length === 0 || true
|
|
9548
9666
|
}
|
|
@@ -9569,7 +9687,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
9569
9687
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9570
9688
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
9571
9689
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9572
|
-
(0,
|
|
9690
|
+
(0, import_react36.useEffect)(() => setIsDialogForced(true), []);
|
|
9573
9691
|
useCheckBackupAvailability();
|
|
9574
9692
|
const {
|
|
9575
9693
|
method: currentRestoreMethod,
|
|
@@ -9632,7 +9750,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
9632
9750
|
className: "list-scrollbar-y w-full",
|
|
9633
9751
|
children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
9634
9752
|
isBackupChecking && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
|
|
9635
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9753
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.Loader, { className: "w-5 h-5 animate-spin" }),
|
|
9636
9754
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "block w-full text-xs leading-4", children: "Checking for backups..." }),
|
|
9637
9755
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "block w-full text-xs leading-4", children: "Please wait while we check for available backups..." })
|
|
9638
9756
|
] }),
|
|
@@ -9645,7 +9763,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
9645
9763
|
),
|
|
9646
9764
|
!success && !isBackupChecking && !isDisconnecting && hasServerBackup && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
|
|
9647
9765
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center justify-center gap-[var(--l-pass-gap)] px-[var(--l-pass-pd)] py-[var(--l-pass-gap)]", children: [
|
|
9648
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9766
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.CloudDownload, { className: "w-6 h-6" }),
|
|
9649
9767
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "font-bold text-xl leading-6", children: "Restore Account" })
|
|
9650
9768
|
] }),
|
|
9651
9769
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(MethodSelector, { mode: "restore", serverRecoveryStatus }),
|
|
@@ -9679,18 +9797,18 @@ var KeyshareRestoreMenu = () => {
|
|
|
9679
9797
|
disabled: isDisconnecting || isRestoringFromFile || isRestoringFromServer,
|
|
9680
9798
|
className: "w-fit mx-auto",
|
|
9681
9799
|
children: [
|
|
9682
|
-
isDisconnecting ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9800
|
+
isDisconnecting ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.UserCircle, { className: "w-4 h-4" }),
|
|
9683
9801
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: "Try Another Account" })
|
|
9684
9802
|
]
|
|
9685
9803
|
}
|
|
9686
9804
|
)
|
|
9687
9805
|
] }),
|
|
9688
9806
|
error && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9689
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9807
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9690
9808
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "w-full flex-1 block", children: error })
|
|
9691
9809
|
] }),
|
|
9692
9810
|
success && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9693
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
9811
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react26.CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9694
9812
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "w-full flex-1 block", children: success })
|
|
9695
9813
|
] })
|
|
9696
9814
|
] })
|
|
@@ -9700,8 +9818,8 @@ var KeyshareRestoreMenu = () => {
|
|
|
9700
9818
|
|
|
9701
9819
|
// src/internal/components/KeyshareRestoreMenu/KeyshareBackupMenu.tsx
|
|
9702
9820
|
var import_react_query18 = require("@tanstack/react-query");
|
|
9703
|
-
var
|
|
9704
|
-
var
|
|
9821
|
+
var import_lucide_react27 = require("lucide-react");
|
|
9822
|
+
var import_react37 = require("react");
|
|
9705
9823
|
init_vaultClient();
|
|
9706
9824
|
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
9707
9825
|
var COMPONENTS = {
|
|
@@ -9711,10 +9829,10 @@ var COMPONENTS = {
|
|
|
9711
9829
|
};
|
|
9712
9830
|
function KeyshareBackupMenu() {
|
|
9713
9831
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9832
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
9714
9833
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9715
9834
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9716
9835
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9717
|
-
(0, import_react35.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
9718
9836
|
const {
|
|
9719
9837
|
method: currentBackupMethod,
|
|
9720
9838
|
error,
|
|
@@ -9725,8 +9843,15 @@ function KeyshareBackupMenu() {
|
|
|
9725
9843
|
setRestorePassword,
|
|
9726
9844
|
setRestoreFile,
|
|
9727
9845
|
setShowPassword,
|
|
9728
|
-
setUsePasskey
|
|
9846
|
+
setUsePasskey,
|
|
9847
|
+
setMethod
|
|
9729
9848
|
} = useRestoreStore();
|
|
9849
|
+
(0, import_react37.useEffect)(() => {
|
|
9850
|
+
setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT);
|
|
9851
|
+
return () => {
|
|
9852
|
+
setMethod(null);
|
|
9853
|
+
};
|
|
9854
|
+
}, []);
|
|
9730
9855
|
const { data: serverRecoveryStatus } = (0, import_react_query18.useQuery)({
|
|
9731
9856
|
retry: false,
|
|
9732
9857
|
queryKey: [CHECK_BACKUP_QUERY_KEY, address],
|
|
@@ -9748,7 +9873,11 @@ function KeyshareBackupMenu() {
|
|
|
9748
9873
|
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
9749
9874
|
className: "list-scrollbar-y w-full",
|
|
9750
9875
|
children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
9751
|
-
!
|
|
9876
|
+
!hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
9877
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react27.LockIcon, { className: "w-6 h-6" }),
|
|
9878
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "font-bold text-xl leading-6", children: "Secure Account" })
|
|
9879
|
+
] }),
|
|
9880
|
+
!!hasServerVault && !currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9752
9881
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9753
9882
|
Button,
|
|
9754
9883
|
{
|
|
@@ -9763,14 +9892,15 @@ function KeyshareBackupMenu() {
|
|
|
9763
9892
|
setUsePasskey(false);
|
|
9764
9893
|
setError(null);
|
|
9765
9894
|
setSuccess(null);
|
|
9895
|
+
setMethod(null);
|
|
9766
9896
|
setPage("settings" /* SETTINGS */);
|
|
9767
9897
|
},
|
|
9768
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9898
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react27.ArrowLeft, { className: "h-4 w-4" })
|
|
9769
9899
|
}
|
|
9770
9900
|
),
|
|
9771
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-xl font-semibold", children: "Create Backup" })
|
|
9901
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-xl font-semibold leading-8", children: "Create Backup" })
|
|
9772
9902
|
] }),
|
|
9773
|
-
!currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(MethodSelector, { mode: "backup", serverRecoveryStatus }),
|
|
9903
|
+
!!hasServerVault && !currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(MethodSelector, { mode: "backup", serverRecoveryStatus }),
|
|
9774
9904
|
!!currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_jsx_runtime47.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9775
9905
|
BackupComponent,
|
|
9776
9906
|
{
|
|
@@ -9782,21 +9912,21 @@ function KeyshareBackupMenu() {
|
|
|
9782
9912
|
}
|
|
9783
9913
|
) }),
|
|
9784
9914
|
!isRecoveryLoading && !currentBackupMethod && !hasRecoveryData && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9785
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9915
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react27.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9786
9916
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { className: "block flex-1", children: [
|
|
9787
9917
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "font-semibold", children: "No Backup Found" }),
|
|
9788
9918
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("br", {}),
|
|
9789
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: "Create a backup to restore access if you switch devices or clear your browser." }),
|
|
9919
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-[10px]", children: "Create a backup to restore access if you switch devices or clear your browser." }),
|
|
9790
9920
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("br", {}),
|
|
9791
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: "You can ignore this if you already have a backup or don't want to use Keyshare Vault." })
|
|
9921
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-[10px]", children: "You can ignore this if you already have a backup or don't want to use Keyshare Vault." })
|
|
9792
9922
|
] })
|
|
9793
9923
|
] }),
|
|
9794
9924
|
error && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9795
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9925
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react27.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9796
9926
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "block w-full flex-1", children: error })
|
|
9797
9927
|
] }),
|
|
9798
9928
|
success && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9799
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9929
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react27.CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9800
9930
|
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "block w-full flex-1", children: success })
|
|
9801
9931
|
] })
|
|
9802
9932
|
] })
|
|
@@ -9805,8 +9935,8 @@ function KeyshareBackupMenu() {
|
|
|
9805
9935
|
}
|
|
9806
9936
|
|
|
9807
9937
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9808
|
-
var
|
|
9809
|
-
var
|
|
9938
|
+
var import_lucide_react28 = require("lucide-react");
|
|
9939
|
+
var import_react38 = require("react");
|
|
9810
9940
|
|
|
9811
9941
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9812
9942
|
var import_react_query19 = require("@tanstack/react-query");
|
|
@@ -9827,16 +9957,16 @@ function useProvidersList() {
|
|
|
9827
9957
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9828
9958
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
9829
9959
|
var MAIN_MENU_BUTTONS = [
|
|
9830
|
-
{ id: "send" /* SEND */, label: "Send", icon:
|
|
9831
|
-
{ id: "receive" /* RECEIVE */, label: "Receive", icon:
|
|
9832
|
-
{ id: "buy" /* BUY */, label: "Buy", icon:
|
|
9833
|
-
{ id: "assets" /* ASSETS */, label: "Portfolio", icon:
|
|
9960
|
+
{ id: "send" /* SEND */, label: "Send", icon: import_lucide_react28.ChevronRight },
|
|
9961
|
+
{ id: "receive" /* RECEIVE */, label: "Receive", icon: import_lucide_react28.ChevronLeft },
|
|
9962
|
+
{ id: "buy" /* BUY */, label: "Buy", icon: import_lucide_react28.DollarSign },
|
|
9963
|
+
{ id: "assets" /* ASSETS */, label: "Portfolio", icon: import_lucide_react28.Wallet2 }
|
|
9834
9964
|
];
|
|
9835
9965
|
function MainMenu() {
|
|
9836
9966
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9837
9967
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9838
9968
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9839
|
-
(0,
|
|
9969
|
+
(0, import_react38.useEffect)(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
9840
9970
|
useProvidersList();
|
|
9841
9971
|
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("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__ */ (0, import_jsx_runtime48.jsxs)(
|
|
9842
9972
|
Button,
|
|
@@ -9857,12 +9987,12 @@ function MainMenu() {
|
|
|
9857
9987
|
|
|
9858
9988
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
9859
9989
|
var import_lodash_es3 = require("lodash-es");
|
|
9860
|
-
var
|
|
9861
|
-
var
|
|
9990
|
+
var import_lucide_react32 = require("lucide-react");
|
|
9991
|
+
var import_react42 = require("react");
|
|
9862
9992
|
|
|
9863
9993
|
// src/modules/linkedProfiles.ts
|
|
9864
9994
|
var import_react_query20 = require("@tanstack/react-query");
|
|
9865
|
-
var
|
|
9995
|
+
var import_react39 = require("react");
|
|
9866
9996
|
init_auth();
|
|
9867
9997
|
init_common();
|
|
9868
9998
|
init_types();
|
|
@@ -9895,7 +10025,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
9895
10025
|
queryFn: getLinkProfilesData
|
|
9896
10026
|
});
|
|
9897
10027
|
const { profiles = [], avatar = null } = data || {};
|
|
9898
|
-
const refresh = (0,
|
|
10028
|
+
const refresh = (0, import_react39.useCallback)(async () => {
|
|
9899
10029
|
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9900
10030
|
}, [qc, address]);
|
|
9901
10031
|
return { profiles, avatar, isLoading, error, refresh };
|
|
@@ -9908,7 +10038,7 @@ init_passkey2();
|
|
|
9908
10038
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9909
10039
|
init_lumiaPassport();
|
|
9910
10040
|
var import_react_query21 = require("@tanstack/react-query");
|
|
9911
|
-
var
|
|
10041
|
+
var import_lucide_react29 = require("lucide-react");
|
|
9912
10042
|
init_projectId();
|
|
9913
10043
|
|
|
9914
10044
|
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
@@ -10005,7 +10135,7 @@ function EmailForm() {
|
|
|
10005
10135
|
Input,
|
|
10006
10136
|
{
|
|
10007
10137
|
name: "signin-email",
|
|
10008
|
-
Icon:
|
|
10138
|
+
Icon: import_lucide_react29.Mail,
|
|
10009
10139
|
type: "email",
|
|
10010
10140
|
autoComplete: "off",
|
|
10011
10141
|
placeholder: config.email.placeholder,
|
|
@@ -10022,7 +10152,7 @@ function EmailForm() {
|
|
|
10022
10152
|
size: "large",
|
|
10023
10153
|
disabled: !email || isLoading,
|
|
10024
10154
|
onClick: () => onSendVerificationCode(),
|
|
10025
|
-
children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10155
|
+
children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react29.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react29.ChevronRight, { className: "w-4 h-4" })
|
|
10026
10156
|
}
|
|
10027
10157
|
)
|
|
10028
10158
|
] });
|
|
@@ -10245,7 +10375,7 @@ function AddProvider() {
|
|
|
10245
10375
|
|
|
10246
10376
|
// src/internal/components/ManageWalletMenu/EmailNotConnectedWarning.tsx
|
|
10247
10377
|
var import_framer_motion2 = require("framer-motion");
|
|
10248
|
-
var
|
|
10378
|
+
var import_lucide_react30 = require("lucide-react");
|
|
10249
10379
|
init_auth();
|
|
10250
10380
|
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
10251
10381
|
function EmailNotConnectedWarning() {
|
|
@@ -10264,7 +10394,7 @@ function EmailNotConnectedWarning() {
|
|
|
10264
10394
|
transition: Y_ANIMATION_SETUP,
|
|
10265
10395
|
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Highlight, { type: "warning", className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
10266
10396
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { className: "flex items-center gap-[var(--l-pass-gap)] text-lg font-bold", children: [
|
|
10267
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
10397
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react30.Mail, { className: "w-5 h-5" }),
|
|
10268
10398
|
"CONNECT EMAIL"
|
|
10269
10399
|
] }),
|
|
10270
10400
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-medium", children: "Connect your email for easier account recovery and additional security." })
|
|
@@ -10275,7 +10405,7 @@ function EmailNotConnectedWarning() {
|
|
|
10275
10405
|
|
|
10276
10406
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
10277
10407
|
var import_react_query25 = require("@tanstack/react-query");
|
|
10278
|
-
var
|
|
10408
|
+
var import_react40 = __toESM(require("react"), 1);
|
|
10279
10409
|
init_auth();
|
|
10280
10410
|
function useLinkSocial() {
|
|
10281
10411
|
const qc = (0, import_react_query25.useQueryClient)();
|
|
@@ -10287,7 +10417,7 @@ function useLinkSocial() {
|
|
|
10287
10417
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10288
10418
|
const isWalletLinking = useLayoutDataStore((st) => st.isWalletLinking);
|
|
10289
10419
|
const { providerType, linkIsLoading, setProviderType, setAlert, setLinkIsLoading } = useManageWalletStore();
|
|
10290
|
-
const handleLinkSocialProvider =
|
|
10420
|
+
const handleLinkSocialProvider = import_react40.default.useCallback(
|
|
10291
10421
|
async (providerIdRaw) => {
|
|
10292
10422
|
const providerKey = providerIdRaw.toLowerCase();
|
|
10293
10423
|
const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
|
|
@@ -10339,8 +10469,8 @@ function useLinkSocial() {
|
|
|
10339
10469
|
},
|
|
10340
10470
|
[config.social?.providers, callbacks]
|
|
10341
10471
|
);
|
|
10342
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
10343
|
-
(0,
|
|
10472
|
+
const [socialLinkStarted, setSocialLinkStarted] = import_react40.default.useState(false);
|
|
10473
|
+
(0, import_react40.useEffect)(() => {
|
|
10344
10474
|
const key = providerType?.toLowerCase();
|
|
10345
10475
|
console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
|
|
10346
10476
|
if (isWalletLinking) {
|
|
@@ -10361,7 +10491,7 @@ function useLinkSocial() {
|
|
|
10361
10491
|
|
|
10362
10492
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
10363
10493
|
var import_react_query26 = require("@tanstack/react-query");
|
|
10364
|
-
var
|
|
10494
|
+
var import_react41 = require("react");
|
|
10365
10495
|
init_telegram2();
|
|
10366
10496
|
function useLinkTelegram() {
|
|
10367
10497
|
const {
|
|
@@ -10373,7 +10503,7 @@ function useLinkTelegram() {
|
|
|
10373
10503
|
const isWalletLinking = useLayoutDataStore((st) => st.isWalletLinking);
|
|
10374
10504
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setAlert } = useManageWalletStore();
|
|
10375
10505
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10376
|
-
const handleLinkTelegram = (0,
|
|
10506
|
+
const handleLinkTelegram = (0, import_react41.useCallback)(async () => {
|
|
10377
10507
|
try {
|
|
10378
10508
|
setLinkIsLoading(true);
|
|
10379
10509
|
setAlert(null);
|
|
@@ -10415,8 +10545,8 @@ function useLinkTelegram() {
|
|
|
10415
10545
|
setLinkIsLoading(false);
|
|
10416
10546
|
}
|
|
10417
10547
|
}, [config.social?.providers, callbacks]);
|
|
10418
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = (0,
|
|
10419
|
-
(0,
|
|
10548
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react41.useState)(false);
|
|
10549
|
+
(0, import_react41.useEffect)(() => {
|
|
10420
10550
|
console.log("[useLinkTelegram] Effect triggered:", {
|
|
10421
10551
|
providerType,
|
|
10422
10552
|
linkIsLoading,
|
|
@@ -10433,7 +10563,7 @@ function useLinkTelegram() {
|
|
|
10433
10563
|
handleLinkTelegram();
|
|
10434
10564
|
}
|
|
10435
10565
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
|
|
10436
|
-
(0,
|
|
10566
|
+
(0, import_react41.useEffect)(() => {
|
|
10437
10567
|
if (providerType !== "telegram") {
|
|
10438
10568
|
setTelegramLinkStarted(false);
|
|
10439
10569
|
}
|
|
@@ -10441,7 +10571,7 @@ function useLinkTelegram() {
|
|
|
10441
10571
|
}
|
|
10442
10572
|
|
|
10443
10573
|
// src/internal/components/ManageWalletMenu/ProviderCard.tsx
|
|
10444
|
-
var
|
|
10574
|
+
var import_lucide_react31 = require("lucide-react");
|
|
10445
10575
|
init_types();
|
|
10446
10576
|
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
10447
10577
|
function ProviderCard(props) {
|
|
@@ -10467,14 +10597,14 @@ function ProviderCard(props) {
|
|
|
10467
10597
|
props.externalId && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10468
10598
|
"span",
|
|
10469
10599
|
{
|
|
10470
|
-
style: { maxWidth:
|
|
10471
|
-
className: "block w-full font-bold text-
|
|
10600
|
+
style: { maxWidth: 184 },
|
|
10601
|
+
className: "block w-full font-bold text-xs whitespace-nowrap text-ellipsis overflow-hidden",
|
|
10472
10602
|
children: props.externalId
|
|
10473
10603
|
}
|
|
10474
10604
|
)
|
|
10475
10605
|
] }),
|
|
10476
10606
|
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] flex-none", children: [
|
|
10477
|
-
props.verified ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10607
|
+
props.verified ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react31.CheckCircle, { className: `w-4 h-4 text-[var(--l-pass-bg-success)]` }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react31.Clock, { className: "w-4 h-4 text-[var(--l-pass-bg-warning)]" }),
|
|
10478
10608
|
allowUnlink && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10479
10609
|
Button,
|
|
10480
10610
|
{
|
|
@@ -10486,7 +10616,7 @@ function ProviderCard(props) {
|
|
|
10486
10616
|
setConfirmUnlink({ provider: props.provider, providerName: info.name, externalId: props.externalId });
|
|
10487
10617
|
setPage("unlink-provider" /* UNLINK_PROVIDER */);
|
|
10488
10618
|
},
|
|
10489
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10619
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react31.Trash2, { className: "w-4 h-4 text-[var(--l-pass-bg-error)]" })
|
|
10490
10620
|
}
|
|
10491
10621
|
)
|
|
10492
10622
|
] })
|
|
@@ -10542,7 +10672,7 @@ function ManageWalletMenu() {
|
|
|
10542
10672
|
} = useManageWalletStore();
|
|
10543
10673
|
const configuredProviders = getConfiguredProviders(config);
|
|
10544
10674
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
10545
|
-
const renderProviders = (0,
|
|
10675
|
+
const renderProviders = (0, import_react42.useMemo)(() => {
|
|
10546
10676
|
const normalizeProviderName = (name) => {
|
|
10547
10677
|
if (name === "x") return "twitter";
|
|
10548
10678
|
return name;
|
|
@@ -10635,17 +10765,17 @@ function ManageWalletMenu() {
|
|
|
10635
10765
|
if (!providerType) setPage("settings" /* SETTINGS */);
|
|
10636
10766
|
setProviderType(null);
|
|
10637
10767
|
},
|
|
10638
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10768
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react32.ArrowLeft, { className: "h-4 w-4" })
|
|
10639
10769
|
}
|
|
10640
10770
|
),
|
|
10641
10771
|
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-xl font-semibold", children: "Profiles" })
|
|
10642
10772
|
] }),
|
|
10643
|
-
isProvidersLoading && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10773
|
+
isProvidersLoading && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react32.Loader, { className: "w-5 h-5 animate-spin" }) }),
|
|
10644
10774
|
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(EmailNotConnectedWarning, {}),
|
|
10645
10775
|
showCurrentProviders && renderProviders.map((node) => node),
|
|
10646
10776
|
showExtraProvidersUi && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(AddProvider, {}),
|
|
10647
10777
|
combinedAlertMessage && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10648
|
-
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
10778
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react32.AlertTriangle, { className: "w-4 h-4 shrink-0" }),
|
|
10649
10779
|
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "break-words whitespace-pre-wrap", children: [
|
|
10650
10780
|
alert2?.title && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
10651
10781
|
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("strong", { children: alert2.title }),
|
|
@@ -10661,8 +10791,8 @@ function ManageWalletMenu() {
|
|
|
10661
10791
|
|
|
10662
10792
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
10663
10793
|
var import_react_query27 = require("@tanstack/react-query");
|
|
10664
|
-
var
|
|
10665
|
-
var
|
|
10794
|
+
var import_lucide_react33 = require("lucide-react");
|
|
10795
|
+
var import_react43 = require("react");
|
|
10666
10796
|
init_auth();
|
|
10667
10797
|
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
10668
10798
|
function UnlinkProviderMenu() {
|
|
@@ -10671,7 +10801,7 @@ function UnlinkProviderMenu() {
|
|
|
10671
10801
|
const { callbacks } = useLumiaPassportConfig();
|
|
10672
10802
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10673
10803
|
const { confirmUnlink, setConfirmUnlink, setAlert } = useManageWalletStore();
|
|
10674
|
-
const [confirmInput, setConfirmInput] = (0,
|
|
10804
|
+
const [confirmInput, setConfirmInput] = (0, import_react43.useState)("");
|
|
10675
10805
|
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query27.useMutation)({
|
|
10676
10806
|
mutationFn: async () => {
|
|
10677
10807
|
if (!confirmUnlink) {
|
|
@@ -10704,7 +10834,7 @@ function UnlinkProviderMenu() {
|
|
|
10704
10834
|
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10705
10835
|
Input,
|
|
10706
10836
|
{
|
|
10707
|
-
Icon:
|
|
10837
|
+
Icon: import_lucide_react33.Key,
|
|
10708
10838
|
value: confirmInput,
|
|
10709
10839
|
onChange: (e) => setConfirmInput(e.target.value),
|
|
10710
10840
|
placeholder: "Enter provider ID"
|
|
@@ -10735,7 +10865,7 @@ function UnlinkProviderMenu() {
|
|
|
10735
10865
|
disabled: !!isProviderUnlinking || !confirmUnlink || confirmInput !== confirmUnlink.externalId,
|
|
10736
10866
|
className: "w-full flex-1",
|
|
10737
10867
|
children: [
|
|
10738
|
-
isProviderUnlinking && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10868
|
+
isProviderUnlinking && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react33.Loader, { className: "animate-spin h-4 w-4" }),
|
|
10739
10869
|
isProviderUnlinking ? "Removing\u2026" : "Remove"
|
|
10740
10870
|
]
|
|
10741
10871
|
}
|
|
@@ -10746,11 +10876,11 @@ function UnlinkProviderMenu() {
|
|
|
10746
10876
|
|
|
10747
10877
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10748
10878
|
var import_react_query30 = require("@tanstack/react-query");
|
|
10749
|
-
var
|
|
10750
|
-
var
|
|
10879
|
+
var import_lucide_react35 = require("lucide-react");
|
|
10880
|
+
var import_react46 = require("react");
|
|
10751
10881
|
|
|
10752
10882
|
// src/internal/hooks/useBlockscoutAssets.ts
|
|
10753
|
-
var
|
|
10883
|
+
var import_react44 = require("react");
|
|
10754
10884
|
var import_react_query28 = require("@tanstack/react-query");
|
|
10755
10885
|
var import_wagmi2 = require("wagmi");
|
|
10756
10886
|
var import_viem5 = require("viem");
|
|
@@ -10893,12 +11023,12 @@ function createError(error) {
|
|
|
10893
11023
|
function useBlockscoutAssets(options) {
|
|
10894
11024
|
const { address, enabled = true, detectSecurityTokens = true } = options;
|
|
10895
11025
|
const blockscoutApiUrl = getBlockscoutApiUrl();
|
|
10896
|
-
const blockscoutClient = (0,
|
|
11026
|
+
const blockscoutClient = (0, import_react44.useMemo)(
|
|
10897
11027
|
() => (0, import_clients2.createBlockscoutClient)({ baseUrl: blockscoutApiUrl }),
|
|
10898
11028
|
[blockscoutApiUrl]
|
|
10899
11029
|
);
|
|
10900
11030
|
const publicClient2 = (0, import_wagmi2.usePublicClient)({ chainId: lumiaBeam.id });
|
|
10901
|
-
const lastRefreshRef = (0,
|
|
11031
|
+
const lastRefreshRef = (0, import_react44.useRef)(0);
|
|
10902
11032
|
const {
|
|
10903
11033
|
data: nativeBalanceData,
|
|
10904
11034
|
isLoading: nativeLoading,
|
|
@@ -10938,7 +11068,7 @@ function useBlockscoutAssets(options) {
|
|
|
10938
11068
|
retry: 2,
|
|
10939
11069
|
retryDelay: 1e3
|
|
10940
11070
|
});
|
|
10941
|
-
const erc20TokenAddresses = (0,
|
|
11071
|
+
const erc20TokenAddresses = (0, import_react44.useMemo)(() => {
|
|
10942
11072
|
if (!tokenBalances) return [];
|
|
10943
11073
|
return tokenBalances.filter((tb) => tb.token.type === "ERC-20").map((tb) => tb.token.address);
|
|
10944
11074
|
}, [tokenBalances]);
|
|
@@ -10982,7 +11112,7 @@ function useBlockscoutAssets(options) {
|
|
|
10982
11112
|
gcTime: BLOCKSCOUT_QUERY_GC_TIME,
|
|
10983
11113
|
retry: 1
|
|
10984
11114
|
});
|
|
10985
|
-
const assets = (0,
|
|
11115
|
+
const assets = (0, import_react44.useMemo)(() => {
|
|
10986
11116
|
const result = [];
|
|
10987
11117
|
if (nativeBalanceData) {
|
|
10988
11118
|
result.push({
|
|
@@ -11018,7 +11148,7 @@ function useBlockscoutAssets(options) {
|
|
|
11018
11148
|
}
|
|
11019
11149
|
return result;
|
|
11020
11150
|
}, [nativeBalanceData, tokenBalances, nftItems, erc3643Results]);
|
|
11021
|
-
const nativeBalance = (0,
|
|
11151
|
+
const nativeBalance = (0, import_react44.useMemo)(() => {
|
|
11022
11152
|
if (!nativeBalanceData) return null;
|
|
11023
11153
|
return {
|
|
11024
11154
|
value: nativeBalanceData.value,
|
|
@@ -11026,11 +11156,11 @@ function useBlockscoutAssets(options) {
|
|
|
11026
11156
|
symbol: "LUMIA"
|
|
11027
11157
|
};
|
|
11028
11158
|
}, [nativeBalanceData]);
|
|
11029
|
-
const error = (0,
|
|
11159
|
+
const error = (0, import_react44.useMemo)(() => {
|
|
11030
11160
|
if (!tokensError) return null;
|
|
11031
11161
|
return createError(tokensError);
|
|
11032
11162
|
}, [tokensError]);
|
|
11033
|
-
const refreshBalances = (0,
|
|
11163
|
+
const refreshBalances = (0, import_react44.useCallback)(async () => {
|
|
11034
11164
|
const now = Date.now();
|
|
11035
11165
|
if (now - lastRefreshRef.current < BLOCKSCOUT_REFRESH_DEBOUNCE) {
|
|
11036
11166
|
return;
|
|
@@ -11038,7 +11168,7 @@ function useBlockscoutAssets(options) {
|
|
|
11038
11168
|
lastRefreshRef.current = now;
|
|
11039
11169
|
await Promise.all([refetchNative(), refetchTokens(), refetchNfts()]);
|
|
11040
11170
|
}, [refetchNative, refetchTokens, refetchNfts]);
|
|
11041
|
-
const getTokenBalance = (0,
|
|
11171
|
+
const getTokenBalance = (0, import_react44.useCallback)(
|
|
11042
11172
|
(tokenAddress) => {
|
|
11043
11173
|
return assets.find((a) => a.address?.toLowerCase() === tokenAddress.toLowerCase()) || null;
|
|
11044
11174
|
},
|
|
@@ -11059,8 +11189,8 @@ function useBlockscoutAssets(options) {
|
|
|
11059
11189
|
|
|
11060
11190
|
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
11061
11191
|
var import_react_query29 = require("@tanstack/react-query");
|
|
11062
|
-
var
|
|
11063
|
-
var
|
|
11192
|
+
var import_lucide_react34 = require("lucide-react");
|
|
11193
|
+
var import_react45 = require("react");
|
|
11064
11194
|
var import_viem6 = require("viem");
|
|
11065
11195
|
init_base();
|
|
11066
11196
|
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
@@ -11098,8 +11228,8 @@ async function getAssetRate2(symbol) {
|
|
|
11098
11228
|
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
11099
11229
|
function PortfolioItem(props) {
|
|
11100
11230
|
const { address, asset, isProjectAsset } = props;
|
|
11101
|
-
const [nftImageError, setNftImageError] = (0,
|
|
11102
|
-
const [logoError, setLogoError] = (0,
|
|
11231
|
+
const [nftImageError, setNftImageError] = (0, import_react45.useState)(false);
|
|
11232
|
+
const [logoError, setLogoError] = (0, import_react45.useState)(false);
|
|
11103
11233
|
const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
|
|
11104
11234
|
const qc = (0, import_react_query29.useQueryClient)();
|
|
11105
11235
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
@@ -11149,7 +11279,7 @@ function PortfolioItem(props) {
|
|
|
11149
11279
|
}
|
|
11150
11280
|
) : isNft && (!nftImage || nftImageError) ? (
|
|
11151
11281
|
// NFT placeholder when no image available
|
|
11152
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "w-full h-full bg-[var(--l-pass-fg)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11282
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "w-full h-full bg-[var(--l-pass-fg)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react34.Image, { className: "w-5 h-5 text-[var(--l-pass-fg-inverted)]" }) })
|
|
11153
11283
|
) : asset.logo && !logoError ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11154
11284
|
"img",
|
|
11155
11285
|
{
|
|
@@ -11159,13 +11289,13 @@ function PortfolioItem(props) {
|
|
|
11159
11289
|
onError: () => setLogoError(true)
|
|
11160
11290
|
}
|
|
11161
11291
|
) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-[var(--l-pass-fg-inverted)] font-bold text-sm", children: asset.symbol.charAt(0) }),
|
|
11162
|
-
isNft && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-[var(--l-pass-accent)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11292
|
+
isNft && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-[var(--l-pass-accent)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react34.Sparkles, { className: "w-2.5 h-2.5 text-[var(--l-pass-fg-inverted)]" }) }),
|
|
11163
11293
|
isSecurity && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11164
11294
|
"div",
|
|
11165
11295
|
{
|
|
11166
11296
|
className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-amber-500 flex items-center justify-center",
|
|
11167
11297
|
title: "Security Token (ERC-3643)",
|
|
11168
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11298
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react34.Shield, { className: "w-2.5 h-2.5 text-white" })
|
|
11169
11299
|
}
|
|
11170
11300
|
)
|
|
11171
11301
|
]
|
|
@@ -11196,7 +11326,7 @@ function PortfolioItem(props) {
|
|
|
11196
11326
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: formatPrice(Number(renderBalance)) }),
|
|
11197
11327
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: " " + asset.symbol })
|
|
11198
11328
|
] }),
|
|
11199
|
-
isRateLoading && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11329
|
+
isRateLoading && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react34.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
11200
11330
|
!isRateLoading && !!usdRenderBalance && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("span", { children: [
|
|
11201
11331
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: "$" }),
|
|
11202
11332
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: formatPrice(usdRenderBalance) })
|
|
@@ -11225,7 +11355,7 @@ function PortfolioMenu() {
|
|
|
11225
11355
|
} = useBlockscoutAssets({
|
|
11226
11356
|
address
|
|
11227
11357
|
});
|
|
11228
|
-
const refreshAllAssetsBalances = (0,
|
|
11358
|
+
const refreshAllAssetsBalances = (0, import_react46.useCallback)(() => {
|
|
11229
11359
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
11230
11360
|
refreshBlockscoutBalances();
|
|
11231
11361
|
}, [qc, projectAssets, refreshBlockscoutBalances]);
|
|
@@ -11239,7 +11369,7 @@ function PortfolioMenu() {
|
|
|
11239
11369
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11240
11370
|
children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11241
11371
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11242
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11372
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11243
11373
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11244
11374
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11245
11375
|
Button,
|
|
@@ -11249,13 +11379,13 @@ function PortfolioMenu() {
|
|
|
11249
11379
|
size: "icon",
|
|
11250
11380
|
onClick: refreshAllAssetsBalances,
|
|
11251
11381
|
disabled: isBlockscoutLoading,
|
|
11252
|
-
children: isBlockscoutLoading ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11382
|
+
children: isBlockscoutLoading ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.RefreshCw, { className: "h-4 w-4" })
|
|
11253
11383
|
}
|
|
11254
11384
|
)
|
|
11255
11385
|
] }),
|
|
11256
|
-
isBlockscoutLoading && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11386
|
+
isBlockscoutLoading && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
11257
11387
|
!isBlockscoutLoading && blockscoutAssets?.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Highlight, { type: "info", className: "flex flex-col items-center justify-center gap-[var(--l-pass-gap)]", children: [
|
|
11258
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11388
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.Gem, { className: "w-8 h-8" }),
|
|
11259
11389
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "block", children: "No assets found" })
|
|
11260
11390
|
] }),
|
|
11261
11391
|
!isBlockscoutLoading && projectAssets?.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(PortfolioItem, { isProjectAsset: true, address, asset }, `project-${asset.symbol}-${index}`)),
|
|
@@ -11268,7 +11398,7 @@ function PortfolioMenu() {
|
|
|
11268
11398
|
`${asset.type}-${asset.address || "native"}-${asset.tokenId || index}`
|
|
11269
11399
|
)),
|
|
11270
11400
|
blockscoutError && !isBlockscoutAvailable && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11271
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11401
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
11272
11402
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-xs", children: blockscoutError.message })
|
|
11273
11403
|
] })
|
|
11274
11404
|
] })
|
|
@@ -11278,8 +11408,9 @@ function PortfolioMenu() {
|
|
|
11278
11408
|
|
|
11279
11409
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
11280
11410
|
var import_react_query31 = require("@tanstack/react-query");
|
|
11281
|
-
var
|
|
11282
|
-
var
|
|
11411
|
+
var import_dayjs3 = __toESM(require("dayjs"), 1);
|
|
11412
|
+
var import_lucide_react39 = require("lucide-react");
|
|
11413
|
+
var import_react47 = require("react");
|
|
11283
11414
|
init_auth();
|
|
11284
11415
|
init_keyshare();
|
|
11285
11416
|
init_iframe_manager();
|
|
@@ -11289,7 +11420,7 @@ init_vaultClient();
|
|
|
11289
11420
|
var KEYSHARE_RECOVERY_STATS_QUERY = "keyshare-recovery-stats-query";
|
|
11290
11421
|
|
|
11291
11422
|
// src/internal/components/SecurityMenu/Keyshare/Keyshare.tsx
|
|
11292
|
-
var
|
|
11423
|
+
var import_lucide_react38 = require("lucide-react");
|
|
11293
11424
|
|
|
11294
11425
|
// src/internal/assets/NegativeIcon.tsx
|
|
11295
11426
|
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
@@ -11306,11 +11437,11 @@ function NegativeIcon(props) {
|
|
|
11306
11437
|
init_vaultClient();
|
|
11307
11438
|
|
|
11308
11439
|
// src/internal/components/SecurityMenu/Keyshare/KeyshareStatus.tsx
|
|
11309
|
-
var
|
|
11440
|
+
var import_lucide_react36 = require("lucide-react");
|
|
11310
11441
|
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
11311
11442
|
function KeyshareStatus(props) {
|
|
11312
11443
|
const { isLoading, content, icon: Icon2, children } = props;
|
|
11313
|
-
if (isLoading) return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11444
|
+
if (isLoading) return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react36.Loader, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" });
|
|
11314
11445
|
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "group relative w-full h-full", children: [
|
|
11315
11446
|
children,
|
|
11316
11447
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
@@ -11342,7 +11473,8 @@ function KeyshareStatus(props) {
|
|
|
11342
11473
|
}
|
|
11343
11474
|
|
|
11344
11475
|
// src/internal/components/SecurityMenu/Keyshare/LastBackup.tsx
|
|
11345
|
-
var
|
|
11476
|
+
var import_dayjs2 = __toESM(require("dayjs"), 1);
|
|
11477
|
+
var import_lucide_react37 = require("lucide-react");
|
|
11346
11478
|
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
11347
11479
|
function parseOS(ua) {
|
|
11348
11480
|
if (!ua) return null;
|
|
@@ -11366,26 +11498,26 @@ function LastBackup(props) {
|
|
|
11366
11498
|
const hasBackupData = backup?.server?.enabled && backup.server.lastBackup || !backup.server.lastBackup && recoveryCreatedAt || backup.cloud.enabled && backup.cloud?.lastBackup || backup.local.enabled && backup.local.lastBackup;
|
|
11367
11499
|
if (!hasBackupData) return null;
|
|
11368
11500
|
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Highlight, { type: "info", className: "flex flex-col gap-[var(--l-pass-gap)] text-[10px] leading-tight", children: [
|
|
11369
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { className: "
|
|
11370
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11371
|
-
" Last Keyshare Vault Backup"
|
|
11501
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { className: "flex items-center gap-[var(--l-pass-gap)] font-bold text-xs leading-4", children: [
|
|
11502
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react37.Server, { className: "w-4 h-4 inline" }),
|
|
11503
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children: "Last Keyshare Vault Backup" })
|
|
11372
11504
|
] }),
|
|
11373
11505
|
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [
|
|
11374
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children:
|
|
11506
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children: (0, import_dayjs2.default)(recoveryCreatedAt).format("MMMM DD, YYYY HH:mm") }),
|
|
11375
11507
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children: `${recoveryBrowser || "UNKNOWN"} browser at ${recoveryDeviceName || "UNKNOWN"} device under ${parseOS(recoveryUa) || "UNKNOWN"} OS` })
|
|
11376
11508
|
] }),
|
|
11377
11509
|
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
11378
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11510
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react37.Cloud, { className: "h-3 w-3" }),
|
|
11379
11511
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { children: [
|
|
11380
11512
|
"Cloud: ",
|
|
11381
|
-
|
|
11513
|
+
(0, import_dayjs2.default)(backup.cloud.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11382
11514
|
] })
|
|
11383
11515
|
] }),
|
|
11384
11516
|
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
11385
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11517
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react37.HardDrive, { className: "h-3 w-3" }),
|
|
11386
11518
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { children: [
|
|
11387
11519
|
"Local: ",
|
|
11388
|
-
|
|
11520
|
+
(0, import_dayjs2.default)(backup.local.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11389
11521
|
] })
|
|
11390
11522
|
] })
|
|
11391
11523
|
] });
|
|
@@ -11399,7 +11531,7 @@ function Keyshare(props) {
|
|
|
11399
11531
|
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
|
|
11400
11532
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
11401
11533
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Keyshare Status" }),
|
|
11402
|
-
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "ghost", size: "icon", title: "Refresh", disabled: isLoading, onClick: refresh, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11534
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "ghost", size: "icon", title: "Refresh", disabled: isLoading, onClick: refresh, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react38.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react38.RefreshCw, { className: "h-4 w-4" }) })
|
|
11403
11535
|
] }),
|
|
11404
11536
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "grid grid-cols-3 gap-[var(--l-pass-gap)] px-[var(--l-pass-gap)]", children: [
|
|
11405
11537
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
@@ -11413,7 +11545,7 @@ function Keyshare(props) {
|
|
|
11413
11545
|
type: serverHasKeyshare ? "success" : "warning",
|
|
11414
11546
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11415
11547
|
children: [
|
|
11416
|
-
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11548
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react38.Cloud, { className: "h-6 w-6" }),
|
|
11417
11549
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-[10px] font-medium leading-4", children: "Server Share" })
|
|
11418
11550
|
]
|
|
11419
11551
|
}
|
|
@@ -11431,7 +11563,7 @@ function Keyshare(props) {
|
|
|
11431
11563
|
type: localInfo?.hasKeyshare ? "success" : "warning",
|
|
11432
11564
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11433
11565
|
children: [
|
|
11434
|
-
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11566
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react38.Laptop, { className: "h-6 w-6" }),
|
|
11435
11567
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-[10px] font-medium leading-4", children: "Local Share" })
|
|
11436
11568
|
]
|
|
11437
11569
|
}
|
|
@@ -11449,7 +11581,7 @@ function Keyshare(props) {
|
|
|
11449
11581
|
type: hasServerBackup ? "success" : "warning",
|
|
11450
11582
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11451
11583
|
children: [
|
|
11452
|
-
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11584
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react38.Server, { className: "h-6 w-6" }),
|
|
11453
11585
|
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-[10px] font-medium leading-4", children: "Backup Vault" })
|
|
11454
11586
|
]
|
|
11455
11587
|
}
|
|
@@ -11470,8 +11602,8 @@ function SecurityMenu() {
|
|
|
11470
11602
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11471
11603
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
11472
11604
|
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
11473
|
-
const [isRemoving, setIsRemoving] = (0,
|
|
11474
|
-
const [appToRemove, setAppToRemove] = (0,
|
|
11605
|
+
const [isRemoving, setIsRemoving] = (0, import_react47.useState)(false);
|
|
11606
|
+
const [appToRemove, setAppToRemove] = (0, import_react47.useState)(null);
|
|
11475
11607
|
const { data: recoveryData, isFetching: isRecoveryLoading } = (0, import_react_query31.useQuery)({
|
|
11476
11608
|
enabled: !!userId,
|
|
11477
11609
|
queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
|
|
@@ -11531,7 +11663,7 @@ function SecurityMenu() {
|
|
|
11531
11663
|
if (!!appToRemove) setAppToRemove(null);
|
|
11532
11664
|
else setPage("settings" /* SETTINGS */);
|
|
11533
11665
|
},
|
|
11534
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11666
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react39.ArrowLeft, { className: "h-4 w-4" })
|
|
11535
11667
|
}
|
|
11536
11668
|
),
|
|
11537
11669
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-xl font-semibold", children: "Security" })
|
|
@@ -11555,15 +11687,22 @@ function SecurityMenu() {
|
|
|
11555
11687
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
11556
11688
|
"div",
|
|
11557
11689
|
{
|
|
11558
|
-
className: "text-[10px] leading-tight p-2 rounded flex items-center gap-
|
|
11690
|
+
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)]",
|
|
11559
11691
|
children: [
|
|
11560
|
-
app.appLogo ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11692
|
+
app.appLogo ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11693
|
+
"img",
|
|
11694
|
+
{
|
|
11695
|
+
src: app.appLogo,
|
|
11696
|
+
alt: app.appName,
|
|
11697
|
+
className: "w-8 h-8 rounded-[var(--l-pass-el-bdrs)] object-cover flex-shrink-0"
|
|
11698
|
+
}
|
|
11699
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("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__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-sm", children: "\u{1F517}" }) }),
|
|
11561
11700
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
11562
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "font-
|
|
11701
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "font-semibold truncate", children: app.appName || new URL(app.origin).hostname }),
|
|
11563
11702
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: new URL(app.origin).hostname }),
|
|
11564
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
11703
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: [
|
|
11565
11704
|
"Trusted: ",
|
|
11566
|
-
|
|
11705
|
+
(0, import_dayjs3.default)(app.trustedAt).format("MMM D, YYYY HH:mm")
|
|
11567
11706
|
] })
|
|
11568
11707
|
] }),
|
|
11569
11708
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
@@ -11572,7 +11711,7 @@ function SecurityMenu() {
|
|
|
11572
11711
|
variant: "ghost",
|
|
11573
11712
|
size: "icon",
|
|
11574
11713
|
title: "Remove from trusted",
|
|
11575
|
-
className: "text-[var(--l-pass-error)] flex-shrink-0",
|
|
11714
|
+
className: "text-[var(--l-pass-bg-error)] flex-shrink-0",
|
|
11576
11715
|
onClick: () => setAppToRemove({
|
|
11577
11716
|
projectId: app.projectId,
|
|
11578
11717
|
origin: app.origin,
|
|
@@ -11580,7 +11719,7 @@ function SecurityMenu() {
|
|
|
11580
11719
|
appName: app.appName,
|
|
11581
11720
|
appLogo: app.appLogo
|
|
11582
11721
|
}),
|
|
11583
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11722
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react39.Trash2, { className: "h-4 w-4" })
|
|
11584
11723
|
}
|
|
11585
11724
|
)
|
|
11586
11725
|
]
|
|
@@ -11618,7 +11757,7 @@ function SecurityMenu() {
|
|
|
11618
11757
|
className: "flex-1 bg-[var(--l-pass-error)] hover:bg-[var(--l-pass-error)]/60 active:bg-[var(--l-pass-error)]/40",
|
|
11619
11758
|
onClick: handleRemoveTrustedApp,
|
|
11620
11759
|
disabled: isRemoving,
|
|
11621
|
-
children: isRemoving ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
11760
|
+
children: isRemoving ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react39.Loader, { className: "h-4 w-4 animate-spin" }) : "Remove"
|
|
11622
11761
|
}
|
|
11623
11762
|
)
|
|
11624
11763
|
] })
|
|
@@ -11629,22 +11768,22 @@ function SecurityMenu() {
|
|
|
11629
11768
|
}
|
|
11630
11769
|
|
|
11631
11770
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
11632
|
-
var
|
|
11633
|
-
var
|
|
11771
|
+
var import_lucide_react40 = require("lucide-react");
|
|
11772
|
+
var import_react50 = require("react");
|
|
11634
11773
|
var import_viem9 = require("viem");
|
|
11635
11774
|
var import_wagmi4 = require("wagmi");
|
|
11636
11775
|
|
|
11637
11776
|
// src/hooks/useSendTransaction.ts
|
|
11638
|
-
var
|
|
11777
|
+
var import_react48 = require("react");
|
|
11639
11778
|
var import_viem7 = require("viem");
|
|
11640
11779
|
init_account();
|
|
11641
11780
|
function useSendTransaction() {
|
|
11642
11781
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11643
11782
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11644
|
-
const [isLoading, setIsLoading] = (0,
|
|
11645
|
-
const [error, setError] = (0,
|
|
11646
|
-
const [userOpHash, setUserOpHash] = (0,
|
|
11647
|
-
const sendTransaction = (0,
|
|
11783
|
+
const [isLoading, setIsLoading] = (0, import_react48.useState)(false);
|
|
11784
|
+
const [error, setError] = (0, import_react48.useState)(null);
|
|
11785
|
+
const [userOpHash, setUserOpHash] = (0, import_react48.useState)(null);
|
|
11786
|
+
const sendTransaction = (0, import_react48.useCallback)(
|
|
11648
11787
|
async (params) => {
|
|
11649
11788
|
if (!session || !address) {
|
|
11650
11789
|
setError("No active session");
|
|
@@ -11684,7 +11823,7 @@ function useSendTransaction() {
|
|
|
11684
11823
|
},
|
|
11685
11824
|
[session, address]
|
|
11686
11825
|
);
|
|
11687
|
-
const reset = (0,
|
|
11826
|
+
const reset = (0, import_react48.useCallback)(() => {
|
|
11688
11827
|
setError(null);
|
|
11689
11828
|
setUserOpHash(null);
|
|
11690
11829
|
setIsLoading(false);
|
|
@@ -11699,7 +11838,7 @@ function useSendTransaction() {
|
|
|
11699
11838
|
}
|
|
11700
11839
|
|
|
11701
11840
|
// src/modules/assets.ts
|
|
11702
|
-
var
|
|
11841
|
+
var import_react49 = __toESM(require("react"), 1);
|
|
11703
11842
|
var import_wagmi3 = require("wagmi");
|
|
11704
11843
|
var import_viem8 = require("viem");
|
|
11705
11844
|
init_base();
|
|
@@ -11846,7 +11985,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
11846
11985
|
}
|
|
11847
11986
|
});
|
|
11848
11987
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
11849
|
-
const formattedBalance =
|
|
11988
|
+
const formattedBalance = import_react49.default.useMemo(() => {
|
|
11850
11989
|
if (!balance || !tokenInfo) return "0";
|
|
11851
11990
|
return (0, import_viem8.formatUnits)(balance, tokenInfo.decimals);
|
|
11852
11991
|
}, [balance, tokenInfo]);
|
|
@@ -11873,13 +12012,13 @@ function SendLumiaMenu() {
|
|
|
11873
12012
|
address,
|
|
11874
12013
|
chainId: lumiaBeam.id
|
|
11875
12014
|
});
|
|
11876
|
-
const [recipient, setRecipient] = (0,
|
|
11877
|
-
const [amount, setAmount] = (0,
|
|
11878
|
-
const [txStep, setTxStep] = (0,
|
|
11879
|
-
const [validationError, setValidationError] = (0,
|
|
12015
|
+
const [recipient, setRecipient] = (0, import_react50.useState)("");
|
|
12016
|
+
const [amount, setAmount] = (0, import_react50.useState)("");
|
|
12017
|
+
const [txStep, setTxStep] = (0, import_react50.useState)("input");
|
|
12018
|
+
const [validationError, setValidationError] = (0, import_react50.useState)(null);
|
|
11880
12019
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
11881
12020
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
11882
|
-
(0,
|
|
12021
|
+
(0, import_react50.useEffect)(() => {
|
|
11883
12022
|
if (open) {
|
|
11884
12023
|
setTxStep("input");
|
|
11885
12024
|
setValidationError(null);
|
|
@@ -11936,7 +12075,7 @@ function SendLumiaMenu() {
|
|
|
11936
12075
|
};
|
|
11937
12076
|
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11938
12077
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11939
|
-
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12078
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react40.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11940
12079
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
11941
12080
|
] }),
|
|
11942
12081
|
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
@@ -11945,7 +12084,7 @@ function SendLumiaMenu() {
|
|
|
11945
12084
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
11946
12085
|
Input,
|
|
11947
12086
|
{
|
|
11948
|
-
Icon:
|
|
12087
|
+
Icon: import_lucide_react40.Wallet,
|
|
11949
12088
|
type: "text",
|
|
11950
12089
|
value: recipient,
|
|
11951
12090
|
onChange: (e) => setRecipient(e.target.value),
|
|
@@ -11988,7 +12127,7 @@ function SendLumiaMenu() {
|
|
|
11988
12127
|
] })
|
|
11989
12128
|
] }),
|
|
11990
12129
|
(validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("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: [
|
|
11991
|
-
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12130
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react40.AlertCircle, { className: "h-4 w-4" }),
|
|
11992
12131
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-sm", children: validationError || error })
|
|
11993
12132
|
] }),
|
|
11994
12133
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
@@ -12017,13 +12156,13 @@ function SendLumiaMenu() {
|
|
|
12017
12156
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex gap-2", children: [
|
|
12018
12157
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
12019
12158
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
12020
|
-
isLoading && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12159
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react40.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
12021
12160
|
"Confirm"
|
|
12022
12161
|
] })
|
|
12023
12162
|
] })
|
|
12024
12163
|
] }),
|
|
12025
12164
|
txStep === "pending" && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "py-8 text-center space-y-4", children: [
|
|
12026
|
-
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12165
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react40.Loader, { className: "h-5 w-5 animate-spin mx-auto" }),
|
|
12027
12166
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { children: [
|
|
12028
12167
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
12029
12168
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
@@ -12031,7 +12170,7 @@ function SendLumiaMenu() {
|
|
|
12031
12170
|
] }),
|
|
12032
12171
|
txStep === "success" && userOpHash && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
12033
12172
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "text-center py-4", children: [
|
|
12034
|
-
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
12173
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react40.CheckCircle2, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
12035
12174
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
12036
12175
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
12037
12176
|
] }),
|
|
@@ -12041,9 +12180,9 @@ function SendLumiaMenu() {
|
|
|
12041
12180
|
}
|
|
12042
12181
|
|
|
12043
12182
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
12044
|
-
var
|
|
12183
|
+
var import_lucide_react41 = require("lucide-react");
|
|
12045
12184
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
12046
|
-
var
|
|
12185
|
+
var import_react51 = require("react");
|
|
12047
12186
|
init_clients();
|
|
12048
12187
|
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
12049
12188
|
function ReceiveLumiaMenu() {
|
|
@@ -12052,9 +12191,9 @@ function ReceiveLumiaMenu() {
|
|
|
12052
12191
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12053
12192
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
12054
12193
|
const open = page === "receive";
|
|
12055
|
-
const [qrCodeUrl, setQrCodeUrl] = (0,
|
|
12056
|
-
const [copied, setCopied] = (0,
|
|
12057
|
-
(0,
|
|
12194
|
+
const [qrCodeUrl, setQrCodeUrl] = (0, import_react51.useState)("");
|
|
12195
|
+
const [copied, setCopied] = (0, import_react51.useState)(false);
|
|
12196
|
+
(0, import_react51.useEffect)(() => {
|
|
12058
12197
|
if (open && address) {
|
|
12059
12198
|
import_qrcode.default.toDataURL(address, {
|
|
12060
12199
|
width: 200,
|
|
@@ -12067,7 +12206,7 @@ function ReceiveLumiaMenu() {
|
|
|
12067
12206
|
});
|
|
12068
12207
|
}
|
|
12069
12208
|
}, [open, address]);
|
|
12070
|
-
const handleCopy = (0,
|
|
12209
|
+
const handleCopy = (0, import_react51.useCallback)(async () => {
|
|
12071
12210
|
if (!address) return;
|
|
12072
12211
|
try {
|
|
12073
12212
|
await navigator.clipboard.writeText(address);
|
|
@@ -12087,21 +12226,21 @@ function ReceiveLumiaMenu() {
|
|
|
12087
12226
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
12088
12227
|
children: [
|
|
12089
12228
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12090
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12229
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react41.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
12091
12230
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
12092
12231
|
] }),
|
|
12093
12232
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Highlight, { className: "text-center", type: "warning", children: [
|
|
12094
12233
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
12095
12234
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
12096
12235
|
] }),
|
|
12097
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12236
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react41.Loader, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
12098
12237
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Highlight, { type: "info", children: [
|
|
12099
12238
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
12100
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { onClick: handleCopy, className: "w-full", size: "
|
|
12101
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12239
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { onClick: handleCopy, className: "w-full", size: "large", children: copied ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
|
|
12240
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react41.CheckCircle2, { className: "h-4 w-4" }),
|
|
12102
12241
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: "Copied!" })
|
|
12103
12242
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
|
|
12104
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12243
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react41.Copy, { className: "h-4 w-4" }),
|
|
12105
12244
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: "Copy Address" })
|
|
12106
12245
|
] }) })
|
|
12107
12246
|
] }),
|
|
@@ -12112,11 +12251,11 @@ function ReceiveLumiaMenu() {
|
|
|
12112
12251
|
}
|
|
12113
12252
|
|
|
12114
12253
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
12115
|
-
var
|
|
12116
|
-
var
|
|
12254
|
+
var import_lucide_react43 = require("lucide-react");
|
|
12255
|
+
var import_react52 = require("react");
|
|
12117
12256
|
|
|
12118
12257
|
// src/internal/components/SettingsMenu/constants.ts
|
|
12119
|
-
var
|
|
12258
|
+
var import_lucide_react42 = require("lucide-react");
|
|
12120
12259
|
|
|
12121
12260
|
// src/internal/assets/KycIcon.tsx
|
|
12122
12261
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
@@ -12133,11 +12272,11 @@ function KycIcon(props) {
|
|
|
12133
12272
|
|
|
12134
12273
|
// src/internal/components/SettingsMenu/constants.ts
|
|
12135
12274
|
var NAV_BUTTONS = [
|
|
12136
|
-
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon:
|
|
12275
|
+
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon: import_lucide_react42.ArrowLeftRight },
|
|
12137
12276
|
{ id: "kyc" /* KYC */, name: "KYC", Icon: KycIcon },
|
|
12138
|
-
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon:
|
|
12139
|
-
{ id: "security" /* SECURITY */, name: "Security", Icon:
|
|
12140
|
-
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon:
|
|
12277
|
+
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon: import_lucide_react42.UsersRound },
|
|
12278
|
+
{ id: "security" /* SECURITY */, name: "Security", Icon: import_lucide_react42.LockKeyhole },
|
|
12279
|
+
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon: import_lucide_react42.DatabaseBackup }
|
|
12141
12280
|
];
|
|
12142
12281
|
|
|
12143
12282
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
@@ -12147,13 +12286,13 @@ function SettingsMenu() {
|
|
|
12147
12286
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12148
12287
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
12149
12288
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
12150
|
-
(0,
|
|
12289
|
+
(0, import_react52.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
12151
12290
|
useProvidersList();
|
|
12152
12291
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
12153
12292
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
12154
12293
|
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12155
12294
|
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12156
|
-
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
12295
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react43.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
12157
12296
|
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xl font-semibold", children: "Settings" })
|
|
12158
12297
|
] }),
|
|
12159
12298
|
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
@@ -12179,7 +12318,7 @@ function SettingsMenu() {
|
|
|
12179
12318
|
}
|
|
12180
12319
|
|
|
12181
12320
|
// src/internal/components/TermsOfService.tsx
|
|
12182
|
-
var
|
|
12321
|
+
var import_lucide_react44 = require("lucide-react");
|
|
12183
12322
|
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
12184
12323
|
function TermsOfService() {
|
|
12185
12324
|
const address = useLumiaPassportSession((st) => st.address);
|
|
@@ -12193,7 +12332,7 @@ function TermsOfService() {
|
|
|
12193
12332
|
size: "icon",
|
|
12194
12333
|
title: "Back",
|
|
12195
12334
|
onClick: () => setPage(!!address ? "settings" /* SETTINGS */ : "auth" /* AUTH */),
|
|
12196
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
12335
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react44.ArrowLeft, { className: "h-4 w-4" })
|
|
12197
12336
|
}
|
|
12198
12337
|
),
|
|
12199
12338
|
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-xl font-semibold", children: "Terms of Service" })
|
|
@@ -12207,8 +12346,8 @@ function TermsOfService() {
|
|
|
12207
12346
|
|
|
12208
12347
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
12209
12348
|
var import_react_query32 = require("@tanstack/react-query");
|
|
12210
|
-
var
|
|
12211
|
-
var
|
|
12349
|
+
var import_lucide_react46 = require("lucide-react");
|
|
12350
|
+
var import_react53 = require("react");
|
|
12212
12351
|
|
|
12213
12352
|
// src/internal/components/TransactionsMenu/api.ts
|
|
12214
12353
|
init_base();
|
|
@@ -12499,7 +12638,7 @@ async function getTransactionsListQuery(address) {
|
|
|
12499
12638
|
}
|
|
12500
12639
|
|
|
12501
12640
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
12502
|
-
var
|
|
12641
|
+
var import_lucide_react45 = require("lucide-react");
|
|
12503
12642
|
|
|
12504
12643
|
// src/internal/components/TransactionsMenu/utils.ts
|
|
12505
12644
|
init_base();
|
|
@@ -12584,7 +12723,7 @@ function TransactionsGroup(props) {
|
|
|
12584
12723
|
children: [
|
|
12585
12724
|
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
12586
12725
|
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center gap-1 flex-0 w-fit", children: [
|
|
12587
|
-
parent.direction === "in" ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
12726
|
+
parent.direction === "in" ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react45.ChevronLeft, { className: "w-4 h-4" }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react45.ChevronRight, { className: "w-4 h-4" }),
|
|
12588
12727
|
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "text-[10px]", children: isIncoming ? "RECEIVED" : "SENT" }),
|
|
12589
12728
|
parent.status === "ok" ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PositiveIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(NegativeIcon, {})
|
|
12590
12729
|
] }),
|
|
@@ -12606,7 +12745,7 @@ function TransactionsGroup(props) {
|
|
|
12606
12745
|
onClick: (e) => {
|
|
12607
12746
|
e.stopPropagation();
|
|
12608
12747
|
},
|
|
12609
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
12748
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react45.Copy, { className: "w-4 h-4" })
|
|
12610
12749
|
}
|
|
12611
12750
|
),
|
|
12612
12751
|
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
@@ -12678,7 +12817,7 @@ function TransactionsMenu() {
|
|
|
12678
12817
|
const page = useLayoutDataStore((st) => st.page);
|
|
12679
12818
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12680
12819
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
12681
|
-
const [expandedGroups, setExpandedGroups] = (0,
|
|
12820
|
+
const [expandedGroups, setExpandedGroups] = (0, import_react53.useState)({});
|
|
12682
12821
|
const {
|
|
12683
12822
|
data: txHistoryGroups = [],
|
|
12684
12823
|
isLoading: isTxHistoryLoading,
|
|
@@ -12690,7 +12829,7 @@ function TransactionsMenu() {
|
|
|
12690
12829
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
12691
12830
|
queryFn: () => getTransactionsListQuery(address)
|
|
12692
12831
|
});
|
|
12693
|
-
const refreshTxHistory = (0,
|
|
12832
|
+
const refreshTxHistory = (0, import_react53.useCallback)(
|
|
12694
12833
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
12695
12834
|
[qc, address]
|
|
12696
12835
|
);
|
|
@@ -12705,7 +12844,7 @@ function TransactionsMenu() {
|
|
|
12705
12844
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
12706
12845
|
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12707
12846
|
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12708
|
-
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
12847
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react46.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
12709
12848
|
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
12710
12849
|
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
12711
12850
|
Button,
|
|
@@ -12715,16 +12854,16 @@ function TransactionsMenu() {
|
|
|
12715
12854
|
onClick: refreshTxHistory,
|
|
12716
12855
|
disabled: isTxHistoryFetching,
|
|
12717
12856
|
title: "Refresh transactions",
|
|
12718
|
-
children: isTxHistoryFetching ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
12857
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react46.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react46.RefreshCw, { className: "h-4 w-4" })
|
|
12719
12858
|
}
|
|
12720
12859
|
)
|
|
12721
12860
|
] }),
|
|
12722
|
-
isTxHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
12861
|
+
isTxHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react46.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
12723
12862
|
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
12724
|
-
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
12863
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react46.XCircle, { className: "w-4 h-4 flex-none" }),
|
|
12725
12864
|
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
12726
12865
|
] }),
|
|
12727
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Highlight, { type: "warning", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { children: "No transactions found.
|
|
12866
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Highlight, { type: "warning", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { children: "No transactions found." }) }),
|
|
12728
12867
|
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
12729
12868
|
TransactionsGroup,
|
|
12730
12869
|
{
|
|
@@ -12848,7 +12987,7 @@ function usePageMapper() {
|
|
|
12848
12987
|
setIsDialogOpen,
|
|
12849
12988
|
setIsDialogClosing
|
|
12850
12989
|
} = useLayoutStore();
|
|
12851
|
-
const closeDialog = (0,
|
|
12990
|
+
const closeDialog = (0, import_react54.useCallback)(() => {
|
|
12852
12991
|
setIsDialogClosing(true);
|
|
12853
12992
|
setTimeout(() => {
|
|
12854
12993
|
setDialogContent(null);
|
|
@@ -12859,7 +12998,7 @@ function usePageMapper() {
|
|
|
12859
12998
|
setIsDialogOpen(false);
|
|
12860
12999
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
12861
13000
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
12862
|
-
const openDialog = (0,
|
|
13001
|
+
const openDialog = (0, import_react54.useCallback)(
|
|
12863
13002
|
(pageItem) => {
|
|
12864
13003
|
const PageContentComponent = pageItem.component;
|
|
12865
13004
|
setDialogTitle(pageItem.title);
|
|
@@ -12869,7 +13008,7 @@ function usePageMapper() {
|
|
|
12869
13008
|
},
|
|
12870
13009
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
12871
13010
|
);
|
|
12872
|
-
(0,
|
|
13011
|
+
(0, import_react54.useEffect)(() => {
|
|
12873
13012
|
if (page === null) return closeDialog();
|
|
12874
13013
|
const pageItem = protectedRoutes[page];
|
|
12875
13014
|
if (!pageItem) {
|
|
@@ -12882,30 +13021,18 @@ function usePageMapper() {
|
|
|
12882
13021
|
}
|
|
12883
13022
|
|
|
12884
13023
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
12885
|
-
var
|
|
13024
|
+
var import_react55 = require("react");
|
|
12886
13025
|
init_auth();
|
|
12887
13026
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
12888
13027
|
id: "email-not-connected",
|
|
12889
13028
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
12890
13029
|
message: "Email is not connected"
|
|
12891
13030
|
};
|
|
12892
|
-
var BACKUP_IS_NOT_CREATED_NOTIFICATION = {
|
|
12893
|
-
id: "backup-is-not-created",
|
|
12894
|
-
target: "keysare-backup" /* KEYSARE_BACKUP */,
|
|
12895
|
-
message: "Backup is not created"
|
|
12896
|
-
};
|
|
12897
13031
|
function useSettingsNotifications() {
|
|
12898
|
-
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
12899
13032
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
12900
13033
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
12901
13034
|
const hasEmail = providers.includes("email");
|
|
12902
|
-
(0,
|
|
12903
|
-
setSettingsNotifications({
|
|
12904
|
-
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
12905
|
-
status: hasServerVault ? "resolved" : "active"
|
|
12906
|
-
});
|
|
12907
|
-
}, [hasServerVault, setSettingsNotifications]);
|
|
12908
|
-
(0, import_react53.useEffect)(() => {
|
|
13035
|
+
(0, import_react55.useEffect)(() => {
|
|
12909
13036
|
setSettingsNotifications({
|
|
12910
13037
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
12911
13038
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -12914,7 +13041,7 @@ function useSettingsNotifications() {
|
|
|
12914
13041
|
}
|
|
12915
13042
|
|
|
12916
13043
|
// src/internal/hooks/useWalletStatus.ts
|
|
12917
|
-
var
|
|
13044
|
+
var import_react56 = require("react");
|
|
12918
13045
|
init_auth();
|
|
12919
13046
|
function useWalletStatus() {
|
|
12920
13047
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -12924,7 +13051,7 @@ function useWalletStatus() {
|
|
|
12924
13051
|
config: { current: config },
|
|
12925
13052
|
callbacks
|
|
12926
13053
|
} = useLumiaPassportConfig();
|
|
12927
|
-
(0,
|
|
13054
|
+
(0, import_react56.useEffect)(() => {
|
|
12928
13055
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
12929
13056
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
12930
13057
|
const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
|
|
@@ -12949,11 +13076,12 @@ function LumiaPassportDialog() {
|
|
|
12949
13076
|
const config = useLumiaPassportConfig().config;
|
|
12950
13077
|
const className = config.current?.ui?.dialogClassName;
|
|
12951
13078
|
const session = useLumiaPassportSession((st) => st.session);
|
|
13079
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
12952
13080
|
const page = useLayoutDataStore((st) => st.page);
|
|
12953
13081
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
12954
13082
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12955
13083
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
12956
|
-
(0,
|
|
13084
|
+
(0, import_react57.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
12957
13085
|
usePageMapper();
|
|
12958
13086
|
useAutoConnect();
|
|
12959
13087
|
useCheckVaultStatus();
|
|
@@ -12963,6 +13091,7 @@ function LumiaPassportDialog() {
|
|
|
12963
13091
|
useListenIframeAuthEvents();
|
|
12964
13092
|
useBackupWarning();
|
|
12965
13093
|
useWalletStatus();
|
|
13094
|
+
const isHeaderHidden = !session || page === "keysare-backup" /* KEYSARE_BACKUP */ && !hasServerVault;
|
|
12966
13095
|
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
12967
13096
|
Dialog,
|
|
12968
13097
|
{
|
|
@@ -12971,10 +13100,10 @@ function LumiaPassportDialog() {
|
|
|
12971
13100
|
if (isDialogForced) return;
|
|
12972
13101
|
if (!open) setPage(null);
|
|
12973
13102
|
},
|
|
12974
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogContent, { colorMode,
|
|
13103
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogContent, { colorMode, className, children: [
|
|
12975
13104
|
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(DialogTitle, { children: dialogTitle }) }),
|
|
12976
13105
|
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(DialogDescription, { className: "sr-only", children: dialogDescription }),
|
|
12977
|
-
|
|
13106
|
+
!isHeaderHidden && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Header, {}),
|
|
12978
13107
|
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_framer_motion3.AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
12979
13108
|
import_framer_motion3.motion.div,
|
|
12980
13109
|
{
|
|
@@ -12994,23 +13123,23 @@ function LumiaPassportDialog() {
|
|
|
12994
13123
|
}
|
|
12995
13124
|
|
|
12996
13125
|
// src/internal/components/TssManager.tsx
|
|
12997
|
-
var
|
|
13126
|
+
var import_react58 = __toESM(require("react"), 1);
|
|
12998
13127
|
init_auth();
|
|
12999
13128
|
init_clients();
|
|
13000
|
-
var TssManagerWithRef =
|
|
13129
|
+
var TssManagerWithRef = import_react58.default.forwardRef((props, ref) => {
|
|
13001
13130
|
const { mpcPin } = props;
|
|
13002
13131
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
13003
13132
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
13004
13133
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
13005
13134
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
13006
|
-
const onSessionCreated = (0,
|
|
13135
|
+
const onSessionCreated = (0, import_react58.useCallback)(
|
|
13007
13136
|
(session, address) => {
|
|
13008
13137
|
setSession(session);
|
|
13009
13138
|
setAddress(address);
|
|
13010
13139
|
},
|
|
13011
13140
|
[setSession, setAddress]
|
|
13012
13141
|
);
|
|
13013
|
-
const createSessionWithKeyshare =
|
|
13142
|
+
const createSessionWithKeyshare = import_react58.default.useCallback(
|
|
13014
13143
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
13015
13144
|
setStatus("checking key management setup...");
|
|
13016
13145
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -13031,14 +13160,14 @@ var TssManagerWithRef = import_react56.default.forwardRef((props, ref) => {
|
|
|
13031
13160
|
},
|
|
13032
13161
|
[setStatus, usePaymaster, mpcPin]
|
|
13033
13162
|
);
|
|
13034
|
-
|
|
13163
|
+
import_react58.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
13035
13164
|
return null;
|
|
13036
13165
|
});
|
|
13037
13166
|
|
|
13038
13167
|
// src/internal/components/WalletConnectHandler.tsx
|
|
13039
13168
|
var import_rainbowkit = require("@rainbow-me/rainbowkit");
|
|
13040
13169
|
var import_react_query33 = require("@tanstack/react-query");
|
|
13041
|
-
var
|
|
13170
|
+
var import_react59 = __toESM(require("react"), 1);
|
|
13042
13171
|
var import_wagmi5 = require("wagmi");
|
|
13043
13172
|
init_wallet();
|
|
13044
13173
|
function WalletConnectHandler() {
|
|
@@ -13056,7 +13185,7 @@ function WalletConnectHandler() {
|
|
|
13056
13185
|
const setManageWalletLinkError = useManageWalletStore((st) => st.setLinkError);
|
|
13057
13186
|
const setLinkIsLoading = useManageWalletStore((st) => st.setLinkIsLoading);
|
|
13058
13187
|
const setProviderType = useManageWalletStore((st) => st.setProviderType);
|
|
13059
|
-
const onLinkingComplete = (0,
|
|
13188
|
+
const onLinkingComplete = (0, import_react59.useCallback)(
|
|
13060
13189
|
async (success) => {
|
|
13061
13190
|
setIsWalletLinking(false);
|
|
13062
13191
|
if (!success && !passportWalletAddress) {
|
|
@@ -13083,8 +13212,8 @@ function WalletConnectHandler() {
|
|
|
13083
13212
|
},
|
|
13084
13213
|
[qc, passportWalletAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
13085
13214
|
);
|
|
13086
|
-
const [hasStartedLinking, setHasStartedLinking] =
|
|
13087
|
-
(0,
|
|
13215
|
+
const [hasStartedLinking, setHasStartedLinking] = import_react59.default.useState(false);
|
|
13216
|
+
(0, import_react59.useEffect)(() => {
|
|
13088
13217
|
if (isWalletLinking && !hasStartedLinking) {
|
|
13089
13218
|
setHasStartedLinking(true);
|
|
13090
13219
|
setProviderType(null);
|
|
@@ -13104,7 +13233,7 @@ function WalletConnectHandler() {
|
|
|
13104
13233
|
if (isConnected) disconnect();
|
|
13105
13234
|
}
|
|
13106
13235
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
13107
|
-
(0,
|
|
13236
|
+
(0, import_react59.useEffect)(() => {
|
|
13108
13237
|
if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
|
|
13109
13238
|
console.log("[WalletConnectHandler] Modal closed without connecting");
|
|
13110
13239
|
onLinkingComplete(false);
|
|
@@ -13180,7 +13309,7 @@ function WalletConnectHandler() {
|
|
|
13180
13309
|
setPage(passportWalletAddress ? "manage-wallet" /* MANAGE_WALLET */ : "auth" /* AUTH */);
|
|
13181
13310
|
}
|
|
13182
13311
|
});
|
|
13183
|
-
(0,
|
|
13312
|
+
(0, import_react59.useEffect)(() => {
|
|
13184
13313
|
if (!!chain?.id && isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
13185
13314
|
console.log("[WalletConnectHandler] handleWalletSign triggered");
|
|
13186
13315
|
handleWalletSign({ chainId: chain.id, signingWalletAddress: walletAddress });
|
|
@@ -13216,7 +13345,7 @@ var useLumiaPassportSession = (0, import_zustand6.create)((set) => ({
|
|
|
13216
13345
|
}));
|
|
13217
13346
|
function LumiaPassportSessionProvider({ children }) {
|
|
13218
13347
|
const config = useLumiaPassportConfig().config;
|
|
13219
|
-
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
|
|
13348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react60.Fragment, { children: [
|
|
13220
13349
|
children,
|
|
13221
13350
|
config.current?.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(WalletConnectHandler, {}),
|
|
13222
13351
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(BalanceFeedProvider, {}),
|
|
@@ -13268,14 +13397,14 @@ var LumiaWagmiProvider = ({ children }) => {
|
|
|
13268
13397
|
|
|
13269
13398
|
// src/context/LumiaPassportContext.tsx
|
|
13270
13399
|
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
13271
|
-
var LumiaPassportContext = (0,
|
|
13400
|
+
var LumiaPassportContext = (0, import_react61.createContext)(void 0);
|
|
13272
13401
|
function LumiaPassportProvider(props) {
|
|
13273
13402
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
13274
13403
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
13275
13404
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
13276
|
-
(0,
|
|
13277
|
-
const config = (0,
|
|
13278
|
-
const updateConfig = (0,
|
|
13405
|
+
(0, import_react61.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
|
|
13406
|
+
const config = (0, import_react61.useRef)({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
13407
|
+
const updateConfig = (0, import_react61.useCallback)((updates) => {
|
|
13279
13408
|
const prev = config.current;
|
|
13280
13409
|
const next = { ...prev };
|
|
13281
13410
|
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
@@ -13310,7 +13439,7 @@ function LumiaPassportProvider(props) {
|
|
|
13310
13439
|
}
|
|
13311
13440
|
config.current = next;
|
|
13312
13441
|
}, []);
|
|
13313
|
-
(0,
|
|
13442
|
+
(0, import_react61.useEffect)(() => {
|
|
13314
13443
|
if (typeof window === "undefined" || !projectId) return;
|
|
13315
13444
|
const mergedConfig = (0, import_lodash_es4.merge)(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
13316
13445
|
updateConfig(mergedConfig);
|
|
@@ -13355,18 +13484,18 @@ function LumiaPassportProvider(props) {
|
|
|
13355
13484
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
13356
13485
|
}
|
|
13357
13486
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
13358
|
-
const contextValue = (0,
|
|
13487
|
+
const contextValue = (0, import_react61.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
13359
13488
|
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
13360
13489
|
}
|
|
13361
13490
|
var useLumiaPassportConfig = () => {
|
|
13362
|
-
const ctx = (0,
|
|
13491
|
+
const ctx = (0, import_react61.useContext)(LumiaPassportContext);
|
|
13363
13492
|
if (!ctx) throw new Error("useLumiaPassportConfig must be used within a LumiaPassportProvider");
|
|
13364
13493
|
return ctx;
|
|
13365
13494
|
};
|
|
13366
13495
|
|
|
13367
13496
|
// src/components/ConnectWalletButton.tsx
|
|
13368
|
-
var
|
|
13369
|
-
var
|
|
13497
|
+
var import_lucide_react47 = require("lucide-react");
|
|
13498
|
+
var import_react62 = require("react");
|
|
13370
13499
|
init_auth();
|
|
13371
13500
|
var import_jsx_runtime74 = (
|
|
13372
13501
|
/** external Buttons can be provided */
|
|
@@ -13390,10 +13519,10 @@ function ConnectWalletButton(props) {
|
|
|
13390
13519
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
13391
13520
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
13392
13521
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
13393
|
-
(0,
|
|
13522
|
+
(0, import_react62.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
13394
13523
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
13395
13524
|
const displayName = import_auth3.jwtTokenManager.getDisplayName();
|
|
13396
|
-
const indicators = (0,
|
|
13525
|
+
const indicators = (0, import_react62.useMemo)(() => {
|
|
13397
13526
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
13398
13527
|
if (!userId) return { server: false, local: false, backup: false };
|
|
13399
13528
|
const server = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -13408,7 +13537,7 @@ function ConnectWalletButton(props) {
|
|
|
13408
13537
|
disabled: isConnecting,
|
|
13409
13538
|
onClick: () => setPage("auth" /* AUTH */),
|
|
13410
13539
|
children: [
|
|
13411
|
-
isConnecting && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
13540
|
+
isConnecting && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_lucide_react47.Loader, { className: "w-4 h-4 animate-spin" }),
|
|
13412
13541
|
connectButtonLabel
|
|
13413
13542
|
]
|
|
13414
13543
|
}
|
|
@@ -13429,7 +13558,7 @@ function ConnectWalletButton(props) {
|
|
|
13429
13558
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
13430
13559
|
),
|
|
13431
13560
|
children: [
|
|
13432
|
-
isConnecting && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
13561
|
+
isConnecting && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_lucide_react47.Loader, { className: "w-4 h-4 animate-spin" }),
|
|
13433
13562
|
connectButtonLabel.toUpperCase()
|
|
13434
13563
|
]
|
|
13435
13564
|
}
|
|
@@ -13457,7 +13586,7 @@ function ConnectWalletButton(props) {
|
|
|
13457
13586
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "flex items-center space-x-1", children: [
|
|
13458
13587
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "group relative", children: [
|
|
13459
13588
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
13460
|
-
|
|
13589
|
+
import_lucide_react47.Cloud,
|
|
13461
13590
|
{
|
|
13462
13591
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
13463
13592
|
}
|
|
@@ -13479,7 +13608,7 @@ function ConnectWalletButton(props) {
|
|
|
13479
13608
|
] }),
|
|
13480
13609
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "group relative", children: [
|
|
13481
13610
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
13482
|
-
|
|
13611
|
+
import_lucide_react47.Laptop,
|
|
13483
13612
|
{
|
|
13484
13613
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
13485
13614
|
}
|
|
@@ -13501,7 +13630,7 @@ function ConnectWalletButton(props) {
|
|
|
13501
13630
|
] }),
|
|
13502
13631
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "group relative", children: [
|
|
13503
13632
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
13504
|
-
|
|
13633
|
+
import_lucide_react47.Shield,
|
|
13505
13634
|
{
|
|
13506
13635
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
13507
13636
|
}
|
|
@@ -13563,13 +13692,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
13563
13692
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
13564
13693
|
|
|
13565
13694
|
// src/hooks/useLumiaPassportOpen.ts
|
|
13566
|
-
var
|
|
13695
|
+
var import_react63 = require("react");
|
|
13567
13696
|
function useLumiaPassportOpen() {
|
|
13568
13697
|
const page = useLayoutDataStore((st) => st.page);
|
|
13569
13698
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
13570
13699
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
13571
13700
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13572
|
-
const open = (0,
|
|
13701
|
+
const open = (0, import_react63.useCallback)(
|
|
13573
13702
|
(passportPage, params) => {
|
|
13574
13703
|
if (!address) return setPage("auth" /* AUTH */);
|
|
13575
13704
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -13578,12 +13707,12 @@ function useLumiaPassportOpen() {
|
|
|
13578
13707
|
},
|
|
13579
13708
|
[setPage, setPageParams, address]
|
|
13580
13709
|
);
|
|
13581
|
-
const close = (0,
|
|
13710
|
+
const close = (0, import_react63.useCallback)(() => setPage(null), [setPage]);
|
|
13582
13711
|
return { open, close, isOpen: page !== null };
|
|
13583
13712
|
}
|
|
13584
13713
|
|
|
13585
13714
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
13586
|
-
var
|
|
13715
|
+
var import_react64 = require("react");
|
|
13587
13716
|
function useLumiaPassportColorMode() {
|
|
13588
13717
|
const {
|
|
13589
13718
|
config: { current: config }
|
|
@@ -13591,14 +13720,14 @@ function useLumiaPassportColorMode() {
|
|
|
13591
13720
|
const preferedColorMode = config?.preferedColorMode;
|
|
13592
13721
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
13593
13722
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
13594
|
-
const setColorMode = (0,
|
|
13723
|
+
const setColorMode = (0, import_react64.useCallback)(
|
|
13595
13724
|
(mode) => {
|
|
13596
13725
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
13597
13726
|
handleStoreColorMode(mode);
|
|
13598
13727
|
},
|
|
13599
13728
|
[handleStoreColorMode]
|
|
13600
13729
|
);
|
|
13601
|
-
(0,
|
|
13730
|
+
(0, import_react64.useEffect)(() => {
|
|
13602
13731
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
13603
13732
|
if (!targetColorMode && !preferedColorMode) {
|
|
13604
13733
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -13615,7 +13744,7 @@ function useLumiaPassportColorMode() {
|
|
|
13615
13744
|
}
|
|
13616
13745
|
|
|
13617
13746
|
// src/components/ThemeToggle.tsx
|
|
13618
|
-
var
|
|
13747
|
+
var import_lucide_react48 = require("lucide-react");
|
|
13619
13748
|
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
13620
13749
|
function ThemeToggle(props) {
|
|
13621
13750
|
const { colorMode, setColorMode } = useLumiaPassportColorMode();
|
|
@@ -13632,7 +13761,7 @@ function ThemeToggle(props) {
|
|
|
13632
13761
|
variant: "ghost",
|
|
13633
13762
|
onClick: () => setColorMode(colorMode === "light" ? "dark" : "light"),
|
|
13634
13763
|
title: `Current theme: ${colorMode}. Click to switch.`,
|
|
13635
|
-
children: colorMode === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
13764
|
+
children: colorMode === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_lucide_react48.Sun, { className: "w-4 h-4" }) : /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_lucide_react48.Moon, { className: "w-4 h-4" })
|
|
13636
13765
|
}
|
|
13637
13766
|
)
|
|
13638
13767
|
}
|
|
@@ -13641,7 +13770,7 @@ function ThemeToggle(props) {
|
|
|
13641
13770
|
|
|
13642
13771
|
// src/context/RainbowKitContext.tsx
|
|
13643
13772
|
var import_rainbowkit3 = require("@rainbow-me/rainbowkit");
|
|
13644
|
-
var
|
|
13773
|
+
var import_react65 = require("react");
|
|
13645
13774
|
var import_wagmi9 = require("wagmi");
|
|
13646
13775
|
|
|
13647
13776
|
// src/config/rainbowkit.ts
|
|
@@ -13873,8 +14002,8 @@ var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
|
13873
14002
|
function LumiaRainbowKitProvider({ children }) {
|
|
13874
14003
|
const config = useLumiaPassportConfig().config;
|
|
13875
14004
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
13876
|
-
const rainbowConfig2 = (0,
|
|
13877
|
-
const customTheme = (0,
|
|
14005
|
+
const rainbowConfig2 = (0, import_react65.useMemo)(() => createRainbowConfig(config.current?.wallet?.walletConnectProjectId), [config]);
|
|
14006
|
+
const customTheme = (0, import_react65.useMemo)(
|
|
13878
14007
|
() => colorMode === "dark" ? {
|
|
13879
14008
|
...(0, import_rainbowkit3.darkTheme)(),
|
|
13880
14009
|
colors: { ...(0, import_rainbowkit3.darkTheme)().colors, ...rainbowTheme.darkMode.colors },
|
|
@@ -13893,7 +14022,7 @@ function LumiaRainbowKitProvider({ children }) {
|
|
|
13893
14022
|
}
|
|
13894
14023
|
|
|
13895
14024
|
// src/internal/components/UserOpStatus.tsx
|
|
13896
|
-
var
|
|
14025
|
+
var import_lucide_react50 = require("lucide-react");
|
|
13897
14026
|
var React12 = __toESM(require("react"), 1);
|
|
13898
14027
|
init_base();
|
|
13899
14028
|
|
|
@@ -13905,7 +14034,7 @@ function cn2(...inputs) {
|
|
|
13905
14034
|
}
|
|
13906
14035
|
|
|
13907
14036
|
// src/internal/components/Address.tsx
|
|
13908
|
-
var
|
|
14037
|
+
var import_lucide_react49 = require("lucide-react");
|
|
13909
14038
|
var React11 = __toESM(require("react"), 1);
|
|
13910
14039
|
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
13911
14040
|
function toExplorerAddressUrl(address, chain) {
|
|
@@ -13947,7 +14076,7 @@ var Address = ({
|
|
|
13947
14076
|
} catch {
|
|
13948
14077
|
}
|
|
13949
14078
|
},
|
|
13950
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
14079
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react49.Copy, { className: "h-4 w-4" })
|
|
13951
14080
|
}
|
|
13952
14081
|
),
|
|
13953
14082
|
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
@@ -13958,7 +14087,7 @@ var Address = ({
|
|
|
13958
14087
|
rel: "noreferrer noopener",
|
|
13959
14088
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
13960
14089
|
title: "Open in explorer",
|
|
13961
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
14090
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react49.ExternalLink, { className: "h-4 w-4" })
|
|
13962
14091
|
}
|
|
13963
14092
|
)
|
|
13964
14093
|
] });
|
|
@@ -14124,30 +14253,30 @@ var UserOpStatus = ({
|
|
|
14124
14253
|
if (receipt) {
|
|
14125
14254
|
const ok = !!receipt.success;
|
|
14126
14255
|
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
14127
|
-
ok ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14256
|
+
ok ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.CheckCircle2, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.AlertCircle, { className: "h-3 w-3" }),
|
|
14128
14257
|
ok ? "Included" : "Failed"
|
|
14129
14258
|
] });
|
|
14130
14259
|
}
|
|
14131
14260
|
if (rejected) {
|
|
14132
14261
|
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
14133
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14262
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.AlertCircle, { className: "h-3 w-3" }),
|
|
14134
14263
|
" Rejected by bundler"
|
|
14135
14264
|
] });
|
|
14136
14265
|
}
|
|
14137
14266
|
if (timedOut) {
|
|
14138
14267
|
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(Badge, { variant: "warning", className: "gap-1", children: [
|
|
14139
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14268
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.AlertCircle, { className: "h-3 w-3" }),
|
|
14140
14269
|
" Timeout - may be rejected"
|
|
14141
14270
|
] });
|
|
14142
14271
|
}
|
|
14143
14272
|
if (mempool) {
|
|
14144
14273
|
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(Badge, { variant: "outline", className: "gap-1", children: [
|
|
14145
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14274
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.Clock, { className: "h-3 w-3" }),
|
|
14146
14275
|
" Pending in bundler"
|
|
14147
14276
|
] });
|
|
14148
14277
|
}
|
|
14149
14278
|
return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
14150
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14279
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.Clock, { className: "h-3 w-3" }),
|
|
14151
14280
|
" Waiting"
|
|
14152
14281
|
] });
|
|
14153
14282
|
};
|
|
@@ -14166,7 +14295,7 @@ var UserOpStatus = ({
|
|
|
14166
14295
|
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
14167
14296
|
] }),
|
|
14168
14297
|
/* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
14169
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14298
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.RefreshCw, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
14170
14299
|
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "text-xs", children: "Refresh" })
|
|
14171
14300
|
] })
|
|
14172
14301
|
] }),
|
|
@@ -14185,7 +14314,7 @@ var UserOpStatus = ({
|
|
|
14185
14314
|
} catch {
|
|
14186
14315
|
}
|
|
14187
14316
|
},
|
|
14188
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14317
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.Copy, { className: "h-3.5 w-3.5" })
|
|
14189
14318
|
}
|
|
14190
14319
|
)
|
|
14191
14320
|
] }),
|
|
@@ -14204,7 +14333,7 @@ var UserOpStatus = ({
|
|
|
14204
14333
|
} catch {
|
|
14205
14334
|
}
|
|
14206
14335
|
},
|
|
14207
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14336
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.Copy, { className: "h-3.5 w-3.5" })
|
|
14208
14337
|
}
|
|
14209
14338
|
),
|
|
14210
14339
|
chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
@@ -14215,7 +14344,7 @@ var UserOpStatus = ({
|
|
|
14215
14344
|
rel: "noreferrer noopener",
|
|
14216
14345
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
14217
14346
|
title: "Open in explorer",
|
|
14218
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14347
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.ExternalLink, { className: "h-3.5 w-3.5" })
|
|
14219
14348
|
}
|
|
14220
14349
|
)
|
|
14221
14350
|
] }),
|
|
@@ -14244,16 +14373,16 @@ var UserOpStatus = ({
|
|
|
14244
14373
|
] })
|
|
14245
14374
|
] }),
|
|
14246
14375
|
error && /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
14247
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14376
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.AlertCircle, { className: "h-4 w-4" }),
|
|
14248
14377
|
" ",
|
|
14249
14378
|
error
|
|
14250
14379
|
] }),
|
|
14251
14380
|
rejected && /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
14252
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14381
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.AlertCircle, { className: "h-4 w-4" }),
|
|
14253
14382
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
14254
14383
|
] }),
|
|
14255
14384
|
timedOut && /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
14256
|
-
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
|
|
14385
|
+
/* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react50.AlertCircle, { className: "h-4 w-4" }),
|
|
14257
14386
|
"Stopped polling after ",
|
|
14258
14387
|
Math.round(maxPollTimeMs / 1e3),
|
|
14259
14388
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -14264,7 +14393,7 @@ var UserOpStatus = ({
|
|
|
14264
14393
|
};
|
|
14265
14394
|
|
|
14266
14395
|
// src/internal/components/Hash.tsx
|
|
14267
|
-
var
|
|
14396
|
+
var import_lucide_react51 = require("lucide-react");
|
|
14268
14397
|
var React13 = __toESM(require("react"), 1);
|
|
14269
14398
|
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
14270
14399
|
function toExplorerUrl(kind, value, chain) {
|
|
@@ -14308,7 +14437,7 @@ var Hash = ({
|
|
|
14308
14437
|
} catch {
|
|
14309
14438
|
}
|
|
14310
14439
|
},
|
|
14311
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
14440
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react51.Copy, { className: "h-4 w-4" })
|
|
14312
14441
|
}
|
|
14313
14442
|
),
|
|
14314
14443
|
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
@@ -14319,21 +14448,21 @@ var Hash = ({
|
|
|
14319
14448
|
rel: "noreferrer noopener",
|
|
14320
14449
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
14321
14450
|
title: "Open in explorer",
|
|
14322
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
14451
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react51.ExternalLink, { className: "h-4 w-4" })
|
|
14323
14452
|
}
|
|
14324
14453
|
)
|
|
14325
14454
|
] });
|
|
14326
14455
|
};
|
|
14327
14456
|
|
|
14328
14457
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
14329
|
-
var
|
|
14458
|
+
var import_react66 = require("react");
|
|
14330
14459
|
init_base();
|
|
14331
14460
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
14332
14461
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
14333
|
-
const [transactions, setTransactions] = (0,
|
|
14334
|
-
const [loading, setLoading] = (0,
|
|
14335
|
-
const [error, setError] = (0,
|
|
14336
|
-
(0,
|
|
14462
|
+
const [transactions, setTransactions] = (0, import_react66.useState)([]);
|
|
14463
|
+
const [loading, setLoading] = (0, import_react66.useState)(true);
|
|
14464
|
+
const [error, setError] = (0, import_react66.useState)(null);
|
|
14465
|
+
(0, import_react66.useEffect)(() => {
|
|
14337
14466
|
const fetchTransactions = async () => {
|
|
14338
14467
|
try {
|
|
14339
14468
|
setLoading(true);
|
|
@@ -14635,11 +14764,11 @@ function useUserOpStatus(options = {}) {
|
|
|
14635
14764
|
|
|
14636
14765
|
// src/hooks/useLogout.ts
|
|
14637
14766
|
var import_auth20 = require("@lumiapassport/core/auth");
|
|
14638
|
-
var
|
|
14767
|
+
var import_react67 = require("react");
|
|
14639
14768
|
function useLogout() {
|
|
14640
14769
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
14641
14770
|
const { callbacks } = useLumiaPassportConfig();
|
|
14642
|
-
const logout2 = (0,
|
|
14771
|
+
const logout2 = (0, import_react67.useCallback)(async () => {
|
|
14643
14772
|
const prevAddress = address;
|
|
14644
14773
|
let userId = null;
|
|
14645
14774
|
setIsLoading(true);
|