@lumiapassport/ui-kit 1.4.17 → 1.5.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/_headers +3 -2
- package/dist/iframe/index.html +226 -68
- package/dist/iframe/lumia-logo.svg +1 -0
- package/dist/iframe/main.js +113 -25
- package/dist/iframe/main.js.map +1 -1
- package/dist/index.cjs +948 -938
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +947 -937
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2347,7 +2347,9 @@ function getIframeManager(config) {
|
|
|
2347
2347
|
iframeManagerInstance = new IframeManager(config);
|
|
2348
2348
|
}
|
|
2349
2349
|
if (!iframeManagerInstance) {
|
|
2350
|
-
throw new Error(
|
|
2350
|
+
throw new Error(
|
|
2351
|
+
'IframeManager not initialized. This usually means projectId is not configured.\n\nTo fix this:\n1. Get your projectId from https://dashboard.lumiapassport.com/\n2. Add it to LumiaPassportProvider:\n <LumiaPassportProvider projectId="your-project-id">\n\nFor more details, see the documentation.'
|
|
2352
|
+
);
|
|
2351
2353
|
}
|
|
2352
2354
|
return iframeManagerInstance;
|
|
2353
2355
|
}
|
|
@@ -2382,12 +2384,14 @@ var init_iframe_manager = __esm({
|
|
|
2382
2384
|
this.projectId = config.projectId;
|
|
2383
2385
|
this.debug = config.debug || false;
|
|
2384
2386
|
this.onWalletReadyCallback = config.onWalletReady;
|
|
2387
|
+
this.themeColors = config.themeColors;
|
|
2385
2388
|
this.readyPromise = new Promise((resolve) => {
|
|
2386
2389
|
this.readyResolve = resolve;
|
|
2387
2390
|
});
|
|
2388
2391
|
this.log("[IframeManager] Initialized with:", {
|
|
2389
2392
|
iframeUrl: this.iframeUrl,
|
|
2390
|
-
projectId: this.projectId
|
|
2393
|
+
projectId: this.projectId,
|
|
2394
|
+
hasThemeColors: !!this.themeColors
|
|
2391
2395
|
});
|
|
2392
2396
|
}
|
|
2393
2397
|
/**
|
|
@@ -2398,7 +2402,18 @@ var init_iframe_manager = __esm({
|
|
|
2398
2402
|
return this.readyPromise;
|
|
2399
2403
|
}
|
|
2400
2404
|
this.iframe = document.createElement("iframe");
|
|
2401
|
-
|
|
2405
|
+
let iframeUrl = this.iframeUrl;
|
|
2406
|
+
if (this.themeColors) {
|
|
2407
|
+
const params = new URLSearchParams();
|
|
2408
|
+
if (this.themeColors.background) params.set("bg", this.themeColors.background);
|
|
2409
|
+
if (this.themeColors.text) params.set("text", this.themeColors.text);
|
|
2410
|
+
if (this.themeColors.textSecondary) params.set("textSec", this.themeColors.textSecondary);
|
|
2411
|
+
if (this.themeColors.border) params.set("border", this.themeColors.border);
|
|
2412
|
+
if (params.toString()) {
|
|
2413
|
+
iframeUrl += (iframeUrl.includes("?") ? "&" : "?") + params.toString();
|
|
2414
|
+
}
|
|
2415
|
+
}
|
|
2416
|
+
this.iframe.src = iframeUrl;
|
|
2402
2417
|
this.iframe.id = "lumia-passport-iframe";
|
|
2403
2418
|
this.iframe.style.display = "none";
|
|
2404
2419
|
this.iframe.style.position = "fixed";
|
|
@@ -2908,8 +2923,8 @@ var init_LumiaPassportContext = __esm({
|
|
|
2908
2923
|
merged.projectId = initialConfig.projectId;
|
|
2909
2924
|
}
|
|
2910
2925
|
if (!merged.projectId) {
|
|
2911
|
-
console.
|
|
2912
|
-
'
|
|
2926
|
+
console.error(
|
|
2927
|
+
'\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551 \u26A0\uFE0F LUMIA PASSPORT WARNING \u26A0\uFE0F \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563\n\u2551 \u2551\n\u2551 projectId is NOT configured! \u2551\n\u2551 \u2551\n\u2551 Your integration will NOT work without a valid projectId. \u2551\n\u2551 Most features will be disabled and errors will occur. \u2551\n\u2551 \u2551\n\u2551 To fix this: \u2551\n\u2551 1. Get your projectId from: https://dashboard.lumiapassport.com/ \u2551\n\u2551 2. Add it to your LumiaPassportProvider: \u2551\n\u2551 \u2551\n\u2551 <LumiaPassportProvider projectId="your-project-id"> \u2551\n\u2551 {children} \u2551\n\u2551 </LumiaPassportProvider> \u2551\n\u2551 \u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n'
|
|
2913
2928
|
);
|
|
2914
2929
|
} else {
|
|
2915
2930
|
console.log("[LumiaPassport] \u2705 Initialized with projectId:", merged.projectId);
|
|
@@ -3009,9 +3024,6 @@ var init_LumiaPassportContext = __esm({
|
|
|
3009
3024
|
if (typeof window === "undefined") return;
|
|
3010
3025
|
const projectId2 = config.projectId;
|
|
3011
3026
|
if (!projectId2) {
|
|
3012
|
-
console.warn(
|
|
3013
|
-
"[LumiaPassport] Skipping iframe initialization - projectId not configured"
|
|
3014
|
-
);
|
|
3015
3027
|
return;
|
|
3016
3028
|
}
|
|
3017
3029
|
const iframeUrl = getIframeUrl();
|
|
@@ -3021,11 +3033,14 @@ var init_LumiaPassportContext = __esm({
|
|
|
3021
3033
|
note: "All MPC operations will happen in isolated iframe context"
|
|
3022
3034
|
});
|
|
3023
3035
|
try {
|
|
3036
|
+
const isDark = config.ui.theme === "dark" || config.ui.theme === "auto" && window.matchMedia?.("(prefers-color-scheme: dark)").matches;
|
|
3037
|
+
const themeColors = isDark ? config.ui.colors?.dark : config.ui.colors?.light;
|
|
3024
3038
|
const iframeManager = getIframeManager({
|
|
3025
3039
|
iframeUrl,
|
|
3026
3040
|
projectId: projectId2,
|
|
3027
3041
|
debug: config.features?.mpcSecurity ?? true,
|
|
3028
|
-
onWalletReady: callbacks?.onWalletReady
|
|
3042
|
+
onWalletReady: callbacks?.onWalletReady,
|
|
3043
|
+
themeColors
|
|
3029
3044
|
});
|
|
3030
3045
|
iframeManager.initialize().then(() => {
|
|
3031
3046
|
console.log("[LumiaPassport] \u2705 Secure iframe wallet initialized successfully");
|
|
@@ -3454,26 +3469,8 @@ var init_LumiaLogo = __esm({
|
|
|
3454
3469
|
}
|
|
3455
3470
|
});
|
|
3456
3471
|
|
|
3457
|
-
// src/internal/components/SuccessScreen.tsx
|
|
3458
|
-
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
3459
|
-
var SuccessScreen;
|
|
3460
|
-
var init_SuccessScreen = __esm({
|
|
3461
|
-
"src/internal/components/SuccessScreen.tsx"() {
|
|
3462
|
-
init_useTheme();
|
|
3463
|
-
init_LumiaPassportContext();
|
|
3464
|
-
SuccessScreen = () => {
|
|
3465
|
-
const { config } = useLumiaPassportConfig();
|
|
3466
|
-
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3467
|
-
return /* @__PURE__ */ jsxs6("div", { className: "text-center", children: [
|
|
3468
|
-
/* @__PURE__ */ jsx12("div", { className: "w-16 h-16 rounded-full bg-green-100 text-green-600 flex items-center justify-center mx-auto mb-4", children: "\u2713" }),
|
|
3469
|
-
/* @__PURE__ */ jsx12("div", { className: `text-lg font-medium ${theme.titleText}`, children: "Success" })
|
|
3470
|
-
] });
|
|
3471
|
-
};
|
|
3472
|
-
}
|
|
3473
|
-
});
|
|
3474
|
-
|
|
3475
3472
|
// src/internal/components/FailedScreen.tsx
|
|
3476
|
-
import { jsx as
|
|
3473
|
+
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
3477
3474
|
var FailedScreen;
|
|
3478
3475
|
var init_FailedScreen = __esm({
|
|
3479
3476
|
"src/internal/components/FailedScreen.tsx"() {
|
|
@@ -3482,17 +3479,17 @@ var init_FailedScreen = __esm({
|
|
|
3482
3479
|
FailedScreen = ({ message = "Failed" }) => {
|
|
3483
3480
|
const { config } = useLumiaPassportConfig();
|
|
3484
3481
|
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3485
|
-
return /* @__PURE__ */
|
|
3486
|
-
/* @__PURE__ */
|
|
3487
|
-
/* @__PURE__ */
|
|
3488
|
-
message && /* @__PURE__ */
|
|
3482
|
+
return /* @__PURE__ */ jsxs6("div", { className: "text-center", children: [
|
|
3483
|
+
/* @__PURE__ */ jsx12("div", { className: "w-16 h-16 rounded-full bg-red-100 text-red-600 flex items-center justify-center mx-auto mb-4 text-3xl", children: "\u2717" }),
|
|
3484
|
+
/* @__PURE__ */ jsx12("div", { className: `text-lg font-medium ${theme.titleText} mb-2`, children: "Failed" }),
|
|
3485
|
+
message && /* @__PURE__ */ jsx12("div", { className: `text-sm ${theme.bodyText}`, children: message })
|
|
3489
3486
|
] });
|
|
3490
3487
|
};
|
|
3491
3488
|
}
|
|
3492
3489
|
});
|
|
3493
3490
|
|
|
3494
3491
|
// src/internal/components/TermsOfService.tsx
|
|
3495
|
-
import { jsx as
|
|
3492
|
+
import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
3496
3493
|
var TermsOfService;
|
|
3497
3494
|
var init_TermsOfService = __esm({
|
|
3498
3495
|
"src/internal/components/TermsOfService.tsx"() {
|
|
@@ -3502,7 +3499,7 @@ var init_TermsOfService = __esm({
|
|
|
3502
3499
|
TermsOfService = ({ open, onOpenChange }) => {
|
|
3503
3500
|
const { config } = useLumiaPassportConfig();
|
|
3504
3501
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3505
|
-
return /* @__PURE__ */
|
|
3502
|
+
return /* @__PURE__ */ jsx13(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs7(
|
|
3506
3503
|
DialogContent,
|
|
3507
3504
|
{
|
|
3508
3505
|
className: `lumia-scope p-6 border-0 ${theme.modalBg} ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -3514,8 +3511,8 @@ var init_TermsOfService = __esm({
|
|
|
3514
3511
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
3515
3512
|
},
|
|
3516
3513
|
children: [
|
|
3517
|
-
/* @__PURE__ */
|
|
3518
|
-
/* @__PURE__ */
|
|
3514
|
+
/* @__PURE__ */ jsx13(DialogTitle, { children: "Terms of Service" }),
|
|
3515
|
+
/* @__PURE__ */ jsx13("div", { className: "prose text-sm text-gray-700", children: /* @__PURE__ */ jsx13("p", { children: "By using Lumia Passport you agree to our terms." }) })
|
|
3519
3516
|
]
|
|
3520
3517
|
}
|
|
3521
3518
|
) });
|
|
@@ -3525,29 +3522,29 @@ var init_TermsOfService = __esm({
|
|
|
3525
3522
|
|
|
3526
3523
|
// src/internal/components/ui/card.tsx
|
|
3527
3524
|
import * as React8 from "react";
|
|
3528
|
-
import { jsx as
|
|
3525
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
3529
3526
|
var Card, CardHeader, CardTitle, CardDescription, CardContent;
|
|
3530
3527
|
var init_card = __esm({
|
|
3531
3528
|
"src/internal/components/ui/card.tsx"() {
|
|
3532
3529
|
init_utils();
|
|
3533
3530
|
Card = React8.forwardRef(
|
|
3534
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3531
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("div", { ref, className: cn("rounded-xl border bg-card text-card-foreground shadow", className), ...props })
|
|
3535
3532
|
);
|
|
3536
3533
|
Card.displayName = "Card";
|
|
3537
3534
|
CardHeader = React8.forwardRef(
|
|
3538
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3535
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
|
|
3539
3536
|
);
|
|
3540
3537
|
CardHeader.displayName = "CardHeader";
|
|
3541
3538
|
CardTitle = React8.forwardRef(
|
|
3542
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3539
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("h3", { ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })
|
|
3543
3540
|
);
|
|
3544
3541
|
CardTitle.displayName = "CardTitle";
|
|
3545
3542
|
CardDescription = React8.forwardRef(
|
|
3546
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3543
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
|
|
3547
3544
|
);
|
|
3548
3545
|
CardDescription.displayName = "CardDescription";
|
|
3549
3546
|
CardContent = React8.forwardRef(
|
|
3550
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3547
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("div", { ref, className: cn("p-6 pt-0", className), ...props })
|
|
3551
3548
|
);
|
|
3552
3549
|
CardContent.displayName = "CardContent";
|
|
3553
3550
|
}
|
|
@@ -3555,13 +3552,13 @@ var init_card = __esm({
|
|
|
3555
3552
|
|
|
3556
3553
|
// src/internal/components/ui/input.tsx
|
|
3557
3554
|
import * as React9 from "react";
|
|
3558
|
-
import { jsx as
|
|
3555
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
3559
3556
|
var Input;
|
|
3560
3557
|
var init_input = __esm({
|
|
3561
3558
|
"src/internal/components/ui/input.tsx"() {
|
|
3562
3559
|
init_utils();
|
|
3563
3560
|
Input = React9.forwardRef(({ className, type, ...props }, ref) => {
|
|
3564
|
-
return /* @__PURE__ */
|
|
3561
|
+
return /* @__PURE__ */ jsx15(
|
|
3565
3562
|
"input",
|
|
3566
3563
|
{
|
|
3567
3564
|
type,
|
|
@@ -3581,10 +3578,10 @@ var init_input = __esm({
|
|
|
3581
3578
|
// src/internal/components/KeyshareRestore.tsx
|
|
3582
3579
|
import * as React10 from "react";
|
|
3583
3580
|
import { Shield, Server, Upload, CheckCircle2, AlertCircle, Key, X as X2, Eye, EyeOff } from "lucide-react";
|
|
3584
|
-
import { Fragment as Fragment2, jsx as
|
|
3581
|
+
import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3585
3582
|
function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
3586
3583
|
const { config } = useLumiaPassportConfig();
|
|
3587
|
-
const { isDark } = useTheme(config.ui.theme, config.ui.colors);
|
|
3584
|
+
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3588
3585
|
const [loading, setLoading] = React10.useState({ server: false, file: false });
|
|
3589
3586
|
const [error, setError] = React10.useState(null);
|
|
3590
3587
|
const [success, setSuccess] = React10.useState(null);
|
|
@@ -3694,78 +3691,78 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3694
3691
|
}
|
|
3695
3692
|
};
|
|
3696
3693
|
if (checkingBackup) {
|
|
3697
|
-
return /* @__PURE__ */
|
|
3698
|
-
/* @__PURE__ */
|
|
3699
|
-
/* @__PURE__ */
|
|
3700
|
-
/* @__PURE__ */
|
|
3701
|
-
/* @__PURE__ */
|
|
3702
|
-
/* @__PURE__ */
|
|
3703
|
-
/* @__PURE__ */
|
|
3694
|
+
return /* @__PURE__ */ jsxs8(Card, { className: `${isDark ? "border-gray-700 bg-gray-900" : "border-blue-200 bg-blue-50"} border-0`, children: [
|
|
3695
|
+
/* @__PURE__ */ jsx16(CardHeader, { className: "pb-4", children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between", children: [
|
|
3696
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-3", children: [
|
|
3697
|
+
/* @__PURE__ */ jsx16(Shield, { className: `h-6 w-6 ${isDark ? "text-blue-400" : "text-blue-600"}` }),
|
|
3698
|
+
/* @__PURE__ */ jsxs8("div", { children: [
|
|
3699
|
+
/* @__PURE__ */ jsx16(CardTitle, { className: `text-lg ${isDark ? "text-gray-100" : ""}`, children: "Checking Backup Availability" }),
|
|
3700
|
+
/* @__PURE__ */ jsx16(CardDescription, { className: `text-sm ${isDark ? "text-gray-400" : ""}`, children: "Please wait while we check for available backups..." })
|
|
3704
3701
|
] })
|
|
3705
3702
|
] }),
|
|
3706
|
-
onClose && /* @__PURE__ */
|
|
3703
|
+
onClose && /* @__PURE__ */ jsx16("button", { onClick: onClose, className: `p-1 rounded transition-colors ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-red-100 text-red-600 hover:bg-red-200"}`, title: "Close", "aria-label": "Close", children: /* @__PURE__ */ jsx16(X2, { className: "h-4 w-4" }) })
|
|
3707
3704
|
] }) }),
|
|
3708
|
-
/* @__PURE__ */
|
|
3709
|
-
/* @__PURE__ */
|
|
3710
|
-
/* @__PURE__ */
|
|
3705
|
+
/* @__PURE__ */ jsx16(CardContent, { className: "space-y-6", children: /* @__PURE__ */ jsx16("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsxs8("div", { className: "text-center", children: [
|
|
3706
|
+
/* @__PURE__ */ jsx16("div", { className: `animate-spin rounded-full h-8 w-8 border-b-2 ${isDark ? "border-blue-400" : "border-blue-600"} mx-auto mb-4` }),
|
|
3707
|
+
/* @__PURE__ */ jsx16("p", { className: `text-sm ${isDark ? "text-gray-400" : "text-gray-600"}`, children: "Checking for backups..." })
|
|
3711
3708
|
] }) }) })
|
|
3712
3709
|
] });
|
|
3713
3710
|
}
|
|
3714
3711
|
if (hasServerBackup === false) {
|
|
3715
|
-
return /* @__PURE__ */
|
|
3716
|
-
/* @__PURE__ */
|
|
3717
|
-
/* @__PURE__ */
|
|
3718
|
-
/* @__PURE__ */
|
|
3719
|
-
/* @__PURE__ */
|
|
3712
|
+
return /* @__PURE__ */ jsxs8(Card, { className: `border-0 ${theme.bg} ${theme.divider}`, children: [
|
|
3713
|
+
/* @__PURE__ */ jsx16(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between", children: [
|
|
3714
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3715
|
+
/* @__PURE__ */ jsx16(AlertCircle, { className: "h-5 w-5 text-red-600" }),
|
|
3716
|
+
/* @__PURE__ */ jsx16(CardTitle, { className: `text-base ${theme.titleText}`, children: "No Keyshare Found" })
|
|
3720
3717
|
] }),
|
|
3721
|
-
onClose && /* @__PURE__ */
|
|
3718
|
+
onClose && /* @__PURE__ */ jsx16("button", { onClick: onClose, className: `p-1 rounded transition-colors ${theme.secondaryBtn}`, title: "Close", "aria-label": "Close", children: /* @__PURE__ */ jsx16(X2, { className: "h-4 w-4" }) })
|
|
3722
3719
|
] }) }),
|
|
3723
|
-
/* @__PURE__ */
|
|
3724
|
-
/* @__PURE__ */
|
|
3725
|
-
/* @__PURE__ */
|
|
3726
|
-
/* @__PURE__ */
|
|
3720
|
+
/* @__PURE__ */ jsxs8(CardContent, { className: "space-y-3.5", children: [
|
|
3721
|
+
/* @__PURE__ */ jsxs8("div", { className: `p-3 rounded ${isDark ? "bg-red-500/15" : "bg-red-100"}`, children: [
|
|
3722
|
+
/* @__PURE__ */ jsx16("h4", { className: `font-medium text-sm mb-1.5 ${isDark ? "text-red-300" : "text-red-800"}`, children: "Account Recovery Needed" }),
|
|
3723
|
+
/* @__PURE__ */ jsx16("p", { className: `text-xs leading-relaxed ${theme.text}`, children: "This device doesn't have access to your wallet keyshare, and no backup was found in the Vault. To access your wallet: use the original device where you created the account, create a backup from that device first, then try restoring on this device." })
|
|
3727
3724
|
] }),
|
|
3728
|
-
/* @__PURE__ */
|
|
3729
|
-
/* @__PURE__ */
|
|
3725
|
+
/* @__PURE__ */ jsx16("div", { className: `p-2.5 rounded border ${isDark ? "bg-amber-500/15 border-amber-500/40" : "bg-amber-50 border-amber-200"}`, children: /* @__PURE__ */ jsxs8("p", { className: `text-xs ${theme.text}`, children: [
|
|
3726
|
+
/* @__PURE__ */ jsx16("span", { className: "font-semibold", children: "Alternative:" }),
|
|
3730
3727
|
" Try uploading a backup file if you have one saved locally, or create a new account with a different email."
|
|
3731
3728
|
] }) }),
|
|
3732
|
-
/* @__PURE__ */
|
|
3733
|
-
/* @__PURE__ */
|
|
3734
|
-
/* @__PURE__ */
|
|
3735
|
-
/* @__PURE__ */
|
|
3729
|
+
/* @__PURE__ */ jsxs8("div", { className: `p-3 rounded border ${theme.bg} ${theme.divider}`, children: [
|
|
3730
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3731
|
+
/* @__PURE__ */ jsx16(Upload, { className: "h-4 w-4 text-purple-600" }),
|
|
3732
|
+
/* @__PURE__ */ jsx16("div", { className: `font-medium text-sm ${theme.text}`, children: "Try Backup File" })
|
|
3736
3733
|
] }),
|
|
3737
|
-
/* @__PURE__ */
|
|
3738
|
-
/* @__PURE__ */
|
|
3734
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3735
|
+
/* @__PURE__ */ jsx16("label", { className: `block w-full cursor-pointer ${theme.text}`, children: /* @__PURE__ */ jsx16(
|
|
3739
3736
|
"input",
|
|
3740
3737
|
{
|
|
3741
3738
|
type: "file",
|
|
3742
3739
|
accept: ".json",
|
|
3743
3740
|
onChange: (e) => setRestoreFile(e.target.files?.[0] || null),
|
|
3744
|
-
className:
|
|
3741
|
+
className: "block w-full text-xs file:mr-3 file:py-1.5 file:px-3 file:rounded file:border-0 file:text-xs file:font-medium file:bg-purple-600 file:text-white hover:file:bg-purple-700 file:cursor-pointer"
|
|
3745
3742
|
}
|
|
3746
3743
|
) }),
|
|
3747
|
-
!restoreFile && /* @__PURE__ */
|
|
3748
|
-
restoreFile && /* @__PURE__ */
|
|
3749
|
-
/* @__PURE__ */
|
|
3744
|
+
!restoreFile && /* @__PURE__ */ jsx16("p", { className: `text-xs ${theme.mutedText}`, children: "No file chosen" }),
|
|
3745
|
+
restoreFile && /* @__PURE__ */ jsxs8(Fragment2, { children: [
|
|
3746
|
+
/* @__PURE__ */ jsxs8("div", { className: `text-xs p-2 rounded ${theme.inputBg} ${theme.text}`, children: [
|
|
3750
3747
|
"Selected: ",
|
|
3751
3748
|
restoreFile.name
|
|
3752
3749
|
] }),
|
|
3753
|
-
/* @__PURE__ */
|
|
3750
|
+
/* @__PURE__ */ jsx16(Button, { onClick: handleRestoreFromFile, disabled: loading.file || useCustomPassword && !restorePassword, className: "w-full py-2 text-sm", children: loading.file ? "Restoring..." : useCustomPassword ? "Restore" : "Restore with Passkey" })
|
|
3754
3751
|
] })
|
|
3755
3752
|
] })
|
|
3756
3753
|
] }),
|
|
3757
|
-
restoreFile && /* @__PURE__ */
|
|
3758
|
-
/* @__PURE__ */
|
|
3759
|
-
/* @__PURE__ */
|
|
3760
|
-
/* @__PURE__ */
|
|
3761
|
-
/* @__PURE__ */
|
|
3754
|
+
restoreFile && /* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3755
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs font-medium ${theme.text}`, children: "Decryption Method:" }),
|
|
3756
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3757
|
+
/* @__PURE__ */ jsx16("input", { type: "checkbox", id: "use-restore-password", checked: useCustomPassword, onChange: (e) => setUseCustomPassword(e.target.checked), className: "rounded" }),
|
|
3758
|
+
/* @__PURE__ */ jsx16("label", { htmlFor: "use-restore-password", className: `text-xs ${theme.text}`, children: "Use custom password instead of passkey" })
|
|
3762
3759
|
] }),
|
|
3763
|
-
!useCustomPassword && /* @__PURE__ */
|
|
3764
|
-
/* @__PURE__ */
|
|
3765
|
-
/* @__PURE__ */
|
|
3760
|
+
!useCustomPassword && /* @__PURE__ */ jsx16("div", { className: `p-2 border rounded text-xs ${theme.inputBg} ${theme.text}`, children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3761
|
+
/* @__PURE__ */ jsx16(Key, { className: "h-3.5 w-3.5" }),
|
|
3762
|
+
/* @__PURE__ */ jsx16("span", { children: "Your passkey will be used to decrypt the backup securely" })
|
|
3766
3763
|
] }) }),
|
|
3767
|
-
useCustomPassword && /* @__PURE__ */
|
|
3768
|
-
/* @__PURE__ */
|
|
3764
|
+
useCustomPassword && /* @__PURE__ */ jsxs8("div", { className: "relative", children: [
|
|
3765
|
+
/* @__PURE__ */ jsx16(
|
|
3769
3766
|
Input,
|
|
3770
3767
|
{
|
|
3771
3768
|
type: showPassword ? "text" : "password",
|
|
@@ -3775,61 +3772,61 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3775
3772
|
className: `pr-10 text-sm bg-transparent ${isDark ? "text-gray-100 placeholder:text-gray-400 border-gray-600 focus-visible:ring-offset-0" : "text-gray-900 placeholder:text-gray-500 border-gray-300"}`
|
|
3776
3773
|
}
|
|
3777
3774
|
),
|
|
3778
|
-
/* @__PURE__ */
|
|
3775
|
+
/* @__PURE__ */ jsx16(
|
|
3779
3776
|
"button",
|
|
3780
3777
|
{
|
|
3781
3778
|
type: "button",
|
|
3782
3779
|
onClick: () => setShowPassword(!showPassword),
|
|
3783
3780
|
className: `absolute inset-y-0 right-2 flex items-center justify-center p-0 rounded ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-transparent text-gray-500 hover:text-gray-700"}`,
|
|
3784
|
-
children: showPassword ? /* @__PURE__ */
|
|
3781
|
+
children: showPassword ? /* @__PURE__ */ jsx16(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx16(Eye, { className: "h-4 w-4" })
|
|
3785
3782
|
}
|
|
3786
3783
|
)
|
|
3787
3784
|
] })
|
|
3788
3785
|
] }),
|
|
3789
|
-
error && /* @__PURE__ */
|
|
3790
|
-
/* @__PURE__ */
|
|
3791
|
-
/* @__PURE__ */
|
|
3786
|
+
error && /* @__PURE__ */ jsxs8("div", { className: `flex items-center gap-2 p-2 rounded border text-xs ${theme.errorText} ${isDark ? "bg-red-500/15 border-red-500/40" : "bg-red-50 border-red-200"}`, children: [
|
|
3787
|
+
/* @__PURE__ */ jsx16(AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3788
|
+
/* @__PURE__ */ jsx16("span", { children: error })
|
|
3792
3789
|
] }),
|
|
3793
|
-
success && /* @__PURE__ */
|
|
3794
|
-
/* @__PURE__ */
|
|
3795
|
-
/* @__PURE__ */
|
|
3790
|
+
success && /* @__PURE__ */ jsxs8("div", { className: `flex items-center gap-2 p-2 rounded border text-xs ${theme.successText} ${isDark ? "bg-green-500/15 border-green-500/40" : "bg-green-50 border-green-200"}`, children: [
|
|
3791
|
+
/* @__PURE__ */ jsx16(CheckCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3792
|
+
/* @__PURE__ */ jsx16("span", { children: success })
|
|
3796
3793
|
] })
|
|
3797
3794
|
] })
|
|
3798
3795
|
] });
|
|
3799
3796
|
}
|
|
3800
|
-
return /* @__PURE__ */
|
|
3801
|
-
/* @__PURE__ */
|
|
3802
|
-
/* @__PURE__ */
|
|
3803
|
-
/* @__PURE__ */
|
|
3804
|
-
/* @__PURE__ */
|
|
3805
|
-
/* @__PURE__ */
|
|
3797
|
+
return /* @__PURE__ */ jsxs8(Card, { className: `${isDark ? "border-gray-700 bg-gray-900" : "border-blue-200 bg-blue-50"} border-0`, children: [
|
|
3798
|
+
/* @__PURE__ */ jsxs8(CardHeader, { className: "pb-3", children: [
|
|
3799
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between", children: [
|
|
3800
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3801
|
+
/* @__PURE__ */ jsx16(Shield, { className: "h-5 w-5 text-blue-600" }),
|
|
3802
|
+
/* @__PURE__ */ jsx16(CardTitle, { className: `text-base ${isDark ? "text-gray-100" : "text-gray-900"}`, children: "Restore Account Access" })
|
|
3806
3803
|
] }),
|
|
3807
|
-
onClose && /* @__PURE__ */
|
|
3804
|
+
onClose && /* @__PURE__ */ jsx16(
|
|
3808
3805
|
"button",
|
|
3809
3806
|
{
|
|
3810
3807
|
onClick: onClose,
|
|
3811
3808
|
className: `p-1 rounded transition-colors ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-red-100 text-red-600 hover:bg-red-200"}`,
|
|
3812
3809
|
title: "Close",
|
|
3813
3810
|
"aria-label": "Close",
|
|
3814
|
-
children: /* @__PURE__ */
|
|
3811
|
+
children: /* @__PURE__ */ jsx16(X2, { className: "h-4 w-4" })
|
|
3815
3812
|
}
|
|
3816
3813
|
)
|
|
3817
3814
|
] }),
|
|
3818
|
-
/* @__PURE__ */
|
|
3815
|
+
/* @__PURE__ */ jsx16(CardDescription, { className: `text-sm mt-1 ${isDark ? "text-gray-300" : "text-gray-600"}`, children: "Your account was found in the Vault" })
|
|
3819
3816
|
] }),
|
|
3820
|
-
/* @__PURE__ */
|
|
3821
|
-
error && !error.includes("No backup found") && /* @__PURE__ */
|
|
3822
|
-
/* @__PURE__ */
|
|
3823
|
-
/* @__PURE__ */
|
|
3817
|
+
/* @__PURE__ */ jsxs8(CardContent, { className: "space-y-3.5", children: [
|
|
3818
|
+
error && !error.includes("No backup found") && /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 p-2 rounded bg-red-50 border border-red-200 text-red-700 text-xs", children: [
|
|
3819
|
+
/* @__PURE__ */ jsx16(AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3820
|
+
/* @__PURE__ */ jsx16("span", { children: error })
|
|
3824
3821
|
] }),
|
|
3825
|
-
success && /* @__PURE__ */
|
|
3826
|
-
/* @__PURE__ */
|
|
3827
|
-
/* @__PURE__ */
|
|
3822
|
+
success && /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 p-2 rounded bg-green-50 border border-green-200 text-green-700 text-xs", children: [
|
|
3823
|
+
/* @__PURE__ */ jsx16(CheckCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3824
|
+
/* @__PURE__ */ jsx16("span", { children: success })
|
|
3828
3825
|
] }),
|
|
3829
|
-
/* @__PURE__ */
|
|
3830
|
-
/* @__PURE__ */
|
|
3831
|
-
/* @__PURE__ */
|
|
3832
|
-
/* @__PURE__ */
|
|
3826
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3827
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Decryption Method:" }),
|
|
3828
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3829
|
+
/* @__PURE__ */ jsx16(
|
|
3833
3830
|
"input",
|
|
3834
3831
|
{
|
|
3835
3832
|
type: "checkbox",
|
|
@@ -3839,14 +3836,14 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3839
3836
|
className: "rounded"
|
|
3840
3837
|
}
|
|
3841
3838
|
),
|
|
3842
|
-
/* @__PURE__ */
|
|
3839
|
+
/* @__PURE__ */ jsx16("label", { htmlFor: "use-restore-password", className: `text-xs ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Use custom password instead of passkey" })
|
|
3843
3840
|
] }),
|
|
3844
|
-
!useCustomPassword && /* @__PURE__ */
|
|
3845
|
-
/* @__PURE__ */
|
|
3846
|
-
/* @__PURE__ */
|
|
3841
|
+
!useCustomPassword && /* @__PURE__ */ jsx16("div", { className: isDark ? "p-2 rounded bg-blue-500/10 border border-blue-500/30" : "p-2 rounded bg-blue-50 border border-blue-200", children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3842
|
+
/* @__PURE__ */ jsx16(Key, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
3843
|
+
/* @__PURE__ */ jsx16("p", { className: `text-xs ${isDark ? "text-gray-300" : "text-blue-700"}`, children: "Passkey will be used to decrypt the backup" })
|
|
3847
3844
|
] }) }),
|
|
3848
|
-
useCustomPassword && /* @__PURE__ */
|
|
3849
|
-
/* @__PURE__ */
|
|
3845
|
+
useCustomPassword && /* @__PURE__ */ jsxs8("div", { className: "relative", children: [
|
|
3846
|
+
/* @__PURE__ */ jsx16(
|
|
3850
3847
|
Input,
|
|
3851
3848
|
{
|
|
3852
3849
|
type: showPassword ? "text" : "password",
|
|
@@ -3856,26 +3853,26 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3856
3853
|
className: `pr-10 text-sm bg-transparent ${isDark ? "text-gray-100 placeholder:text-gray-400 border-gray-600 focus-visible:ring-offset-0" : "text-gray-900 placeholder:text-gray-500 border-gray-300"}`
|
|
3857
3854
|
}
|
|
3858
3855
|
),
|
|
3859
|
-
/* @__PURE__ */
|
|
3856
|
+
/* @__PURE__ */ jsx16(
|
|
3860
3857
|
"button",
|
|
3861
3858
|
{
|
|
3862
3859
|
type: "button",
|
|
3863
3860
|
onClick: () => setShowPassword(!showPassword),
|
|
3864
3861
|
className: `absolute inset-y-0 right-2 flex items-center justify-center p-0 rounded ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-transparent text-gray-500 hover:text-gray-700"}`,
|
|
3865
3862
|
"aria-label": "Toggle password visibility",
|
|
3866
|
-
children: showPassword ? /* @__PURE__ */
|
|
3863
|
+
children: showPassword ? /* @__PURE__ */ jsx16(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx16(Eye, { className: "h-4 w-4" })
|
|
3867
3864
|
}
|
|
3868
3865
|
)
|
|
3869
3866
|
] })
|
|
3870
3867
|
] }),
|
|
3871
|
-
/* @__PURE__ */
|
|
3872
|
-
/* @__PURE__ */
|
|
3873
|
-
/* @__PURE__ */
|
|
3874
|
-
/* @__PURE__ */
|
|
3875
|
-
/* @__PURE__ */
|
|
3876
|
-
/* @__PURE__ */
|
|
3868
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2.5", children: [
|
|
3869
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Choose Restore Method:" }),
|
|
3870
|
+
/* @__PURE__ */ jsxs8("div", { className: isDark ? "p-3 rounded bg-gray-800/50" : "p-3 rounded bg-blue-50/50", children: [
|
|
3871
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3872
|
+
/* @__PURE__ */ jsx16(Server, { className: "h-4 w-4 text-blue-500" }),
|
|
3873
|
+
/* @__PURE__ */ jsx16("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Server Backup" })
|
|
3877
3874
|
] }),
|
|
3878
|
-
/* @__PURE__ */
|
|
3875
|
+
/* @__PURE__ */ jsx16(
|
|
3879
3876
|
Button,
|
|
3880
3877
|
{
|
|
3881
3878
|
onClick: handleRestoreFromServer,
|
|
@@ -3885,13 +3882,13 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3885
3882
|
}
|
|
3886
3883
|
)
|
|
3887
3884
|
] }),
|
|
3888
|
-
/* @__PURE__ */
|
|
3889
|
-
/* @__PURE__ */
|
|
3890
|
-
/* @__PURE__ */
|
|
3891
|
-
/* @__PURE__ */
|
|
3885
|
+
/* @__PURE__ */ jsxs8("div", { className: isDark ? "p-3 rounded bg-gray-800/50" : "p-3 rounded bg-purple-50/50", children: [
|
|
3886
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3887
|
+
/* @__PURE__ */ jsx16(Upload, { className: "h-4 w-4 text-purple-500" }),
|
|
3888
|
+
/* @__PURE__ */ jsx16("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Backup File" })
|
|
3892
3889
|
] }),
|
|
3893
|
-
/* @__PURE__ */
|
|
3894
|
-
/* @__PURE__ */
|
|
3890
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3891
|
+
/* @__PURE__ */ jsx16("label", { className: `block w-full cursor-pointer ${isDark ? "text-gray-300" : "text-gray-700"}`, children: /* @__PURE__ */ jsx16(
|
|
3895
3892
|
"input",
|
|
3896
3893
|
{
|
|
3897
3894
|
type: "file",
|
|
@@ -3900,9 +3897,9 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3900
3897
|
className: isDark ? "block w-full text-xs file:mr-3 file:py-1.5 file:px-3 file:rounded file:border-0 file:text-xs file:font-medium file:bg-purple-600 file:text-white hover:file:bg-purple-700 file:cursor-pointer" : "block w-full text-xs file:mr-3 file:py-1.5 file:px-3 file:rounded file:border-0 file:text-xs file:font-medium file:bg-purple-600 file:text-white hover:file:bg-purple-700 file:cursor-pointer"
|
|
3901
3898
|
}
|
|
3902
3899
|
) }),
|
|
3903
|
-
restoreFile && /* @__PURE__ */
|
|
3904
|
-
/* @__PURE__ */
|
|
3905
|
-
/* @__PURE__ */
|
|
3900
|
+
restoreFile && /* @__PURE__ */ jsxs8(Fragment2, { children: [
|
|
3901
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs p-2 rounded ${isDark ? "bg-gray-700 text-gray-300" : "bg-gray-100 text-gray-600"}`, children: restoreFile.name }),
|
|
3902
|
+
/* @__PURE__ */ jsx16(
|
|
3906
3903
|
Button,
|
|
3907
3904
|
{
|
|
3908
3905
|
onClick: handleRestoreFromFile,
|
|
@@ -3933,7 +3930,7 @@ var init_KeyshareRestore = __esm({
|
|
|
3933
3930
|
|
|
3934
3931
|
// src/internal/components/VerificationCodeInput.tsx
|
|
3935
3932
|
import { useEffect as useEffect4, useMemo as useMemo3, useRef, useState as useState4 } from "react";
|
|
3936
|
-
import { jsx as
|
|
3933
|
+
import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3937
3934
|
var VerificationCodeInput;
|
|
3938
3935
|
var init_VerificationCodeInput = __esm({
|
|
3939
3936
|
"src/internal/components/VerificationCodeInput.tsx"() {
|
|
@@ -4013,8 +4010,8 @@ var init_VerificationCodeInput = __esm({
|
|
|
4013
4010
|
};
|
|
4014
4011
|
const mm = Math.floor(timeLeft / 60).toString();
|
|
4015
4012
|
const ss = (timeLeft % 60).toString().padStart(2, "0");
|
|
4016
|
-
return /* @__PURE__ */
|
|
4017
|
-
/* @__PURE__ */
|
|
4013
|
+
return /* @__PURE__ */ jsxs9("div", { className: "text-center", children: [
|
|
4014
|
+
/* @__PURE__ */ jsx17("div", { className: `flex items-center justify-center gap-2 mb-4`, children: digits.map((d, i) => /* @__PURE__ */ jsx17(
|
|
4018
4015
|
"input",
|
|
4019
4016
|
{
|
|
4020
4017
|
ref: (el) => inputsRef.current[i] = el,
|
|
@@ -4030,17 +4027,17 @@ var init_VerificationCodeInput = __esm({
|
|
|
4030
4027
|
},
|
|
4031
4028
|
i
|
|
4032
4029
|
)) }),
|
|
4033
|
-
error && /* @__PURE__ */
|
|
4034
|
-
/* @__PURE__ */
|
|
4030
|
+
error && /* @__PURE__ */ jsx17("div", { className: `text-sm ${theme.errorText} mb-3 break-words whitespace-pre-wrap text-center`, children: error }),
|
|
4031
|
+
/* @__PURE__ */ jsxs9("div", { className: `text-sm ${theme.mutedText} mb-3`, children: [
|
|
4035
4032
|
"Code expires in ",
|
|
4036
4033
|
mm,
|
|
4037
4034
|
":",
|
|
4038
4035
|
ss
|
|
4039
4036
|
] }),
|
|
4040
|
-
/* @__PURE__ */
|
|
4037
|
+
/* @__PURE__ */ jsxs9("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
4041
4038
|
"Didn't receive code?",
|
|
4042
4039
|
" ",
|
|
4043
|
-
/* @__PURE__ */
|
|
4040
|
+
/* @__PURE__ */ jsx17(
|
|
4044
4041
|
"button",
|
|
4045
4042
|
{
|
|
4046
4043
|
onClick: () => timeLeft === 0 ? onResendCode() : void 0,
|
|
@@ -4081,7 +4078,7 @@ var init_profile = __esm({
|
|
|
4081
4078
|
// src/internal/components/DisplayNameInput.tsx
|
|
4082
4079
|
import { useState as useState5 } from "react";
|
|
4083
4080
|
import { User } from "lucide-react";
|
|
4084
|
-
import { jsx as
|
|
4081
|
+
import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
4085
4082
|
var DisplayNameInput;
|
|
4086
4083
|
var init_DisplayNameInput = __esm({
|
|
4087
4084
|
"src/internal/components/DisplayNameInput.tsx"() {
|
|
@@ -4128,14 +4125,14 @@ var init_DisplayNameInput = __esm({
|
|
|
4128
4125
|
onComplete();
|
|
4129
4126
|
}
|
|
4130
4127
|
};
|
|
4131
|
-
return /* @__PURE__ */
|
|
4132
|
-
/* @__PURE__ */
|
|
4133
|
-
/* @__PURE__ */
|
|
4134
|
-
/* @__PURE__ */
|
|
4135
|
-
/* @__PURE__ */
|
|
4136
|
-
/* @__PURE__ */
|
|
4137
|
-
/* @__PURE__ */
|
|
4138
|
-
/* @__PURE__ */
|
|
4128
|
+
return /* @__PURE__ */ jsxs10("div", { children: [
|
|
4129
|
+
/* @__PURE__ */ jsx18("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx18("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx18(LumiaLogo, { size: 28 }) }) }),
|
|
4130
|
+
/* @__PURE__ */ jsx18("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "What's your name?" }),
|
|
4131
|
+
/* @__PURE__ */ jsx18("p", { className: `text-sm ${theme.bodyText} mb-6`, children: "This helps personalize your experience" }),
|
|
4132
|
+
/* @__PURE__ */ jsxs10("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
|
|
4133
|
+
/* @__PURE__ */ jsxs10("div", { className: "relative", children: [
|
|
4134
|
+
/* @__PURE__ */ jsx18(User, { className: `absolute left-3 top-3 h-5 w-5 ${theme.iconColor}` }),
|
|
4135
|
+
/* @__PURE__ */ jsx18(
|
|
4139
4136
|
Input,
|
|
4140
4137
|
{
|
|
4141
4138
|
type: "text",
|
|
@@ -4152,8 +4149,8 @@ var init_DisplayNameInput = __esm({
|
|
|
4152
4149
|
}
|
|
4153
4150
|
)
|
|
4154
4151
|
] }),
|
|
4155
|
-
error && /* @__PURE__ */
|
|
4156
|
-
/* @__PURE__ */
|
|
4152
|
+
error && /* @__PURE__ */ jsx18("div", { className: `text-sm ${theme.errorText} text-center`, children: error }),
|
|
4153
|
+
/* @__PURE__ */ jsx18(
|
|
4157
4154
|
Button,
|
|
4158
4155
|
{
|
|
4159
4156
|
type: "submit",
|
|
@@ -4163,7 +4160,7 @@ var init_DisplayNameInput = __esm({
|
|
|
4163
4160
|
children: isLoading ? "Saving..." : "Continue"
|
|
4164
4161
|
}
|
|
4165
4162
|
),
|
|
4166
|
-
onSkip && /* @__PURE__ */
|
|
4163
|
+
onSkip && /* @__PURE__ */ jsx18("div", { className: "text-center mt-4", children: /* @__PURE__ */ jsx18(
|
|
4167
4164
|
"button",
|
|
4168
4165
|
{
|
|
4169
4166
|
type: "button",
|
|
@@ -4188,7 +4185,7 @@ __export(AuthModal_exports, {
|
|
|
4188
4185
|
});
|
|
4189
4186
|
import React13, { useState as useState6 } from "react";
|
|
4190
4187
|
import { Mail, Fingerprint, KeyRound } from "lucide-react";
|
|
4191
|
-
import { Fragment as Fragment3, jsx as
|
|
4188
|
+
import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
4192
4189
|
function getPendingLoginResponse() {
|
|
4193
4190
|
return _pendingLoginResponse;
|
|
4194
4191
|
}
|
|
@@ -4201,7 +4198,6 @@ var init_AuthModal = __esm({
|
|
|
4201
4198
|
init_auth();
|
|
4202
4199
|
init_ErrorAlert();
|
|
4203
4200
|
init_LumiaLogo();
|
|
4204
|
-
init_SuccessScreen();
|
|
4205
4201
|
init_FailedScreen();
|
|
4206
4202
|
init_TermsOfService();
|
|
4207
4203
|
init_button();
|
|
@@ -4237,6 +4233,17 @@ var init_AuthModal = __esm({
|
|
|
4237
4233
|
}, []);
|
|
4238
4234
|
const { config } = useLumiaPassportConfig();
|
|
4239
4235
|
const { classes: theme, isDark } = useTheme(config.ui.theme, config.ui.colors);
|
|
4236
|
+
React13.useEffect(() => {
|
|
4237
|
+
if (!open) {
|
|
4238
|
+
setStep("signin");
|
|
4239
|
+
setEmail("");
|
|
4240
|
+
setVerificationError("");
|
|
4241
|
+
setSendError("");
|
|
4242
|
+
setPasskeyError("");
|
|
4243
|
+
setPasskeyStatus("idle");
|
|
4244
|
+
setFailedMessage("");
|
|
4245
|
+
}
|
|
4246
|
+
}, [open]);
|
|
4240
4247
|
React13.useEffect(() => {
|
|
4241
4248
|
const handleIframeMessage = (event) => {
|
|
4242
4249
|
if (event.data?.type === "LUMIA_PASSPORT_SHOW_IFRAME") {
|
|
@@ -4368,15 +4375,12 @@ var init_AuthModal = __esm({
|
|
|
4368
4375
|
}
|
|
4369
4376
|
throw authError;
|
|
4370
4377
|
}
|
|
4371
|
-
console.log("[AuthModal]
|
|
4372
|
-
setStep("success");
|
|
4378
|
+
console.log("[AuthModal] Authentication successful, closing modal");
|
|
4373
4379
|
if (autoCloseOnSuccess && !needsRecovery) {
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
setVerificationError("");
|
|
4379
|
-
}, 2e3);
|
|
4380
|
+
setStep("signin");
|
|
4381
|
+
setEmail("");
|
|
4382
|
+
setVerificationError("");
|
|
4383
|
+
onOpenChange(false);
|
|
4380
4384
|
}
|
|
4381
4385
|
} catch (error) {
|
|
4382
4386
|
let errorMessage = "";
|
|
@@ -4464,15 +4468,12 @@ var init_AuthModal = __esm({
|
|
|
4464
4468
|
if (onAuthSuccess) {
|
|
4465
4469
|
await onAuthSuccess();
|
|
4466
4470
|
}
|
|
4467
|
-
setStep("
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
setPasskeyError("");
|
|
4474
|
-
setPasskeyStatus("idle");
|
|
4475
|
-
}, 2e3);
|
|
4471
|
+
setStep("signin");
|
|
4472
|
+
setEmail("");
|
|
4473
|
+
setVerificationError("");
|
|
4474
|
+
setPasskeyError("");
|
|
4475
|
+
setPasskeyStatus("idle");
|
|
4476
|
+
onOpenChange(false);
|
|
4476
4477
|
} else {
|
|
4477
4478
|
setPasskeyStatus("Passkey registered successfully!");
|
|
4478
4479
|
setTimeout(() => {
|
|
@@ -4550,16 +4551,13 @@ var init_AuthModal = __esm({
|
|
|
4550
4551
|
}
|
|
4551
4552
|
throw authError;
|
|
4552
4553
|
}
|
|
4553
|
-
setStep("success");
|
|
4554
4554
|
if (autoCloseOnSuccess) {
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
|
|
4561
|
-
setPasskeyStatus("idle");
|
|
4562
|
-
}, 2e3);
|
|
4555
|
+
setStep("signin");
|
|
4556
|
+
setEmail("");
|
|
4557
|
+
setVerificationError("");
|
|
4558
|
+
setPasskeyError("");
|
|
4559
|
+
setPasskeyStatus("idle");
|
|
4560
|
+
onOpenChange(false);
|
|
4563
4561
|
}
|
|
4564
4562
|
} catch (e) {
|
|
4565
4563
|
const normalized = normalizeWebAuthnError(e);
|
|
@@ -4633,15 +4631,12 @@ var init_AuthModal = __esm({
|
|
|
4633
4631
|
if (onAuthSuccess) {
|
|
4634
4632
|
await onAuthSuccess();
|
|
4635
4633
|
}
|
|
4636
|
-
setStep("
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
setPasskeyError("");
|
|
4643
|
-
setPasskeyStatus("idle");
|
|
4644
|
-
}, 2e3);
|
|
4634
|
+
setStep("signin");
|
|
4635
|
+
setEmail("");
|
|
4636
|
+
setVerificationError("");
|
|
4637
|
+
setPasskeyError("");
|
|
4638
|
+
setPasskeyStatus("idle");
|
|
4639
|
+
onOpenChange(false);
|
|
4645
4640
|
} catch (sessionError) {
|
|
4646
4641
|
let errorMessage = "Account setup failed. Please try again.";
|
|
4647
4642
|
if (sessionError?.code === "NO_BACKUP_AVAILABLE") {
|
|
@@ -4671,20 +4666,20 @@ var init_AuthModal = __esm({
|
|
|
4671
4666
|
};
|
|
4672
4667
|
}, [step, onAuthSuccess, onOpenChange]);
|
|
4673
4668
|
if (recoveryUserId) {
|
|
4674
|
-
return /* @__PURE__ */
|
|
4669
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4675
4670
|
DialogContent,
|
|
4676
4671
|
{
|
|
4677
4672
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4678
4673
|
hideClose: true,
|
|
4679
4674
|
children: [
|
|
4680
|
-
/* @__PURE__ */
|
|
4681
|
-
/* @__PURE__ */
|
|
4675
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Restore Account Access" }),
|
|
4676
|
+
/* @__PURE__ */ jsx19(KeyshareRestore, { userId: recoveryUserId, onClose: onRecoveryClose, onRestoreSuccess: onRecoverySuccess })
|
|
4682
4677
|
]
|
|
4683
4678
|
}
|
|
4684
4679
|
) });
|
|
4685
4680
|
}
|
|
4686
4681
|
if (step === "display-name") {
|
|
4687
|
-
return /* @__PURE__ */
|
|
4682
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4688
4683
|
DialogContent,
|
|
4689
4684
|
{
|
|
4690
4685
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4694,8 +4689,8 @@ var init_AuthModal = __esm({
|
|
|
4694
4689
|
},
|
|
4695
4690
|
hideClose: true,
|
|
4696
4691
|
children: [
|
|
4697
|
-
/* @__PURE__ */
|
|
4698
|
-
/* @__PURE__ */
|
|
4692
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Enter Your Name" }),
|
|
4693
|
+
/* @__PURE__ */ jsx19("div", { className: "p-8", children: /* @__PURE__ */ jsx19(
|
|
4699
4694
|
DisplayNameInput,
|
|
4700
4695
|
{
|
|
4701
4696
|
onComplete: async () => {
|
|
@@ -4728,24 +4723,8 @@ var init_AuthModal = __esm({
|
|
|
4728
4723
|
}
|
|
4729
4724
|
) });
|
|
4730
4725
|
}
|
|
4731
|
-
if (step === "success") {
|
|
4732
|
-
return /* @__PURE__ */ jsx20(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs12(
|
|
4733
|
-
DialogContent,
|
|
4734
|
-
{
|
|
4735
|
-
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4736
|
-
style: {
|
|
4737
|
-
borderRadius: config.ui.modal?.borderRadius || "24px",
|
|
4738
|
-
maxWidth: config.ui.modal?.width || "400px"
|
|
4739
|
-
},
|
|
4740
|
-
children: [
|
|
4741
|
-
/* @__PURE__ */ jsx20(DialogTitle, { className: "sr-only", children: "Authentication Success" }),
|
|
4742
|
-
/* @__PURE__ */ jsx20("div", { className: "p-8", children: /* @__PURE__ */ jsx20(SuccessScreen, {}) })
|
|
4743
|
-
]
|
|
4744
|
-
}
|
|
4745
|
-
) });
|
|
4746
|
-
}
|
|
4747
4726
|
if (step === "failed") {
|
|
4748
|
-
return /* @__PURE__ */
|
|
4727
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4749
4728
|
DialogContent,
|
|
4750
4729
|
{
|
|
4751
4730
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4754,14 +4733,14 @@ var init_AuthModal = __esm({
|
|
|
4754
4733
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4755
4734
|
},
|
|
4756
4735
|
children: [
|
|
4757
|
-
/* @__PURE__ */
|
|
4758
|
-
/* @__PURE__ */
|
|
4736
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Authentication Failed" }),
|
|
4737
|
+
/* @__PURE__ */ jsx19("div", { className: "p-8", children: /* @__PURE__ */ jsx19(FailedScreen, { message: failedMessage }) })
|
|
4759
4738
|
]
|
|
4760
4739
|
}
|
|
4761
4740
|
) });
|
|
4762
4741
|
}
|
|
4763
4742
|
if (step === "verify") {
|
|
4764
|
-
return /* @__PURE__ */
|
|
4743
|
+
return /* @__PURE__ */ jsx19(Dialog, { open: open && !iframeVisible, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4765
4744
|
DialogContent,
|
|
4766
4745
|
{
|
|
4767
4746
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4770,17 +4749,17 @@ var init_AuthModal = __esm({
|
|
|
4770
4749
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4771
4750
|
},
|
|
4772
4751
|
children: [
|
|
4773
|
-
/* @__PURE__ */
|
|
4774
|
-
/* @__PURE__ */
|
|
4775
|
-
/* @__PURE__ */
|
|
4776
|
-
/* @__PURE__ */
|
|
4777
|
-
/* @__PURE__ */
|
|
4778
|
-
/* @__PURE__ */
|
|
4752
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Email Verification" }),
|
|
4753
|
+
/* @__PURE__ */ jsxs11("div", { className: "p-5", children: [
|
|
4754
|
+
/* @__PURE__ */ jsx19(DialogTopBar, { onBack: goBackToSignIn, className: "-mx-5 -mt-5 mb-1" }),
|
|
4755
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx19("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx19(LumiaLogo, { size: 28 }) }) }),
|
|
4756
|
+
/* @__PURE__ */ jsx19("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "Enter verification code" }),
|
|
4757
|
+
/* @__PURE__ */ jsxs11("p", { className: `text-sm ${theme.bodyText} mb-6`, children: [
|
|
4779
4758
|
"We sent a verification code to",
|
|
4780
|
-
/* @__PURE__ */
|
|
4781
|
-
/* @__PURE__ */
|
|
4759
|
+
/* @__PURE__ */ jsx19("br", {}),
|
|
4760
|
+
/* @__PURE__ */ jsx19("span", { className: "font-semibold", children: email })
|
|
4782
4761
|
] }),
|
|
4783
|
-
/* @__PURE__ */
|
|
4762
|
+
/* @__PURE__ */ jsx19(
|
|
4784
4763
|
VerificationCodeInput,
|
|
4785
4764
|
{
|
|
4786
4765
|
onVerifyCode: verifyCode,
|
|
@@ -4790,10 +4769,10 @@ var init_AuthModal = __esm({
|
|
|
4790
4769
|
error: verificationError
|
|
4791
4770
|
}
|
|
4792
4771
|
),
|
|
4793
|
-
config.features.mpcSecurity && /* @__PURE__ */
|
|
4772
|
+
config.features.mpcSecurity && /* @__PURE__ */ jsxs11("div", { className: `text-xs ${theme.mutedText} mt-6 text-center`, children: [
|
|
4794
4773
|
"protected by \u26A1",
|
|
4795
4774
|
" ",
|
|
4796
|
-
config.ui.branding.link ? /* @__PURE__ */
|
|
4775
|
+
config.ui.branding.link ? /* @__PURE__ */ jsx19("a", { href: config.ui.branding.link.url, target: "_blank", rel: "noopener noreferrer", className: `${theme.linkText} underline font-medium`, children: config.ui.branding.tagline }) : /* @__PURE__ */ jsx19("span", { className: "font-medium", children: config.ui.branding.tagline })
|
|
4797
4776
|
] })
|
|
4798
4777
|
] })
|
|
4799
4778
|
]
|
|
@@ -4801,7 +4780,7 @@ var init_AuthModal = __esm({
|
|
|
4801
4780
|
) });
|
|
4802
4781
|
}
|
|
4803
4782
|
if (step === "telegram") {
|
|
4804
|
-
return /* @__PURE__ */
|
|
4783
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4805
4784
|
DialogContent,
|
|
4806
4785
|
{
|
|
4807
4786
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-visible ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4810,16 +4789,16 @@ var init_AuthModal = __esm({
|
|
|
4810
4789
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4811
4790
|
},
|
|
4812
4791
|
children: [
|
|
4813
|
-
/* @__PURE__ */
|
|
4814
|
-
/* @__PURE__ */
|
|
4815
|
-
/* @__PURE__ */
|
|
4816
|
-
/* @__PURE__ */
|
|
4817
|
-
/* @__PURE__ */
|
|
4818
|
-
/* @__PURE__ */
|
|
4792
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Telegram Authentication" }),
|
|
4793
|
+
/* @__PURE__ */ jsxs11("div", { className: "p-8", children: [
|
|
4794
|
+
/* @__PURE__ */ jsxs11("div", { className: "text-center mb-6", children: [
|
|
4795
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx19("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx19(LumiaLogo, { size: 32 }) }) }),
|
|
4796
|
+
/* @__PURE__ */ jsx19("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "Sign in with Telegram" }),
|
|
4797
|
+
/* @__PURE__ */ jsx19("p", { className: `text-sm ${theme.bodyText} mb-6`, children: "Click the button below to authenticate with Telegram" })
|
|
4819
4798
|
] }),
|
|
4820
|
-
/* @__PURE__ */
|
|
4821
|
-
isLoading && /* @__PURE__ */
|
|
4822
|
-
/* @__PURE__ */
|
|
4799
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-6", children: /* @__PURE__ */ jsx19("div", { id: "tg-root", className: "flex justify-center" }) }),
|
|
4800
|
+
isLoading && /* @__PURE__ */ jsx19("div", { className: `text-center text-sm ${theme.successText} mb-4`, children: "Loading Telegram widget..." }),
|
|
4801
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx19(
|
|
4823
4802
|
Button,
|
|
4824
4803
|
{
|
|
4825
4804
|
variant: "outline",
|
|
@@ -4833,24 +4812,24 @@ var init_AuthModal = __esm({
|
|
|
4833
4812
|
}
|
|
4834
4813
|
) });
|
|
4835
4814
|
}
|
|
4836
|
-
return /* @__PURE__ */
|
|
4837
|
-
/* @__PURE__ */
|
|
4815
|
+
return /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
4816
|
+
/* @__PURE__ */ jsx19(Dialog, { open: open && !iframeVisible, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4838
4817
|
DialogContent,
|
|
4839
4818
|
{
|
|
4840
4819
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden`,
|
|
4841
4820
|
children: [
|
|
4842
|
-
/* @__PURE__ */
|
|
4843
|
-
/* @__PURE__ */
|
|
4844
|
-
/* @__PURE__ */
|
|
4845
|
-
/* @__PURE__ */
|
|
4846
|
-
/* @__PURE__ */
|
|
4847
|
-
config.features.mpcSecurity && /* @__PURE__ */
|
|
4821
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Sign in to Lumia Passport" }),
|
|
4822
|
+
/* @__PURE__ */ jsxs11("div", { className: "p-8", children: [
|
|
4823
|
+
/* @__PURE__ */ jsxs11("div", { className: "text-center mb-8", children: [
|
|
4824
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx19("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx19(LumiaLogo, { size: 32 }) }) }),
|
|
4825
|
+
/* @__PURE__ */ jsx19("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: config.ui.title }),
|
|
4826
|
+
config.features.mpcSecurity && /* @__PURE__ */ jsxs11("div", { className: `text-xs ${theme.mutedText} mb-6`, children: [
|
|
4848
4827
|
"protected by",
|
|
4849
4828
|
" ",
|
|
4850
|
-
/* @__PURE__ */
|
|
4829
|
+
/* @__PURE__ */ jsxs11("span", { className: "font-semibold", children: [
|
|
4851
4830
|
"\u26A1",
|
|
4852
4831
|
" ",
|
|
4853
|
-
config.ui.branding.link ? /* @__PURE__ */
|
|
4832
|
+
config.ui.branding.link ? /* @__PURE__ */ jsx19(
|
|
4854
4833
|
"a",
|
|
4855
4834
|
{
|
|
4856
4835
|
href: config.ui.branding.link.url,
|
|
@@ -4863,7 +4842,7 @@ var init_AuthModal = __esm({
|
|
|
4863
4842
|
] })
|
|
4864
4843
|
] })
|
|
4865
4844
|
] }),
|
|
4866
|
-
/* @__PURE__ */
|
|
4845
|
+
/* @__PURE__ */ jsxs11("div", { className: "space-y-4", children: [
|
|
4867
4846
|
(() => {
|
|
4868
4847
|
const order = config.ui.authOrder || ["passkey", "email", "social"];
|
|
4869
4848
|
const isPasskey = config.passkey.enabled;
|
|
@@ -4874,8 +4853,8 @@ var init_AuthModal = __esm({
|
|
|
4874
4853
|
);
|
|
4875
4854
|
const renderSection = (kind) => {
|
|
4876
4855
|
if (kind === "passkey") {
|
|
4877
|
-
return /* @__PURE__ */
|
|
4878
|
-
/* @__PURE__ */
|
|
4856
|
+
return /* @__PURE__ */ jsxs11("div", { className: "space-y-3", children: [
|
|
4857
|
+
/* @__PURE__ */ jsxs11(
|
|
4879
4858
|
Button,
|
|
4880
4859
|
{
|
|
4881
4860
|
variant: "plain",
|
|
@@ -4883,14 +4862,14 @@ var init_AuthModal = __esm({
|
|
|
4883
4862
|
disabled: isLoading,
|
|
4884
4863
|
className: `w-full h-14 ${theme.primaryBtn} rounded-2xl font-semibold shadow-sm`,
|
|
4885
4864
|
children: [
|
|
4886
|
-
/* @__PURE__ */
|
|
4865
|
+
/* @__PURE__ */ jsx19(Fingerprint, { className: "w-5 h-5 mr-2" }),
|
|
4887
4866
|
"Sign in with existing Passkey"
|
|
4888
4867
|
]
|
|
4889
4868
|
}
|
|
4890
4869
|
),
|
|
4891
|
-
config.passkey.showCreateButton && /* @__PURE__ */
|
|
4892
|
-
/* @__PURE__ */
|
|
4893
|
-
/* @__PURE__ */
|
|
4870
|
+
config.passkey.showCreateButton && /* @__PURE__ */ jsxs11("div", { className: `border-t ${theme.divider} pt-3`, children: [
|
|
4871
|
+
/* @__PURE__ */ jsx19("div", { className: `text-center text-sm ${theme.bodyText} mb-3`, children: "Don't have a passkey? Create one:" }),
|
|
4872
|
+
/* @__PURE__ */ jsxs11(
|
|
4894
4873
|
Button,
|
|
4895
4874
|
{
|
|
4896
4875
|
variant: "plain",
|
|
@@ -4898,23 +4877,23 @@ var init_AuthModal = __esm({
|
|
|
4898
4877
|
disabled: isLoading,
|
|
4899
4878
|
className: `w-full h-12 ${theme.outlineBtn} rounded-xl font-medium border`,
|
|
4900
4879
|
children: [
|
|
4901
|
-
/* @__PURE__ */
|
|
4880
|
+
/* @__PURE__ */ jsx19(KeyRound, { className: "w-5 h-5 mr-2" }),
|
|
4902
4881
|
"Create Passkey"
|
|
4903
4882
|
]
|
|
4904
4883
|
}
|
|
4905
4884
|
)
|
|
4906
4885
|
] }),
|
|
4907
|
-
(passkeyError || passkeyStatus !== "idle") && /* @__PURE__ */
|
|
4908
|
-
passkeyError && /* @__PURE__ */
|
|
4909
|
-
passkeyStatus !== "idle" && /* @__PURE__ */
|
|
4886
|
+
(passkeyError || passkeyStatus !== "idle") && /* @__PURE__ */ jsxs11("div", { className: "text-center", children: [
|
|
4887
|
+
passkeyError && /* @__PURE__ */ jsx19("div", { className: `text-sm ${theme.errorText} mb-2 break-words whitespace-pre-wrap text-left mx-auto max-w-full max-h-24 overflow-auto`, children: passkeyError }),
|
|
4888
|
+
passkeyStatus !== "idle" && /* @__PURE__ */ jsx19("div", { className: `text-sm ${theme.successText}`, children: passkeyStatus })
|
|
4910
4889
|
] })
|
|
4911
4890
|
] }, "passkey");
|
|
4912
4891
|
}
|
|
4913
4892
|
if (kind === "email") {
|
|
4914
|
-
return /* @__PURE__ */
|
|
4915
|
-
/* @__PURE__ */
|
|
4916
|
-
/* @__PURE__ */
|
|
4917
|
-
/* @__PURE__ */
|
|
4893
|
+
return /* @__PURE__ */ jsxs11("div", { className: "space-y-3", children: [
|
|
4894
|
+
/* @__PURE__ */ jsxs11("div", { className: "relative", children: [
|
|
4895
|
+
/* @__PURE__ */ jsx19(Mail, { className: `absolute left-3 top-3 h-5 w-5 ${theme.iconColor}` }),
|
|
4896
|
+
/* @__PURE__ */ jsx19(
|
|
4918
4897
|
Input,
|
|
4919
4898
|
{
|
|
4920
4899
|
type: "email",
|
|
@@ -4925,7 +4904,7 @@ var init_AuthModal = __esm({
|
|
|
4925
4904
|
}
|
|
4926
4905
|
)
|
|
4927
4906
|
] }),
|
|
4928
|
-
/* @__PURE__ */
|
|
4907
|
+
/* @__PURE__ */ jsx19(
|
|
4929
4908
|
Button,
|
|
4930
4909
|
{
|
|
4931
4910
|
variant: "plain",
|
|
@@ -4935,10 +4914,10 @@ var init_AuthModal = __esm({
|
|
|
4935
4914
|
children: isLoading ? "Sending..." : config.email.buttonText
|
|
4936
4915
|
}
|
|
4937
4916
|
),
|
|
4938
|
-
sendError && /* @__PURE__ */
|
|
4917
|
+
sendError && /* @__PURE__ */ jsx19("div", { className: `text-sm ${theme.errorText} mt-2 text-center break-words whitespace-pre-wrap`, children: sendError })
|
|
4939
4918
|
] }, "email");
|
|
4940
4919
|
}
|
|
4941
|
-
return /* @__PURE__ */
|
|
4920
|
+
return /* @__PURE__ */ jsx19("div", { className: `grid grid-cols-${config.social.gridColumns} gap-3`, children: config.social.providers.filter((provider) => provider.enabled).map((provider) => {
|
|
4942
4921
|
const fallbackMap = {
|
|
4943
4922
|
google: GoogleIcon,
|
|
4944
4923
|
telegram: TelegramIcon,
|
|
@@ -4948,7 +4927,7 @@ var init_AuthModal = __esm({
|
|
|
4948
4927
|
};
|
|
4949
4928
|
const IconComponent = provider.icon ?? fallbackMap[(provider.id || "").toLowerCase()];
|
|
4950
4929
|
const handleClick = provider.id === "telegram" ? handleTelegramAuth : () => handleComingSoon(provider.name);
|
|
4951
|
-
return /* @__PURE__ */
|
|
4930
|
+
return /* @__PURE__ */ jsx19(
|
|
4952
4931
|
Button,
|
|
4953
4932
|
{
|
|
4954
4933
|
variant: "outline",
|
|
@@ -4956,7 +4935,7 @@ var init_AuthModal = __esm({
|
|
|
4956
4935
|
onClick: handleClick,
|
|
4957
4936
|
disabled: isLoading,
|
|
4958
4937
|
title: provider.comingSoon ? `${provider.name} (Coming Soon)` : provider.name,
|
|
4959
|
-
children: IconComponent ? /* @__PURE__ */
|
|
4938
|
+
children: IconComponent ? /* @__PURE__ */ jsx19(IconComponent, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx19("span", { className: "text-sm", children: provider.name })
|
|
4960
4939
|
},
|
|
4961
4940
|
provider.id
|
|
4962
4941
|
);
|
|
@@ -4966,10 +4945,10 @@ var init_AuthModal = __esm({
|
|
|
4966
4945
|
enabled.forEach((kind, idx) => {
|
|
4967
4946
|
if (idx > 0) {
|
|
4968
4947
|
nodes.push(
|
|
4969
|
-
/* @__PURE__ */
|
|
4970
|
-
/* @__PURE__ */
|
|
4971
|
-
/* @__PURE__ */
|
|
4972
|
-
/* @__PURE__ */
|
|
4948
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-center my-6", children: [
|
|
4949
|
+
/* @__PURE__ */ jsx19("div", { className: `flex-1 border-t ${theme.divider}` }),
|
|
4950
|
+
/* @__PURE__ */ jsx19("div", { className: `px-3 ${theme.mutedText} text-sm`, children: "Or" }),
|
|
4951
|
+
/* @__PURE__ */ jsx19("div", { className: `flex-1 border-t ${theme.divider}` })
|
|
4973
4952
|
] }, `div-${idx}`)
|
|
4974
4953
|
);
|
|
4975
4954
|
}
|
|
@@ -4977,10 +4956,10 @@ var init_AuthModal = __esm({
|
|
|
4977
4956
|
});
|
|
4978
4957
|
return nodes;
|
|
4979
4958
|
})(),
|
|
4980
|
-
/* @__PURE__ */
|
|
4959
|
+
/* @__PURE__ */ jsxs11("div", { className: `text-center mt-6 text-sm ${theme.mutedText} font-medium font-sans`, children: [
|
|
4981
4960
|
"By signing in, you agree to the",
|
|
4982
4961
|
" ",
|
|
4983
|
-
/* @__PURE__ */
|
|
4962
|
+
/* @__PURE__ */ jsx19(
|
|
4984
4963
|
"button",
|
|
4985
4964
|
{
|
|
4986
4965
|
onClick: () => setShowTerms(true),
|
|
@@ -4994,8 +4973,8 @@ var init_AuthModal = __esm({
|
|
|
4994
4973
|
]
|
|
4995
4974
|
}
|
|
4996
4975
|
) }),
|
|
4997
|
-
/* @__PURE__ */
|
|
4998
|
-
/* @__PURE__ */
|
|
4976
|
+
/* @__PURE__ */ jsx19(TermsOfService, { open: showTerms, onOpenChange: setShowTerms }),
|
|
4977
|
+
/* @__PURE__ */ jsx19(ErrorAlert2, {})
|
|
4999
4978
|
] });
|
|
5000
4979
|
};
|
|
5001
4980
|
}
|
|
@@ -5620,7 +5599,7 @@ var init_clients = __esm({
|
|
|
5620
5599
|
});
|
|
5621
5600
|
|
|
5622
5601
|
// src/styles/built.css
|
|
5623
|
-
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{background-color:hsl(var(--background));color:hsl(var(--foreground))}.lumia-scope,.lumia-scope *,.lumia-scope :after,.lumia-scope :before{box-sizing:border-box;border-width:0;border-style:solid}.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font:inherit;color:inherit;margin:0;background-color:transparent}.lumia-scope button{font:inherit;margin:0}.lumia-scope input[type=search]::-webkit-search-cancel-button,.lumia-scope input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.lumia-scope,.lumia-scope *,.lumia-scope .lumia-heading,.lumia-scope [data-radix-dialog-content],.lumia-scope [data-radix-dialog-content] *,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-heading{font-weight:700}.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 .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .bottom-full{bottom:100%}.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 .left-\\[50\\%\\]{left:50%}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.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-\\[50\\%\\]{top:50%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[2147483646\\]{z-index:2147483646}.lumia-scope .z-\\[2147483647\\]{z-index:2147483647}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .-m-px{margin:-1px}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-1\\.5{margin-bottom:.375rem}.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-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-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-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-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-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-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1,.lumia-scope .-translate-y-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-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.lumia-scope .translate-x-\\[-50\\%\\],.lumia-scope .translate-y-\\[-50\\%\\]{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-\\[-50\\%\\]{--tw-translate-y:-50%}.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{box-shadow:0 0 0 rgba(234,88,12,.5)}50%{box-shadow:0 0 20px rgba(234,88,12,.8)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease-in-out infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope :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-2\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*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-3\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.875rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.875rem*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 .truncate{overflow:hidden;text-overflow:ellipsis}.lumia-scope .truncate,.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:var(--radius)}.lumia-scope .rounded-md{border-radius:calc(var(--radius) - 2px)}.lumia-scope .rounded-sm{border-radius:calc(var(--radius) - 4px)}.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-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-500\\/30{border-color:rgba(245,158,11,.3)}.lumia-scope .border-amber-500\\/40{border-color:rgba(245,158,11,.4)}.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-500\\/30{border-color:rgba(59,130,246,.3)}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-border{border-color:hsl(var(--border))}.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-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-green-900\\/60{border-color:rgba(20,83,45,.6)}.lumia-scope .border-input{border-color:hsl(var(--input))}.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-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-red-900\\/60{border-color:rgba(127,29,29,.6)}.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-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#2456f0\\]{--tw-bg-opacity:1;background-color:rgb(36 86 240/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#db2777\\]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#fde2f3\\]{--tw-bg-opacity:1;background-color:rgb(253 226 243/var(--tw-bg-opacity,1))}.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-500\\/10{background-color:rgba(245,158,11,.1)}.lumia-scope .bg-amber-500\\/15{background-color:rgba(245,158,11,.15)}.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-background{background-color:hsl(var(--background))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-black\\/50{background-color:rgba(0,0,0,.5)}.lumia-scope .bg-black\\/80{background-color:rgba(0,0,0,.8)}.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-50\\/50{background-color:rgba(239,246,255,.5)}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500\\/10{background-color:rgba(59,130,246,.1)}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-card{background-color:hsl(var(--card))}.lumia-scope .bg-destructive{background-color:hsl(var(--destructive))}.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-800\\/50{background-color:rgba(31,41,55,.5)}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-950\\/50{background-color:rgba(5,46,22,.5)}.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-900\\/30{background-color:rgba(124,45,18,.3)}.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-primary{background-color:hsl(var(--primary))}.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-50\\/50{background-color:rgba(250,245,255,.5)}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500\\/10{background-color:rgba(168,85,247,.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-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-500\\/15{background-color:rgba(239,68,68,.15)}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/50{background-color:rgba(69,10,10,.5)}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-secondary{background-color:hsl(var(--secondary))}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-50\\/50{background-color:rgba(240,249,255,.5)}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500\\/10{background-color:rgba(14,165,233,.1)}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .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-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.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 .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .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-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .italic{font-style:italic}.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 .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-card-foreground{color:hsl(var(--card-foreground))}.lumia-scope .text-destructive{color:hsl(var(--destructive))}.lumia-scope .text-destructive-foreground{color:hsl(var(--destructive-foreground))}.lumia-scope .text-foreground{color:hsl(var(--foreground))}.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-muted-foreground{color:hsl(var(--muted-foreground))}.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-primary{color:hsl(var(--primary))}.lumia-scope .text-primary-foreground{color:hsl(var(--primary-foreground))}.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-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-secondary-foreground{color:hsl(var(--secondary-foreground))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline{outline-style:solid}.lumia-scope .ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope .\\[background\\:var\\(--lumia-bg\\)\\]{background:var(--lumia-bg)}.lumia-scope .\\[border-color\\:var\\(--lumia-border\\)\\]{border-color:var(--lumia-border)}.lumia-scope .\\[color\\:var\\(--lumia-text\\)\\]{color:var(--lumia-text)}.lumia-scope .\\[color\\:var\\(--lumia-text-muted\\)\\]{color:var(--lumia-text-muted)}.lumia-scope .\\[color\\:var\\(--lumia-text-secondary\\)\\]{color:var(--lumia-text-secondary)}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded::file-selector-button{border-radius:.25rem}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-purple-600::file-selector-button{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-white::file-selector-button{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#1e49d8\\]:hover{--tw-bg-opacity:1;background-color:rgb(30 73 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#be185d\\]:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#f7c1df\\]:hover{--tw-bg-opacity:1;background-color:rgb(247 193 223/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-accent:hover{background-color:hsl(var(--accent))}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive)/.9)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-900\\/30:hover{background-color:rgba(20,83,45,.3)}.lumia-scope .hover\\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-primary\\/80:hover{background-color:hsl(var(--primary)/.8)}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary)/.8)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:from-purple-600:hover{--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 .hover\\:from-purple-700:hover{--tw-gradient-from:#7e22ce var(--tw-gradient-from-position);--tw-gradient-to:rgba(126,34,206,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .hover\\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.lumia-scope .hover\\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:no-underline:hover{text-decoration-line:none}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:bg-purple-700::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.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-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.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-2: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-blue-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus-visible\\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .disabled\\:pointer-events-none:disabled{pointer-events:none}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}@media (min-width:640px){.lumia-scope .sm\\:mt-0{margin-top:0}.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\\:rounded-lg{border-radius:var(--radius)}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.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\\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/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 .dark\\:hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .dark\\:focus\\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:size-4 svg){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
5602
|
+
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{background-color:hsl(var(--background));color:hsl(var(--foreground))}.lumia-scope,.lumia-scope *,.lumia-scope :after,.lumia-scope :before{box-sizing:border-box;border-width:0;border-style:solid}.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font:inherit;color:inherit;margin:0;background-color:transparent}.lumia-scope button{font:inherit;margin:0;background-color:transparent;border:0}.lumia-scope input[type=search]::-webkit-search-cancel-button,.lumia-scope input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.lumia-scope,.lumia-scope *,.lumia-scope .lumia-heading,.lumia-scope [data-radix-dialog-content],.lumia-scope [data-radix-dialog-content] *,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-heading{font-weight:700}.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 .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .bottom-full{bottom:100%}.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 .left-\\[50\\%\\]{left:50%}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.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-\\[50\\%\\]{top:50%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[2147483646\\]{z-index:2147483646}.lumia-scope .z-\\[2147483647\\]{z-index:2147483647}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .-m-px{margin:-1px}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-1\\.5{margin-bottom:.375rem}.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-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-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-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-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-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-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1,.lumia-scope .-translate-y-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-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.lumia-scope .translate-x-\\[-50\\%\\],.lumia-scope .translate-y-\\[-50\\%\\]{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-\\[-50\\%\\]{--tw-translate-y:-50%}.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{box-shadow:0 0 0 rgba(234,88,12,.5)}50%{box-shadow:0 0 20px rgba(234,88,12,.8)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease-in-out infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope :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-2\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*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-3\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.875rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.875rem*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 .truncate{overflow:hidden;text-overflow:ellipsis}.lumia-scope .truncate,.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:var(--radius)}.lumia-scope .rounded-md{border-radius:calc(var(--radius) - 2px)}.lumia-scope .rounded-sm{border-radius:calc(var(--radius) - 4px)}.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-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-500\\/30{border-color:rgba(245,158,11,.3)}.lumia-scope .border-amber-500\\/40{border-color:rgba(245,158,11,.4)}.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-500\\/30{border-color:rgba(59,130,246,.3)}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-border{border-color:hsl(var(--border))}.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-500\\/40{border-color:rgba(34,197,94,.4)}.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-green-900\\/60{border-color:rgba(20,83,45,.6)}.lumia-scope .border-input{border-color:hsl(var(--input))}.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-500\\/40{border-color:rgba(239,68,68,.4)}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-red-900\\/60{border-color:rgba(127,29,29,.6)}.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-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#2456f0\\]{--tw-bg-opacity:1;background-color:rgb(36 86 240/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#db2777\\]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#fde2f3\\]{--tw-bg-opacity:1;background-color:rgb(253 226 243/var(--tw-bg-opacity,1))}.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-500\\/10{background-color:rgba(245,158,11,.1)}.lumia-scope .bg-amber-500\\/15{background-color:rgba(245,158,11,.15)}.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-background{background-color:hsl(var(--background))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-black\\/50{background-color:rgba(0,0,0,.5)}.lumia-scope .bg-black\\/80{background-color:rgba(0,0,0,.8)}.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-50\\/50{background-color:rgba(239,246,255,.5)}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500\\/10{background-color:rgba(59,130,246,.1)}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-card{background-color:hsl(var(--card))}.lumia-scope .bg-destructive{background-color:hsl(var(--destructive))}.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-800\\/50{background-color:rgba(31,41,55,.5)}.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-500\\/15{background-color:rgba(34,197,94,.15)}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-950\\/50{background-color:rgba(5,46,22,.5)}.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-primary{background-color:hsl(var(--primary))}.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-50\\/50{background-color:rgba(250,245,255,.5)}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500\\/10{background-color:rgba(168,85,247,.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-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-500\\/15{background-color:rgba(239,68,68,.15)}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/50{background-color:rgba(69,10,10,.5)}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-secondary{background-color:hsl(var(--secondary))}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-50\\/50{background-color:rgba(240,249,255,.5)}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500\\/10{background-color:rgba(14,165,233,.1)}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .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-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.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 .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .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-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .italic{font-style:italic}.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 .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-card-foreground{color:hsl(var(--card-foreground))}.lumia-scope .text-destructive{color:hsl(var(--destructive))}.lumia-scope .text-destructive-foreground{color:hsl(var(--destructive-foreground))}.lumia-scope .text-foreground{color:hsl(var(--foreground))}.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-muted-foreground{color:hsl(var(--muted-foreground))}.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-primary{color:hsl(var(--primary))}.lumia-scope .text-primary-foreground{color:hsl(var(--primary-foreground))}.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-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-secondary-foreground{color:hsl(var(--secondary-foreground))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline{outline-style:solid}.lumia-scope .ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope .\\[background\\:var\\(--lumia-bg\\)\\]{background:var(--lumia-bg)}.lumia-scope .\\[border-color\\:var\\(--lumia-border\\)\\]{border-color:var(--lumia-border)}.lumia-scope .\\[color\\:var\\(--lumia-text\\)\\]{color:var(--lumia-text)}.lumia-scope .\\[color\\:var\\(--lumia-text-muted\\)\\]{color:var(--lumia-text-muted)}.lumia-scope .\\[color\\:var\\(--lumia-text-secondary\\)\\]{color:var(--lumia-text-secondary)}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded::file-selector-button{border-radius:.25rem}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-purple-600::file-selector-button{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-white::file-selector-button{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#1e49d8\\]:hover{--tw-bg-opacity:1;background-color:rgb(30 73 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#be185d\\]:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#f7c1df\\]:hover{--tw-bg-opacity:1;background-color:rgb(247 193 223/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-accent:hover{background-color:hsl(var(--accent))}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive)/.9)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-900\\/30:hover{background-color:rgba(20,83,45,.3)}.lumia-scope .hover\\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-primary\\/80:hover{background-color:hsl(var(--primary)/.8)}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary)/.8)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:from-purple-600:hover{--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 .hover\\:from-purple-700:hover{--tw-gradient-from:#7e22ce var(--tw-gradient-from-position);--tw-gradient-to:rgba(126,34,206,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .hover\\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.lumia-scope .hover\\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:no-underline:hover{text-decoration-line:none}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:bg-purple-700::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.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-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.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-2: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-blue-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus-visible\\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .disabled\\:pointer-events-none:disabled{pointer-events:none}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}@media (min-width:640px){.lumia-scope .sm\\:mt-0{margin-top:0}.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\\:rounded-lg{border-radius:var(--radius)}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.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\\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/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 .dark\\:hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .dark\\:focus\\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:size-4 svg){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
5624
5603
|
|
|
5625
5604
|
// src/index.ts
|
|
5626
5605
|
init_LumiaPassportContext();
|
|
@@ -6015,7 +5994,7 @@ var WalletConnectHandler = ({
|
|
|
6015
5994
|
};
|
|
6016
5995
|
|
|
6017
5996
|
// src/internal/components/ManageWallet.tsx
|
|
6018
|
-
import { Fragment as Fragment4, jsx as
|
|
5997
|
+
import { Fragment as Fragment4, jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
6019
5998
|
var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
6020
5999
|
const [providers, setProviders] = useState7([]);
|
|
6021
6000
|
const [loading, setLoading] = useState7(false);
|
|
@@ -6162,8 +6141,8 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6162
6141
|
setLinkIsLoading(false);
|
|
6163
6142
|
}
|
|
6164
6143
|
};
|
|
6165
|
-
return /* @__PURE__ */
|
|
6166
|
-
config.wallet?.enabled && /* @__PURE__ */
|
|
6144
|
+
return /* @__PURE__ */ jsxs12(Fragment4, { children: [
|
|
6145
|
+
config.wallet?.enabled && /* @__PURE__ */ jsx20(
|
|
6167
6146
|
WalletConnectHandler,
|
|
6168
6147
|
{
|
|
6169
6148
|
isLinking: isWalletLinking,
|
|
@@ -6196,79 +6175,79 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6196
6175
|
onLoadingChange: setLinkIsLoading
|
|
6197
6176
|
}
|
|
6198
6177
|
),
|
|
6199
|
-
/* @__PURE__ */
|
|
6178
|
+
/* @__PURE__ */ jsxs12(Dialog, { open, onOpenChange: (newOpen) => {
|
|
6200
6179
|
onOpenChange(newOpen);
|
|
6201
6180
|
if (!newOpen) {
|
|
6202
6181
|
setIsWalletLinking(false);
|
|
6203
6182
|
}
|
|
6204
6183
|
}, children: [
|
|
6205
|
-
/* @__PURE__ */
|
|
6206
|
-
/* @__PURE__ */
|
|
6207
|
-
onBack && /* @__PURE__ */
|
|
6184
|
+
/* @__PURE__ */ jsx20(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ jsxs12("div", { className: "p-5", children: [
|
|
6185
|
+
/* @__PURE__ */ jsx20("div", { className: "flex items-center justify-between mb-3", children: /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
|
|
6186
|
+
onBack && /* @__PURE__ */ jsx20(
|
|
6208
6187
|
"button",
|
|
6209
6188
|
{
|
|
6210
6189
|
onClick: onBack,
|
|
6211
6190
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6212
6191
|
title: "Back",
|
|
6213
|
-
children: /* @__PURE__ */
|
|
6192
|
+
children: /* @__PURE__ */ jsx20(ArrowLeft3, { className: "h-4 w-4" })
|
|
6214
6193
|
}
|
|
6215
6194
|
),
|
|
6216
|
-
/* @__PURE__ */
|
|
6217
|
-
/* @__PURE__ */
|
|
6218
|
-
/* @__PURE__ */
|
|
6195
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
6196
|
+
/* @__PURE__ */ jsx20(VisuallyHidden, { children: /* @__PURE__ */ jsx20(DialogTitle, { children: "Manage Wallet Authentication" }) }),
|
|
6197
|
+
/* @__PURE__ */ jsx20("h2", { className: `text-xl font-semibold ${theme.titleText}`, children: "Manage Wallet Authentication" })
|
|
6219
6198
|
] })
|
|
6220
6199
|
] }) }),
|
|
6221
|
-
/* @__PURE__ */
|
|
6222
|
-
error && /* @__PURE__ */
|
|
6223
|
-
/* @__PURE__ */
|
|
6224
|
-
/* @__PURE__ */
|
|
6200
|
+
/* @__PURE__ */ jsx20(DialogDescription, { className: `mb-4 ${theme.bodyText}`, children: "Manage your connected authentication methods" }),
|
|
6201
|
+
error && /* @__PURE__ */ jsxs12("div", { className: `mt-4 p-3 rounded text-sm flex items-start gap-2 break-words whitespace-pre-wrap max-h-24 overflow-auto ${isDark ? "bg-red-900/30 border border-red-900 text-red-400" : "bg-red-50 border border-red-200 text-red-700"}`, children: [
|
|
6202
|
+
/* @__PURE__ */ jsx20(AlertTriangle2, { className: "w-4 h-4 mt-0.5 shrink-0" }),
|
|
6203
|
+
/* @__PURE__ */ jsx20("span", { className: "block", children: error })
|
|
6225
6204
|
] }),
|
|
6226
|
-
loading ? /* @__PURE__ */
|
|
6227
|
-
/* @__PURE__ */
|
|
6205
|
+
loading ? /* @__PURE__ */ jsxs12("div", { className: `flex items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
6206
|
+
/* @__PURE__ */ jsx20(RefreshCw, { className: "w-5 h-5 mr-2 animate-spin" }),
|
|
6228
6207
|
"Loading authentication providers\u2026"
|
|
6229
|
-
] }) : /* @__PURE__ */
|
|
6208
|
+
] }) : /* @__PURE__ */ jsx20("div", { className: "mt-3 space-y-3", children: providers.map((p) => {
|
|
6230
6209
|
const info = getProviderDisplayInfo(p.provider);
|
|
6231
6210
|
const allowUnlink = canUnlink(p);
|
|
6232
|
-
return /* @__PURE__ */
|
|
6233
|
-
/* @__PURE__ */
|
|
6234
|
-
/* @__PURE__ */
|
|
6235
|
-
/* @__PURE__ */
|
|
6236
|
-
/* @__PURE__ */
|
|
6211
|
+
return /* @__PURE__ */ jsxs12("div", { className: `border rounded-xl p-3 ${isDark ? "border-gray-700 bg-gray-800" : "border-gray-200 bg-white"}`, children: [
|
|
6212
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center justify-between", children: [
|
|
6213
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3", children: [
|
|
6214
|
+
/* @__PURE__ */ jsx20("div", { className: `text-lg ${isDark ? "text-gray-400" : "text-gray-600"}`, children: info.icon }),
|
|
6215
|
+
/* @__PURE__ */ jsx20("div", { className: `text-sm font-medium ${theme.titleText}`, children: info.name })
|
|
6237
6216
|
] }),
|
|
6238
|
-
/* @__PURE__ */
|
|
6239
|
-
p.verified ? /* @__PURE__ */
|
|
6240
|
-
allowUnlink && /* @__PURE__ */
|
|
6217
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
|
|
6218
|
+
p.verified ? /* @__PURE__ */ jsx20(CheckCircle, { className: `w-4 h-4 ${isDark ? "text-green-400" : "text-green-500"}` }) : /* @__PURE__ */ jsx20(Clock, { className: "w-4 h-4 text-yellow-500" }),
|
|
6219
|
+
allowUnlink && /* @__PURE__ */ jsx20(
|
|
6241
6220
|
"button",
|
|
6242
6221
|
{
|
|
6243
6222
|
onClick: () => setConfirmUnlink({ provider: p.provider, providerName: info.name, externalId: p.externalId }),
|
|
6244
6223
|
className: `p-1 ${isDark ? "text-red-400 hover:text-red-300" : "text-red-500 hover:text-red-700"}`,
|
|
6245
6224
|
title: "Remove provider",
|
|
6246
|
-
children: unlinking === p.provider ? /* @__PURE__ */
|
|
6225
|
+
children: unlinking === p.provider ? /* @__PURE__ */ jsx20(RefreshCw, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx20(Trash2, { className: "w-4 h-4" })
|
|
6247
6226
|
}
|
|
6248
6227
|
)
|
|
6249
6228
|
] })
|
|
6250
6229
|
] }),
|
|
6251
|
-
/* @__PURE__ */
|
|
6252
|
-
/* @__PURE__ */
|
|
6253
|
-
/* @__PURE__ */
|
|
6230
|
+
/* @__PURE__ */ jsxs12("div", { className: `mt-2 space-y-1 text-xs ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6231
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-1", children: [
|
|
6232
|
+
/* @__PURE__ */ jsx20(LinkIcon, { className: `w-3 h-3 ${isDark ? "text-gray-500" : "text-gray-400"}` }),
|
|
6254
6233
|
"Linked: ",
|
|
6255
6234
|
formatDate(p.linkedAt)
|
|
6256
6235
|
] }),
|
|
6257
|
-
p.lastUsedAt && /* @__PURE__ */
|
|
6258
|
-
/* @__PURE__ */
|
|
6236
|
+
p.lastUsedAt && /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-1", children: [
|
|
6237
|
+
/* @__PURE__ */ jsx20(Clock, { className: `w-3 h-3 ${isDark ? "text-gray-500" : "text-gray-400"}` }),
|
|
6259
6238
|
"Last used: ",
|
|
6260
6239
|
formatDate(p.lastUsedAt)
|
|
6261
6240
|
] }),
|
|
6262
|
-
p.externalId && /* @__PURE__ */
|
|
6241
|
+
p.externalId && /* @__PURE__ */ jsxs12("div", { className: `text-[10px] font-mono break-all ${isDark ? "text-gray-500" : "text-gray-500"}`, children: [
|
|
6263
6242
|
"ID: ",
|
|
6264
6243
|
p.externalId
|
|
6265
6244
|
] })
|
|
6266
6245
|
] })
|
|
6267
6246
|
] }, `${p.provider}-${p.externalId}`);
|
|
6268
6247
|
}) }),
|
|
6269
|
-
/* @__PURE__ */
|
|
6248
|
+
/* @__PURE__ */ jsx20("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ jsx20(Button, { variant: "success", onClick: () => setShowAdd(true), children: "+ Add Provider" }) })
|
|
6270
6249
|
] }) }),
|
|
6271
|
-
/* @__PURE__ */
|
|
6250
|
+
/* @__PURE__ */ jsx20(Dialog, { open: showAdd, onOpenChange: (v) => {
|
|
6272
6251
|
setShowAdd(v);
|
|
6273
6252
|
if (!v) {
|
|
6274
6253
|
setProviderType(null);
|
|
@@ -6276,9 +6255,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6276
6255
|
setEmailCode("");
|
|
6277
6256
|
setEmailCodeSent(false);
|
|
6278
6257
|
}
|
|
6279
|
-
}, children: /* @__PURE__ */
|
|
6280
|
-
/* @__PURE__ */
|
|
6281
|
-
/* @__PURE__ */
|
|
6258
|
+
}, children: /* @__PURE__ */ jsx20(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ jsxs12("div", { className: "p-5", children: [
|
|
6259
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
6260
|
+
/* @__PURE__ */ jsx20(
|
|
6282
6261
|
"button",
|
|
6283
6262
|
{
|
|
6284
6263
|
onClick: () => {
|
|
@@ -6294,27 +6273,27 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6294
6273
|
},
|
|
6295
6274
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6296
6275
|
title: "Back",
|
|
6297
|
-
children: /* @__PURE__ */
|
|
6276
|
+
children: /* @__PURE__ */ jsx20(ArrowLeft3, { className: "h-4 w-4" })
|
|
6298
6277
|
}
|
|
6299
6278
|
),
|
|
6300
|
-
/* @__PURE__ */
|
|
6279
|
+
/* @__PURE__ */ jsx20(DialogTitle, { className: `text-xl font-semibold ${theme.titleText}`, children: "Add Authentication Method" })
|
|
6301
6280
|
] }),
|
|
6302
|
-
/* @__PURE__ */
|
|
6303
|
-
!providerType ? /* @__PURE__ */
|
|
6304
|
-
config.passkey.enabled && /* @__PURE__ */
|
|
6305
|
-
/* @__PURE__ */
|
|
6281
|
+
/* @__PURE__ */ jsx20(DialogDescription, { className: `${theme.bodyText} mb-4`, children: "Add a new way to authenticate to your account" }),
|
|
6282
|
+
!providerType ? /* @__PURE__ */ jsxs12("div", { className: "mt-3 space-y-4", children: [
|
|
6283
|
+
config.passkey.enabled && /* @__PURE__ */ jsxs12(Button, { onClick: () => setProviderType("passkey"), className: "w-full", size: "lg", children: [
|
|
6284
|
+
/* @__PURE__ */ jsx20(Key2, { className: "w-4 h-4 mr-2" }),
|
|
6306
6285
|
"Link with Passkey"
|
|
6307
6286
|
] }),
|
|
6308
|
-
config.passkey.enabled && (config.email.enabled || config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */
|
|
6309
|
-
config.email.enabled && /* @__PURE__ */
|
|
6310
|
-
/* @__PURE__ */
|
|
6311
|
-
/* @__PURE__ */
|
|
6287
|
+
config.passkey.enabled && (config.email.enabled || config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ jsx20("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6288
|
+
config.email.enabled && /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
|
|
6289
|
+
/* @__PURE__ */ jsx20(Input, { type: "email", placeholder: config.email.placeholder || "Enter your email", value: email, onChange: (e) => setEmail(e.target.value), className: `h-11 ${isDark ? "bg-gray-800 border-gray-600 text-gray-100 placeholder:text-gray-500" : ""}` }),
|
|
6290
|
+
/* @__PURE__ */ jsx20(Button, { onClick: () => {
|
|
6312
6291
|
setProviderType("email");
|
|
6313
6292
|
handleSendCode();
|
|
6314
6293
|
}, disabled: !email, className: "w-full", size: "lg", variant: "secondary", children: "Continue" })
|
|
6315
6294
|
] }),
|
|
6316
|
-
(config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */
|
|
6317
|
-
config.wallet?.enabled && /* @__PURE__ */
|
|
6295
|
+
(config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ jsx20("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6296
|
+
config.wallet?.enabled && /* @__PURE__ */ jsxs12(
|
|
6318
6297
|
Button,
|
|
6319
6298
|
{
|
|
6320
6299
|
onClick: () => {
|
|
@@ -6330,24 +6309,24 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6330
6309
|
size: "lg",
|
|
6331
6310
|
variant: "outline",
|
|
6332
6311
|
children: [
|
|
6333
|
-
/* @__PURE__ */
|
|
6312
|
+
/* @__PURE__ */ jsx20(Wallet, { className: "w-4 h-4 mr-2" }),
|
|
6334
6313
|
"Connect External Wallet"
|
|
6335
6314
|
]
|
|
6336
6315
|
}
|
|
6337
6316
|
),
|
|
6338
|
-
config.wallet?.enabled && config.social.enabled && config.social.providers.some((p) => p.enabled) && /* @__PURE__ */
|
|
6339
|
-
config.social.enabled && /* @__PURE__ */
|
|
6317
|
+
config.wallet?.enabled && config.social.enabled && config.social.providers.some((p) => p.enabled) && /* @__PURE__ */ jsx20("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6318
|
+
config.social.enabled && /* @__PURE__ */ jsx20("div", { className: `grid grid-cols-${config.social.gridColumns} gap-2`, children: config.social.providers.filter((p) => p.enabled).map((sp) => {
|
|
6340
6319
|
const map = { google: GoogleIcon, telegram: TelegramIcon, twitter: TwitterIcon, x: TwitterIcon, discord: DiscordIcon };
|
|
6341
6320
|
const F = sp.icon || map[sp.id.toLowerCase()];
|
|
6342
|
-
return /* @__PURE__ */
|
|
6321
|
+
return /* @__PURE__ */ jsx20(Button, { variant: "outline", onClick: () => setProviderType(sp.id), className: `p-0 flex items-center justify-center [&_svg]:!w-5 [&_svg]:!h-5 ${isDark ? "bg-gray-800 border-gray-600 hover:bg-gray-700" : "bg-white border-gray-200 hover:bg-gray-50"}`, size: "lg", children: F ? /* @__PURE__ */ jsx20(F, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx20("span", { className: "text-sm", children: sp.name }) }, sp.id);
|
|
6343
6322
|
}) })
|
|
6344
|
-
] }) : /* @__PURE__ */
|
|
6345
|
-
providerType === "email" && emailCodeSent && /* @__PURE__ */
|
|
6346
|
-
/* @__PURE__ */
|
|
6323
|
+
] }) : /* @__PURE__ */ jsxs12("div", { className: "mt-3 space-y-3", children: [
|
|
6324
|
+
providerType === "email" && emailCodeSent && /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
|
|
6325
|
+
/* @__PURE__ */ jsxs12("div", { className: `p-3 rounded text-sm ${isDark ? "bg-green-900/30 border border-green-900 text-green-400" : "bg-green-50 border border-green-200 text-green-700"}`, children: [
|
|
6347
6326
|
"Verification code sent to ",
|
|
6348
6327
|
email
|
|
6349
6328
|
] }),
|
|
6350
|
-
/* @__PURE__ */
|
|
6329
|
+
/* @__PURE__ */ jsx20(
|
|
6351
6330
|
VerificationCodeInput,
|
|
6352
6331
|
{
|
|
6353
6332
|
onVerifyCode: handleVerifyCode,
|
|
@@ -6358,9 +6337,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6358
6337
|
}
|
|
6359
6338
|
)
|
|
6360
6339
|
] }),
|
|
6361
|
-
providerType === "passkey" && /* @__PURE__ */
|
|
6362
|
-
/* @__PURE__ */
|
|
6363
|
-
/* @__PURE__ */
|
|
6340
|
+
providerType === "passkey" && /* @__PURE__ */ jsxs12("div", { className: "space-y-3", children: [
|
|
6341
|
+
/* @__PURE__ */ jsx20("div", { className: `p-3 rounded-xl text-sm ${isDark ? "bg-blue-900/30 border border-blue-900 text-blue-400" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: "Link a passkey to your account using WebAuthn. Your device may let you choose an existing passkey; otherwise a new one will be created." }),
|
|
6342
|
+
/* @__PURE__ */ jsxs12(
|
|
6364
6343
|
Button,
|
|
6365
6344
|
{
|
|
6366
6345
|
onClick: async () => {
|
|
@@ -6390,12 +6369,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6390
6369
|
size: "lg",
|
|
6391
6370
|
disabled: linkIsLoading,
|
|
6392
6371
|
children: [
|
|
6393
|
-
/* @__PURE__ */
|
|
6372
|
+
/* @__PURE__ */ jsx20(Key2, { className: "w-4 h-4 mr-2" }),
|
|
6394
6373
|
linkIsLoading ? "Linking\u2026" : "Create on This Device"
|
|
6395
6374
|
]
|
|
6396
6375
|
}
|
|
6397
6376
|
),
|
|
6398
|
-
/* @__PURE__ */
|
|
6377
|
+
/* @__PURE__ */ jsx20(
|
|
6399
6378
|
Button,
|
|
6400
6379
|
{
|
|
6401
6380
|
onClick: async () => {
|
|
@@ -6428,13 +6407,13 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6428
6407
|
children: "Create on Security Key"
|
|
6429
6408
|
}
|
|
6430
6409
|
),
|
|
6431
|
-
linkError && /* @__PURE__ */
|
|
6410
|
+
linkError && /* @__PURE__ */ jsx20("div", { className: `p-3 rounded text-sm break-words whitespace-pre-wrap ${isDark ? "bg-red-900/30 border border-red-900 text-red-400" : "bg-red-50 border border-red-200 text-red-700"}`, children: linkError })
|
|
6432
6411
|
] }),
|
|
6433
|
-
providerType === "telegram" && /* @__PURE__ */
|
|
6434
|
-
/* @__PURE__ */
|
|
6435
|
-
/* @__PURE__ */
|
|
6412
|
+
providerType === "telegram" && /* @__PURE__ */ jsxs12("div", { className: "space-y-3", children: [
|
|
6413
|
+
/* @__PURE__ */ jsx20("div", { className: `p-3 rounded-xl text-sm ${isDark ? "bg-blue-900/30 border border-blue-900 text-blue-400" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: config.social?.providers?.find((p) => (p.id || "").toLowerCase() === "telegram")?.meta?.botUsername ? "Authenticate with Telegram to link your account." : "Telegram bot username is not configured." }),
|
|
6414
|
+
/* @__PURE__ */ jsx20("div", { ref: telegramContainerRef, className: "flex justify-center" })
|
|
6436
6415
|
] }),
|
|
6437
|
-
providerType && providerType !== "email" && providerType !== "passkey" && providerType !== "telegram" && providerType !== "wallet" && /* @__PURE__ */
|
|
6416
|
+
providerType && providerType !== "email" && providerType !== "passkey" && providerType !== "telegram" && providerType !== "wallet" && /* @__PURE__ */ jsxs12("div", { className: `p-3 rounded-xl text-sm ${isDark ? "bg-blue-900/30 border border-blue-900 text-blue-400" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: [
|
|
6438
6417
|
"Linking with ",
|
|
6439
6418
|
providerType.charAt(0).toUpperCase() + providerType.slice(1),
|
|
6440
6419
|
" requires OAuth implementation. This would typically redirect to ",
|
|
@@ -6443,23 +6422,23 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6443
6422
|
] })
|
|
6444
6423
|
] })
|
|
6445
6424
|
] }) }) }),
|
|
6446
|
-
/* @__PURE__ */
|
|
6425
|
+
/* @__PURE__ */ jsx20(Dialog, { open: !!confirmUnlink, onOpenChange: (v) => {
|
|
6447
6426
|
if (!v) {
|
|
6448
6427
|
setConfirmUnlink(null);
|
|
6449
6428
|
setConfirmInput("");
|
|
6450
6429
|
}
|
|
6451
|
-
}, children: /* @__PURE__ */
|
|
6452
|
-
/* @__PURE__ */
|
|
6453
|
-
/* @__PURE__ */
|
|
6430
|
+
}, children: /* @__PURE__ */ jsx20(DialogContent, { className: `lumia-scope max-w-[380px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ jsxs12("div", { className: "p-5", children: [
|
|
6431
|
+
/* @__PURE__ */ jsx20(DialogTitle, { className: `text-lg font-semibold ${theme.titleText}`, children: "Remove Authentication Method" }),
|
|
6432
|
+
/* @__PURE__ */ jsxs12(DialogDescription, { className: `${theme.bodyText} mt-2`, children: [
|
|
6454
6433
|
"This will permanently unlink ",
|
|
6455
6434
|
confirmUnlink?.providerName,
|
|
6456
6435
|
" from your account. You may lose access if this is your only verified method."
|
|
6457
6436
|
] }),
|
|
6458
|
-
/* @__PURE__ */
|
|
6459
|
-
confirmUnlink && /* @__PURE__ */
|
|
6460
|
-
/* @__PURE__ */
|
|
6461
|
-
/* @__PURE__ */
|
|
6462
|
-
/* @__PURE__ */
|
|
6437
|
+
/* @__PURE__ */ jsx20("div", { className: `mt-3 p-3 rounded text-sm ${isDark ? "bg-red-900/30 border border-red-900 text-red-400" : "bg-red-50 border border-red-200 text-red-700"}`, children: "This action cannot be undone." }),
|
|
6438
|
+
confirmUnlink && /* @__PURE__ */ jsxs12("div", { className: "mt-3", children: [
|
|
6439
|
+
/* @__PURE__ */ jsx20("div", { className: `text-xs mb-1 ${theme.mutedText}`, children: "Type the provider ID to confirm removal:" }),
|
|
6440
|
+
/* @__PURE__ */ jsx20("div", { className: `text-[10px] font-mono mb-2 break-all ${isDark ? "text-gray-400" : "text-gray-600"}`, children: confirmUnlink.externalId }),
|
|
6441
|
+
/* @__PURE__ */ jsx20(
|
|
6463
6442
|
Input,
|
|
6464
6443
|
{
|
|
6465
6444
|
value: confirmInput,
|
|
@@ -6469,12 +6448,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6469
6448
|
}
|
|
6470
6449
|
)
|
|
6471
6450
|
] }),
|
|
6472
|
-
/* @__PURE__ */
|
|
6473
|
-
/* @__PURE__ */
|
|
6451
|
+
/* @__PURE__ */ jsxs12("div", { className: "mt-4 flex justify-end gap-2", children: [
|
|
6452
|
+
/* @__PURE__ */ jsx20(Button, { className: `${theme.outlineBtn}`, variant: "outline", onClick: () => {
|
|
6474
6453
|
setConfirmUnlink(null);
|
|
6475
6454
|
setConfirmInput("");
|
|
6476
6455
|
}, disabled: !!unlinking, children: "Cancel" }),
|
|
6477
|
-
/* @__PURE__ */
|
|
6456
|
+
/* @__PURE__ */ jsx20(
|
|
6478
6457
|
Button,
|
|
6479
6458
|
{
|
|
6480
6459
|
onClick: () => confirmUnlink && handleUnlink(confirmUnlink.provider, confirmUnlink.externalId),
|
|
@@ -6499,7 +6478,7 @@ init_vaultClient();
|
|
|
6499
6478
|
init_LumiaPassportContext();
|
|
6500
6479
|
init_useTheme();
|
|
6501
6480
|
import { Cloud, Laptop, Shield as Shield2, AlertTriangle as AlertTriangle3, CheckCircle2 as CheckCircle22, Server as Server2, HardDrive, RefreshCw as RefreshCw2, Key as Key3, ArrowLeft as ArrowLeft4, Trash2 as Trash22 } from "lucide-react";
|
|
6502
|
-
import { jsx as
|
|
6481
|
+
import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
6503
6482
|
var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
6504
6483
|
const userId = jwtTokenManager2.getUserId();
|
|
6505
6484
|
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
@@ -6578,179 +6557,179 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6578
6557
|
console.error("[SecurityModal] Error removing trusted app:", error);
|
|
6579
6558
|
}
|
|
6580
6559
|
};
|
|
6581
|
-
return /* @__PURE__ */
|
|
6582
|
-
/* @__PURE__ */
|
|
6583
|
-
/* @__PURE__ */
|
|
6584
|
-
/* @__PURE__ */
|
|
6585
|
-
/* @__PURE__ */
|
|
6586
|
-
/* @__PURE__ */
|
|
6587
|
-
onBack && /* @__PURE__ */
|
|
6560
|
+
return /* @__PURE__ */ jsxs13(Dialog, { open, onOpenChange, children: [
|
|
6561
|
+
/* @__PURE__ */ jsxs13(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
6562
|
+
/* @__PURE__ */ jsx21(VisuallyHidden, { children: /* @__PURE__ */ jsx21(DialogTitle, { children: "Security" }) }),
|
|
6563
|
+
/* @__PURE__ */ jsx21(DialogDescription, { className: "sr-only", children: "Keyshare and vault status" }),
|
|
6564
|
+
/* @__PURE__ */ jsxs13("div", { className: "p-5 space-y-4", children: [
|
|
6565
|
+
/* @__PURE__ */ jsx21("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
|
|
6566
|
+
onBack && /* @__PURE__ */ jsx21(
|
|
6588
6567
|
"button",
|
|
6589
6568
|
{
|
|
6590
6569
|
onClick: onBack,
|
|
6591
|
-
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6570
|
+
className: `p-1 mr-1 bg-transparent border-0 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6592
6571
|
title: "Back",
|
|
6593
|
-
children: /* @__PURE__ */
|
|
6572
|
+
children: /* @__PURE__ */ jsx21(ArrowLeft4, { className: "h-4 w-4" })
|
|
6594
6573
|
}
|
|
6595
6574
|
),
|
|
6596
|
-
/* @__PURE__ */
|
|
6597
|
-
/* @__PURE__ */
|
|
6598
|
-
/* @__PURE__ */
|
|
6599
|
-
/* @__PURE__ */
|
|
6575
|
+
/* @__PURE__ */ jsxs13("div", { className: `flex items-center gap-2 ${theme.text} font-semibold`, children: [
|
|
6576
|
+
/* @__PURE__ */ jsx21(Key3, { className: "h-4 w-4" }),
|
|
6577
|
+
/* @__PURE__ */ jsx21("span", { children: "Keyshare Status" }),
|
|
6578
|
+
/* @__PURE__ */ jsx21("button", { onClick: fetchRecovery, className: `p-1 bg-transparent border-0 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`, title: "Refresh", children: /* @__PURE__ */ jsx21(RefreshCw2, { className: `h-4 w-4 ${isRefreshing ? "animate-spin" : ""}` }) })
|
|
6600
6579
|
] })
|
|
6601
6580
|
] }) }),
|
|
6602
|
-
/* @__PURE__ */
|
|
6603
|
-
/* @__PURE__ */
|
|
6604
|
-
/* @__PURE__ */
|
|
6605
|
-
/* @__PURE__ */
|
|
6606
|
-
/* @__PURE__ */
|
|
6581
|
+
/* @__PURE__ */ jsxs13("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
6582
|
+
/* @__PURE__ */ jsxs13("div", { className: "space-y-2 text-center", children: [
|
|
6583
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6584
|
+
/* @__PURE__ */ jsx21(Cloud, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6585
|
+
/* @__PURE__ */ jsx21("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Server" })
|
|
6607
6586
|
] }),
|
|
6608
|
-
/* @__PURE__ */
|
|
6609
|
-
serverHasKeyshare ? /* @__PURE__ */
|
|
6587
|
+
/* @__PURE__ */ jsxs13("span", { className: `inline-flex items-center text-sm px-3 py-2 rounded-full ${serverHasKeyshare ? isDark ? "bg-gray-800 text-green-400" : "bg-green-50 text-green-700" : isDark ? "bg-gray-800 text-orange-400" : "bg-orange-50 text-orange-700"}`, children: [
|
|
6588
|
+
serverHasKeyshare ? /* @__PURE__ */ jsx21(CheckCircle22, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx21(AlertTriangle3, { className: "h-4 w-4 mr-1" }),
|
|
6610
6589
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
6611
6590
|
] })
|
|
6612
6591
|
] }),
|
|
6613
|
-
/* @__PURE__ */
|
|
6614
|
-
/* @__PURE__ */
|
|
6615
|
-
/* @__PURE__ */
|
|
6616
|
-
/* @__PURE__ */
|
|
6592
|
+
/* @__PURE__ */ jsxs13("div", { className: "space-y-2 text-center", children: [
|
|
6593
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6594
|
+
/* @__PURE__ */ jsx21(Laptop, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6595
|
+
/* @__PURE__ */ jsx21("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Local" })
|
|
6617
6596
|
] }),
|
|
6618
|
-
/* @__PURE__ */
|
|
6619
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */
|
|
6597
|
+
/* @__PURE__ */ jsxs13("span", { className: `inline-flex items-center text-sm px-3 py-2 rounded-full ${localInfo?.hasKeyshare ? isDark ? "bg-gray-800 text-green-400" : "bg-green-50 text-green-700" : isDark ? "bg-gray-800 text-orange-400" : "bg-orange-50 text-orange-700"}`, children: [
|
|
6598
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ jsx21(CheckCircle22, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx21(AlertTriangle3, { className: "h-4 w-4 mr-1" }),
|
|
6620
6599
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
6621
6600
|
] })
|
|
6622
6601
|
] }),
|
|
6623
|
-
/* @__PURE__ */
|
|
6624
|
-
/* @__PURE__ */
|
|
6625
|
-
/* @__PURE__ */
|
|
6626
|
-
/* @__PURE__ */
|
|
6602
|
+
/* @__PURE__ */ jsxs13("div", { className: "space-y-2 text-center", children: [
|
|
6603
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6604
|
+
/* @__PURE__ */ jsx21(Shield2, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6605
|
+
/* @__PURE__ */ jsx21("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Vault" })
|
|
6627
6606
|
] }),
|
|
6628
|
-
/* @__PURE__ */
|
|
6629
|
-
hasServerBackup ? /* @__PURE__ */
|
|
6607
|
+
/* @__PURE__ */ jsxs13("span", { className: `inline-flex items-center text-sm px-3 py-2 rounded-full ${hasServerBackup ? isDark ? "bg-gray-800 text-green-400" : "bg-green-50 text-green-700" : isDark ? "bg-gray-800 text-orange-400" : "bg-orange-50 text-orange-700"}`, children: [
|
|
6608
|
+
hasServerBackup ? /* @__PURE__ */ jsx21(CheckCircle22, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx21(AlertTriangle3, { className: "h-4 w-4 mr-1" }),
|
|
6630
6609
|
hasServerBackup ? "Ready" : "None"
|
|
6631
6610
|
] })
|
|
6632
6611
|
] })
|
|
6633
6612
|
] }),
|
|
6634
|
-
localInfo?.hasKeyshare && /* @__PURE__ */
|
|
6635
|
-
localInfo.ownerAddress && /* @__PURE__ */
|
|
6613
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ jsxs13("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6614
|
+
localInfo.ownerAddress && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6636
6615
|
"Owner: ",
|
|
6637
|
-
/* @__PURE__ */
|
|
6616
|
+
/* @__PURE__ */ jsx21("span", { className: `font-mono break-all ${isDark ? "text-gray-200" : "text-gray-800"}`, children: localInfo.ownerAddress })
|
|
6638
6617
|
] }),
|
|
6639
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */
|
|
6618
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6640
6619
|
"Size: ",
|
|
6641
|
-
/* @__PURE__ */
|
|
6620
|
+
/* @__PURE__ */ jsxs13("span", { className: `font-mono ${isDark ? "text-gray-200" : "text-gray-800"}`, children: [
|
|
6642
6621
|
Math.round((localInfo.keyshareSize || 0) / 1024),
|
|
6643
6622
|
"KB"
|
|
6644
6623
|
] })
|
|
6645
6624
|
] }),
|
|
6646
|
-
localInfo.sessionId && /* @__PURE__ */
|
|
6625
|
+
localInfo.sessionId && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6647
6626
|
"Session: ",
|
|
6648
|
-
/* @__PURE__ */
|
|
6627
|
+
/* @__PURE__ */ jsx21("span", { className: `font-mono break-all ${isDark ? "text-gray-200" : "text-gray-800"}`, children: localInfo.sessionId })
|
|
6649
6628
|
] })
|
|
6650
6629
|
] }),
|
|
6651
|
-
/* @__PURE__ */
|
|
6652
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */
|
|
6653
|
-
/* @__PURE__ */
|
|
6654
|
-
/* @__PURE__ */
|
|
6630
|
+
/* @__PURE__ */ jsxs13("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-500"}`, children: [
|
|
6631
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6632
|
+
/* @__PURE__ */ jsx21(Server2, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6633
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6655
6634
|
"Server: ",
|
|
6656
6635
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
6657
6636
|
] })
|
|
6658
6637
|
] }),
|
|
6659
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */
|
|
6660
|
-
/* @__PURE__ */
|
|
6661
|
-
/* @__PURE__ */
|
|
6638
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6639
|
+
/* @__PURE__ */ jsx21(Server2, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6640
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6662
6641
|
"Server: ",
|
|
6663
6642
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
6664
6643
|
] })
|
|
6665
6644
|
] }),
|
|
6666
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */
|
|
6667
|
-
/* @__PURE__ */
|
|
6668
|
-
/* @__PURE__ */
|
|
6645
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6646
|
+
/* @__PURE__ */ jsx21(Cloud, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6647
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6669
6648
|
"Cloud: ",
|
|
6670
6649
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
6671
6650
|
] })
|
|
6672
6651
|
] }),
|
|
6673
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */
|
|
6674
|
-
/* @__PURE__ */
|
|
6675
|
-
/* @__PURE__ */
|
|
6652
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6653
|
+
/* @__PURE__ */ jsx21(HardDrive, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6654
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6676
6655
|
"Local: ",
|
|
6677
6656
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
6678
6657
|
] })
|
|
6679
6658
|
] })
|
|
6680
6659
|
] }),
|
|
6681
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */
|
|
6682
|
-
/* @__PURE__ */
|
|
6683
|
-
recoveryCreatedAt && /* @__PURE__ */
|
|
6660
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ jsxs13("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6661
|
+
/* @__PURE__ */ jsx21("div", { className: `font-medium text-[11px] ${isDark ? "text-indigo-400" : "text-indigo-600"}`, children: "Device Information:" }),
|
|
6662
|
+
recoveryCreatedAt && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6684
6663
|
"Created: ",
|
|
6685
6664
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
6686
6665
|
" "
|
|
6687
6666
|
] }),
|
|
6688
|
-
recoveryCountry && /* @__PURE__ */
|
|
6667
|
+
recoveryCountry && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6689
6668
|
"Country: ",
|
|
6690
6669
|
recoveryCountry
|
|
6691
6670
|
] }),
|
|
6692
|
-
recoveryBrowser && /* @__PURE__ */
|
|
6671
|
+
recoveryBrowser && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6693
6672
|
"Browser: ",
|
|
6694
6673
|
recoveryBrowser
|
|
6695
6674
|
] }),
|
|
6696
|
-
parseOS(recoveryUa) && /* @__PURE__ */
|
|
6675
|
+
parseOS(recoveryUa) && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6697
6676
|
"OS: ",
|
|
6698
6677
|
parseOS(recoveryUa)
|
|
6699
6678
|
] }),
|
|
6700
|
-
recoveryDeviceName && /* @__PURE__ */
|
|
6679
|
+
recoveryDeviceName && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6701
6680
|
"Device: ",
|
|
6702
6681
|
recoveryDeviceName
|
|
6703
6682
|
] }),
|
|
6704
|
-
recoveryDeviceId && /* @__PURE__ */
|
|
6683
|
+
recoveryDeviceId && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6705
6684
|
"Device ID: ",
|
|
6706
|
-
/* @__PURE__ */
|
|
6685
|
+
/* @__PURE__ */ jsx21("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
6707
6686
|
] })
|
|
6708
6687
|
] }),
|
|
6709
|
-
trustedApps.length > 0 && /* @__PURE__ */
|
|
6710
|
-
/* @__PURE__ */
|
|
6688
|
+
trustedApps.length > 0 && /* @__PURE__ */ jsxs13("div", { className: `space-y-2 ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6689
|
+
/* @__PURE__ */ jsxs13("div", { className: `font-medium text-[11px] ${isDark ? "text-green-400" : "text-green-600"}`, children: [
|
|
6711
6690
|
"Trusted Applications (",
|
|
6712
6691
|
trustedApps.length,
|
|
6713
6692
|
"):"
|
|
6714
6693
|
] }),
|
|
6715
|
-
/* @__PURE__ */
|
|
6716
|
-
/* @__PURE__ */
|
|
6717
|
-
/* @__PURE__ */
|
|
6718
|
-
/* @__PURE__ */
|
|
6694
|
+
/* @__PURE__ */ jsx21("div", { className: "space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs13("div", { className: `text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 ${isDark ? "bg-gray-800/50" : "bg-gray-50"}`, children: [
|
|
6695
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex-1 min-w-0", children: [
|
|
6696
|
+
/* @__PURE__ */ jsx21("div", { className: `font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: new URL(app.origin).hostname }),
|
|
6697
|
+
/* @__PURE__ */ jsxs13("div", { className: `${isDark ? "text-gray-400" : "text-gray-500"}`, children: [
|
|
6719
6698
|
"Trusted: ",
|
|
6720
6699
|
new Date(app.trustedAt).toLocaleDateString()
|
|
6721
6700
|
] })
|
|
6722
6701
|
] }),
|
|
6723
|
-
/* @__PURE__ */
|
|
6702
|
+
/* @__PURE__ */ jsx21(
|
|
6724
6703
|
"button",
|
|
6725
6704
|
{
|
|
6726
6705
|
onClick: () => setAppToRemove({ projectId: app.projectId, origin: app.origin, hostname: new URL(app.origin).hostname }),
|
|
6727
6706
|
className: `p-1 rounded transition-colors ${isDark ? "text-gray-400 hover:text-red-400 hover:bg-red-900/20" : "text-gray-500 hover:text-red-600 hover:bg-red-50"}`,
|
|
6728
6707
|
title: "Remove from trusted",
|
|
6729
|
-
children: /* @__PURE__ */
|
|
6708
|
+
children: /* @__PURE__ */ jsx21(Trash22, { className: "h-3 w-3" })
|
|
6730
6709
|
}
|
|
6731
6710
|
)
|
|
6732
6711
|
] }, index)) })
|
|
6733
6712
|
] })
|
|
6734
6713
|
] })
|
|
6735
6714
|
] }),
|
|
6736
|
-
appToRemove && /* @__PURE__ */
|
|
6737
|
-
/* @__PURE__ */
|
|
6738
|
-
/* @__PURE__ */
|
|
6739
|
-
/* @__PURE__ */
|
|
6740
|
-
/* @__PURE__ */
|
|
6741
|
-
/* @__PURE__ */
|
|
6742
|
-
/* @__PURE__ */
|
|
6743
|
-
/* @__PURE__ */
|
|
6744
|
-
/* @__PURE__ */
|
|
6745
|
-
/* @__PURE__ */
|
|
6746
|
-
/* @__PURE__ */
|
|
6747
|
-
/* @__PURE__ */
|
|
6748
|
-
/* @__PURE__ */
|
|
6715
|
+
appToRemove && /* @__PURE__ */ jsx21(Dialog, { open: !!appToRemove, onOpenChange: (open2) => !open2 && setAppToRemove(null), children: /* @__PURE__ */ jsxs13(DialogContent, { className: `lumia-scope max-w-[380px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
6716
|
+
/* @__PURE__ */ jsx21(VisuallyHidden, { children: /* @__PURE__ */ jsx21(DialogTitle, { children: "Remove Trusted Application" }) }),
|
|
6717
|
+
/* @__PURE__ */ jsx21(DialogDescription, { className: "sr-only", children: "Confirm removal of trusted application" }),
|
|
6718
|
+
/* @__PURE__ */ jsxs13("div", { className: "p-5 space-y-4", children: [
|
|
6719
|
+
/* @__PURE__ */ jsxs13("div", { className: `text-center ${theme.text}`, children: [
|
|
6720
|
+
/* @__PURE__ */ jsx21("div", { className: "text-lg font-semibold mb-2", children: "Remove Trusted App?" }),
|
|
6721
|
+
/* @__PURE__ */ jsx21("div", { className: `text-sm ${isDark ? "text-gray-300" : "text-gray-700"} mb-3`, children: /* @__PURE__ */ jsx21("span", { className: "font-medium", children: appToRemove.hostname }) }),
|
|
6722
|
+
/* @__PURE__ */ jsxs13("div", { className: `text-xs ${isDark ? "text-gray-400" : "text-gray-600"} text-left space-y-2`, children: [
|
|
6723
|
+
/* @__PURE__ */ jsx21("p", { children: "After removing this application from trusted list:" }),
|
|
6724
|
+
/* @__PURE__ */ jsxs13("ul", { className: "list-disc list-inside space-y-1 ml-2", children: [
|
|
6725
|
+
/* @__PURE__ */ jsx21("li", { children: "All transactions will require confirmation in a separate window" }),
|
|
6726
|
+
/* @__PURE__ */ jsx21("li", { children: "You can add it back to trusted list at any time" }),
|
|
6727
|
+
/* @__PURE__ */ jsx21("li", { children: 'Transaction confirmation window will show "Trust this app" checkbox' })
|
|
6749
6728
|
] })
|
|
6750
6729
|
] })
|
|
6751
6730
|
] }),
|
|
6752
|
-
/* @__PURE__ */
|
|
6753
|
-
/* @__PURE__ */
|
|
6731
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex gap-2", children: [
|
|
6732
|
+
/* @__PURE__ */ jsx21(
|
|
6754
6733
|
Button,
|
|
6755
6734
|
{
|
|
6756
6735
|
onClick: () => setAppToRemove(null),
|
|
@@ -6760,7 +6739,7 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6760
6739
|
children: "Cancel"
|
|
6761
6740
|
}
|
|
6762
6741
|
),
|
|
6763
|
-
/* @__PURE__ */
|
|
6742
|
+
/* @__PURE__ */ jsx21(
|
|
6764
6743
|
Button,
|
|
6765
6744
|
{
|
|
6766
6745
|
onClick: confirmRemoveTrustedApp,
|
|
@@ -6784,9 +6763,9 @@ init_iframe_manager();
|
|
|
6784
6763
|
init_LumiaPassportContext();
|
|
6785
6764
|
init_useTheme();
|
|
6786
6765
|
import * as React18 from "react";
|
|
6787
|
-
import { Shield as Shield3, Server as Server3, CheckCircle2 as CheckCircle23, AlertCircle as AlertCircle2, Key as Key4, Eye as Eye2, EyeOff as EyeOff2, Download, Cloud as Cloud2, Lock } from "lucide-react";
|
|
6788
|
-
import { jsx as
|
|
6789
|
-
function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
6766
|
+
import { Shield as Shield3, Server as Server3, CheckCircle2 as CheckCircle23, AlertCircle as AlertCircle2, Key as Key4, Eye as Eye2, EyeOff as EyeOff2, Download, Cloud as Cloud2, Lock, ArrowLeft as ArrowLeft5 } from "lucide-react";
|
|
6767
|
+
import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
6768
|
+
function KeyshareBackup({ userId, onBackupSuccess, onBack }) {
|
|
6790
6769
|
const { config } = useLumiaPassportConfig();
|
|
6791
6770
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
6792
6771
|
const [backupStatus, setBackupStatus] = React18.useState({
|
|
@@ -6929,27 +6908,36 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
6929
6908
|
const date = new Date(timestamp);
|
|
6930
6909
|
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
6931
6910
|
};
|
|
6932
|
-
return /* @__PURE__ */
|
|
6933
|
-
/* @__PURE__ */
|
|
6934
|
-
/* @__PURE__ */
|
|
6935
|
-
/* @__PURE__ */
|
|
6936
|
-
|
|
6911
|
+
return /* @__PURE__ */ jsxs14(Card, { className: `${theme.modalBg} border-0`, children: [
|
|
6912
|
+
/* @__PURE__ */ jsxs14(CardHeader, { className: "pb-3", children: [
|
|
6913
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2", children: [
|
|
6914
|
+
onBack && /* @__PURE__ */ jsx22(
|
|
6915
|
+
"button",
|
|
6916
|
+
{
|
|
6917
|
+
onClick: onBack,
|
|
6918
|
+
className: `p-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6919
|
+
title: "Back",
|
|
6920
|
+
children: /* @__PURE__ */ jsx22(ArrowLeft5, { className: "h-4 w-4" })
|
|
6921
|
+
}
|
|
6922
|
+
),
|
|
6923
|
+
/* @__PURE__ */ jsx22(Shield3, { className: `h-5 w-5 ${isDark ? "text-green-400" : "text-green-600"}` }),
|
|
6924
|
+
/* @__PURE__ */ jsx22(CardTitle, { className: `text-base ${theme.titleText}`, children: "Create Backup" })
|
|
6937
6925
|
] }),
|
|
6938
|
-
/* @__PURE__ */
|
|
6926
|
+
/* @__PURE__ */ jsx22(CardDescription, { className: `text-sm mt-1 ${theme.mutedText}`, children: "Secure your keyshare with encrypted backups" })
|
|
6939
6927
|
] }),
|
|
6940
|
-
/* @__PURE__ */
|
|
6941
|
-
error && /* @__PURE__ */
|
|
6942
|
-
/* @__PURE__ */
|
|
6943
|
-
/* @__PURE__ */
|
|
6928
|
+
/* @__PURE__ */ jsxs14(CardContent, { className: "space-y-3.5", children: [
|
|
6929
|
+
error && /* @__PURE__ */ jsxs14("div", { className: `flex items-center gap-2 p-2 rounded text-xs ${isDark ? "bg-red-950/50 border border-red-900/60 text-red-300" : "bg-red-50 border border-red-200 text-red-700"}`, children: [
|
|
6930
|
+
/* @__PURE__ */ jsx22(AlertCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
6931
|
+
/* @__PURE__ */ jsx22("span", { children: error })
|
|
6944
6932
|
] }),
|
|
6945
|
-
success && /* @__PURE__ */
|
|
6946
|
-
/* @__PURE__ */
|
|
6947
|
-
/* @__PURE__ */
|
|
6933
|
+
success && /* @__PURE__ */ jsxs14("div", { className: `flex items-center gap-2 p-2 rounded text-xs ${isDark ? "bg-green-950/50 border border-green-900/60 text-green-300" : "bg-green-50 border border-green-200 text-green-700"}`, children: [
|
|
6934
|
+
/* @__PURE__ */ jsx22(CheckCircle23, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
6935
|
+
/* @__PURE__ */ jsx22("span", { children: success })
|
|
6948
6936
|
] }),
|
|
6949
|
-
/* @__PURE__ */
|
|
6950
|
-
/* @__PURE__ */
|
|
6951
|
-
/* @__PURE__ */
|
|
6952
|
-
/* @__PURE__ */
|
|
6937
|
+
/* @__PURE__ */ jsxs14("div", { className: "space-y-2", children: [
|
|
6938
|
+
/* @__PURE__ */ jsx22("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Encryption Method:" }),
|
|
6939
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2", children: [
|
|
6940
|
+
/* @__PURE__ */ jsx22(
|
|
6953
6941
|
"input",
|
|
6954
6942
|
{
|
|
6955
6943
|
type: "checkbox",
|
|
@@ -6959,42 +6947,45 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
6959
6947
|
className: "rounded"
|
|
6960
6948
|
}
|
|
6961
6949
|
),
|
|
6962
|
-
/* @__PURE__ */
|
|
6950
|
+
/* @__PURE__ */ jsx22("label", { htmlFor: "use-backup-password", className: `text-xs ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Use custom password instead of passkey" })
|
|
6963
6951
|
] }),
|
|
6964
|
-
!useCustomPassword && /* @__PURE__ */
|
|
6965
|
-
/* @__PURE__ */
|
|
6966
|
-
/* @__PURE__ */
|
|
6952
|
+
!useCustomPassword && /* @__PURE__ */ jsx22("div", { className: `p-2 rounded text-xs ${isDark ? "bg-blue-500/10 border border-blue-500/30 text-gray-300" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2", children: [
|
|
6953
|
+
/* @__PURE__ */ jsx22(Key4, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
6954
|
+
/* @__PURE__ */ jsx22("span", { children: "Passkey will be used to encrypt the backup" })
|
|
6967
6955
|
] }) }),
|
|
6968
|
-
useCustomPassword && /* @__PURE__ */
|
|
6969
|
-
/* @__PURE__ */
|
|
6956
|
+
useCustomPassword && /* @__PURE__ */ jsxs14("div", { className: "relative", children: [
|
|
6957
|
+
/* @__PURE__ */ jsx22(
|
|
6970
6958
|
Input,
|
|
6971
6959
|
{
|
|
6972
6960
|
type: showPassword ? "text" : "password",
|
|
6973
6961
|
placeholder: "Enter backup password",
|
|
6974
6962
|
value: customPassword,
|
|
6975
6963
|
onChange: (e) => setCustomPassword(e.target.value),
|
|
6976
|
-
className: `pr-10 text-sm ${isDark ? "bg-
|
|
6964
|
+
className: `pr-10 text-sm ${isDark ? "bg-gray-900 border-gray-600 text-white placeholder:text-gray-500" : "bg-white border-gray-300 text-gray-900"}`,
|
|
6965
|
+
style: {
|
|
6966
|
+
WebkitTextFillColor: isDark ? "#ffffff" : "#111827"
|
|
6967
|
+
}
|
|
6977
6968
|
}
|
|
6978
6969
|
),
|
|
6979
|
-
/* @__PURE__ */
|
|
6970
|
+
/* @__PURE__ */ jsx22(
|
|
6980
6971
|
"button",
|
|
6981
6972
|
{
|
|
6982
6973
|
type: "button",
|
|
6983
6974
|
onClick: () => setShowPassword(!showPassword),
|
|
6984
|
-
className: `absolute right-
|
|
6985
|
-
children: showPassword ? /* @__PURE__ */
|
|
6975
|
+
className: `absolute right-3 inset-y-0 my-auto h-fit z-10 bg-transparent border-0 p-0 flex items-center justify-center ${isDark ? "text-gray-400 hover:text-gray-200" : "text-gray-500 hover:text-gray-700"}`,
|
|
6976
|
+
children: showPassword ? /* @__PURE__ */ jsx22(EyeOff2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx22(Eye2, { className: "h-4 w-4" })
|
|
6986
6977
|
}
|
|
6987
6978
|
)
|
|
6988
6979
|
] })
|
|
6989
6980
|
] }),
|
|
6990
|
-
/* @__PURE__ */
|
|
6991
|
-
/* @__PURE__ */
|
|
6992
|
-
/* @__PURE__ */
|
|
6993
|
-
/* @__PURE__ */
|
|
6994
|
-
/* @__PURE__ */
|
|
6995
|
-
/* @__PURE__ */
|
|
6981
|
+
/* @__PURE__ */ jsxs14("div", { className: "space-y-2.5", children: [
|
|
6982
|
+
/* @__PURE__ */ jsx22("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Choose Backup Method:" }),
|
|
6983
|
+
/* @__PURE__ */ jsxs14("div", { className: `p-3 rounded ${isDark ? "bg-blue-500/10" : "bg-blue-50/50"}`, children: [
|
|
6984
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
6985
|
+
/* @__PURE__ */ jsx22(Server3, { className: `h-4 w-4 ${isDark ? "text-blue-400" : "text-blue-600"}` }),
|
|
6986
|
+
/* @__PURE__ */ jsx22("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Server Backup" })
|
|
6996
6987
|
] }),
|
|
6997
|
-
/* @__PURE__ */
|
|
6988
|
+
/* @__PURE__ */ jsx22(
|
|
6998
6989
|
Button,
|
|
6999
6990
|
{
|
|
7000
6991
|
onClick: () => handleBackup("server"),
|
|
@@ -7004,22 +6995,22 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7004
6995
|
}
|
|
7005
6996
|
)
|
|
7006
6997
|
] }),
|
|
7007
|
-
/* @__PURE__ */
|
|
7008
|
-
/* @__PURE__ */
|
|
7009
|
-
/* @__PURE__ */
|
|
7010
|
-
/* @__PURE__ */
|
|
7011
|
-
/* @__PURE__ */
|
|
6998
|
+
/* @__PURE__ */ jsxs14("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
6999
|
+
/* @__PURE__ */ jsxs14("div", { className: `p-3 rounded flex flex-col ${isDark ? "bg-sky-500/10" : "bg-sky-50/50"}`, children: [
|
|
7000
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7001
|
+
/* @__PURE__ */ jsx22(Cloud2, { className: `h-4 w-4 ${isDark ? "text-sky-400" : "text-sky-600"}` }),
|
|
7002
|
+
/* @__PURE__ */ jsx22("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Cloud" })
|
|
7012
7003
|
] }),
|
|
7013
|
-
cloudProviders.length > 1 && /* @__PURE__ */
|
|
7004
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx22(
|
|
7014
7005
|
"select",
|
|
7015
7006
|
{
|
|
7016
7007
|
value: selectedCloudProvider || "",
|
|
7017
7008
|
onChange: (e) => setSelectedCloudProvider(e.target.value),
|
|
7018
7009
|
className: `text-xs border rounded px-2 py-1 w-full mb-2 ${isDark ? "bg-gray-800 border-gray-700 text-gray-200" : "bg-white border-gray-300"}`,
|
|
7019
|
-
children: cloudProviders.map((provider) => /* @__PURE__ */
|
|
7010
|
+
children: cloudProviders.map((provider) => /* @__PURE__ */ jsx22("option", { value: provider.id, disabled: !provider.available, children: provider.name }, provider.id))
|
|
7020
7011
|
}
|
|
7021
7012
|
),
|
|
7022
|
-
/* @__PURE__ */
|
|
7013
|
+
/* @__PURE__ */ jsx22(
|
|
7023
7014
|
Button,
|
|
7024
7015
|
{
|
|
7025
7016
|
onClick: () => handleBackup("cloud"),
|
|
@@ -7030,13 +7021,13 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7030
7021
|
}
|
|
7031
7022
|
)
|
|
7032
7023
|
] }),
|
|
7033
|
-
/* @__PURE__ */
|
|
7034
|
-
/* @__PURE__ */
|
|
7035
|
-
/* @__PURE__ */
|
|
7036
|
-
/* @__PURE__ */
|
|
7024
|
+
/* @__PURE__ */ jsxs14("div", { className: `p-3 rounded flex flex-col ${isDark ? "bg-purple-500/10" : "bg-purple-50/50"}`, children: [
|
|
7025
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7026
|
+
/* @__PURE__ */ jsx22(Download, { className: `h-4 w-4 ${isDark ? "text-purple-400" : "text-purple-600"}` }),
|
|
7027
|
+
/* @__PURE__ */ jsx22("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "File" })
|
|
7037
7028
|
] }),
|
|
7038
|
-
cloudProviders.length > 1 && /* @__PURE__ */
|
|
7039
|
-
/* @__PURE__ */
|
|
7029
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx22("div", { className: "h-[32px]" }),
|
|
7030
|
+
/* @__PURE__ */ jsx22(
|
|
7040
7031
|
Button,
|
|
7041
7032
|
{
|
|
7042
7033
|
onClick: () => handleBackup("local"),
|
|
@@ -7049,10 +7040,10 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7049
7040
|
] })
|
|
7050
7041
|
] })
|
|
7051
7042
|
] }),
|
|
7052
|
-
/* @__PURE__ */
|
|
7053
|
-
/* @__PURE__ */
|
|
7054
|
-
/* @__PURE__ */
|
|
7055
|
-
/* @__PURE__ */
|
|
7043
|
+
/* @__PURE__ */ jsxs14("div", { className: `flex items-start gap-2 p-2.5 rounded text-xs ${isDark ? "bg-amber-500/15 border border-amber-500/30 text-gray-300" : "bg-amber-50 border border-amber-200 text-amber-900"}`, children: [
|
|
7044
|
+
/* @__PURE__ */ jsx22(Lock, { className: "h-3.5 w-3.5 mt-0.5 flex-shrink-0 text-amber-500" }),
|
|
7045
|
+
/* @__PURE__ */ jsxs14("div", { children: [
|
|
7046
|
+
/* @__PURE__ */ jsx22("span", { className: "font-medium", children: "Security Notice:" }),
|
|
7056
7047
|
" All backups are encrypted with AES-256 using your ",
|
|
7057
7048
|
useCustomPassword ? "custom password" : "passkey",
|
|
7058
7049
|
".",
|
|
@@ -7070,8 +7061,8 @@ import React19 from "react";
|
|
|
7070
7061
|
init_base();
|
|
7071
7062
|
init_LumiaPassportContext();
|
|
7072
7063
|
init_useTheme();
|
|
7073
|
-
import { Activity, ArrowUpRight, ArrowDownRight, CheckCircle2 as CheckCircle24, XCircle, ArrowLeft as
|
|
7074
|
-
import { jsx as
|
|
7064
|
+
import { Activity, ArrowUpRight, ArrowDownRight, CheckCircle2 as CheckCircle24, XCircle, ArrowLeft as ArrowLeft6, RefreshCw as RefreshCw3 } from "lucide-react";
|
|
7065
|
+
import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
7075
7066
|
var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
7076
7067
|
const { address } = useLumiaSession();
|
|
7077
7068
|
const [transactions, setTransactions] = React19.useState([]);
|
|
@@ -7121,98 +7112,98 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7121
7112
|
}
|
|
7122
7113
|
};
|
|
7123
7114
|
const getStatusIcon = (status) => {
|
|
7124
|
-
return status === "ok" ? /* @__PURE__ */
|
|
7115
|
+
return status === "ok" ? /* @__PURE__ */ jsx23(CheckCircle24, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx23(XCircle, { className: "w-4 h-4 text-red-500" });
|
|
7125
7116
|
};
|
|
7126
7117
|
const getTransactionIcon = (from, to) => {
|
|
7127
7118
|
const isIncoming = to.toLowerCase() === address?.toLowerCase();
|
|
7128
|
-
return isIncoming ? /* @__PURE__ */
|
|
7119
|
+
return isIncoming ? /* @__PURE__ */ jsx23(ArrowDownRight, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx23(ArrowUpRight, { className: "w-4 h-4 text-blue-500" });
|
|
7129
7120
|
};
|
|
7130
7121
|
const openInExplorer = (txHash) => {
|
|
7131
7122
|
const explorerUrl = getExplorerUrl();
|
|
7132
7123
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
7133
7124
|
};
|
|
7134
|
-
return /* @__PURE__ */
|
|
7135
|
-
/* @__PURE__ */
|
|
7136
|
-
/* @__PURE__ */
|
|
7137
|
-
/* @__PURE__ */
|
|
7138
|
-
onBack && /* @__PURE__ */
|
|
7125
|
+
return /* @__PURE__ */ jsx23(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs15(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
7126
|
+
/* @__PURE__ */ jsx23(VisuallyHidden, { children: /* @__PURE__ */ jsx23(DialogTitle, { children: "Transaction History" }) }),
|
|
7127
|
+
/* @__PURE__ */ jsx23(DialogDescription, { className: "sr-only", children: "View your transaction history" }),
|
|
7128
|
+
/* @__PURE__ */ jsx23("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
|
|
7129
|
+
onBack && /* @__PURE__ */ jsx23(
|
|
7139
7130
|
"button",
|
|
7140
7131
|
{
|
|
7141
7132
|
onClick: onBack,
|
|
7142
7133
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7143
7134
|
title: "Back",
|
|
7144
|
-
children: /* @__PURE__ */
|
|
7135
|
+
children: /* @__PURE__ */ jsx23(ArrowLeft6, { className: "h-4 w-4" })
|
|
7145
7136
|
}
|
|
7146
7137
|
),
|
|
7147
|
-
/* @__PURE__ */
|
|
7148
|
-
/* @__PURE__ */
|
|
7149
|
-
/* @__PURE__ */
|
|
7150
|
-
/* @__PURE__ */
|
|
7138
|
+
/* @__PURE__ */ jsxs15("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
7139
|
+
/* @__PURE__ */ jsx23(Activity, { className: "h-5 w-5" }),
|
|
7140
|
+
/* @__PURE__ */ jsx23("span", { children: "Transaction History" }),
|
|
7141
|
+
/* @__PURE__ */ jsx23(
|
|
7151
7142
|
"button",
|
|
7152
7143
|
{
|
|
7153
7144
|
onClick: loadTransactions,
|
|
7154
7145
|
disabled: loading,
|
|
7155
7146
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7156
7147
|
title: "Refresh transactions",
|
|
7157
|
-
children: /* @__PURE__ */
|
|
7148
|
+
children: /* @__PURE__ */ jsx23(RefreshCw3, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
|
|
7158
7149
|
}
|
|
7159
7150
|
)
|
|
7160
7151
|
] })
|
|
7161
7152
|
] }) }),
|
|
7162
|
-
/* @__PURE__ */
|
|
7163
|
-
/* @__PURE__ */
|
|
7164
|
-
/* @__PURE__ */
|
|
7165
|
-
] }) : transactions.length === 0 ? /* @__PURE__ */
|
|
7166
|
-
/* @__PURE__ */
|
|
7167
|
-
/* @__PURE__ */
|
|
7153
|
+
/* @__PURE__ */ jsx23("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: loading ? /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx23("div", { className: `${theme.mutedText}`, children: "Loading transactions..." }) }) : error ? /* @__PURE__ */ jsxs15("div", { className: `flex flex-col items-center justify-center py-8 ${isDark ? "text-red-400" : "text-red-500"}`, children: [
|
|
7154
|
+
/* @__PURE__ */ jsx23(XCircle, { className: "w-12 h-12 mb-2" }),
|
|
7155
|
+
/* @__PURE__ */ jsx23("p", { className: "text-center text-sm", children: error })
|
|
7156
|
+
] }) : transactions.length === 0 ? /* @__PURE__ */ jsxs15("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
7157
|
+
/* @__PURE__ */ jsx23(Activity, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
|
|
7158
|
+
/* @__PURE__ */ jsxs15("p", { className: "text-center", children: [
|
|
7168
7159
|
"No transactions found",
|
|
7169
|
-
/* @__PURE__ */
|
|
7170
|
-
/* @__PURE__ */
|
|
7160
|
+
/* @__PURE__ */ jsx23("br", {}),
|
|
7161
|
+
/* @__PURE__ */ jsx23("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
7171
7162
|
] })
|
|
7172
|
-
] }) : /* @__PURE__ */
|
|
7163
|
+
] }) : /* @__PURE__ */ jsx23("div", { className: "space-y-3", children: transactions.map((tx) => {
|
|
7173
7164
|
const isIncoming = tx.to.hash.toLowerCase() === address?.toLowerCase();
|
|
7174
7165
|
const displayAddress = isIncoming ? tx.from.hash : tx.to.hash;
|
|
7175
|
-
return /* @__PURE__ */
|
|
7166
|
+
return /* @__PURE__ */ jsxs15(
|
|
7176
7167
|
"div",
|
|
7177
7168
|
{
|
|
7178
7169
|
className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors cursor-pointer`,
|
|
7179
7170
|
onClick: () => openInExplorer(tx.hash),
|
|
7180
7171
|
children: [
|
|
7181
|
-
/* @__PURE__ */
|
|
7182
|
-
/* @__PURE__ */
|
|
7172
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between mb-2", children: [
|
|
7173
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
|
|
7183
7174
|
getTransactionIcon(tx.from.hash, tx.to.hash),
|
|
7184
|
-
/* @__PURE__ */
|
|
7175
|
+
/* @__PURE__ */ jsx23("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
|
|
7185
7176
|
getStatusIcon(tx.status)
|
|
7186
7177
|
] }),
|
|
7187
|
-
/* @__PURE__ */
|
|
7178
|
+
/* @__PURE__ */ jsx23("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
|
|
7188
7179
|
] }),
|
|
7189
|
-
/* @__PURE__ */
|
|
7190
|
-
/* @__PURE__ */
|
|
7191
|
-
/* @__PURE__ */
|
|
7192
|
-
/* @__PURE__ */
|
|
7180
|
+
/* @__PURE__ */ jsxs15("div", { className: "space-y-1 text-sm", children: [
|
|
7181
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7182
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: isIncoming ? "From:" : "To:" }),
|
|
7183
|
+
/* @__PURE__ */ jsxs15("span", { className: `font-mono ${theme.titleText}`, children: [
|
|
7193
7184
|
formatAddress(displayAddress),
|
|
7194
|
-
(isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */
|
|
7185
|
+
(isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ jsx23("span", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} ml-1`, children: "(Contract)" })
|
|
7195
7186
|
] })
|
|
7196
7187
|
] }),
|
|
7197
|
-
/* @__PURE__ */
|
|
7198
|
-
/* @__PURE__ */
|
|
7199
|
-
/* @__PURE__ */
|
|
7188
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7189
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Value:" }),
|
|
7190
|
+
/* @__PURE__ */ jsxs15("span", { className: `font-semibold ${theme.titleText}`, children: [
|
|
7200
7191
|
formatValue(tx.value),
|
|
7201
7192
|
" LUMIA"
|
|
7202
7193
|
] })
|
|
7203
7194
|
] }),
|
|
7204
|
-
/* @__PURE__ */
|
|
7205
|
-
/* @__PURE__ */
|
|
7206
|
-
/* @__PURE__ */
|
|
7195
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7196
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Block:" }),
|
|
7197
|
+
/* @__PURE__ */ jsxs15("span", { className: `font-mono ${theme.titleText}`, children: [
|
|
7207
7198
|
"#",
|
|
7208
7199
|
tx.block_number
|
|
7209
7200
|
] })
|
|
7210
7201
|
] }),
|
|
7211
|
-
tx.method && /* @__PURE__ */
|
|
7212
|
-
/* @__PURE__ */
|
|
7213
|
-
/* @__PURE__ */
|
|
7202
|
+
tx.method && /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7203
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Method:" }),
|
|
7204
|
+
/* @__PURE__ */ jsx23("span", { className: `${isDark ? "text-blue-400" : "text-blue-600"} text-xs`, children: tx.method })
|
|
7214
7205
|
] }),
|
|
7215
|
-
tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
7206
|
+
tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ jsx23("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx23(
|
|
7216
7207
|
"span",
|
|
7217
7208
|
{
|
|
7218
7209
|
className: `text-xs ${isDark ? "bg-blue-900/30 text-blue-300" : "bg-blue-100 text-blue-800"} px-2 py-0.5 rounded-full`,
|
|
@@ -7226,7 +7217,7 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7226
7217
|
tx.hash
|
|
7227
7218
|
);
|
|
7228
7219
|
}) }) }),
|
|
7229
|
-
transactions.length > 0 && /* @__PURE__ */
|
|
7220
|
+
transactions.length > 0 && /* @__PURE__ */ jsx23("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs15("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
7230
7221
|
"Total: ",
|
|
7231
7222
|
transactions.length,
|
|
7232
7223
|
" transaction",
|
|
@@ -7404,8 +7395,8 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
7404
7395
|
init_base();
|
|
7405
7396
|
init_LumiaPassportContext();
|
|
7406
7397
|
init_useTheme();
|
|
7407
|
-
import { Gem, RefreshCw as RefreshCw4, Copy, ExternalLink as ExternalLink2, ArrowLeft as
|
|
7408
|
-
import { jsx as
|
|
7398
|
+
import { Gem, RefreshCw as RefreshCw4, Copy, ExternalLink as ExternalLink2, ArrowLeft as ArrowLeft7 } from "lucide-react";
|
|
7399
|
+
import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
7409
7400
|
var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
7410
7401
|
const { address } = useLumiaSession();
|
|
7411
7402
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
@@ -7424,107 +7415,107 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7424
7415
|
const openInExplorer = (address2) => {
|
|
7425
7416
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address2}`, "_blank");
|
|
7426
7417
|
};
|
|
7427
|
-
return /* @__PURE__ */
|
|
7428
|
-
/* @__PURE__ */
|
|
7429
|
-
/* @__PURE__ */
|
|
7430
|
-
/* @__PURE__ */
|
|
7431
|
-
onBack && /* @__PURE__ */
|
|
7418
|
+
return /* @__PURE__ */ jsx24(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs16(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
7419
|
+
/* @__PURE__ */ jsx24(VisuallyHidden, { children: /* @__PURE__ */ jsx24(DialogTitle, { children: "View Assets" }) }),
|
|
7420
|
+
/* @__PURE__ */ jsx24(DialogDescription, { className: "sr-only", children: "View your token balances and assets" }),
|
|
7421
|
+
/* @__PURE__ */ jsx24("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
7422
|
+
onBack && /* @__PURE__ */ jsx24(
|
|
7432
7423
|
"button",
|
|
7433
7424
|
{
|
|
7434
7425
|
onClick: onBack,
|
|
7435
7426
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7436
7427
|
title: "Back",
|
|
7437
|
-
children: /* @__PURE__ */
|
|
7428
|
+
children: /* @__PURE__ */ jsx24(ArrowLeft7, { className: "h-4 w-4" })
|
|
7438
7429
|
}
|
|
7439
7430
|
),
|
|
7440
|
-
/* @__PURE__ */
|
|
7441
|
-
/* @__PURE__ */
|
|
7442
|
-
/* @__PURE__ */
|
|
7443
|
-
/* @__PURE__ */
|
|
7431
|
+
/* @__PURE__ */ jsxs16("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
7432
|
+
/* @__PURE__ */ jsx24(Gem, { className: "h-5 w-5" }),
|
|
7433
|
+
/* @__PURE__ */ jsx24("span", { children: "Your Assets" }),
|
|
7434
|
+
/* @__PURE__ */ jsx24(
|
|
7444
7435
|
"button",
|
|
7445
7436
|
{
|
|
7446
7437
|
onClick: refreshBalances,
|
|
7447
7438
|
disabled: isLoading,
|
|
7448
7439
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7449
7440
|
title: "Refresh balances",
|
|
7450
|
-
children: /* @__PURE__ */
|
|
7441
|
+
children: /* @__PURE__ */ jsx24(RefreshCw4, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
|
|
7451
7442
|
}
|
|
7452
7443
|
)
|
|
7453
7444
|
] })
|
|
7454
7445
|
] }) }),
|
|
7455
|
-
/* @__PURE__ */
|
|
7456
|
-
/* @__PURE__ */
|
|
7457
|
-
/* @__PURE__ */
|
|
7458
|
-
] }) : /* @__PURE__ */
|
|
7459
|
-
/* @__PURE__ */
|
|
7460
|
-
/* @__PURE__ */
|
|
7461
|
-
/* @__PURE__ */
|
|
7462
|
-
/* @__PURE__ */
|
|
7463
|
-
/* @__PURE__ */
|
|
7464
|
-
/* @__PURE__ */
|
|
7446
|
+
/* @__PURE__ */ jsx24("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: isLoading ? /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx24("div", { className: `${theme.mutedText}`, children: "Loading assets..." }) }) : assets.length === 0 ? /* @__PURE__ */ jsxs16("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
7447
|
+
/* @__PURE__ */ jsx24(Gem, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
|
|
7448
|
+
/* @__PURE__ */ jsx24("p", { children: "No assets found" })
|
|
7449
|
+
] }) : /* @__PURE__ */ jsx24("div", { className: "space-y-3", children: assets.map((asset, index) => /* @__PURE__ */ jsxs16("div", { className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors`, children: [
|
|
7450
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between mb-2", children: [
|
|
7451
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
|
|
7452
|
+
/* @__PURE__ */ jsx24("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx24("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
7453
|
+
/* @__PURE__ */ jsxs16("div", { children: [
|
|
7454
|
+
/* @__PURE__ */ jsx24("div", { className: `font-medium ${theme.titleText}`, children: asset.name }),
|
|
7455
|
+
/* @__PURE__ */ jsx24("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
|
|
7465
7456
|
] })
|
|
7466
7457
|
] }),
|
|
7467
|
-
/* @__PURE__ */
|
|
7468
|
-
/* @__PURE__ */
|
|
7469
|
-
/* @__PURE__ */
|
|
7458
|
+
/* @__PURE__ */ jsxs16("div", { className: "text-right", children: [
|
|
7459
|
+
/* @__PURE__ */ jsx24("div", { className: `font-mono ${theme.titleText}`, children: asset.formattedBalance }),
|
|
7460
|
+
/* @__PURE__ */ jsx24("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
|
|
7470
7461
|
] })
|
|
7471
7462
|
] }),
|
|
7472
|
-
asset.address && /* @__PURE__ */
|
|
7473
|
-
/* @__PURE__ */
|
|
7474
|
-
/* @__PURE__ */
|
|
7475
|
-
/* @__PURE__ */
|
|
7476
|
-
/* @__PURE__ */
|
|
7477
|
-
/* @__PURE__ */
|
|
7463
|
+
asset.address && /* @__PURE__ */ jsxs16("div", { className: `space-y-2 mt-3 pt-3 border-t ${theme.divider}`, children: [
|
|
7464
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7465
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Contract Address:" }),
|
|
7466
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
7467
|
+
/* @__PURE__ */ jsx24("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
7468
|
+
/* @__PURE__ */ jsx24(
|
|
7478
7469
|
"button",
|
|
7479
7470
|
{
|
|
7480
7471
|
onClick: () => handleCopy(asset.address, "address"),
|
|
7481
7472
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7482
7473
|
title: "Copy address",
|
|
7483
|
-
children: copied === "address" ? /* @__PURE__ */
|
|
7474
|
+
children: copied === "address" ? /* @__PURE__ */ jsx24("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx24(Copy, { className: "w-3 h-3" })
|
|
7484
7475
|
}
|
|
7485
7476
|
),
|
|
7486
|
-
/* @__PURE__ */
|
|
7477
|
+
/* @__PURE__ */ jsx24(
|
|
7487
7478
|
"button",
|
|
7488
7479
|
{
|
|
7489
7480
|
onClick: () => openInExplorer(asset.address),
|
|
7490
7481
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7491
7482
|
title: "View in explorer",
|
|
7492
|
-
children: /* @__PURE__ */
|
|
7483
|
+
children: /* @__PURE__ */ jsx24(ExternalLink2, { className: "w-3 h-3" })
|
|
7493
7484
|
}
|
|
7494
7485
|
)
|
|
7495
7486
|
] })
|
|
7496
7487
|
] }),
|
|
7497
|
-
asset.decimals && /* @__PURE__ */
|
|
7498
|
-
/* @__PURE__ */
|
|
7499
|
-
/* @__PURE__ */
|
|
7488
|
+
asset.decimals && /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7489
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Decimals:" }),
|
|
7490
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.titleText}`, children: asset.decimals })
|
|
7500
7491
|
] })
|
|
7501
7492
|
] }),
|
|
7502
|
-
asset.type === "native" && address && /* @__PURE__ */
|
|
7503
|
-
/* @__PURE__ */
|
|
7504
|
-
/* @__PURE__ */
|
|
7505
|
-
/* @__PURE__ */
|
|
7506
|
-
/* @__PURE__ */
|
|
7493
|
+
asset.type === "native" && address && /* @__PURE__ */ jsx24("div", { className: "mt-3 pt-3 border-t border-gray-200", children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7494
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Your Address:" }),
|
|
7495
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
7496
|
+
/* @__PURE__ */ jsx24("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
7497
|
+
/* @__PURE__ */ jsx24(
|
|
7507
7498
|
"button",
|
|
7508
7499
|
{
|
|
7509
7500
|
onClick: () => handleCopy(address, "wallet"),
|
|
7510
7501
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7511
7502
|
title: "Copy wallet address",
|
|
7512
|
-
children: copied === "wallet" ? /* @__PURE__ */
|
|
7503
|
+
children: copied === "wallet" ? /* @__PURE__ */ jsx24("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx24(Copy, { className: "w-3 h-3" })
|
|
7513
7504
|
}
|
|
7514
7505
|
),
|
|
7515
|
-
/* @__PURE__ */
|
|
7506
|
+
/* @__PURE__ */ jsx24(
|
|
7516
7507
|
"button",
|
|
7517
7508
|
{
|
|
7518
7509
|
onClick: () => openInExplorer(address),
|
|
7519
7510
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7520
7511
|
title: "View in explorer",
|
|
7521
|
-
children: /* @__PURE__ */
|
|
7512
|
+
children: /* @__PURE__ */ jsx24(ExternalLink2, { className: "w-3 h-3" })
|
|
7522
7513
|
}
|
|
7523
7514
|
)
|
|
7524
7515
|
] })
|
|
7525
7516
|
] }) })
|
|
7526
7517
|
] }, `${asset.type}-${asset.address || "native"}-${index}`)) }) }),
|
|
7527
|
-
assets.length > 0 && /* @__PURE__ */
|
|
7518
|
+
assets.length > 0 && /* @__PURE__ */ jsx24("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
7528
7519
|
"Total: ",
|
|
7529
7520
|
assets.length,
|
|
7530
7521
|
" asset",
|
|
@@ -7537,7 +7528,7 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7537
7528
|
init_dialog();
|
|
7538
7529
|
import { useState as useState12, useEffect as useEffect9 } from "react";
|
|
7539
7530
|
init_button();
|
|
7540
|
-
import { Send, ArrowLeft as
|
|
7531
|
+
import { Send, ArrowLeft as ArrowLeft8, Loader2, CheckCircle2 as CheckCircle26, AlertCircle as AlertCircle4 } from "lucide-react";
|
|
7541
7532
|
|
|
7542
7533
|
// src/hooks/useSendTransaction.ts
|
|
7543
7534
|
init_account();
|
|
@@ -7619,7 +7610,7 @@ function cn2(...inputs) {
|
|
|
7619
7610
|
}
|
|
7620
7611
|
|
|
7621
7612
|
// src/internal/components/ui/badge.tsx
|
|
7622
|
-
import { jsx as
|
|
7613
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
7623
7614
|
var badgeVariants = cva2(
|
|
7624
7615
|
"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",
|
|
7625
7616
|
{
|
|
@@ -7639,14 +7630,14 @@ var badgeVariants = cva2(
|
|
|
7639
7630
|
}
|
|
7640
7631
|
);
|
|
7641
7632
|
function Badge({ className, variant, ...props }) {
|
|
7642
|
-
return /* @__PURE__ */
|
|
7633
|
+
return /* @__PURE__ */ jsx25("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
7643
7634
|
}
|
|
7644
7635
|
|
|
7645
7636
|
// src/internal/components/Address.tsx
|
|
7646
7637
|
init_button();
|
|
7647
7638
|
import * as React22 from "react";
|
|
7648
7639
|
import { Copy as Copy2, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
7649
|
-
import { jsx as
|
|
7640
|
+
import { jsx as jsx26, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
7650
7641
|
function toExplorerAddressUrl(address, chain) {
|
|
7651
7642
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
7652
7643
|
if (!base2) return null;
|
|
@@ -7668,11 +7659,11 @@ var Address = ({
|
|
|
7668
7659
|
const addr = address || "";
|
|
7669
7660
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
7670
7661
|
const [copied, setCopied] = React22.useState(false);
|
|
7671
|
-
if (!addr) return /* @__PURE__ */
|
|
7672
|
-
return /* @__PURE__ */
|
|
7673
|
-
label && /* @__PURE__ */
|
|
7674
|
-
/* @__PURE__ */
|
|
7675
|
-
showCopy && /* @__PURE__ */
|
|
7662
|
+
if (!addr) return /* @__PURE__ */ jsx26("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
7663
|
+
return /* @__PURE__ */ jsxs17("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
7664
|
+
label && /* @__PURE__ */ jsx26("span", { className: "text-sm font-medium", children: label }),
|
|
7665
|
+
/* @__PURE__ */ jsx26("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
7666
|
+
showCopy && /* @__PURE__ */ jsx26(
|
|
7676
7667
|
Button,
|
|
7677
7668
|
{
|
|
7678
7669
|
variant: "ghost",
|
|
@@ -7686,10 +7677,10 @@ var Address = ({
|
|
|
7686
7677
|
} catch {
|
|
7687
7678
|
}
|
|
7688
7679
|
},
|
|
7689
|
-
children: /* @__PURE__ */
|
|
7680
|
+
children: /* @__PURE__ */ jsx26(Copy2, { className: "h-4 w-4" })
|
|
7690
7681
|
}
|
|
7691
7682
|
),
|
|
7692
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
7683
|
+
showExplorer && explorer && /* @__PURE__ */ jsx26(
|
|
7693
7684
|
"a",
|
|
7694
7685
|
{
|
|
7695
7686
|
href: explorer,
|
|
@@ -7697,7 +7688,7 @@ var Address = ({
|
|
|
7697
7688
|
rel: "noreferrer noopener",
|
|
7698
7689
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
7699
7690
|
title: "Open in explorer",
|
|
7700
|
-
children: /* @__PURE__ */
|
|
7691
|
+
children: /* @__PURE__ */ jsx26(ExternalLink3, { className: "h-4 w-4" })
|
|
7701
7692
|
}
|
|
7702
7693
|
)
|
|
7703
7694
|
] });
|
|
@@ -7705,7 +7696,7 @@ var Address = ({
|
|
|
7705
7696
|
|
|
7706
7697
|
// src/internal/components/UserOpStatus.tsx
|
|
7707
7698
|
init_base();
|
|
7708
|
-
import { jsx as
|
|
7699
|
+
import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
7709
7700
|
var UserOpStatus = ({
|
|
7710
7701
|
userOpHash,
|
|
7711
7702
|
chain,
|
|
@@ -7838,54 +7829,54 @@ var UserOpStatus = ({
|
|
|
7838
7829
|
const stateBadge = () => {
|
|
7839
7830
|
if (receipt) {
|
|
7840
7831
|
const ok = !!receipt.success;
|
|
7841
|
-
return /* @__PURE__ */
|
|
7842
|
-
ok ? /* @__PURE__ */
|
|
7832
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
7833
|
+
ok ? /* @__PURE__ */ jsx27(CheckCircle25, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
|
|
7843
7834
|
ok ? "Included" : "Failed"
|
|
7844
7835
|
] });
|
|
7845
7836
|
}
|
|
7846
7837
|
if (rejected) {
|
|
7847
|
-
return /* @__PURE__ */
|
|
7848
|
-
/* @__PURE__ */
|
|
7838
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
7839
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
|
|
7849
7840
|
" Rejected by bundler"
|
|
7850
7841
|
] });
|
|
7851
7842
|
}
|
|
7852
7843
|
if (timedOut) {
|
|
7853
|
-
return /* @__PURE__ */
|
|
7854
|
-
/* @__PURE__ */
|
|
7844
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "warning", className: "gap-1", children: [
|
|
7845
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
|
|
7855
7846
|
" Timeout - may be rejected"
|
|
7856
7847
|
] });
|
|
7857
7848
|
}
|
|
7858
7849
|
if (mempool) {
|
|
7859
|
-
return /* @__PURE__ */
|
|
7860
|
-
/* @__PURE__ */
|
|
7850
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "outline", className: "gap-1", children: [
|
|
7851
|
+
/* @__PURE__ */ jsx27(Clock3, { className: "h-3 w-3" }),
|
|
7861
7852
|
" Pending in bundler"
|
|
7862
7853
|
] });
|
|
7863
7854
|
}
|
|
7864
|
-
return /* @__PURE__ */
|
|
7865
|
-
/* @__PURE__ */
|
|
7855
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
7856
|
+
/* @__PURE__ */ jsx27(Clock3, { className: "h-3 w-3" }),
|
|
7866
7857
|
" Waiting"
|
|
7867
7858
|
] });
|
|
7868
7859
|
};
|
|
7869
|
-
return /* @__PURE__ */
|
|
7860
|
+
return /* @__PURE__ */ jsxs18(
|
|
7870
7861
|
"div",
|
|
7871
7862
|
{
|
|
7872
7863
|
className: cn2("lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]", className),
|
|
7873
7864
|
style: { textAlign: "left", listStyle: "none" },
|
|
7874
7865
|
children: [
|
|
7875
|
-
/* @__PURE__ */
|
|
7876
|
-
/* @__PURE__ */
|
|
7866
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center justify-between mb-3", children: [
|
|
7867
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2", children: [
|
|
7877
7868
|
stateBadge(),
|
|
7878
|
-
/* @__PURE__ */
|
|
7869
|
+
/* @__PURE__ */ jsx27("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
7879
7870
|
] }),
|
|
7880
|
-
/* @__PURE__ */
|
|
7881
|
-
/* @__PURE__ */
|
|
7882
|
-
/* @__PURE__ */
|
|
7871
|
+
/* @__PURE__ */ jsxs18(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
7872
|
+
/* @__PURE__ */ jsx27(RefreshCw5, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
7873
|
+
/* @__PURE__ */ jsx27("span", { className: "text-xs", children: "Refresh" })
|
|
7883
7874
|
] })
|
|
7884
7875
|
] }),
|
|
7885
|
-
/* @__PURE__ */
|
|
7886
|
-
/* @__PURE__ */
|
|
7887
|
-
/* @__PURE__ */
|
|
7888
|
-
/* @__PURE__ */
|
|
7876
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7877
|
+
/* @__PURE__ */ jsx27("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
7878
|
+
/* @__PURE__ */ jsx27("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
7879
|
+
/* @__PURE__ */ jsx27(
|
|
7889
7880
|
Button,
|
|
7890
7881
|
{
|
|
7891
7882
|
variant: "ghost",
|
|
@@ -7897,14 +7888,14 @@ var UserOpStatus = ({
|
|
|
7897
7888
|
} catch {
|
|
7898
7889
|
}
|
|
7899
7890
|
},
|
|
7900
|
-
children: /* @__PURE__ */
|
|
7891
|
+
children: /* @__PURE__ */ jsx27(Copy3, { className: "h-3.5 w-3.5" })
|
|
7901
7892
|
}
|
|
7902
7893
|
)
|
|
7903
7894
|
] }),
|
|
7904
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */
|
|
7905
|
-
/* @__PURE__ */
|
|
7906
|
-
/* @__PURE__ */
|
|
7907
|
-
/* @__PURE__ */
|
|
7895
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
7896
|
+
/* @__PURE__ */ jsx27("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
7897
|
+
/* @__PURE__ */ jsx27("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
7898
|
+
/* @__PURE__ */ jsx27(
|
|
7908
7899
|
Button,
|
|
7909
7900
|
{
|
|
7910
7901
|
variant: "ghost",
|
|
@@ -7916,10 +7907,10 @@ var UserOpStatus = ({
|
|
|
7916
7907
|
} catch {
|
|
7917
7908
|
}
|
|
7918
7909
|
},
|
|
7919
|
-
children: /* @__PURE__ */
|
|
7910
|
+
children: /* @__PURE__ */ jsx27(Copy3, { className: "h-3.5 w-3.5" })
|
|
7920
7911
|
}
|
|
7921
7912
|
),
|
|
7922
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */
|
|
7913
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx27(
|
|
7923
7914
|
"a",
|
|
7924
7915
|
{
|
|
7925
7916
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -7927,11 +7918,11 @@ var UserOpStatus = ({
|
|
|
7927
7918
|
rel: "noreferrer noopener",
|
|
7928
7919
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
7929
7920
|
title: "Open in explorer",
|
|
7930
|
-
children: /* @__PURE__ */
|
|
7921
|
+
children: /* @__PURE__ */ jsx27(ExternalLink4, { className: "h-3.5 w-3.5" })
|
|
7931
7922
|
}
|
|
7932
7923
|
)
|
|
7933
7924
|
] }),
|
|
7934
|
-
receipt && /* @__PURE__ */
|
|
7925
|
+
receipt && /* @__PURE__ */ jsxs18("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
7935
7926
|
"Block ",
|
|
7936
7927
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
7937
7928
|
" \u2022 Gas Used",
|
|
@@ -7940,32 +7931,32 @@ var UserOpStatus = ({
|
|
|
7940
7931
|
" \u2022 Success ",
|
|
7941
7932
|
String(!!receipt.success)
|
|
7942
7933
|
] }),
|
|
7943
|
-
/* @__PURE__ */
|
|
7934
|
+
/* @__PURE__ */ jsx27("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs18("span", { className: "ml-2", children: [
|
|
7944
7935
|
"\u2022 Polling for ",
|
|
7945
7936
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
7946
7937
|
"s"
|
|
7947
7938
|
] }) }),
|
|
7948
|
-
mempool && /* @__PURE__ */
|
|
7949
|
-
/* @__PURE__ */
|
|
7939
|
+
mempool && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
7940
|
+
/* @__PURE__ */ jsxs18("div", { children: [
|
|
7950
7941
|
"Seen by bundler at ",
|
|
7951
|
-
/* @__PURE__ */
|
|
7942
|
+
/* @__PURE__ */ jsx27(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
7952
7943
|
] }),
|
|
7953
|
-
/* @__PURE__ */
|
|
7944
|
+
/* @__PURE__ */ jsxs18("div", { children: [
|
|
7954
7945
|
"sender ",
|
|
7955
|
-
/* @__PURE__ */
|
|
7946
|
+
/* @__PURE__ */ jsx27(Address, { address: mempool.sender, chain, truncate: false })
|
|
7956
7947
|
] })
|
|
7957
7948
|
] }),
|
|
7958
|
-
error && /* @__PURE__ */
|
|
7959
|
-
/* @__PURE__ */
|
|
7949
|
+
error && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7950
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
|
|
7960
7951
|
" ",
|
|
7961
7952
|
error
|
|
7962
7953
|
] }),
|
|
7963
|
-
rejected && /* @__PURE__ */
|
|
7964
|
-
/* @__PURE__ */
|
|
7954
|
+
rejected && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7955
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
|
|
7965
7956
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
7966
7957
|
] }),
|
|
7967
|
-
timedOut && /* @__PURE__ */
|
|
7968
|
-
/* @__PURE__ */
|
|
7958
|
+
timedOut && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7959
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
|
|
7969
7960
|
"Stopped polling after ",
|
|
7970
7961
|
Math.round(maxPollTimeMs / 1e3),
|
|
7971
7962
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -7979,7 +7970,7 @@ var UserOpStatus = ({
|
|
|
7979
7970
|
init_base();
|
|
7980
7971
|
init_LumiaPassportContext();
|
|
7981
7972
|
init_useTheme();
|
|
7982
|
-
import { jsx as
|
|
7973
|
+
import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
7983
7974
|
var SendModal = ({
|
|
7984
7975
|
open,
|
|
7985
7976
|
onOpenChange,
|
|
@@ -8062,7 +8053,7 @@ var SendModal = ({
|
|
|
8062
8053
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
8063
8054
|
setAmount(maxAmount.toFixed(6));
|
|
8064
8055
|
};
|
|
8065
|
-
return /* @__PURE__ */
|
|
8056
|
+
return /* @__PURE__ */ jsx28(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs19(
|
|
8066
8057
|
DialogContent,
|
|
8067
8058
|
{
|
|
8068
8059
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8074,28 +8065,28 @@ var SendModal = ({
|
|
|
8074
8065
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8075
8066
|
},
|
|
8076
8067
|
children: [
|
|
8077
|
-
/* @__PURE__ */
|
|
8078
|
-
/* @__PURE__ */
|
|
8079
|
-
/* @__PURE__ */
|
|
8080
|
-
onBack && txStep === "input" && /* @__PURE__ */
|
|
8068
|
+
/* @__PURE__ */ jsx28(VisuallyHidden, { children: /* @__PURE__ */ jsx28(DialogTitle, { children: "Send Transaction" }) }),
|
|
8069
|
+
/* @__PURE__ */ jsx28(DialogDescription, { className: "sr-only", children: "Send LUMIA tokens to another address" }),
|
|
8070
|
+
/* @__PURE__ */ jsx28("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
|
|
8071
|
+
onBack && txStep === "input" && /* @__PURE__ */ jsx28(
|
|
8081
8072
|
"button",
|
|
8082
8073
|
{
|
|
8083
8074
|
onClick: onBack,
|
|
8084
8075
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8085
8076
|
title: "Back",
|
|
8086
|
-
children: /* @__PURE__ */
|
|
8077
|
+
children: /* @__PURE__ */ jsx28(ArrowLeft8, { className: "h-4 w-4" })
|
|
8087
8078
|
}
|
|
8088
8079
|
),
|
|
8089
|
-
/* @__PURE__ */
|
|
8090
|
-
/* @__PURE__ */
|
|
8091
|
-
/* @__PURE__ */
|
|
8080
|
+
/* @__PURE__ */ jsxs19("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8081
|
+
/* @__PURE__ */ jsx28(Send, { className: "h-5 w-5" }),
|
|
8082
|
+
/* @__PURE__ */ jsx28("span", { children: "Send LUMIA" })
|
|
8092
8083
|
] })
|
|
8093
8084
|
] }) }),
|
|
8094
|
-
/* @__PURE__ */
|
|
8095
|
-
txStep === "input" && /* @__PURE__ */
|
|
8096
|
-
/* @__PURE__ */
|
|
8097
|
-
/* @__PURE__ */
|
|
8098
|
-
/* @__PURE__ */
|
|
8085
|
+
/* @__PURE__ */ jsxs19("div", { className: "p-5", children: [
|
|
8086
|
+
txStep === "input" && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
|
|
8087
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
8088
|
+
/* @__PURE__ */ jsx28("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Recipient Address" }),
|
|
8089
|
+
/* @__PURE__ */ jsx28(
|
|
8099
8090
|
"input",
|
|
8100
8091
|
{
|
|
8101
8092
|
type: "text",
|
|
@@ -8106,17 +8097,17 @@ var SendModal = ({
|
|
|
8106
8097
|
}
|
|
8107
8098
|
)
|
|
8108
8099
|
] }),
|
|
8109
|
-
/* @__PURE__ */
|
|
8110
|
-
/* @__PURE__ */
|
|
8111
|
-
/* @__PURE__ */
|
|
8112
|
-
/* @__PURE__ */
|
|
8100
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
8101
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between items-center mb-2", children: [
|
|
8102
|
+
/* @__PURE__ */ jsx28("label", { className: `text-sm font-medium ${theme.bodyText}`, children: "Amount" }),
|
|
8103
|
+
/* @__PURE__ */ jsxs19("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
8113
8104
|
"Balance: ",
|
|
8114
8105
|
balance.toFixed(4),
|
|
8115
8106
|
" LUMIA"
|
|
8116
8107
|
] })
|
|
8117
8108
|
] }),
|
|
8118
|
-
/* @__PURE__ */
|
|
8119
|
-
/* @__PURE__ */
|
|
8109
|
+
/* @__PURE__ */ jsxs19("div", { className: "relative", children: [
|
|
8110
|
+
/* @__PURE__ */ jsx28(
|
|
8120
8111
|
"input",
|
|
8121
8112
|
{
|
|
8122
8113
|
type: "number",
|
|
@@ -8127,7 +8118,7 @@ var SendModal = ({
|
|
|
8127
8118
|
className: `w-full px-3 py-2 pr-16 border ${isDark ? "bg-gray-800 border-gray-600 text-white placeholder:text-gray-400" : "bg-white border-gray-300 text-gray-900 placeholder:text-gray-400"} rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`
|
|
8128
8119
|
}
|
|
8129
8120
|
),
|
|
8130
|
-
/* @__PURE__ */
|
|
8121
|
+
/* @__PURE__ */ jsx28(
|
|
8131
8122
|
"button",
|
|
8132
8123
|
{
|
|
8133
8124
|
onClick: handleMaxAmount,
|
|
@@ -8137,11 +8128,11 @@ var SendModal = ({
|
|
|
8137
8128
|
)
|
|
8138
8129
|
] })
|
|
8139
8130
|
] }),
|
|
8140
|
-
(validationError || error) && /* @__PURE__ */
|
|
8141
|
-
/* @__PURE__ */
|
|
8142
|
-
/* @__PURE__ */
|
|
8131
|
+
(validationError || error) && /* @__PURE__ */ jsxs19("div", { className: `flex items-center gap-2 p-3 ${isDark ? "bg-red-900/30 text-red-400" : "bg-red-50 text-red-700"} rounded-lg`, children: [
|
|
8132
|
+
/* @__PURE__ */ jsx28(AlertCircle4, { className: "h-4 w-4" }),
|
|
8133
|
+
/* @__PURE__ */ jsx28("span", { className: "text-sm", children: validationError || error })
|
|
8143
8134
|
] }),
|
|
8144
|
-
/* @__PURE__ */
|
|
8135
|
+
/* @__PURE__ */ jsx28(
|
|
8145
8136
|
Button,
|
|
8146
8137
|
{
|
|
8147
8138
|
onClick: handleSend,
|
|
@@ -8152,29 +8143,29 @@ var SendModal = ({
|
|
|
8152
8143
|
}
|
|
8153
8144
|
)
|
|
8154
8145
|
] }),
|
|
8155
|
-
txStep === "confirm" && /* @__PURE__ */
|
|
8156
|
-
/* @__PURE__ */
|
|
8157
|
-
/* @__PURE__ */
|
|
8158
|
-
/* @__PURE__ */
|
|
8159
|
-
/* @__PURE__ */
|
|
8160
|
-
/* @__PURE__ */
|
|
8161
|
-
/* @__PURE__ */
|
|
8146
|
+
txStep === "confirm" && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
|
|
8147
|
+
/* @__PURE__ */ jsxs19("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
|
|
8148
|
+
/* @__PURE__ */ jsx28("h3", { className: `font-medium ${theme.titleText} mb-3`, children: "Transaction Details" }),
|
|
8149
|
+
/* @__PURE__ */ jsxs19("div", { className: "space-y-2 text-sm", children: [
|
|
8150
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
|
|
8151
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "To:" }),
|
|
8152
|
+
/* @__PURE__ */ jsx28("span", { className: `font-mono ${theme.titleText}`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
8162
8153
|
] }),
|
|
8163
|
-
/* @__PURE__ */
|
|
8164
|
-
/* @__PURE__ */
|
|
8165
|
-
/* @__PURE__ */
|
|
8154
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
|
|
8155
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "Amount:" }),
|
|
8156
|
+
/* @__PURE__ */ jsxs19("span", { className: `font-semibold ${theme.titleText}`, children: [
|
|
8166
8157
|
amount,
|
|
8167
8158
|
" LUMIA"
|
|
8168
8159
|
] })
|
|
8169
8160
|
] }),
|
|
8170
|
-
/* @__PURE__ */
|
|
8171
|
-
/* @__PURE__ */
|
|
8172
|
-
/* @__PURE__ */
|
|
8161
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
|
|
8162
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "Network:" }),
|
|
8163
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.titleText}`, children: "Lumia Beam" })
|
|
8173
8164
|
] })
|
|
8174
8165
|
] })
|
|
8175
8166
|
] }),
|
|
8176
|
-
/* @__PURE__ */
|
|
8177
|
-
/* @__PURE__ */
|
|
8167
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex gap-2", children: [
|
|
8168
|
+
/* @__PURE__ */ jsx28(
|
|
8178
8169
|
Button,
|
|
8179
8170
|
{
|
|
8180
8171
|
onClick: () => setTxStep("input"),
|
|
@@ -8184,7 +8175,7 @@ var SendModal = ({
|
|
|
8184
8175
|
children: "Back"
|
|
8185
8176
|
}
|
|
8186
8177
|
),
|
|
8187
|
-
/* @__PURE__ */
|
|
8178
|
+
/* @__PURE__ */ jsxs19(
|
|
8188
8179
|
Button,
|
|
8189
8180
|
{
|
|
8190
8181
|
onClick: handleConfirm,
|
|
@@ -8192,28 +8183,28 @@ var SendModal = ({
|
|
|
8192
8183
|
className: "flex-1",
|
|
8193
8184
|
size: "lg",
|
|
8194
8185
|
children: [
|
|
8195
|
-
isLoading && /* @__PURE__ */
|
|
8186
|
+
isLoading && /* @__PURE__ */ jsx28(Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
8196
8187
|
"Confirm"
|
|
8197
8188
|
]
|
|
8198
8189
|
}
|
|
8199
8190
|
)
|
|
8200
8191
|
] })
|
|
8201
8192
|
] }),
|
|
8202
|
-
txStep === "pending" && /* @__PURE__ */
|
|
8203
|
-
/* @__PURE__ */
|
|
8204
|
-
/* @__PURE__ */
|
|
8205
|
-
/* @__PURE__ */
|
|
8206
|
-
/* @__PURE__ */
|
|
8193
|
+
txStep === "pending" && /* @__PURE__ */ jsxs19("div", { className: "py-8 text-center space-y-4", children: [
|
|
8194
|
+
/* @__PURE__ */ jsx28(Loader2, { className: `h-12 w-12 animate-spin ${isDark ? "text-blue-400" : "text-blue-600"} mx-auto` }),
|
|
8195
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
8196
|
+
/* @__PURE__ */ jsx28("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Pending" }),
|
|
8197
|
+
/* @__PURE__ */ jsx28("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Please wait while we process your transaction" })
|
|
8207
8198
|
] })
|
|
8208
8199
|
] }),
|
|
8209
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
8210
|
-
/* @__PURE__ */
|
|
8211
|
-
/* @__PURE__ */
|
|
8212
|
-
/* @__PURE__ */
|
|
8213
|
-
/* @__PURE__ */
|
|
8200
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
|
|
8201
|
+
/* @__PURE__ */ jsxs19("div", { className: "text-center py-4", children: [
|
|
8202
|
+
/* @__PURE__ */ jsx28(CheckCircle26, { className: `h-12 w-12 ${isDark ? "text-green-400" : "text-green-500"} mx-auto mb-3` }),
|
|
8203
|
+
/* @__PURE__ */ jsx28("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Sent!" }),
|
|
8204
|
+
/* @__PURE__ */ jsx28("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Your transaction is being processed" })
|
|
8214
8205
|
] }),
|
|
8215
|
-
/* @__PURE__ */
|
|
8216
|
-
/* @__PURE__ */
|
|
8206
|
+
/* @__PURE__ */ jsx28("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: /* @__PURE__ */ jsx28(UserOpStatus, { userOpHash, chain: lumiaBeam }) }),
|
|
8207
|
+
/* @__PURE__ */ jsx28(
|
|
8217
8208
|
Button,
|
|
8218
8209
|
{
|
|
8219
8210
|
onClick: handleClose,
|
|
@@ -8233,11 +8224,11 @@ var SendModal = ({
|
|
|
8233
8224
|
init_dialog();
|
|
8234
8225
|
import { useState as useState13, useEffect as useEffect10 } from "react";
|
|
8235
8226
|
init_button();
|
|
8236
|
-
import { QrCode, Copy as Copy4, ArrowLeft as
|
|
8227
|
+
import { QrCode, Copy as Copy4, ArrowLeft as ArrowLeft9, CheckCircle2 as CheckCircle27 } from "lucide-react";
|
|
8237
8228
|
init_LumiaPassportContext();
|
|
8238
8229
|
init_useTheme();
|
|
8239
8230
|
import QRCode from "qrcode";
|
|
8240
|
-
import { Fragment as Fragment5, jsx as
|
|
8231
|
+
import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
8241
8232
|
var ReceiveModal = ({
|
|
8242
8233
|
open,
|
|
8243
8234
|
onOpenChange,
|
|
@@ -8278,7 +8269,7 @@ var ReceiveModal = ({
|
|
|
8278
8269
|
if (!addr) return "";
|
|
8279
8270
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
8280
8271
|
};
|
|
8281
|
-
return /* @__PURE__ */
|
|
8272
|
+
return /* @__PURE__ */ jsx29(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs20(
|
|
8282
8273
|
DialogContent,
|
|
8283
8274
|
{
|
|
8284
8275
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8290,51 +8281,51 @@ var ReceiveModal = ({
|
|
|
8290
8281
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8291
8282
|
},
|
|
8292
8283
|
children: [
|
|
8293
|
-
/* @__PURE__ */
|
|
8294
|
-
/* @__PURE__ */
|
|
8295
|
-
/* @__PURE__ */
|
|
8296
|
-
onBack && /* @__PURE__ */
|
|
8284
|
+
/* @__PURE__ */ jsx29(VisuallyHidden, { children: /* @__PURE__ */ jsx29(DialogTitle, { children: "Receive LUMIA" }) }),
|
|
8285
|
+
/* @__PURE__ */ jsx29(DialogDescription, { className: "sr-only", children: "Your wallet address and QR code for receiving LUMIA" }),
|
|
8286
|
+
/* @__PURE__ */ jsx29("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
|
|
8287
|
+
onBack && /* @__PURE__ */ jsx29(
|
|
8297
8288
|
"button",
|
|
8298
8289
|
{
|
|
8299
8290
|
onClick: onBack,
|
|
8300
8291
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8301
8292
|
title: "Back",
|
|
8302
|
-
children: /* @__PURE__ */
|
|
8293
|
+
children: /* @__PURE__ */ jsx29(ArrowLeft9, { className: "h-4 w-4" })
|
|
8303
8294
|
}
|
|
8304
8295
|
),
|
|
8305
|
-
/* @__PURE__ */
|
|
8306
|
-
/* @__PURE__ */
|
|
8307
|
-
/* @__PURE__ */
|
|
8296
|
+
/* @__PURE__ */ jsxs20("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8297
|
+
/* @__PURE__ */ jsx29(QrCode, { className: "h-5 w-5" }),
|
|
8298
|
+
/* @__PURE__ */ jsx29("span", { children: "Receive LUMIA" })
|
|
8308
8299
|
] })
|
|
8309
8300
|
] }) }),
|
|
8310
|
-
/* @__PURE__ */
|
|
8311
|
-
qrCodeUrl && /* @__PURE__ */
|
|
8312
|
-
/* @__PURE__ */
|
|
8313
|
-
/* @__PURE__ */
|
|
8314
|
-
/* @__PURE__ */
|
|
8301
|
+
/* @__PURE__ */ jsxs20("div", { className: "p-5 space-y-4", children: [
|
|
8302
|
+
qrCodeUrl && /* @__PURE__ */ jsx29("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx29("div", { className: `${isDark ? "bg-white" : "bg-white"} p-4 rounded-xl border ${theme.divider}`, children: /* @__PURE__ */ jsx29("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
|
|
8303
|
+
/* @__PURE__ */ jsx29("div", { className: `${isDark ? "bg-blue-900/30 border-blue-600" : "bg-blue-50 border-blue-200"} rounded-lg p-3`, children: /* @__PURE__ */ jsx29("div", { className: `flex items-center gap-2 ${isDark ? "text-blue-300" : "text-blue-700"} text-sm`, children: /* @__PURE__ */ jsxs20("div", { className: "flex-1", children: [
|
|
8304
|
+
/* @__PURE__ */ jsx29("p", { className: "font-medium", children: "Network: Lumia Beam" }),
|
|
8305
|
+
/* @__PURE__ */ jsx29("p", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} mt-0.5`, children: "Ensure sender is on the same network" })
|
|
8315
8306
|
] }) }) }),
|
|
8316
|
-
/* @__PURE__ */
|
|
8317
|
-
/* @__PURE__ */
|
|
8318
|
-
/* @__PURE__ */
|
|
8319
|
-
/* @__PURE__ */
|
|
8307
|
+
/* @__PURE__ */ jsxs20("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
|
|
8308
|
+
/* @__PURE__ */ jsx29("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Your Wallet Address" }),
|
|
8309
|
+
/* @__PURE__ */ jsx29("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx29("div", { className: `flex-1 font-mono text-sm ${isDark ? "text-white bg-gray-700 border-gray-600" : "text-gray-900 bg-white border-gray-300"} rounded-lg px-3 py-2 break-all`, children: address }) }),
|
|
8310
|
+
/* @__PURE__ */ jsx29(
|
|
8320
8311
|
Button,
|
|
8321
8312
|
{
|
|
8322
8313
|
onClick: handleCopy,
|
|
8323
8314
|
className: "w-full mt-3",
|
|
8324
8315
|
size: "lg",
|
|
8325
|
-
children: copied ? /* @__PURE__ */
|
|
8326
|
-
/* @__PURE__ */
|
|
8327
|
-
/* @__PURE__ */
|
|
8328
|
-
] }) : /* @__PURE__ */
|
|
8329
|
-
/* @__PURE__ */
|
|
8330
|
-
/* @__PURE__ */
|
|
8316
|
+
children: copied ? /* @__PURE__ */ jsxs20(Fragment5, { children: [
|
|
8317
|
+
/* @__PURE__ */ jsx29(CheckCircle27, { className: "h-4 w-4" }),
|
|
8318
|
+
/* @__PURE__ */ jsx29("span", { children: "Copied!" })
|
|
8319
|
+
] }) : /* @__PURE__ */ jsxs20(Fragment5, { children: [
|
|
8320
|
+
/* @__PURE__ */ jsx29(Copy4, { className: "h-4 w-4" }),
|
|
8321
|
+
/* @__PURE__ */ jsx29("span", { children: "Copy Address" })
|
|
8331
8322
|
] })
|
|
8332
8323
|
}
|
|
8333
8324
|
)
|
|
8334
8325
|
] }),
|
|
8335
|
-
/* @__PURE__ */
|
|
8336
|
-
/* @__PURE__ */
|
|
8337
|
-
/* @__PURE__ */
|
|
8326
|
+
/* @__PURE__ */ jsxs20("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
8327
|
+
/* @__PURE__ */ jsx29("p", { children: "Share this address to receive LUMIA tokens." }),
|
|
8328
|
+
/* @__PURE__ */ jsx29("p", { className: "mt-1", children: "Only send LUMIA tokens to this address on Lumia Beam network." })
|
|
8338
8329
|
] })
|
|
8339
8330
|
] })
|
|
8340
8331
|
]
|
|
@@ -8347,12 +8338,12 @@ init_dialog();
|
|
|
8347
8338
|
init_button();
|
|
8348
8339
|
init_LumiaPassportContext();
|
|
8349
8340
|
init_useTheme();
|
|
8350
|
-
import { CreditCard, ArrowLeft as
|
|
8351
|
-
import { jsx as
|
|
8341
|
+
import { CreditCard, ArrowLeft as ArrowLeft10 } from "lucide-react";
|
|
8342
|
+
import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
8352
8343
|
var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
8353
8344
|
const { config } = useLumiaPassportConfig();
|
|
8354
8345
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8355
|
-
return /* @__PURE__ */
|
|
8346
|
+
return /* @__PURE__ */ jsx30(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs21(
|
|
8356
8347
|
DialogContent,
|
|
8357
8348
|
{
|
|
8358
8349
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8364,26 +8355,26 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8364
8355
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8365
8356
|
},
|
|
8366
8357
|
children: [
|
|
8367
|
-
/* @__PURE__ */
|
|
8368
|
-
/* @__PURE__ */
|
|
8369
|
-
/* @__PURE__ */
|
|
8370
|
-
onBack && /* @__PURE__ */
|
|
8358
|
+
/* @__PURE__ */ jsx30(VisuallyHidden, { children: /* @__PURE__ */ jsx30(DialogTitle, { children: "Buy Crypto" }) }),
|
|
8359
|
+
/* @__PURE__ */ jsx30(DialogDescription, { className: "sr-only", children: "On-ramp placeholder" }),
|
|
8360
|
+
/* @__PURE__ */ jsx30("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
|
|
8361
|
+
onBack && /* @__PURE__ */ jsx30(
|
|
8371
8362
|
"button",
|
|
8372
8363
|
{
|
|
8373
8364
|
onClick: onBack,
|
|
8374
8365
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8375
8366
|
title: "Back",
|
|
8376
|
-
children: /* @__PURE__ */
|
|
8367
|
+
children: /* @__PURE__ */ jsx30(ArrowLeft10, { className: "h-4 w-4" })
|
|
8377
8368
|
}
|
|
8378
8369
|
),
|
|
8379
|
-
/* @__PURE__ */
|
|
8380
|
-
/* @__PURE__ */
|
|
8381
|
-
/* @__PURE__ */
|
|
8370
|
+
/* @__PURE__ */ jsxs21("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8371
|
+
/* @__PURE__ */ jsx30(CreditCard, { className: "h-5 w-5" }),
|
|
8372
|
+
/* @__PURE__ */ jsx30("span", { children: "Buy" })
|
|
8382
8373
|
] })
|
|
8383
8374
|
] }) }),
|
|
8384
|
-
/* @__PURE__ */
|
|
8385
|
-
/* @__PURE__ */
|
|
8386
|
-
/* @__PURE__ */
|
|
8375
|
+
/* @__PURE__ */ jsxs21("div", { className: "p-5", children: [
|
|
8376
|
+
/* @__PURE__ */ jsx30("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx30("div", { className: `text-sm ${theme.mutedText}`, children: "On-ramp coming soon\u2026" }) }),
|
|
8377
|
+
/* @__PURE__ */ jsx30("div", { className: "pt-4", children: /* @__PURE__ */ jsx30(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
|
|
8387
8378
|
] })
|
|
8388
8379
|
]
|
|
8389
8380
|
}
|
|
@@ -8395,14 +8386,14 @@ init_dialog();
|
|
|
8395
8386
|
init_button();
|
|
8396
8387
|
init_LumiaPassportContext();
|
|
8397
8388
|
init_useTheme();
|
|
8398
|
-
import { ShieldCheck, ArrowLeft as
|
|
8399
|
-
import { jsx as
|
|
8389
|
+
import { ShieldCheck, ArrowLeft as ArrowLeft11 } from "lucide-react";
|
|
8390
|
+
import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
8400
8391
|
var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
8401
8392
|
const { config } = useLumiaPassportConfig();
|
|
8402
8393
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8403
8394
|
const provider = config.kyc?.provider;
|
|
8404
8395
|
const options = config.kyc?.options || {};
|
|
8405
|
-
return /* @__PURE__ */
|
|
8396
|
+
return /* @__PURE__ */ jsx31(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs22(
|
|
8406
8397
|
DialogContent,
|
|
8407
8398
|
{
|
|
8408
8399
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8414,32 +8405,32 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8414
8405
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8415
8406
|
},
|
|
8416
8407
|
children: [
|
|
8417
|
-
/* @__PURE__ */
|
|
8418
|
-
/* @__PURE__ */
|
|
8419
|
-
/* @__PURE__ */
|
|
8420
|
-
onBack && /* @__PURE__ */
|
|
8408
|
+
/* @__PURE__ */ jsx31(VisuallyHidden, { children: /* @__PURE__ */ jsx31(DialogTitle, { children: "KYC" }) }),
|
|
8409
|
+
/* @__PURE__ */ jsx31(DialogDescription, { className: "sr-only", children: "KYC placeholder" }),
|
|
8410
|
+
/* @__PURE__ */ jsx31("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
|
|
8411
|
+
onBack && /* @__PURE__ */ jsx31(
|
|
8421
8412
|
"button",
|
|
8422
8413
|
{
|
|
8423
8414
|
onClick: onBack,
|
|
8424
8415
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8425
8416
|
title: "Back",
|
|
8426
|
-
children: /* @__PURE__ */
|
|
8417
|
+
children: /* @__PURE__ */ jsx31(ArrowLeft11, { className: "h-4 w-4" })
|
|
8427
8418
|
}
|
|
8428
8419
|
),
|
|
8429
|
-
/* @__PURE__ */
|
|
8430
|
-
/* @__PURE__ */
|
|
8431
|
-
/* @__PURE__ */
|
|
8420
|
+
/* @__PURE__ */ jsxs22("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8421
|
+
/* @__PURE__ */ jsx31(ShieldCheck, { className: "h-5 w-5" }),
|
|
8422
|
+
/* @__PURE__ */ jsx31("span", { children: "KYC" })
|
|
8432
8423
|
] })
|
|
8433
8424
|
] }) }),
|
|
8434
|
-
/* @__PURE__ */
|
|
8435
|
-
provider ? /* @__PURE__ */
|
|
8436
|
-
/* @__PURE__ */
|
|
8425
|
+
/* @__PURE__ */ jsxs22("div", { className: "p-5", children: [
|
|
8426
|
+
provider ? /* @__PURE__ */ jsxs22("div", { className: `rounded-xl p-4 ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: [
|
|
8427
|
+
/* @__PURE__ */ jsxs22("div", { className: `text-sm ${theme.titleText} mb-2`, children: [
|
|
8437
8428
|
"KYC provider: ",
|
|
8438
|
-
/* @__PURE__ */
|
|
8429
|
+
/* @__PURE__ */ jsx31("span", { className: "font-medium", children: provider })
|
|
8439
8430
|
] }),
|
|
8440
|
-
Object.keys(options).length > 0 ? /* @__PURE__ */
|
|
8441
|
-
] }) : /* @__PURE__ */
|
|
8442
|
-
/* @__PURE__ */
|
|
8431
|
+
Object.keys(options).length > 0 ? /* @__PURE__ */ jsx31("div", { className: `text-xs ${theme.mutedText} break-words whitespace-pre-wrap`, children: JSON.stringify(options, null, 2) }) : /* @__PURE__ */ jsx31("div", { className: `text-sm ${theme.mutedText}`, children: "No provider options configured." })
|
|
8432
|
+
] }) : /* @__PURE__ */ jsx31("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx31("div", { className: `text-sm ${theme.mutedText}`, children: "KYC verification coming soon\u2026" }) }),
|
|
8433
|
+
/* @__PURE__ */ jsx31("div", { className: "pt-4", children: /* @__PURE__ */ jsx31(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
|
|
8443
8434
|
] })
|
|
8444
8435
|
]
|
|
8445
8436
|
}
|
|
@@ -8499,7 +8490,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
8499
8490
|
// package.json
|
|
8500
8491
|
var package_default = {
|
|
8501
8492
|
name: "@lumiapassport/ui-kit",
|
|
8502
|
-
version: "1.
|
|
8493
|
+
version: "1.5.1",
|
|
8503
8494
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
8504
8495
|
type: "module",
|
|
8505
8496
|
main: "./dist/index.cjs",
|
|
@@ -8589,7 +8580,7 @@ var package_default = {
|
|
|
8589
8580
|
};
|
|
8590
8581
|
|
|
8591
8582
|
// src/components/ConnectWalletButton.tsx
|
|
8592
|
-
import { jsx as
|
|
8583
|
+
import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
8593
8584
|
var ConnectWalletButton = ({
|
|
8594
8585
|
className,
|
|
8595
8586
|
label = "Connect Wallet",
|
|
@@ -8641,6 +8632,9 @@ var ConnectWalletButton = ({
|
|
|
8641
8632
|
const [isKycOpen, setIsKycOpen] = React27.useState(false);
|
|
8642
8633
|
React27.useEffect(() => {
|
|
8643
8634
|
if (!callbacks?.onWalletReady) return;
|
|
8635
|
+
if (!config.projectId) {
|
|
8636
|
+
return;
|
|
8637
|
+
}
|
|
8644
8638
|
(async () => {
|
|
8645
8639
|
try {
|
|
8646
8640
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
@@ -8650,7 +8644,7 @@ var ConnectWalletButton = ({
|
|
|
8650
8644
|
console.warn("[UI-KIT] Failed to register onWalletReady callback:", e);
|
|
8651
8645
|
}
|
|
8652
8646
|
})();
|
|
8653
|
-
}, [callbacks?.onWalletReady]);
|
|
8647
|
+
}, [callbacks?.onWalletReady, config.projectId]);
|
|
8654
8648
|
React27.useEffect(() => {
|
|
8655
8649
|
try {
|
|
8656
8650
|
const shouldAutoOpen = authOpen ?? config?.ui?.authOpen;
|
|
@@ -8706,6 +8700,9 @@ var ConnectWalletButton = ({
|
|
|
8706
8700
|
const userId = loginResponse.userId;
|
|
8707
8701
|
const hasServerKeyshare = loginResponse.hasKeyshare ?? false;
|
|
8708
8702
|
try {
|
|
8703
|
+
if (!config.projectId) {
|
|
8704
|
+
throw new Error("projectId is not configured. Cannot authenticate with iframe.");
|
|
8705
|
+
}
|
|
8709
8706
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8710
8707
|
const iframeManager = getIframeManager2();
|
|
8711
8708
|
await iframeManager.authenticate(userId);
|
|
@@ -8844,6 +8841,9 @@ var ConnectWalletButton = ({
|
|
|
8844
8841
|
if (autoConnectAttemptedRef.current) return;
|
|
8845
8842
|
const tryAutoConnect = async (attempt) => {
|
|
8846
8843
|
if (address || session) return;
|
|
8844
|
+
if (!config.projectId) {
|
|
8845
|
+
return;
|
|
8846
|
+
}
|
|
8847
8847
|
try {
|
|
8848
8848
|
const { waitForIframe: waitForIframe2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8849
8849
|
await waitForIframe2();
|
|
@@ -8883,12 +8883,14 @@ var ConnectWalletButton = ({
|
|
|
8883
8883
|
callbacks?.onLumiaPassportAccount?.({ userId, address: addr, session: sess, hasKeyshare: finalHasKeyshare });
|
|
8884
8884
|
} catch {
|
|
8885
8885
|
}
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
8889
|
-
|
|
8890
|
-
|
|
8891
|
-
|
|
8886
|
+
if (config.projectId) {
|
|
8887
|
+
try {
|
|
8888
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8889
|
+
const iframeManager = getIframeManager2();
|
|
8890
|
+
await iframeManager.authenticate(userId);
|
|
8891
|
+
} catch (e) {
|
|
8892
|
+
console.warn("[UI-KIT][AutoConnect] iframe authentication failed:", e);
|
|
8893
|
+
}
|
|
8892
8894
|
}
|
|
8893
8895
|
try {
|
|
8894
8896
|
const { checkServerBackupAvailability: checkServerBackupAvailability2, updateBackupStatus: updateBackupStatus2, getShareRecoveryStats: getShareRecoveryStats2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -8926,8 +8928,8 @@ var ConnectWalletButton = ({
|
|
|
8926
8928
|
refetchBalance();
|
|
8927
8929
|
}
|
|
8928
8930
|
}, [address]);
|
|
8929
|
-
return /* @__PURE__ */
|
|
8930
|
-
/* @__PURE__ */
|
|
8931
|
+
return /* @__PURE__ */ jsxs23("div", { className: [className, "lumia-scope"].filter(Boolean).join(" "), children: [
|
|
8932
|
+
/* @__PURE__ */ jsx32("div", { className: "inline-flex items-center gap-2", children: !address ? /* @__PURE__ */ jsx32("div", { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ jsx32(
|
|
8931
8933
|
"button",
|
|
8932
8934
|
{
|
|
8933
8935
|
onClick: () => {
|
|
@@ -8962,7 +8964,7 @@ var ConnectWalletButton = ({
|
|
|
8962
8964
|
},
|
|
8963
8965
|
children: label || "Connect"
|
|
8964
8966
|
}
|
|
8965
|
-
) }) : /* @__PURE__ */
|
|
8967
|
+
) }) : /* @__PURE__ */ jsx32(
|
|
8966
8968
|
"div",
|
|
8967
8969
|
{
|
|
8968
8970
|
className: `relative rounded-2xl p-4 shadow-lg cursor-pointer transition-all duration-200 hover:scale-105 hover:shadow-xl max-w-sm min-w-[280px] backdrop-blur`,
|
|
@@ -8973,51 +8975,51 @@ var ConnectWalletButton = ({
|
|
|
8973
8975
|
borderColor: config.ui.colors?.[isDark ? "dark" : "light"]?.connectedButtonBorder || (isDark ? "#374151" : "#e5e7eb")
|
|
8974
8976
|
},
|
|
8975
8977
|
onClick: () => setIsWalletMenuOpen(true),
|
|
8976
|
-
children: /* @__PURE__ */
|
|
8977
|
-
/* @__PURE__ */
|
|
8978
|
+
children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-3", children: [
|
|
8979
|
+
/* @__PURE__ */ jsx32("div", { className: "w-10 h-10 rounded-full flex items-center justify-center flex-shrink-0 overflow-hidden bg-gradient-to-br from-purple-500 to-blue-600", children: avatar ? (
|
|
8978
8980
|
// eslint-disable-next-line @next/next/no-img-element
|
|
8979
|
-
/* @__PURE__ */
|
|
8980
|
-
) : /* @__PURE__ */
|
|
8981
|
-
/* @__PURE__ */
|
|
8982
|
-
/* @__PURE__ */
|
|
8983
|
-
/* @__PURE__ */
|
|
8981
|
+
/* @__PURE__ */ jsx32("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
|
|
8982
|
+
) : /* @__PURE__ */ jsx32("span", { className: "text-white font-bold text-sm", children: "LP" }) }),
|
|
8983
|
+
/* @__PURE__ */ jsxs23("div", { className: "text-left flex-1 min-w-0", children: [
|
|
8984
|
+
/* @__PURE__ */ jsx32("div", { className: `font-semibold text-base truncate ${theme.titleText}`, children: mode === "compact" && displayName ? displayName : formatAddress(address) }),
|
|
8985
|
+
/* @__PURE__ */ jsxs23("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
8984
8986
|
formatBalance(),
|
|
8985
8987
|
" LUMIA"
|
|
8986
8988
|
] })
|
|
8987
8989
|
] }),
|
|
8988
|
-
/* @__PURE__ */
|
|
8989
|
-
/* @__PURE__ */
|
|
8990
|
-
/* @__PURE__ */
|
|
8990
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-1", children: [
|
|
8991
|
+
/* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
|
|
8992
|
+
/* @__PURE__ */ jsx32(
|
|
8991
8993
|
Cloud3,
|
|
8992
8994
|
{
|
|
8993
8995
|
className: `w-3 h-3 ${indicators.server ? "text-green-500" : "text-orange-400"}`
|
|
8994
8996
|
}
|
|
8995
8997
|
),
|
|
8996
|
-
/* @__PURE__ */
|
|
8998
|
+
/* @__PURE__ */ jsxs23("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
|
|
8997
8999
|
"Server Keyshare: ",
|
|
8998
9000
|
indicators.server ? "Available" : "Missing"
|
|
8999
9001
|
] })
|
|
9000
9002
|
] }),
|
|
9001
|
-
/* @__PURE__ */
|
|
9002
|
-
/* @__PURE__ */
|
|
9003
|
+
/* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
|
|
9004
|
+
/* @__PURE__ */ jsx32(
|
|
9003
9005
|
Laptop2,
|
|
9004
9006
|
{
|
|
9005
9007
|
className: `w-3 h-3 ${indicators.local ? "text-green-500" : "text-orange-400"}`
|
|
9006
9008
|
}
|
|
9007
9009
|
),
|
|
9008
|
-
/* @__PURE__ */
|
|
9010
|
+
/* @__PURE__ */ jsxs23("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
|
|
9009
9011
|
"Local Keyshare: ",
|
|
9010
9012
|
indicators.local ? "Available" : "Missing"
|
|
9011
9013
|
] })
|
|
9012
9014
|
] }),
|
|
9013
|
-
/* @__PURE__ */
|
|
9014
|
-
/* @__PURE__ */
|
|
9015
|
+
/* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
|
|
9016
|
+
/* @__PURE__ */ jsx32(
|
|
9015
9017
|
Shield4,
|
|
9016
9018
|
{
|
|
9017
9019
|
className: `w-3 h-3 ${indicators.backup ? "text-green-500" : "text-orange-400"}`
|
|
9018
9020
|
}
|
|
9019
9021
|
),
|
|
9020
|
-
/* @__PURE__ */
|
|
9022
|
+
/* @__PURE__ */ jsxs23("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
|
|
9021
9023
|
"Vault Backup: ",
|
|
9022
9024
|
indicators.backup ? "Available" : "Not Found"
|
|
9023
9025
|
] })
|
|
@@ -9026,62 +9028,62 @@ var ConnectWalletButton = ({
|
|
|
9026
9028
|
] })
|
|
9027
9029
|
}
|
|
9028
9030
|
) }),
|
|
9029
|
-
isWalletMenuOpen && address && /* @__PURE__ */
|
|
9030
|
-
/* @__PURE__ */
|
|
9031
|
-
/* @__PURE__ */
|
|
9032
|
-
/* @__PURE__ */
|
|
9033
|
-
/* @__PURE__ */
|
|
9031
|
+
isWalletMenuOpen && address && /* @__PURE__ */ jsx32("div", { className: "fixed inset-0 z-[60]", children: /* @__PURE__ */ jsx32(Dialog, { open: isWalletMenuOpen, onOpenChange: setIsWalletMenuOpen, children: /* @__PURE__ */ jsxs23(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
9032
|
+
/* @__PURE__ */ jsx32(VisuallyHidden, { children: /* @__PURE__ */ jsx32(DialogTitle, { children: "Wallet Menu" }) }),
|
|
9033
|
+
/* @__PURE__ */ jsx32(DialogDescription, { className: "sr-only", children: "Smart Account wallet actions and status" }),
|
|
9034
|
+
/* @__PURE__ */ jsx32("div", { className: `p-4 border-b ${theme.divider}`, children: /* @__PURE__ */ jsx32("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-4", children: [
|
|
9035
|
+
/* @__PURE__ */ jsx32("div", { className: "w-12 h-12 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center relative overflow-hidden", children: avatar ? (
|
|
9034
9036
|
// eslint-disable-next-line @next/next/no-img-element
|
|
9035
|
-
/* @__PURE__ */
|
|
9036
|
-
) : /* @__PURE__ */
|
|
9037
|
-
/* @__PURE__ */
|
|
9038
|
-
/* @__PURE__ */
|
|
9039
|
-
/* @__PURE__ */
|
|
9040
|
-
/* @__PURE__ */
|
|
9041
|
-
/* @__PURE__ */
|
|
9037
|
+
/* @__PURE__ */ jsx32("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
|
|
9038
|
+
) : /* @__PURE__ */ jsx32("span", { className: "text-white font-bold text-lg", children: "L" }) }),
|
|
9039
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
|
|
9040
|
+
/* @__PURE__ */ jsx32("div", { className: `font-medium text-left text-lg ${theme.titleText}`, children: displayName || "Smart Account" }),
|
|
9041
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-2", children: [
|
|
9042
|
+
/* @__PURE__ */ jsx32("div", { className: `text-sm ${theme.mutedText}`, children: formatAddress(address) }),
|
|
9043
|
+
/* @__PURE__ */ jsx32("button", { onClick: async () => {
|
|
9042
9044
|
try {
|
|
9043
9045
|
await navigator.clipboard.writeText(address);
|
|
9044
9046
|
setCopied(true);
|
|
9045
9047
|
setTimeout(() => setCopied(false), 1500);
|
|
9046
9048
|
} catch {
|
|
9047
9049
|
}
|
|
9048
|
-
}, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */
|
|
9050
|
+
}, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ jsx32("span", { className: "text-green-500 text-sm", children: "\u2713" }) : /* @__PURE__ */ jsx32(Copy5, { className: "w-4 h-4" }) })
|
|
9049
9051
|
] })
|
|
9050
9052
|
] })
|
|
9051
9053
|
] }) }) }),
|
|
9052
|
-
/* @__PURE__ */
|
|
9053
|
-
/* @__PURE__ */
|
|
9054
|
-
/* @__PURE__ */
|
|
9054
|
+
/* @__PURE__ */ jsxs23("div", { className: "p-4", children: [
|
|
9055
|
+
/* @__PURE__ */ jsxs23("div", { className: "grid grid-cols-3 gap-2 mb-4", children: [
|
|
9056
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9055
9057
|
setIsWalletMenuOpen(false);
|
|
9056
9058
|
setIsSendOpen(true);
|
|
9057
9059
|
}, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-blue-400" : "bg-blue-50 hover:bg-blue-100 text-blue-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
|
|
9058
|
-
/* @__PURE__ */
|
|
9059
|
-
/* @__PURE__ */
|
|
9060
|
+
/* @__PURE__ */ jsx32(ArrowUp, { className: "w-5 h-5" }),
|
|
9061
|
+
/* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Send" })
|
|
9060
9062
|
] }),
|
|
9061
|
-
/* @__PURE__ */
|
|
9063
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9062
9064
|
setIsWalletMenuOpen(false);
|
|
9063
9065
|
setIsReceiveOpen(true);
|
|
9064
9066
|
}, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-green-400" : "bg-green-50 hover:bg-green-100 text-green-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
|
|
9065
|
-
/* @__PURE__ */
|
|
9066
|
-
/* @__PURE__ */
|
|
9067
|
+
/* @__PURE__ */ jsx32(ArrowDown, { className: "w-5 h-5" }),
|
|
9068
|
+
/* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Receive" })
|
|
9067
9069
|
] }),
|
|
9068
|
-
/* @__PURE__ */
|
|
9070
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9069
9071
|
setIsWalletMenuOpen(false);
|
|
9070
9072
|
setIsBuyOpen(true);
|
|
9071
9073
|
}, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-purple-400" : "bg-purple-50 hover:bg-purple-100 text-purple-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
|
|
9072
|
-
/* @__PURE__ */
|
|
9073
|
-
/* @__PURE__ */
|
|
9074
|
+
/* @__PURE__ */ jsx32(Plus, { className: "w-5 h-5" }),
|
|
9075
|
+
/* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Buy" })
|
|
9074
9076
|
] })
|
|
9075
9077
|
] }),
|
|
9076
|
-
config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */
|
|
9077
|
-
/* @__PURE__ */
|
|
9078
|
-
/* @__PURE__ */
|
|
9078
|
+
config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ jsx32("div", { className: `mb-4 p-4 rounded-xl animate-glow-warning ${isDark ? "bg-red-950/90 border-2 border-red-800/80" : "bg-red-50 border-2 border-red-300"}`, children: /* @__PURE__ */ jsx32("div", { className: "flex items-start space-x-3 text-center", children: /* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
|
|
9079
|
+
/* @__PURE__ */ jsx32("div", { className: `text-sm font-bold ${isDark ? "text-red-200" : "text-red-800"}`, children: "BACKUP NOT CREATED" }),
|
|
9080
|
+
/* @__PURE__ */ jsxs23("div", { className: `text-xs mt-1.5 font-medium ${isDark ? "text-red-300/95" : "text-red-700"}`, children: [
|
|
9079
9081
|
"Your wallet will be ",
|
|
9080
|
-
/* @__PURE__ */
|
|
9082
|
+
/* @__PURE__ */ jsx32("strong", { children: "PERMANENTLY LOST" }),
|
|
9081
9083
|
" if browser data is cleared."
|
|
9082
9084
|
] }),
|
|
9083
|
-
/* @__PURE__ */
|
|
9084
|
-
/* @__PURE__ */
|
|
9085
|
+
/* @__PURE__ */ jsx32("div", { className: `text-[11px] mt-1 ${isDark ? "text-red-400/80" : "text-red-600/90"}`, children: "\u26A0\uFE0F Lumia cannot recover your wallet without a backup!" }),
|
|
9086
|
+
/* @__PURE__ */ jsxs23(
|
|
9085
9087
|
"button",
|
|
9086
9088
|
{
|
|
9087
9089
|
onClick: () => {
|
|
@@ -9090,7 +9092,7 @@ var ConnectWalletButton = ({
|
|
|
9090
9092
|
},
|
|
9091
9093
|
className: `mt-3 px-4 py-2 text-xs font-bold rounded-lg transition-all hover:scale-105 ${isDark ? "bg-red-700/80 hover:bg-red-600/90 text-white shadow-lg" : "bg-red-600 hover:bg-red-700 text-white shadow-lg"}`,
|
|
9092
9094
|
children: [
|
|
9093
|
-
/* @__PURE__ */
|
|
9095
|
+
/* @__PURE__ */ jsx32(ShieldCheck2, { className: "w-3.5 h-3.5 inline mr-1.5" }),
|
|
9094
9096
|
"Create Backup Now"
|
|
9095
9097
|
]
|
|
9096
9098
|
}
|
|
@@ -9099,12 +9101,12 @@ var ConnectWalletButton = ({
|
|
|
9099
9101
|
(() => {
|
|
9100
9102
|
const providers = jwtTokenManager2.getProviders();
|
|
9101
9103
|
const hasEmail = providers.includes("email");
|
|
9102
|
-
return config.warnings?.emailNotConnectedWarning && !hasEmail && /* @__PURE__ */
|
|
9103
|
-
/* @__PURE__ */
|
|
9104
|
-
/* @__PURE__ */
|
|
9105
|
-
/* @__PURE__ */
|
|
9106
|
-
/* @__PURE__ */
|
|
9107
|
-
/* @__PURE__ */
|
|
9104
|
+
return config.warnings?.emailNotConnectedWarning && !hasEmail && /* @__PURE__ */ jsx32("div", { className: `mb-4 p-3 rounded-xl ${isDark ? "bg-blue-900/20 border border-blue-900/40" : "bg-blue-50 border border-blue-200"}`, children: /* @__PURE__ */ jsxs23("div", { className: "flex items-start space-x-3", children: [
|
|
9105
|
+
/* @__PURE__ */ jsx32(AlertTriangle4, { className: `w-5 h-5 ${isDark ? "text-blue-400" : "text-blue-500"} mt-0.5 flex-shrink-0` }),
|
|
9106
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
|
|
9107
|
+
/* @__PURE__ */ jsx32("div", { className: `text-sm font-medium ${isDark ? "text-blue-300" : "text-blue-700"}`, children: "Email Not Connected" }),
|
|
9108
|
+
/* @__PURE__ */ jsx32("div", { className: `text-xs mt-1 ${isDark ? "text-blue-400/80" : "text-blue-600"}`, children: "Connect your email for easier account recovery and additional security." }),
|
|
9109
|
+
/* @__PURE__ */ jsxs23(
|
|
9108
9110
|
"button",
|
|
9109
9111
|
{
|
|
9110
9112
|
onClick: () => {
|
|
@@ -9113,7 +9115,7 @@ var ConnectWalletButton = ({
|
|
|
9113
9115
|
},
|
|
9114
9116
|
className: `mt-2 px-3 py-1.5 text-xs font-medium rounded-lg transition-colors ${isDark ? "bg-blue-900/40 hover:bg-blue-900/60 text-blue-300" : "bg-blue-100 hover:bg-blue-200 text-blue-700"}`,
|
|
9115
9117
|
children: [
|
|
9116
|
-
/* @__PURE__ */
|
|
9118
|
+
/* @__PURE__ */ jsx32(ShieldCheck2, { className: "w-3 h-3 inline mr-1" }),
|
|
9117
9119
|
"Connect Email"
|
|
9118
9120
|
]
|
|
9119
9121
|
}
|
|
@@ -9121,84 +9123,84 @@ var ConnectWalletButton = ({
|
|
|
9121
9123
|
] })
|
|
9122
9124
|
] }) });
|
|
9123
9125
|
})(),
|
|
9124
|
-
/* @__PURE__ */
|
|
9126
|
+
/* @__PURE__ */ jsx32(
|
|
9125
9127
|
"button",
|
|
9126
9128
|
{
|
|
9127
9129
|
onClick: () => address && window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank"),
|
|
9128
9130
|
className: `w-full ${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-3 mb-3 transition-colors cursor-pointer text-left`,
|
|
9129
|
-
children: /* @__PURE__ */
|
|
9130
|
-
/* @__PURE__ */
|
|
9131
|
-
/* @__PURE__ */
|
|
9132
|
-
/* @__PURE__ */
|
|
9133
|
-
/* @__PURE__ */
|
|
9134
|
-
/* @__PURE__ */
|
|
9131
|
+
children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between", children: [
|
|
9132
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-3", children: [
|
|
9133
|
+
/* @__PURE__ */ jsx32("div", { className: "w-8 h-8 rounded-full flex items-center justify-center bg-transparent overflow-hidden", children: lumiaBeam.logoDataUri ? /* @__PURE__ */ jsx32("img", { src: lumiaBeam.logoDataUri, alt: "Chain logo", className: "w-full h-full object-cover" }) : lumiaBeam.logo === "lumia" ? /* @__PURE__ */ jsx32(LumiaLogo, { size: 32 }) : /* @__PURE__ */ jsx32("span", { className: "text-white text-xs font-bold", children: (lumiaBeam.name || "L").charAt(0) }) }),
|
|
9134
|
+
/* @__PURE__ */ jsxs23("div", { children: [
|
|
9135
|
+
/* @__PURE__ */ jsx32("div", { className: `${theme.titleText} font-medium`, children: lumiaBeam.name }),
|
|
9136
|
+
/* @__PURE__ */ jsxs23("div", { className: theme.mutedText + " text-sm", children: [
|
|
9135
9137
|
formatBalance(),
|
|
9136
9138
|
" LUMIA"
|
|
9137
9139
|
] })
|
|
9138
9140
|
] })
|
|
9139
9141
|
] }),
|
|
9140
|
-
/* @__PURE__ */
|
|
9142
|
+
/* @__PURE__ */ jsx32("div", { className: theme.iconColor, children: /* @__PURE__ */ jsx32(ArrowUpRight2, { className: "w-4 h-4" }) })
|
|
9141
9143
|
] })
|
|
9142
9144
|
}
|
|
9143
9145
|
),
|
|
9144
|
-
/* @__PURE__ */
|
|
9145
|
-
config.features?.kycNeeded && /* @__PURE__ */
|
|
9146
|
+
/* @__PURE__ */ jsxs23("div", { className: "space-y-1", children: [
|
|
9147
|
+
config.features?.kycNeeded && /* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9146
9148
|
setIsWalletMenuOpen(false);
|
|
9147
9149
|
setIsKycOpen(true);
|
|
9148
9150
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9149
|
-
/* @__PURE__ */
|
|
9150
|
-
/* @__PURE__ */
|
|
9151
|
+
/* @__PURE__ */ jsx32(ShieldCheck2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9152
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "KYC" })
|
|
9151
9153
|
] }),
|
|
9152
|
-
/* @__PURE__ */
|
|
9154
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9153
9155
|
setIsWalletMenuOpen(false);
|
|
9154
9156
|
setIsTransactionsOpen(true);
|
|
9155
9157
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9156
|
-
/* @__PURE__ */
|
|
9157
|
-
/* @__PURE__ */
|
|
9158
|
+
/* @__PURE__ */ jsx32(Activity2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9159
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Transactions" })
|
|
9158
9160
|
] }),
|
|
9159
|
-
/* @__PURE__ */
|
|
9161
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9160
9162
|
setIsWalletMenuOpen(false);
|
|
9161
9163
|
setIsViewAssetsOpen(true);
|
|
9162
9164
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9163
|
-
/* @__PURE__ */
|
|
9164
|
-
/* @__PURE__ */
|
|
9165
|
+
/* @__PURE__ */ jsx32(Gem2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9166
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "View Assets" })
|
|
9165
9167
|
] }),
|
|
9166
|
-
/* @__PURE__ */
|
|
9168
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9167
9169
|
setIsWalletMenuOpen(false);
|
|
9168
9170
|
setIsManageWalletOpen(true);
|
|
9169
9171
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9170
|
-
/* @__PURE__ */
|
|
9171
|
-
/* @__PURE__ */
|
|
9172
|
+
/* @__PURE__ */ jsx32(CreditCard2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9173
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Manage Wallet" })
|
|
9172
9174
|
] }),
|
|
9173
|
-
/* @__PURE__ */
|
|
9175
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9174
9176
|
setIsWalletMenuOpen(false);
|
|
9175
9177
|
setIsSecurityOpen(true);
|
|
9176
9178
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9177
|
-
/* @__PURE__ */
|
|
9178
|
-
/* @__PURE__ */
|
|
9179
|
+
/* @__PURE__ */ jsx32(Lock2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9180
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Security" })
|
|
9179
9181
|
] }),
|
|
9180
|
-
/* @__PURE__ */
|
|
9182
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9181
9183
|
setIsWalletMenuOpen(false);
|
|
9182
9184
|
setIsBackupOpen(true);
|
|
9183
9185
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9184
|
-
/* @__PURE__ */
|
|
9185
|
-
/* @__PURE__ */
|
|
9186
|
+
/* @__PURE__ */ jsx32(Shield4, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9187
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Keyshare Backup" })
|
|
9186
9188
|
] }),
|
|
9187
|
-
/* @__PURE__ */
|
|
9189
|
+
/* @__PURE__ */ jsxs23("button", { onClick: async () => {
|
|
9188
9190
|
await handleDisconnect();
|
|
9189
9191
|
setIsWalletMenuOpen(false);
|
|
9190
9192
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-red-900/20" : "bg-transparent hover:bg-red-50"} transition-colors flex items-center space-x-3`, children: [
|
|
9191
|
-
/* @__PURE__ */
|
|
9192
|
-
/* @__PURE__ */
|
|
9193
|
+
/* @__PURE__ */ jsx32(ArrowUpRight2, { className: "w-5 h-5 text-red-600" }),
|
|
9194
|
+
/* @__PURE__ */ jsx32("span", { className: "text-red-600", children: "Disconnect Wallet" })
|
|
9193
9195
|
] })
|
|
9194
9196
|
] }),
|
|
9195
|
-
/* @__PURE__ */
|
|
9197
|
+
/* @__PURE__ */ jsx32("div", { className: `mt-3 pt-3 border-t ${theme.divider} text-center`, children: /* @__PURE__ */ jsxs23("div", { className: `text-xs ${theme.mutedText}`, children: [
|
|
9196
9198
|
"Lumia Passport v",
|
|
9197
9199
|
package_default.version
|
|
9198
9200
|
] }) })
|
|
9199
9201
|
] })
|
|
9200
9202
|
] }) }) }),
|
|
9201
|
-
/* @__PURE__ */
|
|
9203
|
+
/* @__PURE__ */ jsx32(
|
|
9202
9204
|
ManageWallet,
|
|
9203
9205
|
{
|
|
9204
9206
|
open: isManageWalletOpen,
|
|
@@ -9209,7 +9211,7 @@ var ConnectWalletButton = ({
|
|
|
9209
9211
|
}
|
|
9210
9212
|
}
|
|
9211
9213
|
),
|
|
9212
|
-
/* @__PURE__ */
|
|
9214
|
+
/* @__PURE__ */ jsx32(
|
|
9213
9215
|
SecurityModal,
|
|
9214
9216
|
{
|
|
9215
9217
|
open: isSecurityOpen,
|
|
@@ -9220,22 +9222,26 @@ var ConnectWalletButton = ({
|
|
|
9220
9222
|
}
|
|
9221
9223
|
}
|
|
9222
9224
|
),
|
|
9223
|
-
isBackupOpen && session?.mpcUserId && /* @__PURE__ */
|
|
9224
|
-
/* @__PURE__ */
|
|
9225
|
-
/* @__PURE__ */
|
|
9226
|
-
/* @__PURE__ */
|
|
9225
|
+
isBackupOpen && session?.mpcUserId && /* @__PURE__ */ jsx32(Dialog, { open: isBackupOpen, onOpenChange: setIsBackupOpen, children: /* @__PURE__ */ jsxs23(DialogContent, { className: "max-w-[400px] p-0", children: [
|
|
9226
|
+
/* @__PURE__ */ jsxs23(VisuallyHidden, { children: [
|
|
9227
|
+
/* @__PURE__ */ jsx32(DialogTitle, { children: "Keyshare Backup" }),
|
|
9228
|
+
/* @__PURE__ */ jsx32(DialogDescription, { children: "Create and manage encrypted backups of your keyshare" })
|
|
9227
9229
|
] }),
|
|
9228
|
-
/* @__PURE__ */
|
|
9230
|
+
/* @__PURE__ */ jsx32(
|
|
9229
9231
|
KeyshareBackup,
|
|
9230
9232
|
{
|
|
9231
9233
|
userId: session.mpcUserId,
|
|
9232
9234
|
onBackupSuccess: () => {
|
|
9233
9235
|
console.log("[ConnectWalletButton] Backup created successfully");
|
|
9236
|
+
},
|
|
9237
|
+
onBack: () => {
|
|
9238
|
+
setIsBackupOpen(false);
|
|
9239
|
+
setIsWalletMenuOpen(true);
|
|
9234
9240
|
}
|
|
9235
9241
|
}
|
|
9236
9242
|
)
|
|
9237
9243
|
] }) }),
|
|
9238
|
-
/* @__PURE__ */
|
|
9244
|
+
/* @__PURE__ */ jsx32(
|
|
9239
9245
|
TransactionsModal,
|
|
9240
9246
|
{
|
|
9241
9247
|
open: isTransactionsOpen,
|
|
@@ -9246,7 +9252,7 @@ var ConnectWalletButton = ({
|
|
|
9246
9252
|
}
|
|
9247
9253
|
}
|
|
9248
9254
|
),
|
|
9249
|
-
/* @__PURE__ */
|
|
9255
|
+
/* @__PURE__ */ jsx32(
|
|
9250
9256
|
ViewAssetsModal,
|
|
9251
9257
|
{
|
|
9252
9258
|
open: isViewAssetsOpen,
|
|
@@ -9257,7 +9263,7 @@ var ConnectWalletButton = ({
|
|
|
9257
9263
|
}
|
|
9258
9264
|
}
|
|
9259
9265
|
),
|
|
9260
|
-
/* @__PURE__ */
|
|
9266
|
+
/* @__PURE__ */ jsx32(
|
|
9261
9267
|
SendModal,
|
|
9262
9268
|
{
|
|
9263
9269
|
open: isSendOpen,
|
|
@@ -9268,7 +9274,7 @@ var ConnectWalletButton = ({
|
|
|
9268
9274
|
}
|
|
9269
9275
|
}
|
|
9270
9276
|
),
|
|
9271
|
-
/* @__PURE__ */
|
|
9277
|
+
/* @__PURE__ */ jsx32(
|
|
9272
9278
|
ReceiveModal,
|
|
9273
9279
|
{
|
|
9274
9280
|
open: isReceiveOpen,
|
|
@@ -9279,7 +9285,7 @@ var ConnectWalletButton = ({
|
|
|
9279
9285
|
}
|
|
9280
9286
|
}
|
|
9281
9287
|
),
|
|
9282
|
-
/* @__PURE__ */
|
|
9288
|
+
/* @__PURE__ */ jsx32(
|
|
9283
9289
|
BuyModal,
|
|
9284
9290
|
{
|
|
9285
9291
|
open: isBuyOpen,
|
|
@@ -9290,7 +9296,7 @@ var ConnectWalletButton = ({
|
|
|
9290
9296
|
}
|
|
9291
9297
|
}
|
|
9292
9298
|
),
|
|
9293
|
-
/* @__PURE__ */
|
|
9299
|
+
/* @__PURE__ */ jsx32(
|
|
9294
9300
|
KycModal,
|
|
9295
9301
|
{
|
|
9296
9302
|
open: isKycOpen,
|
|
@@ -9301,7 +9307,7 @@ var ConnectWalletButton = ({
|
|
|
9301
9307
|
}
|
|
9302
9308
|
}
|
|
9303
9309
|
),
|
|
9304
|
-
/* @__PURE__ */
|
|
9310
|
+
/* @__PURE__ */ jsx32(
|
|
9305
9311
|
AuthModal,
|
|
9306
9312
|
{
|
|
9307
9313
|
open: recoveryUserId ? isRecoveryModalOpen : isAuthModalOpen,
|
|
@@ -9318,6 +9324,7 @@ var ConnectWalletButton = ({
|
|
|
9318
9324
|
onRecoveryClose: () => {
|
|
9319
9325
|
setRecoveryUserId(null);
|
|
9320
9326
|
setIsRecoveryModalOpen(false);
|
|
9327
|
+
setIsAuthModalOpen(false);
|
|
9321
9328
|
},
|
|
9322
9329
|
callbacks,
|
|
9323
9330
|
onRecoverySuccess: async () => {
|
|
@@ -9331,6 +9338,7 @@ var ConnectWalletButton = ({
|
|
|
9331
9338
|
setStatus("ready");
|
|
9332
9339
|
setRecoveryUserId(null);
|
|
9333
9340
|
setIsRecoveryModalOpen(false);
|
|
9341
|
+
setIsAuthModalOpen(false);
|
|
9334
9342
|
onConnected?.({ address: addr, session: sess });
|
|
9335
9343
|
try {
|
|
9336
9344
|
callbacks?.onLumiaPassportConnect?.({ address: addr, session: sess });
|
|
@@ -9340,12 +9348,14 @@ var ConnectWalletButton = ({
|
|
|
9340
9348
|
callbacks?.onLumiaPassportAccount?.({ userId: recoveryUserId, address: addr, session: sess, hasKeyshare: hasServerKeyshare });
|
|
9341
9349
|
} catch {
|
|
9342
9350
|
}
|
|
9343
|
-
|
|
9344
|
-
|
|
9345
|
-
|
|
9346
|
-
|
|
9347
|
-
|
|
9348
|
-
|
|
9351
|
+
if (config.projectId) {
|
|
9352
|
+
try {
|
|
9353
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
9354
|
+
const iframeManager = getIframeManager2();
|
|
9355
|
+
await iframeManager.authenticate(recoveryUserId);
|
|
9356
|
+
} catch (e) {
|
|
9357
|
+
console.warn("[UI-KIT] iframe authentication failed:", e);
|
|
9358
|
+
}
|
|
9349
9359
|
}
|
|
9350
9360
|
try {
|
|
9351
9361
|
const { updateBackupStatus: updateBackupStatus2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -9361,7 +9371,7 @@ var ConnectWalletButton = ({
|
|
|
9361
9371
|
}
|
|
9362
9372
|
}
|
|
9363
9373
|
),
|
|
9364
|
-
/* @__PURE__ */
|
|
9374
|
+
/* @__PURE__ */ jsx32(
|
|
9365
9375
|
TssManagerWithRef,
|
|
9366
9376
|
{
|
|
9367
9377
|
ref: tssManagerRef,
|
|
@@ -9380,7 +9390,7 @@ var ConnectWalletButton = ({
|
|
|
9380
9390
|
|
|
9381
9391
|
// src/components/ThemeToggle.tsx
|
|
9382
9392
|
init_LumiaPassportContext();
|
|
9383
|
-
import { jsx as
|
|
9393
|
+
import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
9384
9394
|
var ThemeToggle = () => {
|
|
9385
9395
|
const { config, updateConfig } = useLumiaPassportConfig();
|
|
9386
9396
|
const currentTheme = config.ui.theme;
|
|
@@ -9425,7 +9435,7 @@ var ThemeToggle = () => {
|
|
|
9425
9435
|
return "auto";
|
|
9426
9436
|
}
|
|
9427
9437
|
};
|
|
9428
|
-
return /* @__PURE__ */
|
|
9438
|
+
return /* @__PURE__ */ jsx33("div", { className: "lumia-scope", children: /* @__PURE__ */ jsxs24(
|
|
9429
9439
|
"button",
|
|
9430
9440
|
{
|
|
9431
9441
|
onClick: cycleTheme,
|
|
@@ -9441,19 +9451,19 @@ var ThemeToggle = () => {
|
|
|
9441
9451
|
};
|
|
9442
9452
|
|
|
9443
9453
|
// src/components/LumiaLogo.tsx
|
|
9444
|
-
import { jsx as
|
|
9454
|
+
import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
9445
9455
|
var LumiaLogo2 = ({ size = 80, className = "" }) => {
|
|
9446
|
-
return /* @__PURE__ */
|
|
9456
|
+
return /* @__PURE__ */ jsx34(
|
|
9447
9457
|
"div",
|
|
9448
9458
|
{
|
|
9449
9459
|
className: `flex items-center justify-center ${className}`,
|
|
9450
9460
|
style: { width: size, height: size },
|
|
9451
|
-
children: /* @__PURE__ */
|
|
9452
|
-
/* @__PURE__ */
|
|
9453
|
-
/* @__PURE__ */
|
|
9454
|
-
/* @__PURE__ */
|
|
9455
|
-
/* @__PURE__ */
|
|
9456
|
-
/* @__PURE__ */
|
|
9461
|
+
children: /* @__PURE__ */ jsxs25("svg", { viewBox: "0 0 512 512", width: size, height: size, children: [
|
|
9462
|
+
/* @__PURE__ */ jsx34("circle", { cx: "256", cy: "256", r: "256", fill: "#060117", strokeWidth: "0" }),
|
|
9463
|
+
/* @__PURE__ */ jsx34("path", { d: "M264.13948,48.01032l63.62778,132.2788,133.95322,68.65102h-147.34854s-48.55804-10.04649-50.23246-56.93012,0-143.99971,0-143.99971Z", fill: "#fefdff", strokeWidth: "0" }),
|
|
9464
|
+
/* @__PURE__ */ jsx34("path", { d: "M50.27932,245.59045l132.27894-63.62734L251.20943,48.01032l-.00012,147.34824s-10.04654,48.55792-56.93019,50.23222c-46.88366,1.6743-143.9998-.00033-143.9998-.00033Z", fill: "#fefdff", strokeWidth: "0" }),
|
|
9465
|
+
/* @__PURE__ */ jsx34("path", { d: "M247.86056,463.98968l-63.62772-132.27875-133.95315-68.65092,147.34848-.00011s48.55802,10.04646,50.23242,56.93008c1.6744,46.88362-.00004,143.9997-.00004,143.9997Z", fill: "#fefdff", strokeWidth: "0" }),
|
|
9466
|
+
/* @__PURE__ */ jsx34("path", { d: "M461.72068,266.40941l-132.2789,63.62744-68.65118,133.95283.00016-147.34823s10.04655-48.55792,56.93018-50.23226c46.88364-1.67434,143.99974.00023,143.99974.00023Z", fill: "#fefdff", strokeWidth: "0" })
|
|
9457
9467
|
] })
|
|
9458
9468
|
}
|
|
9459
9469
|
);
|
|
@@ -9519,7 +9529,7 @@ function useTheme2(configTheme) {
|
|
|
9519
9529
|
init_button();
|
|
9520
9530
|
import * as React28 from "react";
|
|
9521
9531
|
import { Copy as Copy6, ExternalLink as ExternalLink5 } from "lucide-react";
|
|
9522
|
-
import { jsx as
|
|
9532
|
+
import { jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
9523
9533
|
function toExplorerUrl(kind, value, chain) {
|
|
9524
9534
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
9525
9535
|
if (!base2) return null;
|
|
@@ -9543,11 +9553,11 @@ var Hash = ({
|
|
|
9543
9553
|
const value = hash || "";
|
|
9544
9554
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
9545
9555
|
const [copied, setCopied] = React28.useState(false);
|
|
9546
|
-
if (!value) return /* @__PURE__ */
|
|
9547
|
-
return /* @__PURE__ */
|
|
9548
|
-
label && /* @__PURE__ */
|
|
9549
|
-
/* @__PURE__ */
|
|
9550
|
-
showCopy && /* @__PURE__ */
|
|
9556
|
+
if (!value) return /* @__PURE__ */ jsx35("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
9557
|
+
return /* @__PURE__ */ jsxs26("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
9558
|
+
label && /* @__PURE__ */ jsx35("span", { className: "text-sm font-medium", children: label }),
|
|
9559
|
+
/* @__PURE__ */ jsx35("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
9560
|
+
showCopy && /* @__PURE__ */ jsx35(
|
|
9551
9561
|
Button,
|
|
9552
9562
|
{
|
|
9553
9563
|
variant: "ghost",
|
|
@@ -9561,10 +9571,10 @@ var Hash = ({
|
|
|
9561
9571
|
} catch {
|
|
9562
9572
|
}
|
|
9563
9573
|
},
|
|
9564
|
-
children: /* @__PURE__ */
|
|
9574
|
+
children: /* @__PURE__ */ jsx35(Copy6, { className: "h-4 w-4" })
|
|
9565
9575
|
}
|
|
9566
9576
|
),
|
|
9567
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
9577
|
+
showExplorer && explorer && /* @__PURE__ */ jsx35(
|
|
9568
9578
|
"a",
|
|
9569
9579
|
{
|
|
9570
9580
|
href: explorer,
|
|
@@ -9572,7 +9582,7 @@ var Hash = ({
|
|
|
9572
9582
|
rel: "noreferrer noopener",
|
|
9573
9583
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
9574
9584
|
title: "Open in explorer",
|
|
9575
|
-
children: /* @__PURE__ */
|
|
9585
|
+
children: /* @__PURE__ */ jsx35(ExternalLink5, { className: "h-4 w-4" })
|
|
9576
9586
|
}
|
|
9577
9587
|
)
|
|
9578
9588
|
] });
|
|
@@ -9581,7 +9591,7 @@ var Hash = ({
|
|
|
9581
9591
|
// src/internal/components/TransactionsList.tsx
|
|
9582
9592
|
init_base();
|
|
9583
9593
|
import { useState as useState17, useEffect as useEffect13 } from "react";
|
|
9584
|
-
import { jsx as
|
|
9594
|
+
import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
9585
9595
|
var TransactionsList = ({
|
|
9586
9596
|
address,
|
|
9587
9597
|
itemsCount = 10
|
|
@@ -9635,15 +9645,15 @@ var TransactionsList = ({
|
|
|
9635
9645
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
9636
9646
|
};
|
|
9637
9647
|
if (loading) {
|
|
9638
|
-
return /* @__PURE__ */
|
|
9639
|
-
/* @__PURE__ */
|
|
9640
|
-
/* @__PURE__ */
|
|
9648
|
+
return /* @__PURE__ */ jsxs27("div", { className: "p-4 text-center", children: [
|
|
9649
|
+
/* @__PURE__ */ jsx36("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
9650
|
+
/* @__PURE__ */ jsx36("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
9641
9651
|
] });
|
|
9642
9652
|
}
|
|
9643
9653
|
if (error) {
|
|
9644
|
-
return /* @__PURE__ */
|
|
9645
|
-
/* @__PURE__ */
|
|
9646
|
-
/* @__PURE__ */
|
|
9654
|
+
return /* @__PURE__ */ jsxs27("div", { className: "p-4 text-center", children: [
|
|
9655
|
+
/* @__PURE__ */ jsx36("p", { className: "text-red-600 text-sm", children: error }),
|
|
9656
|
+
/* @__PURE__ */ jsx36(
|
|
9647
9657
|
"button",
|
|
9648
9658
|
{
|
|
9649
9659
|
onClick: () => window.location.reload(),
|
|
@@ -9654,54 +9664,54 @@ var TransactionsList = ({
|
|
|
9654
9664
|
] });
|
|
9655
9665
|
}
|
|
9656
9666
|
if (transactions.length === 0) {
|
|
9657
|
-
return /* @__PURE__ */
|
|
9667
|
+
return /* @__PURE__ */ jsx36("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx36("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
9658
9668
|
}
|
|
9659
|
-
return /* @__PURE__ */
|
|
9669
|
+
return /* @__PURE__ */ jsx36("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx36("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs27(
|
|
9660
9670
|
"div",
|
|
9661
9671
|
{
|
|
9662
9672
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
9663
9673
|
onClick: () => openTransaction(tx.hash),
|
|
9664
9674
|
children: [
|
|
9665
|
-
/* @__PURE__ */
|
|
9666
|
-
/* @__PURE__ */
|
|
9667
|
-
/* @__PURE__ */
|
|
9668
|
-
/* @__PURE__ */
|
|
9669
|
-
/* @__PURE__ */
|
|
9675
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex justify-between items-start mb-2", children: [
|
|
9676
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex-1", children: [
|
|
9677
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
9678
|
+
/* @__PURE__ */ jsx36("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress(tx.hash) }),
|
|
9679
|
+
/* @__PURE__ */ jsx36("span", { className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`, children: tx.status === "ok" ? "Success" : "Failed" })
|
|
9670
9680
|
] }),
|
|
9671
|
-
/* @__PURE__ */
|
|
9672
|
-
/* @__PURE__ */
|
|
9673
|
-
/* @__PURE__ */
|
|
9674
|
-
/* @__PURE__ */
|
|
9681
|
+
/* @__PURE__ */ jsxs27("div", { className: "text-sm space-y-1", children: [
|
|
9682
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
9683
|
+
/* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "From:" }),
|
|
9684
|
+
/* @__PURE__ */ jsxs27("span", { className: "font-mono ml-1", children: [
|
|
9675
9685
|
formatAddress(tx.from.hash),
|
|
9676
|
-
tx.from.is_contract && /* @__PURE__ */
|
|
9686
|
+
tx.from.is_contract && /* @__PURE__ */ jsx36("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
9677
9687
|
] })
|
|
9678
9688
|
] }),
|
|
9679
|
-
/* @__PURE__ */
|
|
9680
|
-
/* @__PURE__ */
|
|
9681
|
-
/* @__PURE__ */
|
|
9689
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
9690
|
+
/* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "To:" }),
|
|
9691
|
+
/* @__PURE__ */ jsxs27("span", { className: "font-mono ml-1", children: [
|
|
9682
9692
|
formatAddress(tx.to.hash),
|
|
9683
|
-
tx.to.is_contract && /* @__PURE__ */
|
|
9693
|
+
tx.to.is_contract && /* @__PURE__ */ jsx36("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
9684
9694
|
] })
|
|
9685
9695
|
] }),
|
|
9686
|
-
/* @__PURE__ */
|
|
9687
|
-
/* @__PURE__ */
|
|
9688
|
-
/* @__PURE__ */
|
|
9696
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
9697
|
+
/* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "Value:" }),
|
|
9698
|
+
/* @__PURE__ */ jsxs27("span", { className: "font-semibold ml-1", children: [
|
|
9689
9699
|
formatValue(tx.value),
|
|
9690
9700
|
" LUMIA"
|
|
9691
9701
|
] })
|
|
9692
9702
|
] })
|
|
9693
9703
|
] })
|
|
9694
9704
|
] }),
|
|
9695
|
-
/* @__PURE__ */
|
|
9696
|
-
/* @__PURE__ */
|
|
9697
|
-
/* @__PURE__ */
|
|
9705
|
+
/* @__PURE__ */ jsxs27("div", { className: "text-right text-xs text-gray-500", children: [
|
|
9706
|
+
/* @__PURE__ */ jsx36("div", { children: formatDate2(tx.timestamp) }),
|
|
9707
|
+
/* @__PURE__ */ jsxs27("div", { className: "mt-1", children: [
|
|
9698
9708
|
"Gas: ",
|
|
9699
9709
|
parseInt(tx.gas_used).toLocaleString()
|
|
9700
9710
|
] }),
|
|
9701
|
-
tx.method && /* @__PURE__ */
|
|
9711
|
+
tx.method && /* @__PURE__ */ jsx36("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
9702
9712
|
] })
|
|
9703
9713
|
] }),
|
|
9704
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
9714
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ jsx36("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx36(
|
|
9705
9715
|
"span",
|
|
9706
9716
|
{
|
|
9707
9717
|
className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full",
|