@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.cjs
CHANGED
|
@@ -703,52 +703,72 @@ async function ensureDkgAndGetOwner(userId, _clientSeedHex) {
|
|
|
703
703
|
throw error;
|
|
704
704
|
}
|
|
705
705
|
}
|
|
706
|
+
function isChannelError(error) {
|
|
707
|
+
const message = error.message.toLowerCase();
|
|
708
|
+
return message.includes("invalid sdk channel") || message.includes("sdk channel not found") || message.includes("sdk channel expired") || // Backward compatibility
|
|
709
|
+
message === "invalid session";
|
|
710
|
+
}
|
|
706
711
|
async function signDigestWithMpc(userId, digest32, userOpDetails) {
|
|
712
|
+
const MAX_RETRIES = 1;
|
|
707
713
|
const startTime = performance.now();
|
|
708
714
|
currentSigningStats = {
|
|
709
715
|
startTime,
|
|
710
716
|
rounds: []
|
|
711
717
|
};
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
return signature;
|
|
733
|
-
} catch (error) {
|
|
734
|
-
(0, import_error_tracking.logSdkError)(
|
|
735
|
-
error instanceof Error ? error : new Error("MPC signing failed"),
|
|
736
|
-
{ userId, hasUserOpDetails: !!userOpDetails },
|
|
737
|
-
"iframe-mpc"
|
|
738
|
-
);
|
|
739
|
-
const endTime = performance.now();
|
|
740
|
-
if (currentSigningStats) {
|
|
718
|
+
let lastError;
|
|
719
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
720
|
+
try {
|
|
721
|
+
const iframeManager = getIframeManager();
|
|
722
|
+
const { jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
723
|
+
const accessToken = jwtTokenManager4.getAccessToken();
|
|
724
|
+
if (!accessToken) {
|
|
725
|
+
throw new Error("No access token available for signing");
|
|
726
|
+
}
|
|
727
|
+
const transaction = {
|
|
728
|
+
to: userOpDetails?.callTarget || "0x0000000000000000000000000000000000000000",
|
|
729
|
+
value: userOpDetails?.value || "0",
|
|
730
|
+
data: userOpDetails?.callData || "0x",
|
|
731
|
+
digest32,
|
|
732
|
+
// Pre-computed digest - DO NOT recompute!
|
|
733
|
+
// Additional UserOp fields for display in confirmation modal
|
|
734
|
+
userOpDetails
|
|
735
|
+
};
|
|
736
|
+
const signature = await iframeManager.signTransaction(userId, transaction, accessToken);
|
|
737
|
+
const endTime = performance.now();
|
|
741
738
|
currentSigningStats.endTime = endTime;
|
|
742
739
|
currentSigningStats.totalDurationMs = endTime - startTime;
|
|
740
|
+
return signature;
|
|
741
|
+
} catch (error) {
|
|
742
|
+
lastError = error instanceof Error ? error : new Error("MPC signing failed");
|
|
743
|
+
if (isChannelError(lastError) && attempt < MAX_RETRIES) {
|
|
744
|
+
console.warn(`[MPC] SDK channel error, reconnecting and retrying (attempt ${attempt + 1})...`);
|
|
745
|
+
try {
|
|
746
|
+
await getIframeManager().reconnect();
|
|
747
|
+
continue;
|
|
748
|
+
} catch (reconnectError) {
|
|
749
|
+
console.error("[MPC] Reconnect failed:", reconnectError);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
(0, import_error_tracking.logSdkError)(
|
|
753
|
+
lastError,
|
|
754
|
+
{ userId, hasUserOpDetails: !!userOpDetails, attempt },
|
|
755
|
+
"iframe-mpc"
|
|
756
|
+
);
|
|
757
|
+
const endTime = performance.now();
|
|
758
|
+
if (currentSigningStats) {
|
|
759
|
+
currentSigningStats.endTime = endTime;
|
|
760
|
+
currentSigningStats.totalDurationMs = endTime - startTime;
|
|
761
|
+
}
|
|
762
|
+
if (lastError instanceof LumiaPassportError) {
|
|
763
|
+
throw lastError;
|
|
764
|
+
}
|
|
765
|
+
throw new LumiaPassportError(
|
|
766
|
+
lastError.message,
|
|
767
|
+
ErrorCodes.MPC_SIGNING_ERROR
|
|
768
|
+
);
|
|
743
769
|
}
|
|
744
|
-
if (error instanceof LumiaPassportError) {
|
|
745
|
-
throw error;
|
|
746
|
-
}
|
|
747
|
-
throw new LumiaPassportError(
|
|
748
|
-
error instanceof Error ? error.message : "MPC signing failed",
|
|
749
|
-
ErrorCodes.MPC_SIGNING_ERROR
|
|
750
|
-
);
|
|
751
770
|
}
|
|
771
|
+
throw lastError || new Error("MPC signing failed after retries");
|
|
752
772
|
}
|
|
753
773
|
async function signTypedDataWithMpc(userId, digest32, typedData) {
|
|
754
774
|
const startTime = performance.now();
|
|
@@ -1379,7 +1399,7 @@ async function getShareVaultToken(scopes) {
|
|
|
1379
1399
|
}
|
|
1380
1400
|
return {
|
|
1381
1401
|
token: data.resourceToken,
|
|
1382
|
-
expiresAt: Date.now() + data.expiresIn * 1e3
|
|
1402
|
+
expiresAt: Date.now() + (data.expiresIn || 300) * 1e3
|
|
1383
1403
|
};
|
|
1384
1404
|
}
|
|
1385
1405
|
async function getShareRecoveryStats() {
|
|
@@ -2620,10 +2640,9 @@ var init_iframe_manager = __esm({
|
|
|
2620
2640
|
"src/internal/lib/iframe-manager.ts"() {
|
|
2621
2641
|
init_errors();
|
|
2622
2642
|
IframeManager = class {
|
|
2623
|
-
// 5 minutes
|
|
2624
2643
|
constructor(config) {
|
|
2625
2644
|
this.iframe = null;
|
|
2626
|
-
this.
|
|
2645
|
+
this.channelToken = null;
|
|
2627
2646
|
this.isReady = false;
|
|
2628
2647
|
// Message handling
|
|
2629
2648
|
this.pendingRequests = /* @__PURE__ */ new Map();
|
|
@@ -2640,6 +2659,9 @@ var init_iframe_manager = __esm({
|
|
|
2640
2659
|
this.REQUEST_TIMEOUT = 3e5;
|
|
2641
2660
|
// 5 minutes (for user interactions like consent)
|
|
2642
2661
|
this.NONCE_EXPIRY = 3e5;
|
|
2662
|
+
// 5 minutes
|
|
2663
|
+
this.HEARTBEAT_INTERVAL = 5 * 60 * 1e3;
|
|
2664
|
+
this.isReconnecting = false;
|
|
2643
2665
|
this.iframeUrl = config.iframeUrl;
|
|
2644
2666
|
this.projectId = config.projectId;
|
|
2645
2667
|
this.debug = config.debug || false;
|
|
@@ -2680,6 +2702,8 @@ var init_iframe_manager = __esm({
|
|
|
2680
2702
|
await this.readyPromise;
|
|
2681
2703
|
await this.authenticateSDK();
|
|
2682
2704
|
await this.primeProviderSessions();
|
|
2705
|
+
this.startHeartbeat();
|
|
2706
|
+
this.setupVisibilityHandler();
|
|
2683
2707
|
this.log("[IframeManager] \u2705 Iframe ready and authenticated");
|
|
2684
2708
|
}
|
|
2685
2709
|
/**
|
|
@@ -2689,18 +2713,93 @@ var init_iframe_manager = __esm({
|
|
|
2689
2713
|
this.onWalletReadyCallback = callback;
|
|
2690
2714
|
}
|
|
2691
2715
|
/**
|
|
2692
|
-
* Authenticate SDK with iframe to establish
|
|
2716
|
+
* Authenticate SDK with iframe to establish secure channel
|
|
2693
2717
|
*/
|
|
2694
2718
|
async authenticateSDK() {
|
|
2695
2719
|
const response = await this.sendMessage("SDK_AUTH", {
|
|
2696
2720
|
projectId: this.projectId
|
|
2697
2721
|
});
|
|
2698
2722
|
if (response.type === "LUMIA_PASSPORT_SDK_AUTH_SUCCESS") {
|
|
2699
|
-
this.
|
|
2723
|
+
this.channelToken = response.sessionToken;
|
|
2700
2724
|
} else {
|
|
2701
|
-
throw new Error("SDK authentication failed");
|
|
2725
|
+
throw new Error("SDK channel authentication failed");
|
|
2726
|
+
}
|
|
2727
|
+
}
|
|
2728
|
+
/**
|
|
2729
|
+
* Start periodic heartbeat to check SDK channel validity
|
|
2730
|
+
*/
|
|
2731
|
+
startHeartbeat() {
|
|
2732
|
+
if (this.heartbeatInterval) {
|
|
2733
|
+
clearInterval(this.heartbeatInterval);
|
|
2734
|
+
}
|
|
2735
|
+
this.heartbeatInterval = setInterval(async () => {
|
|
2736
|
+
if (!this.channelToken) return;
|
|
2737
|
+
try {
|
|
2738
|
+
const response = await this.sendMessage("SDK_CHANNEL_HEARTBEAT", {});
|
|
2739
|
+
if (!response.valid) {
|
|
2740
|
+
this.log("[IframeManager] SDK channel invalid, reconnecting...");
|
|
2741
|
+
await this.reconnect();
|
|
2742
|
+
}
|
|
2743
|
+
} catch (error) {
|
|
2744
|
+
this.log("[IframeManager] Heartbeat failed:", error);
|
|
2745
|
+
await this.reconnect();
|
|
2746
|
+
}
|
|
2747
|
+
}, this.HEARTBEAT_INTERVAL);
|
|
2748
|
+
this.log("[IframeManager] Heartbeat started (interval: 5 min)");
|
|
2749
|
+
}
|
|
2750
|
+
/**
|
|
2751
|
+
* Stop heartbeat
|
|
2752
|
+
*/
|
|
2753
|
+
stopHeartbeat() {
|
|
2754
|
+
if (this.heartbeatInterval) {
|
|
2755
|
+
clearInterval(this.heartbeatInterval);
|
|
2756
|
+
this.heartbeatInterval = void 0;
|
|
2757
|
+
this.log("[IframeManager] Heartbeat stopped");
|
|
2702
2758
|
}
|
|
2703
2759
|
}
|
|
2760
|
+
/**
|
|
2761
|
+
* Reconnect SDK channel after it becomes invalid
|
|
2762
|
+
*/
|
|
2763
|
+
async reconnect() {
|
|
2764
|
+
if (this.isReconnecting) {
|
|
2765
|
+
this.log("[IframeManager] Already reconnecting, skipping...");
|
|
2766
|
+
return;
|
|
2767
|
+
}
|
|
2768
|
+
this.isReconnecting = true;
|
|
2769
|
+
this.log("[IframeManager] Reconnecting SDK channel...");
|
|
2770
|
+
try {
|
|
2771
|
+
this.channelToken = null;
|
|
2772
|
+
await this.authenticateSDK();
|
|
2773
|
+
this.log("[IframeManager] \u2705 SDK channel reconnected");
|
|
2774
|
+
} catch (error) {
|
|
2775
|
+
this.log("[IframeManager] \u274C Reconnect failed:", error);
|
|
2776
|
+
throw error;
|
|
2777
|
+
} finally {
|
|
2778
|
+
this.isReconnecting = false;
|
|
2779
|
+
}
|
|
2780
|
+
}
|
|
2781
|
+
/**
|
|
2782
|
+
* Setup visibility change handler to check channel when tab becomes visible
|
|
2783
|
+
*/
|
|
2784
|
+
setupVisibilityHandler() {
|
|
2785
|
+
if (typeof document === "undefined") return;
|
|
2786
|
+
document.addEventListener("visibilitychange", async () => {
|
|
2787
|
+
if (document.visibilityState === "visible" && this.channelToken) {
|
|
2788
|
+
this.log("[IframeManager] Tab visible, checking SDK channel...");
|
|
2789
|
+
try {
|
|
2790
|
+
const response = await this.sendMessage("SDK_CHANNEL_HEARTBEAT", {});
|
|
2791
|
+
if (!response.valid) {
|
|
2792
|
+
this.log("[IframeManager] SDK channel expired while tab was hidden");
|
|
2793
|
+
await this.reconnect();
|
|
2794
|
+
}
|
|
2795
|
+
} catch (error) {
|
|
2796
|
+
this.log("[IframeManager] Channel check failed, reconnecting...");
|
|
2797
|
+
await this.reconnect();
|
|
2798
|
+
}
|
|
2799
|
+
}
|
|
2800
|
+
});
|
|
2801
|
+
this.log("[IframeManager] Visibility handler setup");
|
|
2802
|
+
}
|
|
2704
2803
|
/**
|
|
2705
2804
|
* Handle incoming postMessage events
|
|
2706
2805
|
*/
|
|
@@ -2724,6 +2823,7 @@ var init_iframe_manager = __esm({
|
|
|
2724
2823
|
"LUMIA_PASSPORT_TRUSTED_APP_REMOVED",
|
|
2725
2824
|
"LUMIA_PASSPORT_REQUEST_NEW_TOKEN",
|
|
2726
2825
|
"LUMIA_PASSPORT_TOKEN_REFRESHED",
|
|
2826
|
+
"LUMIA_PASSPORT_HEARTBEAT_RESPONSE",
|
|
2727
2827
|
"LUMIA_PASSPORT_RESPONSE",
|
|
2728
2828
|
"LUMIA_PASSPORT_ERROR"
|
|
2729
2829
|
];
|
|
@@ -2852,10 +2952,11 @@ var init_iframe_manager = __esm({
|
|
|
2852
2952
|
projectId: this.projectId,
|
|
2853
2953
|
data: {
|
|
2854
2954
|
...data,
|
|
2855
|
-
sessionToken: this.
|
|
2955
|
+
sessionToken: this.channelToken
|
|
2956
|
+
// named sessionToken for backward compatibility with iframe
|
|
2856
2957
|
}
|
|
2857
2958
|
};
|
|
2858
|
-
if (this.
|
|
2959
|
+
if (this.channelToken) {
|
|
2859
2960
|
message.hmac = await this.computeHMAC(message);
|
|
2860
2961
|
}
|
|
2861
2962
|
const responsePromise = new Promise((resolve, reject) => {
|
|
@@ -2877,7 +2978,7 @@ var init_iframe_manager = __esm({
|
|
|
2877
2978
|
return responsePromise;
|
|
2878
2979
|
}
|
|
2879
2980
|
/**
|
|
2880
|
-
* Compute HMAC for message authentication
|
|
2981
|
+
* Compute HMAC for message authentication using SDK channel token
|
|
2881
2982
|
*/
|
|
2882
2983
|
async computeHMAC(message) {
|
|
2883
2984
|
const encoder = new TextEncoder();
|
|
@@ -2889,7 +2990,7 @@ var init_iframe_manager = __esm({
|
|
|
2889
2990
|
data: JSON.stringify(message.data)
|
|
2890
2991
|
});
|
|
2891
2992
|
const data = encoder.encode(payload);
|
|
2892
|
-
const key = encoder.encode(this.
|
|
2993
|
+
const key = encoder.encode(this.channelToken);
|
|
2893
2994
|
const cryptoKey = await crypto.subtle.importKey("raw", key, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
2894
2995
|
const signature = await crypto.subtle.sign("HMAC", cryptoKey, data);
|
|
2895
2996
|
return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
@@ -3634,6 +3735,7 @@ var init_iframe_manager = __esm({
|
|
|
3634
3735
|
*/
|
|
3635
3736
|
destroy() {
|
|
3636
3737
|
this.log("[IframeManager] Destroying iframe...");
|
|
3738
|
+
this.stopHeartbeat();
|
|
3637
3739
|
this.pendingRequests.forEach((pending) => {
|
|
3638
3740
|
pending.reject(new Error("Iframe manager destroyed"));
|
|
3639
3741
|
});
|
|
@@ -3647,7 +3749,7 @@ var init_iframe_manager = __esm({
|
|
|
3647
3749
|
}
|
|
3648
3750
|
this.iframe = null;
|
|
3649
3751
|
this.isReady = false;
|
|
3650
|
-
this.
|
|
3752
|
+
this.channelToken = null;
|
|
3651
3753
|
this.log("[IframeManager] \u2705 Destroyed");
|
|
3652
3754
|
}
|
|
3653
3755
|
/**
|
|
@@ -4542,7 +4644,7 @@ __export(index_exports, {
|
|
|
4542
4644
|
module.exports = __toCommonJS(index_exports);
|
|
4543
4645
|
|
|
4544
4646
|
// src/styles/built.css
|
|
4545
|
-
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}';
|
|
4647
|
+
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}';
|
|
4546
4648
|
|
|
4547
4649
|
// src/context/LumiaPassportContext.tsx
|
|
4548
4650
|
var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
|
|
@@ -5570,7 +5672,7 @@ function Header() {
|
|
|
5570
5672
|
// package.json
|
|
5571
5673
|
var package_default = {
|
|
5572
5674
|
name: "@lumiapassport/ui-kit",
|
|
5573
|
-
version: "1.
|
|
5675
|
+
version: "1.16.1",
|
|
5574
5676
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
5575
5677
|
type: "module",
|
|
5576
5678
|
main: "./dist/index.cjs",
|
|
@@ -9991,6 +10093,7 @@ var useManageWalletStore = (0, import_zustand5.create)((set) => ({
|
|
|
9991
10093
|
emailCode: "",
|
|
9992
10094
|
emailCodeExpiresIn: 0,
|
|
9993
10095
|
linkIsLoading: false,
|
|
10096
|
+
linkError: null,
|
|
9994
10097
|
providerType: null,
|
|
9995
10098
|
confirmUnlink: null,
|
|
9996
10099
|
setAlert: (alert2) => set({ alert: alert2 }),
|
|
@@ -9999,6 +10102,7 @@ var useManageWalletStore = (0, import_zustand5.create)((set) => ({
|
|
|
9999
10102
|
setEmailCode: (emailCode) => set({ emailCode }),
|
|
10000
10103
|
setEmailCodeExpiresIn: (emailCodeExpiresIn) => set({ emailCodeExpiresIn }),
|
|
10001
10104
|
setLinkIsLoading: (linkIsLoading) => set({ linkIsLoading }),
|
|
10105
|
+
setLinkError: (linkError) => set({ linkError }),
|
|
10002
10106
|
setProviderType: (providerType) => set({ providerType }),
|
|
10003
10107
|
setConfirmUnlink: (confirmUnlink) => set({ confirmUnlink })
|
|
10004
10108
|
}));
|
|
@@ -10815,144 +10919,28 @@ function UnlinkProviderMenu() {
|
|
|
10815
10919
|
] });
|
|
10816
10920
|
}
|
|
10817
10921
|
|
|
10818
|
-
// src/internal/components/
|
|
10819
|
-
var import_lucide_react36 = require("lucide-react");
|
|
10820
|
-
|
|
10821
|
-
// src/internal/hooks/useNicknameInfo.ts
|
|
10822
|
-
var import_react_query27 = require("@tanstack/react-query");
|
|
10823
|
-
init_nickname();
|
|
10824
|
-
init_profile();
|
|
10825
|
-
function useNicknameInfo(enabled = true) {
|
|
10826
|
-
const query = (0, import_react_query27.useQuery)({
|
|
10827
|
-
queryKey: [QUERY_KEYS.nicknameInfo],
|
|
10828
|
-
queryFn: getNicknameInfo,
|
|
10829
|
-
enabled,
|
|
10830
|
-
staleTime: 1e3 * 60 * 5,
|
|
10831
|
-
// 5 minutes
|
|
10832
|
-
retry: 1
|
|
10833
|
-
});
|
|
10834
|
-
return {
|
|
10835
|
-
data: query.data,
|
|
10836
|
-
isLoading: query.isLoading,
|
|
10837
|
-
isError: query.isError,
|
|
10838
|
-
error: query.error,
|
|
10839
|
-
refetch: query.refetch
|
|
10840
|
-
};
|
|
10841
|
-
}
|
|
10842
|
-
|
|
10843
|
-
// src/internal/components/NicknameSettings/NicknameEditForm.tsx
|
|
10844
|
-
var import_lucide_react35 = require("lucide-react");
|
|
10845
|
-
var import_react41 = require("react");
|
|
10846
|
-
|
|
10847
|
-
// src/internal/hooks/useChangeNickname.ts
|
|
10848
|
-
var import_react_query28 = require("@tanstack/react-query");
|
|
10849
|
-
init_nickname();
|
|
10850
|
-
init_profile();
|
|
10851
|
-
function useChangeNickname(options) {
|
|
10852
|
-
const queryClient3 = (0, import_react_query28.useQueryClient)();
|
|
10853
|
-
const mutation = (0, import_react_query28.useMutation)({
|
|
10854
|
-
mutationFn: (handle) => changeNickname(handle),
|
|
10855
|
-
onSuccess: (result) => {
|
|
10856
|
-
queryClient3.invalidateQueries({ queryKey: [QUERY_KEYS.nicknameInfo] });
|
|
10857
|
-
queryClient3.invalidateQueries({ queryKey: [QUERY_KEYS.userProfile] });
|
|
10858
|
-
options?.onSuccess?.(result);
|
|
10859
|
-
},
|
|
10860
|
-
onError: (error) => {
|
|
10861
|
-
const nicknameError = {
|
|
10862
|
-
error: error.error || error.message,
|
|
10863
|
-
code: error.code || "UNKNOWN_ERROR",
|
|
10864
|
-
daysRemaining: error.daysRemaining,
|
|
10865
|
-
canChangeAt: error.canChangeAt
|
|
10866
|
-
};
|
|
10867
|
-
options?.onError?.(nicknameError);
|
|
10868
|
-
}
|
|
10869
|
-
});
|
|
10870
|
-
return {
|
|
10871
|
-
mutate: mutation.mutate,
|
|
10872
|
-
mutateAsync: mutation.mutateAsync,
|
|
10873
|
-
isLoading: mutation.isPending,
|
|
10874
|
-
isError: mutation.isError,
|
|
10875
|
-
isSuccess: mutation.isSuccess,
|
|
10876
|
-
error: mutation.error ? {
|
|
10877
|
-
error: mutation.error.error || mutation.error.message,
|
|
10878
|
-
code: mutation.error.code || "UNKNOWN_ERROR",
|
|
10879
|
-
daysRemaining: mutation.error.daysRemaining,
|
|
10880
|
-
canChangeAt: mutation.error.canChangeAt
|
|
10881
|
-
} : null,
|
|
10882
|
-
data: mutation.data,
|
|
10883
|
-
reset: mutation.reset
|
|
10884
|
-
};
|
|
10885
|
-
}
|
|
10886
|
-
|
|
10887
|
-
// src/internal/hooks/useNicknameAvailability.ts
|
|
10922
|
+
// src/internal/components/NicknameMenu/NicknameMenu.tsx
|
|
10888
10923
|
var import_react_query29 = require("@tanstack/react-query");
|
|
10889
|
-
var
|
|
10924
|
+
var import_dayjs2 = __toESM(require("dayjs"), 1);
|
|
10925
|
+
var import_lucide_react36 = require("lucide-react");
|
|
10926
|
+
var import_react42 = require("react");
|
|
10890
10927
|
init_nickname();
|
|
10891
10928
|
init_profile();
|
|
10892
10929
|
|
|
10893
|
-
// src/internal/lib/nickname-
|
|
10894
|
-
|
|
10895
|
-
|
|
10896
|
-
|
|
10897
|
-
|
|
10898
|
-
|
|
10899
|
-
if (
|
|
10900
|
-
|
|
10901
|
-
|
|
10902
|
-
|
|
10903
|
-
return { valid: false, error: "TOO_LONG" };
|
|
10904
|
-
}
|
|
10905
|
-
if (!NICKNAME_PATTERN.test(normalized)) {
|
|
10906
|
-
return { valid: false, error: "INVALID_CHARS" };
|
|
10907
|
-
}
|
|
10908
|
-
if (normalized.startsWith("_") || normalized.endsWith("_") || normalized.includes("__")) {
|
|
10909
|
-
return { valid: false, error: "INVALID_UNDERSCORE" };
|
|
10910
|
-
}
|
|
10911
|
-
return { valid: true };
|
|
10912
|
-
}
|
|
10913
|
-
function normalizeNickname(handle) {
|
|
10914
|
-
return handle.replace(/^@/, "").toLowerCase().trim();
|
|
10930
|
+
// src/internal/lib/nickname-cooldown.ts
|
|
10931
|
+
function getDaysRemaining(cooldownEndsAt) {
|
|
10932
|
+
if (!cooldownEndsAt) return 0;
|
|
10933
|
+
const endDate = new Date(cooldownEndsAt);
|
|
10934
|
+
const now = /* @__PURE__ */ new Date();
|
|
10935
|
+
if (isNaN(endDate.getTime())) return 0;
|
|
10936
|
+
if (endDate <= now) return 0;
|
|
10937
|
+
const diffMs = endDate.getTime() - now.getTime();
|
|
10938
|
+
const diffDays = Math.ceil(diffMs / (1e3 * 60 * 60 * 24));
|
|
10939
|
+
return Math.max(0, diffDays);
|
|
10915
10940
|
}
|
|
10916
10941
|
|
|
10917
|
-
// src/internal/
|
|
10918
|
-
var
|
|
10919
|
-
function useNicknameAvailability(handle, enabled = true) {
|
|
10920
|
-
const [debouncedHandle, setDebouncedHandle] = (0, import_react40.useState)("");
|
|
10921
|
-
const [isDebouncing, setIsDebouncing] = (0, import_react40.useState)(false);
|
|
10922
|
-
const normalized = normalizeNickname(handle);
|
|
10923
|
-
const validation = validateNickname(handle);
|
|
10924
|
-
const isValidForCheck = validation.valid && normalized.length > 0;
|
|
10925
|
-
(0, import_react40.useEffect)(() => {
|
|
10926
|
-
if (!isValidForCheck || !enabled) {
|
|
10927
|
-
setDebouncedHandle("");
|
|
10928
|
-
setIsDebouncing(false);
|
|
10929
|
-
return;
|
|
10930
|
-
}
|
|
10931
|
-
setIsDebouncing(true);
|
|
10932
|
-
const timer = setTimeout(() => {
|
|
10933
|
-
setDebouncedHandle(normalized);
|
|
10934
|
-
setIsDebouncing(false);
|
|
10935
|
-
}, DEBOUNCE_MS);
|
|
10936
|
-
return () => {
|
|
10937
|
-
clearTimeout(timer);
|
|
10938
|
-
};
|
|
10939
|
-
}, [normalized, isValidForCheck, enabled]);
|
|
10940
|
-
const query = (0, import_react_query29.useQuery)({
|
|
10941
|
-
queryKey: QUERY_KEYS.nicknameAvailability(debouncedHandle),
|
|
10942
|
-
queryFn: () => checkNicknameAvailability(debouncedHandle),
|
|
10943
|
-
enabled: enabled && isValidForCheck && debouncedHandle.length > 0,
|
|
10944
|
-
staleTime: 1e3 * 30,
|
|
10945
|
-
// 30 seconds
|
|
10946
|
-
retry: 1
|
|
10947
|
-
});
|
|
10948
|
-
return {
|
|
10949
|
-
data: query.data,
|
|
10950
|
-
isLoading: query.isLoading,
|
|
10951
|
-
isChecking: isDebouncing || query.isFetching,
|
|
10952
|
-
isError: query.isError,
|
|
10953
|
-
error: query.error
|
|
10954
|
-
};
|
|
10955
|
-
}
|
|
10942
|
+
// src/internal/components/NicknameMenu/NicknameAvailabilityIndicator.tsx
|
|
10943
|
+
var import_lucide_react34 = require("lucide-react");
|
|
10956
10944
|
|
|
10957
10945
|
// src/internal/lib/nickname-errors.ts
|
|
10958
10946
|
var NICKNAME_ERROR_MESSAGES = {
|
|
@@ -10978,8 +10966,7 @@ function getNicknameErrorMessage(code, params) {
|
|
|
10978
10966
|
return message;
|
|
10979
10967
|
}
|
|
10980
10968
|
|
|
10981
|
-
// src/internal/components/
|
|
10982
|
-
var import_lucide_react34 = require("lucide-react");
|
|
10969
|
+
// src/internal/components/NicknameMenu/NicknameAvailabilityIndicator.tsx
|
|
10983
10970
|
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
10984
10971
|
function NicknameAvailabilityIndicator({
|
|
10985
10972
|
isChecking,
|
|
@@ -10990,8 +10977,8 @@ function NicknameAvailabilityIndicator({
|
|
|
10990
10977
|
return null;
|
|
10991
10978
|
}
|
|
10992
10979
|
if (isChecking) {
|
|
10993
|
-
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
10994
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.Loader, { className: "w-
|
|
10980
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Highlight, { className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10981
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.Loader, { className: "w-4 h-4 animate-spin" }),
|
|
10995
10982
|
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: "Checking availability..." })
|
|
10996
10983
|
] });
|
|
10997
10984
|
}
|
|
@@ -10999,197 +10986,302 @@ function NicknameAvailabilityIndicator({
|
|
|
10999
10986
|
return null;
|
|
11000
10987
|
}
|
|
11001
10988
|
if (availability.available) {
|
|
11002
|
-
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("
|
|
11003
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.Check, { className: "w-
|
|
10989
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10990
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.Check, { className: "w-4 h-4" }),
|
|
11004
10991
|
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: "Nickname is available" })
|
|
11005
10992
|
] });
|
|
11006
10993
|
}
|
|
11007
10994
|
const reason = availability.reason ? getNicknameErrorMessage(availability.reason) : "This nickname is not available";
|
|
11008
|
-
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("
|
|
11009
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.X, { className: "w-
|
|
10995
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
10996
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.X, { className: "w-4 h-4" }),
|
|
11010
10997
|
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: reason })
|
|
11011
10998
|
] });
|
|
11012
10999
|
}
|
|
11013
11000
|
|
|
11014
|
-
// src/internal/components/
|
|
11001
|
+
// src/internal/components/NicknameMenu/NicknameEditForm.tsx
|
|
11002
|
+
var import_react_query27 = require("@tanstack/react-query");
|
|
11003
|
+
var import_lucide_react35 = require("lucide-react");
|
|
11004
|
+
var import_react40 = require("react");
|
|
11005
|
+
init_nickname();
|
|
11006
|
+
init_profile();
|
|
11007
|
+
|
|
11008
|
+
// src/internal/lib/nickname-validation.ts
|
|
11009
|
+
var NICKNAME_MIN_LENGTH = 3;
|
|
11010
|
+
var NICKNAME_MAX_LENGTH = 20;
|
|
11011
|
+
var NICKNAME_PATTERN = /^[a-z0-9_]+$/;
|
|
11012
|
+
function validateNickname(handle) {
|
|
11013
|
+
const normalized = handle.replace(/^@/, "").toLowerCase().trim();
|
|
11014
|
+
if (normalized.length < NICKNAME_MIN_LENGTH) {
|
|
11015
|
+
return { valid: false, error: "TOO_SHORT" };
|
|
11016
|
+
}
|
|
11017
|
+
if (normalized.length > NICKNAME_MAX_LENGTH) {
|
|
11018
|
+
return { valid: false, error: "TOO_LONG" };
|
|
11019
|
+
}
|
|
11020
|
+
if (!NICKNAME_PATTERN.test(normalized)) {
|
|
11021
|
+
return { valid: false, error: "INVALID_CHARS" };
|
|
11022
|
+
}
|
|
11023
|
+
if (normalized.startsWith("_") || normalized.endsWith("_") || normalized.includes("__")) {
|
|
11024
|
+
return { valid: false, error: "INVALID_UNDERSCORE" };
|
|
11025
|
+
}
|
|
11026
|
+
return { valid: true };
|
|
11027
|
+
}
|
|
11028
|
+
function normalizeNickname(handle) {
|
|
11029
|
+
return handle.replace(/^@/, "").toLowerCase().trim();
|
|
11030
|
+
}
|
|
11031
|
+
|
|
11032
|
+
// src/internal/components/NicknameMenu/NicknameEditForm.tsx
|
|
11015
11033
|
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
11016
|
-
function NicknameEditForm(
|
|
11017
|
-
const
|
|
11018
|
-
|
|
11019
|
-
|
|
11020
|
-
|
|
11021
|
-
|
|
11022
|
-
|
|
11023
|
-
|
|
11024
|
-
|
|
11034
|
+
function NicknameEditForm(props) {
|
|
11035
|
+
const {
|
|
11036
|
+
inputValue,
|
|
11037
|
+
setInputValue,
|
|
11038
|
+
isUnavailable,
|
|
11039
|
+
isSameAsCurrentNickname,
|
|
11040
|
+
isAvailabilityChecking,
|
|
11041
|
+
//
|
|
11042
|
+
clientError,
|
|
11043
|
+
setClientError,
|
|
11044
|
+
info
|
|
11045
|
+
} = props;
|
|
11046
|
+
const { handle: currentNickname, canChange } = info || { handle: "", canChange: false };
|
|
11047
|
+
const qc = (0, import_react_query27.useQueryClient)();
|
|
11048
|
+
const [isNicknameCopied, setIsNicknameCopied] = (0, import_react40.useState)(false);
|
|
11049
|
+
const {
|
|
11050
|
+
mutate: changeNickname2,
|
|
11051
|
+
isError: isNicknameChangeError,
|
|
11052
|
+
isPending: isNicknameChanging,
|
|
11053
|
+
isSuccess: isNicknameChangeSuccess,
|
|
11054
|
+
// error: nicknameChangeError,
|
|
11055
|
+
reset
|
|
11056
|
+
} = (0, import_react_query27.useMutation)({
|
|
11057
|
+
mutationFn: (handle) => changeNickname(handle),
|
|
11025
11058
|
onSuccess: () => {
|
|
11026
|
-
|
|
11027
|
-
|
|
11028
|
-
|
|
11059
|
+
qc.invalidateQueries({ queryKey: [QUERY_KEYS.nicknameInfo] });
|
|
11060
|
+
qc.invalidateQueries({ queryKey: [QUERY_KEYS.userProfile] });
|
|
11061
|
+
},
|
|
11062
|
+
onError: (error) => {
|
|
11063
|
+
console.error("Nickname change error:", error);
|
|
11064
|
+
const changeNicknameError = error;
|
|
11065
|
+
setClientError(
|
|
11066
|
+
changeNicknameError ? getNicknameErrorMessage(changeNicknameError.code, {
|
|
11067
|
+
days: changeNicknameError.daysRemaining,
|
|
11068
|
+
canChangeAt: changeNicknameError.canChangeAt
|
|
11069
|
+
}) : null
|
|
11070
|
+
);
|
|
11029
11071
|
}
|
|
11030
11072
|
});
|
|
11031
|
-
const handleInputChange = (0,
|
|
11073
|
+
const handleInputChange = (0, import_react40.useCallback)(
|
|
11032
11074
|
(e) => {
|
|
11033
11075
|
const value = e.target.value;
|
|
11034
11076
|
setInputValue(value);
|
|
11035
11077
|
if (clientError) setClientError(null);
|
|
11036
|
-
if (
|
|
11037
|
-
if (value
|
|
11038
|
-
|
|
11039
|
-
|
|
11040
|
-
|
|
11041
|
-
}
|
|
11078
|
+
if (isNicknameChangeError || isNicknameChangeSuccess) reset();
|
|
11079
|
+
if (value?.length < 1) return;
|
|
11080
|
+
const validation = validateNickname(value);
|
|
11081
|
+
if (!validation.valid && validation.error) {
|
|
11082
|
+
setClientError(getNicknameErrorMessage(validation.error));
|
|
11042
11083
|
}
|
|
11043
11084
|
},
|
|
11044
|
-
[clientError,
|
|
11085
|
+
[clientError, isNicknameChangeError, isNicknameChangeSuccess, reset]
|
|
11045
11086
|
);
|
|
11046
|
-
const handleSubmit = (0,
|
|
11087
|
+
const handleSubmit = (0, import_react40.useCallback)(
|
|
11047
11088
|
(e) => {
|
|
11089
|
+
if (!canChange) return;
|
|
11048
11090
|
e.preventDefault();
|
|
11049
|
-
const
|
|
11050
|
-
if (
|
|
11091
|
+
const normalized = normalizeNickname(inputValue);
|
|
11092
|
+
if (normalized === currentNickname.toLowerCase()) {
|
|
11051
11093
|
setClientError("This is already your nickname");
|
|
11052
11094
|
return;
|
|
11053
11095
|
}
|
|
11054
|
-
const
|
|
11055
|
-
if (!
|
|
11056
|
-
setClientError(getNicknameErrorMessage(
|
|
11096
|
+
const validation = validateNickname(inputValue);
|
|
11097
|
+
if (!validation.valid && validation.error) {
|
|
11098
|
+
setClientError(getNicknameErrorMessage(validation.error));
|
|
11057
11099
|
return;
|
|
11058
11100
|
}
|
|
11059
|
-
|
|
11101
|
+
changeNickname2(normalized);
|
|
11060
11102
|
},
|
|
11061
|
-
[inputValue,
|
|
11103
|
+
[inputValue, currentNickname, canChange, changeNickname2]
|
|
11062
11104
|
);
|
|
11063
|
-
const
|
|
11064
|
-
|
|
11065
|
-
|
|
11066
|
-
}) : null);
|
|
11067
|
-
const isUnavailable = shouldCheckAvailability && availability && !availability.available;
|
|
11068
|
-
const isSubmitDisabled = !canChange || isLoading || isChecking || inputValue.length === 0 || !!clientError || isSameAsCurrentHandle || isUnavailable;
|
|
11069
|
-
if (!canChange) {
|
|
11070
|
-
return null;
|
|
11071
|
-
}
|
|
11072
|
-
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("form", { onSubmit: handleSubmit, className: "w-full flex flex-col gap-3", children: [
|
|
11073
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
11074
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "New nickname" }),
|
|
11105
|
+
const isSubmitDisabled = !canChange || isNicknameChanging || isAvailabilityChecking || inputValue.length === 0 || !!clientError || isSameAsCurrentNickname || isUnavailable;
|
|
11106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
|
|
11107
|
+
canChange ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("form", { onSubmit: handleSubmit, className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11075
11108
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11076
11109
|
Input,
|
|
11077
11110
|
{
|
|
11111
|
+
Icon: import_lucide_react35.AtSign,
|
|
11078
11112
|
value: inputValue,
|
|
11079
11113
|
onChange: handleInputChange,
|
|
11080
11114
|
placeholder: "Enter new nickname",
|
|
11081
|
-
disabled:
|
|
11082
|
-
|
|
11115
|
+
disabled: isNicknameChanging,
|
|
11116
|
+
className: "flex-1"
|
|
11083
11117
|
}
|
|
11084
11118
|
),
|
|
11085
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("
|
|
11086
|
-
|
|
11119
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Button, { type: "submit", size: "large", disabled: isSubmitDisabled, className: "w-12", children: isNicknameChanging ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react35.Loader, { className: "w-4 h-4 animate-spin" }) : isNicknameChangeSuccess ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react35.Check, { className: "w-4 h-4" }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react35.ChevronRight, { className: "w-4 h-4" }) })
|
|
11120
|
+
] }) }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("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: [
|
|
11121
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
11122
|
+
"span",
|
|
11123
|
+
{
|
|
11124
|
+
className: cn("text-lg font-semibold leading-5 transition-colors duration-200", {
|
|
11125
|
+
"text-[var(--l-pass-fg-muted)]": !currentNickname.length
|
|
11126
|
+
}),
|
|
11127
|
+
children: [
|
|
11128
|
+
!!currentNickname.length && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: "@" }),
|
|
11129
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: currentNickname || "your nickname" })
|
|
11130
|
+
]
|
|
11131
|
+
}
|
|
11132
|
+
),
|
|
11133
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11134
|
+
Button,
|
|
11135
|
+
{
|
|
11136
|
+
variant: "ghost",
|
|
11137
|
+
size: "icon",
|
|
11138
|
+
onClick: () => {
|
|
11139
|
+
if (!!isNicknameCopied) return;
|
|
11140
|
+
navigator.clipboard.writeText(currentNickname);
|
|
11141
|
+
setIsNicknameCopied(true);
|
|
11142
|
+
setTimeout(() => setIsNicknameCopied(false), 2e3);
|
|
11143
|
+
},
|
|
11144
|
+
children: isNicknameCopied ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(PositiveIcon, { className: "w-4 h-4" }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react35.Copy, { className: "w-4 h-4" })
|
|
11145
|
+
}
|
|
11146
|
+
)
|
|
11087
11147
|
] }),
|
|
11088
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
11089
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react35.Loader, { className: "w-4 h-4 mr-2 animate-spin" }),
|
|
11090
|
-
"Changing..."
|
|
11091
|
-
] }) : isSuccess ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
|
|
11092
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react35.Check, { className: "w-4 h-4 mr-2" }),
|
|
11093
|
-
"Nickname changed!"
|
|
11094
|
-
] }) : "Change Nickname" })
|
|
11148
|
+
!!canChange && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "w-full flex items-center leadding-4 text-[10px]", children: "3-20 characters, letters, numbers, and underscores only" })
|
|
11095
11149
|
] });
|
|
11096
11150
|
}
|
|
11097
11151
|
|
|
11098
|
-
// src/internal/components/
|
|
11099
|
-
var
|
|
11100
|
-
|
|
11101
|
-
|
|
11102
|
-
|
|
11103
|
-
|
|
11104
|
-
|
|
11105
|
-
const
|
|
11106
|
-
|
|
11107
|
-
|
|
11108
|
-
const
|
|
11109
|
-
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
const
|
|
11115
|
-
|
|
11116
|
-
|
|
11117
|
-
|
|
11118
|
-
|
|
11119
|
-
|
|
11152
|
+
// src/internal/components/NicknameMenu/useNickname.ts
|
|
11153
|
+
var import_react_query28 = require("@tanstack/react-query");
|
|
11154
|
+
var import_react41 = require("react");
|
|
11155
|
+
init_nickname();
|
|
11156
|
+
init_profile();
|
|
11157
|
+
var DEBOUNCE_MS = 700;
|
|
11158
|
+
function useNicknameForm(currentNickname) {
|
|
11159
|
+
const [inputValue, setInputValue] = (0, import_react41.useState)("");
|
|
11160
|
+
const normalizedInputValue = normalizeNickname(inputValue);
|
|
11161
|
+
const validation = validateNickname(inputValue);
|
|
11162
|
+
const isValidForCheck = validation.valid && normalizedInputValue.length > 0;
|
|
11163
|
+
(0, import_react41.useEffect)(() => {
|
|
11164
|
+
console.log("[NICKNAME] form setup", currentNickname);
|
|
11165
|
+
setInputValue(currentNickname);
|
|
11166
|
+
}, [currentNickname]);
|
|
11167
|
+
const [queryInputValue, setQueryInputValue] = (0, import_react41.useState)("");
|
|
11168
|
+
const isSameAsCurrentNickname = normalizedInputValue === currentNickname.toLowerCase();
|
|
11169
|
+
const shouldCheckAvailability = validation.valid && !isSameAsCurrentNickname && inputValue.length > 0;
|
|
11170
|
+
(0, import_react41.useEffect)(() => {
|
|
11171
|
+
if (!isValidForCheck || !shouldCheckAvailability) {
|
|
11172
|
+
setQueryInputValue("");
|
|
11173
|
+
return;
|
|
11174
|
+
}
|
|
11175
|
+
const timer = setTimeout(() => {
|
|
11176
|
+
setQueryInputValue(normalizedInputValue);
|
|
11177
|
+
}, DEBOUNCE_MS);
|
|
11178
|
+
return () => {
|
|
11179
|
+
clearTimeout(timer);
|
|
11180
|
+
};
|
|
11181
|
+
}, [normalizedInputValue, isValidForCheck, shouldCheckAvailability]);
|
|
11182
|
+
const query = (0, import_react_query28.useQuery)({
|
|
11183
|
+
retry: 1,
|
|
11184
|
+
enabled: shouldCheckAvailability && isValidForCheck && queryInputValue.length > 0,
|
|
11185
|
+
queryKey: QUERY_KEYS.nicknameAvailability(queryInputValue),
|
|
11186
|
+
queryFn: () => checkNicknameAvailability(queryInputValue),
|
|
11187
|
+
staleTime: 1e3 * 30
|
|
11188
|
+
// 30 seconds stale to not check same InputValue repeatedly
|
|
11120
11189
|
});
|
|
11190
|
+
return {
|
|
11191
|
+
inputValue,
|
|
11192
|
+
setInputValue,
|
|
11193
|
+
isSameAsCurrentNickname,
|
|
11194
|
+
isUnavailable: shouldCheckAvailability && !query?.data?.available,
|
|
11195
|
+
shouldCheckAvailability,
|
|
11196
|
+
availabilityQuery: query
|
|
11197
|
+
};
|
|
11121
11198
|
}
|
|
11122
11199
|
|
|
11123
|
-
// src/internal/components/
|
|
11200
|
+
// src/internal/components/NicknameMenu/NicknameMenu.tsx
|
|
11124
11201
|
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
11125
|
-
function
|
|
11126
|
-
const
|
|
11127
|
-
const
|
|
11128
|
-
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react42.Fragment, { children: [
|
|
11129
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
11130
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Your nickname" }),
|
|
11131
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-lg font-bold text-[var(--l-pass-fg)]", children: info.displayHandle })
|
|
11132
|
-
] }),
|
|
11133
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-4 text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
11134
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
|
|
11135
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: "Created" }),
|
|
11136
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.createdAt).toLocaleDateString(void 0, {
|
|
11137
|
-
year: "numeric",
|
|
11138
|
-
month: "short",
|
|
11139
|
-
day: "numeric"
|
|
11140
|
-
}) })
|
|
11141
|
-
] }),
|
|
11142
|
-
info.changedAt && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
|
|
11143
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: "Last changed" }),
|
|
11144
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.changedAt).toLocaleDateString(void 0, {
|
|
11145
|
-
year: "numeric",
|
|
11146
|
-
month: "short",
|
|
11147
|
-
day: "numeric"
|
|
11148
|
-
}) })
|
|
11149
|
-
] }),
|
|
11150
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
|
|
11151
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: "Times changed" }),
|
|
11152
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: info.changeCount })
|
|
11153
|
-
] })
|
|
11154
|
-
] }),
|
|
11155
|
-
!info.canChange && info.cooldownEndsAt && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-warning)]", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { className: "text-sm text-[var(--l-pass-warning)]", children: [
|
|
11156
|
-
"You can change your nickname again on ",
|
|
11157
|
-
cooldownEndDate,
|
|
11158
|
-
" (",
|
|
11159
|
-
daysRemaining,
|
|
11160
|
-
" days remaining)"
|
|
11161
|
-
] }) }),
|
|
11162
|
-
info.canChange && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-success)]", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-sm text-[var(--l-pass-success)]", children: "You can change your nickname" }) })
|
|
11163
|
-
] });
|
|
11164
|
-
}
|
|
11165
|
-
|
|
11166
|
-
// src/internal/components/NicknameSettings/NicknameSettings.tsx
|
|
11167
|
-
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
11168
|
-
function NicknameSettings() {
|
|
11202
|
+
function NicknameMenu() {
|
|
11203
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
11204
|
+
const [clientError, setClientError] = (0, import_react42.useState)(null);
|
|
11169
11205
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11170
11206
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11171
|
-
const {
|
|
11172
|
-
|
|
11207
|
+
const {
|
|
11208
|
+
data: nicknameInfo,
|
|
11209
|
+
isLoading: isNicknameInfoLoading,
|
|
11210
|
+
error: nicknameInfoError
|
|
11211
|
+
} = (0, import_react_query29.useQuery)({
|
|
11212
|
+
retry: 1,
|
|
11213
|
+
enabled: !!address,
|
|
11214
|
+
queryKey: [QUERY_KEYS.nicknameInfo, address],
|
|
11215
|
+
queryFn: getNicknameInfo
|
|
11216
|
+
});
|
|
11217
|
+
const {
|
|
11218
|
+
availabilityQuery,
|
|
11219
|
+
inputValue,
|
|
11220
|
+
isUnavailable,
|
|
11221
|
+
isSameAsCurrentNickname,
|
|
11222
|
+
shouldCheckAvailability,
|
|
11223
|
+
setInputValue
|
|
11224
|
+
} = useNicknameForm(nicknameInfo ? nicknameInfo.handle : "");
|
|
11225
|
+
const { data: availability, isFetching: isAvailabilityChecking } = availabilityQuery;
|
|
11226
|
+
const resolvedError = clientError || nicknameInfoError?.message || null;
|
|
11227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11173
11228
|
"div",
|
|
11174
11229
|
{
|
|
11175
11230
|
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
11176
11231
|
className: "list-scrollbar-y w-full",
|
|
11177
|
-
children: /* @__PURE__ */ (0,
|
|
11178
|
-
/* @__PURE__ */ (0,
|
|
11179
|
-
/* @__PURE__ */ (0,
|
|
11180
|
-
/* @__PURE__ */ (0,
|
|
11232
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
11233
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)] ", children: [
|
|
11234
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react36.ArrowLeft, { className: "h-4 w-4 flex-none" }) }),
|
|
11235
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex gap-[var(--l-pass-gap)] items-center w-fit", children: [
|
|
11236
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-xl font-semibold", children: "Nickname" }),
|
|
11237
|
+
isNicknameInfoLoading && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react36.Loader, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" })
|
|
11238
|
+
] })
|
|
11181
11239
|
] }),
|
|
11182
|
-
|
|
11183
|
-
|
|
11184
|
-
nicknameInfo && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11240
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-[10px] text-[var(--l-pass-fg-muted)]", children: "Your nickname" }),
|
|
11241
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
11185
11242
|
NicknameEditForm,
|
|
11186
11243
|
{
|
|
11187
|
-
|
|
11188
|
-
|
|
11189
|
-
|
|
11244
|
+
inputValue,
|
|
11245
|
+
setInputValue,
|
|
11246
|
+
info: nicknameInfo,
|
|
11247
|
+
isAvailabilityChecking,
|
|
11248
|
+
isUnavailable,
|
|
11249
|
+
isSameAsCurrentNickname,
|
|
11250
|
+
clientError,
|
|
11251
|
+
setClientError
|
|
11190
11252
|
}
|
|
11191
11253
|
),
|
|
11192
|
-
|
|
11254
|
+
shouldCheckAvailability && !clientError && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(NicknameAvailabilityIndicator, { isChecking: isAvailabilityChecking, availability }),
|
|
11255
|
+
!nicknameInfo?.canChange && nicknameInfo?.cooldownEndsAt && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11256
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react36.Info, { className: "w-4 h-4 flex-none" }),
|
|
11257
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { children: [
|
|
11258
|
+
"You can change your nickname again on",
|
|
11259
|
+
" ",
|
|
11260
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("strong", { children: (0, import_dayjs2.default)(nicknameInfo.cooldownEndsAt).format("MMM D, YYYY") }),
|
|
11261
|
+
" (",
|
|
11262
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { children: [
|
|
11263
|
+
getDaysRemaining(nicknameInfo.cooldownEndsAt),
|
|
11264
|
+
" days remained"
|
|
11265
|
+
] }),
|
|
11266
|
+
")"
|
|
11267
|
+
] })
|
|
11268
|
+
] }),
|
|
11269
|
+
!!nicknameInfo && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)] justify-between text-[10px]", children: [
|
|
11270
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { children: [
|
|
11271
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: nicknameInfo.changedAt ? "Last changed:" : "Created:" }),
|
|
11272
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: " " }),
|
|
11273
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("strong", { className: "text-[var(--l-pass-fg)]", children: (0, import_dayjs2.default)(nicknameInfo.changedAt || nicknameInfo.createdAt).format("MMM D, YYYY") })
|
|
11274
|
+
] }),
|
|
11275
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { children: [
|
|
11276
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Times changed:" }),
|
|
11277
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: " " }),
|
|
11278
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("strong", { className: "text-[var(--l-pass-fg)]", children: nicknameInfo.changeCount })
|
|
11279
|
+
] })
|
|
11280
|
+
] }),
|
|
11281
|
+
!!resolvedError?.length && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11282
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react36.AlertTriangle, { className: "w-4 h-4 flex-none" }),
|
|
11283
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { children: resolvedError })
|
|
11284
|
+
] })
|
|
11193
11285
|
] })
|
|
11194
11286
|
}
|
|
11195
11287
|
);
|
|
@@ -11514,7 +11606,7 @@ var import_lucide_react37 = require("lucide-react");
|
|
|
11514
11606
|
var import_react44 = require("react");
|
|
11515
11607
|
var import_viem6 = require("viem");
|
|
11516
11608
|
init_base();
|
|
11517
|
-
var
|
|
11609
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
11518
11610
|
function openInExplorer(address) {
|
|
11519
11611
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11520
11612
|
}
|
|
@@ -11568,7 +11660,7 @@ function PortfolioItem(props) {
|
|
|
11568
11660
|
const showProjectFiatBalance = isProjectAsset && !!projectAssetBalance?.fiatFormatted;
|
|
11569
11661
|
const renderBalance = showProjectFiatBalance ? projectAssetBalance?.fiatFormatted || 0 : Number((0, import_viem6.formatUnits)(BigInt(asset?.balance || "0"), asset?.decimals || 18));
|
|
11570
11662
|
const usdRenderBalance = !!assetRate?.price ? renderBalance * Number(assetRate.price) : 0;
|
|
11571
|
-
return /* @__PURE__ */ (0,
|
|
11663
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
11572
11664
|
"div",
|
|
11573
11665
|
{
|
|
11574
11666
|
className: cn(
|
|
@@ -11579,7 +11671,7 @@ function PortfolioItem(props) {
|
|
|
11579
11671
|
),
|
|
11580
11672
|
onClick: () => asset.address ? openInExplorer(asset.address) : void 0,
|
|
11581
11673
|
children: [
|
|
11582
|
-
/* @__PURE__ */ (0,
|
|
11674
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
11583
11675
|
"div",
|
|
11584
11676
|
{
|
|
11585
11677
|
className: cn(
|
|
@@ -11590,7 +11682,7 @@ function PortfolioItem(props) {
|
|
|
11590
11682
|
(!asset.logo || logoError) && !nftImage && "bg-[var(--l-pass-fg)]"
|
|
11591
11683
|
),
|
|
11592
11684
|
children: [
|
|
11593
|
-
isNft && nftImage && !nftImageError ? /* @__PURE__ */ (0,
|
|
11685
|
+
isNft && nftImage && !nftImageError ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11594
11686
|
"img",
|
|
11595
11687
|
{
|
|
11596
11688
|
src: nftImage,
|
|
@@ -11600,8 +11692,8 @@ function PortfolioItem(props) {
|
|
|
11600
11692
|
}
|
|
11601
11693
|
) : isNft && (!nftImage || nftImageError) ? (
|
|
11602
11694
|
// NFT placeholder when no image available
|
|
11603
|
-
/* @__PURE__ */ (0,
|
|
11604
|
-
) : asset.logo && !logoError ? /* @__PURE__ */ (0,
|
|
11695
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-full h-full bg-[var(--l-pass-fg)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Image, { className: "w-5 h-5 text-[var(--l-pass-fg-inverted)]" }) })
|
|
11696
|
+
) : asset.logo && !logoError ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11605
11697
|
"img",
|
|
11606
11698
|
{
|
|
11607
11699
|
src: asset.logo,
|
|
@@ -11609,22 +11701,22 @@ function PortfolioItem(props) {
|
|
|
11609
11701
|
className: "w-full h-full object-cover",
|
|
11610
11702
|
onError: () => setLogoError(true)
|
|
11611
11703
|
}
|
|
11612
|
-
) : /* @__PURE__ */ (0,
|
|
11613
|
-
isNft && /* @__PURE__ */ (0,
|
|
11614
|
-
isSecurity && /* @__PURE__ */ (0,
|
|
11704
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[var(--l-pass-fg-inverted)] font-bold text-sm", children: asset.symbol.charAt(0) }),
|
|
11705
|
+
isNft && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-[var(--l-pass-accent)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Sparkles, { className: "w-2.5 h-2.5 text-[var(--l-pass-fg-inverted)]" }) }),
|
|
11706
|
+
isSecurity && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11615
11707
|
"div",
|
|
11616
11708
|
{
|
|
11617
11709
|
className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-amber-500 flex items-center justify-center",
|
|
11618
11710
|
title: "Security Token (ERC-3643)",
|
|
11619
|
-
children: /* @__PURE__ */ (0,
|
|
11711
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Shield, { className: "w-2.5 h-2.5 text-white" })
|
|
11620
11712
|
}
|
|
11621
11713
|
)
|
|
11622
11714
|
]
|
|
11623
11715
|
}
|
|
11624
11716
|
),
|
|
11625
|
-
/* @__PURE__ */ (0,
|
|
11626
|
-
/* @__PURE__ */ (0,
|
|
11627
|
-
/* @__PURE__ */ (0,
|
|
11717
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full flex-1", children: [
|
|
11718
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
11719
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11628
11720
|
"span",
|
|
11629
11721
|
{
|
|
11630
11722
|
className: "truncate max-w-[150px]",
|
|
@@ -11632,25 +11724,25 @@ function PortfolioItem(props) {
|
|
|
11632
11724
|
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")
|
|
11633
11725
|
}
|
|
11634
11726
|
),
|
|
11635
|
-
!!usdRenderBalance && !isProjectAsset && !isNft && !isSecurity && /* @__PURE__ */ (0,
|
|
11636
|
-
!isSecurity && isNft && "type" in asset && /* @__PURE__ */ (0,
|
|
11637
|
-
isSecurity && /* @__PURE__ */ (0,
|
|
11727
|
+
!!usdRenderBalance && !isProjectAsset && !isNft && !isSecurity && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" }),
|
|
11728
|
+
!isSecurity && isNft && "type" in asset && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "uppercase text-[10px] px-1 bg-[var(--l-pass-bg-info)] rounded-full", children: asset.type === "erc721" ? "ERC-721" : "ERC-1155" }),
|
|
11729
|
+
isSecurity && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "uppercase text-[10px] px-1 bg-[var(--l-pass-bg-warning)] rounded-full", children: "Security Token" })
|
|
11638
11730
|
] }),
|
|
11639
|
-
/* @__PURE__ */ (0,
|
|
11640
|
-
/* @__PURE__ */ (0,
|
|
11641
|
-
"tokenId" in asset && asset.tokenId && /* @__PURE__ */ (0,
|
|
11731
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: isNft ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
11732
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "truncate max-w-[160px]", title: asset.nftMetadata?.name || asset.symbol, children: asset.nftMetadata?.name || asset.symbol }),
|
|
11733
|
+
"tokenId" in asset && asset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "text-xs text-[var(--l-pass-fg-muted)] font-normal", children: [
|
|
11642
11734
|
"#",
|
|
11643
11735
|
asset.tokenId.length > 8 ? `${asset.tokenId.slice(0, 6)}...` : asset.tokenId
|
|
11644
11736
|
] })
|
|
11645
|
-
] }) : /* @__PURE__ */ (0,
|
|
11646
|
-
/* @__PURE__ */ (0,
|
|
11647
|
-
/* @__PURE__ */ (0,
|
|
11648
|
-
/* @__PURE__ */ (0,
|
|
11737
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
11738
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
|
|
11739
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: formatPrice(Number(renderBalance)) }),
|
|
11740
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: " " + asset.symbol })
|
|
11649
11741
|
] }),
|
|
11650
|
-
isRateLoading && /* @__PURE__ */ (0,
|
|
11651
|
-
!isRateLoading && !!usdRenderBalance && /* @__PURE__ */ (0,
|
|
11652
|
-
/* @__PURE__ */ (0,
|
|
11653
|
-
/* @__PURE__ */ (0,
|
|
11742
|
+
isRateLoading && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
11743
|
+
!isRateLoading && !!usdRenderBalance && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
|
|
11744
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: "$" }),
|
|
11745
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: formatPrice(usdRenderBalance) })
|
|
11654
11746
|
] })
|
|
11655
11747
|
] }) })
|
|
11656
11748
|
] })
|
|
@@ -11660,7 +11752,7 @@ function PortfolioItem(props) {
|
|
|
11660
11752
|
}
|
|
11661
11753
|
|
|
11662
11754
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
11663
|
-
var
|
|
11755
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
11664
11756
|
function PortfolioMenu() {
|
|
11665
11757
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
11666
11758
|
const qc = (0, import_react_query32.useQueryClient)();
|
|
@@ -11680,7 +11772,7 @@ function PortfolioMenu() {
|
|
|
11680
11772
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
11681
11773
|
refreshBlockscoutBalances();
|
|
11682
11774
|
}, [qc, projectAssets, refreshBlockscoutBalances]);
|
|
11683
|
-
return /* @__PURE__ */ (0,
|
|
11775
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11684
11776
|
"div",
|
|
11685
11777
|
{
|
|
11686
11778
|
style: {
|
|
@@ -11688,11 +11780,11 @@ function PortfolioMenu() {
|
|
|
11688
11780
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
11689
11781
|
},
|
|
11690
11782
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11691
|
-
children: /* @__PURE__ */ (0,
|
|
11692
|
-
/* @__PURE__ */ (0,
|
|
11693
|
-
/* @__PURE__ */ (0,
|
|
11694
|
-
/* @__PURE__ */ (0,
|
|
11695
|
-
/* @__PURE__ */ (0,
|
|
11783
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11784
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11785
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11786
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11787
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11696
11788
|
Button,
|
|
11697
11789
|
{
|
|
11698
11790
|
title: "Refresh balances",
|
|
@@ -11700,17 +11792,17 @@ function PortfolioMenu() {
|
|
|
11700
11792
|
size: "icon",
|
|
11701
11793
|
onClick: refreshAllAssetsBalances,
|
|
11702
11794
|
disabled: isBlockscoutLoading,
|
|
11703
|
-
children: isBlockscoutLoading ? /* @__PURE__ */ (0,
|
|
11795
|
+
children: isBlockscoutLoading ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.RefreshCw, { className: "h-4 w-4" })
|
|
11704
11796
|
}
|
|
11705
11797
|
)
|
|
11706
11798
|
] }),
|
|
11707
|
-
isBlockscoutLoading && /* @__PURE__ */ (0,
|
|
11708
|
-
!isBlockscoutLoading && blockscoutAssets?.length === 0 && /* @__PURE__ */ (0,
|
|
11709
|
-
/* @__PURE__ */ (0,
|
|
11710
|
-
/* @__PURE__ */ (0,
|
|
11799
|
+
isBlockscoutLoading && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
11800
|
+
!isBlockscoutLoading && blockscoutAssets?.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Highlight, { type: "info", className: "flex flex-col items-center justify-center gap-[var(--l-pass-gap)]", children: [
|
|
11801
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Gem, { className: "w-8 h-8" }),
|
|
11802
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "block", children: "No assets found" })
|
|
11711
11803
|
] }),
|
|
11712
|
-
!isBlockscoutLoading && projectAssets?.map((asset, index) => /* @__PURE__ */ (0,
|
|
11713
|
-
!isBlockscoutLoading && blockscoutAssets?.length > 0 && blockscoutAssets.map((asset, index) => /* @__PURE__ */ (0,
|
|
11804
|
+
!isBlockscoutLoading && projectAssets?.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(PortfolioItem, { isProjectAsset: true, address, asset }, `project-${asset.symbol}-${index}`)),
|
|
11805
|
+
!isBlockscoutLoading && blockscoutAssets?.length > 0 && blockscoutAssets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11714
11806
|
PortfolioItem,
|
|
11715
11807
|
{
|
|
11716
11808
|
address,
|
|
@@ -11718,9 +11810,9 @@ function PortfolioMenu() {
|
|
|
11718
11810
|
},
|
|
11719
11811
|
`${asset.type}-${asset.address || "native"}-${asset.tokenId || index}`
|
|
11720
11812
|
)),
|
|
11721
|
-
blockscoutError && !isBlockscoutAvailable && /* @__PURE__ */ (0,
|
|
11722
|
-
/* @__PURE__ */ (0,
|
|
11723
|
-
/* @__PURE__ */ (0,
|
|
11813
|
+
blockscoutError && !isBlockscoutAvailable && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11814
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
11815
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xs", children: blockscoutError.message })
|
|
11724
11816
|
] })
|
|
11725
11817
|
] })
|
|
11726
11818
|
}
|
|
@@ -11729,7 +11821,7 @@ function PortfolioMenu() {
|
|
|
11729
11821
|
|
|
11730
11822
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
11731
11823
|
var import_react_query33 = require("@tanstack/react-query");
|
|
11732
|
-
var
|
|
11824
|
+
var import_dayjs4 = __toESM(require("dayjs"), 1);
|
|
11733
11825
|
var import_lucide_react42 = require("lucide-react");
|
|
11734
11826
|
var import_react46 = require("react");
|
|
11735
11827
|
init_auth();
|
|
@@ -11744,13 +11836,13 @@ var KEYSHARE_RECOVERY_STATS_QUERY = "keyshare-recovery-stats-query";
|
|
|
11744
11836
|
var import_lucide_react41 = require("lucide-react");
|
|
11745
11837
|
|
|
11746
11838
|
// src/internal/assets/NegativeIcon.tsx
|
|
11747
|
-
var
|
|
11839
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
11748
11840
|
function NegativeIcon(props) {
|
|
11749
11841
|
const { width = "16", height = "16", ...rest } = props;
|
|
11750
|
-
return /* @__PURE__ */ (0,
|
|
11751
|
-
/* @__PURE__ */ (0,
|
|
11752
|
-
/* @__PURE__ */ (0,
|
|
11753
|
-
/* @__PURE__ */ (0,
|
|
11842
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("svg", { ...rest, width, height, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
11843
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("rect", { width: "16", height: "16", rx: "8", fill: "var(--l-pass-bg-error)" }),
|
|
11844
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("path", { d: "M10.8048 5.19482L5.19434 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" }),
|
|
11845
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("path", { d: "M5.19421 5.19482L10.8047 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" })
|
|
11754
11846
|
] });
|
|
11755
11847
|
}
|
|
11756
11848
|
|
|
@@ -11759,13 +11851,13 @@ init_vaultClient();
|
|
|
11759
11851
|
|
|
11760
11852
|
// src/internal/components/SecurityMenu/Keyshare/KeyshareStatus.tsx
|
|
11761
11853
|
var import_lucide_react39 = require("lucide-react");
|
|
11762
|
-
var
|
|
11854
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
11763
11855
|
function KeyshareStatus(props) {
|
|
11764
11856
|
const { isLoading, content, icon: Icon2, children } = props;
|
|
11765
|
-
if (isLoading) return /* @__PURE__ */ (0,
|
|
11766
|
-
return /* @__PURE__ */ (0,
|
|
11857
|
+
if (isLoading) return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react39.Loader, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" });
|
|
11858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "group relative w-full h-full", children: [
|
|
11767
11859
|
children,
|
|
11768
|
-
/* @__PURE__ */ (0,
|
|
11860
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11769
11861
|
"div",
|
|
11770
11862
|
{
|
|
11771
11863
|
className: cn(
|
|
@@ -11773,10 +11865,10 @@ function KeyshareStatus(props) {
|
|
|
11773
11865
|
"rounded-full bg-[var(--l-pass-bg)]"
|
|
11774
11866
|
// 'border border-[var(--l-pass-bd)]'
|
|
11775
11867
|
),
|
|
11776
|
-
children: /* @__PURE__ */ (0,
|
|
11868
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon2, { className: "w-4 h-4" })
|
|
11777
11869
|
}
|
|
11778
11870
|
),
|
|
11779
|
-
/* @__PURE__ */ (0,
|
|
11871
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
11780
11872
|
"div",
|
|
11781
11873
|
{
|
|
11782
11874
|
style: { transform: "translateY(calc(var(--l-pass-gap) * -4))" },
|
|
@@ -11794,9 +11886,9 @@ function KeyshareStatus(props) {
|
|
|
11794
11886
|
}
|
|
11795
11887
|
|
|
11796
11888
|
// src/internal/components/SecurityMenu/Keyshare/LastBackup.tsx
|
|
11797
|
-
var
|
|
11889
|
+
var import_dayjs3 = __toESM(require("dayjs"), 1);
|
|
11798
11890
|
var import_lucide_react40 = require("lucide-react");
|
|
11799
|
-
var
|
|
11891
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
11800
11892
|
function parseOS(ua) {
|
|
11801
11893
|
if (!ua) return null;
|
|
11802
11894
|
if (ua.includes("Mac OS X")) return "macOS";
|
|
@@ -11818,105 +11910,105 @@ function LastBackup(props) {
|
|
|
11818
11910
|
} = createdRecoveryStats || {};
|
|
11819
11911
|
const hasBackupData = backup?.server?.enabled && backup.server.lastBackup || !backup.server.lastBackup && recoveryCreatedAt || backup.cloud.enabled && backup.cloud?.lastBackup || backup.local.enabled && backup.local.lastBackup;
|
|
11820
11912
|
if (!hasBackupData) return null;
|
|
11821
|
-
return /* @__PURE__ */ (0,
|
|
11822
|
-
/* @__PURE__ */ (0,
|
|
11823
|
-
/* @__PURE__ */ (0,
|
|
11824
|
-
/* @__PURE__ */ (0,
|
|
11913
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Highlight, { type: "info", className: "flex flex-col gap-[var(--l-pass-gap)] text-[10px] leading-tight", children: [
|
|
11914
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { className: "flex items-center gap-[var(--l-pass-gap)] font-bold text-xs leading-4", children: [
|
|
11915
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react40.Server, { className: "w-4 h-4 inline" }),
|
|
11916
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { children: "Last Keyshare Vault Backup" })
|
|
11825
11917
|
] }),
|
|
11826
|
-
recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
11827
|
-
/* @__PURE__ */ (0,
|
|
11828
|
-
/* @__PURE__ */ (0,
|
|
11918
|
+
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
11919
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { children: (0, import_dayjs3.default)(recoveryCreatedAt).format("MMMM DD, YYYY HH:mm") }),
|
|
11920
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { children: `${recoveryBrowser || "UNKNOWN"} browser at ${recoveryDeviceName || "UNKNOWN"} device under ${parseOS(recoveryUa) || "UNKNOWN"} OS` })
|
|
11829
11921
|
] }),
|
|
11830
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0,
|
|
11831
|
-
/* @__PURE__ */ (0,
|
|
11832
|
-
/* @__PURE__ */ (0,
|
|
11922
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
11923
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react40.Cloud, { className: "h-3 w-3" }),
|
|
11924
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { children: [
|
|
11833
11925
|
"Cloud: ",
|
|
11834
|
-
(0,
|
|
11926
|
+
(0, import_dayjs3.default)(backup.cloud.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11835
11927
|
] })
|
|
11836
11928
|
] }),
|
|
11837
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0,
|
|
11838
|
-
/* @__PURE__ */ (0,
|
|
11839
|
-
/* @__PURE__ */ (0,
|
|
11929
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
11930
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react40.HardDrive, { className: "h-3 w-3" }),
|
|
11931
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { children: [
|
|
11840
11932
|
"Local: ",
|
|
11841
|
-
(0,
|
|
11933
|
+
(0, import_dayjs3.default)(backup.local.lastBackup).format("MMMM DD, YYYY HH:mm")
|
|
11842
11934
|
] })
|
|
11843
11935
|
] })
|
|
11844
11936
|
] });
|
|
11845
11937
|
}
|
|
11846
11938
|
|
|
11847
11939
|
// src/internal/components/SecurityMenu/Keyshare/Keyshare.tsx
|
|
11848
|
-
var
|
|
11940
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
11849
11941
|
function Keyshare(props) {
|
|
11850
11942
|
const { userId, serverHasKeyshare, localInfo, hasServerBackup, createdRecoveryStats, isLoading, refresh } = props;
|
|
11851
11943
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
11852
|
-
return /* @__PURE__ */ (0,
|
|
11853
|
-
/* @__PURE__ */ (0,
|
|
11854
|
-
/* @__PURE__ */ (0,
|
|
11855
|
-
/* @__PURE__ */ (0,
|
|
11944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
11945
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
11946
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Keyshare Status" }),
|
|
11947
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { variant: "ghost", size: "icon", title: "Refresh", disabled: isLoading, onClick: refresh, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react41.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react41.RefreshCw, { className: "h-4 w-4" }) })
|
|
11856
11948
|
] }),
|
|
11857
|
-
/* @__PURE__ */ (0,
|
|
11858
|
-
/* @__PURE__ */ (0,
|
|
11949
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "grid grid-cols-3 gap-[var(--l-pass-gap)] px-[var(--l-pass-gap)]", children: [
|
|
11950
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
11859
11951
|
KeyshareStatus,
|
|
11860
11952
|
{
|
|
11861
11953
|
content: serverHasKeyshare ? "Your Server Security Key Share is safe and ready" : "Server Security Key Share is missing",
|
|
11862
11954
|
icon: serverHasKeyshare ? PositiveIcon : NegativeIcon,
|
|
11863
|
-
children: /* @__PURE__ */ (0,
|
|
11955
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
11864
11956
|
Highlight,
|
|
11865
11957
|
{
|
|
11866
11958
|
type: serverHasKeyshare ? "success" : "warning",
|
|
11867
11959
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11868
11960
|
children: [
|
|
11869
|
-
/* @__PURE__ */ (0,
|
|
11870
|
-
/* @__PURE__ */ (0,
|
|
11961
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react41.Cloud, { className: "h-6 w-6" }),
|
|
11962
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-[10px] font-medium leading-4", children: "Server Share" })
|
|
11871
11963
|
]
|
|
11872
11964
|
}
|
|
11873
11965
|
)
|
|
11874
11966
|
}
|
|
11875
11967
|
),
|
|
11876
|
-
/* @__PURE__ */ (0,
|
|
11968
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
11877
11969
|
KeyshareStatus,
|
|
11878
11970
|
{
|
|
11879
11971
|
content: localInfo?.hasKeyshare ? "Your Private Local Security Key Share is safe and ready" : "Private Local Security Key Share is missing",
|
|
11880
11972
|
icon: localInfo?.hasKeyshare ? PositiveIcon : NegativeIcon,
|
|
11881
|
-
children: /* @__PURE__ */ (0,
|
|
11973
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
11882
11974
|
Highlight,
|
|
11883
11975
|
{
|
|
11884
11976
|
type: localInfo?.hasKeyshare ? "success" : "warning",
|
|
11885
11977
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11886
11978
|
children: [
|
|
11887
|
-
/* @__PURE__ */ (0,
|
|
11888
|
-
/* @__PURE__ */ (0,
|
|
11979
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react41.Laptop, { className: "h-6 w-6" }),
|
|
11980
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-[10px] font-medium leading-4", children: "Local Share" })
|
|
11889
11981
|
]
|
|
11890
11982
|
}
|
|
11891
11983
|
)
|
|
11892
11984
|
}
|
|
11893
11985
|
),
|
|
11894
|
-
/* @__PURE__ */ (0,
|
|
11986
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
11895
11987
|
KeyshareStatus,
|
|
11896
11988
|
{
|
|
11897
11989
|
content: hasServerBackup ? "Security Key Share Vault Backup exists and ready" : "Security Key Share Vault Backup Missing. Create one to ensure your data is safe.",
|
|
11898
11990
|
icon: hasServerBackup ? PositiveIcon : NegativeIcon,
|
|
11899
|
-
children: /* @__PURE__ */ (0,
|
|
11991
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
11900
11992
|
Highlight,
|
|
11901
11993
|
{
|
|
11902
11994
|
type: hasServerBackup ? "success" : "warning",
|
|
11903
11995
|
className: "w-full h-full flex flex-col items-center gap-0",
|
|
11904
11996
|
children: [
|
|
11905
|
-
/* @__PURE__ */ (0,
|
|
11906
|
-
/* @__PURE__ */ (0,
|
|
11997
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react41.Server, { className: "h-6 w-6" }),
|
|
11998
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-[10px] font-medium leading-4", children: "Backup Vault" })
|
|
11907
11999
|
]
|
|
11908
12000
|
}
|
|
11909
12001
|
)
|
|
11910
12002
|
}
|
|
11911
12003
|
)
|
|
11912
12004
|
] }),
|
|
11913
|
-
createdRecoveryStats?.at && /* @__PURE__ */ (0,
|
|
11914
|
-
/* @__PURE__ */ (0,
|
|
12005
|
+
createdRecoveryStats?.at && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LastBackup, { backup, createdRecoveryStats }),
|
|
12006
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } })
|
|
11915
12007
|
] });
|
|
11916
12008
|
}
|
|
11917
12009
|
|
|
11918
12010
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
11919
|
-
var
|
|
12011
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
11920
12012
|
function SecurityMenu() {
|
|
11921
12013
|
const qc = (0, import_react_query33.useQueryClient)();
|
|
11922
12014
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
@@ -11964,7 +12056,7 @@ function SecurityMenu() {
|
|
|
11964
12056
|
setIsRemoving(false);
|
|
11965
12057
|
}
|
|
11966
12058
|
};
|
|
11967
|
-
return /* @__PURE__ */ (0,
|
|
12059
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
11968
12060
|
"div",
|
|
11969
12061
|
{
|
|
11970
12062
|
style: {
|
|
@@ -11972,9 +12064,9 @@ function SecurityMenu() {
|
|
|
11972
12064
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
11973
12065
|
},
|
|
11974
12066
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11975
|
-
children: /* @__PURE__ */ (0,
|
|
11976
|
-
/* @__PURE__ */ (0,
|
|
11977
|
-
/* @__PURE__ */ (0,
|
|
12067
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12068
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12069
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
11978
12070
|
Button,
|
|
11979
12071
|
{
|
|
11980
12072
|
variant: "ghost",
|
|
@@ -11984,13 +12076,13 @@ function SecurityMenu() {
|
|
|
11984
12076
|
if (!!appToRemove) setAppToRemove(null);
|
|
11985
12077
|
else setPage("settings" /* SETTINGS */);
|
|
11986
12078
|
},
|
|
11987
|
-
children: /* @__PURE__ */ (0,
|
|
12079
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react42.ArrowLeft, { className: "h-4 w-4" })
|
|
11988
12080
|
}
|
|
11989
12081
|
),
|
|
11990
|
-
/* @__PURE__ */ (0,
|
|
12082
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-xl font-semibold", children: "Security" })
|
|
11991
12083
|
] }),
|
|
11992
|
-
!appToRemove && /* @__PURE__ */ (0,
|
|
11993
|
-
/* @__PURE__ */ (0,
|
|
12084
|
+
!appToRemove && /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
|
|
12085
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
11994
12086
|
Keyshare,
|
|
11995
12087
|
{
|
|
11996
12088
|
userId,
|
|
@@ -12002,31 +12094,31 @@ function SecurityMenu() {
|
|
|
12002
12094
|
refresh: () => qc.invalidateQueries({ queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId] })
|
|
12003
12095
|
}
|
|
12004
12096
|
),
|
|
12005
|
-
trustedApps.length > 0 && /* @__PURE__ */ (0,
|
|
12006
|
-
/* @__PURE__ */ (0,
|
|
12007
|
-
/* @__PURE__ */ (0,
|
|
12008
|
-
/* @__PURE__ */ (0,
|
|
12097
|
+
trustedApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
|
|
12098
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "w-full space-y-2", children: [
|
|
12099
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "font-medium text-xs text-[var(--l-pass-fg)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
12100
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
12009
12101
|
"div",
|
|
12010
12102
|
{
|
|
12011
12103
|
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)]",
|
|
12012
12104
|
children: [
|
|
12013
|
-
app.appLogo ? /* @__PURE__ */ (0,
|
|
12105
|
+
app.appLogo ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12014
12106
|
"img",
|
|
12015
12107
|
{
|
|
12016
12108
|
src: app.appLogo,
|
|
12017
12109
|
alt: app.appName,
|
|
12018
12110
|
className: "w-8 h-8 rounded-[var(--l-pass-el-bdrs)] object-cover flex-shrink-0"
|
|
12019
12111
|
}
|
|
12020
|
-
) : /* @__PURE__ */ (0,
|
|
12021
|
-
/* @__PURE__ */ (0,
|
|
12022
|
-
/* @__PURE__ */ (0,
|
|
12023
|
-
/* @__PURE__ */ (0,
|
|
12024
|
-
/* @__PURE__ */ (0,
|
|
12112
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-8 h-8 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-muted)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-sm", children: "\u{1F517}" }) }),
|
|
12113
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
12114
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "font-semibold truncate", children: app.appName || new URL(app.origin).hostname }),
|
|
12115
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: new URL(app.origin).hostname }),
|
|
12116
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: [
|
|
12025
12117
|
"Trusted: ",
|
|
12026
|
-
(0,
|
|
12118
|
+
(0, import_dayjs4.default)(app.trustedAt).format("MMM D, YYYY HH:mm")
|
|
12027
12119
|
] })
|
|
12028
12120
|
] }),
|
|
12029
|
-
/* @__PURE__ */ (0,
|
|
12121
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12030
12122
|
Button,
|
|
12031
12123
|
{
|
|
12032
12124
|
variant: "ghost",
|
|
@@ -12040,7 +12132,7 @@ function SecurityMenu() {
|
|
|
12040
12132
|
appName: app.appName,
|
|
12041
12133
|
appLogo: app.appLogo
|
|
12042
12134
|
}),
|
|
12043
|
-
children: /* @__PURE__ */ (0,
|
|
12135
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react42.Trash2, { className: "h-4 w-4" })
|
|
12044
12136
|
}
|
|
12045
12137
|
)
|
|
12046
12138
|
]
|
|
@@ -12048,37 +12140,37 @@ function SecurityMenu() {
|
|
|
12048
12140
|
index
|
|
12049
12141
|
)) })
|
|
12050
12142
|
] }),
|
|
12051
|
-
/* @__PURE__ */ (0,
|
|
12143
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } })
|
|
12052
12144
|
] })
|
|
12053
12145
|
] }),
|
|
12054
|
-
!!appToRemove && /* @__PURE__ */ (0,
|
|
12055
|
-
/* @__PURE__ */ (0,
|
|
12056
|
-
/* @__PURE__ */ (0,
|
|
12057
|
-
/* @__PURE__ */ (0,
|
|
12058
|
-
appToRemove.appLogo ? /* @__PURE__ */ (0,
|
|
12059
|
-
/* @__PURE__ */ (0,
|
|
12060
|
-
/* @__PURE__ */ (0,
|
|
12061
|
-
/* @__PURE__ */ (0,
|
|
12146
|
+
!!appToRemove && /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "w-full", children: [
|
|
12147
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "text-center", children: [
|
|
12148
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "text-lg font-semibold mb-2", children: "Remove Trusted App?" }),
|
|
12149
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center justify-center gap-2 mb-3", children: [
|
|
12150
|
+
appToRemove.appLogo ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("img", { src: appToRemove.appLogo, alt: "", className: "w-10 h-10 rounded-md object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-10 h-10 rounded-md bg-[var(--l-pass-bg-muted)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-lg", children: "\u{1F517}" }) }),
|
|
12151
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "text-left", children: [
|
|
12152
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "font-medium", children: appToRemove.appName || appToRemove.hostname }),
|
|
12153
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: appToRemove.hostname })
|
|
12062
12154
|
] })
|
|
12063
12155
|
] }),
|
|
12064
|
-
/* @__PURE__ */ (0,
|
|
12065
|
-
/* @__PURE__ */ (0,
|
|
12066
|
-
/* @__PURE__ */ (0,
|
|
12067
|
-
/* @__PURE__ */ (0,
|
|
12068
|
-
/* @__PURE__ */ (0,
|
|
12156
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "text-xs text-[var(--l-pass-fg-muted)] text-left space-y-1 mb-4", children: [
|
|
12157
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: "After removing this application:" }),
|
|
12158
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("ul", { className: "list-disc list-inside ml-2 space-y-0.5", children: [
|
|
12159
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("li", { children: "All transactions will require confirmation" }),
|
|
12160
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("li", { children: 'You can re-add it anytime by checking "Trust this app"' })
|
|
12069
12161
|
] })
|
|
12070
12162
|
] })
|
|
12071
12163
|
] }),
|
|
12072
|
-
/* @__PURE__ */ (0,
|
|
12073
|
-
/* @__PURE__ */ (0,
|
|
12074
|
-
/* @__PURE__ */ (0,
|
|
12164
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex gap-2", children: [
|
|
12165
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "outline", className: "flex-1", onClick: () => setAppToRemove(null), disabled: isRemoving, children: "Cancel" }),
|
|
12166
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12075
12167
|
Button,
|
|
12076
12168
|
{
|
|
12077
12169
|
variant: "default",
|
|
12078
12170
|
className: "flex-1 bg-[var(--l-pass-error)] hover:bg-[var(--l-pass-error)]/60 active:bg-[var(--l-pass-error)]/40",
|
|
12079
12171
|
onClick: handleRemoveTrustedApp,
|
|
12080
12172
|
disabled: isRemoving,
|
|
12081
|
-
children: isRemoving ? /* @__PURE__ */ (0,
|
|
12173
|
+
children: isRemoving ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react42.Loader, { className: "h-4 w-4 animate-spin" }) : "Remove"
|
|
12082
12174
|
}
|
|
12083
12175
|
)
|
|
12084
12176
|
] })
|
|
@@ -12465,7 +12557,7 @@ init_base();
|
|
|
12465
12557
|
var import_lucide_react43 = require("lucide-react");
|
|
12466
12558
|
var import_react49 = require("react");
|
|
12467
12559
|
var import_viem9 = require("viem");
|
|
12468
|
-
var
|
|
12560
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
12469
12561
|
function isNftAsset2(asset) {
|
|
12470
12562
|
return asset.type === "erc721" || asset.type === "erc1155";
|
|
12471
12563
|
}
|
|
@@ -12493,8 +12585,8 @@ function AssetIcon({ asset, size = "sm" }) {
|
|
|
12493
12585
|
const nftImage = asset.image || asset.nftMetadata?.image;
|
|
12494
12586
|
const isSecurity = isSecurityToken2(asset);
|
|
12495
12587
|
if (isNft && nftImage && !imageError) {
|
|
12496
|
-
return /* @__PURE__ */ (0,
|
|
12497
|
-
/* @__PURE__ */ (0,
|
|
12588
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: cn(sizeClasses, "rounded-[var(--l-pass-el-bdrs)] overflow-hidden relative flex-shrink-0"), children: [
|
|
12589
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12498
12590
|
"img",
|
|
12499
12591
|
{
|
|
12500
12592
|
src: nftImage,
|
|
@@ -12503,18 +12595,18 @@ function AssetIcon({ asset, size = "sm" }) {
|
|
|
12503
12595
|
onError: () => setImageError(true)
|
|
12504
12596
|
}
|
|
12505
12597
|
),
|
|
12506
|
-
/* @__PURE__ */ (0,
|
|
12598
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react43.Sparkles, { className: "w-2 h-2 text-[var(--l-pass-fg-inverted)]" }) })
|
|
12507
12599
|
] });
|
|
12508
12600
|
}
|
|
12509
12601
|
if (isNft) {
|
|
12510
|
-
return /* @__PURE__ */ (0,
|
|
12511
|
-
/* @__PURE__ */ (0,
|
|
12512
|
-
/* @__PURE__ */ (0,
|
|
12602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("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: [
|
|
12603
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react43.Image, { className: cn(size === "sm" ? "w-3 h-3" : "w-5 h-5", "text-[var(--l-pass-fg-inverted)]") }),
|
|
12604
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react43.Sparkles, { className: "w-2 h-2 text-[var(--l-pass-fg-inverted)]" }) })
|
|
12513
12605
|
] });
|
|
12514
12606
|
}
|
|
12515
12607
|
if (asset.logo && !imageError) {
|
|
12516
|
-
return /* @__PURE__ */ (0,
|
|
12517
|
-
/* @__PURE__ */ (0,
|
|
12608
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: cn(sizeClasses, "rounded-full overflow-hidden relative flex-shrink-0"), children: [
|
|
12609
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12518
12610
|
"img",
|
|
12519
12611
|
{
|
|
12520
12612
|
src: asset.logo,
|
|
@@ -12523,12 +12615,12 @@ function AssetIcon({ asset, size = "sm" }) {
|
|
|
12523
12615
|
onError: () => setImageError(true)
|
|
12524
12616
|
}
|
|
12525
12617
|
),
|
|
12526
|
-
isSecurity && /* @__PURE__ */ (0,
|
|
12618
|
+
isSecurity && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react43.Shield, { className: "w-2 h-2 text-white" }) })
|
|
12527
12619
|
] });
|
|
12528
12620
|
}
|
|
12529
|
-
return /* @__PURE__ */ (0,
|
|
12530
|
-
/* @__PURE__ */ (0,
|
|
12531
|
-
isSecurity && /* @__PURE__ */ (0,
|
|
12621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: cn(sizeClasses, "rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center relative flex-shrink-0"), children: [
|
|
12622
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: cn("text-[var(--l-pass-fg-inverted)] font-bold", textSize), children: asset.symbol.charAt(0) }),
|
|
12623
|
+
isSecurity && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react43.Shield, { className: "w-2 h-2 text-white" }) })
|
|
12532
12624
|
] });
|
|
12533
12625
|
}
|
|
12534
12626
|
function AssetListItem({ asset, onSelect, isSelected }) {
|
|
@@ -12538,7 +12630,7 @@ function AssetListItem({ asset, onSelect, isSelected }) {
|
|
|
12538
12630
|
e.stopPropagation();
|
|
12539
12631
|
onSelect();
|
|
12540
12632
|
};
|
|
12541
|
-
return /* @__PURE__ */ (0,
|
|
12633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
12542
12634
|
"button",
|
|
12543
12635
|
{
|
|
12544
12636
|
type: "button",
|
|
@@ -12549,16 +12641,16 @@ function AssetListItem({ asset, onSelect, isSelected }) {
|
|
|
12549
12641
|
),
|
|
12550
12642
|
onClick: handleClick,
|
|
12551
12643
|
children: [
|
|
12552
|
-
/* @__PURE__ */ (0,
|
|
12553
|
-
/* @__PURE__ */ (0,
|
|
12554
|
-
/* @__PURE__ */ (0,
|
|
12555
|
-
/* @__PURE__ */ (0,
|
|
12644
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(AssetIcon, { asset, size: "md" }),
|
|
12645
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex-1 min-w-0 text-left", children: [
|
|
12646
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "font-semibold text-[var(--l-pass-fg)] truncate", children: isNft ? asset.nftMetadata?.name || asset.name : asset.name }),
|
|
12647
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: isNft ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
12556
12648
|
asset.symbol,
|
|
12557
|
-
asset.tokenId && /* @__PURE__ */ (0,
|
|
12649
|
+
asset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "ml-1", children: [
|
|
12558
12650
|
"#",
|
|
12559
12651
|
asset.tokenId.length > 6 ? `${asset.tokenId.slice(0, 4)}...` : asset.tokenId
|
|
12560
12652
|
] })
|
|
12561
|
-
] }) : /* @__PURE__ */ (0,
|
|
12653
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
12562
12654
|
getAssetBalance(asset),
|
|
12563
12655
|
" ",
|
|
12564
12656
|
asset.symbol
|
|
@@ -12612,8 +12704,8 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12612
12704
|
return null;
|
|
12613
12705
|
}
|
|
12614
12706
|
const isNft = isNftAsset2(selectedAsset);
|
|
12615
|
-
return /* @__PURE__ */ (0,
|
|
12616
|
-
/* @__PURE__ */ (0,
|
|
12707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "relative", style: { zIndex: isOpen ? 100 : "auto" }, children: [
|
|
12708
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
12617
12709
|
"button",
|
|
12618
12710
|
{
|
|
12619
12711
|
ref: buttonRef,
|
|
@@ -12627,13 +12719,13 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12627
12719
|
),
|
|
12628
12720
|
onClick: handleToggle,
|
|
12629
12721
|
children: [
|
|
12630
|
-
/* @__PURE__ */ (0,
|
|
12631
|
-
/* @__PURE__ */ (0,
|
|
12632
|
-
/* @__PURE__ */ (0,
|
|
12722
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(AssetIcon, { asset: selectedAsset, size: "sm" }),
|
|
12723
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-sm font-semibold text-[var(--l-pass-fg)] max-w-[80px] truncate", children: isNft ? selectedAsset.nftMetadata?.name || selectedAsset.symbol : selectedAsset.symbol }),
|
|
12724
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react43.ChevronDown, { className: cn("w-4 h-4 text-[var(--l-pass-fg-muted)] transition-transform", isOpen && "rotate-180") })
|
|
12633
12725
|
]
|
|
12634
12726
|
}
|
|
12635
12727
|
),
|
|
12636
|
-
isOpen && /* @__PURE__ */ (0,
|
|
12728
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
12637
12729
|
"div",
|
|
12638
12730
|
{
|
|
12639
12731
|
ref: dropdownRef,
|
|
@@ -12646,12 +12738,12 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12646
12738
|
style: { zIndex: 100 },
|
|
12647
12739
|
onClick: (e) => e.stopPropagation(),
|
|
12648
12740
|
children: [
|
|
12649
|
-
/* @__PURE__ */ (0,
|
|
12650
|
-
/* @__PURE__ */ (0,
|
|
12651
|
-
/* @__PURE__ */ (0,
|
|
12741
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("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: [
|
|
12742
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-sm font-semibold text-[var(--l-pass-fg)]", children: "Select Asset" }),
|
|
12743
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Button, { variant: "ghost", size: "icon", onClick: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react43.X, { className: "w-4 h-4" }) })
|
|
12652
12744
|
] }),
|
|
12653
|
-
/* @__PURE__ */ (0,
|
|
12654
|
-
nativeAssets.length > 0 && /* @__PURE__ */ (0,
|
|
12745
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "p-2", children: [
|
|
12746
|
+
nativeAssets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_jsx_runtime64.Fragment, { children: nativeAssets.map((asset) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12655
12747
|
AssetListItem,
|
|
12656
12748
|
{
|
|
12657
12749
|
asset,
|
|
@@ -12660,9 +12752,9 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12660
12752
|
},
|
|
12661
12753
|
`native-${asset.symbol}`
|
|
12662
12754
|
)) }),
|
|
12663
|
-
tokenAssets.length > 0 && /* @__PURE__ */ (0,
|
|
12664
|
-
/* @__PURE__ */ (0,
|
|
12665
|
-
tokenAssets.map((asset) => /* @__PURE__ */ (0,
|
|
12755
|
+
tokenAssets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
12756
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "Tokens" }),
|
|
12757
|
+
tokenAssets.map((asset) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12666
12758
|
AssetListItem,
|
|
12667
12759
|
{
|
|
12668
12760
|
asset,
|
|
@@ -12672,9 +12764,9 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12672
12764
|
`token-${asset.address}`
|
|
12673
12765
|
))
|
|
12674
12766
|
] }),
|
|
12675
|
-
securityAssets.length > 0 && /* @__PURE__ */ (0,
|
|
12676
|
-
/* @__PURE__ */ (0,
|
|
12677
|
-
securityAssets.map((asset) => /* @__PURE__ */ (0,
|
|
12767
|
+
securityAssets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
12768
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "Security Tokens" }),
|
|
12769
|
+
securityAssets.map((asset) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12678
12770
|
AssetListItem,
|
|
12679
12771
|
{
|
|
12680
12772
|
asset,
|
|
@@ -12684,9 +12776,9 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12684
12776
|
`security-${asset.address}`
|
|
12685
12777
|
))
|
|
12686
12778
|
] }),
|
|
12687
|
-
nftAssets.length > 0 && /* @__PURE__ */ (0,
|
|
12688
|
-
/* @__PURE__ */ (0,
|
|
12689
|
-
nftAssets.map((asset) => /* @__PURE__ */ (0,
|
|
12779
|
+
nftAssets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
|
|
12780
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "NFTs" }),
|
|
12781
|
+
nftAssets.map((asset) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12690
12782
|
AssetListItem,
|
|
12691
12783
|
{
|
|
12692
12784
|
asset,
|
|
@@ -12696,7 +12788,7 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12696
12788
|
`nft-${asset.address}-${asset.tokenId}`
|
|
12697
12789
|
))
|
|
12698
12790
|
] }),
|
|
12699
|
-
transferableAssets.length === 0 && /* @__PURE__ */ (0,
|
|
12791
|
+
transferableAssets.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "p-4 text-center text-sm text-[var(--l-pass-fg-muted)]", children: "No assets available" })
|
|
12700
12792
|
] })
|
|
12701
12793
|
]
|
|
12702
12794
|
}
|
|
@@ -12705,7 +12797,7 @@ function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
|
12705
12797
|
}
|
|
12706
12798
|
|
|
12707
12799
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
12708
|
-
var
|
|
12800
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
12709
12801
|
function isNftAsset3(asset) {
|
|
12710
12802
|
if (!asset) return false;
|
|
12711
12803
|
return asset.type === "erc721" || asset.type === "erc1155";
|
|
@@ -12731,8 +12823,8 @@ function formatBalance(balance, decimals = 4) {
|
|
|
12731
12823
|
function NftDisplayCard({ asset }) {
|
|
12732
12824
|
const [imageError, setImageError] = (0, import_react50.useState)(false);
|
|
12733
12825
|
const nftImage = asset.image || asset.nftMetadata?.image;
|
|
12734
|
-
return /* @__PURE__ */ (0,
|
|
12735
|
-
nftImage && !imageError ? /* @__PURE__ */ (0,
|
|
12826
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-3 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
12827
|
+
nftImage && !imageError ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
12736
12828
|
"img",
|
|
12737
12829
|
{
|
|
12738
12830
|
src: nftImage,
|
|
@@ -12740,19 +12832,19 @@ function NftDisplayCard({ asset }) {
|
|
|
12740
12832
|
className: "w-16 h-16 rounded-[var(--l-pass-el-bdrs)] object-cover",
|
|
12741
12833
|
onError: () => setImageError(true)
|
|
12742
12834
|
}
|
|
12743
|
-
) : /* @__PURE__ */ (0,
|
|
12744
|
-
/* @__PURE__ */ (0,
|
|
12745
|
-
/* @__PURE__ */ (0,
|
|
12746
|
-
/* @__PURE__ */ (0,
|
|
12835
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-16 h-16 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-fg)] flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Image, { className: "w-8 h-8 text-[var(--l-pass-fg-inverted)]" }) }),
|
|
12836
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
12837
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "font-semibold text-[var(--l-pass-fg)] truncate", children: asset.nftMetadata?.name || asset.name }),
|
|
12838
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
12747
12839
|
asset.symbol,
|
|
12748
|
-
asset.tokenId && /* @__PURE__ */ (0,
|
|
12840
|
+
asset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "ml-1", children: [
|
|
12749
12841
|
"#",
|
|
12750
12842
|
asset.tokenId.length > 8 ? `${asset.tokenId.slice(0, 6)}...` : asset.tokenId
|
|
12751
12843
|
] })
|
|
12752
12844
|
] }),
|
|
12753
|
-
/* @__PURE__ */ (0,
|
|
12754
|
-
/* @__PURE__ */ (0,
|
|
12755
|
-
/* @__PURE__ */ (0,
|
|
12845
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "text-xs text-[var(--l-pass-fg-muted)] mt-1 flex items-center gap-1", children: [
|
|
12846
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Sparkles, { className: "w-3 h-3" }),
|
|
12847
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: asset.type === "erc721" ? "ERC-721" : "ERC-1155" })
|
|
12756
12848
|
] })
|
|
12757
12849
|
] })
|
|
12758
12850
|
] });
|
|
@@ -12938,15 +13030,15 @@ function SendLumiaMenu() {
|
|
|
12938
13030
|
if (isNft) return `Send NFT`;
|
|
12939
13031
|
return `Send ${selectedAsset.symbol}`;
|
|
12940
13032
|
};
|
|
12941
|
-
return /* @__PURE__ */ (0,
|
|
12942
|
-
/* @__PURE__ */ (0,
|
|
12943
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
12944
|
-
/* @__PURE__ */ (0,
|
|
13033
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
13034
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13035
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
13036
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xl font-semibold", children: getPageTitle() })
|
|
12945
13037
|
] }),
|
|
12946
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
12947
|
-
/* @__PURE__ */ (0,
|
|
12948
|
-
/* @__PURE__ */ (0,
|
|
12949
|
-
/* @__PURE__ */ (0,
|
|
13038
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13039
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
|
|
13040
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient" }),
|
|
13041
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
12950
13042
|
Input,
|
|
12951
13043
|
{
|
|
12952
13044
|
Icon: isNicknameInput ? import_lucide_react44.AtSign : import_lucide_react44.Wallet,
|
|
@@ -12954,50 +13046,50 @@ function SendLumiaMenu() {
|
|
|
12954
13046
|
value: recipient,
|
|
12955
13047
|
onChange: (e) => setRecipient(e.target.value),
|
|
12956
13048
|
placeholder: "0x... or @nickname",
|
|
12957
|
-
element: isNicknameInput && isResolving ? /* @__PURE__ */ (0,
|
|
13049
|
+
element: isNicknameInput && isResolving ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Loader, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" }) : null
|
|
12958
13050
|
}
|
|
12959
13051
|
),
|
|
12960
|
-
isNicknameInput && resolvedAddress && !isResolving && nicknameData && /* @__PURE__ */ (0,
|
|
12961
|
-
nicknameData.avatarSvg ? /* @__PURE__ */ (0,
|
|
13052
|
+
isNicknameInput && resolvedAddress && !isResolving && nicknameData && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-start gap-3 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
13053
|
+
nicknameData.avatarSvg ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
12962
13054
|
"img",
|
|
12963
13055
|
{
|
|
12964
13056
|
src: nicknameData.avatarSvg,
|
|
12965
13057
|
alt: nicknameData.handle,
|
|
12966
13058
|
className: "w-10 h-10 rounded-full object-cover flex-shrink-0"
|
|
12967
13059
|
}
|
|
12968
|
-
) : /* @__PURE__ */ (0,
|
|
12969
|
-
/* @__PURE__ */ (0,
|
|
12970
|
-
/* @__PURE__ */ (0,
|
|
12971
|
-
/* @__PURE__ */ (0,
|
|
12972
|
-
/* @__PURE__ */ (0,
|
|
13060
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-10 h-10 rounded-full bg-[var(--l-pass-bg)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AtSign, { className: "w-5 h-5 text-[var(--l-pass-fg-muted)]" }) }),
|
|
13061
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
13062
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-success)]", children: [
|
|
13063
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.CheckCircle2, { className: "w-3 h-3 flex-shrink-0" }),
|
|
13064
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "font-mono", children: `${resolvedAddress.slice(0, 6)}...${resolvedAddress.slice(-4)}` })
|
|
12973
13065
|
] }),
|
|
12974
|
-
nicknameData.fingerprint && /* @__PURE__ */ (0,
|
|
12975
|
-
isFingerprintVerified ? /* @__PURE__ */ (0,
|
|
12976
|
-
/* @__PURE__ */ (0,
|
|
13066
|
+
nicknameData.fingerprint && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: `flex items-center gap-1.5 text-xs ${isFingerprintVerified ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-error)]"}`, children: [
|
|
13067
|
+
isFingerprintVerified ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Shield, { className: "w-3 h-3 flex-shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.ShieldAlert, { className: "w-3 h-3 flex-shrink-0" }),
|
|
13068
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { children: [
|
|
12977
13069
|
"Fingerprint: ",
|
|
12978
13070
|
nicknameData.fingerprint
|
|
12979
13071
|
] }),
|
|
12980
|
-
/* @__PURE__ */ (0,
|
|
13072
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: isFingerprintVerified ? "Verified" : "FAILED" })
|
|
12981
13073
|
] })
|
|
12982
13074
|
] })
|
|
12983
13075
|
] }),
|
|
12984
|
-
isNicknameInput && isFrozen && !isResolving && /* @__PURE__ */ (0,
|
|
12985
|
-
/* @__PURE__ */ (0,
|
|
12986
|
-
/* @__PURE__ */ (0,
|
|
13076
|
+
isNicknameInput && isFrozen && !isResolving && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-warning)]", children: [
|
|
13077
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AlertTriangle, { className: "w-3 h-3" }),
|
|
13078
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: "This handle is frozen. Proceed with caution." })
|
|
12987
13079
|
] }),
|
|
12988
|
-
isNicknameInput && isWalletNotSetup && !isResolving && /* @__PURE__ */ (0,
|
|
12989
|
-
/* @__PURE__ */ (0,
|
|
12990
|
-
/* @__PURE__ */ (0,
|
|
13080
|
+
isNicknameInput && isWalletNotSetup && !isResolving && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-error)]", children: [
|
|
13081
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AlertCircle, { className: "w-3 h-3" }),
|
|
13082
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: "This user has not set up their wallet yet" })
|
|
12991
13083
|
] }),
|
|
12992
|
-
isNicknameInput && isNotFound && !isResolving && /* @__PURE__ */ (0,
|
|
12993
|
-
/* @__PURE__ */ (0,
|
|
12994
|
-
/* @__PURE__ */ (0,
|
|
13084
|
+
isNicknameInput && isNotFound && !isResolving && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-error)]", children: [
|
|
13085
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AlertCircle, { className: "w-3 h-3" }),
|
|
13086
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: "Nickname not found" })
|
|
12995
13087
|
] })
|
|
12996
13088
|
] }),
|
|
12997
|
-
/* @__PURE__ */ (0,
|
|
12998
|
-
/* @__PURE__ */ (0,
|
|
12999
|
-
/* @__PURE__ */ (0,
|
|
13000
|
-
!isNft && selectedAsset && /* @__PURE__ */ (0,
|
|
13089
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
|
|
13090
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between items-center", children: [
|
|
13091
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: isNft ? "Asset" : "Amount" }),
|
|
13092
|
+
!isNft && selectedAsset && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
13001
13093
|
"Balance: ",
|
|
13002
13094
|
formatBalance(balance),
|
|
13003
13095
|
" ",
|
|
@@ -13006,11 +13098,11 @@ function SendLumiaMenu() {
|
|
|
13006
13098
|
] }),
|
|
13007
13099
|
isNft && selectedAsset ? (
|
|
13008
13100
|
// NFT display card
|
|
13009
|
-
/* @__PURE__ */ (0,
|
|
13101
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(NftDisplayCard, { asset: selectedAsset })
|
|
13010
13102
|
) : (
|
|
13011
13103
|
// Fungible token amount input
|
|
13012
|
-
/* @__PURE__ */ (0,
|
|
13013
|
-
selectedAsset && /* @__PURE__ */ (0,
|
|
13104
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("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: [
|
|
13105
|
+
selectedAsset && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13014
13106
|
AssetSelector,
|
|
13015
13107
|
{
|
|
13016
13108
|
assets,
|
|
@@ -13019,7 +13111,7 @@ function SendLumiaMenu() {
|
|
|
13019
13111
|
disabled: isAssetsLoading
|
|
13020
13112
|
}
|
|
13021
13113
|
),
|
|
13022
|
-
/* @__PURE__ */ (0,
|
|
13114
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13023
13115
|
"input",
|
|
13024
13116
|
{
|
|
13025
13117
|
type: "number",
|
|
@@ -13035,12 +13127,12 @@ function SendLumiaMenu() {
|
|
|
13035
13127
|
)
|
|
13036
13128
|
}
|
|
13037
13129
|
),
|
|
13038
|
-
/* @__PURE__ */ (0,
|
|
13130
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { onClick: handleMaxAmount, variant: "ghost", size: "medium", children: "MAX" })
|
|
13039
13131
|
] })
|
|
13040
13132
|
),
|
|
13041
|
-
isNft && selectedAsset && /* @__PURE__ */ (0,
|
|
13042
|
-
/* @__PURE__ */ (0,
|
|
13043
|
-
/* @__PURE__ */ (0,
|
|
13133
|
+
isNft && selectedAsset && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-2 mt-2", children: [
|
|
13134
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Change asset:" }),
|
|
13135
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13044
13136
|
AssetSelector,
|
|
13045
13137
|
{
|
|
13046
13138
|
assets,
|
|
@@ -13051,71 +13143,71 @@ function SendLumiaMenu() {
|
|
|
13051
13143
|
)
|
|
13052
13144
|
] })
|
|
13053
13145
|
] }),
|
|
13054
|
-
isSecurity && effectiveAddress && amount && /* @__PURE__ */ (0,
|
|
13146
|
+
isSecurity && effectiveAddress && amount && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: cn(
|
|
13055
13147
|
"flex items-center gap-2 p-3 rounded-[var(--l-pass-el-bdrs)]",
|
|
13056
13148
|
isComplianceLoading && "bg-[var(--l-pass-bg-info)] text-[var(--l-pass-info)]",
|
|
13057
13149
|
!isComplianceLoading && erc3643CanTransfer && "bg-[var(--l-pass-bg-success)] text-[var(--l-pass-success)]",
|
|
13058
13150
|
!isComplianceLoading && !erc3643CanTransfer && "bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)]"
|
|
13059
|
-
), children: isComplianceLoading ? /* @__PURE__ */ (0,
|
|
13060
|
-
/* @__PURE__ */ (0,
|
|
13061
|
-
/* @__PURE__ */ (0,
|
|
13062
|
-
] }) : erc3643CanTransfer ? /* @__PURE__ */ (0,
|
|
13063
|
-
/* @__PURE__ */ (0,
|
|
13064
|
-
/* @__PURE__ */ (0,
|
|
13065
|
-
] }) : /* @__PURE__ */ (0,
|
|
13066
|
-
/* @__PURE__ */ (0,
|
|
13067
|
-
/* @__PURE__ */ (0,
|
|
13151
|
+
), children: isComplianceLoading ? /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13152
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
13153
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-sm", children: "Checking compliance..." })
|
|
13154
|
+
] }) : erc3643CanTransfer ? /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13155
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.CheckCircle2, { className: "h-4 w-4" }),
|
|
13156
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-sm", children: "Transfer compliant" })
|
|
13157
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13158
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AlertCircle, { className: "h-4 w-4" }),
|
|
13159
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-sm", children: complianceError || "Transfer not allowed" })
|
|
13068
13160
|
] }) }),
|
|
13069
|
-
(validationError || error) && /* @__PURE__ */ (0,
|
|
13070
|
-
/* @__PURE__ */ (0,
|
|
13071
|
-
/* @__PURE__ */ (0,
|
|
13161
|
+
(validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
13162
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AlertCircle, { className: "h-4 w-4" }),
|
|
13163
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-sm", children: validationError || error })
|
|
13072
13164
|
] }),
|
|
13073
|
-
/* @__PURE__ */ (0,
|
|
13165
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { onClick: handleSend, disabled: isLoading || isComplianceLoading, className: "w-full", size: "large", children: "Continue" })
|
|
13074
13166
|
] }),
|
|
13075
|
-
txStep === "confirm" && effectiveAddress && selectedAsset && /* @__PURE__ */ (0,
|
|
13076
|
-
isNicknameInput && isFrozen && /* @__PURE__ */ (0,
|
|
13077
|
-
/* @__PURE__ */ (0,
|
|
13078
|
-
/* @__PURE__ */ (0,
|
|
13167
|
+
txStep === "confirm" && effectiveAddress && selectedAsset && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13168
|
+
isNicknameInput && isFrozen && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("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: [
|
|
13169
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AlertTriangle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
13170
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-sm font-medium", children: "This handle is frozen. Proceed with caution." })
|
|
13079
13171
|
] }),
|
|
13080
|
-
isSecurity && erc3643CanTransfer && /* @__PURE__ */ (0,
|
|
13081
|
-
/* @__PURE__ */ (0,
|
|
13082
|
-
/* @__PURE__ */ (0,
|
|
13172
|
+
isSecurity && erc3643CanTransfer && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("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: [
|
|
13173
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Shield, { className: "h-4 w-4 flex-shrink-0" }),
|
|
13174
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-sm font-medium", children: "Security token compliance verified" })
|
|
13083
13175
|
] }),
|
|
13084
|
-
/* @__PURE__ */ (0,
|
|
13085
|
-
/* @__PURE__ */ (0,
|
|
13086
|
-
nicknameData.avatarSvg ? /* @__PURE__ */ (0,
|
|
13176
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "bg-[var(--l-pass-bg-secondary)] rounded-[var(--l-pass-el-bdrs)] p-4", children: isNicknameInput && nicknameData ? /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13177
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-start gap-3 mb-4", children: [
|
|
13178
|
+
nicknameData.avatarSvg ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
13087
13179
|
"img",
|
|
13088
13180
|
{
|
|
13089
13181
|
src: nicknameData.avatarSvg,
|
|
13090
13182
|
alt: nicknameData.handle,
|
|
13091
13183
|
className: "w-12 h-12 rounded-full object-cover flex-shrink-0"
|
|
13092
13184
|
}
|
|
13093
|
-
) : /* @__PURE__ */ (0,
|
|
13094
|
-
/* @__PURE__ */ (0,
|
|
13095
|
-
/* @__PURE__ */ (0,
|
|
13096
|
-
nicknameData.fingerprint && /* @__PURE__ */ (0,
|
|
13097
|
-
isFingerprintVerified ? /* @__PURE__ */ (0,
|
|
13098
|
-
/* @__PURE__ */ (0,
|
|
13185
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-bg)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.AtSign, { className: "w-6 h-6 text-[var(--l-pass-fg-muted)]" }) }),
|
|
13186
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
13187
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "font-semibold text-lg text-[var(--l-pass-fg)] truncate", children: nicknameData.handle }),
|
|
13188
|
+
nicknameData.fingerprint && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: `flex items-center gap-1.5 text-sm ${isFingerprintVerified ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-error)]"}`, children: [
|
|
13189
|
+
isFingerprintVerified ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Shield, { className: "w-4 h-4 flex-shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.ShieldAlert, { className: "w-4 h-4 flex-shrink-0" }),
|
|
13190
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { children: [
|
|
13099
13191
|
"Fingerprint: ",
|
|
13100
13192
|
nicknameData.fingerprint
|
|
13101
13193
|
] }),
|
|
13102
|
-
isFingerprintVerified && /* @__PURE__ */ (0,
|
|
13103
|
-
/* @__PURE__ */ (0,
|
|
13194
|
+
isFingerprintVerified && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.CheckCircle2, { className: "w-3 h-3" }),
|
|
13195
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-xs", children: isFingerprintVerified ? "Verified" : "FAILED" })
|
|
13104
13196
|
] }),
|
|
13105
|
-
/* @__PURE__ */ (0,
|
|
13197
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "font-mono text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13106
13198
|
"Address: ",
|
|
13107
13199
|
`${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-6)}`
|
|
13108
13200
|
] })
|
|
13109
13201
|
] })
|
|
13110
13202
|
] }),
|
|
13111
|
-
/* @__PURE__ */ (0,
|
|
13203
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "border-t border-[var(--l-pass-border)] pt-3 space-y-2 text-sm text-[var(--l-pass-fg)]", children: [
|
|
13112
13204
|
isNft ? (
|
|
13113
13205
|
// NFT details
|
|
13114
|
-
/* @__PURE__ */ (0,
|
|
13115
|
-
/* @__PURE__ */ (0,
|
|
13116
|
-
/* @__PURE__ */ (0,
|
|
13117
|
-
/* @__PURE__ */ (0,
|
|
13118
|
-
selectedAsset.tokenId && /* @__PURE__ */ (0,
|
|
13206
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_jsx_runtime65.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between items-start", children: [
|
|
13207
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "NFT:" }),
|
|
13208
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "text-right", children: [
|
|
13209
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
|
|
13210
|
+
selectedAsset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13119
13211
|
"#",
|
|
13120
13212
|
selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
|
|
13121
13213
|
] })
|
|
@@ -13123,34 +13215,34 @@ function SendLumiaMenu() {
|
|
|
13123
13215
|
] }) })
|
|
13124
13216
|
) : (
|
|
13125
13217
|
// Fungible token details
|
|
13126
|
-
/* @__PURE__ */ (0,
|
|
13127
|
-
/* @__PURE__ */ (0,
|
|
13128
|
-
/* @__PURE__ */ (0,
|
|
13218
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between", children: [
|
|
13219
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Amount:" }),
|
|
13220
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "font-semibold", children: [
|
|
13129
13221
|
amount,
|
|
13130
13222
|
" ",
|
|
13131
13223
|
selectedAsset.symbol
|
|
13132
13224
|
] })
|
|
13133
13225
|
] })
|
|
13134
13226
|
),
|
|
13135
|
-
/* @__PURE__ */ (0,
|
|
13136
|
-
/* @__PURE__ */ (0,
|
|
13137
|
-
/* @__PURE__ */ (0,
|
|
13227
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between", children: [
|
|
13228
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Network:" }),
|
|
13229
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: "Lumia Beam" })
|
|
13138
13230
|
] })
|
|
13139
13231
|
] })
|
|
13140
|
-
] }) : /* @__PURE__ */ (0,
|
|
13141
|
-
/* @__PURE__ */ (0,
|
|
13142
|
-
/* @__PURE__ */ (0,
|
|
13143
|
-
/* @__PURE__ */ (0,
|
|
13144
|
-
/* @__PURE__ */ (0,
|
|
13145
|
-
/* @__PURE__ */ (0,
|
|
13232
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13233
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("h3", { className: "font-medium mb-3 text-[var(--l-pass-fg)]", children: "Transaction Details" }),
|
|
13234
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "space-y-2 text-sm text-[var(--l-pass-fg)]", children: [
|
|
13235
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between", children: [
|
|
13236
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "To:" }),
|
|
13237
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "font-mono text-xs", children: `${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-4)}` })
|
|
13146
13238
|
] }),
|
|
13147
13239
|
isNft ? (
|
|
13148
13240
|
// NFT details
|
|
13149
|
-
/* @__PURE__ */ (0,
|
|
13150
|
-
/* @__PURE__ */ (0,
|
|
13151
|
-
/* @__PURE__ */ (0,
|
|
13152
|
-
/* @__PURE__ */ (0,
|
|
13153
|
-
selectedAsset.tokenId && /* @__PURE__ */ (0,
|
|
13241
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_jsx_runtime65.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between items-start", children: [
|
|
13242
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "NFT:" }),
|
|
13243
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "text-right", children: [
|
|
13244
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
|
|
13245
|
+
selectedAsset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13154
13246
|
"#",
|
|
13155
13247
|
selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
|
|
13156
13248
|
] })
|
|
@@ -13158,43 +13250,43 @@ function SendLumiaMenu() {
|
|
|
13158
13250
|
] }) })
|
|
13159
13251
|
) : (
|
|
13160
13252
|
// Fungible token details
|
|
13161
|
-
/* @__PURE__ */ (0,
|
|
13162
|
-
/* @__PURE__ */ (0,
|
|
13163
|
-
/* @__PURE__ */ (0,
|
|
13253
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between", children: [
|
|
13254
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Amount:" }),
|
|
13255
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("span", { className: "font-semibold", children: [
|
|
13164
13256
|
amount,
|
|
13165
13257
|
" ",
|
|
13166
13258
|
selectedAsset.symbol
|
|
13167
13259
|
] })
|
|
13168
13260
|
] })
|
|
13169
13261
|
),
|
|
13170
|
-
/* @__PURE__ */ (0,
|
|
13171
|
-
/* @__PURE__ */ (0,
|
|
13172
|
-
/* @__PURE__ */ (0,
|
|
13262
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex justify-between", children: [
|
|
13263
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Network:" }),
|
|
13264
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { children: "Lumia Beam" })
|
|
13173
13265
|
] })
|
|
13174
13266
|
] })
|
|
13175
13267
|
] }) }),
|
|
13176
|
-
/* @__PURE__ */ (0,
|
|
13177
|
-
/* @__PURE__ */ (0,
|
|
13178
|
-
/* @__PURE__ */ (0,
|
|
13179
|
-
isLoading && /* @__PURE__ */ (0,
|
|
13268
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex gap-2", children: [
|
|
13269
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
13270
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
13271
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
13180
13272
|
"Confirm"
|
|
13181
13273
|
] })
|
|
13182
13274
|
] })
|
|
13183
13275
|
] }),
|
|
13184
|
-
txStep === "pending" && /* @__PURE__ */ (0,
|
|
13185
|
-
/* @__PURE__ */ (0,
|
|
13186
|
-
/* @__PURE__ */ (0,
|
|
13187
|
-
/* @__PURE__ */ (0,
|
|
13188
|
-
/* @__PURE__ */ (0,
|
|
13276
|
+
txStep === "pending" && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "py-8 text-center space-y-4", children: [
|
|
13277
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.Loader, { className: "h-5 w-5 animate-spin mx-auto" }),
|
|
13278
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { children: [
|
|
13279
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
13280
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
13189
13281
|
] })
|
|
13190
13282
|
] }),
|
|
13191
|
-
txStep === "success" && userOpHash && /* @__PURE__ */ (0,
|
|
13192
|
-
/* @__PURE__ */ (0,
|
|
13193
|
-
/* @__PURE__ */ (0,
|
|
13194
|
-
/* @__PURE__ */ (0,
|
|
13195
|
-
/* @__PURE__ */ (0,
|
|
13283
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
|
|
13284
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "text-center py-4", children: [
|
|
13285
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react44.CheckCircle2, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
13286
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
13287
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
13196
13288
|
] }),
|
|
13197
|
-
/* @__PURE__ */ (0,
|
|
13289
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
13198
13290
|
] })
|
|
13199
13291
|
] });
|
|
13200
13292
|
}
|
|
@@ -13204,7 +13296,7 @@ var import_lucide_react45 = require("lucide-react");
|
|
|
13204
13296
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
13205
13297
|
var import_react51 = require("react");
|
|
13206
13298
|
init_clients();
|
|
13207
|
-
var
|
|
13299
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
13208
13300
|
function ReceiveLumiaMenu() {
|
|
13209
13301
|
const session = useLumiaPassportSession((st) => st.session);
|
|
13210
13302
|
const address = session?.smartAccountAddress ?? null;
|
|
@@ -13256,7 +13348,7 @@ function ReceiveLumiaMenu() {
|
|
|
13256
13348
|
console.error("Failed to copy fingerprint:", error);
|
|
13257
13349
|
}
|
|
13258
13350
|
}, [fingerprint]);
|
|
13259
|
-
return /* @__PURE__ */ (0,
|
|
13351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
13260
13352
|
"div",
|
|
13261
13353
|
{
|
|
13262
13354
|
style: {
|
|
@@ -13265,61 +13357,64 @@ function ReceiveLumiaMenu() {
|
|
|
13265
13357
|
},
|
|
13266
13358
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
13267
13359
|
children: [
|
|
13268
|
-
/* @__PURE__ */ (0,
|
|
13269
|
-
/* @__PURE__ */ (0,
|
|
13270
|
-
/* @__PURE__ */ (0,
|
|
13360
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13361
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
13362
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
13271
13363
|
] }),
|
|
13272
|
-
/* @__PURE__ */ (0,
|
|
13273
|
-
/* @__PURE__ */ (0,
|
|
13274
|
-
/* @__PURE__ */ (0,
|
|
13364
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Highlight, { className: "text-center", type: "warning", children: [
|
|
13365
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
13366
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
13275
13367
|
] }),
|
|
13276
|
-
/* @__PURE__ */ (0,
|
|
13277
|
-
fingerprint && /* @__PURE__ */ (0,
|
|
13278
|
-
/* @__PURE__ */ (0,
|
|
13279
|
-
/* @__PURE__ */ (0,
|
|
13280
|
-
/* @__PURE__ */ (0,
|
|
13281
|
-
/* @__PURE__ */ (0,
|
|
13282
|
-
/* @__PURE__ */ (0,
|
|
13283
|
-
/* @__PURE__ */ (0,
|
|
13368
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.Loader, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
13369
|
+
fingerprint && /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex items-center justify-center gap-2 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
13370
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.Shield, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }),
|
|
13371
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Fingerprint:" }),
|
|
13372
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "font-mono text-sm font-semibold text-[var(--l-pass-fg)]", children: fingerprint }),
|
|
13373
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "relative group", children: [
|
|
13374
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.Info, { className: "w-3.5 h-3.5 text-[var(--l-pass-fg-muted)] cursor-help" }),
|
|
13375
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("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" })
|
|
13284
13376
|
] }),
|
|
13285
|
-
/* @__PURE__ */ (0,
|
|
13377
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
13286
13378
|
"button",
|
|
13287
13379
|
{
|
|
13288
13380
|
onClick: handleCopyFingerprint,
|
|
13289
13381
|
className: "p-1 rounded hover:bg-[var(--l-pass-bg)] transition-colors",
|
|
13290
13382
|
title: "Copy fingerprint",
|
|
13291
|
-
children: fingerprintCopied ? /* @__PURE__ */ (0,
|
|
13383
|
+
children: fingerprintCopied ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.CheckCircle2, { className: "w-3.5 h-3.5 text-[var(--l-pass-bg-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.Copy, { className: "w-3.5 h-3.5 text-[var(--l-pass-fg-muted)]" })
|
|
13292
13384
|
}
|
|
13293
13385
|
)
|
|
13294
13386
|
] }),
|
|
13295
|
-
/* @__PURE__ */ (0,
|
|
13296
|
-
/* @__PURE__ */ (0,
|
|
13297
|
-
/* @__PURE__ */ (0,
|
|
13298
|
-
/* @__PURE__ */ (0,
|
|
13299
|
-
/* @__PURE__ */ (0,
|
|
13300
|
-
] }) : /* @__PURE__ */ (0,
|
|
13301
|
-
/* @__PURE__ */ (0,
|
|
13302
|
-
/* @__PURE__ */ (0,
|
|
13387
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Highlight, { type: "info", children: [
|
|
13388
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
13389
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { onClick: handleCopy, className: "w-full", size: "large", children: copied ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [
|
|
13390
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.CheckCircle2, { className: "h-4 w-4" }),
|
|
13391
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { children: "Copied!" })
|
|
13392
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [
|
|
13393
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react45.Copy, { className: "h-4 w-4" }),
|
|
13394
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { children: "Copy Address" })
|
|
13303
13395
|
] }) })
|
|
13304
13396
|
] }),
|
|
13305
|
-
/* @__PURE__ */ (0,
|
|
13397
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
13306
13398
|
]
|
|
13307
13399
|
}
|
|
13308
13400
|
);
|
|
13309
13401
|
}
|
|
13310
13402
|
|
|
13311
13403
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
13404
|
+
var import_react_query35 = require("@tanstack/react-query");
|
|
13312
13405
|
var import_lucide_react47 = require("lucide-react");
|
|
13313
13406
|
var import_react52 = require("react");
|
|
13407
|
+
init_nickname();
|
|
13408
|
+
init_profile();
|
|
13314
13409
|
|
|
13315
13410
|
// src/internal/components/SettingsMenu/constants.ts
|
|
13316
13411
|
var import_lucide_react46 = require("lucide-react");
|
|
13317
13412
|
|
|
13318
13413
|
// src/internal/assets/KycIcon.tsx
|
|
13319
|
-
var
|
|
13414
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
13320
13415
|
function KycIcon(props) {
|
|
13321
13416
|
const { width = "24", height = "24", ...rest } = props;
|
|
13322
|
-
return /* @__PURE__ */ (0,
|
|
13417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
13323
13418
|
"path",
|
|
13324
13419
|
{
|
|
13325
13420
|
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",
|
|
@@ -13339,7 +13434,7 @@ var NAV_BUTTONS = [
|
|
|
13339
13434
|
];
|
|
13340
13435
|
|
|
13341
13436
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
13342
|
-
var
|
|
13437
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
13343
13438
|
function SettingsMenu() {
|
|
13344
13439
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13345
13440
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -13348,9 +13443,15 @@ function SettingsMenu() {
|
|
|
13348
13443
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
13349
13444
|
(0, import_react52.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
13350
13445
|
useProvidersList();
|
|
13446
|
+
(0, import_react_query35.useQuery)({
|
|
13447
|
+
retry: 1,
|
|
13448
|
+
enabled: !!address,
|
|
13449
|
+
queryKey: [QUERY_KEYS.nicknameInfo, address],
|
|
13450
|
+
queryFn: getNicknameInfo
|
|
13451
|
+
});
|
|
13351
13452
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
13352
13453
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
13353
|
-
return /* @__PURE__ */ (0,
|
|
13454
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
13354
13455
|
"div",
|
|
13355
13456
|
{
|
|
13356
13457
|
style: {
|
|
@@ -13359,11 +13460,11 @@ function SettingsMenu() {
|
|
|
13359
13460
|
},
|
|
13360
13461
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
13361
13462
|
children: [
|
|
13362
|
-
/* @__PURE__ */ (0,
|
|
13363
|
-
/* @__PURE__ */ (0,
|
|
13364
|
-
/* @__PURE__ */ (0,
|
|
13463
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13464
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react47.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
13465
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-xl font-semibold", children: "Settings" })
|
|
13365
13466
|
] }),
|
|
13366
|
-
/* @__PURE__ */ (0,
|
|
13467
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
13367
13468
|
Button,
|
|
13368
13469
|
{
|
|
13369
13470
|
variant: "outline",
|
|
@@ -13376,8 +13477,8 @@ function SettingsMenu() {
|
|
|
13376
13477
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
13377
13478
|
),
|
|
13378
13479
|
children: [
|
|
13379
|
-
/* @__PURE__ */ (0,
|
|
13380
|
-
/* @__PURE__ */ (0,
|
|
13480
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Icon2, { className: "w-4 h-4" }),
|
|
13481
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { children: name })
|
|
13381
13482
|
]
|
|
13382
13483
|
},
|
|
13383
13484
|
id
|
|
@@ -13389,33 +13490,33 @@ function SettingsMenu() {
|
|
|
13389
13490
|
|
|
13390
13491
|
// src/internal/components/TermsOfService.tsx
|
|
13391
13492
|
var import_lucide_react48 = require("lucide-react");
|
|
13392
|
-
var
|
|
13493
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
13393
13494
|
function TermsOfService() {
|
|
13394
13495
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13395
13496
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
13396
|
-
return /* @__PURE__ */ (0,
|
|
13397
|
-
/* @__PURE__ */ (0,
|
|
13398
|
-
/* @__PURE__ */ (0,
|
|
13497
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
13498
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13499
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
13399
13500
|
Button,
|
|
13400
13501
|
{
|
|
13401
13502
|
variant: "ghost",
|
|
13402
13503
|
size: "icon",
|
|
13403
13504
|
title: "Back",
|
|
13404
13505
|
onClick: () => setPage(!!address ? "settings" /* SETTINGS */ : "auth" /* AUTH */),
|
|
13405
|
-
children: /* @__PURE__ */ (0,
|
|
13506
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_lucide_react48.ArrowLeft, { className: "h-4 w-4" })
|
|
13406
13507
|
}
|
|
13407
13508
|
),
|
|
13408
|
-
/* @__PURE__ */ (0,
|
|
13509
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-xl font-semibold", children: "Terms of Service" })
|
|
13409
13510
|
] }),
|
|
13410
|
-
/* @__PURE__ */ (0,
|
|
13411
|
-
/* @__PURE__ */ (0,
|
|
13412
|
-
/* @__PURE__ */ (0,
|
|
13511
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Highlight, { type: "warning", className: "text-center", children: [
|
|
13512
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "block text-xs", children: "By using Lumia Passport you agree to our terms." }),
|
|
13513
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "block text-xs", children: "To be updated..." })
|
|
13413
13514
|
] })
|
|
13414
13515
|
] });
|
|
13415
13516
|
}
|
|
13416
13517
|
|
|
13417
13518
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
13418
|
-
var
|
|
13519
|
+
var import_react_query36 = require("@tanstack/react-query");
|
|
13419
13520
|
var import_lucide_react50 = require("lucide-react");
|
|
13420
13521
|
var import_react53 = require("react");
|
|
13421
13522
|
|
|
@@ -13795,22 +13896,22 @@ var formatTimestamp = (timestampMs) => {
|
|
|
13795
13896
|
};
|
|
13796
13897
|
|
|
13797
13898
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
13798
|
-
var
|
|
13899
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
13799
13900
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
13800
13901
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
13801
13902
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
13802
|
-
return /* @__PURE__ */ (0,
|
|
13803
|
-
/* @__PURE__ */ (0,
|
|
13804
|
-
/* @__PURE__ */ (0,
|
|
13805
|
-
/* @__PURE__ */ (0,
|
|
13903
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
13904
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
13905
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
13906
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("span", { children: [
|
|
13806
13907
|
formatValue2(internal.value, internalDecimals),
|
|
13807
13908
|
" ",
|
|
13808
13909
|
internalSymbol
|
|
13809
13910
|
] })
|
|
13810
13911
|
] }),
|
|
13811
|
-
/* @__PURE__ */ (0,
|
|
13812
|
-
/* @__PURE__ */ (0,
|
|
13813
|
-
/* @__PURE__ */ (0,
|
|
13912
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
13913
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
13914
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
13814
13915
|
] })
|
|
13815
13916
|
] });
|
|
13816
13917
|
}
|
|
@@ -13821,7 +13922,7 @@ function TransactionsGroup(props) {
|
|
|
13821
13922
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
13822
13923
|
const assetDecimals = parent.decimals ?? 18;
|
|
13823
13924
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
13824
|
-
return /* @__PURE__ */ (0,
|
|
13925
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13825
13926
|
"div",
|
|
13826
13927
|
{
|
|
13827
13928
|
onClick: () => openInExplorer2(parent.parentHash),
|
|
@@ -13831,28 +13932,28 @@ function TransactionsGroup(props) {
|
|
|
13831
13932
|
"bg-transparent hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
13832
13933
|
),
|
|
13833
13934
|
children: [
|
|
13834
|
-
/* @__PURE__ */ (0,
|
|
13835
|
-
/* @__PURE__ */ (0,
|
|
13836
|
-
parent.direction === "in" ? /* @__PURE__ */ (0,
|
|
13837
|
-
/* @__PURE__ */ (0,
|
|
13838
|
-
parent.status === "ok" ? /* @__PURE__ */ (0,
|
|
13935
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
13936
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-center gap-1 flex-0 w-fit", children: [
|
|
13937
|
+
parent.direction === "in" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react49.ChevronLeft, { className: "w-4 h-4" }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react49.ChevronRight, { className: "w-4 h-4" }),
|
|
13938
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-[10px]", children: isIncoming ? "RECEIVED" : "SENT" }),
|
|
13939
|
+
parent.status === "ok" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(PositiveIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(NegativeIcon, {})
|
|
13839
13940
|
] }),
|
|
13840
|
-
/* @__PURE__ */ (0,
|
|
13941
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "block flex-0 font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) })
|
|
13841
13942
|
] }),
|
|
13842
|
-
/* @__PURE__ */ (0,
|
|
13843
|
-
/* @__PURE__ */ (0,
|
|
13844
|
-
/* @__PURE__ */ (0,
|
|
13943
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
13944
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex flex-col gap-0", children: [
|
|
13945
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("span", { className: "font-bold", children: [
|
|
13845
13946
|
formatValue2(parent.value, assetDecimals),
|
|
13846
13947
|
" ",
|
|
13847
13948
|
assetSymbol
|
|
13848
13949
|
] }),
|
|
13849
|
-
/* @__PURE__ */ (0,
|
|
13950
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("span", { className: "text-[10px] font-mono text-[var(--l-pass-fg-muted)]", children: [
|
|
13850
13951
|
isIncoming ? "From: " : "To: ",
|
|
13851
13952
|
parent.counterpartyName || formatAddress2(parent.counterparty)
|
|
13852
13953
|
] })
|
|
13853
13954
|
] }),
|
|
13854
|
-
/* @__PURE__ */ (0,
|
|
13855
|
-
/* @__PURE__ */ (0,
|
|
13955
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-center gap-0", children: [
|
|
13956
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13856
13957
|
Button,
|
|
13857
13958
|
{
|
|
13858
13959
|
variant: "ghost",
|
|
@@ -13861,10 +13962,10 @@ function TransactionsGroup(props) {
|
|
|
13861
13962
|
onClick: (e) => {
|
|
13862
13963
|
e.stopPropagation();
|
|
13863
13964
|
},
|
|
13864
|
-
children: /* @__PURE__ */ (0,
|
|
13965
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react49.Copy, { className: "w-4 h-4" })
|
|
13865
13966
|
}
|
|
13866
13967
|
),
|
|
13867
|
-
/* @__PURE__ */ (0,
|
|
13968
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13868
13969
|
Button,
|
|
13869
13970
|
{
|
|
13870
13971
|
variant: "ghost",
|
|
@@ -13873,24 +13974,24 @@ function TransactionsGroup(props) {
|
|
|
13873
13974
|
onClick: (e) => {
|
|
13874
13975
|
e.stopPropagation();
|
|
13875
13976
|
},
|
|
13876
|
-
children: /* @__PURE__ */ (0,
|
|
13977
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(LumiaIcon, { className: "w-4 h-4" })
|
|
13877
13978
|
}
|
|
13878
13979
|
)
|
|
13879
13980
|
] })
|
|
13880
13981
|
] }),
|
|
13881
|
-
internalsToRender.length > 0 && /* @__PURE__ */ (0,
|
|
13882
|
-
/* @__PURE__ */ (0,
|
|
13883
|
-
/* @__PURE__ */ (0,
|
|
13884
|
-
/* @__PURE__ */ (0,
|
|
13885
|
-
/* @__PURE__ */ (0,
|
|
13982
|
+
internalsToRender.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_jsx_runtime70.Fragment, { children: [
|
|
13983
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "w-full flex items-center", children: [
|
|
13984
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
13985
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Internals" }),
|
|
13986
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
13886
13987
|
] }),
|
|
13887
|
-
/* @__PURE__ */ (0,
|
|
13988
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13888
13989
|
"div",
|
|
13889
13990
|
{
|
|
13890
13991
|
className: "w-full rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
13891
13992
|
onClick: (event) => event.stopPropagation(),
|
|
13892
13993
|
children: [
|
|
13893
|
-
/* @__PURE__ */ (0,
|
|
13994
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
13894
13995
|
Button,
|
|
13895
13996
|
{
|
|
13896
13997
|
variant: "ghost",
|
|
@@ -13898,16 +13999,16 @@ function TransactionsGroup(props) {
|
|
|
13898
13999
|
className: "w-full justify-between",
|
|
13899
14000
|
onClick: () => onToggleExpanded(group.id),
|
|
13900
14001
|
children: [
|
|
13901
|
-
/* @__PURE__ */ (0,
|
|
14002
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("span", { children: [
|
|
13902
14003
|
"View internal calls (",
|
|
13903
14004
|
internalsToRender.length,
|
|
13904
14005
|
")"
|
|
13905
14006
|
] }),
|
|
13906
|
-
/* @__PURE__ */ (0,
|
|
14007
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { children: expanded ? "Hide" : "Show" })
|
|
13907
14008
|
]
|
|
13908
14009
|
}
|
|
13909
14010
|
),
|
|
13910
|
-
expanded && /* @__PURE__ */ (0,
|
|
14011
|
+
expanded && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "px-2 pb-2 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
13911
14012
|
InternalTransaction,
|
|
13912
14013
|
{
|
|
13913
14014
|
internal,
|
|
@@ -13926,9 +14027,9 @@ function TransactionsGroup(props) {
|
|
|
13926
14027
|
}
|
|
13927
14028
|
|
|
13928
14029
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
13929
|
-
var
|
|
14030
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
13930
14031
|
function TransactionsMenu() {
|
|
13931
|
-
const qc = (0,
|
|
14032
|
+
const qc = (0, import_react_query36.useQueryClient)();
|
|
13932
14033
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13933
14034
|
const page = useLayoutDataStore((st) => st.page);
|
|
13934
14035
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -13939,7 +14040,7 @@ function TransactionsMenu() {
|
|
|
13939
14040
|
isLoading: isTxHistoryLoading,
|
|
13940
14041
|
isFetching: isTxHistoryFetching,
|
|
13941
14042
|
error: txHistoryError
|
|
13942
|
-
} = (0,
|
|
14043
|
+
} = (0, import_react_query36.useQuery)({
|
|
13943
14044
|
retry: false,
|
|
13944
14045
|
enabled: !!address && page === "transactions",
|
|
13945
14046
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
@@ -13950,7 +14051,7 @@ function TransactionsMenu() {
|
|
|
13950
14051
|
[qc, address]
|
|
13951
14052
|
);
|
|
13952
14053
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
13953
|
-
return /* @__PURE__ */ (0,
|
|
14054
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
13954
14055
|
"div",
|
|
13955
14056
|
{
|
|
13956
14057
|
style: {
|
|
@@ -13958,11 +14059,11 @@ function TransactionsMenu() {
|
|
|
13958
14059
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
13959
14060
|
},
|
|
13960
14061
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
13961
|
-
children: /* @__PURE__ */ (0,
|
|
13962
|
-
/* @__PURE__ */ (0,
|
|
13963
|
-
/* @__PURE__ */ (0,
|
|
13964
|
-
/* @__PURE__ */ (0,
|
|
13965
|
-
/* @__PURE__ */ (0,
|
|
14062
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
14063
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
14064
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react50.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
14065
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
14066
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
13966
14067
|
Button,
|
|
13967
14068
|
{
|
|
13968
14069
|
variant: "ghost",
|
|
@@ -13970,17 +14071,17 @@ function TransactionsMenu() {
|
|
|
13970
14071
|
onClick: refreshTxHistory,
|
|
13971
14072
|
disabled: isTxHistoryFetching,
|
|
13972
14073
|
title: "Refresh transactions",
|
|
13973
|
-
children: isTxHistoryFetching ? /* @__PURE__ */ (0,
|
|
14074
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react50.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react50.RefreshCw, { className: "h-4 w-4" })
|
|
13974
14075
|
}
|
|
13975
14076
|
)
|
|
13976
14077
|
] }),
|
|
13977
|
-
isTxHistoryLoading && /* @__PURE__ */ (0,
|
|
13978
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0,
|
|
13979
|
-
/* @__PURE__ */ (0,
|
|
13980
|
-
/* @__PURE__ */ (0,
|
|
14078
|
+
isTxHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react50.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
14079
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
14080
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react50.XCircle, { className: "w-4 h-4 flex-none" }),
|
|
14081
|
+
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
13981
14082
|
] }),
|
|
13982
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0,
|
|
13983
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0,
|
|
14083
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Highlight, { type: "warning", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { children: "No transactions found." }) }),
|
|
14084
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
13984
14085
|
TransactionsGroup,
|
|
13985
14086
|
{
|
|
13986
14087
|
group,
|
|
@@ -14090,12 +14191,12 @@ var PAGE_MAP = {
|
|
|
14090
14191
|
key: "nickname-settings" /* NICKNAME_SETTINGS */,
|
|
14091
14192
|
title: "Nickname Settings",
|
|
14092
14193
|
description: "View and manage your @nickname",
|
|
14093
|
-
component:
|
|
14194
|
+
component: NicknameMenu
|
|
14094
14195
|
}
|
|
14095
14196
|
};
|
|
14096
14197
|
|
|
14097
14198
|
// src/internal/hooks/usePageMapper.tsx
|
|
14098
|
-
var
|
|
14199
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
14099
14200
|
var CLEAR_DIALOG_TIMEOUT = MAIN_DIALOG_ANIMATION_SPEED + 5;
|
|
14100
14201
|
function usePageMapper() {
|
|
14101
14202
|
const page = useLayoutDataStore((st) => st.page);
|
|
@@ -14123,7 +14224,7 @@ function usePageMapper() {
|
|
|
14123
14224
|
const PageContentComponent = pageItem.component;
|
|
14124
14225
|
setDialogTitle(pageItem.title);
|
|
14125
14226
|
setDialogDescription(pageItem.description);
|
|
14126
|
-
setDialogContent(/* @__PURE__ */ (0,
|
|
14227
|
+
setDialogContent(/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(PageContentComponent, {}));
|
|
14127
14228
|
setIsDialogOpen(true);
|
|
14128
14229
|
},
|
|
14129
14230
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
@@ -14141,7 +14242,7 @@ function usePageMapper() {
|
|
|
14141
14242
|
}
|
|
14142
14243
|
|
|
14143
14244
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
14144
|
-
var
|
|
14245
|
+
var import_react_query37 = require("@tanstack/react-query");
|
|
14145
14246
|
var import_react55 = require("react");
|
|
14146
14247
|
init_auth();
|
|
14147
14248
|
init_profile();
|
|
@@ -14160,7 +14261,7 @@ function useSettingsNotifications() {
|
|
|
14160
14261
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
14161
14262
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
14162
14263
|
const hasEmail = providers.includes("email");
|
|
14163
|
-
const { data: userProfile = null } = (0,
|
|
14264
|
+
const { data: userProfile = null } = (0, import_react_query37.useQuery)({
|
|
14164
14265
|
retry: false,
|
|
14165
14266
|
enabled: !!address,
|
|
14166
14267
|
queryKey: [QUERY_KEYS.userProfile, address],
|
|
@@ -14212,7 +14313,7 @@ function useWalletStatus() {
|
|
|
14212
14313
|
}
|
|
14213
14314
|
|
|
14214
14315
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
14215
|
-
var
|
|
14316
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
14216
14317
|
function LumiaPassportDialog() {
|
|
14217
14318
|
const config = useLumiaPassportConfig().config;
|
|
14218
14319
|
const className = config.current?.ui?.dialogClassName;
|
|
@@ -14231,7 +14332,7 @@ function LumiaPassportDialog() {
|
|
|
14231
14332
|
useListenIframeAuthEvents();
|
|
14232
14333
|
useWalletStatus();
|
|
14233
14334
|
const isHeaderHidden = !session || page === "keysare-backup" /* KEYSARE_BACKUP */ && !hasServerVault;
|
|
14234
|
-
return /* @__PURE__ */ (0,
|
|
14335
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
14235
14336
|
Dialog,
|
|
14236
14337
|
{
|
|
14237
14338
|
open: isDialogOpen,
|
|
@@ -14239,11 +14340,11 @@ function LumiaPassportDialog() {
|
|
|
14239
14340
|
if (isDialogForced) return;
|
|
14240
14341
|
if (!open) setPage(null);
|
|
14241
14342
|
},
|
|
14242
|
-
children: /* @__PURE__ */ (0,
|
|
14243
|
-
/* @__PURE__ */ (0,
|
|
14244
|
-
/* @__PURE__ */ (0,
|
|
14245
|
-
!isHeaderHidden && /* @__PURE__ */ (0,
|
|
14246
|
-
/* @__PURE__ */ (0,
|
|
14343
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(DialogContent, { colorMode, className, children: [
|
|
14344
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(DialogTitle, { children: dialogTitle }) }),
|
|
14345
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(DialogDescription, { className: "sr-only", children: dialogDescription }),
|
|
14346
|
+
!isHeaderHidden && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Header, {}),
|
|
14347
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_framer_motion3.AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
14247
14348
|
import_framer_motion3.motion.div,
|
|
14248
14349
|
{
|
|
14249
14350
|
initial: { opacity: 0, height: mainPageHeight },
|
|
@@ -14255,7 +14356,7 @@ function LumiaPassportDialog() {
|
|
|
14255
14356
|
},
|
|
14256
14357
|
page || "empty"
|
|
14257
14358
|
) }),
|
|
14258
|
-
/* @__PURE__ */ (0,
|
|
14359
|
+
/* @__PURE__ */ (0, import_jsx_runtime73.jsx)(Footer, {})
|
|
14259
14360
|
] })
|
|
14260
14361
|
}
|
|
14261
14362
|
);
|
|
@@ -14305,12 +14406,12 @@ var TssManagerWithRef = import_react58.default.forwardRef((props, ref) => {
|
|
|
14305
14406
|
|
|
14306
14407
|
// src/internal/components/WalletConnectHandler.tsx
|
|
14307
14408
|
var import_rainbowkit = require("@rainbow-me/rainbowkit");
|
|
14308
|
-
var
|
|
14409
|
+
var import_react_query38 = require("@tanstack/react-query");
|
|
14309
14410
|
var import_react59 = __toESM(require("react"), 1);
|
|
14310
14411
|
var import_wagmi4 = require("wagmi");
|
|
14311
14412
|
init_wallet();
|
|
14312
14413
|
function WalletConnectHandler() {
|
|
14313
|
-
const qc = (0,
|
|
14414
|
+
const qc = (0, import_react_query38.useQueryClient)();
|
|
14314
14415
|
const callbacks = useLumiaPassportConfig().callbacks;
|
|
14315
14416
|
const passportWalletAddress = useLumiaPassportSession((st) => st.address);
|
|
14316
14417
|
const { address: walletAddress, isConnected, chain, connector } = (0, import_wagmi4.useAccount)();
|
|
@@ -14379,7 +14480,7 @@ function WalletConnectHandler() {
|
|
|
14379
14480
|
setHasStartedLinking(false);
|
|
14380
14481
|
}
|
|
14381
14482
|
}, [connectModalOpen, hasStartedLinking, isConnected, isWalletLinking]);
|
|
14382
|
-
const { mutate: handleWalletSign, isPending: isWalletSigning } = (0,
|
|
14483
|
+
const { mutate: handleWalletSign, isPending: isWalletSigning } = (0, import_react_query38.useMutation)({
|
|
14383
14484
|
mutationFn: async (payload) => {
|
|
14384
14485
|
const { chainId, signingWalletAddress } = payload;
|
|
14385
14486
|
if (!signingWalletAddress || !chainId) {
|
|
@@ -14458,7 +14559,7 @@ function WalletConnectHandler() {
|
|
|
14458
14559
|
}
|
|
14459
14560
|
|
|
14460
14561
|
// src/context/LumiaPassportSessionContext.tsx
|
|
14461
|
-
var
|
|
14562
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
14462
14563
|
var useLumiaPassportSession = (0, import_zustand6.create)((set) => ({
|
|
14463
14564
|
isLoading: false,
|
|
14464
14565
|
usePaymaster: true,
|
|
@@ -14484,17 +14585,17 @@ var useLumiaPassportSession = (0, import_zustand6.create)((set) => ({
|
|
|
14484
14585
|
}));
|
|
14485
14586
|
function LumiaPassportSessionProvider({ children }) {
|
|
14486
14587
|
const config = useLumiaPassportConfig().config;
|
|
14487
|
-
return /* @__PURE__ */ (0,
|
|
14588
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(import_react60.Fragment, { children: [
|
|
14488
14589
|
children,
|
|
14489
|
-
config.current?.wallet?.enabled && /* @__PURE__ */ (0,
|
|
14490
|
-
/* @__PURE__ */ (0,
|
|
14491
|
-
/* @__PURE__ */ (0,
|
|
14590
|
+
config.current?.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(WalletConnectHandler, {}),
|
|
14591
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(BalanceFeedProvider, {}),
|
|
14592
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
14492
14593
|
TssManagerWithRef,
|
|
14493
14594
|
{
|
|
14494
14595
|
mpcPin: void 0
|
|
14495
14596
|
}
|
|
14496
14597
|
),
|
|
14497
|
-
/* @__PURE__ */ (0,
|
|
14598
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(LumiaPassportDialog, {})
|
|
14498
14599
|
] });
|
|
14499
14600
|
}
|
|
14500
14601
|
|
|
@@ -14529,13 +14630,13 @@ var wagmiConfig = (0, import_wagmi5.createConfig)({
|
|
|
14529
14630
|
});
|
|
14530
14631
|
|
|
14531
14632
|
// src/context/WagmiContext.tsx
|
|
14532
|
-
var
|
|
14633
|
+
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
14533
14634
|
var LumiaWagmiProvider = ({ children }) => {
|
|
14534
|
-
return /* @__PURE__ */ (0,
|
|
14635
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_wagmi6.WagmiProvider, { config: wagmiConfig, children });
|
|
14535
14636
|
};
|
|
14536
14637
|
|
|
14537
14638
|
// src/context/LumiaPassportContext.tsx
|
|
14538
|
-
var
|
|
14639
|
+
var import_jsx_runtime76 = require("react/jsx-runtime");
|
|
14539
14640
|
var LumiaPassportContext = (0, import_react61.createContext)(void 0);
|
|
14540
14641
|
function LumiaPassportProvider(props) {
|
|
14541
14642
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
@@ -14624,7 +14725,7 @@ function LumiaPassportProvider(props) {
|
|
|
14624
14725
|
}
|
|
14625
14726
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
14626
14727
|
const contextValue = (0, import_react61.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
14627
|
-
return /* @__PURE__ */ (0,
|
|
14728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
14628
14729
|
}
|
|
14629
14730
|
var useLumiaPassportConfig = () => {
|
|
14630
14731
|
const ctx = (0, import_react61.useContext)(LumiaPassportContext);
|
|
@@ -14633,12 +14734,12 @@ var useLumiaPassportConfig = () => {
|
|
|
14633
14734
|
};
|
|
14634
14735
|
|
|
14635
14736
|
// src/components/ConnectWalletButton.tsx
|
|
14636
|
-
var
|
|
14737
|
+
var import_react_query39 = require("@tanstack/react-query");
|
|
14637
14738
|
var import_lucide_react51 = require("lucide-react");
|
|
14638
14739
|
var import_react62 = require("react");
|
|
14639
14740
|
init_auth();
|
|
14640
14741
|
init_profile();
|
|
14641
|
-
var
|
|
14742
|
+
var import_jsx_runtime77 = (
|
|
14642
14743
|
/** external Buttons can be provided */
|
|
14643
14744
|
require("react/jsx-runtime")
|
|
14644
14745
|
);
|
|
@@ -14661,7 +14762,7 @@ function ConnectWalletButton(props) {
|
|
|
14661
14762
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
14662
14763
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
14663
14764
|
(0, import_react62.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
14664
|
-
const { data: profile, isLoading: isProfileLoading } = (0,
|
|
14765
|
+
const { data: profile, isLoading: isProfileLoading } = (0, import_react_query39.useQuery)({
|
|
14665
14766
|
retry: false,
|
|
14666
14767
|
enabled: !!address,
|
|
14667
14768
|
queryKey: [QUERY_KEYS.userProfile, address],
|
|
@@ -14677,18 +14778,18 @@ function ConnectWalletButton(props) {
|
|
|
14677
14778
|
return { server, local, backup: hasServerVault };
|
|
14678
14779
|
}, [session, address, hasServerVault]);
|
|
14679
14780
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
14680
|
-
return /* @__PURE__ */ (0,
|
|
14781
|
+
return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_jsx_runtime77.Fragment, { children: ConnectButton ? /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
14681
14782
|
ConnectButton,
|
|
14682
14783
|
{
|
|
14683
14784
|
type: "button",
|
|
14684
14785
|
disabled: isConnecting,
|
|
14685
14786
|
onClick: () => setPage("auth" /* AUTH */),
|
|
14686
14787
|
children: [
|
|
14687
|
-
isConnecting && /* @__PURE__ */ (0,
|
|
14788
|
+
isConnecting && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react51.Loader, { className: "w-4 h-4 animate-spin" }),
|
|
14688
14789
|
connectButtonLabel
|
|
14689
14790
|
]
|
|
14690
14791
|
}
|
|
14691
|
-
) : /* @__PURE__ */ (0,
|
|
14792
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
14692
14793
|
Button,
|
|
14693
14794
|
{
|
|
14694
14795
|
type: "button",
|
|
@@ -14705,11 +14806,11 @@ function ConnectWalletButton(props) {
|
|
|
14705
14806
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
14706
14807
|
),
|
|
14707
14808
|
children: [
|
|
14708
|
-
isConnecting && /* @__PURE__ */ (0,
|
|
14809
|
+
isConnecting && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react51.Loader, { className: "w-4 h-4 animate-spin" }),
|
|
14709
14810
|
connectButtonLabel.toUpperCase()
|
|
14710
14811
|
]
|
|
14711
14812
|
}
|
|
14712
|
-
) }) : /* @__PURE__ */ (0,
|
|
14813
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
14713
14814
|
"button",
|
|
14714
14815
|
{
|
|
14715
14816
|
type: "button",
|
|
@@ -14722,23 +14823,23 @@ function ConnectWalletButton(props) {
|
|
|
14722
14823
|
"rounded-[var(--l-pass-bdrs)] p-4 max-w-sm min-w-[256px]"
|
|
14723
14824
|
),
|
|
14724
14825
|
children: [
|
|
14725
|
-
/* @__PURE__ */ (0,
|
|
14726
|
-
/* @__PURE__ */ (0,
|
|
14727
|
-
/* @__PURE__ */ (0,
|
|
14728
|
-
isProfileLoading ? /* @__PURE__ */ (0,
|
|
14729
|
-
/* @__PURE__ */ (0,
|
|
14826
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(LumiaIcon, { width: 48, height: 48 }) }),
|
|
14827
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
14828
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
14829
|
+
isProfileLoading ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_lucide_react51.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "w-fit text-[14px] leading-4 truncate max-w-[144px] text-[var(--l-pass-fg)]", children: displayName }),
|
|
14830
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(KYCStatus, {})
|
|
14730
14831
|
] }),
|
|
14731
|
-
/* @__PURE__ */ (0,
|
|
14832
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(BalanceView, {})
|
|
14732
14833
|
] }),
|
|
14733
|
-
/* @__PURE__ */ (0,
|
|
14734
|
-
/* @__PURE__ */ (0,
|
|
14735
|
-
/* @__PURE__ */ (0,
|
|
14834
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "flex items-center space-x-1", children: [
|
|
14835
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "group relative", children: [
|
|
14836
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
14736
14837
|
import_lucide_react51.Cloud,
|
|
14737
14838
|
{
|
|
14738
14839
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14739
14840
|
}
|
|
14740
14841
|
),
|
|
14741
|
-
/* @__PURE__ */ (0,
|
|
14842
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
14742
14843
|
"div",
|
|
14743
14844
|
{
|
|
14744
14845
|
className: cn(
|
|
@@ -14753,14 +14854,14 @@ function ConnectWalletButton(props) {
|
|
|
14753
14854
|
}
|
|
14754
14855
|
)
|
|
14755
14856
|
] }),
|
|
14756
|
-
/* @__PURE__ */ (0,
|
|
14757
|
-
/* @__PURE__ */ (0,
|
|
14857
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "group relative", children: [
|
|
14858
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
14758
14859
|
import_lucide_react51.Laptop,
|
|
14759
14860
|
{
|
|
14760
14861
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14761
14862
|
}
|
|
14762
14863
|
),
|
|
14763
|
-
/* @__PURE__ */ (0,
|
|
14864
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
14764
14865
|
"div",
|
|
14765
14866
|
{
|
|
14766
14867
|
className: cn(
|
|
@@ -14775,14 +14876,14 @@ function ConnectWalletButton(props) {
|
|
|
14775
14876
|
}
|
|
14776
14877
|
)
|
|
14777
14878
|
] }),
|
|
14778
|
-
/* @__PURE__ */ (0,
|
|
14779
|
-
/* @__PURE__ */ (0,
|
|
14879
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "group relative", children: [
|
|
14880
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
14780
14881
|
import_lucide_react51.Shield,
|
|
14781
14882
|
{
|
|
14782
14883
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14783
14884
|
}
|
|
14784
14885
|
),
|
|
14785
|
-
/* @__PURE__ */ (0,
|
|
14886
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
|
|
14786
14887
|
"div",
|
|
14787
14888
|
{
|
|
14788
14889
|
className: cn(
|
|
@@ -14798,7 +14899,7 @@ function ConnectWalletButton(props) {
|
|
|
14798
14899
|
)
|
|
14799
14900
|
] })
|
|
14800
14901
|
] }),
|
|
14801
|
-
!!settingsNotifications.length && /* @__PURE__ */ (0,
|
|
14902
|
+
!!settingsNotifications.length && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
14802
14903
|
"div",
|
|
14803
14904
|
{
|
|
14804
14905
|
className: cn(
|
|
@@ -14892,23 +14993,23 @@ function useLumiaPassportColorMode() {
|
|
|
14892
14993
|
|
|
14893
14994
|
// src/components/ThemeToggle.tsx
|
|
14894
14995
|
var import_lucide_react52 = require("lucide-react");
|
|
14895
|
-
var
|
|
14996
|
+
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
14896
14997
|
function ThemeToggle(props) {
|
|
14897
14998
|
const { colorMode, setColorMode } = useLumiaPassportColorMode();
|
|
14898
|
-
return /* @__PURE__ */ (0,
|
|
14999
|
+
return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
14899
15000
|
"div",
|
|
14900
15001
|
{
|
|
14901
15002
|
className: "lumia-scope",
|
|
14902
15003
|
"data-lumia-passport-mode": colorMode,
|
|
14903
15004
|
style: { width: "fit-content", height: "fit-content" },
|
|
14904
|
-
children: /* @__PURE__ */ (0,
|
|
15005
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
14905
15006
|
Button,
|
|
14906
15007
|
{
|
|
14907
15008
|
...props,
|
|
14908
15009
|
variant: "ghost",
|
|
14909
15010
|
onClick: () => setColorMode(colorMode === "light" ? "dark" : "light"),
|
|
14910
15011
|
title: `Current theme: ${colorMode}. Click to switch.`,
|
|
14911
|
-
children: colorMode === "dark" ? /* @__PURE__ */ (0,
|
|
15012
|
+
children: colorMode === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react52.Sun, { className: "w-4 h-4" }) : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react52.Moon, { className: "w-4 h-4" })
|
|
14912
15013
|
}
|
|
14913
15014
|
)
|
|
14914
15015
|
}
|
|
@@ -15145,7 +15246,7 @@ var rainbowTheme = {
|
|
|
15145
15246
|
|
|
15146
15247
|
// src/context/RainbowKitContext.tsx
|
|
15147
15248
|
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
15148
|
-
var
|
|
15249
|
+
var import_jsx_runtime79 = require("react/jsx-runtime");
|
|
15149
15250
|
function LumiaRainbowKitProvider({ children }) {
|
|
15150
15251
|
const config = useLumiaPassportConfig().config;
|
|
15151
15252
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
@@ -15164,8 +15265,8 @@ function LumiaRainbowKitProvider({ children }) {
|
|
|
15164
15265
|
},
|
|
15165
15266
|
[colorMode]
|
|
15166
15267
|
);
|
|
15167
|
-
if (!config.current?.wallet?.enabled) return /* @__PURE__ */ (0,
|
|
15168
|
-
return /* @__PURE__ */ (0,
|
|
15268
|
+
if (!config.current?.wallet?.enabled) return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_jsx_runtime79.Fragment, { children });
|
|
15269
|
+
return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_wagmi8.WagmiProvider, { config: rainbowConfig2, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_rainbowkit3.RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
15169
15270
|
}
|
|
15170
15271
|
|
|
15171
15272
|
// src/internal/components/UserOpStatus.tsx
|
|
@@ -15183,7 +15284,7 @@ function cn2(...inputs) {
|
|
|
15183
15284
|
// src/internal/components/Address.tsx
|
|
15184
15285
|
var import_lucide_react53 = require("lucide-react");
|
|
15185
15286
|
var React9 = __toESM(require("react"), 1);
|
|
15186
|
-
var
|
|
15287
|
+
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
15187
15288
|
function toExplorerAddressUrl(address, chain) {
|
|
15188
15289
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
15189
15290
|
if (!base2) return null;
|
|
@@ -15205,11 +15306,11 @@ var Address = ({
|
|
|
15205
15306
|
const addr = address || "";
|
|
15206
15307
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
15207
15308
|
const [copied, setCopied] = React9.useState(false);
|
|
15208
|
-
if (!addr) return /* @__PURE__ */ (0,
|
|
15209
|
-
return /* @__PURE__ */ (0,
|
|
15210
|
-
label && /* @__PURE__ */ (0,
|
|
15211
|
-
/* @__PURE__ */ (0,
|
|
15212
|
-
showCopy && /* @__PURE__ */ (0,
|
|
15309
|
+
if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
15310
|
+
return /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
15311
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
15312
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
15313
|
+
showCopy && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15213
15314
|
Button,
|
|
15214
15315
|
{
|
|
15215
15316
|
variant: "ghost",
|
|
@@ -15223,10 +15324,10 @@ var Address = ({
|
|
|
15223
15324
|
} catch {
|
|
15224
15325
|
}
|
|
15225
15326
|
},
|
|
15226
|
-
children: /* @__PURE__ */ (0,
|
|
15327
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react53.Copy, { className: "h-4 w-4" })
|
|
15227
15328
|
}
|
|
15228
15329
|
),
|
|
15229
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
15330
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
15230
15331
|
"a",
|
|
15231
15332
|
{
|
|
15232
15333
|
href: explorer,
|
|
@@ -15234,7 +15335,7 @@ var Address = ({
|
|
|
15234
15335
|
rel: "noreferrer noopener",
|
|
15235
15336
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
15236
15337
|
title: "Open in explorer",
|
|
15237
|
-
children: /* @__PURE__ */ (0,
|
|
15338
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_lucide_react53.ExternalLink, { className: "h-4 w-4" })
|
|
15238
15339
|
}
|
|
15239
15340
|
)
|
|
15240
15341
|
] });
|
|
@@ -15242,7 +15343,7 @@ var Address = ({
|
|
|
15242
15343
|
|
|
15243
15344
|
// src/internal/components/ui/badge.tsx
|
|
15244
15345
|
var import_class_variance_authority2 = require("class-variance-authority");
|
|
15245
|
-
var
|
|
15346
|
+
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
15246
15347
|
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
15247
15348
|
"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",
|
|
15248
15349
|
{
|
|
@@ -15262,11 +15363,11 @@ var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
|
15262
15363
|
}
|
|
15263
15364
|
);
|
|
15264
15365
|
function Badge({ className, variant, ...props }) {
|
|
15265
|
-
return /* @__PURE__ */ (0,
|
|
15366
|
+
return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
15266
15367
|
}
|
|
15267
15368
|
|
|
15268
15369
|
// src/internal/components/UserOpStatus.tsx
|
|
15269
|
-
var
|
|
15370
|
+
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
15270
15371
|
var UserOpStatus = ({
|
|
15271
15372
|
userOpHash,
|
|
15272
15373
|
chain,
|
|
@@ -15399,35 +15500,35 @@ var UserOpStatus = ({
|
|
|
15399
15500
|
const stateBadge = () => {
|
|
15400
15501
|
if (receipt) {
|
|
15401
15502
|
const ok = !!receipt.success;
|
|
15402
|
-
return /* @__PURE__ */ (0,
|
|
15403
|
-
ok ? /* @__PURE__ */ (0,
|
|
15503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
15504
|
+
ok ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.CheckCircle2, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.AlertCircle, { className: "h-3 w-3" }),
|
|
15404
15505
|
ok ? "Included" : "Failed"
|
|
15405
15506
|
] });
|
|
15406
15507
|
}
|
|
15407
15508
|
if (rejected) {
|
|
15408
|
-
return /* @__PURE__ */ (0,
|
|
15409
|
-
/* @__PURE__ */ (0,
|
|
15509
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
15510
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.AlertCircle, { className: "h-3 w-3" }),
|
|
15410
15511
|
" Rejected by bundler"
|
|
15411
15512
|
] });
|
|
15412
15513
|
}
|
|
15413
15514
|
if (timedOut) {
|
|
15414
|
-
return /* @__PURE__ */ (0,
|
|
15415
|
-
/* @__PURE__ */ (0,
|
|
15515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Badge, { variant: "warning", className: "gap-1", children: [
|
|
15516
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.AlertCircle, { className: "h-3 w-3" }),
|
|
15416
15517
|
" Timeout - may be rejected"
|
|
15417
15518
|
] });
|
|
15418
15519
|
}
|
|
15419
15520
|
if (mempool) {
|
|
15420
|
-
return /* @__PURE__ */ (0,
|
|
15421
|
-
/* @__PURE__ */ (0,
|
|
15521
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Badge, { variant: "outline", className: "gap-1", children: [
|
|
15522
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.Clock, { className: "h-3 w-3" }),
|
|
15422
15523
|
" Pending in bundler"
|
|
15423
15524
|
] });
|
|
15424
15525
|
}
|
|
15425
|
-
return /* @__PURE__ */ (0,
|
|
15426
|
-
/* @__PURE__ */ (0,
|
|
15526
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
15527
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.Clock, { className: "h-3 w-3" }),
|
|
15427
15528
|
" Waiting"
|
|
15428
15529
|
] });
|
|
15429
15530
|
};
|
|
15430
|
-
return /* @__PURE__ */ (0,
|
|
15531
|
+
return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
|
|
15431
15532
|
"div",
|
|
15432
15533
|
{
|
|
15433
15534
|
className: cn2(
|
|
@@ -15436,20 +15537,20 @@ var UserOpStatus = ({
|
|
|
15436
15537
|
),
|
|
15437
15538
|
style: { textAlign: "left", listStyle: "none" },
|
|
15438
15539
|
children: [
|
|
15439
|
-
/* @__PURE__ */ (0,
|
|
15440
|
-
/* @__PURE__ */ (0,
|
|
15540
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [
|
|
15541
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
15441
15542
|
stateBadge(),
|
|
15442
|
-
/* @__PURE__ */ (0,
|
|
15543
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
15443
15544
|
] }),
|
|
15444
|
-
/* @__PURE__ */ (0,
|
|
15445
|
-
/* @__PURE__ */ (0,
|
|
15446
|
-
/* @__PURE__ */ (0,
|
|
15545
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
15546
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.RefreshCw, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
15547
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "text-xs", children: "Refresh" })
|
|
15447
15548
|
] })
|
|
15448
15549
|
] }),
|
|
15449
|
-
/* @__PURE__ */ (0,
|
|
15450
|
-
/* @__PURE__ */ (0,
|
|
15451
|
-
/* @__PURE__ */ (0,
|
|
15452
|
-
/* @__PURE__ */ (0,
|
|
15550
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
15551
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
15552
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
15553
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
15453
15554
|
Button,
|
|
15454
15555
|
{
|
|
15455
15556
|
variant: "ghost",
|
|
@@ -15461,14 +15562,14 @@ var UserOpStatus = ({
|
|
|
15461
15562
|
} catch {
|
|
15462
15563
|
}
|
|
15463
15564
|
},
|
|
15464
|
-
children: /* @__PURE__ */ (0,
|
|
15565
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.Copy, { className: "h-3.5 w-3.5" })
|
|
15465
15566
|
}
|
|
15466
15567
|
)
|
|
15467
15568
|
] }),
|
|
15468
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ (0,
|
|
15469
|
-
/* @__PURE__ */ (0,
|
|
15470
|
-
/* @__PURE__ */ (0,
|
|
15471
|
-
/* @__PURE__ */ (0,
|
|
15569
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
15570
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
15571
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
15572
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
15472
15573
|
Button,
|
|
15473
15574
|
{
|
|
15474
15575
|
variant: "ghost",
|
|
@@ -15480,10 +15581,10 @@ var UserOpStatus = ({
|
|
|
15480
15581
|
} catch {
|
|
15481
15582
|
}
|
|
15482
15583
|
},
|
|
15483
|
-
children: /* @__PURE__ */ (0,
|
|
15584
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.Copy, { className: "h-3.5 w-3.5" })
|
|
15484
15585
|
}
|
|
15485
15586
|
),
|
|
15486
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0,
|
|
15587
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
|
|
15487
15588
|
"a",
|
|
15488
15589
|
{
|
|
15489
15590
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -15491,11 +15592,11 @@ var UserOpStatus = ({
|
|
|
15491
15592
|
rel: "noreferrer noopener",
|
|
15492
15593
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
15493
15594
|
title: "Open in explorer",
|
|
15494
|
-
children: /* @__PURE__ */ (0,
|
|
15595
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.ExternalLink, { className: "h-3.5 w-3.5" })
|
|
15495
15596
|
}
|
|
15496
15597
|
)
|
|
15497
15598
|
] }),
|
|
15498
|
-
receipt && /* @__PURE__ */ (0,
|
|
15599
|
+
receipt && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
15499
15600
|
"Block ",
|
|
15500
15601
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
15501
15602
|
" \u2022 Gas Used",
|
|
@@ -15504,32 +15605,32 @@ var UserOpStatus = ({
|
|
|
15504
15605
|
" \u2022 Success ",
|
|
15505
15606
|
String(!!receipt.success)
|
|
15506
15607
|
] }),
|
|
15507
|
-
/* @__PURE__ */ (0,
|
|
15608
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { className: "ml-2", children: [
|
|
15508
15609
|
"\u2022 Polling for ",
|
|
15509
15610
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
15510
15611
|
"s"
|
|
15511
15612
|
] }) }),
|
|
15512
|
-
mempool && /* @__PURE__ */ (0,
|
|
15513
|
-
/* @__PURE__ */ (0,
|
|
15613
|
+
mempool && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
15614
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { children: [
|
|
15514
15615
|
"Seen by bundler at ",
|
|
15515
|
-
/* @__PURE__ */ (0,
|
|
15616
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
15516
15617
|
] }),
|
|
15517
|
-
/* @__PURE__ */ (0,
|
|
15618
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { children: [
|
|
15518
15619
|
"sender ",
|
|
15519
|
-
/* @__PURE__ */ (0,
|
|
15620
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Address, { address: mempool.sender, chain, truncate: false })
|
|
15520
15621
|
] })
|
|
15521
15622
|
] }),
|
|
15522
|
-
error && /* @__PURE__ */ (0,
|
|
15523
|
-
/* @__PURE__ */ (0,
|
|
15623
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15624
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.AlertCircle, { className: "h-4 w-4" }),
|
|
15524
15625
|
" ",
|
|
15525
15626
|
error
|
|
15526
15627
|
] }),
|
|
15527
|
-
rejected && /* @__PURE__ */ (0,
|
|
15528
|
-
/* @__PURE__ */ (0,
|
|
15628
|
+
rejected && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15629
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.AlertCircle, { className: "h-4 w-4" }),
|
|
15529
15630
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
15530
15631
|
] }),
|
|
15531
|
-
timedOut && /* @__PURE__ */ (0,
|
|
15532
|
-
/* @__PURE__ */ (0,
|
|
15632
|
+
timedOut && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15633
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react54.AlertCircle, { className: "h-4 w-4" }),
|
|
15533
15634
|
"Stopped polling after ",
|
|
15534
15635
|
Math.round(maxPollTimeMs / 1e3),
|
|
15535
15636
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -15542,7 +15643,7 @@ var UserOpStatus = ({
|
|
|
15542
15643
|
// src/internal/components/Hash.tsx
|
|
15543
15644
|
var import_lucide_react55 = require("lucide-react");
|
|
15544
15645
|
var React11 = __toESM(require("react"), 1);
|
|
15545
|
-
var
|
|
15646
|
+
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
15546
15647
|
function toExplorerUrl(kind, value, chain) {
|
|
15547
15648
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
15548
15649
|
if (!base2) return null;
|
|
@@ -15566,11 +15667,11 @@ var Hash = ({
|
|
|
15566
15667
|
const value = hash || "";
|
|
15567
15668
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
15568
15669
|
const [copied, setCopied] = React11.useState(false);
|
|
15569
|
-
if (!value) return /* @__PURE__ */ (0,
|
|
15570
|
-
return /* @__PURE__ */ (0,
|
|
15571
|
-
label && /* @__PURE__ */ (0,
|
|
15572
|
-
/* @__PURE__ */ (0,
|
|
15573
|
-
showCopy && /* @__PURE__ */ (0,
|
|
15670
|
+
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
15671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
15672
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
15673
|
+
/* @__PURE__ */ (0, import_jsx_runtime83.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
15674
|
+
showCopy && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
15574
15675
|
Button,
|
|
15575
15676
|
{
|
|
15576
15677
|
variant: "ghost",
|
|
@@ -15584,10 +15685,10 @@ var Hash = ({
|
|
|
15584
15685
|
} catch {
|
|
15585
15686
|
}
|
|
15586
15687
|
},
|
|
15587
|
-
children: /* @__PURE__ */ (0,
|
|
15688
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react55.Copy, { className: "h-4 w-4" })
|
|
15588
15689
|
}
|
|
15589
15690
|
),
|
|
15590
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
15691
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
|
|
15591
15692
|
"a",
|
|
15592
15693
|
{
|
|
15593
15694
|
href: explorer,
|
|
@@ -15595,7 +15696,7 @@ var Hash = ({
|
|
|
15595
15696
|
rel: "noreferrer noopener",
|
|
15596
15697
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
15597
15698
|
title: "Open in explorer",
|
|
15598
|
-
children: /* @__PURE__ */ (0,
|
|
15699
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react55.ExternalLink, { className: "h-4 w-4" })
|
|
15599
15700
|
}
|
|
15600
15701
|
)
|
|
15601
15702
|
] });
|
|
@@ -15604,7 +15705,7 @@ var Hash = ({
|
|
|
15604
15705
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
15605
15706
|
var import_react66 = require("react");
|
|
15606
15707
|
init_base();
|
|
15607
|
-
var
|
|
15708
|
+
var import_jsx_runtime84 = require("react/jsx-runtime");
|
|
15608
15709
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
15609
15710
|
const [transactions, setTransactions] = (0, import_react66.useState)([]);
|
|
15610
15711
|
const [loading, setLoading] = (0, import_react66.useState)(true);
|
|
@@ -15655,31 +15756,31 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
15655
15756
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
15656
15757
|
};
|
|
15657
15758
|
if (loading) {
|
|
15658
|
-
return /* @__PURE__ */ (0,
|
|
15659
|
-
/* @__PURE__ */ (0,
|
|
15660
|
-
/* @__PURE__ */ (0,
|
|
15759
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "p-4 text-center", children: [
|
|
15760
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
15761
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
15661
15762
|
] });
|
|
15662
15763
|
}
|
|
15663
15764
|
if (error) {
|
|
15664
|
-
return /* @__PURE__ */ (0,
|
|
15665
|
-
/* @__PURE__ */ (0,
|
|
15666
|
-
/* @__PURE__ */ (0,
|
|
15765
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "p-4 text-center", children: [
|
|
15766
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "text-red-600 text-sm", children: error }),
|
|
15767
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("button", { onClick: () => window.location.reload(), className: "mt-2 text-blue-600 text-sm hover:underline", children: "Retry" })
|
|
15667
15768
|
] });
|
|
15668
15769
|
}
|
|
15669
15770
|
if (transactions.length === 0) {
|
|
15670
|
-
return /* @__PURE__ */ (0,
|
|
15771
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "p-4 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
15671
15772
|
}
|
|
15672
|
-
return /* @__PURE__ */ (0,
|
|
15773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(
|
|
15673
15774
|
"div",
|
|
15674
15775
|
{
|
|
15675
15776
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
15676
15777
|
onClick: () => openTransaction(tx.hash),
|
|
15677
15778
|
children: [
|
|
15678
|
-
/* @__PURE__ */ (0,
|
|
15679
|
-
/* @__PURE__ */ (0,
|
|
15680
|
-
/* @__PURE__ */ (0,
|
|
15681
|
-
/* @__PURE__ */ (0,
|
|
15682
|
-
/* @__PURE__ */ (0,
|
|
15779
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "flex justify-between items-start mb-2", children: [
|
|
15780
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "flex-1", children: [
|
|
15781
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
15782
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress3(tx.hash) }),
|
|
15783
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
|
|
15683
15784
|
"span",
|
|
15684
15785
|
{
|
|
15685
15786
|
className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`,
|
|
@@ -15687,40 +15788,40 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
15687
15788
|
}
|
|
15688
15789
|
)
|
|
15689
15790
|
] }),
|
|
15690
|
-
/* @__PURE__ */ (0,
|
|
15691
|
-
/* @__PURE__ */ (0,
|
|
15692
|
-
/* @__PURE__ */ (0,
|
|
15693
|
-
/* @__PURE__ */ (0,
|
|
15791
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "text-sm space-y-1", children: [
|
|
15792
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
|
|
15793
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "text-gray-600", children: "From:" }),
|
|
15794
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("span", { className: "font-mono ml-1", children: [
|
|
15694
15795
|
formatAddress3(tx.from.hash),
|
|
15695
|
-
tx.from.is_contract && /* @__PURE__ */ (0,
|
|
15796
|
+
tx.from.is_contract && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
15696
15797
|
] })
|
|
15697
15798
|
] }),
|
|
15698
|
-
/* @__PURE__ */ (0,
|
|
15699
|
-
/* @__PURE__ */ (0,
|
|
15700
|
-
/* @__PURE__ */ (0,
|
|
15799
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
|
|
15800
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "text-gray-600", children: "To:" }),
|
|
15801
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("span", { className: "font-mono ml-1", children: [
|
|
15701
15802
|
formatAddress3(tx.to.hash),
|
|
15702
|
-
tx.to.is_contract && /* @__PURE__ */ (0,
|
|
15803
|
+
tx.to.is_contract && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
15703
15804
|
] })
|
|
15704
15805
|
] }),
|
|
15705
|
-
/* @__PURE__ */ (0,
|
|
15706
|
-
/* @__PURE__ */ (0,
|
|
15707
|
-
/* @__PURE__ */ (0,
|
|
15806
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { children: [
|
|
15807
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "text-gray-600", children: "Value:" }),
|
|
15808
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("span", { className: "font-semibold ml-1", children: [
|
|
15708
15809
|
formatValue3(tx.value),
|
|
15709
15810
|
" LUMIA"
|
|
15710
15811
|
] })
|
|
15711
15812
|
] })
|
|
15712
15813
|
] })
|
|
15713
15814
|
] }),
|
|
15714
|
-
/* @__PURE__ */ (0,
|
|
15715
|
-
/* @__PURE__ */ (0,
|
|
15716
|
-
/* @__PURE__ */ (0,
|
|
15815
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "text-right text-xs text-gray-500", children: [
|
|
15816
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { children: formatDate3(tx.timestamp) }),
|
|
15817
|
+
/* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "mt-1", children: [
|
|
15717
15818
|
"Gas: ",
|
|
15718
15819
|
parseInt(tx.gas_used).toLocaleString()
|
|
15719
15820
|
] }),
|
|
15720
|
-
tx.method && /* @__PURE__ */ (0,
|
|
15821
|
+
tx.method && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
15721
15822
|
] })
|
|
15722
15823
|
] }),
|
|
15723
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */ (0,
|
|
15824
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full", children: type.replace("_", " ") }, idx)) })
|
|
15724
15825
|
]
|
|
15725
15826
|
},
|
|
15726
15827
|
tx.hash
|