@lumiapassport/ui-kit 1.15.13 → 1.16.1
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 +130 -102
- package/dist/iframe/main.js.map +1 -1
- package/dist/index.cjs +974 -873
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -3
- package/dist/index.d.ts +22 -3
- package/dist/index.js +1041 -940
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -693,52 +693,72 @@ async function ensureDkgAndGetOwner(userId, _clientSeedHex) {
|
|
|
693
693
|
throw error;
|
|
694
694
|
}
|
|
695
695
|
}
|
|
696
|
+
function isChannelError(error) {
|
|
697
|
+
const message = error.message.toLowerCase();
|
|
698
|
+
return message.includes("invalid sdk channel") || message.includes("sdk channel not found") || message.includes("sdk channel expired") || // Backward compatibility
|
|
699
|
+
message === "invalid session";
|
|
700
|
+
}
|
|
696
701
|
async function signDigestWithMpc(userId, digest32, userOpDetails) {
|
|
702
|
+
const MAX_RETRIES = 1;
|
|
697
703
|
const startTime = performance.now();
|
|
698
704
|
currentSigningStats = {
|
|
699
705
|
startTime,
|
|
700
706
|
rounds: []
|
|
701
707
|
};
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
return signature;
|
|
723
|
-
} catch (error) {
|
|
724
|
-
logSdkError(
|
|
725
|
-
error instanceof Error ? error : new Error("MPC signing failed"),
|
|
726
|
-
{ userId, hasUserOpDetails: !!userOpDetails },
|
|
727
|
-
"iframe-mpc"
|
|
728
|
-
);
|
|
729
|
-
const endTime = performance.now();
|
|
730
|
-
if (currentSigningStats) {
|
|
708
|
+
let lastError;
|
|
709
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
710
|
+
try {
|
|
711
|
+
const iframeManager = getIframeManager();
|
|
712
|
+
const { jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
713
|
+
const accessToken = jwtTokenManager4.getAccessToken();
|
|
714
|
+
if (!accessToken) {
|
|
715
|
+
throw new Error("No access token available for signing");
|
|
716
|
+
}
|
|
717
|
+
const transaction = {
|
|
718
|
+
to: userOpDetails?.callTarget || "0x0000000000000000000000000000000000000000",
|
|
719
|
+
value: userOpDetails?.value || "0",
|
|
720
|
+
data: userOpDetails?.callData || "0x",
|
|
721
|
+
digest32,
|
|
722
|
+
// Pre-computed digest - DO NOT recompute!
|
|
723
|
+
// Additional UserOp fields for display in confirmation modal
|
|
724
|
+
userOpDetails
|
|
725
|
+
};
|
|
726
|
+
const signature = await iframeManager.signTransaction(userId, transaction, accessToken);
|
|
727
|
+
const endTime = performance.now();
|
|
731
728
|
currentSigningStats.endTime = endTime;
|
|
732
729
|
currentSigningStats.totalDurationMs = endTime - startTime;
|
|
730
|
+
return signature;
|
|
731
|
+
} catch (error) {
|
|
732
|
+
lastError = error instanceof Error ? error : new Error("MPC signing failed");
|
|
733
|
+
if (isChannelError(lastError) && attempt < MAX_RETRIES) {
|
|
734
|
+
console.warn(`[MPC] SDK channel error, reconnecting and retrying (attempt ${attempt + 1})...`);
|
|
735
|
+
try {
|
|
736
|
+
await getIframeManager().reconnect();
|
|
737
|
+
continue;
|
|
738
|
+
} catch (reconnectError) {
|
|
739
|
+
console.error("[MPC] Reconnect failed:", reconnectError);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
logSdkError(
|
|
743
|
+
lastError,
|
|
744
|
+
{ userId, hasUserOpDetails: !!userOpDetails, attempt },
|
|
745
|
+
"iframe-mpc"
|
|
746
|
+
);
|
|
747
|
+
const endTime = performance.now();
|
|
748
|
+
if (currentSigningStats) {
|
|
749
|
+
currentSigningStats.endTime = endTime;
|
|
750
|
+
currentSigningStats.totalDurationMs = endTime - startTime;
|
|
751
|
+
}
|
|
752
|
+
if (lastError instanceof LumiaPassportError) {
|
|
753
|
+
throw lastError;
|
|
754
|
+
}
|
|
755
|
+
throw new LumiaPassportError(
|
|
756
|
+
lastError.message,
|
|
757
|
+
ErrorCodes.MPC_SIGNING_ERROR
|
|
758
|
+
);
|
|
733
759
|
}
|
|
734
|
-
if (error instanceof LumiaPassportError) {
|
|
735
|
-
throw error;
|
|
736
|
-
}
|
|
737
|
-
throw new LumiaPassportError(
|
|
738
|
-
error instanceof Error ? error.message : "MPC signing failed",
|
|
739
|
-
ErrorCodes.MPC_SIGNING_ERROR
|
|
740
|
-
);
|
|
741
760
|
}
|
|
761
|
+
throw lastError || new Error("MPC signing failed after retries");
|
|
742
762
|
}
|
|
743
763
|
async function signTypedDataWithMpc(userId, digest32, typedData) {
|
|
744
764
|
const startTime = performance.now();
|
|
@@ -1369,7 +1389,7 @@ async function getShareVaultToken(scopes) {
|
|
|
1369
1389
|
}
|
|
1370
1390
|
return {
|
|
1371
1391
|
token: data.resourceToken,
|
|
1372
|
-
expiresAt: Date.now() + data.expiresIn * 1e3
|
|
1392
|
+
expiresAt: Date.now() + (data.expiresIn || 300) * 1e3
|
|
1373
1393
|
};
|
|
1374
1394
|
}
|
|
1375
1395
|
async function getShareRecoveryStats() {
|
|
@@ -2623,10 +2643,9 @@ var init_iframe_manager = __esm({
|
|
|
2623
2643
|
"src/internal/lib/iframe-manager.ts"() {
|
|
2624
2644
|
init_errors();
|
|
2625
2645
|
IframeManager = class {
|
|
2626
|
-
// 5 minutes
|
|
2627
2646
|
constructor(config) {
|
|
2628
2647
|
this.iframe = null;
|
|
2629
|
-
this.
|
|
2648
|
+
this.channelToken = null;
|
|
2630
2649
|
this.isReady = false;
|
|
2631
2650
|
// Message handling
|
|
2632
2651
|
this.pendingRequests = /* @__PURE__ */ new Map();
|
|
@@ -2643,6 +2662,9 @@ var init_iframe_manager = __esm({
|
|
|
2643
2662
|
this.REQUEST_TIMEOUT = 3e5;
|
|
2644
2663
|
// 5 minutes (for user interactions like consent)
|
|
2645
2664
|
this.NONCE_EXPIRY = 3e5;
|
|
2665
|
+
// 5 minutes
|
|
2666
|
+
this.HEARTBEAT_INTERVAL = 5 * 60 * 1e3;
|
|
2667
|
+
this.isReconnecting = false;
|
|
2646
2668
|
this.iframeUrl = config.iframeUrl;
|
|
2647
2669
|
this.projectId = config.projectId;
|
|
2648
2670
|
this.debug = config.debug || false;
|
|
@@ -2683,6 +2705,8 @@ var init_iframe_manager = __esm({
|
|
|
2683
2705
|
await this.readyPromise;
|
|
2684
2706
|
await this.authenticateSDK();
|
|
2685
2707
|
await this.primeProviderSessions();
|
|
2708
|
+
this.startHeartbeat();
|
|
2709
|
+
this.setupVisibilityHandler();
|
|
2686
2710
|
this.log("[IframeManager] \u2705 Iframe ready and authenticated");
|
|
2687
2711
|
}
|
|
2688
2712
|
/**
|
|
@@ -2692,18 +2716,93 @@ var init_iframe_manager = __esm({
|
|
|
2692
2716
|
this.onWalletReadyCallback = callback;
|
|
2693
2717
|
}
|
|
2694
2718
|
/**
|
|
2695
|
-
* Authenticate SDK with iframe to establish
|
|
2719
|
+
* Authenticate SDK with iframe to establish secure channel
|
|
2696
2720
|
*/
|
|
2697
2721
|
async authenticateSDK() {
|
|
2698
2722
|
const response = await this.sendMessage("SDK_AUTH", {
|
|
2699
2723
|
projectId: this.projectId
|
|
2700
2724
|
});
|
|
2701
2725
|
if (response.type === "LUMIA_PASSPORT_SDK_AUTH_SUCCESS") {
|
|
2702
|
-
this.
|
|
2726
|
+
this.channelToken = response.sessionToken;
|
|
2703
2727
|
} else {
|
|
2704
|
-
throw new Error("SDK authentication failed");
|
|
2728
|
+
throw new Error("SDK channel authentication failed");
|
|
2729
|
+
}
|
|
2730
|
+
}
|
|
2731
|
+
/**
|
|
2732
|
+
* Start periodic heartbeat to check SDK channel validity
|
|
2733
|
+
*/
|
|
2734
|
+
startHeartbeat() {
|
|
2735
|
+
if (this.heartbeatInterval) {
|
|
2736
|
+
clearInterval(this.heartbeatInterval);
|
|
2737
|
+
}
|
|
2738
|
+
this.heartbeatInterval = setInterval(async () => {
|
|
2739
|
+
if (!this.channelToken) return;
|
|
2740
|
+
try {
|
|
2741
|
+
const response = await this.sendMessage("SDK_CHANNEL_HEARTBEAT", {});
|
|
2742
|
+
if (!response.valid) {
|
|
2743
|
+
this.log("[IframeManager] SDK channel invalid, reconnecting...");
|
|
2744
|
+
await this.reconnect();
|
|
2745
|
+
}
|
|
2746
|
+
} catch (error) {
|
|
2747
|
+
this.log("[IframeManager] Heartbeat failed:", error);
|
|
2748
|
+
await this.reconnect();
|
|
2749
|
+
}
|
|
2750
|
+
}, this.HEARTBEAT_INTERVAL);
|
|
2751
|
+
this.log("[IframeManager] Heartbeat started (interval: 5 min)");
|
|
2752
|
+
}
|
|
2753
|
+
/**
|
|
2754
|
+
* Stop heartbeat
|
|
2755
|
+
*/
|
|
2756
|
+
stopHeartbeat() {
|
|
2757
|
+
if (this.heartbeatInterval) {
|
|
2758
|
+
clearInterval(this.heartbeatInterval);
|
|
2759
|
+
this.heartbeatInterval = void 0;
|
|
2760
|
+
this.log("[IframeManager] Heartbeat stopped");
|
|
2761
|
+
}
|
|
2762
|
+
}
|
|
2763
|
+
/**
|
|
2764
|
+
* Reconnect SDK channel after it becomes invalid
|
|
2765
|
+
*/
|
|
2766
|
+
async reconnect() {
|
|
2767
|
+
if (this.isReconnecting) {
|
|
2768
|
+
this.log("[IframeManager] Already reconnecting, skipping...");
|
|
2769
|
+
return;
|
|
2770
|
+
}
|
|
2771
|
+
this.isReconnecting = true;
|
|
2772
|
+
this.log("[IframeManager] Reconnecting SDK channel...");
|
|
2773
|
+
try {
|
|
2774
|
+
this.channelToken = null;
|
|
2775
|
+
await this.authenticateSDK();
|
|
2776
|
+
this.log("[IframeManager] \u2705 SDK channel reconnected");
|
|
2777
|
+
} catch (error) {
|
|
2778
|
+
this.log("[IframeManager] \u274C Reconnect failed:", error);
|
|
2779
|
+
throw error;
|
|
2780
|
+
} finally {
|
|
2781
|
+
this.isReconnecting = false;
|
|
2705
2782
|
}
|
|
2706
2783
|
}
|
|
2784
|
+
/**
|
|
2785
|
+
* Setup visibility change handler to check channel when tab becomes visible
|
|
2786
|
+
*/
|
|
2787
|
+
setupVisibilityHandler() {
|
|
2788
|
+
if (typeof document === "undefined") return;
|
|
2789
|
+
document.addEventListener("visibilitychange", async () => {
|
|
2790
|
+
if (document.visibilityState === "visible" && this.channelToken) {
|
|
2791
|
+
this.log("[IframeManager] Tab visible, checking SDK channel...");
|
|
2792
|
+
try {
|
|
2793
|
+
const response = await this.sendMessage("SDK_CHANNEL_HEARTBEAT", {});
|
|
2794
|
+
if (!response.valid) {
|
|
2795
|
+
this.log("[IframeManager] SDK channel expired while tab was hidden");
|
|
2796
|
+
await this.reconnect();
|
|
2797
|
+
}
|
|
2798
|
+
} catch (error) {
|
|
2799
|
+
this.log("[IframeManager] Channel check failed, reconnecting...");
|
|
2800
|
+
await this.reconnect();
|
|
2801
|
+
}
|
|
2802
|
+
}
|
|
2803
|
+
});
|
|
2804
|
+
this.log("[IframeManager] Visibility handler setup");
|
|
2805
|
+
}
|
|
2707
2806
|
/**
|
|
2708
2807
|
* Handle incoming postMessage events
|
|
2709
2808
|
*/
|
|
@@ -2727,6 +2826,7 @@ var init_iframe_manager = __esm({
|
|
|
2727
2826
|
"LUMIA_PASSPORT_TRUSTED_APP_REMOVED",
|
|
2728
2827
|
"LUMIA_PASSPORT_REQUEST_NEW_TOKEN",
|
|
2729
2828
|
"LUMIA_PASSPORT_TOKEN_REFRESHED",
|
|
2829
|
+
"LUMIA_PASSPORT_HEARTBEAT_RESPONSE",
|
|
2730
2830
|
"LUMIA_PASSPORT_RESPONSE",
|
|
2731
2831
|
"LUMIA_PASSPORT_ERROR"
|
|
2732
2832
|
];
|
|
@@ -2855,10 +2955,11 @@ var init_iframe_manager = __esm({
|
|
|
2855
2955
|
projectId: this.projectId,
|
|
2856
2956
|
data: {
|
|
2857
2957
|
...data,
|
|
2858
|
-
sessionToken: this.
|
|
2958
|
+
sessionToken: this.channelToken
|
|
2959
|
+
// named sessionToken for backward compatibility with iframe
|
|
2859
2960
|
}
|
|
2860
2961
|
};
|
|
2861
|
-
if (this.
|
|
2962
|
+
if (this.channelToken) {
|
|
2862
2963
|
message.hmac = await this.computeHMAC(message);
|
|
2863
2964
|
}
|
|
2864
2965
|
const responsePromise = new Promise((resolve, reject) => {
|
|
@@ -2880,7 +2981,7 @@ var init_iframe_manager = __esm({
|
|
|
2880
2981
|
return responsePromise;
|
|
2881
2982
|
}
|
|
2882
2983
|
/**
|
|
2883
|
-
* Compute HMAC for message authentication
|
|
2984
|
+
* Compute HMAC for message authentication using SDK channel token
|
|
2884
2985
|
*/
|
|
2885
2986
|
async computeHMAC(message) {
|
|
2886
2987
|
const encoder = new TextEncoder();
|
|
@@ -2892,7 +2993,7 @@ var init_iframe_manager = __esm({
|
|
|
2892
2993
|
data: JSON.stringify(message.data)
|
|
2893
2994
|
});
|
|
2894
2995
|
const data = encoder.encode(payload);
|
|
2895
|
-
const key = encoder.encode(this.
|
|
2996
|
+
const key = encoder.encode(this.channelToken);
|
|
2896
2997
|
const cryptoKey = await crypto.subtle.importKey("raw", key, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
2897
2998
|
const signature = await crypto.subtle.sign("HMAC", cryptoKey, data);
|
|
2898
2999
|
return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
@@ -3637,6 +3738,7 @@ var init_iframe_manager = __esm({
|
|
|
3637
3738
|
*/
|
|
3638
3739
|
destroy() {
|
|
3639
3740
|
this.log("[IframeManager] Destroying iframe...");
|
|
3741
|
+
this.stopHeartbeat();
|
|
3640
3742
|
this.pendingRequests.forEach((pending) => {
|
|
3641
3743
|
pending.reject(new Error("Iframe manager destroyed"));
|
|
3642
3744
|
});
|
|
@@ -3650,7 +3752,7 @@ var init_iframe_manager = __esm({
|
|
|
3650
3752
|
}
|
|
3651
3753
|
this.iframe = null;
|
|
3652
3754
|
this.isReady = false;
|
|
3653
|
-
this.
|
|
3755
|
+
this.channelToken = null;
|
|
3654
3756
|
this.log("[IframeManager] \u2705 Destroyed");
|
|
3655
3757
|
}
|
|
3656
3758
|
/**
|
|
@@ -4483,7 +4585,7 @@ var init_profile = __esm({
|
|
|
4483
4585
|
});
|
|
4484
4586
|
|
|
4485
4587
|
// src/styles/built.css
|
|
4486
|
-
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 .sticky{position:sticky}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-0{right:0}.lumia-scope .-right-0\\.5{right:-.125rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-0{top:0}.lumia-scope .-top-0\\.5{top:-.125rem}.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 .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-1{height:.25rem}.lumia-scope .h-1\\.5{height:.375rem}.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-64{max-height:16rem}.lumia-scope .max-h-80{max-height:20rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .max-h-full{max-height:100%}.lumia-scope .w-1{width:.25rem}.lumia-scope .w-1\\.5{width:.375rem}.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-72{width:18rem}.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-4{min-width:1rem}.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-\\[256px\\]{max-width:256px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[80px\\]{max-width:80px}.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 .rotate-180{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 .rotate-180{--tw-rotate:180deg}.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-help{cursor:help}.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-0\\.5{gap:.125rem}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-1\\.5{gap:.375rem}.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 :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-border\\)\\]{border-color:var(--l-pass-border)}.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-secondary\\)\\]{background-color:var(--l-pass-bg-secondary)}.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-black\\/90{background-color:rgba(0,0,0,.9)}.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-\\[2px\\]{padding:2px}.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-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .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 .lowercase{text-transform:lowercase}.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 .tracking-wider{letter-spacing:.05em}.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 .transition-transform{transition-property:transform;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,var(--l-pass-secondary));--l-pass-success:var(--lumia-passport-success,#000);--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,#000);--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,var(--l-pass-secondary));--l-pass-success:var(--lumia-passport-success,#000);--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,#000);--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-bg-secondary\\)\\]:hover{background-color:var(--l-pass-bg-secondary)}.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-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\: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\\:bg-transparent:focus{background-color:transparent}.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}';
|
|
4588
|
+
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 .sticky{position:sticky}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-0{right:0}.lumia-scope .-right-0\\.5{right:-.125rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-0{top:0}.lumia-scope .-top-0\\.5{top:-.125rem}.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 .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-1{height:.25rem}.lumia-scope .h-1\\.5{height:.375rem}.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-64{max-height:16rem}.lumia-scope .max-h-80{max-height:20rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .max-h-full{max-height:100%}.lumia-scope .w-1{width:.25rem}.lumia-scope .w-1\\.5{width:.375rem}.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-72{width:18rem}.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-4{min-width:1rem}.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-\\[256px\\]{max-width:256px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[80px\\]{max-width:80px}.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 .rotate-180{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 .rotate-180{--tw-rotate:180deg}.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-help{cursor:help}.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-1\\.5{gap:.375rem}.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 :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-border\\)\\]{border-color:var(--l-pass-border)}.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-secondary\\)\\]{background-color:var(--l-pass-bg-secondary)}.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-black\\/90{background-color:rgba(0,0,0,.9)}.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-\\[2px\\]{padding:2px}.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-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .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 .lowercase{text-transform:lowercase}.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 .tracking-wider{letter-spacing:.05em}.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 .transition-transform{transition-property:transform;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,var(--l-pass-secondary));--l-pass-success:var(--lumia-passport-success,#000);--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,#000);--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,var(--l-pass-secondary));--l-pass-success:var(--lumia-passport-success,#000);--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,#000);--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-bg-secondary\\)\\]:hover{background-color:var(--l-pass-bg-secondary)}.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-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\: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\\:bg-transparent:focus{background-color:transparent}.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}';
|
|
4487
4589
|
|
|
4488
4590
|
// src/context/LumiaPassportContext.tsx
|
|
4489
4591
|
init_lumiaPassport();
|
|
@@ -4492,7 +4594,7 @@ import { initSdkErrorTracking } from "@lumiapassport/core/internal/error-trackin
|
|
|
4492
4594
|
import { merge as merge2 } from "lodash-es";
|
|
4493
4595
|
import {
|
|
4494
4596
|
createContext,
|
|
4495
|
-
useCallback as
|
|
4597
|
+
useCallback as useCallback22,
|
|
4496
4598
|
useContext,
|
|
4497
4599
|
useEffect as useEffect36,
|
|
4498
4600
|
useMemo as useMemo8,
|
|
@@ -4500,7 +4602,7 @@ import {
|
|
|
4500
4602
|
} from "react";
|
|
4501
4603
|
|
|
4502
4604
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4503
|
-
import { Fragment as
|
|
4605
|
+
import { Fragment as Fragment27 } from "react";
|
|
4504
4606
|
import { create as create6 } from "zustand";
|
|
4505
4607
|
|
|
4506
4608
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
@@ -5518,7 +5620,7 @@ function Header() {
|
|
|
5518
5620
|
// package.json
|
|
5519
5621
|
var package_default = {
|
|
5520
5622
|
name: "@lumiapassport/ui-kit",
|
|
5521
|
-
version: "1.
|
|
5623
|
+
version: "1.16.1",
|
|
5522
5624
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
5523
5625
|
type: "module",
|
|
5524
5626
|
main: "./dist/index.cjs",
|
|
@@ -6021,7 +6123,7 @@ function useDetectMaxScrollHeight() {
|
|
|
6021
6123
|
}
|
|
6022
6124
|
|
|
6023
6125
|
// src/internal/hooks/usePageMapper.tsx
|
|
6024
|
-
import { useCallback as
|
|
6126
|
+
import { useCallback as useCallback19, useEffect as useEffect31 } from "react";
|
|
6025
6127
|
|
|
6026
6128
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
6027
6129
|
import { AnimatePresence, motion } from "framer-motion";
|
|
@@ -9939,6 +10041,7 @@ var useManageWalletStore = create5((set) => ({
|
|
|
9939
10041
|
emailCode: "",
|
|
9940
10042
|
emailCodeExpiresIn: 0,
|
|
9941
10043
|
linkIsLoading: false,
|
|
10044
|
+
linkError: null,
|
|
9942
10045
|
providerType: null,
|
|
9943
10046
|
confirmUnlink: null,
|
|
9944
10047
|
setAlert: (alert2) => set({ alert: alert2 }),
|
|
@@ -9947,6 +10050,7 @@ var useManageWalletStore = create5((set) => ({
|
|
|
9947
10050
|
setEmailCode: (emailCode) => set({ emailCode }),
|
|
9948
10051
|
setEmailCodeExpiresIn: (emailCodeExpiresIn) => set({ emailCodeExpiresIn }),
|
|
9949
10052
|
setLinkIsLoading: (linkIsLoading) => set({ linkIsLoading }),
|
|
10053
|
+
setLinkError: (linkError) => set({ linkError }),
|
|
9950
10054
|
setProviderType: (providerType) => set({ providerType }),
|
|
9951
10055
|
setConfirmUnlink: (confirmUnlink) => set({ confirmUnlink })
|
|
9952
10056
|
}));
|
|
@@ -10763,144 +10867,28 @@ function UnlinkProviderMenu() {
|
|
|
10763
10867
|
] });
|
|
10764
10868
|
}
|
|
10765
10869
|
|
|
10766
|
-
// src/internal/components/
|
|
10767
|
-
import { ArrowLeft as ArrowLeft9, Loader as Loader17 } from "lucide-react";
|
|
10768
|
-
|
|
10769
|
-
// src/internal/hooks/useNicknameInfo.ts
|
|
10770
|
-
init_nickname();
|
|
10771
|
-
init_profile();
|
|
10772
|
-
import { useQuery as useQuery11 } from "@tanstack/react-query";
|
|
10773
|
-
function useNicknameInfo(enabled = true) {
|
|
10774
|
-
const query = useQuery11({
|
|
10775
|
-
queryKey: [QUERY_KEYS.nicknameInfo],
|
|
10776
|
-
queryFn: getNicknameInfo,
|
|
10777
|
-
enabled,
|
|
10778
|
-
staleTime: 1e3 * 60 * 5,
|
|
10779
|
-
// 5 minutes
|
|
10780
|
-
retry: 1
|
|
10781
|
-
});
|
|
10782
|
-
return {
|
|
10783
|
-
data: query.data,
|
|
10784
|
-
isLoading: query.isLoading,
|
|
10785
|
-
isError: query.isError,
|
|
10786
|
-
error: query.error,
|
|
10787
|
-
refetch: query.refetch
|
|
10788
|
-
};
|
|
10789
|
-
}
|
|
10790
|
-
|
|
10791
|
-
// src/internal/components/NicknameSettings/NicknameEditForm.tsx
|
|
10792
|
-
import { Check as Check2, Loader as Loader16 } from "lucide-react";
|
|
10793
|
-
import { useCallback as useCallback14, useState as useState13 } from "react";
|
|
10794
|
-
|
|
10795
|
-
// src/internal/hooks/useChangeNickname.ts
|
|
10796
|
-
init_nickname();
|
|
10797
|
-
init_profile();
|
|
10798
|
-
import { useMutation as useMutation14, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
|
|
10799
|
-
function useChangeNickname(options) {
|
|
10800
|
-
const queryClient3 = useQueryClient14();
|
|
10801
|
-
const mutation = useMutation14({
|
|
10802
|
-
mutationFn: (handle) => changeNickname(handle),
|
|
10803
|
-
onSuccess: (result) => {
|
|
10804
|
-
queryClient3.invalidateQueries({ queryKey: [QUERY_KEYS.nicknameInfo] });
|
|
10805
|
-
queryClient3.invalidateQueries({ queryKey: [QUERY_KEYS.userProfile] });
|
|
10806
|
-
options?.onSuccess?.(result);
|
|
10807
|
-
},
|
|
10808
|
-
onError: (error) => {
|
|
10809
|
-
const nicknameError = {
|
|
10810
|
-
error: error.error || error.message,
|
|
10811
|
-
code: error.code || "UNKNOWN_ERROR",
|
|
10812
|
-
daysRemaining: error.daysRemaining,
|
|
10813
|
-
canChangeAt: error.canChangeAt
|
|
10814
|
-
};
|
|
10815
|
-
options?.onError?.(nicknameError);
|
|
10816
|
-
}
|
|
10817
|
-
});
|
|
10818
|
-
return {
|
|
10819
|
-
mutate: mutation.mutate,
|
|
10820
|
-
mutateAsync: mutation.mutateAsync,
|
|
10821
|
-
isLoading: mutation.isPending,
|
|
10822
|
-
isError: mutation.isError,
|
|
10823
|
-
isSuccess: mutation.isSuccess,
|
|
10824
|
-
error: mutation.error ? {
|
|
10825
|
-
error: mutation.error.error || mutation.error.message,
|
|
10826
|
-
code: mutation.error.code || "UNKNOWN_ERROR",
|
|
10827
|
-
daysRemaining: mutation.error.daysRemaining,
|
|
10828
|
-
canChangeAt: mutation.error.canChangeAt
|
|
10829
|
-
} : null,
|
|
10830
|
-
data: mutation.data,
|
|
10831
|
-
reset: mutation.reset
|
|
10832
|
-
};
|
|
10833
|
-
}
|
|
10834
|
-
|
|
10835
|
-
// src/internal/hooks/useNicknameAvailability.ts
|
|
10870
|
+
// src/internal/components/NicknameMenu/NicknameMenu.tsx
|
|
10836
10871
|
init_nickname();
|
|
10837
10872
|
init_profile();
|
|
10838
10873
|
import { useQuery as useQuery12 } from "@tanstack/react-query";
|
|
10839
|
-
import
|
|
10874
|
+
import dayjs2 from "dayjs";
|
|
10875
|
+
import { AlertTriangle as AlertTriangle4, ArrowLeft as ArrowLeft9, Info as Info3, Loader as Loader17 } from "lucide-react";
|
|
10876
|
+
import { useState as useState14 } from "react";
|
|
10840
10877
|
|
|
10841
|
-
// src/internal/lib/nickname-
|
|
10842
|
-
|
|
10843
|
-
|
|
10844
|
-
|
|
10845
|
-
|
|
10846
|
-
|
|
10847
|
-
if (
|
|
10848
|
-
|
|
10849
|
-
|
|
10850
|
-
|
|
10851
|
-
return { valid: false, error: "TOO_LONG" };
|
|
10852
|
-
}
|
|
10853
|
-
if (!NICKNAME_PATTERN.test(normalized)) {
|
|
10854
|
-
return { valid: false, error: "INVALID_CHARS" };
|
|
10855
|
-
}
|
|
10856
|
-
if (normalized.startsWith("_") || normalized.endsWith("_") || normalized.includes("__")) {
|
|
10857
|
-
return { valid: false, error: "INVALID_UNDERSCORE" };
|
|
10858
|
-
}
|
|
10859
|
-
return { valid: true };
|
|
10860
|
-
}
|
|
10861
|
-
function normalizeNickname(handle) {
|
|
10862
|
-
return handle.replace(/^@/, "").toLowerCase().trim();
|
|
10878
|
+
// src/internal/lib/nickname-cooldown.ts
|
|
10879
|
+
function getDaysRemaining(cooldownEndsAt) {
|
|
10880
|
+
if (!cooldownEndsAt) return 0;
|
|
10881
|
+
const endDate = new Date(cooldownEndsAt);
|
|
10882
|
+
const now = /* @__PURE__ */ new Date();
|
|
10883
|
+
if (isNaN(endDate.getTime())) return 0;
|
|
10884
|
+
if (endDate <= now) return 0;
|
|
10885
|
+
const diffMs = endDate.getTime() - now.getTime();
|
|
10886
|
+
const diffDays = Math.ceil(diffMs / (1e3 * 60 * 60 * 24));
|
|
10887
|
+
return Math.max(0, diffDays);
|
|
10863
10888
|
}
|
|
10864
10889
|
|
|
10865
|
-
// src/internal/
|
|
10866
|
-
|
|
10867
|
-
function useNicknameAvailability(handle, enabled = true) {
|
|
10868
|
-
const [debouncedHandle, setDebouncedHandle] = useState12("");
|
|
10869
|
-
const [isDebouncing, setIsDebouncing] = useState12(false);
|
|
10870
|
-
const normalized = normalizeNickname(handle);
|
|
10871
|
-
const validation = validateNickname(handle);
|
|
10872
|
-
const isValidForCheck = validation.valid && normalized.length > 0;
|
|
10873
|
-
useEffect25(() => {
|
|
10874
|
-
if (!isValidForCheck || !enabled) {
|
|
10875
|
-
setDebouncedHandle("");
|
|
10876
|
-
setIsDebouncing(false);
|
|
10877
|
-
return;
|
|
10878
|
-
}
|
|
10879
|
-
setIsDebouncing(true);
|
|
10880
|
-
const timer = setTimeout(() => {
|
|
10881
|
-
setDebouncedHandle(normalized);
|
|
10882
|
-
setIsDebouncing(false);
|
|
10883
|
-
}, DEBOUNCE_MS);
|
|
10884
|
-
return () => {
|
|
10885
|
-
clearTimeout(timer);
|
|
10886
|
-
};
|
|
10887
|
-
}, [normalized, isValidForCheck, enabled]);
|
|
10888
|
-
const query = useQuery12({
|
|
10889
|
-
queryKey: QUERY_KEYS.nicknameAvailability(debouncedHandle),
|
|
10890
|
-
queryFn: () => checkNicknameAvailability(debouncedHandle),
|
|
10891
|
-
enabled: enabled && isValidForCheck && debouncedHandle.length > 0,
|
|
10892
|
-
staleTime: 1e3 * 30,
|
|
10893
|
-
// 30 seconds
|
|
10894
|
-
retry: 1
|
|
10895
|
-
});
|
|
10896
|
-
return {
|
|
10897
|
-
data: query.data,
|
|
10898
|
-
isLoading: query.isLoading,
|
|
10899
|
-
isChecking: isDebouncing || query.isFetching,
|
|
10900
|
-
isError: query.isError,
|
|
10901
|
-
error: query.error
|
|
10902
|
-
};
|
|
10903
|
-
}
|
|
10890
|
+
// src/internal/components/NicknameMenu/NicknameAvailabilityIndicator.tsx
|
|
10891
|
+
import { Check, Loader as Loader15, X as X3 } from "lucide-react";
|
|
10904
10892
|
|
|
10905
10893
|
// src/internal/lib/nickname-errors.ts
|
|
10906
10894
|
var NICKNAME_ERROR_MESSAGES = {
|
|
@@ -10926,8 +10914,7 @@ function getNicknameErrorMessage(code, params) {
|
|
|
10926
10914
|
return message;
|
|
10927
10915
|
}
|
|
10928
10916
|
|
|
10929
|
-
// src/internal/components/
|
|
10930
|
-
import { Loader as Loader15, Check, X as X3 } from "lucide-react";
|
|
10917
|
+
// src/internal/components/NicknameMenu/NicknameAvailabilityIndicator.tsx
|
|
10931
10918
|
import { jsx as jsx54, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
10932
10919
|
function NicknameAvailabilityIndicator({
|
|
10933
10920
|
isChecking,
|
|
@@ -10938,8 +10925,8 @@ function NicknameAvailabilityIndicator({
|
|
|
10938
10925
|
return null;
|
|
10939
10926
|
}
|
|
10940
10927
|
if (isChecking) {
|
|
10941
|
-
return /* @__PURE__ */ jsxs47(
|
|
10942
|
-
/* @__PURE__ */ jsx54(Loader15, { className: "w-
|
|
10928
|
+
return /* @__PURE__ */ jsxs47(Highlight, { className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10929
|
+
/* @__PURE__ */ jsx54(Loader15, { className: "w-4 h-4 animate-spin" }),
|
|
10943
10930
|
/* @__PURE__ */ jsx54("span", { children: "Checking availability..." })
|
|
10944
10931
|
] });
|
|
10945
10932
|
}
|
|
@@ -10947,197 +10934,302 @@ function NicknameAvailabilityIndicator({
|
|
|
10947
10934
|
return null;
|
|
10948
10935
|
}
|
|
10949
10936
|
if (availability.available) {
|
|
10950
|
-
return /* @__PURE__ */ jsxs47("
|
|
10951
|
-
/* @__PURE__ */ jsx54(Check, { className: "w-
|
|
10937
|
+
return /* @__PURE__ */ jsxs47(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10938
|
+
/* @__PURE__ */ jsx54(Check, { className: "w-4 h-4" }),
|
|
10952
10939
|
/* @__PURE__ */ jsx54("span", { children: "Nickname is available" })
|
|
10953
10940
|
] });
|
|
10954
10941
|
}
|
|
10955
10942
|
const reason = availability.reason ? getNicknameErrorMessage(availability.reason) : "This nickname is not available";
|
|
10956
|
-
return /* @__PURE__ */ jsxs47("
|
|
10957
|
-
/* @__PURE__ */ jsx54(X3, { className: "w-
|
|
10943
|
+
return /* @__PURE__ */ jsxs47(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10944
|
+
/* @__PURE__ */ jsx54(X3, { className: "w-4 h-4" }),
|
|
10958
10945
|
/* @__PURE__ */ jsx54("span", { children: reason })
|
|
10959
10946
|
] });
|
|
10960
10947
|
}
|
|
10961
10948
|
|
|
10962
|
-
// src/internal/components/
|
|
10949
|
+
// src/internal/components/NicknameMenu/NicknameEditForm.tsx
|
|
10950
|
+
import { useMutation as useMutation14, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
|
|
10951
|
+
import { AtSign, Check as Check2, ChevronRight as ChevronRight5, Copy as Copy2, Loader as Loader16 } from "lucide-react";
|
|
10952
|
+
import { useCallback as useCallback13, useState as useState12 } from "react";
|
|
10953
|
+
init_nickname();
|
|
10954
|
+
init_profile();
|
|
10955
|
+
|
|
10956
|
+
// src/internal/lib/nickname-validation.ts
|
|
10957
|
+
var NICKNAME_MIN_LENGTH = 3;
|
|
10958
|
+
var NICKNAME_MAX_LENGTH = 20;
|
|
10959
|
+
var NICKNAME_PATTERN = /^[a-z0-9_]+$/;
|
|
10960
|
+
function validateNickname(handle) {
|
|
10961
|
+
const normalized = handle.replace(/^@/, "").toLowerCase().trim();
|
|
10962
|
+
if (normalized.length < NICKNAME_MIN_LENGTH) {
|
|
10963
|
+
return { valid: false, error: "TOO_SHORT" };
|
|
10964
|
+
}
|
|
10965
|
+
if (normalized.length > NICKNAME_MAX_LENGTH) {
|
|
10966
|
+
return { valid: false, error: "TOO_LONG" };
|
|
10967
|
+
}
|
|
10968
|
+
if (!NICKNAME_PATTERN.test(normalized)) {
|
|
10969
|
+
return { valid: false, error: "INVALID_CHARS" };
|
|
10970
|
+
}
|
|
10971
|
+
if (normalized.startsWith("_") || normalized.endsWith("_") || normalized.includes("__")) {
|
|
10972
|
+
return { valid: false, error: "INVALID_UNDERSCORE" };
|
|
10973
|
+
}
|
|
10974
|
+
return { valid: true };
|
|
10975
|
+
}
|
|
10976
|
+
function normalizeNickname(handle) {
|
|
10977
|
+
return handle.replace(/^@/, "").toLowerCase().trim();
|
|
10978
|
+
}
|
|
10979
|
+
|
|
10980
|
+
// src/internal/components/NicknameMenu/NicknameEditForm.tsx
|
|
10963
10981
|
import { Fragment as Fragment18, jsx as jsx55, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
10964
|
-
function NicknameEditForm(
|
|
10965
|
-
const
|
|
10966
|
-
|
|
10967
|
-
|
|
10968
|
-
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
|
|
10972
|
-
|
|
10982
|
+
function NicknameEditForm(props) {
|
|
10983
|
+
const {
|
|
10984
|
+
inputValue,
|
|
10985
|
+
setInputValue,
|
|
10986
|
+
isUnavailable,
|
|
10987
|
+
isSameAsCurrentNickname,
|
|
10988
|
+
isAvailabilityChecking,
|
|
10989
|
+
//
|
|
10990
|
+
clientError,
|
|
10991
|
+
setClientError,
|
|
10992
|
+
info
|
|
10993
|
+
} = props;
|
|
10994
|
+
const { handle: currentNickname, canChange } = info || { handle: "", canChange: false };
|
|
10995
|
+
const qc = useQueryClient14();
|
|
10996
|
+
const [isNicknameCopied, setIsNicknameCopied] = useState12(false);
|
|
10997
|
+
const {
|
|
10998
|
+
mutate: changeNickname2,
|
|
10999
|
+
isError: isNicknameChangeError,
|
|
11000
|
+
isPending: isNicknameChanging,
|
|
11001
|
+
isSuccess: isNicknameChangeSuccess,
|
|
11002
|
+
// error: nicknameChangeError,
|
|
11003
|
+
reset
|
|
11004
|
+
} = useMutation14({
|
|
11005
|
+
mutationFn: (handle) => changeNickname(handle),
|
|
10973
11006
|
onSuccess: () => {
|
|
10974
|
-
|
|
10975
|
-
|
|
10976
|
-
|
|
11007
|
+
qc.invalidateQueries({ queryKey: [QUERY_KEYS.nicknameInfo] });
|
|
11008
|
+
qc.invalidateQueries({ queryKey: [QUERY_KEYS.userProfile] });
|
|
11009
|
+
},
|
|
11010
|
+
onError: (error) => {
|
|
11011
|
+
console.error("Nickname change error:", error);
|
|
11012
|
+
const changeNicknameError = error;
|
|
11013
|
+
setClientError(
|
|
11014
|
+
changeNicknameError ? getNicknameErrorMessage(changeNicknameError.code, {
|
|
11015
|
+
days: changeNicknameError.daysRemaining,
|
|
11016
|
+
canChangeAt: changeNicknameError.canChangeAt
|
|
11017
|
+
}) : null
|
|
11018
|
+
);
|
|
10977
11019
|
}
|
|
10978
11020
|
});
|
|
10979
|
-
const handleInputChange =
|
|
11021
|
+
const handleInputChange = useCallback13(
|
|
10980
11022
|
(e) => {
|
|
10981
11023
|
const value = e.target.value;
|
|
10982
11024
|
setInputValue(value);
|
|
10983
11025
|
if (clientError) setClientError(null);
|
|
10984
|
-
if (
|
|
10985
|
-
if (value
|
|
10986
|
-
|
|
10987
|
-
|
|
10988
|
-
|
|
10989
|
-
}
|
|
11026
|
+
if (isNicknameChangeError || isNicknameChangeSuccess) reset();
|
|
11027
|
+
if (value?.length < 1) return;
|
|
11028
|
+
const validation = validateNickname(value);
|
|
11029
|
+
if (!validation.valid && validation.error) {
|
|
11030
|
+
setClientError(getNicknameErrorMessage(validation.error));
|
|
10990
11031
|
}
|
|
10991
11032
|
},
|
|
10992
|
-
[clientError,
|
|
11033
|
+
[clientError, isNicknameChangeError, isNicknameChangeSuccess, reset]
|
|
10993
11034
|
);
|
|
10994
|
-
const handleSubmit =
|
|
11035
|
+
const handleSubmit = useCallback13(
|
|
10995
11036
|
(e) => {
|
|
11037
|
+
if (!canChange) return;
|
|
10996
11038
|
e.preventDefault();
|
|
10997
|
-
const
|
|
10998
|
-
if (
|
|
11039
|
+
const normalized = normalizeNickname(inputValue);
|
|
11040
|
+
if (normalized === currentNickname.toLowerCase()) {
|
|
10999
11041
|
setClientError("This is already your nickname");
|
|
11000
11042
|
return;
|
|
11001
11043
|
}
|
|
11002
|
-
const
|
|
11003
|
-
if (!
|
|
11004
|
-
setClientError(getNicknameErrorMessage(
|
|
11044
|
+
const validation = validateNickname(inputValue);
|
|
11045
|
+
if (!validation.valid && validation.error) {
|
|
11046
|
+
setClientError(getNicknameErrorMessage(validation.error));
|
|
11005
11047
|
return;
|
|
11006
11048
|
}
|
|
11007
|
-
|
|
11049
|
+
changeNickname2(normalized);
|
|
11008
11050
|
},
|
|
11009
|
-
[inputValue,
|
|
11051
|
+
[inputValue, currentNickname, canChange, changeNickname2]
|
|
11010
11052
|
);
|
|
11011
|
-
const
|
|
11012
|
-
|
|
11013
|
-
|
|
11014
|
-
}) : null);
|
|
11015
|
-
const isUnavailable = shouldCheckAvailability && availability && !availability.available;
|
|
11016
|
-
const isSubmitDisabled = !canChange || isLoading || isChecking || inputValue.length === 0 || !!clientError || isSameAsCurrentHandle || isUnavailable;
|
|
11017
|
-
if (!canChange) {
|
|
11018
|
-
return null;
|
|
11019
|
-
}
|
|
11020
|
-
return /* @__PURE__ */ jsxs48("form", { onSubmit: handleSubmit, className: "w-full flex flex-col gap-3", children: [
|
|
11021
|
-
/* @__PURE__ */ jsxs48("div", { className: "flex flex-col gap-1", children: [
|
|
11022
|
-
/* @__PURE__ */ jsx55("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "New nickname" }),
|
|
11053
|
+
const isSubmitDisabled = !canChange || isNicknameChanging || isAvailabilityChecking || inputValue.length === 0 || !!clientError || isSameAsCurrentNickname || isUnavailable;
|
|
11054
|
+
return /* @__PURE__ */ jsxs48(Fragment18, { children: [
|
|
11055
|
+
canChange ? /* @__PURE__ */ jsx55("form", { onSubmit: handleSubmit, className: "w-full", children: /* @__PURE__ */ jsxs48("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11023
11056
|
/* @__PURE__ */ jsx55(
|
|
11024
11057
|
Input,
|
|
11025
11058
|
{
|
|
11059
|
+
Icon: AtSign,
|
|
11026
11060
|
value: inputValue,
|
|
11027
11061
|
onChange: handleInputChange,
|
|
11028
11062
|
placeholder: "Enter new nickname",
|
|
11029
|
-
disabled:
|
|
11030
|
-
|
|
11063
|
+
disabled: isNicknameChanging,
|
|
11064
|
+
className: "flex-1"
|
|
11065
|
+
}
|
|
11066
|
+
),
|
|
11067
|
+
/* @__PURE__ */ jsx55(Button, { type: "submit", size: "large", disabled: isSubmitDisabled, className: "w-12", children: isNicknameChanging ? /* @__PURE__ */ jsx55(Loader16, { className: "w-4 h-4 animate-spin" }) : isNicknameChangeSuccess ? /* @__PURE__ */ jsx55(Check2, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx55(ChevronRight5, { className: "w-4 h-4" }) })
|
|
11068
|
+
] }) }) : /* @__PURE__ */ jsxs48("div", { className: "w-full flex items-center justify-between px-[var(--l-pass-pd)] h-12 bg-[var(--l-pass-secondary)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
11069
|
+
/* @__PURE__ */ jsxs48(
|
|
11070
|
+
"span",
|
|
11071
|
+
{
|
|
11072
|
+
className: cn("text-lg font-semibold leading-5 transition-colors duration-200", {
|
|
11073
|
+
"text-[var(--l-pass-fg-muted)]": !currentNickname.length
|
|
11074
|
+
}),
|
|
11075
|
+
children: [
|
|
11076
|
+
!!currentNickname.length && /* @__PURE__ */ jsx55("span", { children: "@" }),
|
|
11077
|
+
/* @__PURE__ */ jsx55("span", { children: currentNickname || "your nickname" })
|
|
11078
|
+
]
|
|
11031
11079
|
}
|
|
11032
11080
|
),
|
|
11033
|
-
/* @__PURE__ */ jsx55(
|
|
11034
|
-
|
|
11081
|
+
/* @__PURE__ */ jsx55(
|
|
11082
|
+
Button,
|
|
11083
|
+
{
|
|
11084
|
+
variant: "ghost",
|
|
11085
|
+
size: "icon",
|
|
11086
|
+
onClick: () => {
|
|
11087
|
+
if (!!isNicknameCopied) return;
|
|
11088
|
+
navigator.clipboard.writeText(currentNickname);
|
|
11089
|
+
setIsNicknameCopied(true);
|
|
11090
|
+
setTimeout(() => setIsNicknameCopied(false), 2e3);
|
|
11091
|
+
},
|
|
11092
|
+
children: isNicknameCopied ? /* @__PURE__ */ jsx55(PositiveIcon, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx55(Copy2, { className: "w-4 h-4" })
|
|
11093
|
+
}
|
|
11094
|
+
)
|
|
11035
11095
|
] }),
|
|
11036
|
-
/* @__PURE__ */ jsx55(
|
|
11037
|
-
/* @__PURE__ */ jsx55(Loader16, { className: "w-4 h-4 mr-2 animate-spin" }),
|
|
11038
|
-
"Changing..."
|
|
11039
|
-
] }) : isSuccess ? /* @__PURE__ */ jsxs48(Fragment18, { children: [
|
|
11040
|
-
/* @__PURE__ */ jsx55(Check2, { className: "w-4 h-4 mr-2" }),
|
|
11041
|
-
"Nickname changed!"
|
|
11042
|
-
] }) : "Change Nickname" })
|
|
11096
|
+
!!canChange && /* @__PURE__ */ jsx55("span", { className: "w-full flex items-center leadding-4 text-[10px]", children: "3-20 characters, letters, numbers, and underscores only" })
|
|
11043
11097
|
] });
|
|
11044
11098
|
}
|
|
11045
11099
|
|
|
11046
|
-
// src/internal/components/
|
|
11047
|
-
|
|
11048
|
-
|
|
11049
|
-
|
|
11050
|
-
|
|
11051
|
-
|
|
11052
|
-
|
|
11053
|
-
const
|
|
11054
|
-
|
|
11055
|
-
|
|
11056
|
-
const
|
|
11057
|
-
|
|
11058
|
-
|
|
11059
|
-
|
|
11060
|
-
|
|
11061
|
-
|
|
11062
|
-
const
|
|
11063
|
-
|
|
11064
|
-
|
|
11065
|
-
|
|
11066
|
-
|
|
11067
|
-
|
|
11100
|
+
// src/internal/components/NicknameMenu/useNickname.ts
|
|
11101
|
+
init_nickname();
|
|
11102
|
+
init_profile();
|
|
11103
|
+
import { useQuery as useQuery11 } from "@tanstack/react-query";
|
|
11104
|
+
import { useEffect as useEffect25, useState as useState13 } from "react";
|
|
11105
|
+
var DEBOUNCE_MS = 700;
|
|
11106
|
+
function useNicknameForm(currentNickname) {
|
|
11107
|
+
const [inputValue, setInputValue] = useState13("");
|
|
11108
|
+
const normalizedInputValue = normalizeNickname(inputValue);
|
|
11109
|
+
const validation = validateNickname(inputValue);
|
|
11110
|
+
const isValidForCheck = validation.valid && normalizedInputValue.length > 0;
|
|
11111
|
+
useEffect25(() => {
|
|
11112
|
+
console.log("[NICKNAME] form setup", currentNickname);
|
|
11113
|
+
setInputValue(currentNickname);
|
|
11114
|
+
}, [currentNickname]);
|
|
11115
|
+
const [queryInputValue, setQueryInputValue] = useState13("");
|
|
11116
|
+
const isSameAsCurrentNickname = normalizedInputValue === currentNickname.toLowerCase();
|
|
11117
|
+
const shouldCheckAvailability = validation.valid && !isSameAsCurrentNickname && inputValue.length > 0;
|
|
11118
|
+
useEffect25(() => {
|
|
11119
|
+
if (!isValidForCheck || !shouldCheckAvailability) {
|
|
11120
|
+
setQueryInputValue("");
|
|
11121
|
+
return;
|
|
11122
|
+
}
|
|
11123
|
+
const timer = setTimeout(() => {
|
|
11124
|
+
setQueryInputValue(normalizedInputValue);
|
|
11125
|
+
}, DEBOUNCE_MS);
|
|
11126
|
+
return () => {
|
|
11127
|
+
clearTimeout(timer);
|
|
11128
|
+
};
|
|
11129
|
+
}, [normalizedInputValue, isValidForCheck, shouldCheckAvailability]);
|
|
11130
|
+
const query = useQuery11({
|
|
11131
|
+
retry: 1,
|
|
11132
|
+
enabled: shouldCheckAvailability && isValidForCheck && queryInputValue.length > 0,
|
|
11133
|
+
queryKey: QUERY_KEYS.nicknameAvailability(queryInputValue),
|
|
11134
|
+
queryFn: () => checkNicknameAvailability(queryInputValue),
|
|
11135
|
+
staleTime: 1e3 * 30
|
|
11136
|
+
// 30 seconds stale to not check same InputValue repeatedly
|
|
11068
11137
|
});
|
|
11138
|
+
return {
|
|
11139
|
+
inputValue,
|
|
11140
|
+
setInputValue,
|
|
11141
|
+
isSameAsCurrentNickname,
|
|
11142
|
+
isUnavailable: shouldCheckAvailability && !query?.data?.available,
|
|
11143
|
+
shouldCheckAvailability,
|
|
11144
|
+
availabilityQuery: query
|
|
11145
|
+
};
|
|
11069
11146
|
}
|
|
11070
11147
|
|
|
11071
|
-
// src/internal/components/
|
|
11148
|
+
// src/internal/components/NicknameMenu/NicknameMenu.tsx
|
|
11072
11149
|
import { jsx as jsx56, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
11073
|
-
function
|
|
11074
|
-
const
|
|
11075
|
-
const
|
|
11076
|
-
return /* @__PURE__ */ jsxs49(Fragment19, { children: [
|
|
11077
|
-
/* @__PURE__ */ jsxs49("div", { className: "flex flex-col gap-1", children: [
|
|
11078
|
-
/* @__PURE__ */ jsx56("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Your nickname" }),
|
|
11079
|
-
/* @__PURE__ */ jsx56("span", { className: "text-lg font-bold text-[var(--l-pass-fg)]", children: info.displayHandle })
|
|
11080
|
-
] }),
|
|
11081
|
-
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-4 text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
11082
|
-
/* @__PURE__ */ jsxs49("div", { className: "flex flex-col gap-0.5", children: [
|
|
11083
|
-
/* @__PURE__ */ jsx56("span", { children: "Created" }),
|
|
11084
|
-
/* @__PURE__ */ jsx56("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.createdAt).toLocaleDateString(void 0, {
|
|
11085
|
-
year: "numeric",
|
|
11086
|
-
month: "short",
|
|
11087
|
-
day: "numeric"
|
|
11088
|
-
}) })
|
|
11089
|
-
] }),
|
|
11090
|
-
info.changedAt && /* @__PURE__ */ jsxs49("div", { className: "flex flex-col gap-0.5", children: [
|
|
11091
|
-
/* @__PURE__ */ jsx56("span", { children: "Last changed" }),
|
|
11092
|
-
/* @__PURE__ */ jsx56("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.changedAt).toLocaleDateString(void 0, {
|
|
11093
|
-
year: "numeric",
|
|
11094
|
-
month: "short",
|
|
11095
|
-
day: "numeric"
|
|
11096
|
-
}) })
|
|
11097
|
-
] }),
|
|
11098
|
-
/* @__PURE__ */ jsxs49("div", { className: "flex flex-col gap-0.5", children: [
|
|
11099
|
-
/* @__PURE__ */ jsx56("span", { children: "Times changed" }),
|
|
11100
|
-
/* @__PURE__ */ jsx56("span", { className: "text-[var(--l-pass-fg)]", children: info.changeCount })
|
|
11101
|
-
] })
|
|
11102
|
-
] }),
|
|
11103
|
-
!info.canChange && info.cooldownEndsAt && /* @__PURE__ */ jsx56("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-warning)]", children: /* @__PURE__ */ jsxs49("span", { className: "text-sm text-[var(--l-pass-warning)]", children: [
|
|
11104
|
-
"You can change your nickname again on ",
|
|
11105
|
-
cooldownEndDate,
|
|
11106
|
-
" (",
|
|
11107
|
-
daysRemaining,
|
|
11108
|
-
" days remaining)"
|
|
11109
|
-
] }) }),
|
|
11110
|
-
info.canChange && /* @__PURE__ */ jsx56("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-success)]", children: /* @__PURE__ */ jsx56("span", { className: "text-sm text-[var(--l-pass-success)]", children: "You can change your nickname" }) })
|
|
11111
|
-
] });
|
|
11112
|
-
}
|
|
11113
|
-
|
|
11114
|
-
// src/internal/components/NicknameSettings/NicknameSettings.tsx
|
|
11115
|
-
import { jsx as jsx57, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
11116
|
-
function NicknameSettings() {
|
|
11150
|
+
function NicknameMenu() {
|
|
11151
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
11152
|
+
const [clientError, setClientError] = useState14(null);
|
|
11117
11153
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11118
11154
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11119
|
-
const {
|
|
11120
|
-
|
|
11155
|
+
const {
|
|
11156
|
+
data: nicknameInfo,
|
|
11157
|
+
isLoading: isNicknameInfoLoading,
|
|
11158
|
+
error: nicknameInfoError
|
|
11159
|
+
} = useQuery12({
|
|
11160
|
+
retry: 1,
|
|
11161
|
+
enabled: !!address,
|
|
11162
|
+
queryKey: [QUERY_KEYS.nicknameInfo, address],
|
|
11163
|
+
queryFn: getNicknameInfo
|
|
11164
|
+
});
|
|
11165
|
+
const {
|
|
11166
|
+
availabilityQuery,
|
|
11167
|
+
inputValue,
|
|
11168
|
+
isUnavailable,
|
|
11169
|
+
isSameAsCurrentNickname,
|
|
11170
|
+
shouldCheckAvailability,
|
|
11171
|
+
setInputValue
|
|
11172
|
+
} = useNicknameForm(nicknameInfo ? nicknameInfo.handle : "");
|
|
11173
|
+
const { data: availability, isFetching: isAvailabilityChecking } = availabilityQuery;
|
|
11174
|
+
const resolvedError = clientError || nicknameInfoError?.message || null;
|
|
11175
|
+
return /* @__PURE__ */ jsx56(
|
|
11121
11176
|
"div",
|
|
11122
11177
|
{
|
|
11123
11178
|
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
11124
11179
|
className: "list-scrollbar-y w-full",
|
|
11125
|
-
children: /* @__PURE__ */
|
|
11126
|
-
/* @__PURE__ */
|
|
11127
|
-
/* @__PURE__ */
|
|
11128
|
-
/* @__PURE__ */
|
|
11180
|
+
children: /* @__PURE__ */ jsxs49(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
11181
|
+
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-[var(--l-pass-gap)] ", children: [
|
|
11182
|
+
/* @__PURE__ */ jsx56(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx56(ArrowLeft9, { className: "h-4 w-4 flex-none" }) }),
|
|
11183
|
+
/* @__PURE__ */ jsxs49("div", { className: "flex gap-[var(--l-pass-gap)] items-center w-fit", children: [
|
|
11184
|
+
/* @__PURE__ */ jsx56("span", { className: "text-xl font-semibold", children: "Nickname" }),
|
|
11185
|
+
isNicknameInfoLoading && /* @__PURE__ */ jsx56(Loader17, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" })
|
|
11186
|
+
] })
|
|
11129
11187
|
] }),
|
|
11130
|
-
|
|
11131
|
-
|
|
11132
|
-
nicknameInfo && /* @__PURE__ */ jsx57(
|
|
11188
|
+
/* @__PURE__ */ jsx56("span", { className: "text-[10px] text-[var(--l-pass-fg-muted)]", children: "Your nickname" }),
|
|
11189
|
+
/* @__PURE__ */ jsx56(
|
|
11133
11190
|
NicknameEditForm,
|
|
11134
11191
|
{
|
|
11135
|
-
|
|
11136
|
-
|
|
11137
|
-
|
|
11192
|
+
inputValue,
|
|
11193
|
+
setInputValue,
|
|
11194
|
+
info: nicknameInfo,
|
|
11195
|
+
isAvailabilityChecking,
|
|
11196
|
+
isUnavailable,
|
|
11197
|
+
isSameAsCurrentNickname,
|
|
11198
|
+
clientError,
|
|
11199
|
+
setClientError
|
|
11138
11200
|
}
|
|
11139
11201
|
),
|
|
11140
|
-
|
|
11202
|
+
shouldCheckAvailability && !clientError && /* @__PURE__ */ jsx56(NicknameAvailabilityIndicator, { isChecking: isAvailabilityChecking, availability }),
|
|
11203
|
+
!nicknameInfo?.canChange && nicknameInfo?.cooldownEndsAt && /* @__PURE__ */ jsxs49(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11204
|
+
/* @__PURE__ */ jsx56(Info3, { className: "w-4 h-4 flex-none" }),
|
|
11205
|
+
/* @__PURE__ */ jsxs49("span", { children: [
|
|
11206
|
+
"You can change your nickname again on",
|
|
11207
|
+
" ",
|
|
11208
|
+
/* @__PURE__ */ jsx56("strong", { children: dayjs2(nicknameInfo.cooldownEndsAt).format("MMM D, YYYY") }),
|
|
11209
|
+
" (",
|
|
11210
|
+
/* @__PURE__ */ jsxs49("span", { children: [
|
|
11211
|
+
getDaysRemaining(nicknameInfo.cooldownEndsAt),
|
|
11212
|
+
" days remained"
|
|
11213
|
+
] }),
|
|
11214
|
+
")"
|
|
11215
|
+
] })
|
|
11216
|
+
] }),
|
|
11217
|
+
!!nicknameInfo && /* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-[var(--l-pass-gap)] justify-between text-[10px]", children: [
|
|
11218
|
+
/* @__PURE__ */ jsxs49("span", { children: [
|
|
11219
|
+
/* @__PURE__ */ jsx56("span", { className: "text-[var(--l-pass-fg-muted)]", children: nicknameInfo.changedAt ? "Last changed:" : "Created:" }),
|
|
11220
|
+
/* @__PURE__ */ jsx56("span", { children: " " }),
|
|
11221
|
+
/* @__PURE__ */ jsx56("strong", { className: "text-[var(--l-pass-fg)]", children: dayjs2(nicknameInfo.changedAt || nicknameInfo.createdAt).format("MMM D, YYYY") })
|
|
11222
|
+
] }),
|
|
11223
|
+
/* @__PURE__ */ jsxs49("span", { children: [
|
|
11224
|
+
/* @__PURE__ */ jsx56("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Times changed:" }),
|
|
11225
|
+
/* @__PURE__ */ jsx56("span", { children: " " }),
|
|
11226
|
+
/* @__PURE__ */ jsx56("strong", { className: "text-[var(--l-pass-fg)]", children: nicknameInfo.changeCount })
|
|
11227
|
+
] })
|
|
11228
|
+
] }),
|
|
11229
|
+
!!resolvedError?.length && /* @__PURE__ */ jsxs49(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11230
|
+
/* @__PURE__ */ jsx56(AlertTriangle4, { className: "w-4 h-4 flex-none" }),
|
|
11231
|
+
/* @__PURE__ */ jsx56("span", { children: resolvedError })
|
|
11232
|
+
] })
|
|
11141
11233
|
] })
|
|
11142
11234
|
}
|
|
11143
11235
|
);
|
|
@@ -11146,12 +11238,12 @@ function NicknameSettings() {
|
|
|
11146
11238
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
11147
11239
|
import { useQueryClient as useQueryClient16 } from "@tanstack/react-query";
|
|
11148
11240
|
import { AlertCircle as AlertCircle4, ArrowLeft as ArrowLeft10, Gem, Loader as Loader19, RefreshCw } from "lucide-react";
|
|
11149
|
-
import { useCallback as
|
|
11241
|
+
import { useCallback as useCallback15 } from "react";
|
|
11150
11242
|
|
|
11151
11243
|
// src/internal/hooks/useBlockscoutAssets.ts
|
|
11152
11244
|
init_lumiaPassport();
|
|
11153
11245
|
init_base();
|
|
11154
|
-
import { useCallback as
|
|
11246
|
+
import { useCallback as useCallback14, useMemo as useMemo4, useRef as useRef13 } from "react";
|
|
11155
11247
|
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
11156
11248
|
import { useBalance as useBalance2, usePublicClient } from "wagmi";
|
|
11157
11249
|
import { formatUnits as formatUnits2 } from "viem";
|
|
@@ -11431,7 +11523,7 @@ function useBlockscoutAssets(options) {
|
|
|
11431
11523
|
if (!tokensError) return null;
|
|
11432
11524
|
return createError(tokensError);
|
|
11433
11525
|
}, [tokensError]);
|
|
11434
|
-
const refreshBalances =
|
|
11526
|
+
const refreshBalances = useCallback14(async () => {
|
|
11435
11527
|
const now = Date.now();
|
|
11436
11528
|
if (now - lastRefreshRef.current < BLOCKSCOUT_REFRESH_DEBOUNCE) {
|
|
11437
11529
|
return;
|
|
@@ -11439,7 +11531,7 @@ function useBlockscoutAssets(options) {
|
|
|
11439
11531
|
lastRefreshRef.current = now;
|
|
11440
11532
|
await Promise.all([refetchNative(), refetchTokens(), refetchNfts()]);
|
|
11441
11533
|
}, [refetchNative, refetchTokens, refetchNfts]);
|
|
11442
|
-
const getTokenBalance =
|
|
11534
|
+
const getTokenBalance = useCallback14(
|
|
11443
11535
|
(tokenAddress) => {
|
|
11444
11536
|
return assets.find((a) => a.address?.toLowerCase() === tokenAddress.toLowerCase()) || null;
|
|
11445
11537
|
},
|
|
@@ -11462,9 +11554,9 @@ function useBlockscoutAssets(options) {
|
|
|
11462
11554
|
init_base();
|
|
11463
11555
|
import { useQuery as useQuery14, useQueryClient as useQueryClient15 } from "@tanstack/react-query";
|
|
11464
11556
|
import { Image as ImageIcon, Loader as Loader18, Shield, Sparkles } from "lucide-react";
|
|
11465
|
-
import { useState as
|
|
11557
|
+
import { useState as useState15 } from "react";
|
|
11466
11558
|
import { formatUnits as formatUnits3 } from "viem";
|
|
11467
|
-
import { Fragment as
|
|
11559
|
+
import { Fragment as Fragment19, jsx as jsx57, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
11468
11560
|
function openInExplorer(address) {
|
|
11469
11561
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11470
11562
|
}
|
|
@@ -11499,8 +11591,8 @@ async function getAssetRate2(symbol) {
|
|
|
11499
11591
|
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
11500
11592
|
function PortfolioItem(props) {
|
|
11501
11593
|
const { address, asset, isProjectAsset } = props;
|
|
11502
|
-
const [nftImageError, setNftImageError] =
|
|
11503
|
-
const [logoError, setLogoError] =
|
|
11594
|
+
const [nftImageError, setNftImageError] = useState15(false);
|
|
11595
|
+
const [logoError, setLogoError] = useState15(false);
|
|
11504
11596
|
const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
|
|
11505
11597
|
const qc = useQueryClient15();
|
|
11506
11598
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
@@ -11518,7 +11610,7 @@ function PortfolioItem(props) {
|
|
|
11518
11610
|
const showProjectFiatBalance = isProjectAsset && !!projectAssetBalance?.fiatFormatted;
|
|
11519
11611
|
const renderBalance = showProjectFiatBalance ? projectAssetBalance?.fiatFormatted || 0 : Number(formatUnits3(BigInt(asset?.balance || "0"), asset?.decimals || 18));
|
|
11520
11612
|
const usdRenderBalance = !!assetRate?.price ? renderBalance * Number(assetRate.price) : 0;
|
|
11521
|
-
return /* @__PURE__ */
|
|
11613
|
+
return /* @__PURE__ */ jsxs50(
|
|
11522
11614
|
"div",
|
|
11523
11615
|
{
|
|
11524
11616
|
className: cn(
|
|
@@ -11529,7 +11621,7 @@ function PortfolioItem(props) {
|
|
|
11529
11621
|
),
|
|
11530
11622
|
onClick: () => asset.address ? openInExplorer(asset.address) : void 0,
|
|
11531
11623
|
children: [
|
|
11532
|
-
/* @__PURE__ */
|
|
11624
|
+
/* @__PURE__ */ jsxs50(
|
|
11533
11625
|
"div",
|
|
11534
11626
|
{
|
|
11535
11627
|
className: cn(
|
|
@@ -11540,7 +11632,7 @@ function PortfolioItem(props) {
|
|
|
11540
11632
|
(!asset.logo || logoError) && !nftImage && "bg-[var(--l-pass-fg)]"
|
|
11541
11633
|
),
|
|
11542
11634
|
children: [
|
|
11543
|
-
isNft && nftImage && !nftImageError ? /* @__PURE__ */
|
|
11635
|
+
isNft && nftImage && !nftImageError ? /* @__PURE__ */ jsx57(
|
|
11544
11636
|
"img",
|
|
11545
11637
|
{
|
|
11546
11638
|
src: nftImage,
|
|
@@ -11550,8 +11642,8 @@ function PortfolioItem(props) {
|
|
|
11550
11642
|
}
|
|
11551
11643
|
) : isNft && (!nftImage || nftImageError) ? (
|
|
11552
11644
|
// NFT placeholder when no image available
|
|
11553
|
-
/* @__PURE__ */
|
|
11554
|
-
) : asset.logo && !logoError ? /* @__PURE__ */
|
|
11645
|
+
/* @__PURE__ */ jsx57("div", { className: "w-full h-full bg-[var(--l-pass-fg)] flex items-center justify-center", children: /* @__PURE__ */ jsx57(ImageIcon, { className: "w-5 h-5 text-[var(--l-pass-fg-inverted)]" }) })
|
|
11646
|
+
) : asset.logo && !logoError ? /* @__PURE__ */ jsx57(
|
|
11555
11647
|
"img",
|
|
11556
11648
|
{
|
|
11557
11649
|
src: asset.logo,
|
|
@@ -11559,22 +11651,22 @@ function PortfolioItem(props) {
|
|
|
11559
11651
|
className: "w-full h-full object-cover",
|
|
11560
11652
|
onError: () => setLogoError(true)
|
|
11561
11653
|
}
|
|
11562
|
-
) : /* @__PURE__ */
|
|
11563
|
-
isNft && /* @__PURE__ */
|
|
11564
|
-
isSecurity && /* @__PURE__ */
|
|
11654
|
+
) : /* @__PURE__ */ jsx57("span", { className: "text-[var(--l-pass-fg-inverted)] font-bold text-sm", children: asset.symbol.charAt(0) }),
|
|
11655
|
+
isNft && /* @__PURE__ */ jsx57("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__ */ jsx57(Sparkles, { className: "w-2.5 h-2.5 text-[var(--l-pass-fg-inverted)]" }) }),
|
|
11656
|
+
isSecurity && /* @__PURE__ */ jsx57(
|
|
11565
11657
|
"div",
|
|
11566
11658
|
{
|
|
11567
11659
|
className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-amber-500 flex items-center justify-center",
|
|
11568
11660
|
title: "Security Token (ERC-3643)",
|
|
11569
|
-
children: /* @__PURE__ */
|
|
11661
|
+
children: /* @__PURE__ */ jsx57(Shield, { className: "w-2.5 h-2.5 text-white" })
|
|
11570
11662
|
}
|
|
11571
11663
|
)
|
|
11572
11664
|
]
|
|
11573
11665
|
}
|
|
11574
11666
|
),
|
|
11575
|
-
/* @__PURE__ */
|
|
11576
|
-
/* @__PURE__ */
|
|
11577
|
-
/* @__PURE__ */
|
|
11667
|
+
/* @__PURE__ */ jsxs50("div", { className: "w-full flex-1", children: [
|
|
11668
|
+
/* @__PURE__ */ jsxs50("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
11669
|
+
/* @__PURE__ */ jsx57(
|
|
11578
11670
|
"span",
|
|
11579
11671
|
{
|
|
11580
11672
|
className: "truncate max-w-[150px]",
|
|
@@ -11582,25 +11674,25 @@ function PortfolioItem(props) {
|
|
|
11582
11674
|
children: isNft ? asset.nftMetadata?.collectionName || asset.name || (asset.address ? `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` : "Unknown") : asset.name || (asset.address ? `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` : "Unknown")
|
|
11583
11675
|
}
|
|
11584
11676
|
),
|
|
11585
|
-
!!usdRenderBalance && !isProjectAsset && !isNft && !isSecurity && /* @__PURE__ */
|
|
11586
|
-
!isSecurity && isNft && "type" in asset && /* @__PURE__ */
|
|
11587
|
-
isSecurity && /* @__PURE__ */
|
|
11677
|
+
!!usdRenderBalance && !isProjectAsset && !isNft && !isSecurity && /* @__PURE__ */ jsx57("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" }),
|
|
11678
|
+
!isSecurity && isNft && "type" in asset && /* @__PURE__ */ jsx57("span", { className: "uppercase text-[10px] px-1 bg-[var(--l-pass-bg-info)] rounded-full", children: asset.type === "erc721" ? "ERC-721" : "ERC-1155" }),
|
|
11679
|
+
isSecurity && /* @__PURE__ */ jsx57("span", { className: "uppercase text-[10px] px-1 bg-[var(--l-pass-bg-warning)] rounded-full", children: "Security Token" })
|
|
11588
11680
|
] }),
|
|
11589
|
-
/* @__PURE__ */
|
|
11590
|
-
/* @__PURE__ */
|
|
11591
|
-
"tokenId" in asset && asset.tokenId && /* @__PURE__ */
|
|
11681
|
+
/* @__PURE__ */ jsx57("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: isNft ? /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
11682
|
+
/* @__PURE__ */ jsx57("span", { className: "truncate max-w-[160px]", title: asset.nftMetadata?.name || asset.symbol, children: asset.nftMetadata?.name || asset.symbol }),
|
|
11683
|
+
"tokenId" in asset && asset.tokenId && /* @__PURE__ */ jsxs50("span", { className: "text-xs text-[var(--l-pass-fg-muted)] font-normal", children: [
|
|
11592
11684
|
"#",
|
|
11593
11685
|
asset.tokenId.length > 8 ? `${asset.tokenId.slice(0, 6)}...` : asset.tokenId
|
|
11594
11686
|
] })
|
|
11595
|
-
] }) : /* @__PURE__ */
|
|
11596
|
-
/* @__PURE__ */
|
|
11597
|
-
/* @__PURE__ */
|
|
11598
|
-
/* @__PURE__ */
|
|
11687
|
+
] }) : /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
11688
|
+
/* @__PURE__ */ jsxs50("span", { children: [
|
|
11689
|
+
/* @__PURE__ */ jsx57("span", { children: formatPrice(Number(renderBalance)) }),
|
|
11690
|
+
/* @__PURE__ */ jsx57("span", { children: " " + asset.symbol })
|
|
11599
11691
|
] }),
|
|
11600
|
-
isRateLoading && /* @__PURE__ */
|
|
11601
|
-
!isRateLoading && !!usdRenderBalance && /* @__PURE__ */
|
|
11602
|
-
/* @__PURE__ */
|
|
11603
|
-
/* @__PURE__ */
|
|
11692
|
+
isRateLoading && /* @__PURE__ */ jsx57(Loader18, { className: "h-4 w-4 animate-spin" }),
|
|
11693
|
+
!isRateLoading && !!usdRenderBalance && /* @__PURE__ */ jsxs50("span", { children: [
|
|
11694
|
+
/* @__PURE__ */ jsx57("span", { children: "$" }),
|
|
11695
|
+
/* @__PURE__ */ jsx57("span", { children: formatPrice(usdRenderBalance) })
|
|
11604
11696
|
] })
|
|
11605
11697
|
] }) })
|
|
11606
11698
|
] })
|
|
@@ -11610,7 +11702,7 @@ function PortfolioItem(props) {
|
|
|
11610
11702
|
}
|
|
11611
11703
|
|
|
11612
11704
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
11613
|
-
import { jsx as
|
|
11705
|
+
import { jsx as jsx58, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
11614
11706
|
function PortfolioMenu() {
|
|
11615
11707
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
11616
11708
|
const qc = useQueryClient16();
|
|
@@ -11626,11 +11718,11 @@ function PortfolioMenu() {
|
|
|
11626
11718
|
} = useBlockscoutAssets({
|
|
11627
11719
|
address
|
|
11628
11720
|
});
|
|
11629
|
-
const refreshAllAssetsBalances =
|
|
11721
|
+
const refreshAllAssetsBalances = useCallback15(() => {
|
|
11630
11722
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
11631
11723
|
refreshBlockscoutBalances();
|
|
11632
11724
|
}, [qc, projectAssets, refreshBlockscoutBalances]);
|
|
11633
|
-
return /* @__PURE__ */
|
|
11725
|
+
return /* @__PURE__ */ jsx58(
|
|
11634
11726
|
"div",
|
|
11635
11727
|
{
|
|
11636
11728
|
style: {
|
|
@@ -11638,11 +11730,11 @@ function PortfolioMenu() {
|
|
|
11638
11730
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
11639
11731
|
},
|
|
11640
11732
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11641
|
-
children: /* @__PURE__ */
|
|
11642
|
-
/* @__PURE__ */
|
|
11643
|
-
/* @__PURE__ */
|
|
11644
|
-
/* @__PURE__ */
|
|
11645
|
-
/* @__PURE__ */
|
|
11733
|
+
children: /* @__PURE__ */ jsxs51(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11734
|
+
/* @__PURE__ */ jsxs51("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11735
|
+
/* @__PURE__ */ jsx58(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx58(ArrowLeft10, { className: "h-4 w-4" }) }),
|
|
11736
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11737
|
+
/* @__PURE__ */ jsx58(
|
|
11646
11738
|
Button,
|
|
11647
11739
|
{
|
|
11648
11740
|
title: "Refresh balances",
|
|
@@ -11650,17 +11742,17 @@ function PortfolioMenu() {
|
|
|
11650
11742
|
size: "icon",
|
|
11651
11743
|
onClick: refreshAllAssetsBalances,
|
|
11652
11744
|
disabled: isBlockscoutLoading,
|
|
11653
|
-
children: isBlockscoutLoading ? /* @__PURE__ */
|
|
11745
|
+
children: isBlockscoutLoading ? /* @__PURE__ */ jsx58(Loader19, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx58(RefreshCw, { className: "h-4 w-4" })
|
|
11654
11746
|
}
|
|
11655
11747
|
)
|
|
11656
11748
|
] }),
|
|
11657
|
-
isBlockscoutLoading && /* @__PURE__ */
|
|
11658
|
-
!isBlockscoutLoading && blockscoutAssets?.length === 0 && /* @__PURE__ */
|
|
11659
|
-
/* @__PURE__ */
|
|
11660
|
-
/* @__PURE__ */
|
|
11749
|
+
isBlockscoutLoading && /* @__PURE__ */ jsx58("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: /* @__PURE__ */ jsx58(Loader19, { className: "h-5 w-5 animate-spin" }) }),
|
|
11750
|
+
!isBlockscoutLoading && blockscoutAssets?.length === 0 && /* @__PURE__ */ jsxs51(Highlight, { type: "info", className: "flex flex-col items-center justify-center gap-[var(--l-pass-gap)]", children: [
|
|
11751
|
+
/* @__PURE__ */ jsx58(Gem, { className: "w-8 h-8" }),
|
|
11752
|
+
/* @__PURE__ */ jsx58("span", { className: "block", children: "No assets found" })
|
|
11661
11753
|
] }),
|
|
11662
|
-
!isBlockscoutLoading && projectAssets?.map((asset, index) => /* @__PURE__ */
|
|
11663
|
-
!isBlockscoutLoading && blockscoutAssets?.length > 0 && blockscoutAssets.map((asset, index) => /* @__PURE__ */
|
|
11754
|
+
!isBlockscoutLoading && projectAssets?.map((asset, index) => /* @__PURE__ */ jsx58(PortfolioItem, { isProjectAsset: true, address, asset }, `project-${asset.symbol}-${index}`)),
|
|
11755
|
+
!isBlockscoutLoading && blockscoutAssets?.length > 0 && blockscoutAssets.map((asset, index) => /* @__PURE__ */ jsx58(
|
|
11664
11756
|
PortfolioItem,
|
|
11665
11757
|
{
|
|
11666
11758
|
address,
|
|
@@ -11668,9 +11760,9 @@ function PortfolioMenu() {
|
|
|
11668
11760
|
},
|
|
11669
11761
|
`${asset.type}-${asset.address || "native"}-${asset.tokenId || index}`
|
|
11670
11762
|
)),
|
|
11671
|
-
blockscoutError && !isBlockscoutAvailable && /* @__PURE__ */
|
|
11672
|
-
/* @__PURE__ */
|
|
11673
|
-
/* @__PURE__ */
|
|
11763
|
+
blockscoutError && !isBlockscoutAvailable && /* @__PURE__ */ jsxs51(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11764
|
+
/* @__PURE__ */ jsx58(AlertCircle4, { className: "h-4 w-4 flex-shrink-0" }),
|
|
11765
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xs", children: blockscoutError.message })
|
|
11674
11766
|
] })
|
|
11675
11767
|
] })
|
|
11676
11768
|
}
|
|
@@ -11681,9 +11773,9 @@ function PortfolioMenu() {
|
|
|
11681
11773
|
init_auth();
|
|
11682
11774
|
init_keyshare();
|
|
11683
11775
|
import { useQuery as useQuery15, useQueryClient as useQueryClient17 } from "@tanstack/react-query";
|
|
11684
|
-
import
|
|
11776
|
+
import dayjs4 from "dayjs";
|
|
11685
11777
|
import { ArrowLeft as ArrowLeft11, Loader as Loader22, Trash2 as Trash22 } from "lucide-react";
|
|
11686
|
-
import { useState as
|
|
11778
|
+
import { useState as useState16 } from "react";
|
|
11687
11779
|
init_iframe_manager();
|
|
11688
11780
|
init_vaultClient();
|
|
11689
11781
|
|
|
@@ -11694,13 +11786,13 @@ var KEYSHARE_RECOVERY_STATS_QUERY = "keyshare-recovery-stats-query";
|
|
|
11694
11786
|
import { Cloud as Cloud4, Laptop, Loader as Loader21, RefreshCw as RefreshCw2, Server as Server3 } from "lucide-react";
|
|
11695
11787
|
|
|
11696
11788
|
// src/internal/assets/NegativeIcon.tsx
|
|
11697
|
-
import { jsx as
|
|
11789
|
+
import { jsx as jsx59, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
11698
11790
|
function NegativeIcon(props) {
|
|
11699
11791
|
const { width = "16", height = "16", ...rest } = props;
|
|
11700
|
-
return /* @__PURE__ */
|
|
11701
|
-
/* @__PURE__ */
|
|
11702
|
-
/* @__PURE__ */
|
|
11703
|
-
/* @__PURE__ */
|
|
11792
|
+
return /* @__PURE__ */ jsxs52("svg", { ...rest, width, height, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
11793
|
+
/* @__PURE__ */ jsx59("rect", { width: "16", height: "16", rx: "8", fill: "var(--l-pass-bg-error)" }),
|
|
11794
|
+
/* @__PURE__ */ jsx59("path", { d: "M10.8048 5.19482L5.19434 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" }),
|
|
11795
|
+
/* @__PURE__ */ jsx59("path", { d: "M5.19421 5.19482L10.8047 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" })
|
|
11704
11796
|
] });
|
|
11705
11797
|
}
|
|
11706
11798
|
|
|
@@ -11709,13 +11801,13 @@ init_vaultClient();
|
|
|
11709
11801
|
|
|
11710
11802
|
// src/internal/components/SecurityMenu/Keyshare/KeyshareStatus.tsx
|
|
11711
11803
|
import { Loader as Loader20 } from "lucide-react";
|
|
11712
|
-
import { jsx as
|
|
11804
|
+
import { jsx as jsx60, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
11713
11805
|
function KeyshareStatus(props) {
|
|
11714
11806
|
const { isLoading, content, icon: Icon2, children } = props;
|
|
11715
|
-
if (isLoading) return /* @__PURE__ */
|
|
11716
|
-
return /* @__PURE__ */
|
|
11807
|
+
if (isLoading) return /* @__PURE__ */ jsx60(Loader20, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" });
|
|
11808
|
+
return /* @__PURE__ */ jsxs53("div", { className: "group relative w-full h-full", children: [
|
|
11717
11809
|
children,
|
|
11718
|
-
/* @__PURE__ */
|
|
11810
|
+
/* @__PURE__ */ jsx60(
|
|
11719
11811
|
"div",
|
|
11720
11812
|
{
|
|
11721
11813
|
className: cn(
|
|
@@ -11723,10 +11815,10 @@ function KeyshareStatus(props) {
|
|
|
11723
11815
|
"rounded-full bg-[var(--l-pass-bg)]"
|
|
11724
11816
|
// 'border border-[var(--l-pass-bd)]'
|
|
11725
11817
|
),
|
|
11726
|
-
children: /* @__PURE__ */
|
|
11818
|
+
children: /* @__PURE__ */ jsx60(Icon2, { className: "w-4 h-4" })
|
|
11727
11819
|
}
|
|
11728
11820
|
),
|
|
11729
|
-
/* @__PURE__ */
|
|
11821
|
+
/* @__PURE__ */ jsx60(
|
|
11730
11822
|
"div",
|
|
11731
11823
|
{
|
|
11732
11824
|
style: { transform: "translateY(calc(var(--l-pass-gap) * -4))" },
|
|
@@ -11744,9 +11836,9 @@ function KeyshareStatus(props) {
|
|
|
11744
11836
|
}
|
|
11745
11837
|
|
|
11746
11838
|
// src/internal/components/SecurityMenu/Keyshare/LastBackup.tsx
|
|
11747
|
-
import
|
|
11839
|
+
import dayjs3 from "dayjs";
|
|
11748
11840
|
import { Cloud as Cloud3, HardDrive, Server as Server2 } from "lucide-react";
|
|
11749
|
-
import { Fragment as
|
|
11841
|
+
import { Fragment as Fragment20, jsx as jsx61, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
11750
11842
|
function parseOS(ua) {
|
|
11751
11843
|
if (!ua) return null;
|
|
11752
11844
|
if (ua.includes("Mac OS X")) return "macOS";
|
|
@@ -11768,113 +11860,113 @@ function LastBackup(props) {
|
|
|
11768
11860
|
} = createdRecoveryStats || {};
|
|
11769
11861
|
const hasBackupData = backup?.server?.enabled && backup.server.lastBackup || !backup.server.lastBackup && recoveryCreatedAt || backup.cloud.enabled && backup.cloud?.lastBackup || backup.local.enabled && backup.local.lastBackup;
|
|
11770
11862
|
if (!hasBackupData) return null;
|
|
11771
|
-
return /* @__PURE__ */
|
|
11772
|
-
/* @__PURE__ */
|
|
11773
|
-
/* @__PURE__ */
|
|
11774
|
-
/* @__PURE__ */
|
|
11863
|
+
return /* @__PURE__ */ jsxs54(Highlight, { type: "info", className: "flex flex-col gap-[var(--l-pass-gap)] text-[10px] leading-tight", children: [
|
|
11864
|
+
/* @__PURE__ */ jsxs54("span", { className: "flex items-center gap-[var(--l-pass-gap)] font-bold text-xs leading-4", children: [
|
|
11865
|
+
/* @__PURE__ */ jsx61(Server2, { className: "w-4 h-4 inline" }),
|
|
11866
|
+
/* @__PURE__ */ jsx61("span", { children: "Last Keyshare Vault Backup" })
|
|
11775
11867
|
] }),
|
|
11776
|
-
recoveryCreatedAt && /* @__PURE__ */
|
|
11777
|
-
/* @__PURE__ */
|
|
11778
|
-
/* @__PURE__ */
|
|
11868
|
+
recoveryCreatedAt && /* @__PURE__ */ jsxs54(Fragment20, { children: [
|
|
11869
|
+
/* @__PURE__ */ jsx61("span", { children: dayjs3(recoveryCreatedAt).format("MMMM DD, YYYY HH:mm") }),
|
|
11870
|
+
/* @__PURE__ */ jsx61("span", { children: `${recoveryBrowser || "UNKNOWN"} browser at ${recoveryDeviceName || "UNKNOWN"} device under ${parseOS(recoveryUa) || "UNKNOWN"} OS` })
|
|
11779
11871
|
] }),
|
|
11780
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */
|
|
11781
|
-
/* @__PURE__ */
|
|
11782
|
-
/* @__PURE__ */
|
|
11872
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs54("div", { className: "flex items-center gap-1", children: [
|
|
11873
|
+
/* @__PURE__ */ jsx61(Cloud3, { className: "h-3 w-3" }),
|
|
11874
|
+
/* @__PURE__ */ jsxs54("span", { children: [
|
|
11783
11875
|
"Cloud: ",
|
|
11784
|
-
|
|
11876
|
+
dayjs3(backup.cloud.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11785
11877
|
] })
|
|
11786
11878
|
] }),
|
|
11787
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */
|
|
11788
|
-
/* @__PURE__ */
|
|
11789
|
-
/* @__PURE__ */
|
|
11879
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs54("div", { className: "flex items-center gap-1", children: [
|
|
11880
|
+
/* @__PURE__ */ jsx61(HardDrive, { className: "h-3 w-3" }),
|
|
11881
|
+
/* @__PURE__ */ jsxs54("span", { children: [
|
|
11790
11882
|
"Local: ",
|
|
11791
|
-
|
|
11883
|
+
dayjs3(backup.local.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11792
11884
|
] })
|
|
11793
11885
|
] })
|
|
11794
11886
|
] });
|
|
11795
11887
|
}
|
|
11796
11888
|
|
|
11797
11889
|
// src/internal/components/SecurityMenu/Keyshare/Keyshare.tsx
|
|
11798
|
-
import { Fragment as
|
|
11890
|
+
import { Fragment as Fragment21, jsx as jsx62, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
11799
11891
|
function Keyshare(props) {
|
|
11800
11892
|
const { userId, serverHasKeyshare, localInfo, hasServerBackup, createdRecoveryStats, isLoading, refresh } = props;
|
|
11801
11893
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
11802
|
-
return /* @__PURE__ */
|
|
11803
|
-
/* @__PURE__ */
|
|
11804
|
-
/* @__PURE__ */
|
|
11805
|
-
/* @__PURE__ */
|
|
11894
|
+
return /* @__PURE__ */ jsxs55(Fragment21, { children: [
|
|
11895
|
+
/* @__PURE__ */ jsxs55("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
11896
|
+
/* @__PURE__ */ jsx62("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Keyshare Status" }),
|
|
11897
|
+
/* @__PURE__ */ jsx62(Button, { variant: "ghost", size: "icon", title: "Refresh", disabled: isLoading, onClick: refresh, children: isLoading ? /* @__PURE__ */ jsx62(Loader21, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx62(RefreshCw2, { className: "h-4 w-4" }) })
|
|
11806
11898
|
] }),
|
|
11807
|
-
/* @__PURE__ */
|
|
11808
|
-
/* @__PURE__ */
|
|
11899
|
+
/* @__PURE__ */ jsxs55("div", { className: "grid grid-cols-3 gap-[var(--l-pass-gap)] px-[var(--l-pass-gap)]", children: [
|
|
11900
|
+
/* @__PURE__ */ jsx62(
|
|
11809
11901
|
KeyshareStatus,
|
|
11810
11902
|
{
|
|
11811
11903
|
content: serverHasKeyshare ? "Your Server Security Key Share is safe and ready" : "Server Security Key Share is missing",
|
|
11812
11904
|
icon: serverHasKeyshare ? PositiveIcon : NegativeIcon,
|
|
11813
|
-
children: /* @__PURE__ */
|
|
11905
|
+
children: /* @__PURE__ */ jsxs55(
|
|
11814
11906
|
Highlight,
|
|
11815
11907
|
{
|
|
11816
11908
|
type: serverHasKeyshare ? "success" : "warning",
|
|
11817
11909
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11818
11910
|
children: [
|
|
11819
|
-
/* @__PURE__ */
|
|
11820
|
-
/* @__PURE__ */
|
|
11911
|
+
/* @__PURE__ */ jsx62(Cloud4, { className: "h-6 w-6" }),
|
|
11912
|
+
/* @__PURE__ */ jsx62("span", { className: "text-[10px] font-medium leading-4", children: "Server Share" })
|
|
11821
11913
|
]
|
|
11822
11914
|
}
|
|
11823
11915
|
)
|
|
11824
11916
|
}
|
|
11825
11917
|
),
|
|
11826
|
-
/* @__PURE__ */
|
|
11918
|
+
/* @__PURE__ */ jsx62(
|
|
11827
11919
|
KeyshareStatus,
|
|
11828
11920
|
{
|
|
11829
11921
|
content: localInfo?.hasKeyshare ? "Your Private Local Security Key Share is safe and ready" : "Private Local Security Key Share is missing",
|
|
11830
11922
|
icon: localInfo?.hasKeyshare ? PositiveIcon : NegativeIcon,
|
|
11831
|
-
children: /* @__PURE__ */
|
|
11923
|
+
children: /* @__PURE__ */ jsxs55(
|
|
11832
11924
|
Highlight,
|
|
11833
11925
|
{
|
|
11834
11926
|
type: localInfo?.hasKeyshare ? "success" : "warning",
|
|
11835
11927
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11836
11928
|
children: [
|
|
11837
|
-
/* @__PURE__ */
|
|
11838
|
-
/* @__PURE__ */
|
|
11929
|
+
/* @__PURE__ */ jsx62(Laptop, { className: "h-6 w-6" }),
|
|
11930
|
+
/* @__PURE__ */ jsx62("span", { className: "text-[10px] font-medium leading-4", children: "Local Share" })
|
|
11839
11931
|
]
|
|
11840
11932
|
}
|
|
11841
11933
|
)
|
|
11842
11934
|
}
|
|
11843
11935
|
),
|
|
11844
|
-
/* @__PURE__ */
|
|
11936
|
+
/* @__PURE__ */ jsx62(
|
|
11845
11937
|
KeyshareStatus,
|
|
11846
11938
|
{
|
|
11847
11939
|
content: hasServerBackup ? "Security Key Share Vault Backup exists and ready" : "Security Key Share Vault Backup Missing. Create one to ensure your data is safe.",
|
|
11848
11940
|
icon: hasServerBackup ? PositiveIcon : NegativeIcon,
|
|
11849
|
-
children: /* @__PURE__ */
|
|
11941
|
+
children: /* @__PURE__ */ jsxs55(
|
|
11850
11942
|
Highlight,
|
|
11851
11943
|
{
|
|
11852
11944
|
type: hasServerBackup ? "success" : "warning",
|
|
11853
11945
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11854
11946
|
children: [
|
|
11855
|
-
/* @__PURE__ */
|
|
11856
|
-
/* @__PURE__ */
|
|
11947
|
+
/* @__PURE__ */ jsx62(Server3, { className: "h-6 w-6" }),
|
|
11948
|
+
/* @__PURE__ */ jsx62("span", { className: "text-[10px] font-medium leading-4", children: "Backup Vault" })
|
|
11857
11949
|
]
|
|
11858
11950
|
}
|
|
11859
11951
|
)
|
|
11860
11952
|
}
|
|
11861
11953
|
)
|
|
11862
11954
|
] }),
|
|
11863
|
-
createdRecoveryStats?.at && /* @__PURE__ */
|
|
11864
|
-
/* @__PURE__ */
|
|
11955
|
+
createdRecoveryStats?.at && /* @__PURE__ */ jsx62(LastBackup, { backup, createdRecoveryStats }),
|
|
11956
|
+
/* @__PURE__ */ jsx62("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } })
|
|
11865
11957
|
] });
|
|
11866
11958
|
}
|
|
11867
11959
|
|
|
11868
11960
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
11869
|
-
import { Fragment as
|
|
11961
|
+
import { Fragment as Fragment22, jsx as jsx63, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
11870
11962
|
function SecurityMenu() {
|
|
11871
11963
|
const qc = useQueryClient17();
|
|
11872
11964
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11873
11965
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11874
11966
|
const userId = jwtTokenManager2.getUserId();
|
|
11875
11967
|
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
11876
|
-
const [isRemoving, setIsRemoving] =
|
|
11877
|
-
const [appToRemove, setAppToRemove] =
|
|
11968
|
+
const [isRemoving, setIsRemoving] = useState16(false);
|
|
11969
|
+
const [appToRemove, setAppToRemove] = useState16(null);
|
|
11878
11970
|
const { data: recoveryData, isFetching: isRecoveryLoading } = useQuery15({
|
|
11879
11971
|
enabled: !!userId,
|
|
11880
11972
|
queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
|
|
@@ -11914,7 +12006,7 @@ function SecurityMenu() {
|
|
|
11914
12006
|
setIsRemoving(false);
|
|
11915
12007
|
}
|
|
11916
12008
|
};
|
|
11917
|
-
return /* @__PURE__ */
|
|
12009
|
+
return /* @__PURE__ */ jsx63(
|
|
11918
12010
|
"div",
|
|
11919
12011
|
{
|
|
11920
12012
|
style: {
|
|
@@ -11922,9 +12014,9 @@ function SecurityMenu() {
|
|
|
11922
12014
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
11923
12015
|
},
|
|
11924
12016
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11925
|
-
children: /* @__PURE__ */
|
|
11926
|
-
/* @__PURE__ */
|
|
11927
|
-
/* @__PURE__ */
|
|
12017
|
+
children: /* @__PURE__ */ jsxs56(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12018
|
+
/* @__PURE__ */ jsxs56("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12019
|
+
/* @__PURE__ */ jsx63(
|
|
11928
12020
|
Button,
|
|
11929
12021
|
{
|
|
11930
12022
|
variant: "ghost",
|
|
@@ -11934,13 +12026,13 @@ function SecurityMenu() {
|
|
|
11934
12026
|
if (!!appToRemove) setAppToRemove(null);
|
|
11935
12027
|
else setPage("settings" /* SETTINGS */);
|
|
11936
12028
|
},
|
|
11937
|
-
children: /* @__PURE__ */
|
|
12029
|
+
children: /* @__PURE__ */ jsx63(ArrowLeft11, { className: "h-4 w-4" })
|
|
11938
12030
|
}
|
|
11939
12031
|
),
|
|
11940
|
-
/* @__PURE__ */
|
|
12032
|
+
/* @__PURE__ */ jsx63("span", { className: "text-xl font-semibold", children: "Security" })
|
|
11941
12033
|
] }),
|
|
11942
|
-
!appToRemove && /* @__PURE__ */
|
|
11943
|
-
/* @__PURE__ */
|
|
12034
|
+
!appToRemove && /* @__PURE__ */ jsxs56(Fragment22, { children: [
|
|
12035
|
+
/* @__PURE__ */ jsx63(
|
|
11944
12036
|
Keyshare,
|
|
11945
12037
|
{
|
|
11946
12038
|
userId,
|
|
@@ -11952,31 +12044,31 @@ function SecurityMenu() {
|
|
|
11952
12044
|
refresh: () => qc.invalidateQueries({ queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId] })
|
|
11953
12045
|
}
|
|
11954
12046
|
),
|
|
11955
|
-
trustedApps.length > 0 && /* @__PURE__ */
|
|
11956
|
-
/* @__PURE__ */
|
|
11957
|
-
/* @__PURE__ */
|
|
11958
|
-
/* @__PURE__ */
|
|
12047
|
+
trustedApps.length > 0 && /* @__PURE__ */ jsxs56(Fragment22, { children: [
|
|
12048
|
+
/* @__PURE__ */ jsxs56("div", { className: "w-full space-y-2", children: [
|
|
12049
|
+
/* @__PURE__ */ jsx63("div", { className: "font-medium text-xs text-[var(--l-pass-fg)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
12050
|
+
/* @__PURE__ */ jsx63("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs56(
|
|
11959
12051
|
"div",
|
|
11960
12052
|
{
|
|
11961
12053
|
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)]",
|
|
11962
12054
|
children: [
|
|
11963
|
-
app.appLogo ? /* @__PURE__ */
|
|
12055
|
+
app.appLogo ? /* @__PURE__ */ jsx63(
|
|
11964
12056
|
"img",
|
|
11965
12057
|
{
|
|
11966
12058
|
src: app.appLogo,
|
|
11967
12059
|
alt: app.appName,
|
|
11968
12060
|
className: "w-8 h-8 rounded-[var(--l-pass-el-bdrs)] object-cover flex-shrink-0"
|
|
11969
12061
|
}
|
|
11970
|
-
) : /* @__PURE__ */
|
|
11971
|
-
/* @__PURE__ */
|
|
11972
|
-
/* @__PURE__ */
|
|
11973
|
-
/* @__PURE__ */
|
|
11974
|
-
/* @__PURE__ */
|
|
12062
|
+
) : /* @__PURE__ */ jsx63("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__ */ jsx63("span", { className: "text-sm", children: "\u{1F517}" }) }),
|
|
12063
|
+
/* @__PURE__ */ jsxs56("div", { className: "flex-1 min-w-0", children: [
|
|
12064
|
+
/* @__PURE__ */ jsx63("div", { className: "font-semibold truncate", children: app.appName || new URL(app.origin).hostname }),
|
|
12065
|
+
/* @__PURE__ */ jsx63("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: new URL(app.origin).hostname }),
|
|
12066
|
+
/* @__PURE__ */ jsxs56("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: [
|
|
11975
12067
|
"Trusted: ",
|
|
11976
|
-
|
|
12068
|
+
dayjs4(app.trustedAt).format("MMM D, YYYY HH:mm")
|
|
11977
12069
|
] })
|
|
11978
12070
|
] }),
|
|
11979
|
-
/* @__PURE__ */
|
|
12071
|
+
/* @__PURE__ */ jsx63(
|
|
11980
12072
|
Button,
|
|
11981
12073
|
{
|
|
11982
12074
|
variant: "ghost",
|
|
@@ -11990,7 +12082,7 @@ function SecurityMenu() {
|
|
|
11990
12082
|
appName: app.appName,
|
|
11991
12083
|
appLogo: app.appLogo
|
|
11992
12084
|
}),
|
|
11993
|
-
children: /* @__PURE__ */
|
|
12085
|
+
children: /* @__PURE__ */ jsx63(Trash22, { className: "h-4 w-4" })
|
|
11994
12086
|
}
|
|
11995
12087
|
)
|
|
11996
12088
|
]
|
|
@@ -11998,37 +12090,37 @@ function SecurityMenu() {
|
|
|
11998
12090
|
index
|
|
11999
12091
|
)) })
|
|
12000
12092
|
] }),
|
|
12001
|
-
/* @__PURE__ */
|
|
12093
|
+
/* @__PURE__ */ jsx63("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } })
|
|
12002
12094
|
] })
|
|
12003
12095
|
] }),
|
|
12004
|
-
!!appToRemove && /* @__PURE__ */
|
|
12005
|
-
/* @__PURE__ */
|
|
12006
|
-
/* @__PURE__ */
|
|
12007
|
-
/* @__PURE__ */
|
|
12008
|
-
appToRemove.appLogo ? /* @__PURE__ */
|
|
12009
|
-
/* @__PURE__ */
|
|
12010
|
-
/* @__PURE__ */
|
|
12011
|
-
/* @__PURE__ */
|
|
12096
|
+
!!appToRemove && /* @__PURE__ */ jsxs56("div", { className: "w-full", children: [
|
|
12097
|
+
/* @__PURE__ */ jsxs56("div", { className: "text-center", children: [
|
|
12098
|
+
/* @__PURE__ */ jsx63("div", { className: "text-lg font-semibold mb-2", children: "Remove Trusted App?" }),
|
|
12099
|
+
/* @__PURE__ */ jsxs56("div", { className: "flex items-center justify-center gap-2 mb-3", children: [
|
|
12100
|
+
appToRemove.appLogo ? /* @__PURE__ */ jsx63("img", { src: appToRemove.appLogo, alt: "", className: "w-10 h-10 rounded-md object-cover" }) : /* @__PURE__ */ jsx63("div", { className: "w-10 h-10 rounded-md bg-[var(--l-pass-bg-muted)] flex items-center justify-center", children: /* @__PURE__ */ jsx63("span", { className: "text-lg", children: "\u{1F517}" }) }),
|
|
12101
|
+
/* @__PURE__ */ jsxs56("div", { className: "text-left", children: [
|
|
12102
|
+
/* @__PURE__ */ jsx63("div", { className: "font-medium", children: appToRemove.appName || appToRemove.hostname }),
|
|
12103
|
+
/* @__PURE__ */ jsx63("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: appToRemove.hostname })
|
|
12012
12104
|
] })
|
|
12013
12105
|
] }),
|
|
12014
|
-
/* @__PURE__ */
|
|
12015
|
-
/* @__PURE__ */
|
|
12016
|
-
/* @__PURE__ */
|
|
12017
|
-
/* @__PURE__ */
|
|
12018
|
-
/* @__PURE__ */
|
|
12106
|
+
/* @__PURE__ */ jsxs56("div", { className: "text-xs text-[var(--l-pass-fg-muted)] text-left space-y-1 mb-4", children: [
|
|
12107
|
+
/* @__PURE__ */ jsx63("p", { children: "After removing this application:" }),
|
|
12108
|
+
/* @__PURE__ */ jsxs56("ul", { className: "list-disc list-inside ml-2 space-y-0.5", children: [
|
|
12109
|
+
/* @__PURE__ */ jsx63("li", { children: "All transactions will require confirmation" }),
|
|
12110
|
+
/* @__PURE__ */ jsx63("li", { children: 'You can re-add it anytime by checking "Trust this app"' })
|
|
12019
12111
|
] })
|
|
12020
12112
|
] })
|
|
12021
12113
|
] }),
|
|
12022
|
-
/* @__PURE__ */
|
|
12023
|
-
/* @__PURE__ */
|
|
12024
|
-
/* @__PURE__ */
|
|
12114
|
+
/* @__PURE__ */ jsxs56("div", { className: "flex gap-2", children: [
|
|
12115
|
+
/* @__PURE__ */ jsx63(Button, { variant: "outline", className: "flex-1", onClick: () => setAppToRemove(null), disabled: isRemoving, children: "Cancel" }),
|
|
12116
|
+
/* @__PURE__ */ jsx63(
|
|
12025
12117
|
Button,
|
|
12026
12118
|
{
|
|
12027
12119
|
variant: "default",
|
|
12028
12120
|
className: "flex-1 bg-[var(--l-pass-error)] hover:bg-[var(--l-pass-error)]/60 active:bg-[var(--l-pass-error)]/40",
|
|
12029
12121
|
onClick: handleRemoveTrustedApp,
|
|
12030
12122
|
disabled: isRemoving,
|
|
12031
|
-
children: isRemoving ? /* @__PURE__ */
|
|
12123
|
+
children: isRemoving ? /* @__PURE__ */ jsx63(Loader22, { className: "h-4 w-4 animate-spin" }) : "Remove"
|
|
12032
12124
|
}
|
|
12033
12125
|
)
|
|
12034
12126
|
] })
|
|
@@ -12041,9 +12133,9 @@ function SecurityMenu() {
|
|
|
12041
12133
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
12042
12134
|
import {
|
|
12043
12135
|
AlertCircle as AlertCircle5,
|
|
12044
|
-
AlertTriangle as
|
|
12136
|
+
AlertTriangle as AlertTriangle5,
|
|
12045
12137
|
ArrowLeft as ArrowLeft12,
|
|
12046
|
-
AtSign,
|
|
12138
|
+
AtSign as AtSign2,
|
|
12047
12139
|
CheckCircle2 as CheckCircle23,
|
|
12048
12140
|
Image as ImageIcon3,
|
|
12049
12141
|
Loader as Loader23,
|
|
@@ -12052,7 +12144,7 @@ import {
|
|
|
12052
12144
|
Sparkles as Sparkles3,
|
|
12053
12145
|
Wallet as Wallet3
|
|
12054
12146
|
} from "lucide-react";
|
|
12055
|
-
import { useEffect as useEffect28, useMemo as useMemo6, useState as
|
|
12147
|
+
import { useEffect as useEffect28, useMemo as useMemo6, useState as useState20 } from "react";
|
|
12056
12148
|
import { formatUnits as formatUnits5, isAddress as isAddress2, parseUnits as parseUnits2 } from "viem";
|
|
12057
12149
|
|
|
12058
12150
|
// src/hooks/useErc3643Compliance.ts
|
|
@@ -12119,7 +12211,7 @@ function useErc3643Compliance(options) {
|
|
|
12119
12211
|
init_nickname();
|
|
12120
12212
|
init_profile();
|
|
12121
12213
|
import { useQuery as useQuery16 } from "@tanstack/react-query";
|
|
12122
|
-
import { useState as
|
|
12214
|
+
import { useState as useState17, useEffect as useEffect26, useMemo as useMemo5 } from "react";
|
|
12123
12215
|
|
|
12124
12216
|
// src/internal/lib/nickname-fingerprint.ts
|
|
12125
12217
|
import { keccak256 as keccak2562, getAddress as getAddress2 } from "viem";
|
|
@@ -12207,8 +12299,8 @@ function looksLikeNickname(input) {
|
|
|
12207
12299
|
}
|
|
12208
12300
|
function useNicknameResolve(input, options) {
|
|
12209
12301
|
const { enabled = true, chainId } = options;
|
|
12210
|
-
const [debouncedInput, setDebouncedInput] =
|
|
12211
|
-
const [isDebouncing, setIsDebouncing] =
|
|
12302
|
+
const [debouncedInput, setDebouncedInput] = useState17("");
|
|
12303
|
+
const [isDebouncing, setIsDebouncing] = useState17(false);
|
|
12212
12304
|
const normalized = normalizeNickname(input);
|
|
12213
12305
|
const isNicknameInput = looksLikeNickname(input) && normalized.length >= 3;
|
|
12214
12306
|
useEffect26(() => {
|
|
@@ -12261,7 +12353,7 @@ function useNicknameResolve(input, options) {
|
|
|
12261
12353
|
}
|
|
12262
12354
|
|
|
12263
12355
|
// src/hooks/useSendTransaction.ts
|
|
12264
|
-
import { useCallback as
|
|
12356
|
+
import { useCallback as useCallback16, useState as useState18 } from "react";
|
|
12265
12357
|
import { encodeFunctionData as encodeFunctionData2, isAddress, parseEther as parseEther2, parseUnits } from "viem";
|
|
12266
12358
|
init_account();
|
|
12267
12359
|
var ERC20_TRANSFER_ABI = [
|
|
@@ -12304,10 +12396,10 @@ var ERC1155_SAFE_TRANSFER_ABI = [
|
|
|
12304
12396
|
function useSendTransaction() {
|
|
12305
12397
|
const session = useLumiaPassportSession((st) => st.session);
|
|
12306
12398
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12307
|
-
const [isLoading, setIsLoading] =
|
|
12308
|
-
const [error, setError] =
|
|
12309
|
-
const [userOpHash, setUserOpHash] =
|
|
12310
|
-
const sendTransaction =
|
|
12399
|
+
const [isLoading, setIsLoading] = useState18(false);
|
|
12400
|
+
const [error, setError] = useState18(null);
|
|
12401
|
+
const [userOpHash, setUserOpHash] = useState18(null);
|
|
12402
|
+
const sendTransaction = useCallback16(
|
|
12311
12403
|
async (params) => {
|
|
12312
12404
|
if (!session || !address) {
|
|
12313
12405
|
setError("No active session");
|
|
@@ -12406,7 +12498,7 @@ function useSendTransaction() {
|
|
|
12406
12498
|
},
|
|
12407
12499
|
[session, address]
|
|
12408
12500
|
);
|
|
12409
|
-
const reset =
|
|
12501
|
+
const reset = useCallback16(() => {
|
|
12410
12502
|
setError(null);
|
|
12411
12503
|
setUserOpHash(null);
|
|
12412
12504
|
setIsLoading(false);
|
|
@@ -12425,9 +12517,9 @@ init_base();
|
|
|
12425
12517
|
|
|
12426
12518
|
// src/internal/components/SendRecieveMenu/AssetSelector.tsx
|
|
12427
12519
|
import { ChevronDown, Image as ImageIcon2, Shield as Shield2, Sparkles as Sparkles2, X as X4 } from "lucide-react";
|
|
12428
|
-
import { useState as
|
|
12520
|
+
import { useState as useState19, useRef as useRef14, useEffect as useEffect27 } from "react";
|
|
12429
12521
|
import { formatUnits as formatUnits4 } from "viem";
|
|
12430
|
-
import { Fragment as
|
|
12522
|
+
import { Fragment as Fragment23, jsx as jsx64, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
12431
12523
|
function isNftAsset2(asset) {
|
|
12432
12524
|
return asset.type === "erc721" || asset.type === "erc1155";
|
|
12433
12525
|
}
|
|
@@ -12448,15 +12540,15 @@ function getAssetBalance(asset) {
|
|
|
12448
12540
|
return balance.toFixed(4);
|
|
12449
12541
|
}
|
|
12450
12542
|
function AssetIcon({ asset, size = "sm" }) {
|
|
12451
|
-
const [imageError, setImageError] =
|
|
12543
|
+
const [imageError, setImageError] = useState19(false);
|
|
12452
12544
|
const sizeClasses = size === "sm" ? "w-6 h-6" : "w-10 h-10";
|
|
12453
12545
|
const textSize = size === "sm" ? "text-xs" : "text-sm";
|
|
12454
12546
|
const isNft = isNftAsset2(asset);
|
|
12455
12547
|
const nftImage = asset.image || asset.nftMetadata?.image;
|
|
12456
12548
|
const isSecurity = isSecurityToken2(asset);
|
|
12457
12549
|
if (isNft && nftImage && !imageError) {
|
|
12458
|
-
return /* @__PURE__ */
|
|
12459
|
-
/* @__PURE__ */
|
|
12550
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-[var(--l-pass-el-bdrs)] overflow-hidden relative flex-shrink-0"), children: [
|
|
12551
|
+
/* @__PURE__ */ jsx64(
|
|
12460
12552
|
"img",
|
|
12461
12553
|
{
|
|
12462
12554
|
src: nftImage,
|
|
@@ -12465,18 +12557,18 @@ function AssetIcon({ asset, size = "sm" }) {
|
|
|
12465
12557
|
onError: () => setImageError(true)
|
|
12466
12558
|
}
|
|
12467
12559
|
),
|
|
12468
|
-
/* @__PURE__ */
|
|
12560
|
+
/* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-[var(--l-pass-accent)] flex items-center justify-center", children: /* @__PURE__ */ jsx64(Sparkles2, { className: "w-2 h-2 text-[var(--l-pass-fg-inverted)]" }) })
|
|
12469
12561
|
] });
|
|
12470
12562
|
}
|
|
12471
12563
|
if (isNft) {
|
|
12472
|
-
return /* @__PURE__ */
|
|
12473
|
-
/* @__PURE__ */
|
|
12474
|
-
/* @__PURE__ */
|
|
12564
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-fg)] flex items-center justify-center relative flex-shrink-0"), children: [
|
|
12565
|
+
/* @__PURE__ */ jsx64(ImageIcon2, { className: cn(size === "sm" ? "w-3 h-3" : "w-5 h-5", "text-[var(--l-pass-fg-inverted)]") }),
|
|
12566
|
+
/* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-[var(--l-pass-accent)] flex items-center justify-center", children: /* @__PURE__ */ jsx64(Sparkles2, { className: "w-2 h-2 text-[var(--l-pass-fg-inverted)]" }) })
|
|
12475
12567
|
] });
|
|
12476
12568
|
}
|
|
12477
12569
|
if (asset.logo && !imageError) {
|
|
12478
|
-
return /* @__PURE__ */
|
|
12479
|
-
/* @__PURE__ */
|
|
12570
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-full overflow-hidden relative flex-shrink-0"), children: [
|
|
12571
|
+
/* @__PURE__ */ jsx64(
|
|
12480
12572
|
"img",
|
|
12481
12573
|
{
|
|
12482
12574
|
src: asset.logo,
|
|
@@ -12485,12 +12577,12 @@ function AssetIcon({ asset, size = "sm" }) {
|
|
|
12485
12577
|
onError: () => setImageError(true)
|
|
12486
12578
|
}
|
|
12487
12579
|
),
|
|
12488
|
-
isSecurity && /* @__PURE__ */
|
|
12580
|
+
isSecurity && /* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-amber-500 flex items-center justify-center", children: /* @__PURE__ */ jsx64(Shield2, { className: "w-2 h-2 text-white" }) })
|
|
12489
12581
|
] });
|
|
12490
12582
|
}
|
|
12491
|
-
return /* @__PURE__ */
|
|
12492
|
-
/* @__PURE__ */
|
|
12493
|
-
isSecurity && /* @__PURE__ */
|
|
12583
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center relative flex-shrink-0"), children: [
|
|
12584
|
+
/* @__PURE__ */ jsx64("span", { className: cn("text-[var(--l-pass-fg-inverted)] font-bold", textSize), children: asset.symbol.charAt(0) }),
|
|
12585
|
+
isSecurity && /* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-amber-500 flex items-center justify-center", children: /* @__PURE__ */ jsx64(Shield2, { className: "w-2 h-2 text-white" }) })
|
|
12494
12586
|
] });
|
|
12495
12587
|
}
|
|
12496
12588
|
function AssetListItem({ asset, onSelect, isSelected }) {
|
|
@@ -12500,7 +12592,7 @@ function AssetListItem({ asset, onSelect, isSelected }) {
|
|
|
12500
12592
|
e.stopPropagation();
|
|
12501
12593
|
onSelect();
|
|
12502
12594
|
};
|
|
12503
|
-
return /* @__PURE__ */
|
|
12595
|
+
return /* @__PURE__ */ jsxs57(
|
|
12504
12596
|
"button",
|
|
12505
12597
|
{
|
|
12506
12598
|
type: "button",
|
|
@@ -12511,16 +12603,16 @@ function AssetListItem({ asset, onSelect, isSelected }) {
|
|
|
12511
12603
|
),
|
|
12512
12604
|
onClick: handleClick,
|
|
12513
12605
|
children: [
|
|
12514
|
-
/* @__PURE__ */
|
|
12515
|
-
/* @__PURE__ */
|
|
12516
|
-
/* @__PURE__ */
|
|
12517
|
-
/* @__PURE__ */
|
|
12606
|
+
/* @__PURE__ */ jsx64(AssetIcon, { asset, size: "md" }),
|
|
12607
|
+
/* @__PURE__ */ jsxs57("div", { className: "flex-1 min-w-0 text-left", children: [
|
|
12608
|
+
/* @__PURE__ */ jsx64("div", { className: "font-semibold text-[var(--l-pass-fg)] truncate", children: isNft ? asset.nftMetadata?.name || asset.name : asset.name }),
|
|
12609
|
+
/* @__PURE__ */ jsx64("div", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: isNft ? /* @__PURE__ */ jsxs57(Fragment23, { children: [
|
|
12518
12610
|
asset.symbol,
|
|
12519
|
-
asset.tokenId && /* @__PURE__ */
|
|
12611
|
+
asset.tokenId && /* @__PURE__ */ jsxs57("span", { className: "ml-1", children: [
|
|
12520
12612
|
"#",
|
|
12521
12613
|
asset.tokenId.length > 6 ? `${asset.tokenId.slice(0, 4)}...` : asset.tokenId
|
|
12522
12614
|
] })
|
|
12523
|
-
] }) : /* @__PURE__ */
|
|
12615
|
+
] }) : /* @__PURE__ */ jsxs57(Fragment23, { children: [
|
|
12524
12616
|
getAssetBalance(asset),
|
|
12525
12617
|
" ",
|
|
12526
12618
|
asset.symbol
|
|
@@ -12531,7 +12623,7 @@ function AssetListItem({ asset, onSelect, isSelected }) {
|
|
|
12531
12623
|
);
|
|
12532
12624
|
}
|
|
12533
12625
|
function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
12534
|
-
const [isOpen, setIsOpen] =
|
|
12626
|
+
const [isOpen, setIsOpen] = useState19(false);
|
|
12535
12627
|
const dropdownRef = useRef14(null);
|
|
12536
12628
|
const buttonRef = useRef14(null);
|
|
12537
12629
|
useEffect27(() => {
|
|
@@ -12574,8 +12666,8 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12574
12666
|
return null;
|
|
12575
12667
|
}
|
|
12576
12668
|
const isNft = isNftAsset2(selectedAsset);
|
|
12577
|
-
return /* @__PURE__ */
|
|
12578
|
-
/* @__PURE__ */
|
|
12669
|
+
return /* @__PURE__ */ jsxs57("div", { className: "relative", style: { zIndex: isOpen ? 100 : "auto" }, children: [
|
|
12670
|
+
/* @__PURE__ */ jsxs57(
|
|
12579
12671
|
"button",
|
|
12580
12672
|
{
|
|
12581
12673
|
ref: buttonRef,
|
|
@@ -12589,13 +12681,13 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12589
12681
|
),
|
|
12590
12682
|
onClick: handleToggle,
|
|
12591
12683
|
children: [
|
|
12592
|
-
/* @__PURE__ */
|
|
12593
|
-
/* @__PURE__ */
|
|
12594
|
-
/* @__PURE__ */
|
|
12684
|
+
/* @__PURE__ */ jsx64(AssetIcon, { asset: selectedAsset, size: "sm" }),
|
|
12685
|
+
/* @__PURE__ */ jsx64("span", { className: "text-sm font-semibold text-[var(--l-pass-fg)] max-w-[80px] truncate", children: isNft ? selectedAsset.nftMetadata?.name || selectedAsset.symbol : selectedAsset.symbol }),
|
|
12686
|
+
/* @__PURE__ */ jsx64(ChevronDown, { className: cn("w-4 h-4 text-[var(--l-pass-fg-muted)] transition-transform", isOpen && "rotate-180") })
|
|
12595
12687
|
]
|
|
12596
12688
|
}
|
|
12597
12689
|
),
|
|
12598
|
-
isOpen && /* @__PURE__ */
|
|
12690
|
+
isOpen && /* @__PURE__ */ jsxs57(
|
|
12599
12691
|
"div",
|
|
12600
12692
|
{
|
|
12601
12693
|
ref: dropdownRef,
|
|
@@ -12608,12 +12700,12 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12608
12700
|
style: { zIndex: 100 },
|
|
12609
12701
|
onClick: (e) => e.stopPropagation(),
|
|
12610
12702
|
children: [
|
|
12611
|
-
/* @__PURE__ */
|
|
12612
|
-
/* @__PURE__ */
|
|
12613
|
-
/* @__PURE__ */
|
|
12703
|
+
/* @__PURE__ */ jsxs57("div", { className: "sticky top-0 flex items-center justify-between px-3 py-2 bg-[var(--l-pass-bg)] border-b border-[var(--l-pass-bd)]", children: [
|
|
12704
|
+
/* @__PURE__ */ jsx64("span", { className: "text-sm font-semibold text-[var(--l-pass-fg)]", children: "Select Asset" }),
|
|
12705
|
+
/* @__PURE__ */ jsx64(Button, { variant: "ghost", size: "icon", onClick: handleClose, children: /* @__PURE__ */ jsx64(X4, { className: "w-4 h-4" }) })
|
|
12614
12706
|
] }),
|
|
12615
|
-
/* @__PURE__ */
|
|
12616
|
-
nativeAssets.length > 0 && /* @__PURE__ */
|
|
12707
|
+
/* @__PURE__ */ jsxs57("div", { className: "p-2", children: [
|
|
12708
|
+
nativeAssets.length > 0 && /* @__PURE__ */ jsx64(Fragment23, { children: nativeAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12617
12709
|
AssetListItem,
|
|
12618
12710
|
{
|
|
12619
12711
|
asset,
|
|
@@ -12622,9 +12714,9 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12622
12714
|
},
|
|
12623
12715
|
`native-${asset.symbol}`
|
|
12624
12716
|
)) }),
|
|
12625
|
-
tokenAssets.length > 0 && /* @__PURE__ */
|
|
12626
|
-
/* @__PURE__ */
|
|
12627
|
-
tokenAssets.map((asset) => /* @__PURE__ */
|
|
12717
|
+
tokenAssets.length > 0 && /* @__PURE__ */ jsxs57(Fragment23, { children: [
|
|
12718
|
+
/* @__PURE__ */ jsx64("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "Tokens" }),
|
|
12719
|
+
tokenAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12628
12720
|
AssetListItem,
|
|
12629
12721
|
{
|
|
12630
12722
|
asset,
|
|
@@ -12634,9 +12726,9 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12634
12726
|
`token-${asset.address}`
|
|
12635
12727
|
))
|
|
12636
12728
|
] }),
|
|
12637
|
-
securityAssets.length > 0 && /* @__PURE__ */
|
|
12638
|
-
/* @__PURE__ */
|
|
12639
|
-
securityAssets.map((asset) => /* @__PURE__ */
|
|
12729
|
+
securityAssets.length > 0 && /* @__PURE__ */ jsxs57(Fragment23, { children: [
|
|
12730
|
+
/* @__PURE__ */ jsx64("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "Security Tokens" }),
|
|
12731
|
+
securityAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12640
12732
|
AssetListItem,
|
|
12641
12733
|
{
|
|
12642
12734
|
asset,
|
|
@@ -12646,9 +12738,9 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12646
12738
|
`security-${asset.address}`
|
|
12647
12739
|
))
|
|
12648
12740
|
] }),
|
|
12649
|
-
nftAssets.length > 0 && /* @__PURE__ */
|
|
12650
|
-
/* @__PURE__ */
|
|
12651
|
-
nftAssets.map((asset) => /* @__PURE__ */
|
|
12741
|
+
nftAssets.length > 0 && /* @__PURE__ */ jsxs57(Fragment23, { children: [
|
|
12742
|
+
/* @__PURE__ */ jsx64("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "NFTs" }),
|
|
12743
|
+
nftAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12652
12744
|
AssetListItem,
|
|
12653
12745
|
{
|
|
12654
12746
|
asset,
|
|
@@ -12658,7 +12750,7 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12658
12750
|
`nft-${asset.address}-${asset.tokenId}`
|
|
12659
12751
|
))
|
|
12660
12752
|
] }),
|
|
12661
|
-
transferableAssets.length === 0 && /* @__PURE__ */
|
|
12753
|
+
transferableAssets.length === 0 && /* @__PURE__ */ jsx64("div", { className: "p-4 text-center text-sm text-[var(--l-pass-fg-muted)]", children: "No assets available" })
|
|
12662
12754
|
] })
|
|
12663
12755
|
]
|
|
12664
12756
|
}
|
|
@@ -12667,7 +12759,7 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12667
12759
|
}
|
|
12668
12760
|
|
|
12669
12761
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
12670
|
-
import { Fragment as
|
|
12762
|
+
import { Fragment as Fragment24, jsx as jsx65, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
12671
12763
|
function isNftAsset3(asset) {
|
|
12672
12764
|
if (!asset) return false;
|
|
12673
12765
|
return asset.type === "erc721" || asset.type === "erc1155";
|
|
@@ -12691,10 +12783,10 @@ function formatBalance(balance, decimals = 4) {
|
|
|
12691
12783
|
return balance.toFixed(decimals);
|
|
12692
12784
|
}
|
|
12693
12785
|
function NftDisplayCard({ asset }) {
|
|
12694
|
-
const [imageError, setImageError] =
|
|
12786
|
+
const [imageError, setImageError] = useState20(false);
|
|
12695
12787
|
const nftImage = asset.image || asset.nftMetadata?.image;
|
|
12696
|
-
return /* @__PURE__ */
|
|
12697
|
-
nftImage && !imageError ? /* @__PURE__ */
|
|
12788
|
+
return /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-3 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
12789
|
+
nftImage && !imageError ? /* @__PURE__ */ jsx65(
|
|
12698
12790
|
"img",
|
|
12699
12791
|
{
|
|
12700
12792
|
src: nftImage,
|
|
@@ -12702,19 +12794,19 @@ function NftDisplayCard({ asset }) {
|
|
|
12702
12794
|
className: "w-16 h-16 rounded-[var(--l-pass-el-bdrs)] object-cover",
|
|
12703
12795
|
onError: () => setImageError(true)
|
|
12704
12796
|
}
|
|
12705
|
-
) : /* @__PURE__ */
|
|
12706
|
-
/* @__PURE__ */
|
|
12707
|
-
/* @__PURE__ */
|
|
12708
|
-
/* @__PURE__ */
|
|
12797
|
+
) : /* @__PURE__ */ jsx65("div", { className: "w-16 h-16 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-fg)] flex items-center justify-center", children: /* @__PURE__ */ jsx65(ImageIcon3, { className: "w-8 h-8 text-[var(--l-pass-fg-inverted)]" }) }),
|
|
12798
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex-1 min-w-0", children: [
|
|
12799
|
+
/* @__PURE__ */ jsx65("div", { className: "font-semibold text-[var(--l-pass-fg)] truncate", children: asset.nftMetadata?.name || asset.name }),
|
|
12800
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
12709
12801
|
asset.symbol,
|
|
12710
|
-
asset.tokenId && /* @__PURE__ */
|
|
12802
|
+
asset.tokenId && /* @__PURE__ */ jsxs58("span", { className: "ml-1", children: [
|
|
12711
12803
|
"#",
|
|
12712
12804
|
asset.tokenId.length > 8 ? `${asset.tokenId.slice(0, 6)}...` : asset.tokenId
|
|
12713
12805
|
] })
|
|
12714
12806
|
] }),
|
|
12715
|
-
/* @__PURE__ */
|
|
12716
|
-
/* @__PURE__ */
|
|
12717
|
-
/* @__PURE__ */
|
|
12807
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-xs text-[var(--l-pass-fg-muted)] mt-1 flex items-center gap-1", children: [
|
|
12808
|
+
/* @__PURE__ */ jsx65(Sparkles3, { className: "w-3 h-3" }),
|
|
12809
|
+
/* @__PURE__ */ jsx65("span", { children: asset.type === "erc721" ? "ERC-721" : "ERC-1155" })
|
|
12718
12810
|
] })
|
|
12719
12811
|
] })
|
|
12720
12812
|
] });
|
|
@@ -12732,11 +12824,11 @@ function SendLumiaMenu() {
|
|
|
12732
12824
|
address
|
|
12733
12825
|
});
|
|
12734
12826
|
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
12735
|
-
const [recipient, setRecipient] =
|
|
12736
|
-
const [amount, setAmount] =
|
|
12737
|
-
const [selectedAsset, setSelectedAsset] =
|
|
12738
|
-
const [txStep, setTxStep] =
|
|
12739
|
-
const [validationError, setValidationError] =
|
|
12827
|
+
const [recipient, setRecipient] = useState20("");
|
|
12828
|
+
const [amount, setAmount] = useState20("");
|
|
12829
|
+
const [selectedAsset, setSelectedAsset] = useState20(null);
|
|
12830
|
+
const [txStep, setTxStep] = useState20("input");
|
|
12831
|
+
const [validationError, setValidationError] = useState20(null);
|
|
12740
12832
|
useEffect28(() => {
|
|
12741
12833
|
if (assets.length > 0 && !selectedAsset) {
|
|
12742
12834
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
@@ -12900,66 +12992,66 @@ function SendLumiaMenu() {
|
|
|
12900
12992
|
if (isNft) return `Send NFT`;
|
|
12901
12993
|
return `Send ${selectedAsset.symbol}`;
|
|
12902
12994
|
};
|
|
12903
|
-
return /* @__PURE__ */
|
|
12904
|
-
/* @__PURE__ */
|
|
12905
|
-
txStep === "input" && /* @__PURE__ */
|
|
12906
|
-
/* @__PURE__ */
|
|
12995
|
+
return /* @__PURE__ */ jsxs58("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12996
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12997
|
+
txStep === "input" && /* @__PURE__ */ jsx65(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx65(ArrowLeft12, { className: "h-4 w-4" }) }),
|
|
12998
|
+
/* @__PURE__ */ jsx65("span", { className: "text-xl font-semibold", children: getPageTitle() })
|
|
12907
12999
|
] }),
|
|
12908
|
-
txStep === "input" && /* @__PURE__ */
|
|
12909
|
-
/* @__PURE__ */
|
|
12910
|
-
/* @__PURE__ */
|
|
12911
|
-
/* @__PURE__ */
|
|
13000
|
+
txStep === "input" && /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13001
|
+
/* @__PURE__ */ jsxs58("div", { className: "w-full flex flex-col gap-2", children: [
|
|
13002
|
+
/* @__PURE__ */ jsx65("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient" }),
|
|
13003
|
+
/* @__PURE__ */ jsx65(
|
|
12912
13004
|
Input,
|
|
12913
13005
|
{
|
|
12914
|
-
Icon: isNicknameInput ?
|
|
13006
|
+
Icon: isNicknameInput ? AtSign2 : Wallet3,
|
|
12915
13007
|
type: "text",
|
|
12916
13008
|
value: recipient,
|
|
12917
13009
|
onChange: (e) => setRecipient(e.target.value),
|
|
12918
13010
|
placeholder: "0x... or @nickname",
|
|
12919
|
-
element: isNicknameInput && isResolving ? /* @__PURE__ */
|
|
13011
|
+
element: isNicknameInput && isResolving ? /* @__PURE__ */ jsx65(Loader23, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" }) : null
|
|
12920
13012
|
}
|
|
12921
13013
|
),
|
|
12922
|
-
isNicknameInput && resolvedAddress && !isResolving && nicknameData && /* @__PURE__ */
|
|
12923
|
-
nicknameData.avatarSvg ? /* @__PURE__ */
|
|
13014
|
+
isNicknameInput && resolvedAddress && !isResolving && nicknameData && /* @__PURE__ */ jsxs58("div", { className: "flex items-start gap-3 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
13015
|
+
nicknameData.avatarSvg ? /* @__PURE__ */ jsx65(
|
|
12924
13016
|
"img",
|
|
12925
13017
|
{
|
|
12926
13018
|
src: nicknameData.avatarSvg,
|
|
12927
13019
|
alt: nicknameData.handle,
|
|
12928
13020
|
className: "w-10 h-10 rounded-full object-cover flex-shrink-0"
|
|
12929
13021
|
}
|
|
12930
|
-
) : /* @__PURE__ */
|
|
12931
|
-
/* @__PURE__ */
|
|
12932
|
-
/* @__PURE__ */
|
|
12933
|
-
/* @__PURE__ */
|
|
12934
|
-
/* @__PURE__ */
|
|
13022
|
+
) : /* @__PURE__ */ jsx65("div", { className: "w-10 h-10 rounded-full bg-[var(--l-pass-bg)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx65(AtSign2, { className: "w-5 h-5 text-[var(--l-pass-fg-muted)]" }) }),
|
|
13023
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
13024
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-success)]", children: [
|
|
13025
|
+
/* @__PURE__ */ jsx65(CheckCircle23, { className: "w-3 h-3 flex-shrink-0" }),
|
|
13026
|
+
/* @__PURE__ */ jsx65("span", { className: "font-mono", children: `${resolvedAddress.slice(0, 6)}...${resolvedAddress.slice(-4)}` })
|
|
12935
13027
|
] }),
|
|
12936
|
-
nicknameData.fingerprint && /* @__PURE__ */
|
|
12937
|
-
isFingerprintVerified ? /* @__PURE__ */
|
|
12938
|
-
/* @__PURE__ */
|
|
13028
|
+
nicknameData.fingerprint && /* @__PURE__ */ jsxs58("div", { className: `flex items-center gap-1.5 text-xs ${isFingerprintVerified ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-error)]"}`, children: [
|
|
13029
|
+
isFingerprintVerified ? /* @__PURE__ */ jsx65(Shield3, { className: "w-3 h-3 flex-shrink-0" }) : /* @__PURE__ */ jsx65(ShieldAlert, { className: "w-3 h-3 flex-shrink-0" }),
|
|
13030
|
+
/* @__PURE__ */ jsxs58("span", { children: [
|
|
12939
13031
|
"Fingerprint: ",
|
|
12940
13032
|
nicknameData.fingerprint
|
|
12941
13033
|
] }),
|
|
12942
|
-
/* @__PURE__ */
|
|
13034
|
+
/* @__PURE__ */ jsx65("span", { children: isFingerprintVerified ? "Verified" : "FAILED" })
|
|
12943
13035
|
] })
|
|
12944
13036
|
] })
|
|
12945
13037
|
] }),
|
|
12946
|
-
isNicknameInput && isFrozen && !isResolving && /* @__PURE__ */
|
|
12947
|
-
/* @__PURE__ */
|
|
12948
|
-
/* @__PURE__ */
|
|
13038
|
+
isNicknameInput && isFrozen && !isResolving && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-warning)]", children: [
|
|
13039
|
+
/* @__PURE__ */ jsx65(AlertTriangle5, { className: "w-3 h-3" }),
|
|
13040
|
+
/* @__PURE__ */ jsx65("span", { children: "This handle is frozen. Proceed with caution." })
|
|
12949
13041
|
] }),
|
|
12950
|
-
isNicknameInput && isWalletNotSetup && !isResolving && /* @__PURE__ */
|
|
12951
|
-
/* @__PURE__ */
|
|
12952
|
-
/* @__PURE__ */
|
|
13042
|
+
isNicknameInput && isWalletNotSetup && !isResolving && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-error)]", children: [
|
|
13043
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "w-3 h-3" }),
|
|
13044
|
+
/* @__PURE__ */ jsx65("span", { children: "This user has not set up their wallet yet" })
|
|
12953
13045
|
] }),
|
|
12954
|
-
isNicknameInput && isNotFound && !isResolving && /* @__PURE__ */
|
|
12955
|
-
/* @__PURE__ */
|
|
12956
|
-
/* @__PURE__ */
|
|
13046
|
+
isNicknameInput && isNotFound && !isResolving && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-error)]", children: [
|
|
13047
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "w-3 h-3" }),
|
|
13048
|
+
/* @__PURE__ */ jsx65("span", { children: "Nickname not found" })
|
|
12957
13049
|
] })
|
|
12958
13050
|
] }),
|
|
12959
|
-
/* @__PURE__ */
|
|
12960
|
-
/* @__PURE__ */
|
|
12961
|
-
/* @__PURE__ */
|
|
12962
|
-
!isNft && selectedAsset && /* @__PURE__ */
|
|
13051
|
+
/* @__PURE__ */ jsxs58("div", { className: "w-full flex flex-col gap-2", children: [
|
|
13052
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between items-center", children: [
|
|
13053
|
+
/* @__PURE__ */ jsx65("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: isNft ? "Asset" : "Amount" }),
|
|
13054
|
+
!isNft && selectedAsset && /* @__PURE__ */ jsxs58("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
12963
13055
|
"Balance: ",
|
|
12964
13056
|
formatBalance(balance),
|
|
12965
13057
|
" ",
|
|
@@ -12968,11 +13060,11 @@ function SendLumiaMenu() {
|
|
|
12968
13060
|
] }),
|
|
12969
13061
|
isNft && selectedAsset ? (
|
|
12970
13062
|
// NFT display card
|
|
12971
|
-
/* @__PURE__ */
|
|
13063
|
+
/* @__PURE__ */ jsx65(NftDisplayCard, { asset: selectedAsset })
|
|
12972
13064
|
) : (
|
|
12973
13065
|
// Fungible token amount input
|
|
12974
|
-
/* @__PURE__ */
|
|
12975
|
-
selectedAsset && /* @__PURE__ */
|
|
13066
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex h-12 w-full rounded-[var(--l-pass-el-bdrs)] items-center gap-[var(--l-pass-gap)] px-[var(--l-pass-pd)] bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] transition-colors duration-200 ease-in-out focus-within:bg-[var(--l-pass-secondary-a)]", children: [
|
|
13067
|
+
selectedAsset && /* @__PURE__ */ jsx65(
|
|
12976
13068
|
AssetSelector,
|
|
12977
13069
|
{
|
|
12978
13070
|
assets,
|
|
@@ -12981,7 +13073,7 @@ function SendLumiaMenu() {
|
|
|
12981
13073
|
disabled: isAssetsLoading
|
|
12982
13074
|
}
|
|
12983
13075
|
),
|
|
12984
|
-
/* @__PURE__ */
|
|
13076
|
+
/* @__PURE__ */ jsx65(
|
|
12985
13077
|
"input",
|
|
12986
13078
|
{
|
|
12987
13079
|
type: "number",
|
|
@@ -12997,12 +13089,12 @@ function SendLumiaMenu() {
|
|
|
12997
13089
|
)
|
|
12998
13090
|
}
|
|
12999
13091
|
),
|
|
13000
|
-
/* @__PURE__ */
|
|
13092
|
+
/* @__PURE__ */ jsx65(Button, { onClick: handleMaxAmount, variant: "ghost", size: "medium", children: "MAX" })
|
|
13001
13093
|
] })
|
|
13002
13094
|
),
|
|
13003
|
-
isNft && selectedAsset && /* @__PURE__ */
|
|
13004
|
-
/* @__PURE__ */
|
|
13005
|
-
/* @__PURE__ */
|
|
13095
|
+
isNft && selectedAsset && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 mt-2", children: [
|
|
13096
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Change asset:" }),
|
|
13097
|
+
/* @__PURE__ */ jsx65(
|
|
13006
13098
|
AssetSelector,
|
|
13007
13099
|
{
|
|
13008
13100
|
assets,
|
|
@@ -13013,71 +13105,71 @@ function SendLumiaMenu() {
|
|
|
13013
13105
|
)
|
|
13014
13106
|
] })
|
|
13015
13107
|
] }),
|
|
13016
|
-
isSecurity && effectiveAddress && amount && /* @__PURE__ */
|
|
13108
|
+
isSecurity && effectiveAddress && amount && /* @__PURE__ */ jsx65("div", { className: cn(
|
|
13017
13109
|
"flex items-center gap-2 p-3 rounded-[var(--l-pass-el-bdrs)]",
|
|
13018
13110
|
isComplianceLoading && "bg-[var(--l-pass-bg-info)] text-[var(--l-pass-info)]",
|
|
13019
13111
|
!isComplianceLoading && erc3643CanTransfer && "bg-[var(--l-pass-bg-success)] text-[var(--l-pass-success)]",
|
|
13020
13112
|
!isComplianceLoading && !erc3643CanTransfer && "bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)]"
|
|
13021
|
-
), children: isComplianceLoading ? /* @__PURE__ */
|
|
13022
|
-
/* @__PURE__ */
|
|
13023
|
-
/* @__PURE__ */
|
|
13024
|
-
] }) : erc3643CanTransfer ? /* @__PURE__ */
|
|
13025
|
-
/* @__PURE__ */
|
|
13026
|
-
/* @__PURE__ */
|
|
13027
|
-
] }) : /* @__PURE__ */
|
|
13028
|
-
/* @__PURE__ */
|
|
13029
|
-
/* @__PURE__ */
|
|
13113
|
+
), children: isComplianceLoading ? /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13114
|
+
/* @__PURE__ */ jsx65(Loader23, { className: "h-4 w-4 animate-spin" }),
|
|
13115
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Checking compliance..." })
|
|
13116
|
+
] }) : erc3643CanTransfer ? /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13117
|
+
/* @__PURE__ */ jsx65(CheckCircle23, { className: "h-4 w-4" }),
|
|
13118
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Transfer compliant" })
|
|
13119
|
+
] }) : /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13120
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "h-4 w-4" }),
|
|
13121
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: complianceError || "Transfer not allowed" })
|
|
13030
13122
|
] }) }),
|
|
13031
|
-
(validationError || error) && /* @__PURE__ */
|
|
13032
|
-
/* @__PURE__ */
|
|
13033
|
-
/* @__PURE__ */
|
|
13123
|
+
(validationError || error) && /* @__PURE__ */ jsxs58("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: [
|
|
13124
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "h-4 w-4" }),
|
|
13125
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: validationError || error })
|
|
13034
13126
|
] }),
|
|
13035
|
-
/* @__PURE__ */
|
|
13127
|
+
/* @__PURE__ */ jsx65(Button, { onClick: handleSend, disabled: isLoading || isComplianceLoading, className: "w-full", size: "large", children: "Continue" })
|
|
13036
13128
|
] }),
|
|
13037
|
-
txStep === "confirm" && effectiveAddress && selectedAsset && /* @__PURE__ */
|
|
13038
|
-
isNicknameInput && isFrozen && /* @__PURE__ */
|
|
13039
|
-
/* @__PURE__ */
|
|
13040
|
-
/* @__PURE__ */
|
|
13129
|
+
txStep === "confirm" && effectiveAddress && selectedAsset && /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13130
|
+
isNicknameInput && isFrozen && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-warning)] text-[var(--l-pass-warning)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
13131
|
+
/* @__PURE__ */ jsx65(AlertTriangle5, { className: "h-4 w-4 flex-shrink-0" }),
|
|
13132
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm font-medium", children: "This handle is frozen. Proceed with caution." })
|
|
13041
13133
|
] }),
|
|
13042
|
-
isSecurity && erc3643CanTransfer && /* @__PURE__ */
|
|
13043
|
-
/* @__PURE__ */
|
|
13044
|
-
/* @__PURE__ */
|
|
13134
|
+
isSecurity && erc3643CanTransfer && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-success)] text-[var(--l-pass-success)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
13135
|
+
/* @__PURE__ */ jsx65(Shield3, { className: "h-4 w-4 flex-shrink-0" }),
|
|
13136
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm font-medium", children: "Security token compliance verified" })
|
|
13045
13137
|
] }),
|
|
13046
|
-
/* @__PURE__ */
|
|
13047
|
-
/* @__PURE__ */
|
|
13048
|
-
nicknameData.avatarSvg ? /* @__PURE__ */
|
|
13138
|
+
/* @__PURE__ */ jsx65("div", { className: "bg-[var(--l-pass-bg-secondary)] rounded-[var(--l-pass-el-bdrs)] p-4", children: isNicknameInput && nicknameData ? /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13139
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-start gap-3 mb-4", children: [
|
|
13140
|
+
nicknameData.avatarSvg ? /* @__PURE__ */ jsx65(
|
|
13049
13141
|
"img",
|
|
13050
13142
|
{
|
|
13051
13143
|
src: nicknameData.avatarSvg,
|
|
13052
13144
|
alt: nicknameData.handle,
|
|
13053
13145
|
className: "w-12 h-12 rounded-full object-cover flex-shrink-0"
|
|
13054
13146
|
}
|
|
13055
|
-
) : /* @__PURE__ */
|
|
13056
|
-
/* @__PURE__ */
|
|
13057
|
-
/* @__PURE__ */
|
|
13058
|
-
nicknameData.fingerprint && /* @__PURE__ */
|
|
13059
|
-
isFingerprintVerified ? /* @__PURE__ */
|
|
13060
|
-
/* @__PURE__ */
|
|
13147
|
+
) : /* @__PURE__ */ jsx65("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-bg)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx65(AtSign2, { className: "w-6 h-6 text-[var(--l-pass-fg-muted)]" }) }),
|
|
13148
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
13149
|
+
/* @__PURE__ */ jsx65("span", { className: "font-semibold text-lg text-[var(--l-pass-fg)] truncate", children: nicknameData.handle }),
|
|
13150
|
+
nicknameData.fingerprint && /* @__PURE__ */ jsxs58("div", { className: `flex items-center gap-1.5 text-sm ${isFingerprintVerified ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-error)]"}`, children: [
|
|
13151
|
+
isFingerprintVerified ? /* @__PURE__ */ jsx65(Shield3, { className: "w-4 h-4 flex-shrink-0" }) : /* @__PURE__ */ jsx65(ShieldAlert, { className: "w-4 h-4 flex-shrink-0" }),
|
|
13152
|
+
/* @__PURE__ */ jsxs58("span", { children: [
|
|
13061
13153
|
"Fingerprint: ",
|
|
13062
13154
|
nicknameData.fingerprint
|
|
13063
13155
|
] }),
|
|
13064
|
-
isFingerprintVerified && /* @__PURE__ */
|
|
13065
|
-
/* @__PURE__ */
|
|
13156
|
+
isFingerprintVerified && /* @__PURE__ */ jsx65(CheckCircle23, { className: "w-3 h-3" }),
|
|
13157
|
+
/* @__PURE__ */ jsx65("span", { className: "text-xs", children: isFingerprintVerified ? "Verified" : "FAILED" })
|
|
13066
13158
|
] }),
|
|
13067
|
-
/* @__PURE__ */
|
|
13159
|
+
/* @__PURE__ */ jsxs58("span", { className: "font-mono text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13068
13160
|
"Address: ",
|
|
13069
13161
|
`${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-6)}`
|
|
13070
13162
|
] })
|
|
13071
13163
|
] })
|
|
13072
13164
|
] }),
|
|
13073
|
-
/* @__PURE__ */
|
|
13165
|
+
/* @__PURE__ */ jsxs58("div", { className: "border-t border-[var(--l-pass-border)] pt-3 space-y-2 text-sm text-[var(--l-pass-fg)]", children: [
|
|
13074
13166
|
isNft ? (
|
|
13075
13167
|
// NFT details
|
|
13076
|
-
/* @__PURE__ */
|
|
13077
|
-
/* @__PURE__ */
|
|
13078
|
-
/* @__PURE__ */
|
|
13079
|
-
/* @__PURE__ */
|
|
13080
|
-
selectedAsset.tokenId && /* @__PURE__ */
|
|
13168
|
+
/* @__PURE__ */ jsx65(Fragment24, { children: /* @__PURE__ */ jsxs58("div", { className: "flex justify-between items-start", children: [
|
|
13169
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "NFT:" }),
|
|
13170
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-right", children: [
|
|
13171
|
+
/* @__PURE__ */ jsx65("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
|
|
13172
|
+
selectedAsset.tokenId && /* @__PURE__ */ jsxs58("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13081
13173
|
"#",
|
|
13082
13174
|
selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
|
|
13083
13175
|
] })
|
|
@@ -13085,34 +13177,34 @@ function SendLumiaMenu() {
|
|
|
13085
13177
|
] }) })
|
|
13086
13178
|
) : (
|
|
13087
13179
|
// Fungible token details
|
|
13088
|
-
/* @__PURE__ */
|
|
13089
|
-
/* @__PURE__ */
|
|
13090
|
-
/* @__PURE__ */
|
|
13180
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13181
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Amount:" }),
|
|
13182
|
+
/* @__PURE__ */ jsxs58("span", { className: "font-semibold", children: [
|
|
13091
13183
|
amount,
|
|
13092
13184
|
" ",
|
|
13093
13185
|
selectedAsset.symbol
|
|
13094
13186
|
] })
|
|
13095
13187
|
] })
|
|
13096
13188
|
),
|
|
13097
|
-
/* @__PURE__ */
|
|
13098
|
-
/* @__PURE__ */
|
|
13099
|
-
/* @__PURE__ */
|
|
13189
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13190
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Network:" }),
|
|
13191
|
+
/* @__PURE__ */ jsx65("span", { children: "Lumia Beam" })
|
|
13100
13192
|
] })
|
|
13101
13193
|
] })
|
|
13102
|
-
] }) : /* @__PURE__ */
|
|
13103
|
-
/* @__PURE__ */
|
|
13104
|
-
/* @__PURE__ */
|
|
13105
|
-
/* @__PURE__ */
|
|
13106
|
-
/* @__PURE__ */
|
|
13107
|
-
/* @__PURE__ */
|
|
13194
|
+
] }) : /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13195
|
+
/* @__PURE__ */ jsx65("h3", { className: "font-medium mb-3 text-[var(--l-pass-fg)]", children: "Transaction Details" }),
|
|
13196
|
+
/* @__PURE__ */ jsxs58("div", { className: "space-y-2 text-sm text-[var(--l-pass-fg)]", children: [
|
|
13197
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13198
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "To:" }),
|
|
13199
|
+
/* @__PURE__ */ jsx65("span", { className: "font-mono text-xs", children: `${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-4)}` })
|
|
13108
13200
|
] }),
|
|
13109
13201
|
isNft ? (
|
|
13110
13202
|
// NFT details
|
|
13111
|
-
/* @__PURE__ */
|
|
13112
|
-
/* @__PURE__ */
|
|
13113
|
-
/* @__PURE__ */
|
|
13114
|
-
/* @__PURE__ */
|
|
13115
|
-
selectedAsset.tokenId && /* @__PURE__ */
|
|
13203
|
+
/* @__PURE__ */ jsx65(Fragment24, { children: /* @__PURE__ */ jsxs58("div", { className: "flex justify-between items-start", children: [
|
|
13204
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "NFT:" }),
|
|
13205
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-right", children: [
|
|
13206
|
+
/* @__PURE__ */ jsx65("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
|
|
13207
|
+
selectedAsset.tokenId && /* @__PURE__ */ jsxs58("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13116
13208
|
"#",
|
|
13117
13209
|
selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
|
|
13118
13210
|
] })
|
|
@@ -13120,53 +13212,53 @@ function SendLumiaMenu() {
|
|
|
13120
13212
|
] }) })
|
|
13121
13213
|
) : (
|
|
13122
13214
|
// Fungible token details
|
|
13123
|
-
/* @__PURE__ */
|
|
13124
|
-
/* @__PURE__ */
|
|
13125
|
-
/* @__PURE__ */
|
|
13215
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13216
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Amount:" }),
|
|
13217
|
+
/* @__PURE__ */ jsxs58("span", { className: "font-semibold", children: [
|
|
13126
13218
|
amount,
|
|
13127
13219
|
" ",
|
|
13128
13220
|
selectedAsset.symbol
|
|
13129
13221
|
] })
|
|
13130
13222
|
] })
|
|
13131
13223
|
),
|
|
13132
|
-
/* @__PURE__ */
|
|
13133
|
-
/* @__PURE__ */
|
|
13134
|
-
/* @__PURE__ */
|
|
13224
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13225
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Network:" }),
|
|
13226
|
+
/* @__PURE__ */ jsx65("span", { children: "Lumia Beam" })
|
|
13135
13227
|
] })
|
|
13136
13228
|
] })
|
|
13137
13229
|
] }) }),
|
|
13138
|
-
/* @__PURE__ */
|
|
13139
|
-
/* @__PURE__ */
|
|
13140
|
-
/* @__PURE__ */
|
|
13141
|
-
isLoading && /* @__PURE__ */
|
|
13230
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex gap-2", children: [
|
|
13231
|
+
/* @__PURE__ */ jsx65(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
13232
|
+
/* @__PURE__ */ jsxs58(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
13233
|
+
isLoading && /* @__PURE__ */ jsx65(Loader23, { className: "h-4 w-4 animate-spin" }),
|
|
13142
13234
|
"Confirm"
|
|
13143
13235
|
] })
|
|
13144
13236
|
] })
|
|
13145
13237
|
] }),
|
|
13146
|
-
txStep === "pending" && /* @__PURE__ */
|
|
13147
|
-
/* @__PURE__ */
|
|
13148
|
-
/* @__PURE__ */
|
|
13149
|
-
/* @__PURE__ */
|
|
13150
|
-
/* @__PURE__ */
|
|
13238
|
+
txStep === "pending" && /* @__PURE__ */ jsxs58("div", { className: "py-8 text-center space-y-4", children: [
|
|
13239
|
+
/* @__PURE__ */ jsx65(Loader23, { className: "h-5 w-5 animate-spin mx-auto" }),
|
|
13240
|
+
/* @__PURE__ */ jsxs58("div", { children: [
|
|
13241
|
+
/* @__PURE__ */ jsx65("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
13242
|
+
/* @__PURE__ */ jsx65("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
13151
13243
|
] })
|
|
13152
13244
|
] }),
|
|
13153
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
13154
|
-
/* @__PURE__ */
|
|
13155
|
-
/* @__PURE__ */
|
|
13156
|
-
/* @__PURE__ */
|
|
13157
|
-
/* @__PURE__ */
|
|
13245
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs58(Fragment24, { children: [
|
|
13246
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-center py-4", children: [
|
|
13247
|
+
/* @__PURE__ */ jsx65(CheckCircle23, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
13248
|
+
/* @__PURE__ */ jsx65("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
13249
|
+
/* @__PURE__ */ jsx65("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
13158
13250
|
] }),
|
|
13159
|
-
/* @__PURE__ */
|
|
13251
|
+
/* @__PURE__ */ jsx65(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
13160
13252
|
] })
|
|
13161
13253
|
] });
|
|
13162
13254
|
}
|
|
13163
13255
|
|
|
13164
13256
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
13165
|
-
import { ArrowLeft as ArrowLeft13, CheckCircle2 as CheckCircle24, Copy as
|
|
13257
|
+
import { ArrowLeft as ArrowLeft13, CheckCircle2 as CheckCircle24, Copy as Copy3, Info as Info4, Loader as Loader24, Shield as Shield4 } from "lucide-react";
|
|
13166
13258
|
import QRCode from "qrcode";
|
|
13167
|
-
import { useCallback as
|
|
13259
|
+
import { useCallback as useCallback17, useEffect as useEffect29, useMemo as useMemo7, useState as useState21 } from "react";
|
|
13168
13260
|
init_clients();
|
|
13169
|
-
import { Fragment as
|
|
13261
|
+
import { Fragment as Fragment25, jsx as jsx66, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
13170
13262
|
function ReceiveLumiaMenu() {
|
|
13171
13263
|
const session = useLumiaPassportSession((st) => st.session);
|
|
13172
13264
|
const address = session?.smartAccountAddress ?? null;
|
|
@@ -13174,9 +13266,9 @@ function ReceiveLumiaMenu() {
|
|
|
13174
13266
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
13175
13267
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
13176
13268
|
const open = page === "receive";
|
|
13177
|
-
const [qrCodeUrl, setQrCodeUrl] =
|
|
13178
|
-
const [copied, setCopied] =
|
|
13179
|
-
const [fingerprintCopied, setFingerprintCopied] =
|
|
13269
|
+
const [qrCodeUrl, setQrCodeUrl] = useState21("");
|
|
13270
|
+
const [copied, setCopied] = useState21(false);
|
|
13271
|
+
const [fingerprintCopied, setFingerprintCopied] = useState21(false);
|
|
13180
13272
|
const fingerprint = useMemo7(() => {
|
|
13181
13273
|
if (!session?.ownerAddress) return null;
|
|
13182
13274
|
try {
|
|
@@ -13198,7 +13290,7 @@ function ReceiveLumiaMenu() {
|
|
|
13198
13290
|
});
|
|
13199
13291
|
}
|
|
13200
13292
|
}, [open, address]);
|
|
13201
|
-
const handleCopy =
|
|
13293
|
+
const handleCopy = useCallback17(async () => {
|
|
13202
13294
|
if (!address) return;
|
|
13203
13295
|
try {
|
|
13204
13296
|
await navigator.clipboard.writeText(address);
|
|
@@ -13208,7 +13300,7 @@ function ReceiveLumiaMenu() {
|
|
|
13208
13300
|
console.error("Failed to copy address:", error);
|
|
13209
13301
|
}
|
|
13210
13302
|
}, [address]);
|
|
13211
|
-
const handleCopyFingerprint =
|
|
13303
|
+
const handleCopyFingerprint = useCallback17(async () => {
|
|
13212
13304
|
if (!fingerprint) return;
|
|
13213
13305
|
try {
|
|
13214
13306
|
await navigator.clipboard.writeText(fingerprint);
|
|
@@ -13218,7 +13310,7 @@ function ReceiveLumiaMenu() {
|
|
|
13218
13310
|
console.error("Failed to copy fingerprint:", error);
|
|
13219
13311
|
}
|
|
13220
13312
|
}, [fingerprint]);
|
|
13221
|
-
return /* @__PURE__ */
|
|
13313
|
+
return /* @__PURE__ */ jsxs59(
|
|
13222
13314
|
"div",
|
|
13223
13315
|
{
|
|
13224
13316
|
style: {
|
|
@@ -13227,61 +13319,64 @@ function ReceiveLumiaMenu() {
|
|
|
13227
13319
|
},
|
|
13228
13320
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
13229
13321
|
children: [
|
|
13230
|
-
/* @__PURE__ */
|
|
13231
|
-
/* @__PURE__ */
|
|
13232
|
-
/* @__PURE__ */
|
|
13322
|
+
/* @__PURE__ */ jsxs59("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13323
|
+
/* @__PURE__ */ jsx66(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx66(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
13324
|
+
/* @__PURE__ */ jsx66("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
13233
13325
|
] }),
|
|
13234
|
-
/* @__PURE__ */
|
|
13235
|
-
/* @__PURE__ */
|
|
13236
|
-
/* @__PURE__ */
|
|
13326
|
+
/* @__PURE__ */ jsxs59(Highlight, { className: "text-center", type: "warning", children: [
|
|
13327
|
+
/* @__PURE__ */ jsx66("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
13328
|
+
/* @__PURE__ */ jsx66("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
13237
13329
|
] }),
|
|
13238
|
-
/* @__PURE__ */
|
|
13239
|
-
fingerprint && /* @__PURE__ */
|
|
13240
|
-
/* @__PURE__ */
|
|
13241
|
-
/* @__PURE__ */
|
|
13242
|
-
/* @__PURE__ */
|
|
13243
|
-
/* @__PURE__ */
|
|
13244
|
-
/* @__PURE__ */
|
|
13245
|
-
/* @__PURE__ */
|
|
13330
|
+
/* @__PURE__ */ jsx66("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx66("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx66(Loader24, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
13331
|
+
fingerprint && /* @__PURE__ */ jsxs59("div", { className: "flex items-center justify-center gap-2 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
13332
|
+
/* @__PURE__ */ jsx66(Shield4, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }),
|
|
13333
|
+
/* @__PURE__ */ jsx66("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Fingerprint:" }),
|
|
13334
|
+
/* @__PURE__ */ jsx66("span", { className: "font-mono text-sm font-semibold text-[var(--l-pass-fg)]", children: fingerprint }),
|
|
13335
|
+
/* @__PURE__ */ jsxs59("div", { className: "relative group", children: [
|
|
13336
|
+
/* @__PURE__ */ jsx66(Info4, { className: "w-3.5 h-3.5 text-[var(--l-pass-fg-muted)] cursor-help" }),
|
|
13337
|
+
/* @__PURE__ */ jsx66("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 text-xs bg-[var(--l-pass-bg)] text-[var(--l-pass-fg)] rounded shadow-lg opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap pointer-events-none z-10", children: "Share this to verify your identity" })
|
|
13246
13338
|
] }),
|
|
13247
|
-
/* @__PURE__ */
|
|
13339
|
+
/* @__PURE__ */ jsx66(
|
|
13248
13340
|
"button",
|
|
13249
13341
|
{
|
|
13250
13342
|
onClick: handleCopyFingerprint,
|
|
13251
13343
|
className: "p-1 rounded hover:bg-[var(--l-pass-bg)] transition-colors",
|
|
13252
13344
|
title: "Copy fingerprint",
|
|
13253
|
-
children: fingerprintCopied ? /* @__PURE__ */
|
|
13345
|
+
children: fingerprintCopied ? /* @__PURE__ */ jsx66(CheckCircle24, { className: "w-3.5 h-3.5 text-[var(--l-pass-bg-success)]" }) : /* @__PURE__ */ jsx66(Copy3, { className: "w-3.5 h-3.5 text-[var(--l-pass-fg-muted)]" })
|
|
13254
13346
|
}
|
|
13255
13347
|
)
|
|
13256
13348
|
] }),
|
|
13257
|
-
/* @__PURE__ */
|
|
13258
|
-
/* @__PURE__ */
|
|
13259
|
-
/* @__PURE__ */
|
|
13260
|
-
/* @__PURE__ */
|
|
13261
|
-
/* @__PURE__ */
|
|
13262
|
-
] }) : /* @__PURE__ */
|
|
13263
|
-
/* @__PURE__ */
|
|
13264
|
-
/* @__PURE__ */
|
|
13349
|
+
/* @__PURE__ */ jsxs59(Highlight, { type: "info", children: [
|
|
13350
|
+
/* @__PURE__ */ jsx66("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
13351
|
+
/* @__PURE__ */ jsx66(Button, { onClick: handleCopy, className: "w-full", size: "large", children: copied ? /* @__PURE__ */ jsxs59(Fragment25, { children: [
|
|
13352
|
+
/* @__PURE__ */ jsx66(CheckCircle24, { className: "h-4 w-4" }),
|
|
13353
|
+
/* @__PURE__ */ jsx66("span", { children: "Copied!" })
|
|
13354
|
+
] }) : /* @__PURE__ */ jsxs59(Fragment25, { children: [
|
|
13355
|
+
/* @__PURE__ */ jsx66(Copy3, { className: "h-4 w-4" }),
|
|
13356
|
+
/* @__PURE__ */ jsx66("span", { children: "Copy Address" })
|
|
13265
13357
|
] }) })
|
|
13266
13358
|
] }),
|
|
13267
|
-
/* @__PURE__ */
|
|
13359
|
+
/* @__PURE__ */ jsx66("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx66("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
13268
13360
|
]
|
|
13269
13361
|
}
|
|
13270
13362
|
);
|
|
13271
13363
|
}
|
|
13272
13364
|
|
|
13273
13365
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
13366
|
+
init_nickname();
|
|
13367
|
+
init_profile();
|
|
13368
|
+
import { useQuery as useQuery17 } from "@tanstack/react-query";
|
|
13274
13369
|
import { ArrowLeft as ArrowLeft14 } from "lucide-react";
|
|
13275
13370
|
import { useEffect as useEffect30 } from "react";
|
|
13276
13371
|
|
|
13277
13372
|
// src/internal/components/SettingsMenu/constants.ts
|
|
13278
|
-
import { ArrowLeftRight, AtSign as
|
|
13373
|
+
import { ArrowLeftRight, AtSign as AtSign3, DatabaseBackup, LockKeyhole, UsersRound } from "lucide-react";
|
|
13279
13374
|
|
|
13280
13375
|
// src/internal/assets/KycIcon.tsx
|
|
13281
|
-
import { jsx as
|
|
13376
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
13282
13377
|
function KycIcon(props) {
|
|
13283
13378
|
const { width = "24", height = "24", ...rest } = props;
|
|
13284
|
-
return /* @__PURE__ */
|
|
13379
|
+
return /* @__PURE__ */ jsx67("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx67(
|
|
13285
13380
|
"path",
|
|
13286
13381
|
{
|
|
13287
13382
|
d: "M12 18.5455C10.1727 18.5455 8.625 17.9114 7.35682 16.6432C6.08864 15.375 5.45455 13.8273 5.45455 12C5.45455 10.1727 6.08864 8.625 7.35682 7.35682C8.625 6.08864 10.1727 5.45455 12 5.45455C13.8273 5.45455 15.375 6.08864 16.6432 7.35682C17.9114 8.625 18.5455 10.1727 18.5455 12C18.5455 13.8273 17.9114 15.375 16.6432 16.6432C15.375 17.9114 13.8273 18.5455 12 18.5455ZM12 16.9091C13.3636 16.9091 14.5227 16.4318 15.4773 15.4773C16.4318 14.5227 16.9091 13.3636 16.9091 12C16.9091 11.7682 16.892 11.5398 16.858 11.3148C16.8239 11.0898 16.7727 10.8682 16.7045 10.65C16.5 10.6909 16.2955 10.7216 16.0909 10.742C15.8864 10.7625 15.6818 10.7727 15.4773 10.7727C14.6182 10.7727 13.8 10.6091 13.0227 10.2818C12.2455 9.95455 11.55 9.47727 10.9364 8.85C10.5545 9.62727 10.0295 10.3023 9.36136 10.875C8.69318 11.4477 7.93636 11.8636 7.09091 12.1227C7.13182 13.4591 7.62614 14.5909 8.57386 15.5182C9.52159 16.4455 10.6636 16.9091 12 16.9091ZM7.41818 10.2409C8.01818 9.92727 8.475 9.5625 8.78864 9.14659C9.10227 8.73068 9.40909 8.23636 9.70909 7.66364C9.19091 7.93636 8.73409 8.29432 8.33864 8.7375C7.94318 9.18068 7.63636 9.68182 7.41818 10.2409ZM9.95455 13.6364C9.72273 13.6364 9.52841 13.558 9.37159 13.4011C9.21477 13.2443 9.13636 13.05 9.13636 12.8182C9.13636 12.5864 9.21477 12.392 9.37159 12.2352C9.52841 12.0784 9.72273 12 9.95455 12C10.1864 12 10.3807 12.0784 10.5375 12.2352C10.6943 12.392 10.7727 12.5864 10.7727 12.8182C10.7727 13.05 10.6943 13.2443 10.5375 13.4011C10.3807 13.558 10.1864 13.6364 9.95455 13.6364ZM15.4773 9.13636H15.7227C15.8045 9.13636 15.8864 9.12955 15.9682 9.11591C15.5182 8.50227 14.9489 8.01136 14.2602 7.64318C13.5716 7.275 12.8182 7.09091 12 7.09091H11.7545C11.6727 7.09091 11.5977 7.09773 11.5295 7.11136C12.0614 7.725 12.6239 8.21591 13.217 8.58409C13.8102 8.95227 14.5636 9.13636 15.4773 9.13636ZM14.0455 13.6364C13.8136 13.6364 13.6193 13.558 13.4625 13.4011C13.3057 13.2443 13.2273 13.05 13.2273 12.8182C13.2273 12.5864 13.3057 12.392 13.4625 12.2352C13.6193 12.0784 13.8136 12 14.0455 12C14.2773 12 14.4716 12.0784 14.6284 12.2352C14.7852 12.392 14.8636 12.5864 14.8636 12.8182C14.8636 13.05 14.7852 13.2443 14.6284 13.4011C14.4716 13.558 14.2773 13.6364 14.0455 13.6364ZM3 7.09091V4.63636C3 4.18636 3.16023 3.80114 3.48068 3.48068C3.80114 3.16023 4.18636 3 4.63636 3H7.09091V4.63636H4.63636V7.09091H3ZM7.09091 21H4.63636C4.18636 21 3.80114 20.8398 3.48068 20.5193C3.16023 20.1989 3 19.8136 3 19.3636V16.9091H4.63636V19.3636H7.09091V21ZM16.9091 21V19.3636H19.3636V16.9091H21V19.3636C21 19.8136 20.8398 20.1989 20.5193 20.5193C20.1989 20.8398 19.8136 21 19.3636 21H16.9091ZM19.3636 7.09091V4.63636H16.9091V3H19.3636C19.8136 3 20.1989 3.16023 20.5193 3.48068C20.8398 3.80114 21 4.18636 21 4.63636V7.09091H19.3636Z",
|
|
@@ -13294,14 +13389,14 @@ function KycIcon(props) {
|
|
|
13294
13389
|
var NAV_BUTTONS = [
|
|
13295
13390
|
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon: ArrowLeftRight },
|
|
13296
13391
|
{ id: "kyc" /* KYC */, name: "KYC", Icon: KycIcon },
|
|
13297
|
-
{ id: "nickname-settings" /* NICKNAME_SETTINGS */, name: "Nickname", Icon:
|
|
13392
|
+
{ id: "nickname-settings" /* NICKNAME_SETTINGS */, name: "Nickname", Icon: AtSign3 },
|
|
13298
13393
|
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon: UsersRound },
|
|
13299
13394
|
{ id: "security" /* SECURITY */, name: "Security", Icon: LockKeyhole },
|
|
13300
13395
|
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon: DatabaseBackup }
|
|
13301
13396
|
];
|
|
13302
13397
|
|
|
13303
13398
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
13304
|
-
import { jsx as
|
|
13399
|
+
import { jsx as jsx68, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
13305
13400
|
function SettingsMenu() {
|
|
13306
13401
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13307
13402
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -13310,9 +13405,15 @@ function SettingsMenu() {
|
|
|
13310
13405
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
13311
13406
|
useEffect30(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
13312
13407
|
useProvidersList();
|
|
13408
|
+
useQuery17({
|
|
13409
|
+
retry: 1,
|
|
13410
|
+
enabled: !!address,
|
|
13411
|
+
queryKey: [QUERY_KEYS.nicknameInfo, address],
|
|
13412
|
+
queryFn: getNicknameInfo
|
|
13413
|
+
});
|
|
13313
13414
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
13314
13415
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
13315
|
-
return /* @__PURE__ */
|
|
13416
|
+
return /* @__PURE__ */ jsxs60(
|
|
13316
13417
|
"div",
|
|
13317
13418
|
{
|
|
13318
13419
|
style: {
|
|
@@ -13321,11 +13422,11 @@ function SettingsMenu() {
|
|
|
13321
13422
|
},
|
|
13322
13423
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
13323
13424
|
children: [
|
|
13324
|
-
/* @__PURE__ */
|
|
13325
|
-
/* @__PURE__ */
|
|
13326
|
-
/* @__PURE__ */
|
|
13425
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13426
|
+
/* @__PURE__ */ jsx68(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx68(ArrowLeft14, { className: "h-4 w-4" }) }),
|
|
13427
|
+
/* @__PURE__ */ jsx68("span", { className: "text-xl font-semibold", children: "Settings" })
|
|
13327
13428
|
] }),
|
|
13328
|
-
/* @__PURE__ */
|
|
13429
|
+
/* @__PURE__ */ jsx68("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */ jsxs60(
|
|
13329
13430
|
Button,
|
|
13330
13431
|
{
|
|
13331
13432
|
variant: "outline",
|
|
@@ -13338,8 +13439,8 @@ function SettingsMenu() {
|
|
|
13338
13439
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
13339
13440
|
),
|
|
13340
13441
|
children: [
|
|
13341
|
-
/* @__PURE__ */
|
|
13342
|
-
/* @__PURE__ */
|
|
13442
|
+
/* @__PURE__ */ jsx68(Icon2, { className: "w-4 h-4" }),
|
|
13443
|
+
/* @__PURE__ */ jsx68("span", { children: name })
|
|
13343
13444
|
]
|
|
13344
13445
|
},
|
|
13345
13446
|
id
|
|
@@ -13351,35 +13452,35 @@ function SettingsMenu() {
|
|
|
13351
13452
|
|
|
13352
13453
|
// src/internal/components/TermsOfService.tsx
|
|
13353
13454
|
import { ArrowLeft as ArrowLeft15 } from "lucide-react";
|
|
13354
|
-
import { jsx as
|
|
13455
|
+
import { jsx as jsx69, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
13355
13456
|
function TermsOfService() {
|
|
13356
13457
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13357
13458
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
13358
|
-
return /* @__PURE__ */
|
|
13359
|
-
/* @__PURE__ */
|
|
13360
|
-
/* @__PURE__ */
|
|
13459
|
+
return /* @__PURE__ */ jsxs61("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
13460
|
+
/* @__PURE__ */ jsxs61("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13461
|
+
/* @__PURE__ */ jsx69(
|
|
13361
13462
|
Button,
|
|
13362
13463
|
{
|
|
13363
13464
|
variant: "ghost",
|
|
13364
13465
|
size: "icon",
|
|
13365
13466
|
title: "Back",
|
|
13366
13467
|
onClick: () => setPage(!!address ? "settings" /* SETTINGS */ : "auth" /* AUTH */),
|
|
13367
|
-
children: /* @__PURE__ */
|
|
13468
|
+
children: /* @__PURE__ */ jsx69(ArrowLeft15, { className: "h-4 w-4" })
|
|
13368
13469
|
}
|
|
13369
13470
|
),
|
|
13370
|
-
/* @__PURE__ */
|
|
13471
|
+
/* @__PURE__ */ jsx69("span", { className: "text-xl font-semibold", children: "Terms of Service" })
|
|
13371
13472
|
] }),
|
|
13372
|
-
/* @__PURE__ */
|
|
13373
|
-
/* @__PURE__ */
|
|
13374
|
-
/* @__PURE__ */
|
|
13473
|
+
/* @__PURE__ */ jsxs61(Highlight, { type: "warning", className: "text-center", children: [
|
|
13474
|
+
/* @__PURE__ */ jsx69("span", { className: "block text-xs", children: "By using Lumia Passport you agree to our terms." }),
|
|
13475
|
+
/* @__PURE__ */ jsx69("span", { className: "block text-xs", children: "To be updated..." })
|
|
13375
13476
|
] })
|
|
13376
13477
|
] });
|
|
13377
13478
|
}
|
|
13378
13479
|
|
|
13379
13480
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
13380
|
-
import { useQuery as
|
|
13481
|
+
import { useQuery as useQuery18, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
|
|
13381
13482
|
import { ArrowLeft as ArrowLeft16, Loader as Loader25, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
13382
|
-
import { useCallback as
|
|
13483
|
+
import { useCallback as useCallback18, useState as useState22 } from "react";
|
|
13383
13484
|
|
|
13384
13485
|
// src/internal/components/TransactionsMenu/api.ts
|
|
13385
13486
|
init_base();
|
|
@@ -13707,7 +13808,7 @@ async function getTransactionsListQuery(address) {
|
|
|
13707
13808
|
}
|
|
13708
13809
|
|
|
13709
13810
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
13710
|
-
import { ChevronLeft as ChevronLeft2, ChevronRight as
|
|
13811
|
+
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight6, Copy as Copy4 } from "lucide-react";
|
|
13711
13812
|
|
|
13712
13813
|
// src/internal/components/TransactionsMenu/utils.ts
|
|
13713
13814
|
init_base();
|
|
@@ -13757,22 +13858,22 @@ var formatTimestamp = (timestampMs) => {
|
|
|
13757
13858
|
};
|
|
13758
13859
|
|
|
13759
13860
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
13760
|
-
import { Fragment as
|
|
13861
|
+
import { Fragment as Fragment26, jsx as jsx70, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
13761
13862
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
13762
13863
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
13763
13864
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
13764
|
-
return /* @__PURE__ */
|
|
13765
|
-
/* @__PURE__ */
|
|
13766
|
-
/* @__PURE__ */
|
|
13767
|
-
/* @__PURE__ */
|
|
13865
|
+
return /* @__PURE__ */ jsxs62("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
13866
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
13867
|
+
/* @__PURE__ */ jsx70("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
13868
|
+
/* @__PURE__ */ jsxs62("span", { children: [
|
|
13768
13869
|
formatValue2(internal.value, internalDecimals),
|
|
13769
13870
|
" ",
|
|
13770
13871
|
internalSymbol
|
|
13771
13872
|
] })
|
|
13772
13873
|
] }),
|
|
13773
|
-
/* @__PURE__ */
|
|
13774
|
-
/* @__PURE__ */
|
|
13775
|
-
/* @__PURE__ */
|
|
13874
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
13875
|
+
/* @__PURE__ */ jsx70("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
13876
|
+
/* @__PURE__ */ jsx70("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
13776
13877
|
] })
|
|
13777
13878
|
] });
|
|
13778
13879
|
}
|
|
@@ -13783,7 +13884,7 @@ function TransactionsGroup(props) {
|
|
|
13783
13884
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
13784
13885
|
const assetDecimals = parent.decimals ?? 18;
|
|
13785
13886
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
13786
|
-
return /* @__PURE__ */
|
|
13887
|
+
return /* @__PURE__ */ jsxs62(
|
|
13787
13888
|
"div",
|
|
13788
13889
|
{
|
|
13789
13890
|
onClick: () => openInExplorer2(parent.parentHash),
|
|
@@ -13793,28 +13894,28 @@ function TransactionsGroup(props) {
|
|
|
13793
13894
|
"bg-transparent hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
13794
13895
|
),
|
|
13795
13896
|
children: [
|
|
13796
|
-
/* @__PURE__ */
|
|
13797
|
-
/* @__PURE__ */
|
|
13798
|
-
parent.direction === "in" ? /* @__PURE__ */
|
|
13799
|
-
/* @__PURE__ */
|
|
13800
|
-
parent.status === "ok" ? /* @__PURE__ */
|
|
13897
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
13898
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center gap-1 flex-0 w-fit", children: [
|
|
13899
|
+
parent.direction === "in" ? /* @__PURE__ */ jsx70(ChevronLeft2, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx70(ChevronRight6, { className: "w-4 h-4" }),
|
|
13900
|
+
/* @__PURE__ */ jsx70("span", { className: "text-[10px]", children: isIncoming ? "RECEIVED" : "SENT" }),
|
|
13901
|
+
parent.status === "ok" ? /* @__PURE__ */ jsx70(PositiveIcon, {}) : /* @__PURE__ */ jsx70(NegativeIcon, {})
|
|
13801
13902
|
] }),
|
|
13802
|
-
/* @__PURE__ */
|
|
13903
|
+
/* @__PURE__ */ jsx70("span", { className: "block flex-0 font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) })
|
|
13803
13904
|
] }),
|
|
13804
|
-
/* @__PURE__ */
|
|
13805
|
-
/* @__PURE__ */
|
|
13806
|
-
/* @__PURE__ */
|
|
13905
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
13906
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex flex-col gap-0", children: [
|
|
13907
|
+
/* @__PURE__ */ jsxs62("span", { className: "font-bold", children: [
|
|
13807
13908
|
formatValue2(parent.value, assetDecimals),
|
|
13808
13909
|
" ",
|
|
13809
13910
|
assetSymbol
|
|
13810
13911
|
] }),
|
|
13811
|
-
/* @__PURE__ */
|
|
13912
|
+
/* @__PURE__ */ jsxs62("span", { className: "text-[10px] font-mono text-[var(--l-pass-fg-muted)]", children: [
|
|
13812
13913
|
isIncoming ? "From: " : "To: ",
|
|
13813
13914
|
parent.counterpartyName || formatAddress2(parent.counterparty)
|
|
13814
13915
|
] })
|
|
13815
13916
|
] }),
|
|
13816
|
-
/* @__PURE__ */
|
|
13817
|
-
/* @__PURE__ */
|
|
13917
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center gap-0", children: [
|
|
13918
|
+
/* @__PURE__ */ jsx70(
|
|
13818
13919
|
Button,
|
|
13819
13920
|
{
|
|
13820
13921
|
variant: "ghost",
|
|
@@ -13823,10 +13924,10 @@ function TransactionsGroup(props) {
|
|
|
13823
13924
|
onClick: (e) => {
|
|
13824
13925
|
e.stopPropagation();
|
|
13825
13926
|
},
|
|
13826
|
-
children: /* @__PURE__ */
|
|
13927
|
+
children: /* @__PURE__ */ jsx70(Copy4, { className: "w-4 h-4" })
|
|
13827
13928
|
}
|
|
13828
13929
|
),
|
|
13829
|
-
/* @__PURE__ */
|
|
13930
|
+
/* @__PURE__ */ jsx70(
|
|
13830
13931
|
Button,
|
|
13831
13932
|
{
|
|
13832
13933
|
variant: "ghost",
|
|
@@ -13835,24 +13936,24 @@ function TransactionsGroup(props) {
|
|
|
13835
13936
|
onClick: (e) => {
|
|
13836
13937
|
e.stopPropagation();
|
|
13837
13938
|
},
|
|
13838
|
-
children: /* @__PURE__ */
|
|
13939
|
+
children: /* @__PURE__ */ jsx70(LumiaIcon, { className: "w-4 h-4" })
|
|
13839
13940
|
}
|
|
13840
13941
|
)
|
|
13841
13942
|
] })
|
|
13842
13943
|
] }),
|
|
13843
|
-
internalsToRender.length > 0 && /* @__PURE__ */
|
|
13844
|
-
/* @__PURE__ */
|
|
13845
|
-
/* @__PURE__ */
|
|
13846
|
-
/* @__PURE__ */
|
|
13847
|
-
/* @__PURE__ */
|
|
13944
|
+
internalsToRender.length > 0 && /* @__PURE__ */ jsxs62(Fragment26, { children: [
|
|
13945
|
+
/* @__PURE__ */ jsxs62("div", { className: "w-full flex items-center", children: [
|
|
13946
|
+
/* @__PURE__ */ jsx70("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
13947
|
+
/* @__PURE__ */ jsx70("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Internals" }),
|
|
13948
|
+
/* @__PURE__ */ jsx70("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
13848
13949
|
] }),
|
|
13849
|
-
/* @__PURE__ */
|
|
13950
|
+
/* @__PURE__ */ jsxs62(
|
|
13850
13951
|
"div",
|
|
13851
13952
|
{
|
|
13852
13953
|
className: "w-full rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
13853
13954
|
onClick: (event) => event.stopPropagation(),
|
|
13854
13955
|
children: [
|
|
13855
|
-
/* @__PURE__ */
|
|
13956
|
+
/* @__PURE__ */ jsxs62(
|
|
13856
13957
|
Button,
|
|
13857
13958
|
{
|
|
13858
13959
|
variant: "ghost",
|
|
@@ -13860,16 +13961,16 @@ function TransactionsGroup(props) {
|
|
|
13860
13961
|
className: "w-full justify-between",
|
|
13861
13962
|
onClick: () => onToggleExpanded(group.id),
|
|
13862
13963
|
children: [
|
|
13863
|
-
/* @__PURE__ */
|
|
13964
|
+
/* @__PURE__ */ jsxs62("span", { children: [
|
|
13864
13965
|
"View internal calls (",
|
|
13865
13966
|
internalsToRender.length,
|
|
13866
13967
|
")"
|
|
13867
13968
|
] }),
|
|
13868
|
-
/* @__PURE__ */
|
|
13969
|
+
/* @__PURE__ */ jsx70("span", { children: expanded ? "Hide" : "Show" })
|
|
13869
13970
|
]
|
|
13870
13971
|
}
|
|
13871
13972
|
),
|
|
13872
|
-
expanded && /* @__PURE__ */
|
|
13973
|
+
expanded && /* @__PURE__ */ jsx70("div", { className: "px-2 pb-2 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ jsx70(
|
|
13873
13974
|
InternalTransaction,
|
|
13874
13975
|
{
|
|
13875
13976
|
internal,
|
|
@@ -13888,31 +13989,31 @@ function TransactionsGroup(props) {
|
|
|
13888
13989
|
}
|
|
13889
13990
|
|
|
13890
13991
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
13891
|
-
import { jsx as
|
|
13992
|
+
import { jsx as jsx71, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
13892
13993
|
function TransactionsMenu() {
|
|
13893
13994
|
const qc = useQueryClient18();
|
|
13894
13995
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13895
13996
|
const page = useLayoutDataStore((st) => st.page);
|
|
13896
13997
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
13897
13998
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
13898
|
-
const [expandedGroups, setExpandedGroups] =
|
|
13999
|
+
const [expandedGroups, setExpandedGroups] = useState22({});
|
|
13899
14000
|
const {
|
|
13900
14001
|
data: txHistoryGroups = [],
|
|
13901
14002
|
isLoading: isTxHistoryLoading,
|
|
13902
14003
|
isFetching: isTxHistoryFetching,
|
|
13903
14004
|
error: txHistoryError
|
|
13904
|
-
} =
|
|
14005
|
+
} = useQuery18({
|
|
13905
14006
|
retry: false,
|
|
13906
14007
|
enabled: !!address && page === "transactions",
|
|
13907
14008
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
13908
14009
|
queryFn: () => getTransactionsListQuery(address)
|
|
13909
14010
|
});
|
|
13910
|
-
const refreshTxHistory =
|
|
14011
|
+
const refreshTxHistory = useCallback18(
|
|
13911
14012
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
13912
14013
|
[qc, address]
|
|
13913
14014
|
);
|
|
13914
14015
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
13915
|
-
return /* @__PURE__ */
|
|
14016
|
+
return /* @__PURE__ */ jsx71(
|
|
13916
14017
|
"div",
|
|
13917
14018
|
{
|
|
13918
14019
|
style: {
|
|
@@ -13920,11 +14021,11 @@ function TransactionsMenu() {
|
|
|
13920
14021
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
13921
14022
|
},
|
|
13922
14023
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
13923
|
-
children: /* @__PURE__ */
|
|
13924
|
-
/* @__PURE__ */
|
|
13925
|
-
/* @__PURE__ */
|
|
13926
|
-
/* @__PURE__ */
|
|
13927
|
-
/* @__PURE__ */
|
|
14024
|
+
children: /* @__PURE__ */ jsxs63(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
14025
|
+
/* @__PURE__ */ jsxs63("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
14026
|
+
/* @__PURE__ */ jsx71(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx71(ArrowLeft16, { className: "h-4 w-4" }) }),
|
|
14027
|
+
/* @__PURE__ */ jsx71("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
14028
|
+
/* @__PURE__ */ jsx71(
|
|
13928
14029
|
Button,
|
|
13929
14030
|
{
|
|
13930
14031
|
variant: "ghost",
|
|
@@ -13932,17 +14033,17 @@ function TransactionsMenu() {
|
|
|
13932
14033
|
onClick: refreshTxHistory,
|
|
13933
14034
|
disabled: isTxHistoryFetching,
|
|
13934
14035
|
title: "Refresh transactions",
|
|
13935
|
-
children: isTxHistoryFetching ? /* @__PURE__ */
|
|
14036
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ jsx71(Loader25, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx71(RefreshCw3, { className: "h-4 w-4" })
|
|
13936
14037
|
}
|
|
13937
14038
|
)
|
|
13938
14039
|
] }),
|
|
13939
|
-
isTxHistoryLoading && /* @__PURE__ */
|
|
13940
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */
|
|
13941
|
-
/* @__PURE__ */
|
|
13942
|
-
/* @__PURE__ */
|
|
14040
|
+
isTxHistoryLoading && /* @__PURE__ */ jsx71("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx71(Loader25, { className: "h-5 w-5 animate-spin" }) }),
|
|
14041
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs63(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
14042
|
+
/* @__PURE__ */ jsx71(XCircle2, { className: "w-4 h-4 flex-none" }),
|
|
14043
|
+
/* @__PURE__ */ jsx71("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
13943
14044
|
] }),
|
|
13944
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */
|
|
13945
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */
|
|
14045
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsx71(Highlight, { type: "warning", children: /* @__PURE__ */ jsx71("span", { children: "No transactions found." }) }),
|
|
14046
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ jsx71("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx71(
|
|
13946
14047
|
TransactionsGroup,
|
|
13947
14048
|
{
|
|
13948
14049
|
group,
|
|
@@ -14052,12 +14153,12 @@ var PAGE_MAP = {
|
|
|
14052
14153
|
key: "nickname-settings" /* NICKNAME_SETTINGS */,
|
|
14053
14154
|
title: "Nickname Settings",
|
|
14054
14155
|
description: "View and manage your @nickname",
|
|
14055
|
-
component:
|
|
14156
|
+
component: NicknameMenu
|
|
14056
14157
|
}
|
|
14057
14158
|
};
|
|
14058
14159
|
|
|
14059
14160
|
// src/internal/hooks/usePageMapper.tsx
|
|
14060
|
-
import { jsx as
|
|
14161
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
14061
14162
|
var CLEAR_DIALOG_TIMEOUT = MAIN_DIALOG_ANIMATION_SPEED + 5;
|
|
14062
14163
|
function usePageMapper() {
|
|
14063
14164
|
const page = useLayoutDataStore((st) => st.page);
|
|
@@ -14069,7 +14170,7 @@ function usePageMapper() {
|
|
|
14069
14170
|
setIsDialogOpen,
|
|
14070
14171
|
setIsDialogClosing
|
|
14071
14172
|
} = useLayoutStore();
|
|
14072
|
-
const closeDialog =
|
|
14173
|
+
const closeDialog = useCallback19(() => {
|
|
14073
14174
|
setIsDialogClosing(true);
|
|
14074
14175
|
setTimeout(() => {
|
|
14075
14176
|
setDialogContent(null);
|
|
@@ -14080,12 +14181,12 @@ function usePageMapper() {
|
|
|
14080
14181
|
setIsDialogOpen(false);
|
|
14081
14182
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
14082
14183
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
14083
|
-
const openDialog =
|
|
14184
|
+
const openDialog = useCallback19(
|
|
14084
14185
|
(pageItem) => {
|
|
14085
14186
|
const PageContentComponent = pageItem.component;
|
|
14086
14187
|
setDialogTitle(pageItem.title);
|
|
14087
14188
|
setDialogDescription(pageItem.description);
|
|
14088
|
-
setDialogContent(/* @__PURE__ */
|
|
14189
|
+
setDialogContent(/* @__PURE__ */ jsx72(PageContentComponent, {}));
|
|
14089
14190
|
setIsDialogOpen(true);
|
|
14090
14191
|
},
|
|
14091
14192
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
@@ -14105,7 +14206,7 @@ function usePageMapper() {
|
|
|
14105
14206
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
14106
14207
|
init_auth();
|
|
14107
14208
|
init_profile();
|
|
14108
|
-
import { useQuery as
|
|
14209
|
+
import { useQuery as useQuery19 } from "@tanstack/react-query";
|
|
14109
14210
|
import { useEffect as useEffect32 } from "react";
|
|
14110
14211
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
14111
14212
|
id: "email-not-connected",
|
|
@@ -14122,7 +14223,7 @@ function useSettingsNotifications() {
|
|
|
14122
14223
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
14123
14224
|
const providers = jwtTokenManager2.getProviders();
|
|
14124
14225
|
const hasEmail = providers.includes("email");
|
|
14125
|
-
const { data: userProfile = null } =
|
|
14226
|
+
const { data: userProfile = null } = useQuery19({
|
|
14126
14227
|
retry: false,
|
|
14127
14228
|
enabled: !!address,
|
|
14128
14229
|
queryKey: [QUERY_KEYS.userProfile, address],
|
|
@@ -14174,7 +14275,7 @@ function useWalletStatus() {
|
|
|
14174
14275
|
}
|
|
14175
14276
|
|
|
14176
14277
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
14177
|
-
import { jsx as
|
|
14278
|
+
import { jsx as jsx73, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
14178
14279
|
function LumiaPassportDialog() {
|
|
14179
14280
|
const config = useLumiaPassportConfig().config;
|
|
14180
14281
|
const className = config.current?.ui?.dialogClassName;
|
|
@@ -14193,7 +14294,7 @@ function LumiaPassportDialog() {
|
|
|
14193
14294
|
useListenIframeAuthEvents();
|
|
14194
14295
|
useWalletStatus();
|
|
14195
14296
|
const isHeaderHidden = !session || page === "keysare-backup" /* KEYSARE_BACKUP */ && !hasServerVault;
|
|
14196
|
-
return /* @__PURE__ */
|
|
14297
|
+
return /* @__PURE__ */ jsx73(
|
|
14197
14298
|
Dialog,
|
|
14198
14299
|
{
|
|
14199
14300
|
open: isDialogOpen,
|
|
@@ -14201,11 +14302,11 @@ function LumiaPassportDialog() {
|
|
|
14201
14302
|
if (isDialogForced) return;
|
|
14202
14303
|
if (!open) setPage(null);
|
|
14203
14304
|
},
|
|
14204
|
-
children: /* @__PURE__ */
|
|
14205
|
-
/* @__PURE__ */
|
|
14206
|
-
/* @__PURE__ */
|
|
14207
|
-
!isHeaderHidden && /* @__PURE__ */
|
|
14208
|
-
/* @__PURE__ */
|
|
14305
|
+
children: /* @__PURE__ */ jsxs64(DialogContent, { colorMode, className, children: [
|
|
14306
|
+
/* @__PURE__ */ jsx73(VisuallyHidden, { children: /* @__PURE__ */ jsx73(DialogTitle, { children: dialogTitle }) }),
|
|
14307
|
+
/* @__PURE__ */ jsx73(DialogDescription, { className: "sr-only", children: dialogDescription }),
|
|
14308
|
+
!isHeaderHidden && /* @__PURE__ */ jsx73(Header, {}),
|
|
14309
|
+
/* @__PURE__ */ jsx73(AnimatePresence3, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx73(
|
|
14209
14310
|
motion3.div,
|
|
14210
14311
|
{
|
|
14211
14312
|
initial: { opacity: 0, height: mainPageHeight },
|
|
@@ -14217,14 +14318,14 @@ function LumiaPassportDialog() {
|
|
|
14217
14318
|
},
|
|
14218
14319
|
page || "empty"
|
|
14219
14320
|
) }),
|
|
14220
|
-
/* @__PURE__ */
|
|
14321
|
+
/* @__PURE__ */ jsx73(Footer, {})
|
|
14221
14322
|
] })
|
|
14222
14323
|
}
|
|
14223
14324
|
);
|
|
14224
14325
|
}
|
|
14225
14326
|
|
|
14226
14327
|
// src/internal/components/TssManager.tsx
|
|
14227
|
-
import React7, { useCallback as
|
|
14328
|
+
import React7, { useCallback as useCallback20 } from "react";
|
|
14228
14329
|
init_auth();
|
|
14229
14330
|
init_clients();
|
|
14230
14331
|
var TssManagerWithRef = React7.forwardRef((props, ref) => {
|
|
@@ -14233,7 +14334,7 @@ var TssManagerWithRef = React7.forwardRef((props, ref) => {
|
|
|
14233
14334
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
14234
14335
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
14235
14336
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
14236
|
-
const onSessionCreated =
|
|
14337
|
+
const onSessionCreated = useCallback20(
|
|
14237
14338
|
(session, address) => {
|
|
14238
14339
|
setSession(session);
|
|
14239
14340
|
setAddress(address);
|
|
@@ -14269,7 +14370,7 @@ var TssManagerWithRef = React7.forwardRef((props, ref) => {
|
|
|
14269
14370
|
init_wallet();
|
|
14270
14371
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
14271
14372
|
import { useMutation as useMutation15, useQueryClient as useQueryClient19 } from "@tanstack/react-query";
|
|
14272
|
-
import React8, { useCallback as
|
|
14373
|
+
import React8, { useCallback as useCallback21, useEffect as useEffect35 } from "react";
|
|
14273
14374
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
14274
14375
|
function WalletConnectHandler() {
|
|
14275
14376
|
const qc = useQueryClient19();
|
|
@@ -14286,7 +14387,7 @@ function WalletConnectHandler() {
|
|
|
14286
14387
|
const setManageWalletLinkError = useManageWalletStore((st) => st.setLinkError);
|
|
14287
14388
|
const setLinkIsLoading = useManageWalletStore((st) => st.setLinkIsLoading);
|
|
14288
14389
|
const setProviderType = useManageWalletStore((st) => st.setProviderType);
|
|
14289
|
-
const onLinkingComplete =
|
|
14390
|
+
const onLinkingComplete = useCallback21(
|
|
14290
14391
|
async (success) => {
|
|
14291
14392
|
setIsWalletLinking(false);
|
|
14292
14393
|
if (!success && !passportWalletAddress) {
|
|
@@ -14420,7 +14521,7 @@ function WalletConnectHandler() {
|
|
|
14420
14521
|
}
|
|
14421
14522
|
|
|
14422
14523
|
// src/context/LumiaPassportSessionContext.tsx
|
|
14423
|
-
import { jsx as
|
|
14524
|
+
import { jsx as jsx74, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
14424
14525
|
var useLumiaPassportSession = create6((set) => ({
|
|
14425
14526
|
isLoading: false,
|
|
14426
14527
|
usePaymaster: true,
|
|
@@ -14446,17 +14547,17 @@ var useLumiaPassportSession = create6((set) => ({
|
|
|
14446
14547
|
}));
|
|
14447
14548
|
function LumiaPassportSessionProvider({ children }) {
|
|
14448
14549
|
const config = useLumiaPassportConfig().config;
|
|
14449
|
-
return /* @__PURE__ */
|
|
14550
|
+
return /* @__PURE__ */ jsxs65(Fragment27, { children: [
|
|
14450
14551
|
children,
|
|
14451
|
-
config.current?.wallet?.enabled && /* @__PURE__ */
|
|
14452
|
-
/* @__PURE__ */
|
|
14453
|
-
/* @__PURE__ */
|
|
14552
|
+
config.current?.wallet?.enabled && /* @__PURE__ */ jsx74(WalletConnectHandler, {}),
|
|
14553
|
+
/* @__PURE__ */ jsx74(BalanceFeedProvider, {}),
|
|
14554
|
+
/* @__PURE__ */ jsx74(
|
|
14454
14555
|
TssManagerWithRef,
|
|
14455
14556
|
{
|
|
14456
14557
|
mpcPin: void 0
|
|
14457
14558
|
}
|
|
14458
14559
|
),
|
|
14459
|
-
/* @__PURE__ */
|
|
14560
|
+
/* @__PURE__ */ jsx74(LumiaPassportDialog, {})
|
|
14460
14561
|
] });
|
|
14461
14562
|
}
|
|
14462
14563
|
|
|
@@ -14491,13 +14592,13 @@ var wagmiConfig = createConfig({
|
|
|
14491
14592
|
});
|
|
14492
14593
|
|
|
14493
14594
|
// src/context/WagmiContext.tsx
|
|
14494
|
-
import { jsx as
|
|
14595
|
+
import { jsx as jsx75 } from "react/jsx-runtime";
|
|
14495
14596
|
var LumiaWagmiProvider = ({ children }) => {
|
|
14496
|
-
return /* @__PURE__ */
|
|
14597
|
+
return /* @__PURE__ */ jsx75(WagmiProvider, { config: wagmiConfig, children });
|
|
14497
14598
|
};
|
|
14498
14599
|
|
|
14499
14600
|
// src/context/LumiaPassportContext.tsx
|
|
14500
|
-
import { jsx as
|
|
14601
|
+
import { jsx as jsx76 } from "react/jsx-runtime";
|
|
14501
14602
|
var LumiaPassportContext = createContext(void 0);
|
|
14502
14603
|
function LumiaPassportProvider(props) {
|
|
14503
14604
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
@@ -14505,7 +14606,7 @@ function LumiaPassportProvider(props) {
|
|
|
14505
14606
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
14506
14607
|
useEffect36(() => notifyNoProjetctId(projectId), [projectId]);
|
|
14507
14608
|
const config = useRef15({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
14508
|
-
const updateConfig =
|
|
14609
|
+
const updateConfig = useCallback22((updates) => {
|
|
14509
14610
|
const prev = config.current;
|
|
14510
14611
|
const next = { ...prev };
|
|
14511
14612
|
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
@@ -14586,7 +14687,7 @@ function LumiaPassportProvider(props) {
|
|
|
14586
14687
|
}
|
|
14587
14688
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
14588
14689
|
const contextValue = useMemo8(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
14589
|
-
return /* @__PURE__ */
|
|
14690
|
+
return /* @__PURE__ */ jsx76(LumiaWagmiProvider, { children: /* @__PURE__ */ jsx76(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
14590
14691
|
}
|
|
14591
14692
|
var useLumiaPassportConfig = () => {
|
|
14592
14693
|
const ctx = useContext(LumiaPassportContext);
|
|
@@ -14595,12 +14696,12 @@ var useLumiaPassportConfig = () => {
|
|
|
14595
14696
|
};
|
|
14596
14697
|
|
|
14597
14698
|
// src/components/ConnectWalletButton.tsx
|
|
14598
|
-
import { useQuery as
|
|
14699
|
+
import { useQuery as useQuery20 } from "@tanstack/react-query";
|
|
14599
14700
|
import { Cloud as Cloud5, Laptop as Laptop2, Loader as Loader26, Shield as Shield5 } from "lucide-react";
|
|
14600
14701
|
import { useEffect as useEffect37, useMemo as useMemo9 } from "react";
|
|
14601
14702
|
init_auth();
|
|
14602
14703
|
init_profile();
|
|
14603
|
-
import { Fragment as
|
|
14704
|
+
import { Fragment as Fragment28, jsx as jsx77, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
14604
14705
|
function getFormattedStatus(label, status, showStatus) {
|
|
14605
14706
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
14606
14707
|
if (!isStatus) return label;
|
|
@@ -14620,7 +14721,7 @@ function ConnectWalletButton(props) {
|
|
|
14620
14721
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
14621
14722
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
14622
14723
|
useEffect37(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
14623
|
-
const { data: profile, isLoading: isProfileLoading } =
|
|
14724
|
+
const { data: profile, isLoading: isProfileLoading } = useQuery20({
|
|
14624
14725
|
retry: false,
|
|
14625
14726
|
enabled: !!address,
|
|
14626
14727
|
queryKey: [QUERY_KEYS.userProfile, address],
|
|
@@ -14636,20 +14737,20 @@ function ConnectWalletButton(props) {
|
|
|
14636
14737
|
return { server, local, backup: hasServerVault };
|
|
14637
14738
|
}, [session, address, hasServerVault]);
|
|
14638
14739
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
14639
|
-
return /* @__PURE__ */
|
|
14740
|
+
return /* @__PURE__ */ jsx77("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
14640
14741
|
/** external Buttons can be provided */
|
|
14641
|
-
/* @__PURE__ */
|
|
14742
|
+
/* @__PURE__ */ jsx77(Fragment28, { children: ConnectButton ? /* @__PURE__ */ jsxs66(
|
|
14642
14743
|
ConnectButton,
|
|
14643
14744
|
{
|
|
14644
14745
|
type: "button",
|
|
14645
14746
|
disabled: isConnecting,
|
|
14646
14747
|
onClick: () => setPage("auth" /* AUTH */),
|
|
14647
14748
|
children: [
|
|
14648
|
-
isConnecting && /* @__PURE__ */
|
|
14749
|
+
isConnecting && /* @__PURE__ */ jsx77(Loader26, { className: "w-4 h-4 animate-spin" }),
|
|
14649
14750
|
connectButtonLabel
|
|
14650
14751
|
]
|
|
14651
14752
|
}
|
|
14652
|
-
) : /* @__PURE__ */
|
|
14753
|
+
) : /* @__PURE__ */ jsxs66(
|
|
14653
14754
|
Button,
|
|
14654
14755
|
{
|
|
14655
14756
|
type: "button",
|
|
@@ -14666,12 +14767,12 @@ function ConnectWalletButton(props) {
|
|
|
14666
14767
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
14667
14768
|
),
|
|
14668
14769
|
children: [
|
|
14669
|
-
isConnecting && /* @__PURE__ */
|
|
14770
|
+
isConnecting && /* @__PURE__ */ jsx77(Loader26, { className: "w-4 h-4 animate-spin" }),
|
|
14670
14771
|
connectButtonLabel.toUpperCase()
|
|
14671
14772
|
]
|
|
14672
14773
|
}
|
|
14673
14774
|
) })
|
|
14674
|
-
) : /* @__PURE__ */
|
|
14775
|
+
) : /* @__PURE__ */ jsxs66(
|
|
14675
14776
|
"button",
|
|
14676
14777
|
{
|
|
14677
14778
|
type: "button",
|
|
@@ -14684,23 +14785,23 @@ function ConnectWalletButton(props) {
|
|
|
14684
14785
|
"rounded-[var(--l-pass-bdrs)] p-4 max-w-sm min-w-[256px]"
|
|
14685
14786
|
),
|
|
14686
14787
|
children: [
|
|
14687
|
-
/* @__PURE__ */
|
|
14688
|
-
/* @__PURE__ */
|
|
14689
|
-
/* @__PURE__ */
|
|
14690
|
-
isProfileLoading ? /* @__PURE__ */
|
|
14691
|
-
/* @__PURE__ */
|
|
14788
|
+
/* @__PURE__ */ jsx77("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx77("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx77(LumiaIcon, { width: 48, height: 48 }) }),
|
|
14789
|
+
/* @__PURE__ */ jsxs66("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
14790
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
14791
|
+
isProfileLoading ? /* @__PURE__ */ jsx77(Loader26, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx77("span", { className: "w-fit text-[14px] leading-4 truncate max-w-[144px] text-[var(--l-pass-fg)]", children: displayName }),
|
|
14792
|
+
/* @__PURE__ */ jsx77(KYCStatus, {})
|
|
14692
14793
|
] }),
|
|
14693
|
-
/* @__PURE__ */
|
|
14794
|
+
/* @__PURE__ */ jsx77(BalanceView, {})
|
|
14694
14795
|
] }),
|
|
14695
|
-
/* @__PURE__ */
|
|
14696
|
-
/* @__PURE__ */
|
|
14697
|
-
/* @__PURE__ */
|
|
14796
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex items-center space-x-1", children: [
|
|
14797
|
+
/* @__PURE__ */ jsxs66("div", { className: "group relative", children: [
|
|
14798
|
+
/* @__PURE__ */ jsx77(
|
|
14698
14799
|
Cloud5,
|
|
14699
14800
|
{
|
|
14700
14801
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14701
14802
|
}
|
|
14702
14803
|
),
|
|
14703
|
-
/* @__PURE__ */
|
|
14804
|
+
/* @__PURE__ */ jsxs66(
|
|
14704
14805
|
"div",
|
|
14705
14806
|
{
|
|
14706
14807
|
className: cn(
|
|
@@ -14715,14 +14816,14 @@ function ConnectWalletButton(props) {
|
|
|
14715
14816
|
}
|
|
14716
14817
|
)
|
|
14717
14818
|
] }),
|
|
14718
|
-
/* @__PURE__ */
|
|
14719
|
-
/* @__PURE__ */
|
|
14819
|
+
/* @__PURE__ */ jsxs66("div", { className: "group relative", children: [
|
|
14820
|
+
/* @__PURE__ */ jsx77(
|
|
14720
14821
|
Laptop2,
|
|
14721
14822
|
{
|
|
14722
14823
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14723
14824
|
}
|
|
14724
14825
|
),
|
|
14725
|
-
/* @__PURE__ */
|
|
14826
|
+
/* @__PURE__ */ jsxs66(
|
|
14726
14827
|
"div",
|
|
14727
14828
|
{
|
|
14728
14829
|
className: cn(
|
|
@@ -14737,14 +14838,14 @@ function ConnectWalletButton(props) {
|
|
|
14737
14838
|
}
|
|
14738
14839
|
)
|
|
14739
14840
|
] }),
|
|
14740
|
-
/* @__PURE__ */
|
|
14741
|
-
/* @__PURE__ */
|
|
14841
|
+
/* @__PURE__ */ jsxs66("div", { className: "group relative", children: [
|
|
14842
|
+
/* @__PURE__ */ jsx77(
|
|
14742
14843
|
Shield5,
|
|
14743
14844
|
{
|
|
14744
14845
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14745
14846
|
}
|
|
14746
14847
|
),
|
|
14747
|
-
/* @__PURE__ */
|
|
14848
|
+
/* @__PURE__ */ jsxs66(
|
|
14748
14849
|
"div",
|
|
14749
14850
|
{
|
|
14750
14851
|
className: cn(
|
|
@@ -14760,7 +14861,7 @@ function ConnectWalletButton(props) {
|
|
|
14760
14861
|
)
|
|
14761
14862
|
] })
|
|
14762
14863
|
] }),
|
|
14763
|
-
!!settingsNotifications.length && /* @__PURE__ */
|
|
14864
|
+
!!settingsNotifications.length && /* @__PURE__ */ jsx77(
|
|
14764
14865
|
"div",
|
|
14765
14866
|
{
|
|
14766
14867
|
className: cn(
|
|
@@ -14801,13 +14902,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
14801
14902
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
14802
14903
|
|
|
14803
14904
|
// src/hooks/useLumiaPassportOpen.ts
|
|
14804
|
-
import { useCallback as
|
|
14905
|
+
import { useCallback as useCallback23 } from "react";
|
|
14805
14906
|
function useLumiaPassportOpen() {
|
|
14806
14907
|
const page = useLayoutDataStore((st) => st.page);
|
|
14807
14908
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
14808
14909
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
14809
14910
|
const address = useLumiaPassportSession((st) => st.address);
|
|
14810
|
-
const open =
|
|
14911
|
+
const open = useCallback23(
|
|
14811
14912
|
(passportPage, params) => {
|
|
14812
14913
|
if (!address) return setPage("auth" /* AUTH */);
|
|
14813
14914
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -14816,12 +14917,12 @@ function useLumiaPassportOpen() {
|
|
|
14816
14917
|
},
|
|
14817
14918
|
[setPage, setPageParams, address]
|
|
14818
14919
|
);
|
|
14819
|
-
const close =
|
|
14920
|
+
const close = useCallback23(() => setPage(null), [setPage]);
|
|
14820
14921
|
return { open, close, isOpen: page !== null };
|
|
14821
14922
|
}
|
|
14822
14923
|
|
|
14823
14924
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
14824
|
-
import { useCallback as
|
|
14925
|
+
import { useCallback as useCallback24, useEffect as useEffect38 } from "react";
|
|
14825
14926
|
function useLumiaPassportColorMode() {
|
|
14826
14927
|
const {
|
|
14827
14928
|
config: { current: config }
|
|
@@ -14829,7 +14930,7 @@ function useLumiaPassportColorMode() {
|
|
|
14829
14930
|
const preferedColorMode = config?.preferedColorMode;
|
|
14830
14931
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
14831
14932
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
14832
|
-
const setColorMode =
|
|
14933
|
+
const setColorMode = useCallback24(
|
|
14833
14934
|
(mode) => {
|
|
14834
14935
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
14835
14936
|
handleStoreColorMode(mode);
|
|
@@ -14854,23 +14955,23 @@ function useLumiaPassportColorMode() {
|
|
|
14854
14955
|
|
|
14855
14956
|
// src/components/ThemeToggle.tsx
|
|
14856
14957
|
import { Moon, Sun } from "lucide-react";
|
|
14857
|
-
import { jsx as
|
|
14958
|
+
import { jsx as jsx78 } from "react/jsx-runtime";
|
|
14858
14959
|
function ThemeToggle(props) {
|
|
14859
14960
|
const { colorMode, setColorMode } = useLumiaPassportColorMode();
|
|
14860
|
-
return /* @__PURE__ */
|
|
14961
|
+
return /* @__PURE__ */ jsx78(
|
|
14861
14962
|
"div",
|
|
14862
14963
|
{
|
|
14863
14964
|
className: "lumia-scope",
|
|
14864
14965
|
"data-lumia-passport-mode": colorMode,
|
|
14865
14966
|
style: { width: "fit-content", height: "fit-content" },
|
|
14866
|
-
children: /* @__PURE__ */
|
|
14967
|
+
children: /* @__PURE__ */ jsx78(
|
|
14867
14968
|
Button,
|
|
14868
14969
|
{
|
|
14869
14970
|
...props,
|
|
14870
14971
|
variant: "ghost",
|
|
14871
14972
|
onClick: () => setColorMode(colorMode === "light" ? "dark" : "light"),
|
|
14872
14973
|
title: `Current theme: ${colorMode}. Click to switch.`,
|
|
14873
|
-
children: colorMode === "dark" ? /* @__PURE__ */
|
|
14974
|
+
children: colorMode === "dark" ? /* @__PURE__ */ jsx78(Sun, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx78(Moon, { className: "w-4 h-4" })
|
|
14874
14975
|
}
|
|
14875
14976
|
)
|
|
14876
14977
|
}
|
|
@@ -15107,7 +15208,7 @@ var rainbowTheme = {
|
|
|
15107
15208
|
|
|
15108
15209
|
// src/context/RainbowKitContext.tsx
|
|
15109
15210
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
15110
|
-
import { Fragment as
|
|
15211
|
+
import { Fragment as Fragment29, jsx as jsx79 } from "react/jsx-runtime";
|
|
15111
15212
|
function LumiaRainbowKitProvider({ children }) {
|
|
15112
15213
|
const config = useLumiaPassportConfig().config;
|
|
15113
15214
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
@@ -15126,13 +15227,13 @@ function LumiaRainbowKitProvider({ children }) {
|
|
|
15126
15227
|
},
|
|
15127
15228
|
[colorMode]
|
|
15128
15229
|
);
|
|
15129
|
-
if (!config.current?.wallet?.enabled) return /* @__PURE__ */
|
|
15130
|
-
return /* @__PURE__ */
|
|
15230
|
+
if (!config.current?.wallet?.enabled) return /* @__PURE__ */ jsx79(Fragment29, { children });
|
|
15231
|
+
return /* @__PURE__ */ jsx79(WagmiProvider2, { config: rainbowConfig2, children: /* @__PURE__ */ jsx79(RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
15131
15232
|
}
|
|
15132
15233
|
|
|
15133
15234
|
// src/internal/components/UserOpStatus.tsx
|
|
15134
15235
|
init_base();
|
|
15135
|
-
import { AlertCircle as AlertCircle6, CheckCircle2 as CheckCircle26, Clock as Clock2, Copy as
|
|
15236
|
+
import { AlertCircle as AlertCircle6, CheckCircle2 as CheckCircle26, Clock as Clock2, Copy as Copy6, ExternalLink as ExternalLink2, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
15136
15237
|
import * as React10 from "react";
|
|
15137
15238
|
|
|
15138
15239
|
// src/internal/utils/cn.ts
|
|
@@ -15143,9 +15244,9 @@ function cn2(...inputs) {
|
|
|
15143
15244
|
}
|
|
15144
15245
|
|
|
15145
15246
|
// src/internal/components/Address.tsx
|
|
15146
|
-
import { Copy as
|
|
15247
|
+
import { Copy as Copy5, ExternalLink } from "lucide-react";
|
|
15147
15248
|
import * as React9 from "react";
|
|
15148
|
-
import { jsx as
|
|
15249
|
+
import { jsx as jsx80, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
15149
15250
|
function toExplorerAddressUrl(address, chain) {
|
|
15150
15251
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
15151
15252
|
if (!base2) return null;
|
|
@@ -15167,11 +15268,11 @@ var Address = ({
|
|
|
15167
15268
|
const addr = address || "";
|
|
15168
15269
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
15169
15270
|
const [copied, setCopied] = React9.useState(false);
|
|
15170
|
-
if (!addr) return /* @__PURE__ */
|
|
15171
|
-
return /* @__PURE__ */
|
|
15172
|
-
label && /* @__PURE__ */
|
|
15173
|
-
/* @__PURE__ */
|
|
15174
|
-
showCopy && /* @__PURE__ */
|
|
15271
|
+
if (!addr) return /* @__PURE__ */ jsx80("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
15272
|
+
return /* @__PURE__ */ jsxs67("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
15273
|
+
label && /* @__PURE__ */ jsx80("span", { className: "text-sm font-medium", children: label }),
|
|
15274
|
+
/* @__PURE__ */ jsx80("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
15275
|
+
showCopy && /* @__PURE__ */ jsx80(
|
|
15175
15276
|
Button,
|
|
15176
15277
|
{
|
|
15177
15278
|
variant: "ghost",
|
|
@@ -15185,10 +15286,10 @@ var Address = ({
|
|
|
15185
15286
|
} catch {
|
|
15186
15287
|
}
|
|
15187
15288
|
},
|
|
15188
|
-
children: /* @__PURE__ */
|
|
15289
|
+
children: /* @__PURE__ */ jsx80(Copy5, { className: "h-4 w-4" })
|
|
15189
15290
|
}
|
|
15190
15291
|
),
|
|
15191
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
15292
|
+
showExplorer && explorer && /* @__PURE__ */ jsx80(
|
|
15192
15293
|
"a",
|
|
15193
15294
|
{
|
|
15194
15295
|
href: explorer,
|
|
@@ -15196,7 +15297,7 @@ var Address = ({
|
|
|
15196
15297
|
rel: "noreferrer noopener",
|
|
15197
15298
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
15198
15299
|
title: "Open in explorer",
|
|
15199
|
-
children: /* @__PURE__ */
|
|
15300
|
+
children: /* @__PURE__ */ jsx80(ExternalLink, { className: "h-4 w-4" })
|
|
15200
15301
|
}
|
|
15201
15302
|
)
|
|
15202
15303
|
] });
|
|
@@ -15204,7 +15305,7 @@ var Address = ({
|
|
|
15204
15305
|
|
|
15205
15306
|
// src/internal/components/ui/badge.tsx
|
|
15206
15307
|
import { cva as cva2 } from "class-variance-authority";
|
|
15207
|
-
import { jsx as
|
|
15308
|
+
import { jsx as jsx81 } from "react/jsx-runtime";
|
|
15208
15309
|
var badgeVariants = cva2(
|
|
15209
15310
|
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
15210
15311
|
{
|
|
@@ -15224,11 +15325,11 @@ var badgeVariants = cva2(
|
|
|
15224
15325
|
}
|
|
15225
15326
|
);
|
|
15226
15327
|
function Badge({ className, variant, ...props }) {
|
|
15227
|
-
return /* @__PURE__ */
|
|
15328
|
+
return /* @__PURE__ */ jsx81("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
15228
15329
|
}
|
|
15229
15330
|
|
|
15230
15331
|
// src/internal/components/UserOpStatus.tsx
|
|
15231
|
-
import { jsx as
|
|
15332
|
+
import { jsx as jsx82, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
15232
15333
|
var UserOpStatus = ({
|
|
15233
15334
|
userOpHash,
|
|
15234
15335
|
chain,
|
|
@@ -15361,35 +15462,35 @@ var UserOpStatus = ({
|
|
|
15361
15462
|
const stateBadge = () => {
|
|
15362
15463
|
if (receipt) {
|
|
15363
15464
|
const ok = !!receipt.success;
|
|
15364
|
-
return /* @__PURE__ */
|
|
15365
|
-
ok ? /* @__PURE__ */
|
|
15465
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
15466
|
+
ok ? /* @__PURE__ */ jsx82(CheckCircle26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx82(AlertCircle6, { className: "h-3 w-3" }),
|
|
15366
15467
|
ok ? "Included" : "Failed"
|
|
15367
15468
|
] });
|
|
15368
15469
|
}
|
|
15369
15470
|
if (rejected) {
|
|
15370
|
-
return /* @__PURE__ */
|
|
15371
|
-
/* @__PURE__ */
|
|
15471
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
15472
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-3 w-3" }),
|
|
15372
15473
|
" Rejected by bundler"
|
|
15373
15474
|
] });
|
|
15374
15475
|
}
|
|
15375
15476
|
if (timedOut) {
|
|
15376
|
-
return /* @__PURE__ */
|
|
15377
|
-
/* @__PURE__ */
|
|
15477
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "warning", className: "gap-1", children: [
|
|
15478
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-3 w-3" }),
|
|
15378
15479
|
" Timeout - may be rejected"
|
|
15379
15480
|
] });
|
|
15380
15481
|
}
|
|
15381
15482
|
if (mempool) {
|
|
15382
|
-
return /* @__PURE__ */
|
|
15383
|
-
/* @__PURE__ */
|
|
15483
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "outline", className: "gap-1", children: [
|
|
15484
|
+
/* @__PURE__ */ jsx82(Clock2, { className: "h-3 w-3" }),
|
|
15384
15485
|
" Pending in bundler"
|
|
15385
15486
|
] });
|
|
15386
15487
|
}
|
|
15387
|
-
return /* @__PURE__ */
|
|
15388
|
-
/* @__PURE__ */
|
|
15488
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
15489
|
+
/* @__PURE__ */ jsx82(Clock2, { className: "h-3 w-3" }),
|
|
15389
15490
|
" Waiting"
|
|
15390
15491
|
] });
|
|
15391
15492
|
};
|
|
15392
|
-
return /* @__PURE__ */
|
|
15493
|
+
return /* @__PURE__ */ jsxs68(
|
|
15393
15494
|
"div",
|
|
15394
15495
|
{
|
|
15395
15496
|
className: cn2(
|
|
@@ -15398,20 +15499,20 @@ var UserOpStatus = ({
|
|
|
15398
15499
|
),
|
|
15399
15500
|
style: { textAlign: "left", listStyle: "none" },
|
|
15400
15501
|
children: [
|
|
15401
|
-
/* @__PURE__ */
|
|
15402
|
-
/* @__PURE__ */
|
|
15502
|
+
/* @__PURE__ */ jsxs68("div", { className: "flex items-center justify-between mb-3", children: [
|
|
15503
|
+
/* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-2", children: [
|
|
15403
15504
|
stateBadge(),
|
|
15404
|
-
/* @__PURE__ */
|
|
15505
|
+
/* @__PURE__ */ jsx82("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
15405
15506
|
] }),
|
|
15406
|
-
/* @__PURE__ */
|
|
15407
|
-
/* @__PURE__ */
|
|
15408
|
-
/* @__PURE__ */
|
|
15507
|
+
/* @__PURE__ */ jsxs68(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
15508
|
+
/* @__PURE__ */ jsx82(RefreshCw4, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
15509
|
+
/* @__PURE__ */ jsx82("span", { className: "text-xs", children: "Refresh" })
|
|
15409
15510
|
] })
|
|
15410
15511
|
] }),
|
|
15411
|
-
/* @__PURE__ */
|
|
15412
|
-
/* @__PURE__ */
|
|
15413
|
-
/* @__PURE__ */
|
|
15414
|
-
/* @__PURE__ */
|
|
15512
|
+
/* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
15513
|
+
/* @__PURE__ */ jsx82("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
15514
|
+
/* @__PURE__ */ jsx82("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
15515
|
+
/* @__PURE__ */ jsx82(
|
|
15415
15516
|
Button,
|
|
15416
15517
|
{
|
|
15417
15518
|
variant: "ghost",
|
|
@@ -15423,14 +15524,14 @@ var UserOpStatus = ({
|
|
|
15423
15524
|
} catch {
|
|
15424
15525
|
}
|
|
15425
15526
|
},
|
|
15426
|
-
children: /* @__PURE__ */
|
|
15527
|
+
children: /* @__PURE__ */ jsx82(Copy6, { className: "h-3.5 w-3.5" })
|
|
15427
15528
|
}
|
|
15428
15529
|
)
|
|
15429
15530
|
] }),
|
|
15430
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */
|
|
15431
|
-
/* @__PURE__ */
|
|
15432
|
-
/* @__PURE__ */
|
|
15433
|
-
/* @__PURE__ */
|
|
15531
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
15532
|
+
/* @__PURE__ */ jsx82("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
15533
|
+
/* @__PURE__ */ jsx82("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
15534
|
+
/* @__PURE__ */ jsx82(
|
|
15434
15535
|
Button,
|
|
15435
15536
|
{
|
|
15436
15537
|
variant: "ghost",
|
|
@@ -15442,10 +15543,10 @@ var UserOpStatus = ({
|
|
|
15442
15543
|
} catch {
|
|
15443
15544
|
}
|
|
15444
15545
|
},
|
|
15445
|
-
children: /* @__PURE__ */
|
|
15546
|
+
children: /* @__PURE__ */ jsx82(Copy6, { className: "h-3.5 w-3.5" })
|
|
15446
15547
|
}
|
|
15447
15548
|
),
|
|
15448
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */
|
|
15549
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx82(
|
|
15449
15550
|
"a",
|
|
15450
15551
|
{
|
|
15451
15552
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -15453,11 +15554,11 @@ var UserOpStatus = ({
|
|
|
15453
15554
|
rel: "noreferrer noopener",
|
|
15454
15555
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
15455
15556
|
title: "Open in explorer",
|
|
15456
|
-
children: /* @__PURE__ */
|
|
15557
|
+
children: /* @__PURE__ */ jsx82(ExternalLink2, { className: "h-3.5 w-3.5" })
|
|
15457
15558
|
}
|
|
15458
15559
|
)
|
|
15459
15560
|
] }),
|
|
15460
|
-
receipt && /* @__PURE__ */
|
|
15561
|
+
receipt && /* @__PURE__ */ jsxs68("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
15461
15562
|
"Block ",
|
|
15462
15563
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
15463
15564
|
" \u2022 Gas Used",
|
|
@@ -15466,32 +15567,32 @@ var UserOpStatus = ({
|
|
|
15466
15567
|
" \u2022 Success ",
|
|
15467
15568
|
String(!!receipt.success)
|
|
15468
15569
|
] }),
|
|
15469
|
-
/* @__PURE__ */
|
|
15570
|
+
/* @__PURE__ */ jsx82("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs68("span", { className: "ml-2", children: [
|
|
15470
15571
|
"\u2022 Polling for ",
|
|
15471
15572
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
15472
15573
|
"s"
|
|
15473
15574
|
] }) }),
|
|
15474
|
-
mempool && /* @__PURE__ */
|
|
15475
|
-
/* @__PURE__ */
|
|
15575
|
+
mempool && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
15576
|
+
/* @__PURE__ */ jsxs68("div", { children: [
|
|
15476
15577
|
"Seen by bundler at ",
|
|
15477
|
-
/* @__PURE__ */
|
|
15578
|
+
/* @__PURE__ */ jsx82(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
15478
15579
|
] }),
|
|
15479
|
-
/* @__PURE__ */
|
|
15580
|
+
/* @__PURE__ */ jsxs68("div", { children: [
|
|
15480
15581
|
"sender ",
|
|
15481
|
-
/* @__PURE__ */
|
|
15582
|
+
/* @__PURE__ */ jsx82(Address, { address: mempool.sender, chain, truncate: false })
|
|
15482
15583
|
] })
|
|
15483
15584
|
] }),
|
|
15484
|
-
error && /* @__PURE__ */
|
|
15485
|
-
/* @__PURE__ */
|
|
15585
|
+
error && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15586
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-4 w-4" }),
|
|
15486
15587
|
" ",
|
|
15487
15588
|
error
|
|
15488
15589
|
] }),
|
|
15489
|
-
rejected && /* @__PURE__ */
|
|
15490
|
-
/* @__PURE__ */
|
|
15590
|
+
rejected && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15591
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-4 w-4" }),
|
|
15491
15592
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
15492
15593
|
] }),
|
|
15493
|
-
timedOut && /* @__PURE__ */
|
|
15494
|
-
/* @__PURE__ */
|
|
15594
|
+
timedOut && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15595
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-4 w-4" }),
|
|
15495
15596
|
"Stopped polling after ",
|
|
15496
15597
|
Math.round(maxPollTimeMs / 1e3),
|
|
15497
15598
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -15502,9 +15603,9 @@ var UserOpStatus = ({
|
|
|
15502
15603
|
};
|
|
15503
15604
|
|
|
15504
15605
|
// src/internal/components/Hash.tsx
|
|
15505
|
-
import { Copy as
|
|
15606
|
+
import { Copy as Copy7, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
15506
15607
|
import * as React11 from "react";
|
|
15507
|
-
import { jsx as
|
|
15608
|
+
import { jsx as jsx83, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
15508
15609
|
function toExplorerUrl(kind, value, chain) {
|
|
15509
15610
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
15510
15611
|
if (!base2) return null;
|
|
@@ -15528,11 +15629,11 @@ var Hash = ({
|
|
|
15528
15629
|
const value = hash || "";
|
|
15529
15630
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
15530
15631
|
const [copied, setCopied] = React11.useState(false);
|
|
15531
|
-
if (!value) return /* @__PURE__ */
|
|
15532
|
-
return /* @__PURE__ */
|
|
15533
|
-
label && /* @__PURE__ */
|
|
15534
|
-
/* @__PURE__ */
|
|
15535
|
-
showCopy && /* @__PURE__ */
|
|
15632
|
+
if (!value) return /* @__PURE__ */ jsx83("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
15633
|
+
return /* @__PURE__ */ jsxs69("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
15634
|
+
label && /* @__PURE__ */ jsx83("span", { className: "text-sm font-medium", children: label }),
|
|
15635
|
+
/* @__PURE__ */ jsx83("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
15636
|
+
showCopy && /* @__PURE__ */ jsx83(
|
|
15536
15637
|
Button,
|
|
15537
15638
|
{
|
|
15538
15639
|
variant: "ghost",
|
|
@@ -15546,10 +15647,10 @@ var Hash = ({
|
|
|
15546
15647
|
} catch {
|
|
15547
15648
|
}
|
|
15548
15649
|
},
|
|
15549
|
-
children: /* @__PURE__ */
|
|
15650
|
+
children: /* @__PURE__ */ jsx83(Copy7, { className: "h-4 w-4" })
|
|
15550
15651
|
}
|
|
15551
15652
|
),
|
|
15552
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
15653
|
+
showExplorer && explorer && /* @__PURE__ */ jsx83(
|
|
15553
15654
|
"a",
|
|
15554
15655
|
{
|
|
15555
15656
|
href: explorer,
|
|
@@ -15557,7 +15658,7 @@ var Hash = ({
|
|
|
15557
15658
|
rel: "noreferrer noopener",
|
|
15558
15659
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
15559
15660
|
title: "Open in explorer",
|
|
15560
|
-
children: /* @__PURE__ */
|
|
15661
|
+
children: /* @__PURE__ */ jsx83(ExternalLink3, { className: "h-4 w-4" })
|
|
15561
15662
|
}
|
|
15562
15663
|
)
|
|
15563
15664
|
] });
|
|
@@ -15565,12 +15666,12 @@ var Hash = ({
|
|
|
15565
15666
|
|
|
15566
15667
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
15567
15668
|
init_base();
|
|
15568
|
-
import { useEffect as useEffect40, useState as
|
|
15569
|
-
import { jsx as
|
|
15669
|
+
import { useEffect as useEffect40, useState as useState26 } from "react";
|
|
15670
|
+
import { jsx as jsx84, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
15570
15671
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
15571
|
-
const [transactions, setTransactions] =
|
|
15572
|
-
const [loading, setLoading] =
|
|
15573
|
-
const [error, setError] =
|
|
15672
|
+
const [transactions, setTransactions] = useState26([]);
|
|
15673
|
+
const [loading, setLoading] = useState26(true);
|
|
15674
|
+
const [error, setError] = useState26(null);
|
|
15574
15675
|
useEffect40(() => {
|
|
15575
15676
|
const fetchTransactions = async () => {
|
|
15576
15677
|
try {
|
|
@@ -15617,31 +15718,31 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
15617
15718
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
15618
15719
|
};
|
|
15619
15720
|
if (loading) {
|
|
15620
|
-
return /* @__PURE__ */
|
|
15621
|
-
/* @__PURE__ */
|
|
15622
|
-
/* @__PURE__ */
|
|
15721
|
+
return /* @__PURE__ */ jsxs70("div", { className: "p-4 text-center", children: [
|
|
15722
|
+
/* @__PURE__ */ jsx84("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
15723
|
+
/* @__PURE__ */ jsx84("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
15623
15724
|
] });
|
|
15624
15725
|
}
|
|
15625
15726
|
if (error) {
|
|
15626
|
-
return /* @__PURE__ */
|
|
15627
|
-
/* @__PURE__ */
|
|
15628
|
-
/* @__PURE__ */
|
|
15727
|
+
return /* @__PURE__ */ jsxs70("div", { className: "p-4 text-center", children: [
|
|
15728
|
+
/* @__PURE__ */ jsx84("p", { className: "text-red-600 text-sm", children: error }),
|
|
15729
|
+
/* @__PURE__ */ jsx84("button", { onClick: () => window.location.reload(), className: "mt-2 text-blue-600 text-sm hover:underline", children: "Retry" })
|
|
15629
15730
|
] });
|
|
15630
15731
|
}
|
|
15631
15732
|
if (transactions.length === 0) {
|
|
15632
|
-
return /* @__PURE__ */
|
|
15733
|
+
return /* @__PURE__ */ jsx84("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx84("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
15633
15734
|
}
|
|
15634
|
-
return /* @__PURE__ */
|
|
15735
|
+
return /* @__PURE__ */ jsx84("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx84("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs70(
|
|
15635
15736
|
"div",
|
|
15636
15737
|
{
|
|
15637
15738
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
15638
15739
|
onClick: () => openTransaction(tx.hash),
|
|
15639
15740
|
children: [
|
|
15640
|
-
/* @__PURE__ */
|
|
15641
|
-
/* @__PURE__ */
|
|
15642
|
-
/* @__PURE__ */
|
|
15643
|
-
/* @__PURE__ */
|
|
15644
|
-
/* @__PURE__ */
|
|
15741
|
+
/* @__PURE__ */ jsxs70("div", { className: "flex justify-between items-start mb-2", children: [
|
|
15742
|
+
/* @__PURE__ */ jsxs70("div", { className: "flex-1", children: [
|
|
15743
|
+
/* @__PURE__ */ jsxs70("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
15744
|
+
/* @__PURE__ */ jsx84("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress3(tx.hash) }),
|
|
15745
|
+
/* @__PURE__ */ jsx84(
|
|
15645
15746
|
"span",
|
|
15646
15747
|
{
|
|
15647
15748
|
className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`,
|
|
@@ -15649,40 +15750,40 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
15649
15750
|
}
|
|
15650
15751
|
)
|
|
15651
15752
|
] }),
|
|
15652
|
-
/* @__PURE__ */
|
|
15653
|
-
/* @__PURE__ */
|
|
15654
|
-
/* @__PURE__ */
|
|
15655
|
-
/* @__PURE__ */
|
|
15753
|
+
/* @__PURE__ */ jsxs70("div", { className: "text-sm space-y-1", children: [
|
|
15754
|
+
/* @__PURE__ */ jsxs70("div", { children: [
|
|
15755
|
+
/* @__PURE__ */ jsx84("span", { className: "text-gray-600", children: "From:" }),
|
|
15756
|
+
/* @__PURE__ */ jsxs70("span", { className: "font-mono ml-1", children: [
|
|
15656
15757
|
formatAddress3(tx.from.hash),
|
|
15657
|
-
tx.from.is_contract && /* @__PURE__ */
|
|
15758
|
+
tx.from.is_contract && /* @__PURE__ */ jsx84("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
15658
15759
|
] })
|
|
15659
15760
|
] }),
|
|
15660
|
-
/* @__PURE__ */
|
|
15661
|
-
/* @__PURE__ */
|
|
15662
|
-
/* @__PURE__ */
|
|
15761
|
+
/* @__PURE__ */ jsxs70("div", { children: [
|
|
15762
|
+
/* @__PURE__ */ jsx84("span", { className: "text-gray-600", children: "To:" }),
|
|
15763
|
+
/* @__PURE__ */ jsxs70("span", { className: "font-mono ml-1", children: [
|
|
15663
15764
|
formatAddress3(tx.to.hash),
|
|
15664
|
-
tx.to.is_contract && /* @__PURE__ */
|
|
15765
|
+
tx.to.is_contract && /* @__PURE__ */ jsx84("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
15665
15766
|
] })
|
|
15666
15767
|
] }),
|
|
15667
|
-
/* @__PURE__ */
|
|
15668
|
-
/* @__PURE__ */
|
|
15669
|
-
/* @__PURE__ */
|
|
15768
|
+
/* @__PURE__ */ jsxs70("div", { children: [
|
|
15769
|
+
/* @__PURE__ */ jsx84("span", { className: "text-gray-600", children: "Value:" }),
|
|
15770
|
+
/* @__PURE__ */ jsxs70("span", { className: "font-semibold ml-1", children: [
|
|
15670
15771
|
formatValue3(tx.value),
|
|
15671
15772
|
" LUMIA"
|
|
15672
15773
|
] })
|
|
15673
15774
|
] })
|
|
15674
15775
|
] })
|
|
15675
15776
|
] }),
|
|
15676
|
-
/* @__PURE__ */
|
|
15677
|
-
/* @__PURE__ */
|
|
15678
|
-
/* @__PURE__ */
|
|
15777
|
+
/* @__PURE__ */ jsxs70("div", { className: "text-right text-xs text-gray-500", children: [
|
|
15778
|
+
/* @__PURE__ */ jsx84("div", { children: formatDate3(tx.timestamp) }),
|
|
15779
|
+
/* @__PURE__ */ jsxs70("div", { className: "mt-1", children: [
|
|
15679
15780
|
"Gas: ",
|
|
15680
15781
|
parseInt(tx.gas_used).toLocaleString()
|
|
15681
15782
|
] }),
|
|
15682
|
-
tx.method && /* @__PURE__ */
|
|
15783
|
+
tx.method && /* @__PURE__ */ jsx84("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
15683
15784
|
] })
|
|
15684
15785
|
] }),
|
|
15685
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
15786
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ jsx84("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx84("span", { className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full", children: type.replace("_", " ") }, idx)) })
|
|
15686
15787
|
]
|
|
15687
15788
|
},
|
|
15688
15789
|
tx.hash
|
|
@@ -15873,11 +15974,11 @@ function useUserOpStatus(options = {}) {
|
|
|
15873
15974
|
|
|
15874
15975
|
// src/hooks/useLogout.ts
|
|
15875
15976
|
import { logout as coreLogout, jwtTokenManager as jwtTokenManager3 } from "@lumiapassport/core/auth";
|
|
15876
|
-
import { useCallback as
|
|
15977
|
+
import { useCallback as useCallback27 } from "react";
|
|
15877
15978
|
function useLogout() {
|
|
15878
15979
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
15879
15980
|
const { callbacks } = useLumiaPassportConfig();
|
|
15880
|
-
const logout2 =
|
|
15981
|
+
const logout2 = useCallback27(async () => {
|
|
15881
15982
|
const prevAddress = address;
|
|
15882
15983
|
let userId = null;
|
|
15883
15984
|
setIsLoading(true);
|