@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.cjs
CHANGED
|
@@ -2346,7 +2346,9 @@ function getIframeManager(config) {
|
|
|
2346
2346
|
iframeManagerInstance = new IframeManager(config);
|
|
2347
2347
|
}
|
|
2348
2348
|
if (!iframeManagerInstance) {
|
|
2349
|
-
throw new Error(
|
|
2349
|
+
throw new Error(
|
|
2350
|
+
'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.'
|
|
2351
|
+
);
|
|
2350
2352
|
}
|
|
2351
2353
|
return iframeManagerInstance;
|
|
2352
2354
|
}
|
|
@@ -2381,12 +2383,14 @@ var init_iframe_manager = __esm({
|
|
|
2381
2383
|
this.projectId = config.projectId;
|
|
2382
2384
|
this.debug = config.debug || false;
|
|
2383
2385
|
this.onWalletReadyCallback = config.onWalletReady;
|
|
2386
|
+
this.themeColors = config.themeColors;
|
|
2384
2387
|
this.readyPromise = new Promise((resolve) => {
|
|
2385
2388
|
this.readyResolve = resolve;
|
|
2386
2389
|
});
|
|
2387
2390
|
this.log("[IframeManager] Initialized with:", {
|
|
2388
2391
|
iframeUrl: this.iframeUrl,
|
|
2389
|
-
projectId: this.projectId
|
|
2392
|
+
projectId: this.projectId,
|
|
2393
|
+
hasThemeColors: !!this.themeColors
|
|
2390
2394
|
});
|
|
2391
2395
|
}
|
|
2392
2396
|
/**
|
|
@@ -2397,7 +2401,18 @@ var init_iframe_manager = __esm({
|
|
|
2397
2401
|
return this.readyPromise;
|
|
2398
2402
|
}
|
|
2399
2403
|
this.iframe = document.createElement("iframe");
|
|
2400
|
-
|
|
2404
|
+
let iframeUrl = this.iframeUrl;
|
|
2405
|
+
if (this.themeColors) {
|
|
2406
|
+
const params = new URLSearchParams();
|
|
2407
|
+
if (this.themeColors.background) params.set("bg", this.themeColors.background);
|
|
2408
|
+
if (this.themeColors.text) params.set("text", this.themeColors.text);
|
|
2409
|
+
if (this.themeColors.textSecondary) params.set("textSec", this.themeColors.textSecondary);
|
|
2410
|
+
if (this.themeColors.border) params.set("border", this.themeColors.border);
|
|
2411
|
+
if (params.toString()) {
|
|
2412
|
+
iframeUrl += (iframeUrl.includes("?") ? "&" : "?") + params.toString();
|
|
2413
|
+
}
|
|
2414
|
+
}
|
|
2415
|
+
this.iframe.src = iframeUrl;
|
|
2401
2416
|
this.iframe.id = "lumia-passport-iframe";
|
|
2402
2417
|
this.iframe.style.display = "none";
|
|
2403
2418
|
this.iframe.style.position = "fixed";
|
|
@@ -2907,8 +2922,8 @@ var init_LumiaPassportContext = __esm({
|
|
|
2907
2922
|
merged.projectId = initialConfig.projectId;
|
|
2908
2923
|
}
|
|
2909
2924
|
if (!merged.projectId) {
|
|
2910
|
-
console.
|
|
2911
|
-
'
|
|
2925
|
+
console.error(
|
|
2926
|
+
'\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'
|
|
2912
2927
|
);
|
|
2913
2928
|
} else {
|
|
2914
2929
|
console.log("[LumiaPassport] \u2705 Initialized with projectId:", merged.projectId);
|
|
@@ -3008,9 +3023,6 @@ var init_LumiaPassportContext = __esm({
|
|
|
3008
3023
|
if (typeof window === "undefined") return;
|
|
3009
3024
|
const projectId2 = config.projectId;
|
|
3010
3025
|
if (!projectId2) {
|
|
3011
|
-
console.warn(
|
|
3012
|
-
"[LumiaPassport] Skipping iframe initialization - projectId not configured"
|
|
3013
|
-
);
|
|
3014
3026
|
return;
|
|
3015
3027
|
}
|
|
3016
3028
|
const iframeUrl = getIframeUrl();
|
|
@@ -3020,11 +3032,14 @@ var init_LumiaPassportContext = __esm({
|
|
|
3020
3032
|
note: "All MPC operations will happen in isolated iframe context"
|
|
3021
3033
|
});
|
|
3022
3034
|
try {
|
|
3035
|
+
const isDark = config.ui.theme === "dark" || config.ui.theme === "auto" && window.matchMedia?.("(prefers-color-scheme: dark)").matches;
|
|
3036
|
+
const themeColors = isDark ? config.ui.colors?.dark : config.ui.colors?.light;
|
|
3023
3037
|
const iframeManager = getIframeManager({
|
|
3024
3038
|
iframeUrl,
|
|
3025
3039
|
projectId: projectId2,
|
|
3026
3040
|
debug: config.features?.mpcSecurity ?? true,
|
|
3027
|
-
onWalletReady: callbacks?.onWalletReady
|
|
3041
|
+
onWalletReady: callbacks?.onWalletReady,
|
|
3042
|
+
themeColors
|
|
3028
3043
|
});
|
|
3029
3044
|
iframeManager.initialize().then(() => {
|
|
3030
3045
|
console.log("[LumiaPassport] \u2705 Secure iframe wallet initialized successfully");
|
|
@@ -3455,55 +3470,37 @@ var init_LumiaLogo = __esm({
|
|
|
3455
3470
|
}
|
|
3456
3471
|
});
|
|
3457
3472
|
|
|
3458
|
-
// src/internal/components/SuccessScreen.tsx
|
|
3459
|
-
var import_jsx_runtime12, SuccessScreen;
|
|
3460
|
-
var init_SuccessScreen = __esm({
|
|
3461
|
-
"src/internal/components/SuccessScreen.tsx"() {
|
|
3462
|
-
init_useTheme();
|
|
3463
|
-
init_LumiaPassportContext();
|
|
3464
|
-
import_jsx_runtime12 = require("react/jsx-runtime");
|
|
3465
|
-
SuccessScreen = () => {
|
|
3466
|
-
const { config } = useLumiaPassportConfig();
|
|
3467
|
-
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3468
|
-
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "text-center", children: [
|
|
3469
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("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" }),
|
|
3470
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `text-lg font-medium ${theme.titleText}`, children: "Success" })
|
|
3471
|
-
] });
|
|
3472
|
-
};
|
|
3473
|
-
}
|
|
3474
|
-
});
|
|
3475
|
-
|
|
3476
3473
|
// src/internal/components/FailedScreen.tsx
|
|
3477
|
-
var
|
|
3474
|
+
var import_jsx_runtime12, FailedScreen;
|
|
3478
3475
|
var init_FailedScreen = __esm({
|
|
3479
3476
|
"src/internal/components/FailedScreen.tsx"() {
|
|
3480
3477
|
init_useTheme();
|
|
3481
3478
|
init_LumiaPassportContext();
|
|
3482
|
-
|
|
3479
|
+
import_jsx_runtime12 = require("react/jsx-runtime");
|
|
3483
3480
|
FailedScreen = ({ message = "Failed" }) => {
|
|
3484
3481
|
const { config } = useLumiaPassportConfig();
|
|
3485
3482
|
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3486
|
-
return /* @__PURE__ */ (0,
|
|
3487
|
-
/* @__PURE__ */ (0,
|
|
3488
|
-
/* @__PURE__ */ (0,
|
|
3489
|
-
message && /* @__PURE__ */ (0,
|
|
3483
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "text-center", children: [
|
|
3484
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("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" }),
|
|
3485
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `text-lg font-medium ${theme.titleText} mb-2`, children: "Failed" }),
|
|
3486
|
+
message && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `text-sm ${theme.bodyText}`, children: message })
|
|
3490
3487
|
] });
|
|
3491
3488
|
};
|
|
3492
3489
|
}
|
|
3493
3490
|
});
|
|
3494
3491
|
|
|
3495
3492
|
// src/internal/components/TermsOfService.tsx
|
|
3496
|
-
var
|
|
3493
|
+
var import_jsx_runtime13, TermsOfService;
|
|
3497
3494
|
var init_TermsOfService = __esm({
|
|
3498
3495
|
"src/internal/components/TermsOfService.tsx"() {
|
|
3499
3496
|
init_dialog();
|
|
3500
3497
|
init_LumiaPassportContext();
|
|
3501
3498
|
init_useTheme();
|
|
3502
|
-
|
|
3499
|
+
import_jsx_runtime13 = require("react/jsx-runtime");
|
|
3503
3500
|
TermsOfService = ({ open, onOpenChange }) => {
|
|
3504
3501
|
const { config } = useLumiaPassportConfig();
|
|
3505
3502
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3506
|
-
return /* @__PURE__ */ (0,
|
|
3503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3507
3504
|
DialogContent,
|
|
3508
3505
|
{
|
|
3509
3506
|
className: `lumia-scope p-6 border-0 ${theme.modalBg} ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -3515,8 +3512,8 @@ var init_TermsOfService = __esm({
|
|
|
3515
3512
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
3516
3513
|
},
|
|
3517
3514
|
children: [
|
|
3518
|
-
/* @__PURE__ */ (0,
|
|
3519
|
-
/* @__PURE__ */ (0,
|
|
3515
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogTitle, { children: "Terms of Service" }),
|
|
3516
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "prose text-sm text-gray-700", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { children: "By using Lumia Passport you agree to our terms." }) })
|
|
3520
3517
|
]
|
|
3521
3518
|
}
|
|
3522
3519
|
) });
|
|
@@ -3525,44 +3522,44 @@ var init_TermsOfService = __esm({
|
|
|
3525
3522
|
});
|
|
3526
3523
|
|
|
3527
3524
|
// src/internal/components/ui/card.tsx
|
|
3528
|
-
var React8,
|
|
3525
|
+
var React8, import_jsx_runtime14, Card, CardHeader, CardTitle, CardDescription, CardContent;
|
|
3529
3526
|
var init_card = __esm({
|
|
3530
3527
|
"src/internal/components/ui/card.tsx"() {
|
|
3531
3528
|
React8 = __toESM(require("react"), 1);
|
|
3532
3529
|
init_utils();
|
|
3533
|
-
|
|
3530
|
+
import_jsx_runtime14 = require("react/jsx-runtime");
|
|
3534
3531
|
Card = React8.forwardRef(
|
|
3535
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
3532
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref, className: cn("rounded-xl border bg-card text-card-foreground shadow", className), ...props })
|
|
3536
3533
|
);
|
|
3537
3534
|
Card.displayName = "Card";
|
|
3538
3535
|
CardHeader = React8.forwardRef(
|
|
3539
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
3536
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
|
|
3540
3537
|
);
|
|
3541
3538
|
CardHeader.displayName = "CardHeader";
|
|
3542
3539
|
CardTitle = React8.forwardRef(
|
|
3543
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
3540
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("h3", { ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })
|
|
3544
3541
|
);
|
|
3545
3542
|
CardTitle.displayName = "CardTitle";
|
|
3546
3543
|
CardDescription = React8.forwardRef(
|
|
3547
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
3544
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
|
|
3548
3545
|
);
|
|
3549
3546
|
CardDescription.displayName = "CardDescription";
|
|
3550
3547
|
CardContent = React8.forwardRef(
|
|
3551
|
-
({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
3548
|
+
({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref, className: cn("p-6 pt-0", className), ...props })
|
|
3552
3549
|
);
|
|
3553
3550
|
CardContent.displayName = "CardContent";
|
|
3554
3551
|
}
|
|
3555
3552
|
});
|
|
3556
3553
|
|
|
3557
3554
|
// src/internal/components/ui/input.tsx
|
|
3558
|
-
var React9,
|
|
3555
|
+
var React9, import_jsx_runtime15, Input;
|
|
3559
3556
|
var init_input = __esm({
|
|
3560
3557
|
"src/internal/components/ui/input.tsx"() {
|
|
3561
3558
|
React9 = __toESM(require("react"), 1);
|
|
3562
3559
|
init_utils();
|
|
3563
|
-
|
|
3560
|
+
import_jsx_runtime15 = require("react/jsx-runtime");
|
|
3564
3561
|
Input = React9.forwardRef(({ className, type, ...props }, ref) => {
|
|
3565
|
-
return /* @__PURE__ */ (0,
|
|
3562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3566
3563
|
"input",
|
|
3567
3564
|
{
|
|
3568
3565
|
type,
|
|
@@ -3582,7 +3579,7 @@ var init_input = __esm({
|
|
|
3582
3579
|
// src/internal/components/KeyshareRestore.tsx
|
|
3583
3580
|
function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
3584
3581
|
const { config } = useLumiaPassportConfig();
|
|
3585
|
-
const { isDark } = useTheme(config.ui.theme, config.ui.colors);
|
|
3582
|
+
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3586
3583
|
const [loading, setLoading] = React10.useState({ server: false, file: false });
|
|
3587
3584
|
const [error, setError] = React10.useState(null);
|
|
3588
3585
|
const [success, setSuccess] = React10.useState(null);
|
|
@@ -3692,78 +3689,78 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3692
3689
|
}
|
|
3693
3690
|
};
|
|
3694
3691
|
if (checkingBackup) {
|
|
3695
|
-
return /* @__PURE__ */ (0,
|
|
3696
|
-
/* @__PURE__ */ (0,
|
|
3697
|
-
/* @__PURE__ */ (0,
|
|
3698
|
-
/* @__PURE__ */ (0,
|
|
3699
|
-
/* @__PURE__ */ (0,
|
|
3700
|
-
/* @__PURE__ */ (0,
|
|
3701
|
-
/* @__PURE__ */ (0,
|
|
3692
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Card, { className: `${isDark ? "border-gray-700 bg-gray-900" : "border-blue-200 bg-blue-50"} border-0`, children: [
|
|
3693
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardHeader, { className: "pb-4", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
3694
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
3695
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Shield, { className: `h-6 w-6 ${isDark ? "text-blue-400" : "text-blue-600"}` }),
|
|
3696
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { children: [
|
|
3697
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardTitle, { className: `text-lg ${isDark ? "text-gray-100" : ""}`, children: "Checking Backup Availability" }),
|
|
3698
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardDescription, { className: `text-sm ${isDark ? "text-gray-400" : ""}`, children: "Please wait while we check for available backups..." })
|
|
3702
3699
|
] })
|
|
3703
3700
|
] }),
|
|
3704
|
-
onClose && /* @__PURE__ */ (0,
|
|
3701
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("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__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.X, { className: "h-4 w-4" }) })
|
|
3705
3702
|
] }) }),
|
|
3706
|
-
/* @__PURE__ */ (0,
|
|
3707
|
-
/* @__PURE__ */ (0,
|
|
3708
|
-
/* @__PURE__ */ (0,
|
|
3703
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardContent, { className: "space-y-6", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "text-center", children: [
|
|
3704
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `animate-spin rounded-full h-8 w-8 border-b-2 ${isDark ? "border-blue-400" : "border-blue-600"} mx-auto mb-4` }),
|
|
3705
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: `text-sm ${isDark ? "text-gray-400" : "text-gray-600"}`, children: "Checking for backups..." })
|
|
3709
3706
|
] }) }) })
|
|
3710
3707
|
] });
|
|
3711
3708
|
}
|
|
3712
3709
|
if (hasServerBackup === false) {
|
|
3713
|
-
return /* @__PURE__ */ (0,
|
|
3714
|
-
/* @__PURE__ */ (0,
|
|
3715
|
-
/* @__PURE__ */ (0,
|
|
3716
|
-
/* @__PURE__ */ (0,
|
|
3717
|
-
/* @__PURE__ */ (0,
|
|
3710
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Card, { className: `border-0 ${theme.bg} ${theme.divider}`, children: [
|
|
3711
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardHeader, { className: "pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
3712
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3713
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.AlertCircle, { className: "h-5 w-5 text-red-600" }),
|
|
3714
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardTitle, { className: `text-base ${theme.titleText}`, children: "No Keyshare Found" })
|
|
3718
3715
|
] }),
|
|
3719
|
-
onClose && /* @__PURE__ */ (0,
|
|
3716
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("button", { onClick: onClose, className: `p-1 rounded transition-colors ${theme.secondaryBtn}`, title: "Close", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.X, { className: "h-4 w-4" }) })
|
|
3720
3717
|
] }) }),
|
|
3721
|
-
/* @__PURE__ */ (0,
|
|
3722
|
-
/* @__PURE__ */ (0,
|
|
3723
|
-
/* @__PURE__ */ (0,
|
|
3724
|
-
/* @__PURE__ */ (0,
|
|
3718
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CardContent, { className: "space-y-3.5", children: [
|
|
3719
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: `p-3 rounded ${isDark ? "bg-red-500/15" : "bg-red-100"}`, children: [
|
|
3720
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h4", { className: `font-medium text-sm mb-1.5 ${isDark ? "text-red-300" : "text-red-800"}`, children: "Account Recovery Needed" }),
|
|
3721
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("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." })
|
|
3725
3722
|
] }),
|
|
3726
|
-
/* @__PURE__ */ (0,
|
|
3727
|
-
/* @__PURE__ */ (0,
|
|
3723
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `p-2.5 rounded border ${isDark ? "bg-amber-500/15 border-amber-500/40" : "bg-amber-50 border-amber-200"}`, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { className: `text-xs ${theme.text}`, children: [
|
|
3724
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "font-semibold", children: "Alternative:" }),
|
|
3728
3725
|
" Try uploading a backup file if you have one saved locally, or create a new account with a different email."
|
|
3729
3726
|
] }) }),
|
|
3730
|
-
/* @__PURE__ */ (0,
|
|
3731
|
-
/* @__PURE__ */ (0,
|
|
3732
|
-
/* @__PURE__ */ (0,
|
|
3733
|
-
/* @__PURE__ */ (0,
|
|
3727
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: `p-3 rounded border ${theme.bg} ${theme.divider}`, children: [
|
|
3728
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3729
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Upload, { className: "h-4 w-4 text-purple-600" }),
|
|
3730
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `font-medium text-sm ${theme.text}`, children: "Try Backup File" })
|
|
3734
3731
|
] }),
|
|
3735
|
-
/* @__PURE__ */ (0,
|
|
3736
|
-
/* @__PURE__ */ (0,
|
|
3732
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-2", children: [
|
|
3733
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { className: `block w-full cursor-pointer ${theme.text}`, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3737
3734
|
"input",
|
|
3738
3735
|
{
|
|
3739
3736
|
type: "file",
|
|
3740
3737
|
accept: ".json",
|
|
3741
3738
|
onChange: (e) => setRestoreFile(e.target.files?.[0] || null),
|
|
3742
|
-
className:
|
|
3739
|
+
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"
|
|
3743
3740
|
}
|
|
3744
3741
|
) }),
|
|
3745
|
-
!restoreFile && /* @__PURE__ */ (0,
|
|
3746
|
-
restoreFile && /* @__PURE__ */ (0,
|
|
3747
|
-
/* @__PURE__ */ (0,
|
|
3742
|
+
!restoreFile && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: `text-xs ${theme.mutedText}`, children: "No file chosen" }),
|
|
3743
|
+
restoreFile && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
3744
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: `text-xs p-2 rounded ${theme.inputBg} ${theme.text}`, children: [
|
|
3748
3745
|
"Selected: ",
|
|
3749
3746
|
restoreFile.name
|
|
3750
3747
|
] }),
|
|
3751
|
-
/* @__PURE__ */ (0,
|
|
3748
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Button, { onClick: handleRestoreFromFile, disabled: loading.file || useCustomPassword && !restorePassword, className: "w-full py-2 text-sm", children: loading.file ? "Restoring..." : useCustomPassword ? "Restore" : "Restore with Passkey" })
|
|
3752
3749
|
] })
|
|
3753
3750
|
] })
|
|
3754
3751
|
] }),
|
|
3755
|
-
restoreFile && /* @__PURE__ */ (0,
|
|
3756
|
-
/* @__PURE__ */ (0,
|
|
3757
|
-
/* @__PURE__ */ (0,
|
|
3758
|
-
/* @__PURE__ */ (0,
|
|
3759
|
-
/* @__PURE__ */ (0,
|
|
3752
|
+
restoreFile && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-2", children: [
|
|
3753
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `text-xs font-medium ${theme.text}`, children: "Decryption Method:" }),
|
|
3754
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3755
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("input", { type: "checkbox", id: "use-restore-password", checked: useCustomPassword, onChange: (e) => setUseCustomPassword(e.target.checked), className: "rounded" }),
|
|
3756
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { htmlFor: "use-restore-password", className: `text-xs ${theme.text}`, children: "Use custom password instead of passkey" })
|
|
3760
3757
|
] }),
|
|
3761
|
-
!useCustomPassword && /* @__PURE__ */ (0,
|
|
3762
|
-
/* @__PURE__ */ (0,
|
|
3763
|
-
/* @__PURE__ */ (0,
|
|
3758
|
+
!useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `p-2 border rounded text-xs ${theme.inputBg} ${theme.text}`, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3759
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Key, { className: "h-3.5 w-3.5" }),
|
|
3760
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: "Your passkey will be used to decrypt the backup securely" })
|
|
3764
3761
|
] }) }),
|
|
3765
|
-
useCustomPassword && /* @__PURE__ */ (0,
|
|
3766
|
-
/* @__PURE__ */ (0,
|
|
3762
|
+
useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "relative", children: [
|
|
3763
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3767
3764
|
Input,
|
|
3768
3765
|
{
|
|
3769
3766
|
type: showPassword ? "text" : "password",
|
|
@@ -3773,61 +3770,61 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3773
3770
|
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"}`
|
|
3774
3771
|
}
|
|
3775
3772
|
),
|
|
3776
|
-
/* @__PURE__ */ (0,
|
|
3773
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3777
3774
|
"button",
|
|
3778
3775
|
{
|
|
3779
3776
|
type: "button",
|
|
3780
3777
|
onClick: () => setShowPassword(!showPassword),
|
|
3781
3778
|
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"}`,
|
|
3782
|
-
children: showPassword ? /* @__PURE__ */ (0,
|
|
3779
|
+
children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Eye, { className: "h-4 w-4" })
|
|
3783
3780
|
}
|
|
3784
3781
|
)
|
|
3785
3782
|
] })
|
|
3786
3783
|
] }),
|
|
3787
|
-
error && /* @__PURE__ */ (0,
|
|
3788
|
-
/* @__PURE__ */ (0,
|
|
3789
|
-
/* @__PURE__ */ (0,
|
|
3784
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("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: [
|
|
3785
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3786
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: error })
|
|
3790
3787
|
] }),
|
|
3791
|
-
success && /* @__PURE__ */ (0,
|
|
3792
|
-
/* @__PURE__ */ (0,
|
|
3793
|
-
/* @__PURE__ */ (0,
|
|
3788
|
+
success && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("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: [
|
|
3789
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.CheckCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3790
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: success })
|
|
3794
3791
|
] })
|
|
3795
3792
|
] })
|
|
3796
3793
|
] });
|
|
3797
3794
|
}
|
|
3798
|
-
return /* @__PURE__ */ (0,
|
|
3799
|
-
/* @__PURE__ */ (0,
|
|
3800
|
-
/* @__PURE__ */ (0,
|
|
3801
|
-
/* @__PURE__ */ (0,
|
|
3802
|
-
/* @__PURE__ */ (0,
|
|
3803
|
-
/* @__PURE__ */ (0,
|
|
3795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Card, { className: `${isDark ? "border-gray-700 bg-gray-900" : "border-blue-200 bg-blue-50"} border-0`, children: [
|
|
3796
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CardHeader, { className: "pb-3", children: [
|
|
3797
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
3798
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3799
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Shield, { className: "h-5 w-5 text-blue-600" }),
|
|
3800
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardTitle, { className: `text-base ${isDark ? "text-gray-100" : "text-gray-900"}`, children: "Restore Account Access" })
|
|
3804
3801
|
] }),
|
|
3805
|
-
onClose && /* @__PURE__ */ (0,
|
|
3802
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3806
3803
|
"button",
|
|
3807
3804
|
{
|
|
3808
3805
|
onClick: onClose,
|
|
3809
3806
|
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"}`,
|
|
3810
3807
|
title: "Close",
|
|
3811
3808
|
"aria-label": "Close",
|
|
3812
|
-
children: /* @__PURE__ */ (0,
|
|
3809
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.X, { className: "h-4 w-4" })
|
|
3813
3810
|
}
|
|
3814
3811
|
)
|
|
3815
3812
|
] }),
|
|
3816
|
-
/* @__PURE__ */ (0,
|
|
3813
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CardDescription, { className: `text-sm mt-1 ${isDark ? "text-gray-300" : "text-gray-600"}`, children: "Your account was found in the Vault" })
|
|
3817
3814
|
] }),
|
|
3818
|
-
/* @__PURE__ */ (0,
|
|
3819
|
-
error && !error.includes("No backup found") && /* @__PURE__ */ (0,
|
|
3820
|
-
/* @__PURE__ */ (0,
|
|
3821
|
-
/* @__PURE__ */ (0,
|
|
3815
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CardContent, { className: "space-y-3.5", children: [
|
|
3816
|
+
error && !error.includes("No backup found") && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2 p-2 rounded bg-red-50 border border-red-200 text-red-700 text-xs", children: [
|
|
3817
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3818
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: error })
|
|
3822
3819
|
] }),
|
|
3823
|
-
success && /* @__PURE__ */ (0,
|
|
3824
|
-
/* @__PURE__ */ (0,
|
|
3825
|
-
/* @__PURE__ */ (0,
|
|
3820
|
+
success && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2 p-2 rounded bg-green-50 border border-green-200 text-green-700 text-xs", children: [
|
|
3821
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.CheckCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3822
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: success })
|
|
3826
3823
|
] }),
|
|
3827
|
-
/* @__PURE__ */ (0,
|
|
3828
|
-
/* @__PURE__ */ (0,
|
|
3829
|
-
/* @__PURE__ */ (0,
|
|
3830
|
-
/* @__PURE__ */ (0,
|
|
3824
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-2", children: [
|
|
3825
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Decryption Method:" }),
|
|
3826
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3827
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3831
3828
|
"input",
|
|
3832
3829
|
{
|
|
3833
3830
|
type: "checkbox",
|
|
@@ -3837,14 +3834,14 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3837
3834
|
className: "rounded"
|
|
3838
3835
|
}
|
|
3839
3836
|
),
|
|
3840
|
-
/* @__PURE__ */ (0,
|
|
3837
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { htmlFor: "use-restore-password", className: `text-xs ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Use custom password instead of passkey" })
|
|
3841
3838
|
] }),
|
|
3842
|
-
!useCustomPassword && /* @__PURE__ */ (0,
|
|
3843
|
-
/* @__PURE__ */ (0,
|
|
3844
|
-
/* @__PURE__ */ (0,
|
|
3839
|
+
!useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("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__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
3840
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Key, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
3841
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: `text-xs ${isDark ? "text-gray-300" : "text-blue-700"}`, children: "Passkey will be used to decrypt the backup" })
|
|
3845
3842
|
] }) }),
|
|
3846
|
-
useCustomPassword && /* @__PURE__ */ (0,
|
|
3847
|
-
/* @__PURE__ */ (0,
|
|
3843
|
+
useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "relative", children: [
|
|
3844
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3848
3845
|
Input,
|
|
3849
3846
|
{
|
|
3850
3847
|
type: showPassword ? "text" : "password",
|
|
@@ -3854,26 +3851,26 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3854
3851
|
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"}`
|
|
3855
3852
|
}
|
|
3856
3853
|
),
|
|
3857
|
-
/* @__PURE__ */ (0,
|
|
3854
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3858
3855
|
"button",
|
|
3859
3856
|
{
|
|
3860
3857
|
type: "button",
|
|
3861
3858
|
onClick: () => setShowPassword(!showPassword),
|
|
3862
3859
|
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"}`,
|
|
3863
3860
|
"aria-label": "Toggle password visibility",
|
|
3864
|
-
children: showPassword ? /* @__PURE__ */ (0,
|
|
3861
|
+
children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Eye, { className: "h-4 w-4" })
|
|
3865
3862
|
}
|
|
3866
3863
|
)
|
|
3867
3864
|
] })
|
|
3868
3865
|
] }),
|
|
3869
|
-
/* @__PURE__ */ (0,
|
|
3870
|
-
/* @__PURE__ */ (0,
|
|
3871
|
-
/* @__PURE__ */ (0,
|
|
3872
|
-
/* @__PURE__ */ (0,
|
|
3873
|
-
/* @__PURE__ */ (0,
|
|
3874
|
-
/* @__PURE__ */ (0,
|
|
3866
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-2.5", children: [
|
|
3867
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Choose Restore Method:" }),
|
|
3868
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: isDark ? "p-3 rounded bg-gray-800/50" : "p-3 rounded bg-blue-50/50", children: [
|
|
3869
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3870
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Server, { className: "h-4 w-4 text-blue-500" }),
|
|
3871
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Server Backup" })
|
|
3875
3872
|
] }),
|
|
3876
|
-
/* @__PURE__ */ (0,
|
|
3873
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3877
3874
|
Button,
|
|
3878
3875
|
{
|
|
3879
3876
|
onClick: handleRestoreFromServer,
|
|
@@ -3883,13 +3880,13 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3883
3880
|
}
|
|
3884
3881
|
)
|
|
3885
3882
|
] }),
|
|
3886
|
-
/* @__PURE__ */ (0,
|
|
3887
|
-
/* @__PURE__ */ (0,
|
|
3888
|
-
/* @__PURE__ */ (0,
|
|
3889
|
-
/* @__PURE__ */ (0,
|
|
3883
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: isDark ? "p-3 rounded bg-gray-800/50" : "p-3 rounded bg-purple-50/50", children: [
|
|
3884
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3885
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.Upload, { className: "h-4 w-4 text-purple-500" }),
|
|
3886
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Backup File" })
|
|
3890
3887
|
] }),
|
|
3891
|
-
/* @__PURE__ */ (0,
|
|
3892
|
-
/* @__PURE__ */ (0,
|
|
3888
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "space-y-2", children: [
|
|
3889
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("label", { className: `block w-full cursor-pointer ${isDark ? "text-gray-300" : "text-gray-700"}`, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3893
3890
|
"input",
|
|
3894
3891
|
{
|
|
3895
3892
|
type: "file",
|
|
@@ -3898,9 +3895,9 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3898
3895
|
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"
|
|
3899
3896
|
}
|
|
3900
3897
|
) }),
|
|
3901
|
-
restoreFile && /* @__PURE__ */ (0,
|
|
3902
|
-
/* @__PURE__ */ (0,
|
|
3903
|
-
/* @__PURE__ */ (0,
|
|
3898
|
+
restoreFile && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
3899
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: `text-xs p-2 rounded ${isDark ? "bg-gray-700 text-gray-300" : "bg-gray-100 text-gray-600"}`, children: restoreFile.name }),
|
|
3900
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3904
3901
|
Button,
|
|
3905
3902
|
{
|
|
3906
3903
|
onClick: handleRestoreFromFile,
|
|
@@ -3917,7 +3914,7 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3917
3914
|
] })
|
|
3918
3915
|
] });
|
|
3919
3916
|
}
|
|
3920
|
-
var React10, import_lucide_react3,
|
|
3917
|
+
var React10, import_lucide_react3, import_jsx_runtime16;
|
|
3921
3918
|
var init_KeyshareRestore = __esm({
|
|
3922
3919
|
"src/internal/components/KeyshareRestore.tsx"() {
|
|
3923
3920
|
React10 = __toESM(require("react"), 1);
|
|
@@ -3929,18 +3926,18 @@ var init_KeyshareRestore = __esm({
|
|
|
3929
3926
|
init_iframe_manager();
|
|
3930
3927
|
init_LumiaPassportContext();
|
|
3931
3928
|
init_useTheme();
|
|
3932
|
-
|
|
3929
|
+
import_jsx_runtime16 = require("react/jsx-runtime");
|
|
3933
3930
|
}
|
|
3934
3931
|
});
|
|
3935
3932
|
|
|
3936
3933
|
// src/internal/components/VerificationCodeInput.tsx
|
|
3937
|
-
var import_react6,
|
|
3934
|
+
var import_react6, import_jsx_runtime17, VerificationCodeInput;
|
|
3938
3935
|
var init_VerificationCodeInput = __esm({
|
|
3939
3936
|
"src/internal/components/VerificationCodeInput.tsx"() {
|
|
3940
3937
|
import_react6 = require("react");
|
|
3941
3938
|
init_LumiaPassportContext();
|
|
3942
3939
|
init_useTheme();
|
|
3943
|
-
|
|
3940
|
+
import_jsx_runtime17 = require("react/jsx-runtime");
|
|
3944
3941
|
VerificationCodeInput = ({ onVerifyCode, onResendCode, isLoading, expiresIn, error }) => {
|
|
3945
3942
|
const { config } = useLumiaPassportConfig();
|
|
3946
3943
|
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
@@ -4015,8 +4012,8 @@ var init_VerificationCodeInput = __esm({
|
|
|
4015
4012
|
};
|
|
4016
4013
|
const mm = Math.floor(timeLeft / 60).toString();
|
|
4017
4014
|
const ss = (timeLeft % 60).toString().padStart(2, "0");
|
|
4018
|
-
return /* @__PURE__ */ (0,
|
|
4019
|
-
/* @__PURE__ */ (0,
|
|
4015
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "text-center", children: [
|
|
4016
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: `flex items-center justify-center gap-2 mb-4`, children: digits.map((d, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4020
4017
|
"input",
|
|
4021
4018
|
{
|
|
4022
4019
|
ref: (el) => inputsRef.current[i] = el,
|
|
@@ -4032,17 +4029,17 @@ var init_VerificationCodeInput = __esm({
|
|
|
4032
4029
|
},
|
|
4033
4030
|
i
|
|
4034
4031
|
)) }),
|
|
4035
|
-
error && /* @__PURE__ */ (0,
|
|
4036
|
-
/* @__PURE__ */ (0,
|
|
4032
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: `text-sm ${theme.errorText} mb-3 break-words whitespace-pre-wrap text-center`, children: error }),
|
|
4033
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: `text-sm ${theme.mutedText} mb-3`, children: [
|
|
4037
4034
|
"Code expires in ",
|
|
4038
4035
|
mm,
|
|
4039
4036
|
":",
|
|
4040
4037
|
ss
|
|
4041
4038
|
] }),
|
|
4042
|
-
/* @__PURE__ */ (0,
|
|
4039
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
4043
4040
|
"Didn't receive code?",
|
|
4044
4041
|
" ",
|
|
4045
|
-
/* @__PURE__ */ (0,
|
|
4042
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4046
4043
|
"button",
|
|
4047
4044
|
{
|
|
4048
4045
|
onClick: () => timeLeft === 0 ? onResendCode() : void 0,
|
|
@@ -4081,7 +4078,7 @@ var init_profile = __esm({
|
|
|
4081
4078
|
});
|
|
4082
4079
|
|
|
4083
4080
|
// src/internal/components/DisplayNameInput.tsx
|
|
4084
|
-
var import_react7, import_lucide_react4,
|
|
4081
|
+
var import_react7, import_lucide_react4, import_jsx_runtime18, DisplayNameInput;
|
|
4085
4082
|
var init_DisplayNameInput = __esm({
|
|
4086
4083
|
"src/internal/components/DisplayNameInput.tsx"() {
|
|
4087
4084
|
import_react7 = require("react");
|
|
@@ -4093,7 +4090,7 @@ var init_DisplayNameInput = __esm({
|
|
|
4093
4090
|
init_LumiaPassportContext();
|
|
4094
4091
|
init_profile();
|
|
4095
4092
|
init_auth();
|
|
4096
|
-
|
|
4093
|
+
import_jsx_runtime18 = require("react/jsx-runtime");
|
|
4097
4094
|
DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
4098
4095
|
const [displayName, setDisplayName] = (0, import_react7.useState)("");
|
|
4099
4096
|
const [isLoading, setIsLoading] = (0, import_react7.useState)(false);
|
|
@@ -4130,14 +4127,14 @@ var init_DisplayNameInput = __esm({
|
|
|
4130
4127
|
onComplete();
|
|
4131
4128
|
}
|
|
4132
4129
|
};
|
|
4133
|
-
return /* @__PURE__ */ (0,
|
|
4134
|
-
/* @__PURE__ */ (0,
|
|
4135
|
-
/* @__PURE__ */ (0,
|
|
4136
|
-
/* @__PURE__ */ (0,
|
|
4137
|
-
/* @__PURE__ */ (0,
|
|
4138
|
-
/* @__PURE__ */ (0,
|
|
4139
|
-
/* @__PURE__ */ (0,
|
|
4140
|
-
/* @__PURE__ */ (0,
|
|
4130
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
|
|
4131
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("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__ */ (0, import_jsx_runtime18.jsx)(LumiaLogo, { size: 28 }) }) }),
|
|
4132
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "What's your name?" }),
|
|
4133
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: `text-sm ${theme.bodyText} mb-6`, children: "This helps personalize your experience" }),
|
|
4134
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
|
|
4135
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "relative", children: [
|
|
4136
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react4.User, { className: `absolute left-3 top-3 h-5 w-5 ${theme.iconColor}` }),
|
|
4137
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
4141
4138
|
Input,
|
|
4142
4139
|
{
|
|
4143
4140
|
type: "text",
|
|
@@ -4154,8 +4151,8 @@ var init_DisplayNameInput = __esm({
|
|
|
4154
4151
|
}
|
|
4155
4152
|
)
|
|
4156
4153
|
] }),
|
|
4157
|
-
error && /* @__PURE__ */ (0,
|
|
4158
|
-
/* @__PURE__ */ (0,
|
|
4154
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: `text-sm ${theme.errorText} text-center`, children: error }),
|
|
4155
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
4159
4156
|
Button,
|
|
4160
4157
|
{
|
|
4161
4158
|
type: "submit",
|
|
@@ -4165,7 +4162,7 @@ var init_DisplayNameInput = __esm({
|
|
|
4165
4162
|
children: isLoading ? "Saving..." : "Continue"
|
|
4166
4163
|
}
|
|
4167
4164
|
),
|
|
4168
|
-
onSkip && /* @__PURE__ */ (0,
|
|
4165
|
+
onSkip && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "text-center mt-4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
4169
4166
|
"button",
|
|
4170
4167
|
{
|
|
4171
4168
|
type: "button",
|
|
@@ -4194,7 +4191,7 @@ function getPendingLoginResponse() {
|
|
|
4194
4191
|
function clearPendingLoginResponse() {
|
|
4195
4192
|
_pendingLoginResponse = null;
|
|
4196
4193
|
}
|
|
4197
|
-
var import_react8, import_lucide_react5,
|
|
4194
|
+
var import_react8, import_lucide_react5, import_jsx_runtime19, _pendingLoginResponse, AuthModal;
|
|
4198
4195
|
var init_AuthModal = __esm({
|
|
4199
4196
|
"src/internal/components/AuthModal.tsx"() {
|
|
4200
4197
|
import_react8 = __toESM(require("react"), 1);
|
|
@@ -4202,7 +4199,6 @@ var init_AuthModal = __esm({
|
|
|
4202
4199
|
init_auth();
|
|
4203
4200
|
init_ErrorAlert();
|
|
4204
4201
|
init_LumiaLogo();
|
|
4205
|
-
init_SuccessScreen();
|
|
4206
4202
|
init_FailedScreen();
|
|
4207
4203
|
init_TermsOfService();
|
|
4208
4204
|
init_button();
|
|
@@ -4217,7 +4213,7 @@ var init_AuthModal = __esm({
|
|
|
4217
4213
|
init_lumiaPassport();
|
|
4218
4214
|
init_projectId();
|
|
4219
4215
|
init_profile();
|
|
4220
|
-
|
|
4216
|
+
import_jsx_runtime19 = require("react/jsx-runtime");
|
|
4221
4217
|
_pendingLoginResponse = null;
|
|
4222
4218
|
AuthModal = ({ open, onOpenChange, onAuthSuccess, autoCloseOnSuccess = true, recoveryUserId, onRecoveryClose, onRecoverySuccess, callbacks }) => {
|
|
4223
4219
|
const [email, setEmail] = (0, import_react8.useState)("");
|
|
@@ -4239,6 +4235,17 @@ var init_AuthModal = __esm({
|
|
|
4239
4235
|
}, []);
|
|
4240
4236
|
const { config } = useLumiaPassportConfig();
|
|
4241
4237
|
const { classes: theme, isDark } = useTheme(config.ui.theme, config.ui.colors);
|
|
4238
|
+
import_react8.default.useEffect(() => {
|
|
4239
|
+
if (!open) {
|
|
4240
|
+
setStep("signin");
|
|
4241
|
+
setEmail("");
|
|
4242
|
+
setVerificationError("");
|
|
4243
|
+
setSendError("");
|
|
4244
|
+
setPasskeyError("");
|
|
4245
|
+
setPasskeyStatus("idle");
|
|
4246
|
+
setFailedMessage("");
|
|
4247
|
+
}
|
|
4248
|
+
}, [open]);
|
|
4242
4249
|
import_react8.default.useEffect(() => {
|
|
4243
4250
|
const handleIframeMessage = (event) => {
|
|
4244
4251
|
if (event.data?.type === "LUMIA_PASSPORT_SHOW_IFRAME") {
|
|
@@ -4370,15 +4377,12 @@ var init_AuthModal = __esm({
|
|
|
4370
4377
|
}
|
|
4371
4378
|
throw authError;
|
|
4372
4379
|
}
|
|
4373
|
-
console.log("[AuthModal]
|
|
4374
|
-
setStep("success");
|
|
4380
|
+
console.log("[AuthModal] Authentication successful, closing modal");
|
|
4375
4381
|
if (autoCloseOnSuccess && !needsRecovery) {
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
setVerificationError("");
|
|
4381
|
-
}, 2e3);
|
|
4382
|
+
setStep("signin");
|
|
4383
|
+
setEmail("");
|
|
4384
|
+
setVerificationError("");
|
|
4385
|
+
onOpenChange(false);
|
|
4382
4386
|
}
|
|
4383
4387
|
} catch (error) {
|
|
4384
4388
|
let errorMessage = "";
|
|
@@ -4466,15 +4470,12 @@ var init_AuthModal = __esm({
|
|
|
4466
4470
|
if (onAuthSuccess) {
|
|
4467
4471
|
await onAuthSuccess();
|
|
4468
4472
|
}
|
|
4469
|
-
setStep("
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
setPasskeyError("");
|
|
4476
|
-
setPasskeyStatus("idle");
|
|
4477
|
-
}, 2e3);
|
|
4473
|
+
setStep("signin");
|
|
4474
|
+
setEmail("");
|
|
4475
|
+
setVerificationError("");
|
|
4476
|
+
setPasskeyError("");
|
|
4477
|
+
setPasskeyStatus("idle");
|
|
4478
|
+
onOpenChange(false);
|
|
4478
4479
|
} else {
|
|
4479
4480
|
setPasskeyStatus("Passkey registered successfully!");
|
|
4480
4481
|
setTimeout(() => {
|
|
@@ -4552,16 +4553,13 @@ var init_AuthModal = __esm({
|
|
|
4552
4553
|
}
|
|
4553
4554
|
throw authError;
|
|
4554
4555
|
}
|
|
4555
|
-
setStep("success");
|
|
4556
4556
|
if (autoCloseOnSuccess) {
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4560
|
-
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
setPasskeyStatus("idle");
|
|
4564
|
-
}, 2e3);
|
|
4557
|
+
setStep("signin");
|
|
4558
|
+
setEmail("");
|
|
4559
|
+
setVerificationError("");
|
|
4560
|
+
setPasskeyError("");
|
|
4561
|
+
setPasskeyStatus("idle");
|
|
4562
|
+
onOpenChange(false);
|
|
4565
4563
|
}
|
|
4566
4564
|
} catch (e) {
|
|
4567
4565
|
const normalized = normalizeWebAuthnError(e);
|
|
@@ -4635,15 +4633,12 @@ var init_AuthModal = __esm({
|
|
|
4635
4633
|
if (onAuthSuccess) {
|
|
4636
4634
|
await onAuthSuccess();
|
|
4637
4635
|
}
|
|
4638
|
-
setStep("
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
|
|
4644
|
-
setPasskeyError("");
|
|
4645
|
-
setPasskeyStatus("idle");
|
|
4646
|
-
}, 2e3);
|
|
4636
|
+
setStep("signin");
|
|
4637
|
+
setEmail("");
|
|
4638
|
+
setVerificationError("");
|
|
4639
|
+
setPasskeyError("");
|
|
4640
|
+
setPasskeyStatus("idle");
|
|
4641
|
+
onOpenChange(false);
|
|
4647
4642
|
} catch (sessionError) {
|
|
4648
4643
|
let errorMessage = "Account setup failed. Please try again.";
|
|
4649
4644
|
if (sessionError?.code === "NO_BACKUP_AVAILABLE") {
|
|
@@ -4673,20 +4668,20 @@ var init_AuthModal = __esm({
|
|
|
4673
4668
|
};
|
|
4674
4669
|
}, [step, onAuthSuccess, onOpenChange]);
|
|
4675
4670
|
if (recoveryUserId) {
|
|
4676
|
-
return /* @__PURE__ */ (0,
|
|
4671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4677
4672
|
DialogContent,
|
|
4678
4673
|
{
|
|
4679
4674
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4680
4675
|
hideClose: true,
|
|
4681
4676
|
children: [
|
|
4682
|
-
/* @__PURE__ */ (0,
|
|
4683
|
-
/* @__PURE__ */ (0,
|
|
4677
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogTitle, { className: "sr-only", children: "Restore Account Access" }),
|
|
4678
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(KeyshareRestore, { userId: recoveryUserId, onClose: onRecoveryClose, onRestoreSuccess: onRecoverySuccess })
|
|
4684
4679
|
]
|
|
4685
4680
|
}
|
|
4686
4681
|
) });
|
|
4687
4682
|
}
|
|
4688
4683
|
if (step === "display-name") {
|
|
4689
|
-
return /* @__PURE__ */ (0,
|
|
4684
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4690
4685
|
DialogContent,
|
|
4691
4686
|
{
|
|
4692
4687
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4696,8 +4691,8 @@ var init_AuthModal = __esm({
|
|
|
4696
4691
|
},
|
|
4697
4692
|
hideClose: true,
|
|
4698
4693
|
children: [
|
|
4699
|
-
/* @__PURE__ */ (0,
|
|
4700
|
-
/* @__PURE__ */ (0,
|
|
4694
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogTitle, { className: "sr-only", children: "Enter Your Name" }),
|
|
4695
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "p-8", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4701
4696
|
DisplayNameInput,
|
|
4702
4697
|
{
|
|
4703
4698
|
onComplete: async () => {
|
|
@@ -4730,24 +4725,8 @@ var init_AuthModal = __esm({
|
|
|
4730
4725
|
}
|
|
4731
4726
|
) });
|
|
4732
4727
|
}
|
|
4733
|
-
if (step === "success") {
|
|
4734
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
4735
|
-
DialogContent,
|
|
4736
|
-
{
|
|
4737
|
-
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4738
|
-
style: {
|
|
4739
|
-
borderRadius: config.ui.modal?.borderRadius || "24px",
|
|
4740
|
-
maxWidth: config.ui.modal?.width || "400px"
|
|
4741
|
-
},
|
|
4742
|
-
children: [
|
|
4743
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogTitle, { className: "sr-only", children: "Authentication Success" }),
|
|
4744
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "p-8", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SuccessScreen, {}) })
|
|
4745
|
-
]
|
|
4746
|
-
}
|
|
4747
|
-
) });
|
|
4748
|
-
}
|
|
4749
4728
|
if (step === "failed") {
|
|
4750
|
-
return /* @__PURE__ */ (0,
|
|
4729
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4751
4730
|
DialogContent,
|
|
4752
4731
|
{
|
|
4753
4732
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4756,14 +4735,14 @@ var init_AuthModal = __esm({
|
|
|
4756
4735
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4757
4736
|
},
|
|
4758
4737
|
children: [
|
|
4759
|
-
/* @__PURE__ */ (0,
|
|
4760
|
-
/* @__PURE__ */ (0,
|
|
4738
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogTitle, { className: "sr-only", children: "Authentication Failed" }),
|
|
4739
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "p-8", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(FailedScreen, { message: failedMessage }) })
|
|
4761
4740
|
]
|
|
4762
4741
|
}
|
|
4763
4742
|
) });
|
|
4764
4743
|
}
|
|
4765
4744
|
if (step === "verify") {
|
|
4766
|
-
return /* @__PURE__ */ (0,
|
|
4745
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open: open && !iframeVisible, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4767
4746
|
DialogContent,
|
|
4768
4747
|
{
|
|
4769
4748
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4772,17 +4751,17 @@ var init_AuthModal = __esm({
|
|
|
4772
4751
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4773
4752
|
},
|
|
4774
4753
|
children: [
|
|
4775
|
-
/* @__PURE__ */ (0,
|
|
4776
|
-
/* @__PURE__ */ (0,
|
|
4777
|
-
/* @__PURE__ */ (0,
|
|
4778
|
-
/* @__PURE__ */ (0,
|
|
4779
|
-
/* @__PURE__ */ (0,
|
|
4780
|
-
/* @__PURE__ */ (0,
|
|
4754
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogTitle, { className: "sr-only", children: "Email Verification" }),
|
|
4755
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "p-5", children: [
|
|
4756
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogTopBar, { onBack: goBackToSignIn, className: "-mx-5 -mt-5 mb-1" }),
|
|
4757
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("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__ */ (0, import_jsx_runtime19.jsx)(LumiaLogo, { size: 28 }) }) }),
|
|
4758
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "Enter verification code" }),
|
|
4759
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("p", { className: `text-sm ${theme.bodyText} mb-6`, children: [
|
|
4781
4760
|
"We sent a verification code to",
|
|
4782
|
-
/* @__PURE__ */ (0,
|
|
4783
|
-
/* @__PURE__ */ (0,
|
|
4761
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("br", {}),
|
|
4762
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-semibold", children: email })
|
|
4784
4763
|
] }),
|
|
4785
|
-
/* @__PURE__ */ (0,
|
|
4764
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4786
4765
|
VerificationCodeInput,
|
|
4787
4766
|
{
|
|
4788
4767
|
onVerifyCode: verifyCode,
|
|
@@ -4792,10 +4771,10 @@ var init_AuthModal = __esm({
|
|
|
4792
4771
|
error: verificationError
|
|
4793
4772
|
}
|
|
4794
4773
|
),
|
|
4795
|
-
config.features.mpcSecurity && /* @__PURE__ */ (0,
|
|
4774
|
+
config.features.mpcSecurity && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: `text-xs ${theme.mutedText} mt-6 text-center`, children: [
|
|
4796
4775
|
"protected by \u26A1",
|
|
4797
4776
|
" ",
|
|
4798
|
-
config.ui.branding.link ? /* @__PURE__ */ (0,
|
|
4777
|
+
config.ui.branding.link ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("a", { href: config.ui.branding.link.url, target: "_blank", rel: "noopener noreferrer", className: `${theme.linkText} underline font-medium`, children: config.ui.branding.tagline }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-medium", children: config.ui.branding.tagline })
|
|
4799
4778
|
] })
|
|
4800
4779
|
] })
|
|
4801
4780
|
]
|
|
@@ -4803,7 +4782,7 @@ var init_AuthModal = __esm({
|
|
|
4803
4782
|
) });
|
|
4804
4783
|
}
|
|
4805
4784
|
if (step === "telegram") {
|
|
4806
|
-
return /* @__PURE__ */ (0,
|
|
4785
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4807
4786
|
DialogContent,
|
|
4808
4787
|
{
|
|
4809
4788
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-visible ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4812,16 +4791,16 @@ var init_AuthModal = __esm({
|
|
|
4812
4791
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4813
4792
|
},
|
|
4814
4793
|
children: [
|
|
4815
|
-
/* @__PURE__ */ (0,
|
|
4816
|
-
/* @__PURE__ */ (0,
|
|
4817
|
-
/* @__PURE__ */ (0,
|
|
4818
|
-
/* @__PURE__ */ (0,
|
|
4819
|
-
/* @__PURE__ */ (0,
|
|
4820
|
-
/* @__PURE__ */ (0,
|
|
4794
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogTitle, { className: "sr-only", children: "Telegram Authentication" }),
|
|
4795
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "p-8", children: [
|
|
4796
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "text-center mb-6", children: [
|
|
4797
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("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__ */ (0, import_jsx_runtime19.jsx)(LumiaLogo, { size: 32 }) }) }),
|
|
4798
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "Sign in with Telegram" }),
|
|
4799
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: `text-sm ${theme.bodyText} mb-6`, children: "Click the button below to authenticate with Telegram" })
|
|
4821
4800
|
] }),
|
|
4822
|
-
/* @__PURE__ */ (0,
|
|
4823
|
-
isLoading && /* @__PURE__ */ (0,
|
|
4824
|
-
/* @__PURE__ */ (0,
|
|
4801
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex justify-center mb-6", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { id: "tg-root", className: "flex justify-center" }) }),
|
|
4802
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `text-center text-sm ${theme.successText} mb-4`, children: "Loading Telegram widget..." }),
|
|
4803
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4825
4804
|
Button,
|
|
4826
4805
|
{
|
|
4827
4806
|
variant: "outline",
|
|
@@ -4835,24 +4814,24 @@ var init_AuthModal = __esm({
|
|
|
4835
4814
|
}
|
|
4836
4815
|
) });
|
|
4837
4816
|
}
|
|
4838
|
-
return /* @__PURE__ */ (0,
|
|
4839
|
-
/* @__PURE__ */ (0,
|
|
4817
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
|
|
4818
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open: open && !iframeVisible, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4840
4819
|
DialogContent,
|
|
4841
4820
|
{
|
|
4842
4821
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden`,
|
|
4843
4822
|
children: [
|
|
4844
|
-
/* @__PURE__ */ (0,
|
|
4845
|
-
/* @__PURE__ */ (0,
|
|
4846
|
-
/* @__PURE__ */ (0,
|
|
4847
|
-
/* @__PURE__ */ (0,
|
|
4848
|
-
/* @__PURE__ */ (0,
|
|
4849
|
-
config.features.mpcSecurity && /* @__PURE__ */ (0,
|
|
4823
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogTitle, { className: "sr-only", children: "Sign in to Lumia Passport" }),
|
|
4824
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "p-8", children: [
|
|
4825
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "text-center mb-8", children: [
|
|
4826
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("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__ */ (0, import_jsx_runtime19.jsx)(LumiaLogo, { size: 32 }) }) }),
|
|
4827
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: config.ui.title }),
|
|
4828
|
+
config.features.mpcSecurity && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: `text-xs ${theme.mutedText} mb-6`, children: [
|
|
4850
4829
|
"protected by",
|
|
4851
4830
|
" ",
|
|
4852
|
-
/* @__PURE__ */ (0,
|
|
4831
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "font-semibold", children: [
|
|
4853
4832
|
"\u26A1",
|
|
4854
4833
|
" ",
|
|
4855
|
-
config.ui.branding.link ? /* @__PURE__ */ (0,
|
|
4834
|
+
config.ui.branding.link ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4856
4835
|
"a",
|
|
4857
4836
|
{
|
|
4858
4837
|
href: config.ui.branding.link.url,
|
|
@@ -4865,7 +4844,7 @@ var init_AuthModal = __esm({
|
|
|
4865
4844
|
] })
|
|
4866
4845
|
] })
|
|
4867
4846
|
] }),
|
|
4868
|
-
/* @__PURE__ */ (0,
|
|
4847
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "space-y-4", children: [
|
|
4869
4848
|
(() => {
|
|
4870
4849
|
const order = config.ui.authOrder || ["passkey", "email", "social"];
|
|
4871
4850
|
const isPasskey = config.passkey.enabled;
|
|
@@ -4876,8 +4855,8 @@ var init_AuthModal = __esm({
|
|
|
4876
4855
|
);
|
|
4877
4856
|
const renderSection = (kind) => {
|
|
4878
4857
|
if (kind === "passkey") {
|
|
4879
|
-
return /* @__PURE__ */ (0,
|
|
4880
|
-
/* @__PURE__ */ (0,
|
|
4858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "space-y-3", children: [
|
|
4859
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4881
4860
|
Button,
|
|
4882
4861
|
{
|
|
4883
4862
|
variant: "plain",
|
|
@@ -4885,14 +4864,14 @@ var init_AuthModal = __esm({
|
|
|
4885
4864
|
disabled: isLoading,
|
|
4886
4865
|
className: `w-full h-14 ${theme.primaryBtn} rounded-2xl font-semibold shadow-sm`,
|
|
4887
4866
|
children: [
|
|
4888
|
-
/* @__PURE__ */ (0,
|
|
4867
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.Fingerprint, { className: "w-5 h-5 mr-2" }),
|
|
4889
4868
|
"Sign in with existing Passkey"
|
|
4890
4869
|
]
|
|
4891
4870
|
}
|
|
4892
4871
|
),
|
|
4893
|
-
config.passkey.showCreateButton && /* @__PURE__ */ (0,
|
|
4894
|
-
/* @__PURE__ */ (0,
|
|
4895
|
-
/* @__PURE__ */ (0,
|
|
4872
|
+
config.passkey.showCreateButton && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: `border-t ${theme.divider} pt-3`, children: [
|
|
4873
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `text-center text-sm ${theme.bodyText} mb-3`, children: "Don't have a passkey? Create one:" }),
|
|
4874
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4896
4875
|
Button,
|
|
4897
4876
|
{
|
|
4898
4877
|
variant: "plain",
|
|
@@ -4900,23 +4879,23 @@ var init_AuthModal = __esm({
|
|
|
4900
4879
|
disabled: isLoading,
|
|
4901
4880
|
className: `w-full h-12 ${theme.outlineBtn} rounded-xl font-medium border`,
|
|
4902
4881
|
children: [
|
|
4903
|
-
/* @__PURE__ */ (0,
|
|
4882
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.KeyRound, { className: "w-5 h-5 mr-2" }),
|
|
4904
4883
|
"Create Passkey"
|
|
4905
4884
|
]
|
|
4906
4885
|
}
|
|
4907
4886
|
)
|
|
4908
4887
|
] }),
|
|
4909
|
-
(passkeyError || passkeyStatus !== "idle") && /* @__PURE__ */ (0,
|
|
4910
|
-
passkeyError && /* @__PURE__ */ (0,
|
|
4911
|
-
passkeyStatus !== "idle" && /* @__PURE__ */ (0,
|
|
4888
|
+
(passkeyError || passkeyStatus !== "idle") && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "text-center", children: [
|
|
4889
|
+
passkeyError && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("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 }),
|
|
4890
|
+
passkeyStatus !== "idle" && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `text-sm ${theme.successText}`, children: passkeyStatus })
|
|
4912
4891
|
] })
|
|
4913
4892
|
] }, "passkey");
|
|
4914
4893
|
}
|
|
4915
4894
|
if (kind === "email") {
|
|
4916
|
-
return /* @__PURE__ */ (0,
|
|
4917
|
-
/* @__PURE__ */ (0,
|
|
4918
|
-
/* @__PURE__ */ (0,
|
|
4919
|
-
/* @__PURE__ */ (0,
|
|
4895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "space-y-3", children: [
|
|
4896
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "relative", children: [
|
|
4897
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.Mail, { className: `absolute left-3 top-3 h-5 w-5 ${theme.iconColor}` }),
|
|
4898
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4920
4899
|
Input,
|
|
4921
4900
|
{
|
|
4922
4901
|
type: "email",
|
|
@@ -4927,7 +4906,7 @@ var init_AuthModal = __esm({
|
|
|
4927
4906
|
}
|
|
4928
4907
|
)
|
|
4929
4908
|
] }),
|
|
4930
|
-
/* @__PURE__ */ (0,
|
|
4909
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4931
4910
|
Button,
|
|
4932
4911
|
{
|
|
4933
4912
|
variant: "plain",
|
|
@@ -4937,10 +4916,10 @@ var init_AuthModal = __esm({
|
|
|
4937
4916
|
children: isLoading ? "Sending..." : config.email.buttonText
|
|
4938
4917
|
}
|
|
4939
4918
|
),
|
|
4940
|
-
sendError && /* @__PURE__ */ (0,
|
|
4919
|
+
sendError && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `text-sm ${theme.errorText} mt-2 text-center break-words whitespace-pre-wrap`, children: sendError })
|
|
4941
4920
|
] }, "email");
|
|
4942
4921
|
}
|
|
4943
|
-
return /* @__PURE__ */ (0,
|
|
4922
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `grid grid-cols-${config.social.gridColumns} gap-3`, children: config.social.providers.filter((provider) => provider.enabled).map((provider) => {
|
|
4944
4923
|
const fallbackMap = {
|
|
4945
4924
|
google: GoogleIcon,
|
|
4946
4925
|
telegram: TelegramIcon,
|
|
@@ -4950,7 +4929,7 @@ var init_AuthModal = __esm({
|
|
|
4950
4929
|
};
|
|
4951
4930
|
const IconComponent = provider.icon ?? fallbackMap[(provider.id || "").toLowerCase()];
|
|
4952
4931
|
const handleClick = provider.id === "telegram" ? handleTelegramAuth : () => handleComingSoon(provider.name);
|
|
4953
|
-
return /* @__PURE__ */ (0,
|
|
4932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4954
4933
|
Button,
|
|
4955
4934
|
{
|
|
4956
4935
|
variant: "outline",
|
|
@@ -4958,7 +4937,7 @@ var init_AuthModal = __esm({
|
|
|
4958
4937
|
onClick: handleClick,
|
|
4959
4938
|
disabled: isLoading,
|
|
4960
4939
|
title: provider.comingSoon ? `${provider.name} (Coming Soon)` : provider.name,
|
|
4961
|
-
children: IconComponent ? /* @__PURE__ */ (0,
|
|
4940
|
+
children: IconComponent ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconComponent, { className: "w-6 h-6" }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-sm", children: provider.name })
|
|
4962
4941
|
},
|
|
4963
4942
|
provider.id
|
|
4964
4943
|
);
|
|
@@ -4968,10 +4947,10 @@ var init_AuthModal = __esm({
|
|
|
4968
4947
|
enabled.forEach((kind, idx) => {
|
|
4969
4948
|
if (idx > 0) {
|
|
4970
4949
|
nodes.push(
|
|
4971
|
-
/* @__PURE__ */ (0,
|
|
4972
|
-
/* @__PURE__ */ (0,
|
|
4973
|
-
/* @__PURE__ */ (0,
|
|
4974
|
-
/* @__PURE__ */ (0,
|
|
4950
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center my-6", children: [
|
|
4951
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `flex-1 border-t ${theme.divider}` }),
|
|
4952
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `px-3 ${theme.mutedText} text-sm`, children: "Or" }),
|
|
4953
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: `flex-1 border-t ${theme.divider}` })
|
|
4975
4954
|
] }, `div-${idx}`)
|
|
4976
4955
|
);
|
|
4977
4956
|
}
|
|
@@ -4979,10 +4958,10 @@ var init_AuthModal = __esm({
|
|
|
4979
4958
|
});
|
|
4980
4959
|
return nodes;
|
|
4981
4960
|
})(),
|
|
4982
|
-
/* @__PURE__ */ (0,
|
|
4961
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: `text-center mt-6 text-sm ${theme.mutedText} font-medium font-sans`, children: [
|
|
4983
4962
|
"By signing in, you agree to the",
|
|
4984
4963
|
" ",
|
|
4985
|
-
/* @__PURE__ */ (0,
|
|
4964
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4986
4965
|
"button",
|
|
4987
4966
|
{
|
|
4988
4967
|
onClick: () => setShowTerms(true),
|
|
@@ -4996,8 +4975,8 @@ var init_AuthModal = __esm({
|
|
|
4996
4975
|
]
|
|
4997
4976
|
}
|
|
4998
4977
|
) }),
|
|
4999
|
-
/* @__PURE__ */ (0,
|
|
5000
|
-
/* @__PURE__ */ (0,
|
|
4978
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(TermsOfService, { open: showTerms, onOpenChange: setShowTerms }),
|
|
4979
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ErrorAlert2, {})
|
|
5001
4980
|
] });
|
|
5002
4981
|
};
|
|
5003
4982
|
}
|
|
@@ -5655,7 +5634,7 @@ __export(index_exports, {
|
|
|
5655
5634
|
module.exports = __toCommonJS(index_exports);
|
|
5656
5635
|
|
|
5657
5636
|
// src/styles/built.css
|
|
5658
|
-
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}';
|
|
5637
|
+
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}';
|
|
5659
5638
|
|
|
5660
5639
|
// src/index.ts
|
|
5661
5640
|
init_LumiaPassportContext();
|
|
@@ -6041,7 +6020,7 @@ var WalletConnectHandler = ({
|
|
|
6041
6020
|
};
|
|
6042
6021
|
|
|
6043
6022
|
// src/internal/components/ManageWallet.tsx
|
|
6044
|
-
var
|
|
6023
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
6045
6024
|
var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
6046
6025
|
const [providers, setProviders] = (0, import_react11.useState)([]);
|
|
6047
6026
|
const [loading, setLoading] = (0, import_react11.useState)(false);
|
|
@@ -6188,8 +6167,8 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6188
6167
|
setLinkIsLoading(false);
|
|
6189
6168
|
}
|
|
6190
6169
|
};
|
|
6191
|
-
return /* @__PURE__ */ (0,
|
|
6192
|
-
config.wallet?.enabled && /* @__PURE__ */ (0,
|
|
6170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
|
|
6171
|
+
config.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6193
6172
|
WalletConnectHandler,
|
|
6194
6173
|
{
|
|
6195
6174
|
isLinking: isWalletLinking,
|
|
@@ -6222,79 +6201,79 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6222
6201
|
onLoadingChange: setLinkIsLoading
|
|
6223
6202
|
}
|
|
6224
6203
|
),
|
|
6225
|
-
/* @__PURE__ */ (0,
|
|
6204
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Dialog, { open, onOpenChange: (newOpen) => {
|
|
6226
6205
|
onOpenChange(newOpen);
|
|
6227
6206
|
if (!newOpen) {
|
|
6228
6207
|
setIsWalletLinking(false);
|
|
6229
6208
|
}
|
|
6230
6209
|
}, children: [
|
|
6231
|
-
/* @__PURE__ */ (0,
|
|
6232
|
-
/* @__PURE__ */ (0,
|
|
6233
|
-
onBack && /* @__PURE__ */ (0,
|
|
6210
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(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__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "p-5", children: [
|
|
6211
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex items-center justify-between mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6212
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6234
6213
|
"button",
|
|
6235
6214
|
{
|
|
6236
6215
|
onClick: onBack,
|
|
6237
6216
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6238
6217
|
title: "Back",
|
|
6239
|
-
children: /* @__PURE__ */ (0,
|
|
6218
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.ArrowLeft, { className: "h-4 w-4" })
|
|
6240
6219
|
}
|
|
6241
6220
|
),
|
|
6242
|
-
/* @__PURE__ */ (0,
|
|
6243
|
-
/* @__PURE__ */ (0,
|
|
6244
|
-
/* @__PURE__ */ (0,
|
|
6221
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { children: [
|
|
6222
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogTitle, { children: "Manage Wallet Authentication" }) }),
|
|
6223
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h2", { className: `text-xl font-semibold ${theme.titleText}`, children: "Manage Wallet Authentication" })
|
|
6245
6224
|
] })
|
|
6246
6225
|
] }) }),
|
|
6247
|
-
/* @__PURE__ */ (0,
|
|
6248
|
-
error && /* @__PURE__ */ (0,
|
|
6249
|
-
/* @__PURE__ */ (0,
|
|
6250
|
-
/* @__PURE__ */ (0,
|
|
6226
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogDescription, { className: `mb-4 ${theme.bodyText}`, children: "Manage your connected authentication methods" }),
|
|
6227
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("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: [
|
|
6228
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.AlertTriangle, { className: "w-4 h-4 mt-0.5 shrink-0" }),
|
|
6229
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "block", children: error })
|
|
6251
6230
|
] }),
|
|
6252
|
-
loading ? /* @__PURE__ */ (0,
|
|
6253
|
-
/* @__PURE__ */ (0,
|
|
6231
|
+
loading ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: `flex items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
6232
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.RefreshCw, { className: "w-5 h-5 mr-2 animate-spin" }),
|
|
6254
6233
|
"Loading authentication providers\u2026"
|
|
6255
|
-
] }) : /* @__PURE__ */ (0,
|
|
6234
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mt-3 space-y-3", children: providers.map((p) => {
|
|
6256
6235
|
const info = getProviderDisplayInfo(p.provider);
|
|
6257
6236
|
const allowUnlink = canUnlink(p);
|
|
6258
|
-
return /* @__PURE__ */ (0,
|
|
6259
|
-
/* @__PURE__ */ (0,
|
|
6260
|
-
/* @__PURE__ */ (0,
|
|
6261
|
-
/* @__PURE__ */ (0,
|
|
6262
|
-
/* @__PURE__ */ (0,
|
|
6237
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: `border rounded-xl p-3 ${isDark ? "border-gray-700 bg-gray-800" : "border-gray-200 bg-white"}`, children: [
|
|
6238
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
6239
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
6240
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `text-lg ${isDark ? "text-gray-400" : "text-gray-600"}`, children: info.icon }),
|
|
6241
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `text-sm font-medium ${theme.titleText}`, children: info.name })
|
|
6263
6242
|
] }),
|
|
6264
|
-
/* @__PURE__ */ (0,
|
|
6265
|
-
p.verified ? /* @__PURE__ */ (0,
|
|
6266
|
-
allowUnlink && /* @__PURE__ */ (0,
|
|
6243
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6244
|
+
p.verified ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.CheckCircle, { className: `w-4 h-4 ${isDark ? "text-green-400" : "text-green-500"}` }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Clock, { className: "w-4 h-4 text-yellow-500" }),
|
|
6245
|
+
allowUnlink && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6267
6246
|
"button",
|
|
6268
6247
|
{
|
|
6269
6248
|
onClick: () => setConfirmUnlink({ provider: p.provider, providerName: info.name, externalId: p.externalId }),
|
|
6270
6249
|
className: `p-1 ${isDark ? "text-red-400 hover:text-red-300" : "text-red-500 hover:text-red-700"}`,
|
|
6271
6250
|
title: "Remove provider",
|
|
6272
|
-
children: unlinking === p.provider ? /* @__PURE__ */ (0,
|
|
6251
|
+
children: unlinking === p.provider ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.RefreshCw, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Trash2, { className: "w-4 h-4" })
|
|
6273
6252
|
}
|
|
6274
6253
|
)
|
|
6275
6254
|
] })
|
|
6276
6255
|
] }),
|
|
6277
|
-
/* @__PURE__ */ (0,
|
|
6278
|
-
/* @__PURE__ */ (0,
|
|
6279
|
-
/* @__PURE__ */ (0,
|
|
6256
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: `mt-2 space-y-1 text-xs ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6257
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
6258
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Link, { className: `w-3 h-3 ${isDark ? "text-gray-500" : "text-gray-400"}` }),
|
|
6280
6259
|
"Linked: ",
|
|
6281
6260
|
formatDate(p.linkedAt)
|
|
6282
6261
|
] }),
|
|
6283
|
-
p.lastUsedAt && /* @__PURE__ */ (0,
|
|
6284
|
-
/* @__PURE__ */ (0,
|
|
6262
|
+
p.lastUsedAt && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
6263
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Clock, { className: `w-3 h-3 ${isDark ? "text-gray-500" : "text-gray-400"}` }),
|
|
6285
6264
|
"Last used: ",
|
|
6286
6265
|
formatDate(p.lastUsedAt)
|
|
6287
6266
|
] }),
|
|
6288
|
-
p.externalId && /* @__PURE__ */ (0,
|
|
6267
|
+
p.externalId && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: `text-[10px] font-mono break-all ${isDark ? "text-gray-500" : "text-gray-500"}`, children: [
|
|
6289
6268
|
"ID: ",
|
|
6290
6269
|
p.externalId
|
|
6291
6270
|
] })
|
|
6292
6271
|
] })
|
|
6293
6272
|
] }, `${p.provider}-${p.externalId}`);
|
|
6294
6273
|
}) }),
|
|
6295
|
-
/* @__PURE__ */ (0,
|
|
6274
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Button, { variant: "success", onClick: () => setShowAdd(true), children: "+ Add Provider" }) })
|
|
6296
6275
|
] }) }),
|
|
6297
|
-
/* @__PURE__ */ (0,
|
|
6276
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Dialog, { open: showAdd, onOpenChange: (v) => {
|
|
6298
6277
|
setShowAdd(v);
|
|
6299
6278
|
if (!v) {
|
|
6300
6279
|
setProviderType(null);
|
|
@@ -6302,9 +6281,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6302
6281
|
setEmailCode("");
|
|
6303
6282
|
setEmailCodeSent(false);
|
|
6304
6283
|
}
|
|
6305
|
-
}, children: /* @__PURE__ */ (0,
|
|
6306
|
-
/* @__PURE__ */ (0,
|
|
6307
|
-
/* @__PURE__ */ (0,
|
|
6284
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "p-5", children: [
|
|
6285
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
6286
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6308
6287
|
"button",
|
|
6309
6288
|
{
|
|
6310
6289
|
onClick: () => {
|
|
@@ -6320,27 +6299,27 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6320
6299
|
},
|
|
6321
6300
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6322
6301
|
title: "Back",
|
|
6323
|
-
children: /* @__PURE__ */ (0,
|
|
6302
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.ArrowLeft, { className: "h-4 w-4" })
|
|
6324
6303
|
}
|
|
6325
6304
|
),
|
|
6326
|
-
/* @__PURE__ */ (0,
|
|
6305
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogTitle, { className: `text-xl font-semibold ${theme.titleText}`, children: "Add Authentication Method" })
|
|
6327
6306
|
] }),
|
|
6328
|
-
/* @__PURE__ */ (0,
|
|
6329
|
-
!providerType ? /* @__PURE__ */ (0,
|
|
6330
|
-
config.passkey.enabled && /* @__PURE__ */ (0,
|
|
6331
|
-
/* @__PURE__ */ (0,
|
|
6307
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogDescription, { className: `${theme.bodyText} mb-4`, children: "Add a new way to authenticate to your account" }),
|
|
6308
|
+
!providerType ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "mt-3 space-y-4", children: [
|
|
6309
|
+
config.passkey.enabled && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Button, { onClick: () => setProviderType("passkey"), className: "w-full", size: "lg", children: [
|
|
6310
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Key, { className: "w-4 h-4 mr-2" }),
|
|
6332
6311
|
"Link with Passkey"
|
|
6333
6312
|
] }),
|
|
6334
|
-
config.passkey.enabled && (config.email.enabled || config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ (0,
|
|
6335
|
-
config.email.enabled && /* @__PURE__ */ (0,
|
|
6336
|
-
/* @__PURE__ */ (0,
|
|
6337
|
-
/* @__PURE__ */ (0,
|
|
6313
|
+
config.passkey.enabled && (config.email.enabled || config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6314
|
+
config.email.enabled && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "space-y-2", children: [
|
|
6315
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(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" : ""}` }),
|
|
6316
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Button, { onClick: () => {
|
|
6338
6317
|
setProviderType("email");
|
|
6339
6318
|
handleSendCode();
|
|
6340
6319
|
}, disabled: !email, className: "w-full", size: "lg", variant: "secondary", children: "Continue" })
|
|
6341
6320
|
] }),
|
|
6342
|
-
(config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ (0,
|
|
6343
|
-
config.wallet?.enabled && /* @__PURE__ */ (0,
|
|
6321
|
+
(config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6322
|
+
config.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
6344
6323
|
Button,
|
|
6345
6324
|
{
|
|
6346
6325
|
onClick: () => {
|
|
@@ -6356,24 +6335,24 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6356
6335
|
size: "lg",
|
|
6357
6336
|
variant: "outline",
|
|
6358
6337
|
children: [
|
|
6359
|
-
/* @__PURE__ */ (0,
|
|
6338
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Wallet, { className: "w-4 h-4 mr-2" }),
|
|
6360
6339
|
"Connect External Wallet"
|
|
6361
6340
|
]
|
|
6362
6341
|
}
|
|
6363
6342
|
),
|
|
6364
|
-
config.wallet?.enabled && config.social.enabled && config.social.providers.some((p) => p.enabled) && /* @__PURE__ */ (0,
|
|
6365
|
-
config.social.enabled && /* @__PURE__ */ (0,
|
|
6343
|
+
config.wallet?.enabled && config.social.enabled && config.social.providers.some((p) => p.enabled) && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6344
|
+
config.social.enabled && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `grid grid-cols-${config.social.gridColumns} gap-2`, children: config.social.providers.filter((p) => p.enabled).map((sp) => {
|
|
6366
6345
|
const map = { google: GoogleIcon, telegram: TelegramIcon, twitter: TwitterIcon, x: TwitterIcon, discord: DiscordIcon };
|
|
6367
6346
|
const F = sp.icon || map[sp.id.toLowerCase()];
|
|
6368
|
-
return /* @__PURE__ */ (0,
|
|
6347
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(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__ */ (0, import_jsx_runtime20.jsx)(F, { className: "w-6 h-6" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "text-sm", children: sp.name }) }, sp.id);
|
|
6369
6348
|
}) })
|
|
6370
|
-
] }) : /* @__PURE__ */ (0,
|
|
6371
|
-
providerType === "email" && emailCodeSent && /* @__PURE__ */ (0,
|
|
6372
|
-
/* @__PURE__ */ (0,
|
|
6349
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "mt-3 space-y-3", children: [
|
|
6350
|
+
providerType === "email" && emailCodeSent && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "space-y-2", children: [
|
|
6351
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("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: [
|
|
6373
6352
|
"Verification code sent to ",
|
|
6374
6353
|
email
|
|
6375
6354
|
] }),
|
|
6376
|
-
/* @__PURE__ */ (0,
|
|
6355
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6377
6356
|
VerificationCodeInput,
|
|
6378
6357
|
{
|
|
6379
6358
|
onVerifyCode: handleVerifyCode,
|
|
@@ -6384,9 +6363,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6384
6363
|
}
|
|
6385
6364
|
)
|
|
6386
6365
|
] }),
|
|
6387
|
-
providerType === "passkey" && /* @__PURE__ */ (0,
|
|
6388
|
-
/* @__PURE__ */ (0,
|
|
6389
|
-
/* @__PURE__ */ (0,
|
|
6366
|
+
providerType === "passkey" && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "space-y-3", children: [
|
|
6367
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("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." }),
|
|
6368
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
6390
6369
|
Button,
|
|
6391
6370
|
{
|
|
6392
6371
|
onClick: async () => {
|
|
@@ -6416,12 +6395,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6416
6395
|
size: "lg",
|
|
6417
6396
|
disabled: linkIsLoading,
|
|
6418
6397
|
children: [
|
|
6419
|
-
/* @__PURE__ */ (0,
|
|
6398
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Key, { className: "w-4 h-4 mr-2" }),
|
|
6420
6399
|
linkIsLoading ? "Linking\u2026" : "Create on This Device"
|
|
6421
6400
|
]
|
|
6422
6401
|
}
|
|
6423
6402
|
),
|
|
6424
|
-
/* @__PURE__ */ (0,
|
|
6403
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6425
6404
|
Button,
|
|
6426
6405
|
{
|
|
6427
6406
|
onClick: async () => {
|
|
@@ -6454,13 +6433,13 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6454
6433
|
children: "Create on Security Key"
|
|
6455
6434
|
}
|
|
6456
6435
|
),
|
|
6457
|
-
linkError && /* @__PURE__ */ (0,
|
|
6436
|
+
linkError && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("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 })
|
|
6458
6437
|
] }),
|
|
6459
|
-
providerType === "telegram" && /* @__PURE__ */ (0,
|
|
6460
|
-
/* @__PURE__ */ (0,
|
|
6461
|
-
/* @__PURE__ */ (0,
|
|
6438
|
+
providerType === "telegram" && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "space-y-3", children: [
|
|
6439
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("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." }),
|
|
6440
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { ref: telegramContainerRef, className: "flex justify-center" })
|
|
6462
6441
|
] }),
|
|
6463
|
-
providerType && providerType !== "email" && providerType !== "passkey" && providerType !== "telegram" && providerType !== "wallet" && /* @__PURE__ */ (0,
|
|
6442
|
+
providerType && providerType !== "email" && providerType !== "passkey" && providerType !== "telegram" && providerType !== "wallet" && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("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: [
|
|
6464
6443
|
"Linking with ",
|
|
6465
6444
|
providerType.charAt(0).toUpperCase() + providerType.slice(1),
|
|
6466
6445
|
" requires OAuth implementation. This would typically redirect to ",
|
|
@@ -6469,23 +6448,23 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6469
6448
|
] })
|
|
6470
6449
|
] })
|
|
6471
6450
|
] }) }) }),
|
|
6472
|
-
/* @__PURE__ */ (0,
|
|
6451
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Dialog, { open: !!confirmUnlink, onOpenChange: (v) => {
|
|
6473
6452
|
if (!v) {
|
|
6474
6453
|
setConfirmUnlink(null);
|
|
6475
6454
|
setConfirmInput("");
|
|
6476
6455
|
}
|
|
6477
|
-
}, children: /* @__PURE__ */ (0,
|
|
6478
|
-
/* @__PURE__ */ (0,
|
|
6479
|
-
/* @__PURE__ */ (0,
|
|
6456
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogContent, { className: `lumia-scope max-w-[380px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "p-5", children: [
|
|
6457
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogTitle, { className: `text-lg font-semibold ${theme.titleText}`, children: "Remove Authentication Method" }),
|
|
6458
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DialogDescription, { className: `${theme.bodyText} mt-2`, children: [
|
|
6480
6459
|
"This will permanently unlink ",
|
|
6481
6460
|
confirmUnlink?.providerName,
|
|
6482
6461
|
" from your account. You may lose access if this is your only verified method."
|
|
6483
6462
|
] }),
|
|
6484
|
-
/* @__PURE__ */ (0,
|
|
6485
|
-
confirmUnlink && /* @__PURE__ */ (0,
|
|
6486
|
-
/* @__PURE__ */ (0,
|
|
6487
|
-
/* @__PURE__ */ (0,
|
|
6488
|
-
/* @__PURE__ */ (0,
|
|
6463
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("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." }),
|
|
6464
|
+
confirmUnlink && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "mt-3", children: [
|
|
6465
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `text-xs mb-1 ${theme.mutedText}`, children: "Type the provider ID to confirm removal:" }),
|
|
6466
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: `text-[10px] font-mono mb-2 break-all ${isDark ? "text-gray-400" : "text-gray-600"}`, children: confirmUnlink.externalId }),
|
|
6467
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6489
6468
|
Input,
|
|
6490
6469
|
{
|
|
6491
6470
|
value: confirmInput,
|
|
@@ -6495,12 +6474,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6495
6474
|
}
|
|
6496
6475
|
)
|
|
6497
6476
|
] }),
|
|
6498
|
-
/* @__PURE__ */ (0,
|
|
6499
|
-
/* @__PURE__ */ (0,
|
|
6477
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "mt-4 flex justify-end gap-2", children: [
|
|
6478
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Button, { className: `${theme.outlineBtn}`, variant: "outline", onClick: () => {
|
|
6500
6479
|
setConfirmUnlink(null);
|
|
6501
6480
|
setConfirmInput("");
|
|
6502
6481
|
}, disabled: !!unlinking, children: "Cancel" }),
|
|
6503
|
-
/* @__PURE__ */ (0,
|
|
6482
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6504
6483
|
Button,
|
|
6505
6484
|
{
|
|
6506
6485
|
onClick: () => confirmUnlink && handleUnlink(confirmUnlink.provider, confirmUnlink.externalId),
|
|
@@ -6525,7 +6504,7 @@ init_vaultClient();
|
|
|
6525
6504
|
var import_lucide_react7 = require("lucide-react");
|
|
6526
6505
|
init_LumiaPassportContext();
|
|
6527
6506
|
init_useTheme();
|
|
6528
|
-
var
|
|
6507
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
6529
6508
|
var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
6530
6509
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
6531
6510
|
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -6604,179 +6583,179 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6604
6583
|
console.error("[SecurityModal] Error removing trusted app:", error);
|
|
6605
6584
|
}
|
|
6606
6585
|
};
|
|
6607
|
-
return /* @__PURE__ */ (0,
|
|
6608
|
-
/* @__PURE__ */ (0,
|
|
6609
|
-
/* @__PURE__ */ (0,
|
|
6610
|
-
/* @__PURE__ */ (0,
|
|
6611
|
-
/* @__PURE__ */ (0,
|
|
6612
|
-
/* @__PURE__ */ (0,
|
|
6613
|
-
onBack && /* @__PURE__ */ (0,
|
|
6586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Dialog, { open, onOpenChange, children: [
|
|
6587
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(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: [
|
|
6588
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DialogTitle, { children: "Security" }) }),
|
|
6589
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DialogDescription, { className: "sr-only", children: "Keyshare and vault status" }),
|
|
6590
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "p-5 space-y-4", children: [
|
|
6591
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6592
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
6614
6593
|
"button",
|
|
6615
6594
|
{
|
|
6616
6595
|
onClick: onBack,
|
|
6617
|
-
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6596
|
+
className: `p-1 mr-1 bg-transparent border-0 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6618
6597
|
title: "Back",
|
|
6619
|
-
children: /* @__PURE__ */ (0,
|
|
6598
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.ArrowLeft, { className: "h-4 w-4" })
|
|
6620
6599
|
}
|
|
6621
6600
|
),
|
|
6622
|
-
/* @__PURE__ */ (0,
|
|
6623
|
-
/* @__PURE__ */ (0,
|
|
6624
|
-
/* @__PURE__ */ (0,
|
|
6625
|
-
/* @__PURE__ */ (0,
|
|
6601
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `flex items-center gap-2 ${theme.text} font-semibold`, children: [
|
|
6602
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Key, { className: "h-4 w-4" }),
|
|
6603
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: "Keyshare Status" }),
|
|
6604
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("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__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.RefreshCw, { className: `h-4 w-4 ${isRefreshing ? "animate-spin" : ""}` }) })
|
|
6626
6605
|
] })
|
|
6627
6606
|
] }) }),
|
|
6628
|
-
/* @__PURE__ */ (0,
|
|
6629
|
-
/* @__PURE__ */ (0,
|
|
6630
|
-
/* @__PURE__ */ (0,
|
|
6631
|
-
/* @__PURE__ */ (0,
|
|
6632
|
-
/* @__PURE__ */ (0,
|
|
6607
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
6608
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
6609
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6610
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Cloud, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6611
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Server" })
|
|
6633
6612
|
] }),
|
|
6634
|
-
/* @__PURE__ */ (0,
|
|
6635
|
-
serverHasKeyshare ? /* @__PURE__ */ (0,
|
|
6613
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("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: [
|
|
6614
|
+
serverHasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
6636
6615
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
6637
6616
|
] })
|
|
6638
6617
|
] }),
|
|
6639
|
-
/* @__PURE__ */ (0,
|
|
6640
|
-
/* @__PURE__ */ (0,
|
|
6641
|
-
/* @__PURE__ */ (0,
|
|
6642
|
-
/* @__PURE__ */ (0,
|
|
6618
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
6619
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6620
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Laptop, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6621
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Local" })
|
|
6643
6622
|
] }),
|
|
6644
|
-
/* @__PURE__ */ (0,
|
|
6645
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */ (0,
|
|
6623
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("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: [
|
|
6624
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
6646
6625
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
6647
6626
|
] })
|
|
6648
6627
|
] }),
|
|
6649
|
-
/* @__PURE__ */ (0,
|
|
6650
|
-
/* @__PURE__ */ (0,
|
|
6651
|
-
/* @__PURE__ */ (0,
|
|
6652
|
-
/* @__PURE__ */ (0,
|
|
6628
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
6629
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6630
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Shield, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6631
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Vault" })
|
|
6653
6632
|
] }),
|
|
6654
|
-
/* @__PURE__ */ (0,
|
|
6655
|
-
hasServerBackup ? /* @__PURE__ */ (0,
|
|
6633
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("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: [
|
|
6634
|
+
hasServerBackup ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
6656
6635
|
hasServerBackup ? "Ready" : "None"
|
|
6657
6636
|
] })
|
|
6658
6637
|
] })
|
|
6659
6638
|
] }),
|
|
6660
|
-
localInfo?.hasKeyshare && /* @__PURE__ */ (0,
|
|
6661
|
-
localInfo.ownerAddress && /* @__PURE__ */ (0,
|
|
6639
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6640
|
+
localInfo.ownerAddress && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6662
6641
|
"Owner: ",
|
|
6663
|
-
/* @__PURE__ */ (0,
|
|
6642
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: `font-mono break-all ${isDark ? "text-gray-200" : "text-gray-800"}`, children: localInfo.ownerAddress })
|
|
6664
6643
|
] }),
|
|
6665
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0,
|
|
6644
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6666
6645
|
"Size: ",
|
|
6667
|
-
/* @__PURE__ */ (0,
|
|
6646
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { className: `font-mono ${isDark ? "text-gray-200" : "text-gray-800"}`, children: [
|
|
6668
6647
|
Math.round((localInfo.keyshareSize || 0) / 1024),
|
|
6669
6648
|
"KB"
|
|
6670
6649
|
] })
|
|
6671
6650
|
] }),
|
|
6672
|
-
localInfo.sessionId && /* @__PURE__ */ (0,
|
|
6651
|
+
localInfo.sessionId && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6673
6652
|
"Session: ",
|
|
6674
|
-
/* @__PURE__ */ (0,
|
|
6653
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: `font-mono break-all ${isDark ? "text-gray-200" : "text-gray-800"}`, children: localInfo.sessionId })
|
|
6675
6654
|
] })
|
|
6676
6655
|
] }),
|
|
6677
|
-
/* @__PURE__ */ (0,
|
|
6678
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0,
|
|
6679
|
-
/* @__PURE__ */ (0,
|
|
6680
|
-
/* @__PURE__ */ (0,
|
|
6656
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-500"}`, children: [
|
|
6657
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
6658
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Server, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6659
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { children: [
|
|
6681
6660
|
"Server: ",
|
|
6682
6661
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
6683
6662
|
] })
|
|
6684
6663
|
] }),
|
|
6685
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
6686
|
-
/* @__PURE__ */ (0,
|
|
6687
|
-
/* @__PURE__ */ (0,
|
|
6664
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
6665
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Server, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6666
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { children: [
|
|
6688
6667
|
"Server: ",
|
|
6689
6668
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
6690
6669
|
] })
|
|
6691
6670
|
] }),
|
|
6692
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0,
|
|
6693
|
-
/* @__PURE__ */ (0,
|
|
6694
|
-
/* @__PURE__ */ (0,
|
|
6671
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
6672
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Cloud, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6673
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { children: [
|
|
6695
6674
|
"Cloud: ",
|
|
6696
6675
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
6697
6676
|
] })
|
|
6698
6677
|
] }),
|
|
6699
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0,
|
|
6700
|
-
/* @__PURE__ */ (0,
|
|
6701
|
-
/* @__PURE__ */ (0,
|
|
6678
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
6679
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.HardDrive, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6680
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { children: [
|
|
6702
6681
|
"Local: ",
|
|
6703
6682
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
6704
6683
|
] })
|
|
6705
6684
|
] })
|
|
6706
6685
|
] }),
|
|
6707
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0,
|
|
6708
|
-
/* @__PURE__ */ (0,
|
|
6709
|
-
recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
6686
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6687
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: `font-medium text-[11px] ${isDark ? "text-indigo-400" : "text-indigo-600"}`, children: "Device Information:" }),
|
|
6688
|
+
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6710
6689
|
"Created: ",
|
|
6711
6690
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
6712
6691
|
" "
|
|
6713
6692
|
] }),
|
|
6714
|
-
recoveryCountry && /* @__PURE__ */ (0,
|
|
6693
|
+
recoveryCountry && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6715
6694
|
"Country: ",
|
|
6716
6695
|
recoveryCountry
|
|
6717
6696
|
] }),
|
|
6718
|
-
recoveryBrowser && /* @__PURE__ */ (0,
|
|
6697
|
+
recoveryBrowser && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6719
6698
|
"Browser: ",
|
|
6720
6699
|
recoveryBrowser
|
|
6721
6700
|
] }),
|
|
6722
|
-
parseOS(recoveryUa) && /* @__PURE__ */ (0,
|
|
6701
|
+
parseOS(recoveryUa) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6723
6702
|
"OS: ",
|
|
6724
6703
|
parseOS(recoveryUa)
|
|
6725
6704
|
] }),
|
|
6726
|
-
recoveryDeviceName && /* @__PURE__ */ (0,
|
|
6705
|
+
recoveryDeviceName && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6727
6706
|
"Device: ",
|
|
6728
6707
|
recoveryDeviceName
|
|
6729
6708
|
] }),
|
|
6730
|
-
recoveryDeviceId && /* @__PURE__ */ (0,
|
|
6709
|
+
recoveryDeviceId && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6731
6710
|
"Device ID: ",
|
|
6732
|
-
/* @__PURE__ */ (0,
|
|
6711
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
6733
6712
|
] })
|
|
6734
6713
|
] }),
|
|
6735
|
-
trustedApps.length > 0 && /* @__PURE__ */ (0,
|
|
6736
|
-
/* @__PURE__ */ (0,
|
|
6714
|
+
trustedApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `space-y-2 ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6715
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `font-medium text-[11px] ${isDark ? "text-green-400" : "text-green-600"}`, children: [
|
|
6737
6716
|
"Trusted Applications (",
|
|
6738
6717
|
trustedApps.length,
|
|
6739
6718
|
"):"
|
|
6740
6719
|
] }),
|
|
6741
|
-
/* @__PURE__ */ (0,
|
|
6742
|
-
/* @__PURE__ */ (0,
|
|
6743
|
-
/* @__PURE__ */ (0,
|
|
6744
|
-
/* @__PURE__ */ (0,
|
|
6720
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("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: [
|
|
6721
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
6722
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: `font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: new URL(app.origin).hostname }),
|
|
6723
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `${isDark ? "text-gray-400" : "text-gray-500"}`, children: [
|
|
6745
6724
|
"Trusted: ",
|
|
6746
6725
|
new Date(app.trustedAt).toLocaleDateString()
|
|
6747
6726
|
] })
|
|
6748
6727
|
] }),
|
|
6749
|
-
/* @__PURE__ */ (0,
|
|
6728
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
6750
6729
|
"button",
|
|
6751
6730
|
{
|
|
6752
6731
|
onClick: () => setAppToRemove({ projectId: app.projectId, origin: app.origin, hostname: new URL(app.origin).hostname }),
|
|
6753
6732
|
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"}`,
|
|
6754
6733
|
title: "Remove from trusted",
|
|
6755
|
-
children: /* @__PURE__ */ (0,
|
|
6734
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Trash2, { className: "h-3 w-3" })
|
|
6756
6735
|
}
|
|
6757
6736
|
)
|
|
6758
6737
|
] }, index)) })
|
|
6759
6738
|
] })
|
|
6760
6739
|
] })
|
|
6761
6740
|
] }),
|
|
6762
|
-
appToRemove && /* @__PURE__ */ (0,
|
|
6763
|
-
/* @__PURE__ */ (0,
|
|
6764
|
-
/* @__PURE__ */ (0,
|
|
6765
|
-
/* @__PURE__ */ (0,
|
|
6766
|
-
/* @__PURE__ */ (0,
|
|
6767
|
-
/* @__PURE__ */ (0,
|
|
6768
|
-
/* @__PURE__ */ (0,
|
|
6769
|
-
/* @__PURE__ */ (0,
|
|
6770
|
-
/* @__PURE__ */ (0,
|
|
6771
|
-
/* @__PURE__ */ (0,
|
|
6772
|
-
/* @__PURE__ */ (0,
|
|
6773
|
-
/* @__PURE__ */ (0,
|
|
6774
|
-
/* @__PURE__ */ (0,
|
|
6741
|
+
appToRemove && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Dialog, { open: !!appToRemove, onOpenChange: (open2) => !open2 && setAppToRemove(null), children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(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: [
|
|
6742
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DialogTitle, { children: "Remove Trusted Application" }) }),
|
|
6743
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DialogDescription, { className: "sr-only", children: "Confirm removal of trusted application" }),
|
|
6744
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "p-5 space-y-4", children: [
|
|
6745
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `text-center ${theme.text}`, children: [
|
|
6746
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "text-lg font-semibold mb-2", children: "Remove Trusted App?" }),
|
|
6747
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: `text-sm ${isDark ? "text-gray-300" : "text-gray-700"} mb-3`, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "font-medium", children: appToRemove.hostname }) }),
|
|
6748
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: `text-xs ${isDark ? "text-gray-400" : "text-gray-600"} text-left space-y-2`, children: [
|
|
6749
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { children: "After removing this application from trusted list:" }),
|
|
6750
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("ul", { className: "list-disc list-inside space-y-1 ml-2", children: [
|
|
6751
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("li", { children: "All transactions will require confirmation in a separate window" }),
|
|
6752
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("li", { children: "You can add it back to trusted list at any time" }),
|
|
6753
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("li", { children: 'Transaction confirmation window will show "Trust this app" checkbox' })
|
|
6775
6754
|
] })
|
|
6776
6755
|
] })
|
|
6777
6756
|
] }),
|
|
6778
|
-
/* @__PURE__ */ (0,
|
|
6779
|
-
/* @__PURE__ */ (0,
|
|
6757
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex gap-2", children: [
|
|
6758
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
6780
6759
|
Button,
|
|
6781
6760
|
{
|
|
6782
6761
|
onClick: () => setAppToRemove(null),
|
|
@@ -6786,7 +6765,7 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6786
6765
|
children: "Cancel"
|
|
6787
6766
|
}
|
|
6788
6767
|
),
|
|
6789
|
-
/* @__PURE__ */ (0,
|
|
6768
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
6790
6769
|
Button,
|
|
6791
6770
|
{
|
|
6792
6771
|
onClick: confirmRemoveTrustedApp,
|
|
@@ -6811,8 +6790,8 @@ init_input();
|
|
|
6811
6790
|
init_iframe_manager();
|
|
6812
6791
|
init_LumiaPassportContext();
|
|
6813
6792
|
init_useTheme();
|
|
6814
|
-
var
|
|
6815
|
-
function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
6793
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
6794
|
+
function KeyshareBackup({ userId, onBackupSuccess, onBack }) {
|
|
6816
6795
|
const { config } = useLumiaPassportConfig();
|
|
6817
6796
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
6818
6797
|
const [backupStatus, setBackupStatus] = React18.useState({
|
|
@@ -6955,27 +6934,36 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
6955
6934
|
const date = new Date(timestamp);
|
|
6956
6935
|
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
6957
6936
|
};
|
|
6958
|
-
return /* @__PURE__ */ (0,
|
|
6959
|
-
/* @__PURE__ */ (0,
|
|
6960
|
-
/* @__PURE__ */ (0,
|
|
6961
|
-
/* @__PURE__ */ (0,
|
|
6962
|
-
|
|
6937
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(Card, { className: `${theme.modalBg} border-0`, children: [
|
|
6938
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(CardHeader, { className: "pb-3", children: [
|
|
6939
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6940
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
6941
|
+
"button",
|
|
6942
|
+
{
|
|
6943
|
+
onClick: onBack,
|
|
6944
|
+
className: `p-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6945
|
+
title: "Back",
|
|
6946
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.ArrowLeft, { className: "h-4 w-4" })
|
|
6947
|
+
}
|
|
6948
|
+
),
|
|
6949
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.Shield, { className: `h-5 w-5 ${isDark ? "text-green-400" : "text-green-600"}` }),
|
|
6950
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardTitle, { className: `text-base ${theme.titleText}`, children: "Create Backup" })
|
|
6963
6951
|
] }),
|
|
6964
|
-
/* @__PURE__ */ (0,
|
|
6952
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardDescription, { className: `text-sm mt-1 ${theme.mutedText}`, children: "Secure your keyshare with encrypted backups" })
|
|
6965
6953
|
] }),
|
|
6966
|
-
/* @__PURE__ */ (0,
|
|
6967
|
-
error && /* @__PURE__ */ (0,
|
|
6968
|
-
/* @__PURE__ */ (0,
|
|
6969
|
-
/* @__PURE__ */ (0,
|
|
6954
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(CardContent, { className: "space-y-3.5", children: [
|
|
6955
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("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: [
|
|
6956
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
6957
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: error })
|
|
6970
6958
|
] }),
|
|
6971
|
-
success && /* @__PURE__ */ (0,
|
|
6972
|
-
/* @__PURE__ */ (0,
|
|
6973
|
-
/* @__PURE__ */ (0,
|
|
6959
|
+
success && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("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: [
|
|
6960
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.CheckCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
6961
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: success })
|
|
6974
6962
|
] }),
|
|
6975
|
-
/* @__PURE__ */ (0,
|
|
6976
|
-
/* @__PURE__ */ (0,
|
|
6977
|
-
/* @__PURE__ */ (0,
|
|
6978
|
-
/* @__PURE__ */ (0,
|
|
6963
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2", children: [
|
|
6964
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Encryption Method:" }),
|
|
6965
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6966
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
6979
6967
|
"input",
|
|
6980
6968
|
{
|
|
6981
6969
|
type: "checkbox",
|
|
@@ -6985,42 +6973,45 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
6985
6973
|
className: "rounded"
|
|
6986
6974
|
}
|
|
6987
6975
|
),
|
|
6988
|
-
/* @__PURE__ */ (0,
|
|
6976
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("label", { htmlFor: "use-backup-password", className: `text-xs ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Use custom password instead of passkey" })
|
|
6989
6977
|
] }),
|
|
6990
|
-
!useCustomPassword && /* @__PURE__ */ (0,
|
|
6991
|
-
/* @__PURE__ */ (0,
|
|
6992
|
-
/* @__PURE__ */ (0,
|
|
6978
|
+
!useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("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__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6979
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.Key, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
6980
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: "Passkey will be used to encrypt the backup" })
|
|
6993
6981
|
] }) }),
|
|
6994
|
-
useCustomPassword && /* @__PURE__ */ (0,
|
|
6995
|
-
/* @__PURE__ */ (0,
|
|
6982
|
+
useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "relative", children: [
|
|
6983
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
6996
6984
|
Input,
|
|
6997
6985
|
{
|
|
6998
6986
|
type: showPassword ? "text" : "password",
|
|
6999
6987
|
placeholder: "Enter backup password",
|
|
7000
6988
|
value: customPassword,
|
|
7001
6989
|
onChange: (e) => setCustomPassword(e.target.value),
|
|
7002
|
-
className: `pr-10 text-sm ${isDark ? "bg-
|
|
6990
|
+
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"}`,
|
|
6991
|
+
style: {
|
|
6992
|
+
WebkitTextFillColor: isDark ? "#ffffff" : "#111827"
|
|
6993
|
+
}
|
|
7003
6994
|
}
|
|
7004
6995
|
),
|
|
7005
|
-
/* @__PURE__ */ (0,
|
|
6996
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7006
6997
|
"button",
|
|
7007
6998
|
{
|
|
7008
6999
|
type: "button",
|
|
7009
7000
|
onClick: () => setShowPassword(!showPassword),
|
|
7010
|
-
className: `absolute right-
|
|
7011
|
-
children: showPassword ? /* @__PURE__ */ (0,
|
|
7001
|
+
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"}`,
|
|
7002
|
+
children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.Eye, { className: "h-4 w-4" })
|
|
7012
7003
|
}
|
|
7013
7004
|
)
|
|
7014
7005
|
] })
|
|
7015
7006
|
] }),
|
|
7016
|
-
/* @__PURE__ */ (0,
|
|
7017
|
-
/* @__PURE__ */ (0,
|
|
7018
|
-
/* @__PURE__ */ (0,
|
|
7019
|
-
/* @__PURE__ */ (0,
|
|
7020
|
-
/* @__PURE__ */ (0,
|
|
7021
|
-
/* @__PURE__ */ (0,
|
|
7007
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "space-y-2.5", children: [
|
|
7008
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Choose Backup Method:" }),
|
|
7009
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: `p-3 rounded ${isDark ? "bg-blue-500/10" : "bg-blue-50/50"}`, children: [
|
|
7010
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7011
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.Server, { className: `h-4 w-4 ${isDark ? "text-blue-400" : "text-blue-600"}` }),
|
|
7012
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Server Backup" })
|
|
7022
7013
|
] }),
|
|
7023
|
-
/* @__PURE__ */ (0,
|
|
7014
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7024
7015
|
Button,
|
|
7025
7016
|
{
|
|
7026
7017
|
onClick: () => handleBackup("server"),
|
|
@@ -7030,22 +7021,22 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7030
7021
|
}
|
|
7031
7022
|
)
|
|
7032
7023
|
] }),
|
|
7033
|
-
/* @__PURE__ */ (0,
|
|
7034
|
-
/* @__PURE__ */ (0,
|
|
7035
|
-
/* @__PURE__ */ (0,
|
|
7036
|
-
/* @__PURE__ */ (0,
|
|
7037
|
-
/* @__PURE__ */ (0,
|
|
7024
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
7025
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: `p-3 rounded flex flex-col ${isDark ? "bg-sky-500/10" : "bg-sky-50/50"}`, children: [
|
|
7026
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7027
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.Cloud, { className: `h-4 w-4 ${isDark ? "text-sky-400" : "text-sky-600"}` }),
|
|
7028
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Cloud" })
|
|
7038
7029
|
] }),
|
|
7039
|
-
cloudProviders.length > 1 && /* @__PURE__ */ (0,
|
|
7030
|
+
cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7040
7031
|
"select",
|
|
7041
7032
|
{
|
|
7042
7033
|
value: selectedCloudProvider || "",
|
|
7043
7034
|
onChange: (e) => setSelectedCloudProvider(e.target.value),
|
|
7044
7035
|
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"}`,
|
|
7045
|
-
children: cloudProviders.map((provider) => /* @__PURE__ */ (0,
|
|
7036
|
+
children: cloudProviders.map((provider) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("option", { value: provider.id, disabled: !provider.available, children: provider.name }, provider.id))
|
|
7046
7037
|
}
|
|
7047
7038
|
),
|
|
7048
|
-
/* @__PURE__ */ (0,
|
|
7039
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7049
7040
|
Button,
|
|
7050
7041
|
{
|
|
7051
7042
|
onClick: () => handleBackup("cloud"),
|
|
@@ -7056,13 +7047,13 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7056
7047
|
}
|
|
7057
7048
|
)
|
|
7058
7049
|
] }),
|
|
7059
|
-
/* @__PURE__ */ (0,
|
|
7060
|
-
/* @__PURE__ */ (0,
|
|
7061
|
-
/* @__PURE__ */ (0,
|
|
7062
|
-
/* @__PURE__ */ (0,
|
|
7050
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: `p-3 rounded flex flex-col ${isDark ? "bg-purple-500/10" : "bg-purple-50/50"}`, children: [
|
|
7051
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7052
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.Download, { className: `h-4 w-4 ${isDark ? "text-purple-400" : "text-purple-600"}` }),
|
|
7053
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "File" })
|
|
7063
7054
|
] }),
|
|
7064
|
-
cloudProviders.length > 1 && /* @__PURE__ */ (0,
|
|
7065
|
-
/* @__PURE__ */ (0,
|
|
7055
|
+
cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-[32px]" }),
|
|
7056
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7066
7057
|
Button,
|
|
7067
7058
|
{
|
|
7068
7059
|
onClick: () => handleBackup("local"),
|
|
@@ -7075,10 +7066,10 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7075
7066
|
] })
|
|
7076
7067
|
] })
|
|
7077
7068
|
] }),
|
|
7078
|
-
/* @__PURE__ */ (0,
|
|
7079
|
-
/* @__PURE__ */ (0,
|
|
7080
|
-
/* @__PURE__ */ (0,
|
|
7081
|
-
/* @__PURE__ */ (0,
|
|
7069
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("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: [
|
|
7070
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react8.Lock, { className: "h-3.5 w-3.5 mt-0.5 flex-shrink-0 text-amber-500" }),
|
|
7071
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { children: [
|
|
7072
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "font-medium", children: "Security Notice:" }),
|
|
7082
7073
|
" All backups are encrypted with AES-256 using your ",
|
|
7083
7074
|
useCustomPassword ? "custom password" : "passkey",
|
|
7084
7075
|
".",
|
|
@@ -7097,7 +7088,7 @@ var import_lucide_react9 = require("lucide-react");
|
|
|
7097
7088
|
init_base();
|
|
7098
7089
|
init_LumiaPassportContext();
|
|
7099
7090
|
init_useTheme();
|
|
7100
|
-
var
|
|
7091
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
7101
7092
|
var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
7102
7093
|
const { address } = useLumiaSession();
|
|
7103
7094
|
const [transactions, setTransactions] = import_react13.default.useState([]);
|
|
@@ -7147,98 +7138,98 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7147
7138
|
}
|
|
7148
7139
|
};
|
|
7149
7140
|
const getStatusIcon = (status) => {
|
|
7150
|
-
return status === "ok" ? /* @__PURE__ */ (0,
|
|
7141
|
+
return status === "ok" ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.CheckCircle2, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.XCircle, { className: "w-4 h-4 text-red-500" });
|
|
7151
7142
|
};
|
|
7152
7143
|
const getTransactionIcon = (from, to) => {
|
|
7153
7144
|
const isIncoming = to.toLowerCase() === address?.toLowerCase();
|
|
7154
|
-
return isIncoming ? /* @__PURE__ */ (0,
|
|
7145
|
+
return isIncoming ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.ArrowDownRight, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.ArrowUpRight, { className: "w-4 h-4 text-blue-500" });
|
|
7155
7146
|
};
|
|
7156
7147
|
const openInExplorer = (txHash) => {
|
|
7157
7148
|
const explorerUrl = getExplorerUrl();
|
|
7158
7149
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
7159
7150
|
};
|
|
7160
|
-
return /* @__PURE__ */ (0,
|
|
7161
|
-
/* @__PURE__ */ (0,
|
|
7162
|
-
/* @__PURE__ */ (0,
|
|
7163
|
-
/* @__PURE__ */ (0,
|
|
7164
|
-
onBack && /* @__PURE__ */ (0,
|
|
7151
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(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: [
|
|
7152
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DialogTitle, { children: "Transaction History" }) }),
|
|
7153
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DialogDescription, { className: "sr-only", children: "View your transaction history" }),
|
|
7154
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7155
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
7165
7156
|
"button",
|
|
7166
7157
|
{
|
|
7167
7158
|
onClick: onBack,
|
|
7168
7159
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7169
7160
|
title: "Back",
|
|
7170
|
-
children: /* @__PURE__ */ (0,
|
|
7161
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.ArrowLeft, { className: "h-4 w-4" })
|
|
7171
7162
|
}
|
|
7172
7163
|
),
|
|
7173
|
-
/* @__PURE__ */ (0,
|
|
7174
|
-
/* @__PURE__ */ (0,
|
|
7175
|
-
/* @__PURE__ */ (0,
|
|
7176
|
-
/* @__PURE__ */ (0,
|
|
7164
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
7165
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Activity, { className: "h-5 w-5" }),
|
|
7166
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: "Transaction History" }),
|
|
7167
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
7177
7168
|
"button",
|
|
7178
7169
|
{
|
|
7179
7170
|
onClick: loadTransactions,
|
|
7180
7171
|
disabled: loading,
|
|
7181
7172
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7182
7173
|
title: "Refresh transactions",
|
|
7183
|
-
children: /* @__PURE__ */ (0,
|
|
7174
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.RefreshCw, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
|
|
7184
7175
|
}
|
|
7185
7176
|
)
|
|
7186
7177
|
] })
|
|
7187
7178
|
] }) }),
|
|
7188
|
-
/* @__PURE__ */ (0,
|
|
7189
|
-
/* @__PURE__ */ (0,
|
|
7190
|
-
/* @__PURE__ */ (0,
|
|
7191
|
-
] }) : transactions.length === 0 ? /* @__PURE__ */ (0,
|
|
7192
|
-
/* @__PURE__ */ (0,
|
|
7193
|
-
/* @__PURE__ */ (0,
|
|
7179
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `${theme.mutedText}`, children: "Loading transactions..." }) }) : error ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${isDark ? "text-red-400" : "text-red-500"}`, children: [
|
|
7180
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.XCircle, { className: "w-12 h-12 mb-2" }),
|
|
7181
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-center text-sm", children: error })
|
|
7182
|
+
] }) : transactions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
7183
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Activity, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
|
|
7184
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("p", { className: "text-center", children: [
|
|
7194
7185
|
"No transactions found",
|
|
7195
|
-
/* @__PURE__ */ (0,
|
|
7196
|
-
/* @__PURE__ */ (0,
|
|
7186
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("br", {}),
|
|
7187
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
7197
7188
|
] })
|
|
7198
|
-
] }) : /* @__PURE__ */ (0,
|
|
7189
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "space-y-3", children: transactions.map((tx) => {
|
|
7199
7190
|
const isIncoming = tx.to.hash.toLowerCase() === address?.toLowerCase();
|
|
7200
7191
|
const displayAddress = isIncoming ? tx.from.hash : tx.to.hash;
|
|
7201
|
-
return /* @__PURE__ */ (0,
|
|
7192
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
7202
7193
|
"div",
|
|
7203
7194
|
{
|
|
7204
7195
|
className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors cursor-pointer`,
|
|
7205
7196
|
onClick: () => openInExplorer(tx.hash),
|
|
7206
7197
|
children: [
|
|
7207
|
-
/* @__PURE__ */ (0,
|
|
7208
|
-
/* @__PURE__ */ (0,
|
|
7198
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
|
|
7199
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7209
7200
|
getTransactionIcon(tx.from.hash, tx.to.hash),
|
|
7210
|
-
/* @__PURE__ */ (0,
|
|
7201
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
|
|
7211
7202
|
getStatusIcon(tx.status)
|
|
7212
7203
|
] }),
|
|
7213
|
-
/* @__PURE__ */ (0,
|
|
7204
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
|
|
7214
7205
|
] }),
|
|
7215
|
-
/* @__PURE__ */ (0,
|
|
7216
|
-
/* @__PURE__ */ (0,
|
|
7217
|
-
/* @__PURE__ */ (0,
|
|
7218
|
-
/* @__PURE__ */ (0,
|
|
7206
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-1 text-sm", children: [
|
|
7207
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
|
|
7208
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: isIncoming ? "From:" : "To:" }),
|
|
7209
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: `font-mono ${theme.titleText}`, children: [
|
|
7219
7210
|
formatAddress(displayAddress),
|
|
7220
|
-
(isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ (0,
|
|
7211
|
+
(isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} ml-1`, children: "(Contract)" })
|
|
7221
7212
|
] })
|
|
7222
7213
|
] }),
|
|
7223
|
-
/* @__PURE__ */ (0,
|
|
7224
|
-
/* @__PURE__ */ (0,
|
|
7225
|
-
/* @__PURE__ */ (0,
|
|
7214
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
|
|
7215
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: "Value:" }),
|
|
7216
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: `font-semibold ${theme.titleText}`, children: [
|
|
7226
7217
|
formatValue(tx.value),
|
|
7227
7218
|
" LUMIA"
|
|
7228
7219
|
] })
|
|
7229
7220
|
] }),
|
|
7230
|
-
/* @__PURE__ */ (0,
|
|
7231
|
-
/* @__PURE__ */ (0,
|
|
7232
|
-
/* @__PURE__ */ (0,
|
|
7221
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
|
|
7222
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: "Block:" }),
|
|
7223
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: `font-mono ${theme.titleText}`, children: [
|
|
7233
7224
|
"#",
|
|
7234
7225
|
tx.block_number
|
|
7235
7226
|
] })
|
|
7236
7227
|
] }),
|
|
7237
|
-
tx.method && /* @__PURE__ */ (0,
|
|
7238
|
-
/* @__PURE__ */ (0,
|
|
7239
|
-
/* @__PURE__ */ (0,
|
|
7228
|
+
tx.method && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
|
|
7229
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: "Method:" }),
|
|
7230
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${isDark ? "text-blue-400" : "text-blue-600"} text-xs`, children: tx.method })
|
|
7240
7231
|
] }),
|
|
7241
|
-
tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ (0,
|
|
7232
|
+
tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
7242
7233
|
"span",
|
|
7243
7234
|
{
|
|
7244
7235
|
className: `text-xs ${isDark ? "bg-blue-900/30 text-blue-300" : "bg-blue-100 text-blue-800"} px-2 py-0.5 rounded-full`,
|
|
@@ -7252,7 +7243,7 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7252
7243
|
tx.hash
|
|
7253
7244
|
);
|
|
7254
7245
|
}) }) }),
|
|
7255
|
-
transactions.length > 0 && /* @__PURE__ */ (0,
|
|
7246
|
+
transactions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
7256
7247
|
"Total: ",
|
|
7257
7248
|
transactions.length,
|
|
7258
7249
|
" transaction",
|
|
@@ -7431,7 +7422,7 @@ var import_lucide_react10 = require("lucide-react");
|
|
|
7431
7422
|
init_base();
|
|
7432
7423
|
init_LumiaPassportContext();
|
|
7433
7424
|
init_useTheme();
|
|
7434
|
-
var
|
|
7425
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
7435
7426
|
var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
7436
7427
|
const { address } = useLumiaSession();
|
|
7437
7428
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
@@ -7450,107 +7441,107 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7450
7441
|
const openInExplorer = (address2) => {
|
|
7451
7442
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address2}`, "_blank");
|
|
7452
7443
|
};
|
|
7453
|
-
return /* @__PURE__ */ (0,
|
|
7454
|
-
/* @__PURE__ */ (0,
|
|
7455
|
-
/* @__PURE__ */ (0,
|
|
7456
|
-
/* @__PURE__ */ (0,
|
|
7457
|
-
onBack && /* @__PURE__ */ (0,
|
|
7444
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(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: [
|
|
7445
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DialogTitle, { children: "View Assets" }) }),
|
|
7446
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DialogDescription, { className: "sr-only", children: "View your token balances and assets" }),
|
|
7447
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7448
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7458
7449
|
"button",
|
|
7459
7450
|
{
|
|
7460
7451
|
onClick: onBack,
|
|
7461
7452
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7462
7453
|
title: "Back",
|
|
7463
|
-
children: /* @__PURE__ */ (0,
|
|
7454
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ArrowLeft, { className: "h-4 w-4" })
|
|
7464
7455
|
}
|
|
7465
7456
|
),
|
|
7466
|
-
/* @__PURE__ */ (0,
|
|
7467
|
-
/* @__PURE__ */ (0,
|
|
7468
|
-
/* @__PURE__ */ (0,
|
|
7469
|
-
/* @__PURE__ */ (0,
|
|
7457
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
7458
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Gem, { className: "h-5 w-5" }),
|
|
7459
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { children: "Your Assets" }),
|
|
7460
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7470
7461
|
"button",
|
|
7471
7462
|
{
|
|
7472
7463
|
onClick: refreshBalances,
|
|
7473
7464
|
disabled: isLoading,
|
|
7474
7465
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7475
7466
|
title: "Refresh balances",
|
|
7476
|
-
children: /* @__PURE__ */ (0,
|
|
7467
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.RefreshCw, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
|
|
7477
7468
|
}
|
|
7478
7469
|
)
|
|
7479
7470
|
] })
|
|
7480
7471
|
] }) }),
|
|
7481
|
-
/* @__PURE__ */ (0,
|
|
7482
|
-
/* @__PURE__ */ (0,
|
|
7483
|
-
/* @__PURE__ */ (0,
|
|
7484
|
-
] }) : /* @__PURE__ */ (0,
|
|
7485
|
-
/* @__PURE__ */ (0,
|
|
7486
|
-
/* @__PURE__ */ (0,
|
|
7487
|
-
/* @__PURE__ */ (0,
|
|
7488
|
-
/* @__PURE__ */ (0,
|
|
7489
|
-
/* @__PURE__ */ (0,
|
|
7490
|
-
/* @__PURE__ */ (0,
|
|
7472
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `${theme.mutedText}`, children: "Loading assets..." }) }) : assets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
7473
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Gem, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
|
|
7474
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { children: "No assets found" })
|
|
7475
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "space-y-3", children: assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors`, children: [
|
|
7476
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
|
|
7477
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
7478
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("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__ */ (0, import_jsx_runtime24.jsx)("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
7479
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { children: [
|
|
7480
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `font-medium ${theme.titleText}`, children: asset.name }),
|
|
7481
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
|
|
7491
7482
|
] })
|
|
7492
7483
|
] }),
|
|
7493
|
-
/* @__PURE__ */ (0,
|
|
7494
|
-
/* @__PURE__ */ (0,
|
|
7495
|
-
/* @__PURE__ */ (0,
|
|
7484
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "text-right", children: [
|
|
7485
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `font-mono ${theme.titleText}`, children: asset.formattedBalance }),
|
|
7486
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
|
|
7496
7487
|
] })
|
|
7497
7488
|
] }),
|
|
7498
|
-
asset.address && /* @__PURE__ */ (0,
|
|
7499
|
-
/* @__PURE__ */ (0,
|
|
7500
|
-
/* @__PURE__ */ (0,
|
|
7501
|
-
/* @__PURE__ */ (0,
|
|
7502
|
-
/* @__PURE__ */ (0,
|
|
7503
|
-
/* @__PURE__ */ (0,
|
|
7489
|
+
asset.address && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `space-y-2 mt-3 pt-3 border-t ${theme.divider}`, children: [
|
|
7490
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7491
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Contract Address:" }),
|
|
7492
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7493
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
7494
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7504
7495
|
"button",
|
|
7505
7496
|
{
|
|
7506
7497
|
onClick: () => handleCopy(asset.address, "address"),
|
|
7507
7498
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7508
7499
|
title: "Copy address",
|
|
7509
|
-
children: copied === "address" ? /* @__PURE__ */ (0,
|
|
7500
|
+
children: copied === "address" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Copy, { className: "w-3 h-3" })
|
|
7510
7501
|
}
|
|
7511
7502
|
),
|
|
7512
|
-
/* @__PURE__ */ (0,
|
|
7503
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7513
7504
|
"button",
|
|
7514
7505
|
{
|
|
7515
7506
|
onClick: () => openInExplorer(asset.address),
|
|
7516
7507
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7517
7508
|
title: "View in explorer",
|
|
7518
|
-
children: /* @__PURE__ */ (0,
|
|
7509
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ExternalLink, { className: "w-3 h-3" })
|
|
7519
7510
|
}
|
|
7520
7511
|
)
|
|
7521
7512
|
] })
|
|
7522
7513
|
] }),
|
|
7523
|
-
asset.decimals && /* @__PURE__ */ (0,
|
|
7524
|
-
/* @__PURE__ */ (0,
|
|
7525
|
-
/* @__PURE__ */ (0,
|
|
7514
|
+
asset.decimals && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7515
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Decimals:" }),
|
|
7516
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.titleText}`, children: asset.decimals })
|
|
7526
7517
|
] })
|
|
7527
7518
|
] }),
|
|
7528
|
-
asset.type === "native" && address && /* @__PURE__ */ (0,
|
|
7529
|
-
/* @__PURE__ */ (0,
|
|
7530
|
-
/* @__PURE__ */ (0,
|
|
7531
|
-
/* @__PURE__ */ (0,
|
|
7532
|
-
/* @__PURE__ */ (0,
|
|
7519
|
+
asset.type === "native" && address && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "mt-3 pt-3 border-t border-gray-200", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7520
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Your Address:" }),
|
|
7521
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7522
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
7523
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7533
7524
|
"button",
|
|
7534
7525
|
{
|
|
7535
7526
|
onClick: () => handleCopy(address, "wallet"),
|
|
7536
7527
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7537
7528
|
title: "Copy wallet address",
|
|
7538
|
-
children: copied === "wallet" ? /* @__PURE__ */ (0,
|
|
7529
|
+
children: copied === "wallet" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Copy, { className: "w-3 h-3" })
|
|
7539
7530
|
}
|
|
7540
7531
|
),
|
|
7541
|
-
/* @__PURE__ */ (0,
|
|
7532
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7542
7533
|
"button",
|
|
7543
7534
|
{
|
|
7544
7535
|
onClick: () => openInExplorer(address),
|
|
7545
7536
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7546
7537
|
title: "View in explorer",
|
|
7547
|
-
children: /* @__PURE__ */ (0,
|
|
7538
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ExternalLink, { className: "w-3 h-3" })
|
|
7548
7539
|
}
|
|
7549
7540
|
)
|
|
7550
7541
|
] })
|
|
7551
7542
|
] }) })
|
|
7552
7543
|
] }, `${asset.type}-${asset.address || "native"}-${index}`)) }) }),
|
|
7553
|
-
assets.length > 0 && /* @__PURE__ */ (0,
|
|
7544
|
+
assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
7554
7545
|
"Total: ",
|
|
7555
7546
|
assets.length,
|
|
7556
7547
|
" asset",
|
|
@@ -7645,7 +7636,7 @@ function cn2(...inputs) {
|
|
|
7645
7636
|
}
|
|
7646
7637
|
|
|
7647
7638
|
// src/internal/components/ui/badge.tsx
|
|
7648
|
-
var
|
|
7639
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
7649
7640
|
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
7650
7641
|
"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",
|
|
7651
7642
|
{
|
|
@@ -7665,14 +7656,14 @@ var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
|
7665
7656
|
}
|
|
7666
7657
|
);
|
|
7667
7658
|
function Badge({ className, variant, ...props }) {
|
|
7668
|
-
return /* @__PURE__ */ (0,
|
|
7659
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
7669
7660
|
}
|
|
7670
7661
|
|
|
7671
7662
|
// src/internal/components/Address.tsx
|
|
7672
7663
|
var React22 = __toESM(require("react"), 1);
|
|
7673
7664
|
var import_lucide_react11 = require("lucide-react");
|
|
7674
7665
|
init_button();
|
|
7675
|
-
var
|
|
7666
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
7676
7667
|
function toExplorerAddressUrl(address, chain) {
|
|
7677
7668
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
7678
7669
|
if (!base2) return null;
|
|
@@ -7694,11 +7685,11 @@ var Address = ({
|
|
|
7694
7685
|
const addr = address || "";
|
|
7695
7686
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
7696
7687
|
const [copied, setCopied] = React22.useState(false);
|
|
7697
|
-
if (!addr) return /* @__PURE__ */ (0,
|
|
7698
|
-
return /* @__PURE__ */ (0,
|
|
7699
|
-
label && /* @__PURE__ */ (0,
|
|
7700
|
-
/* @__PURE__ */ (0,
|
|
7701
|
-
showCopy && /* @__PURE__ */ (0,
|
|
7688
|
+
if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
7689
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
7690
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
7691
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
7692
|
+
showCopy && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
7702
7693
|
Button,
|
|
7703
7694
|
{
|
|
7704
7695
|
variant: "ghost",
|
|
@@ -7712,10 +7703,10 @@ var Address = ({
|
|
|
7712
7703
|
} catch {
|
|
7713
7704
|
}
|
|
7714
7705
|
},
|
|
7715
|
-
children: /* @__PURE__ */ (0,
|
|
7706
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.Copy, { className: "h-4 w-4" })
|
|
7716
7707
|
}
|
|
7717
7708
|
),
|
|
7718
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
7709
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
7719
7710
|
"a",
|
|
7720
7711
|
{
|
|
7721
7712
|
href: explorer,
|
|
@@ -7723,7 +7714,7 @@ var Address = ({
|
|
|
7723
7714
|
rel: "noreferrer noopener",
|
|
7724
7715
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
7725
7716
|
title: "Open in explorer",
|
|
7726
|
-
children: /* @__PURE__ */ (0,
|
|
7717
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.ExternalLink, { className: "h-4 w-4" })
|
|
7727
7718
|
}
|
|
7728
7719
|
)
|
|
7729
7720
|
] });
|
|
@@ -7731,7 +7722,7 @@ var Address = ({
|
|
|
7731
7722
|
|
|
7732
7723
|
// src/internal/components/UserOpStatus.tsx
|
|
7733
7724
|
init_base();
|
|
7734
|
-
var
|
|
7725
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
7735
7726
|
var UserOpStatus = ({
|
|
7736
7727
|
userOpHash,
|
|
7737
7728
|
chain,
|
|
@@ -7864,54 +7855,54 @@ var UserOpStatus = ({
|
|
|
7864
7855
|
const stateBadge = () => {
|
|
7865
7856
|
if (receipt) {
|
|
7866
7857
|
const ok = !!receipt.success;
|
|
7867
|
-
return /* @__PURE__ */ (0,
|
|
7868
|
-
ok ? /* @__PURE__ */ (0,
|
|
7858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
7859
|
+
ok ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.CheckCircle2, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-3 w-3" }),
|
|
7869
7860
|
ok ? "Included" : "Failed"
|
|
7870
7861
|
] });
|
|
7871
7862
|
}
|
|
7872
7863
|
if (rejected) {
|
|
7873
|
-
return /* @__PURE__ */ (0,
|
|
7874
|
-
/* @__PURE__ */ (0,
|
|
7864
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
7865
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-3 w-3" }),
|
|
7875
7866
|
" Rejected by bundler"
|
|
7876
7867
|
] });
|
|
7877
7868
|
}
|
|
7878
7869
|
if (timedOut) {
|
|
7879
|
-
return /* @__PURE__ */ (0,
|
|
7880
|
-
/* @__PURE__ */ (0,
|
|
7870
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "warning", className: "gap-1", children: [
|
|
7871
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-3 w-3" }),
|
|
7881
7872
|
" Timeout - may be rejected"
|
|
7882
7873
|
] });
|
|
7883
7874
|
}
|
|
7884
7875
|
if (mempool) {
|
|
7885
|
-
return /* @__PURE__ */ (0,
|
|
7886
|
-
/* @__PURE__ */ (0,
|
|
7876
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "outline", className: "gap-1", children: [
|
|
7877
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Clock, { className: "h-3 w-3" }),
|
|
7887
7878
|
" Pending in bundler"
|
|
7888
7879
|
] });
|
|
7889
7880
|
}
|
|
7890
|
-
return /* @__PURE__ */ (0,
|
|
7891
|
-
/* @__PURE__ */ (0,
|
|
7881
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
7882
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Clock, { className: "h-3 w-3" }),
|
|
7892
7883
|
" Waiting"
|
|
7893
7884
|
] });
|
|
7894
7885
|
};
|
|
7895
|
-
return /* @__PURE__ */ (0,
|
|
7886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
7896
7887
|
"div",
|
|
7897
7888
|
{
|
|
7898
7889
|
className: cn2("lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]", className),
|
|
7899
7890
|
style: { textAlign: "left", listStyle: "none" },
|
|
7900
7891
|
children: [
|
|
7901
|
-
/* @__PURE__ */ (0,
|
|
7902
|
-
/* @__PURE__ */ (0,
|
|
7892
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [
|
|
7893
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7903
7894
|
stateBadge(),
|
|
7904
|
-
/* @__PURE__ */ (0,
|
|
7895
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
7905
7896
|
] }),
|
|
7906
|
-
/* @__PURE__ */ (0,
|
|
7907
|
-
/* @__PURE__ */ (0,
|
|
7908
|
-
/* @__PURE__ */ (0,
|
|
7897
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
7898
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.RefreshCw, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
7899
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-xs", children: "Refresh" })
|
|
7909
7900
|
] })
|
|
7910
7901
|
] }),
|
|
7911
|
-
/* @__PURE__ */ (0,
|
|
7912
|
-
/* @__PURE__ */ (0,
|
|
7913
|
-
/* @__PURE__ */ (0,
|
|
7914
|
-
/* @__PURE__ */ (0,
|
|
7902
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7903
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
7904
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
7905
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
7915
7906
|
Button,
|
|
7916
7907
|
{
|
|
7917
7908
|
variant: "ghost",
|
|
@@ -7923,14 +7914,14 @@ var UserOpStatus = ({
|
|
|
7923
7914
|
} catch {
|
|
7924
7915
|
}
|
|
7925
7916
|
},
|
|
7926
|
-
children: /* @__PURE__ */ (0,
|
|
7917
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Copy, { className: "h-3.5 w-3.5" })
|
|
7927
7918
|
}
|
|
7928
7919
|
)
|
|
7929
7920
|
] }),
|
|
7930
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ (0,
|
|
7931
|
-
/* @__PURE__ */ (0,
|
|
7932
|
-
/* @__PURE__ */ (0,
|
|
7933
|
-
/* @__PURE__ */ (0,
|
|
7921
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
7922
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
7923
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
7924
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
7934
7925
|
Button,
|
|
7935
7926
|
{
|
|
7936
7927
|
variant: "ghost",
|
|
@@ -7942,10 +7933,10 @@ var UserOpStatus = ({
|
|
|
7942
7933
|
} catch {
|
|
7943
7934
|
}
|
|
7944
7935
|
},
|
|
7945
|
-
children: /* @__PURE__ */ (0,
|
|
7936
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Copy, { className: "h-3.5 w-3.5" })
|
|
7946
7937
|
}
|
|
7947
7938
|
),
|
|
7948
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0,
|
|
7939
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
7949
7940
|
"a",
|
|
7950
7941
|
{
|
|
7951
7942
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -7953,11 +7944,11 @@ var UserOpStatus = ({
|
|
|
7953
7944
|
rel: "noreferrer noopener",
|
|
7954
7945
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
7955
7946
|
title: "Open in explorer",
|
|
7956
|
-
children: /* @__PURE__ */ (0,
|
|
7947
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.ExternalLink, { className: "h-3.5 w-3.5" })
|
|
7957
7948
|
}
|
|
7958
7949
|
)
|
|
7959
7950
|
] }),
|
|
7960
|
-
receipt && /* @__PURE__ */ (0,
|
|
7951
|
+
receipt && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
7961
7952
|
"Block ",
|
|
7962
7953
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
7963
7954
|
" \u2022 Gas Used",
|
|
@@ -7966,32 +7957,32 @@ var UserOpStatus = ({
|
|
|
7966
7957
|
" \u2022 Success ",
|
|
7967
7958
|
String(!!receipt.success)
|
|
7968
7959
|
] }),
|
|
7969
|
-
/* @__PURE__ */ (0,
|
|
7960
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { className: "ml-2", children: [
|
|
7970
7961
|
"\u2022 Polling for ",
|
|
7971
7962
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
7972
7963
|
"s"
|
|
7973
7964
|
] }) }),
|
|
7974
|
-
mempool && /* @__PURE__ */ (0,
|
|
7975
|
-
/* @__PURE__ */ (0,
|
|
7965
|
+
mempool && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
7966
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { children: [
|
|
7976
7967
|
"Seen by bundler at ",
|
|
7977
|
-
/* @__PURE__ */ (0,
|
|
7968
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
7978
7969
|
] }),
|
|
7979
|
-
/* @__PURE__ */ (0,
|
|
7970
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { children: [
|
|
7980
7971
|
"sender ",
|
|
7981
|
-
/* @__PURE__ */ (0,
|
|
7972
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Address, { address: mempool.sender, chain, truncate: false })
|
|
7982
7973
|
] })
|
|
7983
7974
|
] }),
|
|
7984
|
-
error && /* @__PURE__ */ (0,
|
|
7985
|
-
/* @__PURE__ */ (0,
|
|
7975
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7976
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-4 w-4" }),
|
|
7986
7977
|
" ",
|
|
7987
7978
|
error
|
|
7988
7979
|
] }),
|
|
7989
|
-
rejected && /* @__PURE__ */ (0,
|
|
7990
|
-
/* @__PURE__ */ (0,
|
|
7980
|
+
rejected && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7981
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-4 w-4" }),
|
|
7991
7982
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
7992
7983
|
] }),
|
|
7993
|
-
timedOut && /* @__PURE__ */ (0,
|
|
7994
|
-
/* @__PURE__ */ (0,
|
|
7984
|
+
timedOut && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7985
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-4 w-4" }),
|
|
7995
7986
|
"Stopped polling after ",
|
|
7996
7987
|
Math.round(maxPollTimeMs / 1e3),
|
|
7997
7988
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -8005,7 +7996,7 @@ var UserOpStatus = ({
|
|
|
8005
7996
|
init_base();
|
|
8006
7997
|
init_LumiaPassportContext();
|
|
8007
7998
|
init_useTheme();
|
|
8008
|
-
var
|
|
7999
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
8009
8000
|
var SendModal = ({
|
|
8010
8001
|
open,
|
|
8011
8002
|
onOpenChange,
|
|
@@ -8088,7 +8079,7 @@ var SendModal = ({
|
|
|
8088
8079
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
8089
8080
|
setAmount(maxAmount.toFixed(6));
|
|
8090
8081
|
};
|
|
8091
|
-
return /* @__PURE__ */ (0,
|
|
8082
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
8092
8083
|
DialogContent,
|
|
8093
8084
|
{
|
|
8094
8085
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8100,28 +8091,28 @@ var SendModal = ({
|
|
|
8100
8091
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8101
8092
|
},
|
|
8102
8093
|
children: [
|
|
8103
|
-
/* @__PURE__ */ (0,
|
|
8104
|
-
/* @__PURE__ */ (0,
|
|
8105
|
-
/* @__PURE__ */ (0,
|
|
8106
|
-
onBack && txStep === "input" && /* @__PURE__ */ (0,
|
|
8094
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DialogTitle, { children: "Send Transaction" }) }),
|
|
8095
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DialogDescription, { className: "sr-only", children: "Send LUMIA tokens to another address" }),
|
|
8096
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
8097
|
+
onBack && txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8107
8098
|
"button",
|
|
8108
8099
|
{
|
|
8109
8100
|
onClick: onBack,
|
|
8110
8101
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8111
8102
|
title: "Back",
|
|
8112
|
-
children: /* @__PURE__ */ (0,
|
|
8103
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.ArrowLeft, { className: "h-4 w-4" })
|
|
8113
8104
|
}
|
|
8114
8105
|
),
|
|
8115
|
-
/* @__PURE__ */ (0,
|
|
8116
|
-
/* @__PURE__ */ (0,
|
|
8117
|
-
/* @__PURE__ */ (0,
|
|
8106
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8107
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Send, { className: "h-5 w-5" }),
|
|
8108
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children: "Send LUMIA" })
|
|
8118
8109
|
] })
|
|
8119
8110
|
] }) }),
|
|
8120
|
-
/* @__PURE__ */ (0,
|
|
8121
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
8122
|
-
/* @__PURE__ */ (0,
|
|
8123
|
-
/* @__PURE__ */ (0,
|
|
8124
|
-
/* @__PURE__ */ (0,
|
|
8111
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "p-5", children: [
|
|
8112
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-4", children: [
|
|
8113
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
|
|
8114
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Recipient Address" }),
|
|
8115
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8125
8116
|
"input",
|
|
8126
8117
|
{
|
|
8127
8118
|
type: "text",
|
|
@@ -8132,17 +8123,17 @@ var SendModal = ({
|
|
|
8132
8123
|
}
|
|
8133
8124
|
)
|
|
8134
8125
|
] }),
|
|
8135
|
-
/* @__PURE__ */ (0,
|
|
8136
|
-
/* @__PURE__ */ (0,
|
|
8137
|
-
/* @__PURE__ */ (0,
|
|
8138
|
-
/* @__PURE__ */ (0,
|
|
8126
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
|
|
8127
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between items-center mb-2", children: [
|
|
8128
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { className: `text-sm font-medium ${theme.bodyText}`, children: "Amount" }),
|
|
8129
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
8139
8130
|
"Balance: ",
|
|
8140
8131
|
balance.toFixed(4),
|
|
8141
8132
|
" LUMIA"
|
|
8142
8133
|
] })
|
|
8143
8134
|
] }),
|
|
8144
|
-
/* @__PURE__ */ (0,
|
|
8145
|
-
/* @__PURE__ */ (0,
|
|
8135
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "relative", children: [
|
|
8136
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8146
8137
|
"input",
|
|
8147
8138
|
{
|
|
8148
8139
|
type: "number",
|
|
@@ -8153,7 +8144,7 @@ var SendModal = ({
|
|
|
8153
8144
|
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`
|
|
8154
8145
|
}
|
|
8155
8146
|
),
|
|
8156
|
-
/* @__PURE__ */ (0,
|
|
8147
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8157
8148
|
"button",
|
|
8158
8149
|
{
|
|
8159
8150
|
onClick: handleMaxAmount,
|
|
@@ -8163,11 +8154,11 @@ var SendModal = ({
|
|
|
8163
8154
|
)
|
|
8164
8155
|
] })
|
|
8165
8156
|
] }),
|
|
8166
|
-
(validationError || error) && /* @__PURE__ */ (0,
|
|
8167
|
-
/* @__PURE__ */ (0,
|
|
8168
|
-
/* @__PURE__ */ (0,
|
|
8157
|
+
(validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("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: [
|
|
8158
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-4 w-4" }),
|
|
8159
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm", children: validationError || error })
|
|
8169
8160
|
] }),
|
|
8170
|
-
/* @__PURE__ */ (0,
|
|
8161
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8171
8162
|
Button,
|
|
8172
8163
|
{
|
|
8173
8164
|
onClick: handleSend,
|
|
@@ -8178,29 +8169,29 @@ var SendModal = ({
|
|
|
8178
8169
|
}
|
|
8179
8170
|
)
|
|
8180
8171
|
] }),
|
|
8181
|
-
txStep === "confirm" && /* @__PURE__ */ (0,
|
|
8182
|
-
/* @__PURE__ */ (0,
|
|
8183
|
-
/* @__PURE__ */ (0,
|
|
8184
|
-
/* @__PURE__ */ (0,
|
|
8185
|
-
/* @__PURE__ */ (0,
|
|
8186
|
-
/* @__PURE__ */ (0,
|
|
8187
|
-
/* @__PURE__ */ (0,
|
|
8172
|
+
txStep === "confirm" && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-4", children: [
|
|
8173
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
|
|
8174
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("h3", { className: `font-medium ${theme.titleText} mb-3`, children: "Transaction Details" }),
|
|
8175
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-2 text-sm", children: [
|
|
8176
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between", children: [
|
|
8177
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.bodyText}`, children: "To:" }),
|
|
8178
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `font-mono ${theme.titleText}`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
8188
8179
|
] }),
|
|
8189
|
-
/* @__PURE__ */ (0,
|
|
8190
|
-
/* @__PURE__ */ (0,
|
|
8191
|
-
/* @__PURE__ */ (0,
|
|
8180
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between", children: [
|
|
8181
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.bodyText}`, children: "Amount:" }),
|
|
8182
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: `font-semibold ${theme.titleText}`, children: [
|
|
8192
8183
|
amount,
|
|
8193
8184
|
" LUMIA"
|
|
8194
8185
|
] })
|
|
8195
8186
|
] }),
|
|
8196
|
-
/* @__PURE__ */ (0,
|
|
8197
|
-
/* @__PURE__ */ (0,
|
|
8198
|
-
/* @__PURE__ */ (0,
|
|
8187
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between", children: [
|
|
8188
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.bodyText}`, children: "Network:" }),
|
|
8189
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.titleText}`, children: "Lumia Beam" })
|
|
8199
8190
|
] })
|
|
8200
8191
|
] })
|
|
8201
8192
|
] }),
|
|
8202
|
-
/* @__PURE__ */ (0,
|
|
8203
|
-
/* @__PURE__ */ (0,
|
|
8193
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex gap-2", children: [
|
|
8194
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8204
8195
|
Button,
|
|
8205
8196
|
{
|
|
8206
8197
|
onClick: () => setTxStep("input"),
|
|
@@ -8210,7 +8201,7 @@ var SendModal = ({
|
|
|
8210
8201
|
children: "Back"
|
|
8211
8202
|
}
|
|
8212
8203
|
),
|
|
8213
|
-
/* @__PURE__ */ (0,
|
|
8204
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
8214
8205
|
Button,
|
|
8215
8206
|
{
|
|
8216
8207
|
onClick: handleConfirm,
|
|
@@ -8218,28 +8209,28 @@ var SendModal = ({
|
|
|
8218
8209
|
className: "flex-1",
|
|
8219
8210
|
size: "lg",
|
|
8220
8211
|
children: [
|
|
8221
|
-
isLoading && /* @__PURE__ */ (0,
|
|
8212
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
8222
8213
|
"Confirm"
|
|
8223
8214
|
]
|
|
8224
8215
|
}
|
|
8225
8216
|
)
|
|
8226
8217
|
] })
|
|
8227
8218
|
] }),
|
|
8228
|
-
txStep === "pending" && /* @__PURE__ */ (0,
|
|
8229
|
-
/* @__PURE__ */ (0,
|
|
8230
|
-
/* @__PURE__ */ (0,
|
|
8231
|
-
/* @__PURE__ */ (0,
|
|
8232
|
-
/* @__PURE__ */ (0,
|
|
8219
|
+
txStep === "pending" && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "py-8 text-center space-y-4", children: [
|
|
8220
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Loader2, { className: `h-12 w-12 animate-spin ${isDark ? "text-blue-400" : "text-blue-600"} mx-auto` }),
|
|
8221
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
|
|
8222
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Pending" }),
|
|
8223
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Please wait while we process your transaction" })
|
|
8233
8224
|
] })
|
|
8234
8225
|
] }),
|
|
8235
|
-
txStep === "success" && userOpHash && /* @__PURE__ */ (0,
|
|
8236
|
-
/* @__PURE__ */ (0,
|
|
8237
|
-
/* @__PURE__ */ (0,
|
|
8238
|
-
/* @__PURE__ */ (0,
|
|
8239
|
-
/* @__PURE__ */ (0,
|
|
8226
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-4", children: [
|
|
8227
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-center py-4", children: [
|
|
8228
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.CheckCircle2, { className: `h-12 w-12 ${isDark ? "text-green-400" : "text-green-500"} mx-auto mb-3` }),
|
|
8229
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Sent!" }),
|
|
8230
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Your transaction is being processed" })
|
|
8240
8231
|
] }),
|
|
8241
|
-
/* @__PURE__ */ (0,
|
|
8242
|
-
/* @__PURE__ */ (0,
|
|
8232
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(UserOpStatus, { userOpHash, chain: lumiaBeam }) }),
|
|
8233
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8243
8234
|
Button,
|
|
8244
8235
|
{
|
|
8245
8236
|
onClick: handleClose,
|
|
@@ -8263,7 +8254,7 @@ var import_lucide_react14 = require("lucide-react");
|
|
|
8263
8254
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
8264
8255
|
init_LumiaPassportContext();
|
|
8265
8256
|
init_useTheme();
|
|
8266
|
-
var
|
|
8257
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
8267
8258
|
var ReceiveModal = ({
|
|
8268
8259
|
open,
|
|
8269
8260
|
onOpenChange,
|
|
@@ -8304,7 +8295,7 @@ var ReceiveModal = ({
|
|
|
8304
8295
|
if (!addr) return "";
|
|
8305
8296
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
8306
8297
|
};
|
|
8307
|
-
return /* @__PURE__ */ (0,
|
|
8298
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
8308
8299
|
DialogContent,
|
|
8309
8300
|
{
|
|
8310
8301
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8316,51 +8307,51 @@ var ReceiveModal = ({
|
|
|
8316
8307
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8317
8308
|
},
|
|
8318
8309
|
children: [
|
|
8319
|
-
/* @__PURE__ */ (0,
|
|
8320
|
-
/* @__PURE__ */ (0,
|
|
8321
|
-
/* @__PURE__ */ (0,
|
|
8322
|
-
onBack && /* @__PURE__ */ (0,
|
|
8310
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogTitle, { children: "Receive LUMIA" }) }),
|
|
8311
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogDescription, { className: "sr-only", children: "Your wallet address and QR code for receiving LUMIA" }),
|
|
8312
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
8313
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
8323
8314
|
"button",
|
|
8324
8315
|
{
|
|
8325
8316
|
onClick: onBack,
|
|
8326
8317
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8327
8318
|
title: "Back",
|
|
8328
|
-
children: /* @__PURE__ */ (0,
|
|
8319
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.ArrowLeft, { className: "h-4 w-4" })
|
|
8329
8320
|
}
|
|
8330
8321
|
),
|
|
8331
|
-
/* @__PURE__ */ (0,
|
|
8332
|
-
/* @__PURE__ */ (0,
|
|
8333
|
-
/* @__PURE__ */ (0,
|
|
8322
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8323
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.QrCode, { className: "h-5 w-5" }),
|
|
8324
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "Receive LUMIA" })
|
|
8334
8325
|
] })
|
|
8335
8326
|
] }) }),
|
|
8336
|
-
/* @__PURE__ */ (0,
|
|
8337
|
-
qrCodeUrl && /* @__PURE__ */ (0,
|
|
8338
|
-
/* @__PURE__ */ (0,
|
|
8339
|
-
/* @__PURE__ */ (0,
|
|
8340
|
-
/* @__PURE__ */ (0,
|
|
8327
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "p-5 space-y-4", children: [
|
|
8328
|
+
qrCodeUrl && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `${isDark ? "bg-white" : "bg-white"} p-4 rounded-xl border ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
|
|
8329
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `${isDark ? "bg-blue-900/30 border-blue-600" : "bg-blue-50 border-blue-200"} rounded-lg p-3`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `flex items-center gap-2 ${isDark ? "text-blue-300" : "text-blue-700"} text-sm`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex-1", children: [
|
|
8330
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "font-medium", children: "Network: Lumia Beam" }),
|
|
8331
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} mt-0.5`, children: "Ensure sender is on the same network" })
|
|
8341
8332
|
] }) }) }),
|
|
8342
|
-
/* @__PURE__ */ (0,
|
|
8343
|
-
/* @__PURE__ */ (0,
|
|
8344
|
-
/* @__PURE__ */ (0,
|
|
8345
|
-
/* @__PURE__ */ (0,
|
|
8333
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
|
|
8334
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Your Wallet Address" }),
|
|
8335
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("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 }) }),
|
|
8336
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
8346
8337
|
Button,
|
|
8347
8338
|
{
|
|
8348
8339
|
onClick: handleCopy,
|
|
8349
8340
|
className: "w-full mt-3",
|
|
8350
8341
|
size: "lg",
|
|
8351
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
8352
|
-
/* @__PURE__ */ (0,
|
|
8353
|
-
/* @__PURE__ */ (0,
|
|
8354
|
-
] }) : /* @__PURE__ */ (0,
|
|
8355
|
-
/* @__PURE__ */ (0,
|
|
8356
|
-
/* @__PURE__ */ (0,
|
|
8342
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
|
|
8343
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.CheckCircle2, { className: "h-4 w-4" }),
|
|
8344
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "Copied!" })
|
|
8345
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
|
|
8346
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.Copy, { className: "h-4 w-4" }),
|
|
8347
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "Copy Address" })
|
|
8357
8348
|
] })
|
|
8358
8349
|
}
|
|
8359
8350
|
)
|
|
8360
8351
|
] }),
|
|
8361
|
-
/* @__PURE__ */ (0,
|
|
8362
|
-
/* @__PURE__ */ (0,
|
|
8363
|
-
/* @__PURE__ */ (0,
|
|
8352
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
8353
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { children: "Share this address to receive LUMIA tokens." }),
|
|
8354
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "mt-1", children: "Only send LUMIA tokens to this address on Lumia Beam network." })
|
|
8364
8355
|
] })
|
|
8365
8356
|
] })
|
|
8366
8357
|
]
|
|
@@ -8374,11 +8365,11 @@ init_button();
|
|
|
8374
8365
|
var import_lucide_react15 = require("lucide-react");
|
|
8375
8366
|
init_LumiaPassportContext();
|
|
8376
8367
|
init_useTheme();
|
|
8377
|
-
var
|
|
8368
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
8378
8369
|
var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
8379
8370
|
const { config } = useLumiaPassportConfig();
|
|
8380
8371
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8381
|
-
return /* @__PURE__ */ (0,
|
|
8372
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
8382
8373
|
DialogContent,
|
|
8383
8374
|
{
|
|
8384
8375
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8390,26 +8381,26 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8390
8381
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8391
8382
|
},
|
|
8392
8383
|
children: [
|
|
8393
|
-
/* @__PURE__ */ (0,
|
|
8394
|
-
/* @__PURE__ */ (0,
|
|
8395
|
-
/* @__PURE__ */ (0,
|
|
8396
|
-
onBack && /* @__PURE__ */ (0,
|
|
8384
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogTitle, { children: "Buy Crypto" }) }),
|
|
8385
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogDescription, { className: "sr-only", children: "On-ramp placeholder" }),
|
|
8386
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
8387
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
8397
8388
|
"button",
|
|
8398
8389
|
{
|
|
8399
8390
|
onClick: onBack,
|
|
8400
8391
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8401
8392
|
title: "Back",
|
|
8402
|
-
children: /* @__PURE__ */ (0,
|
|
8393
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.ArrowLeft, { className: "h-4 w-4" })
|
|
8403
8394
|
}
|
|
8404
8395
|
),
|
|
8405
|
-
/* @__PURE__ */ (0,
|
|
8406
|
-
/* @__PURE__ */ (0,
|
|
8407
|
-
/* @__PURE__ */ (0,
|
|
8396
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8397
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.CreditCard, { className: "h-5 w-5" }),
|
|
8398
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: "Buy" })
|
|
8408
8399
|
] })
|
|
8409
8400
|
] }) }),
|
|
8410
|
-
/* @__PURE__ */ (0,
|
|
8411
|
-
/* @__PURE__ */ (0,
|
|
8412
|
-
/* @__PURE__ */ (0,
|
|
8401
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "p-5", children: [
|
|
8402
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "On-ramp coming soon\u2026" }) }),
|
|
8403
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
|
|
8413
8404
|
] })
|
|
8414
8405
|
]
|
|
8415
8406
|
}
|
|
@@ -8422,13 +8413,13 @@ init_button();
|
|
|
8422
8413
|
var import_lucide_react16 = require("lucide-react");
|
|
8423
8414
|
init_LumiaPassportContext();
|
|
8424
8415
|
init_useTheme();
|
|
8425
|
-
var
|
|
8416
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
8426
8417
|
var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
8427
8418
|
const { config } = useLumiaPassportConfig();
|
|
8428
8419
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8429
8420
|
const provider = config.kyc?.provider;
|
|
8430
8421
|
const options = config.kyc?.options || {};
|
|
8431
|
-
return /* @__PURE__ */ (0,
|
|
8422
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
8432
8423
|
DialogContent,
|
|
8433
8424
|
{
|
|
8434
8425
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8440,32 +8431,32 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8440
8431
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8441
8432
|
},
|
|
8442
8433
|
children: [
|
|
8443
|
-
/* @__PURE__ */ (0,
|
|
8444
|
-
/* @__PURE__ */ (0,
|
|
8445
|
-
/* @__PURE__ */ (0,
|
|
8446
|
-
onBack && /* @__PURE__ */ (0,
|
|
8434
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogTitle, { children: "KYC" }) }),
|
|
8435
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogDescription, { className: "sr-only", children: "KYC placeholder" }),
|
|
8436
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
8437
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
8447
8438
|
"button",
|
|
8448
8439
|
{
|
|
8449
8440
|
onClick: onBack,
|
|
8450
8441
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8451
8442
|
title: "Back",
|
|
8452
|
-
children: /* @__PURE__ */ (0,
|
|
8443
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react16.ArrowLeft, { className: "h-4 w-4" })
|
|
8453
8444
|
}
|
|
8454
8445
|
),
|
|
8455
|
-
/* @__PURE__ */ (0,
|
|
8456
|
-
/* @__PURE__ */ (0,
|
|
8457
|
-
/* @__PURE__ */ (0,
|
|
8446
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8447
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react16.ShieldCheck, { className: "h-5 w-5" }),
|
|
8448
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { children: "KYC" })
|
|
8458
8449
|
] })
|
|
8459
8450
|
] }) }),
|
|
8460
|
-
/* @__PURE__ */ (0,
|
|
8461
|
-
provider ? /* @__PURE__ */ (0,
|
|
8462
|
-
/* @__PURE__ */ (0,
|
|
8451
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "p-5", children: [
|
|
8452
|
+
provider ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `rounded-xl p-4 ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: [
|
|
8453
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `text-sm ${theme.titleText} mb-2`, children: [
|
|
8463
8454
|
"KYC provider: ",
|
|
8464
|
-
/* @__PURE__ */ (0,
|
|
8455
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "font-medium", children: provider })
|
|
8465
8456
|
] }),
|
|
8466
|
-
Object.keys(options).length > 0 ? /* @__PURE__ */ (0,
|
|
8467
|
-
] }) : /* @__PURE__ */ (0,
|
|
8468
|
-
/* @__PURE__ */ (0,
|
|
8457
|
+
Object.keys(options).length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `text-xs ${theme.mutedText} break-words whitespace-pre-wrap`, children: JSON.stringify(options, null, 2) }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "No provider options configured." })
|
|
8458
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "KYC verification coming soon\u2026" }) }),
|
|
8459
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
|
|
8469
8460
|
] })
|
|
8470
8461
|
]
|
|
8471
8462
|
}
|
|
@@ -8525,7 +8516,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
8525
8516
|
// package.json
|
|
8526
8517
|
var package_default = {
|
|
8527
8518
|
name: "@lumiapassport/ui-kit",
|
|
8528
|
-
version: "1.
|
|
8519
|
+
version: "1.5.1",
|
|
8529
8520
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
8530
8521
|
type: "module",
|
|
8531
8522
|
main: "./dist/index.cjs",
|
|
@@ -8615,7 +8606,7 @@ var package_default = {
|
|
|
8615
8606
|
};
|
|
8616
8607
|
|
|
8617
8608
|
// src/components/ConnectWalletButton.tsx
|
|
8618
|
-
var
|
|
8609
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
8619
8610
|
var ConnectWalletButton = ({
|
|
8620
8611
|
className,
|
|
8621
8612
|
label = "Connect Wallet",
|
|
@@ -8667,6 +8658,9 @@ var ConnectWalletButton = ({
|
|
|
8667
8658
|
const [isKycOpen, setIsKycOpen] = import_react19.default.useState(false);
|
|
8668
8659
|
import_react19.default.useEffect(() => {
|
|
8669
8660
|
if (!callbacks?.onWalletReady) return;
|
|
8661
|
+
if (!config.projectId) {
|
|
8662
|
+
return;
|
|
8663
|
+
}
|
|
8670
8664
|
(async () => {
|
|
8671
8665
|
try {
|
|
8672
8666
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
@@ -8676,7 +8670,7 @@ var ConnectWalletButton = ({
|
|
|
8676
8670
|
console.warn("[UI-KIT] Failed to register onWalletReady callback:", e);
|
|
8677
8671
|
}
|
|
8678
8672
|
})();
|
|
8679
|
-
}, [callbacks?.onWalletReady]);
|
|
8673
|
+
}, [callbacks?.onWalletReady, config.projectId]);
|
|
8680
8674
|
import_react19.default.useEffect(() => {
|
|
8681
8675
|
try {
|
|
8682
8676
|
const shouldAutoOpen = authOpen ?? config?.ui?.authOpen;
|
|
@@ -8732,6 +8726,9 @@ var ConnectWalletButton = ({
|
|
|
8732
8726
|
const userId = loginResponse.userId;
|
|
8733
8727
|
const hasServerKeyshare = loginResponse.hasKeyshare ?? false;
|
|
8734
8728
|
try {
|
|
8729
|
+
if (!config.projectId) {
|
|
8730
|
+
throw new Error("projectId is not configured. Cannot authenticate with iframe.");
|
|
8731
|
+
}
|
|
8735
8732
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8736
8733
|
const iframeManager = getIframeManager2();
|
|
8737
8734
|
await iframeManager.authenticate(userId);
|
|
@@ -8870,6 +8867,9 @@ var ConnectWalletButton = ({
|
|
|
8870
8867
|
if (autoConnectAttemptedRef.current) return;
|
|
8871
8868
|
const tryAutoConnect = async (attempt) => {
|
|
8872
8869
|
if (address || session) return;
|
|
8870
|
+
if (!config.projectId) {
|
|
8871
|
+
return;
|
|
8872
|
+
}
|
|
8873
8873
|
try {
|
|
8874
8874
|
const { waitForIframe: waitForIframe2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8875
8875
|
await waitForIframe2();
|
|
@@ -8909,12 +8909,14 @@ var ConnectWalletButton = ({
|
|
|
8909
8909
|
callbacks?.onLumiaPassportAccount?.({ userId, address: addr, session: sess, hasKeyshare: finalHasKeyshare });
|
|
8910
8910
|
} catch {
|
|
8911
8911
|
}
|
|
8912
|
-
|
|
8913
|
-
|
|
8914
|
-
|
|
8915
|
-
|
|
8916
|
-
|
|
8917
|
-
|
|
8912
|
+
if (config.projectId) {
|
|
8913
|
+
try {
|
|
8914
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8915
|
+
const iframeManager = getIframeManager2();
|
|
8916
|
+
await iframeManager.authenticate(userId);
|
|
8917
|
+
} catch (e) {
|
|
8918
|
+
console.warn("[UI-KIT][AutoConnect] iframe authentication failed:", e);
|
|
8919
|
+
}
|
|
8918
8920
|
}
|
|
8919
8921
|
try {
|
|
8920
8922
|
const { checkServerBackupAvailability: checkServerBackupAvailability2, updateBackupStatus: updateBackupStatus2, getShareRecoveryStats: getShareRecoveryStats2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -8952,8 +8954,8 @@ var ConnectWalletButton = ({
|
|
|
8952
8954
|
refetchBalance();
|
|
8953
8955
|
}
|
|
8954
8956
|
}, [address]);
|
|
8955
|
-
return /* @__PURE__ */ (0,
|
|
8956
|
-
/* @__PURE__ */ (0,
|
|
8957
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: [className, "lumia-scope"].filter(Boolean).join(" "), children: [
|
|
8958
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "inline-flex items-center gap-2", children: !address ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
8957
8959
|
"button",
|
|
8958
8960
|
{
|
|
8959
8961
|
onClick: () => {
|
|
@@ -8988,7 +8990,7 @@ var ConnectWalletButton = ({
|
|
|
8988
8990
|
},
|
|
8989
8991
|
children: label || "Connect"
|
|
8990
8992
|
}
|
|
8991
|
-
) }) : /* @__PURE__ */ (0,
|
|
8993
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
8992
8994
|
"div",
|
|
8993
8995
|
{
|
|
8994
8996
|
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`,
|
|
@@ -8999,51 +9001,51 @@ var ConnectWalletButton = ({
|
|
|
8999
9001
|
borderColor: config.ui.colors?.[isDark ? "dark" : "light"]?.connectedButtonBorder || (isDark ? "#374151" : "#e5e7eb")
|
|
9000
9002
|
},
|
|
9001
9003
|
onClick: () => setIsWalletMenuOpen(true),
|
|
9002
|
-
children: /* @__PURE__ */ (0,
|
|
9003
|
-
/* @__PURE__ */ (0,
|
|
9004
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-3", children: [
|
|
9005
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("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 ? (
|
|
9004
9006
|
// eslint-disable-next-line @next/next/no-img-element
|
|
9005
|
-
/* @__PURE__ */ (0,
|
|
9006
|
-
) : /* @__PURE__ */ (0,
|
|
9007
|
-
/* @__PURE__ */ (0,
|
|
9008
|
-
/* @__PURE__ */ (0,
|
|
9009
|
-
/* @__PURE__ */ (0,
|
|
9007
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
|
|
9008
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-white font-bold text-sm", children: "LP" }) }),
|
|
9009
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "text-left flex-1 min-w-0", children: [
|
|
9010
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `font-semibold text-base truncate ${theme.titleText}`, children: mode === "compact" && displayName ? displayName : formatAddress(address) }),
|
|
9011
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
9010
9012
|
formatBalance(),
|
|
9011
9013
|
" LUMIA"
|
|
9012
9014
|
] })
|
|
9013
9015
|
] }),
|
|
9014
|
-
/* @__PURE__ */ (0,
|
|
9015
|
-
/* @__PURE__ */ (0,
|
|
9016
|
-
/* @__PURE__ */ (0,
|
|
9016
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-1", children: [
|
|
9017
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
|
|
9018
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9017
9019
|
import_lucide_react17.Cloud,
|
|
9018
9020
|
{
|
|
9019
9021
|
className: `w-3 h-3 ${indicators.server ? "text-green-500" : "text-orange-400"}`
|
|
9020
9022
|
}
|
|
9021
9023
|
),
|
|
9022
|
-
/* @__PURE__ */ (0,
|
|
9024
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("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: [
|
|
9023
9025
|
"Server Keyshare: ",
|
|
9024
9026
|
indicators.server ? "Available" : "Missing"
|
|
9025
9027
|
] })
|
|
9026
9028
|
] }),
|
|
9027
|
-
/* @__PURE__ */ (0,
|
|
9028
|
-
/* @__PURE__ */ (0,
|
|
9029
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
|
|
9030
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9029
9031
|
import_lucide_react17.Laptop,
|
|
9030
9032
|
{
|
|
9031
9033
|
className: `w-3 h-3 ${indicators.local ? "text-green-500" : "text-orange-400"}`
|
|
9032
9034
|
}
|
|
9033
9035
|
),
|
|
9034
|
-
/* @__PURE__ */ (0,
|
|
9036
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("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: [
|
|
9035
9037
|
"Local Keyshare: ",
|
|
9036
9038
|
indicators.local ? "Available" : "Missing"
|
|
9037
9039
|
] })
|
|
9038
9040
|
] }),
|
|
9039
|
-
/* @__PURE__ */ (0,
|
|
9040
|
-
/* @__PURE__ */ (0,
|
|
9041
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
|
|
9042
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9041
9043
|
import_lucide_react17.Shield,
|
|
9042
9044
|
{
|
|
9043
9045
|
className: `w-3 h-3 ${indicators.backup ? "text-green-500" : "text-orange-400"}`
|
|
9044
9046
|
}
|
|
9045
9047
|
),
|
|
9046
|
-
/* @__PURE__ */ (0,
|
|
9048
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("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: [
|
|
9047
9049
|
"Vault Backup: ",
|
|
9048
9050
|
indicators.backup ? "Available" : "Not Found"
|
|
9049
9051
|
] })
|
|
@@ -9052,62 +9054,62 @@ var ConnectWalletButton = ({
|
|
|
9052
9054
|
] })
|
|
9053
9055
|
}
|
|
9054
9056
|
) }),
|
|
9055
|
-
isWalletMenuOpen && address && /* @__PURE__ */ (0,
|
|
9056
|
-
/* @__PURE__ */ (0,
|
|
9057
|
-
/* @__PURE__ */ (0,
|
|
9058
|
-
/* @__PURE__ */ (0,
|
|
9059
|
-
/* @__PURE__ */ (0,
|
|
9057
|
+
isWalletMenuOpen && address && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "fixed inset-0 z-[60]", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Dialog, { open: isWalletMenuOpen, onOpenChange: setIsWalletMenuOpen, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(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: [
|
|
9058
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogTitle, { children: "Wallet Menu" }) }),
|
|
9059
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogDescription, { className: "sr-only", children: "Smart Account wallet actions and status" }),
|
|
9060
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `p-4 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-4", children: [
|
|
9061
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("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 ? (
|
|
9060
9062
|
// eslint-disable-next-line @next/next/no-img-element
|
|
9061
|
-
/* @__PURE__ */ (0,
|
|
9062
|
-
) : /* @__PURE__ */ (0,
|
|
9063
|
-
/* @__PURE__ */ (0,
|
|
9064
|
-
/* @__PURE__ */ (0,
|
|
9065
|
-
/* @__PURE__ */ (0,
|
|
9066
|
-
/* @__PURE__ */ (0,
|
|
9067
|
-
/* @__PURE__ */ (0,
|
|
9063
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
|
|
9064
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-white font-bold text-lg", children: "L" }) }),
|
|
9065
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
9066
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `font-medium text-left text-lg ${theme.titleText}`, children: displayName || "Smart Account" }),
|
|
9067
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-2", children: [
|
|
9068
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: formatAddress(address) }),
|
|
9069
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("button", { onClick: async () => {
|
|
9068
9070
|
try {
|
|
9069
9071
|
await navigator.clipboard.writeText(address);
|
|
9070
9072
|
setCopied(true);
|
|
9071
9073
|
setTimeout(() => setCopied(false), 1500);
|
|
9072
9074
|
} catch {
|
|
9073
9075
|
}
|
|
9074
|
-
}, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ (0,
|
|
9076
|
+
}, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-green-500 text-sm", children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Copy, { className: "w-4 h-4" }) })
|
|
9075
9077
|
] })
|
|
9076
9078
|
] })
|
|
9077
9079
|
] }) }) }),
|
|
9078
|
-
/* @__PURE__ */ (0,
|
|
9079
|
-
/* @__PURE__ */ (0,
|
|
9080
|
-
/* @__PURE__ */ (0,
|
|
9080
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "p-4", children: [
|
|
9081
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "grid grid-cols-3 gap-2 mb-4", children: [
|
|
9082
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9081
9083
|
setIsWalletMenuOpen(false);
|
|
9082
9084
|
setIsSendOpen(true);
|
|
9083
9085
|
}, 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: [
|
|
9084
|
-
/* @__PURE__ */ (0,
|
|
9085
|
-
/* @__PURE__ */ (0,
|
|
9086
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowUp, { className: "w-5 h-5" }),
|
|
9087
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: "Send" })
|
|
9086
9088
|
] }),
|
|
9087
|
-
/* @__PURE__ */ (0,
|
|
9089
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9088
9090
|
setIsWalletMenuOpen(false);
|
|
9089
9091
|
setIsReceiveOpen(true);
|
|
9090
9092
|
}, 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: [
|
|
9091
|
-
/* @__PURE__ */ (0,
|
|
9092
|
-
/* @__PURE__ */ (0,
|
|
9093
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowDown, { className: "w-5 h-5" }),
|
|
9094
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: "Receive" })
|
|
9093
9095
|
] }),
|
|
9094
|
-
/* @__PURE__ */ (0,
|
|
9096
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9095
9097
|
setIsWalletMenuOpen(false);
|
|
9096
9098
|
setIsBuyOpen(true);
|
|
9097
9099
|
}, 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: [
|
|
9098
|
-
/* @__PURE__ */ (0,
|
|
9099
|
-
/* @__PURE__ */ (0,
|
|
9100
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Plus, { className: "w-5 h-5" }),
|
|
9101
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: "Buy" })
|
|
9100
9102
|
] })
|
|
9101
9103
|
] }),
|
|
9102
|
-
config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ (0,
|
|
9103
|
-
/* @__PURE__ */ (0,
|
|
9104
|
-
/* @__PURE__ */ (0,
|
|
9104
|
+
config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("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__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex items-start space-x-3 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
9105
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm font-bold ${isDark ? "text-red-200" : "text-red-800"}`, children: "BACKUP NOT CREATED" }),
|
|
9106
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `text-xs mt-1.5 font-medium ${isDark ? "text-red-300/95" : "text-red-700"}`, children: [
|
|
9105
9107
|
"Your wallet will be ",
|
|
9106
|
-
/* @__PURE__ */ (0,
|
|
9108
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("strong", { children: "PERMANENTLY LOST" }),
|
|
9107
9109
|
" if browser data is cleared."
|
|
9108
9110
|
] }),
|
|
9109
|
-
/* @__PURE__ */ (0,
|
|
9110
|
-
/* @__PURE__ */ (0,
|
|
9111
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("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!" }),
|
|
9112
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
9111
9113
|
"button",
|
|
9112
9114
|
{
|
|
9113
9115
|
onClick: () => {
|
|
@@ -9116,7 +9118,7 @@ var ConnectWalletButton = ({
|
|
|
9116
9118
|
},
|
|
9117
9119
|
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"}`,
|
|
9118
9120
|
children: [
|
|
9119
|
-
/* @__PURE__ */ (0,
|
|
9121
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: "w-3.5 h-3.5 inline mr-1.5" }),
|
|
9120
9122
|
"Create Backup Now"
|
|
9121
9123
|
]
|
|
9122
9124
|
}
|
|
@@ -9125,12 +9127,12 @@ var ConnectWalletButton = ({
|
|
|
9125
9127
|
(() => {
|
|
9126
9128
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
9127
9129
|
const hasEmail = providers.includes("email");
|
|
9128
|
-
return config.warnings?.emailNotConnectedWarning && !hasEmail && /* @__PURE__ */ (0,
|
|
9129
|
-
/* @__PURE__ */ (0,
|
|
9130
|
-
/* @__PURE__ */ (0,
|
|
9131
|
-
/* @__PURE__ */ (0,
|
|
9132
|
-
/* @__PURE__ */ (0,
|
|
9133
|
-
/* @__PURE__ */ (0,
|
|
9130
|
+
return config.warnings?.emailNotConnectedWarning && !hasEmail && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("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__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-start space-x-3", children: [
|
|
9131
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.AlertTriangle, { className: `w-5 h-5 ${isDark ? "text-blue-400" : "text-blue-500"} mt-0.5 flex-shrink-0` }),
|
|
9132
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
9133
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-blue-300" : "text-blue-700"}`, children: "Email Not Connected" }),
|
|
9134
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("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." }),
|
|
9135
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
|
|
9134
9136
|
"button",
|
|
9135
9137
|
{
|
|
9136
9138
|
onClick: () => {
|
|
@@ -9139,7 +9141,7 @@ var ConnectWalletButton = ({
|
|
|
9139
9141
|
},
|
|
9140
9142
|
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"}`,
|
|
9141
9143
|
children: [
|
|
9142
|
-
/* @__PURE__ */ (0,
|
|
9144
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: "w-3 h-3 inline mr-1" }),
|
|
9143
9145
|
"Connect Email"
|
|
9144
9146
|
]
|
|
9145
9147
|
}
|
|
@@ -9147,84 +9149,84 @@ var ConnectWalletButton = ({
|
|
|
9147
9149
|
] })
|
|
9148
9150
|
] }) });
|
|
9149
9151
|
})(),
|
|
9150
|
-
/* @__PURE__ */ (0,
|
|
9152
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9151
9153
|
"button",
|
|
9152
9154
|
{
|
|
9153
9155
|
onClick: () => address && window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank"),
|
|
9154
9156
|
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`,
|
|
9155
|
-
children: /* @__PURE__ */ (0,
|
|
9156
|
-
/* @__PURE__ */ (0,
|
|
9157
|
-
/* @__PURE__ */ (0,
|
|
9158
|
-
/* @__PURE__ */ (0,
|
|
9159
|
-
/* @__PURE__ */ (0,
|
|
9160
|
-
/* @__PURE__ */ (0,
|
|
9157
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center justify-between", children: [
|
|
9158
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-3", children: [
|
|
9159
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "w-8 h-8 rounded-full flex items-center justify-center bg-transparent overflow-hidden", children: lumiaBeam.logoDataUri ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("img", { src: lumiaBeam.logoDataUri, alt: "Chain logo", className: "w-full h-full object-cover" }) : lumiaBeam.logo === "lumia" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(LumiaLogo, { size: 32 }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-white text-xs font-bold", children: (lumiaBeam.name || "L").charAt(0) }) }),
|
|
9160
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { children: [
|
|
9161
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `${theme.titleText} font-medium`, children: lumiaBeam.name }),
|
|
9162
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: theme.mutedText + " text-sm", children: [
|
|
9161
9163
|
formatBalance(),
|
|
9162
9164
|
" LUMIA"
|
|
9163
9165
|
] })
|
|
9164
9166
|
] })
|
|
9165
9167
|
] }),
|
|
9166
|
-
/* @__PURE__ */ (0,
|
|
9168
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: theme.iconColor, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowUpRight, { className: "w-4 h-4" }) })
|
|
9167
9169
|
] })
|
|
9168
9170
|
}
|
|
9169
9171
|
),
|
|
9170
|
-
/* @__PURE__ */ (0,
|
|
9171
|
-
config.features?.kycNeeded && /* @__PURE__ */ (0,
|
|
9172
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "space-y-1", children: [
|
|
9173
|
+
config.features?.kycNeeded && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9172
9174
|
setIsWalletMenuOpen(false);
|
|
9173
9175
|
setIsKycOpen(true);
|
|
9174
9176
|
}, 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: [
|
|
9175
|
-
/* @__PURE__ */ (0,
|
|
9176
|
-
/* @__PURE__ */ (0,
|
|
9177
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9178
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "KYC" })
|
|
9177
9179
|
] }),
|
|
9178
|
-
/* @__PURE__ */ (0,
|
|
9180
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9179
9181
|
setIsWalletMenuOpen(false);
|
|
9180
9182
|
setIsTransactionsOpen(true);
|
|
9181
9183
|
}, 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: [
|
|
9182
|
-
/* @__PURE__ */ (0,
|
|
9183
|
-
/* @__PURE__ */ (0,
|
|
9184
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Activity, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9185
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "Transactions" })
|
|
9184
9186
|
] }),
|
|
9185
|
-
/* @__PURE__ */ (0,
|
|
9187
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9186
9188
|
setIsWalletMenuOpen(false);
|
|
9187
9189
|
setIsViewAssetsOpen(true);
|
|
9188
9190
|
}, 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: [
|
|
9189
|
-
/* @__PURE__ */ (0,
|
|
9190
|
-
/* @__PURE__ */ (0,
|
|
9191
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Gem, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9192
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "View Assets" })
|
|
9191
9193
|
] }),
|
|
9192
|
-
/* @__PURE__ */ (0,
|
|
9194
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9193
9195
|
setIsWalletMenuOpen(false);
|
|
9194
9196
|
setIsManageWalletOpen(true);
|
|
9195
9197
|
}, 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: [
|
|
9196
|
-
/* @__PURE__ */ (0,
|
|
9197
|
-
/* @__PURE__ */ (0,
|
|
9198
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.CreditCard, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9199
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "Manage Wallet" })
|
|
9198
9200
|
] }),
|
|
9199
|
-
/* @__PURE__ */ (0,
|
|
9201
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9200
9202
|
setIsWalletMenuOpen(false);
|
|
9201
9203
|
setIsSecurityOpen(true);
|
|
9202
9204
|
}, 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: [
|
|
9203
|
-
/* @__PURE__ */ (0,
|
|
9204
|
-
/* @__PURE__ */ (0,
|
|
9205
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Lock, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9206
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "Security" })
|
|
9205
9207
|
] }),
|
|
9206
|
-
/* @__PURE__ */ (0,
|
|
9208
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9207
9209
|
setIsWalletMenuOpen(false);
|
|
9208
9210
|
setIsBackupOpen(true);
|
|
9209
9211
|
}, 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: [
|
|
9210
|
-
/* @__PURE__ */ (0,
|
|
9211
|
-
/* @__PURE__ */ (0,
|
|
9212
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Shield, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9213
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "Keyshare Backup" })
|
|
9212
9214
|
] }),
|
|
9213
|
-
/* @__PURE__ */ (0,
|
|
9215
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: async () => {
|
|
9214
9216
|
await handleDisconnect();
|
|
9215
9217
|
setIsWalletMenuOpen(false);
|
|
9216
9218
|
}, 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: [
|
|
9217
|
-
/* @__PURE__ */ (0,
|
|
9218
|
-
/* @__PURE__ */ (0,
|
|
9219
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowUpRight, { className: "w-5 h-5 text-red-600" }),
|
|
9220
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-red-600", children: "Disconnect Wallet" })
|
|
9219
9221
|
] })
|
|
9220
9222
|
] }),
|
|
9221
|
-
/* @__PURE__ */ (0,
|
|
9223
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `mt-3 pt-3 border-t ${theme.divider} text-center`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `text-xs ${theme.mutedText}`, children: [
|
|
9222
9224
|
"Lumia Passport v",
|
|
9223
9225
|
package_default.version
|
|
9224
9226
|
] }) })
|
|
9225
9227
|
] })
|
|
9226
9228
|
] }) }) }),
|
|
9227
|
-
/* @__PURE__ */ (0,
|
|
9229
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9228
9230
|
ManageWallet,
|
|
9229
9231
|
{
|
|
9230
9232
|
open: isManageWalletOpen,
|
|
@@ -9235,7 +9237,7 @@ var ConnectWalletButton = ({
|
|
|
9235
9237
|
}
|
|
9236
9238
|
}
|
|
9237
9239
|
),
|
|
9238
|
-
/* @__PURE__ */ (0,
|
|
9240
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9239
9241
|
SecurityModal,
|
|
9240
9242
|
{
|
|
9241
9243
|
open: isSecurityOpen,
|
|
@@ -9246,22 +9248,26 @@ var ConnectWalletButton = ({
|
|
|
9246
9248
|
}
|
|
9247
9249
|
}
|
|
9248
9250
|
),
|
|
9249
|
-
isBackupOpen && session?.mpcUserId && /* @__PURE__ */ (0,
|
|
9250
|
-
/* @__PURE__ */ (0,
|
|
9251
|
-
/* @__PURE__ */ (0,
|
|
9252
|
-
/* @__PURE__ */ (0,
|
|
9251
|
+
isBackupOpen && session?.mpcUserId && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Dialog, { open: isBackupOpen, onOpenChange: setIsBackupOpen, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(DialogContent, { className: "max-w-[400px] p-0", children: [
|
|
9252
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(VisuallyHidden, { children: [
|
|
9253
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogTitle, { children: "Keyshare Backup" }),
|
|
9254
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogDescription, { children: "Create and manage encrypted backups of your keyshare" })
|
|
9253
9255
|
] }),
|
|
9254
|
-
/* @__PURE__ */ (0,
|
|
9256
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9255
9257
|
KeyshareBackup,
|
|
9256
9258
|
{
|
|
9257
9259
|
userId: session.mpcUserId,
|
|
9258
9260
|
onBackupSuccess: () => {
|
|
9259
9261
|
console.log("[ConnectWalletButton] Backup created successfully");
|
|
9262
|
+
},
|
|
9263
|
+
onBack: () => {
|
|
9264
|
+
setIsBackupOpen(false);
|
|
9265
|
+
setIsWalletMenuOpen(true);
|
|
9260
9266
|
}
|
|
9261
9267
|
}
|
|
9262
9268
|
)
|
|
9263
9269
|
] }) }),
|
|
9264
|
-
/* @__PURE__ */ (0,
|
|
9270
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9265
9271
|
TransactionsModal,
|
|
9266
9272
|
{
|
|
9267
9273
|
open: isTransactionsOpen,
|
|
@@ -9272,7 +9278,7 @@ var ConnectWalletButton = ({
|
|
|
9272
9278
|
}
|
|
9273
9279
|
}
|
|
9274
9280
|
),
|
|
9275
|
-
/* @__PURE__ */ (0,
|
|
9281
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9276
9282
|
ViewAssetsModal,
|
|
9277
9283
|
{
|
|
9278
9284
|
open: isViewAssetsOpen,
|
|
@@ -9283,7 +9289,7 @@ var ConnectWalletButton = ({
|
|
|
9283
9289
|
}
|
|
9284
9290
|
}
|
|
9285
9291
|
),
|
|
9286
|
-
/* @__PURE__ */ (0,
|
|
9292
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9287
9293
|
SendModal,
|
|
9288
9294
|
{
|
|
9289
9295
|
open: isSendOpen,
|
|
@@ -9294,7 +9300,7 @@ var ConnectWalletButton = ({
|
|
|
9294
9300
|
}
|
|
9295
9301
|
}
|
|
9296
9302
|
),
|
|
9297
|
-
/* @__PURE__ */ (0,
|
|
9303
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9298
9304
|
ReceiveModal,
|
|
9299
9305
|
{
|
|
9300
9306
|
open: isReceiveOpen,
|
|
@@ -9305,7 +9311,7 @@ var ConnectWalletButton = ({
|
|
|
9305
9311
|
}
|
|
9306
9312
|
}
|
|
9307
9313
|
),
|
|
9308
|
-
/* @__PURE__ */ (0,
|
|
9314
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9309
9315
|
BuyModal,
|
|
9310
9316
|
{
|
|
9311
9317
|
open: isBuyOpen,
|
|
@@ -9316,7 +9322,7 @@ var ConnectWalletButton = ({
|
|
|
9316
9322
|
}
|
|
9317
9323
|
}
|
|
9318
9324
|
),
|
|
9319
|
-
/* @__PURE__ */ (0,
|
|
9325
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9320
9326
|
KycModal,
|
|
9321
9327
|
{
|
|
9322
9328
|
open: isKycOpen,
|
|
@@ -9327,7 +9333,7 @@ var ConnectWalletButton = ({
|
|
|
9327
9333
|
}
|
|
9328
9334
|
}
|
|
9329
9335
|
),
|
|
9330
|
-
/* @__PURE__ */ (0,
|
|
9336
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9331
9337
|
AuthModal,
|
|
9332
9338
|
{
|
|
9333
9339
|
open: recoveryUserId ? isRecoveryModalOpen : isAuthModalOpen,
|
|
@@ -9344,6 +9350,7 @@ var ConnectWalletButton = ({
|
|
|
9344
9350
|
onRecoveryClose: () => {
|
|
9345
9351
|
setRecoveryUserId(null);
|
|
9346
9352
|
setIsRecoveryModalOpen(false);
|
|
9353
|
+
setIsAuthModalOpen(false);
|
|
9347
9354
|
},
|
|
9348
9355
|
callbacks,
|
|
9349
9356
|
onRecoverySuccess: async () => {
|
|
@@ -9357,6 +9364,7 @@ var ConnectWalletButton = ({
|
|
|
9357
9364
|
setStatus("ready");
|
|
9358
9365
|
setRecoveryUserId(null);
|
|
9359
9366
|
setIsRecoveryModalOpen(false);
|
|
9367
|
+
setIsAuthModalOpen(false);
|
|
9360
9368
|
onConnected?.({ address: addr, session: sess });
|
|
9361
9369
|
try {
|
|
9362
9370
|
callbacks?.onLumiaPassportConnect?.({ address: addr, session: sess });
|
|
@@ -9366,12 +9374,14 @@ var ConnectWalletButton = ({
|
|
|
9366
9374
|
callbacks?.onLumiaPassportAccount?.({ userId: recoveryUserId, address: addr, session: sess, hasKeyshare: hasServerKeyshare });
|
|
9367
9375
|
} catch {
|
|
9368
9376
|
}
|
|
9369
|
-
|
|
9370
|
-
|
|
9371
|
-
|
|
9372
|
-
|
|
9373
|
-
|
|
9374
|
-
|
|
9377
|
+
if (config.projectId) {
|
|
9378
|
+
try {
|
|
9379
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
9380
|
+
const iframeManager = getIframeManager2();
|
|
9381
|
+
await iframeManager.authenticate(recoveryUserId);
|
|
9382
|
+
} catch (e) {
|
|
9383
|
+
console.warn("[UI-KIT] iframe authentication failed:", e);
|
|
9384
|
+
}
|
|
9375
9385
|
}
|
|
9376
9386
|
try {
|
|
9377
9387
|
const { updateBackupStatus: updateBackupStatus2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -9387,7 +9397,7 @@ var ConnectWalletButton = ({
|
|
|
9387
9397
|
}
|
|
9388
9398
|
}
|
|
9389
9399
|
),
|
|
9390
|
-
/* @__PURE__ */ (0,
|
|
9400
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9391
9401
|
TssManagerWithRef,
|
|
9392
9402
|
{
|
|
9393
9403
|
ref: tssManagerRef,
|
|
@@ -9406,7 +9416,7 @@ var ConnectWalletButton = ({
|
|
|
9406
9416
|
|
|
9407
9417
|
// src/components/ThemeToggle.tsx
|
|
9408
9418
|
init_LumiaPassportContext();
|
|
9409
|
-
var
|
|
9419
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
9410
9420
|
var ThemeToggle = () => {
|
|
9411
9421
|
const { config, updateConfig } = useLumiaPassportConfig();
|
|
9412
9422
|
const currentTheme = config.ui.theme;
|
|
@@ -9451,7 +9461,7 @@ var ThemeToggle = () => {
|
|
|
9451
9461
|
return "auto";
|
|
9452
9462
|
}
|
|
9453
9463
|
};
|
|
9454
|
-
return /* @__PURE__ */ (0,
|
|
9464
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "lumia-scope", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
9455
9465
|
"button",
|
|
9456
9466
|
{
|
|
9457
9467
|
onClick: cycleTheme,
|
|
@@ -9467,19 +9477,19 @@ var ThemeToggle = () => {
|
|
|
9467
9477
|
};
|
|
9468
9478
|
|
|
9469
9479
|
// src/components/LumiaLogo.tsx
|
|
9470
|
-
var
|
|
9480
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
9471
9481
|
var LumiaLogo2 = ({ size = 80, className = "" }) => {
|
|
9472
|
-
return /* @__PURE__ */ (0,
|
|
9482
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
9473
9483
|
"div",
|
|
9474
9484
|
{
|
|
9475
9485
|
className: `flex items-center justify-center ${className}`,
|
|
9476
9486
|
style: { width: size, height: size },
|
|
9477
|
-
children: /* @__PURE__ */ (0,
|
|
9478
|
-
/* @__PURE__ */ (0,
|
|
9479
|
-
/* @__PURE__ */ (0,
|
|
9480
|
-
/* @__PURE__ */ (0,
|
|
9481
|
-
/* @__PURE__ */ (0,
|
|
9482
|
-
/* @__PURE__ */ (0,
|
|
9487
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("svg", { viewBox: "0 0 512 512", width: size, height: size, children: [
|
|
9488
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "256", cy: "256", r: "256", fill: "#060117", strokeWidth: "0" }),
|
|
9489
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("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" }),
|
|
9490
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("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" }),
|
|
9491
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("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" }),
|
|
9492
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("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" })
|
|
9483
9493
|
] })
|
|
9484
9494
|
}
|
|
9485
9495
|
);
|
|
@@ -9545,7 +9555,7 @@ function useTheme2(configTheme) {
|
|
|
9545
9555
|
var React28 = __toESM(require("react"), 1);
|
|
9546
9556
|
var import_lucide_react18 = require("lucide-react");
|
|
9547
9557
|
init_button();
|
|
9548
|
-
var
|
|
9558
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
9549
9559
|
function toExplorerUrl(kind, value, chain) {
|
|
9550
9560
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
9551
9561
|
if (!base2) return null;
|
|
@@ -9569,11 +9579,11 @@ var Hash = ({
|
|
|
9569
9579
|
const value = hash || "";
|
|
9570
9580
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
9571
9581
|
const [copied, setCopied] = React28.useState(false);
|
|
9572
|
-
if (!value) return /* @__PURE__ */ (0,
|
|
9573
|
-
return /* @__PURE__ */ (0,
|
|
9574
|
-
label && /* @__PURE__ */ (0,
|
|
9575
|
-
/* @__PURE__ */ (0,
|
|
9576
|
-
showCopy && /* @__PURE__ */ (0,
|
|
9582
|
+
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
9583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
9584
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
9585
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
9586
|
+
showCopy && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
9577
9587
|
Button,
|
|
9578
9588
|
{
|
|
9579
9589
|
variant: "ghost",
|
|
@@ -9587,10 +9597,10 @@ var Hash = ({
|
|
|
9587
9597
|
} catch {
|
|
9588
9598
|
}
|
|
9589
9599
|
},
|
|
9590
|
-
children: /* @__PURE__ */ (0,
|
|
9600
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react18.Copy, { className: "h-4 w-4" })
|
|
9591
9601
|
}
|
|
9592
9602
|
),
|
|
9593
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
9603
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
9594
9604
|
"a",
|
|
9595
9605
|
{
|
|
9596
9606
|
href: explorer,
|
|
@@ -9598,7 +9608,7 @@ var Hash = ({
|
|
|
9598
9608
|
rel: "noreferrer noopener",
|
|
9599
9609
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
9600
9610
|
title: "Open in explorer",
|
|
9601
|
-
children: /* @__PURE__ */ (0,
|
|
9611
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react18.ExternalLink, { className: "h-4 w-4" })
|
|
9602
9612
|
}
|
|
9603
9613
|
)
|
|
9604
9614
|
] });
|
|
@@ -9607,7 +9617,7 @@ var Hash = ({
|
|
|
9607
9617
|
// src/internal/components/TransactionsList.tsx
|
|
9608
9618
|
var import_react21 = require("react");
|
|
9609
9619
|
init_base();
|
|
9610
|
-
var
|
|
9620
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
9611
9621
|
var TransactionsList = ({
|
|
9612
9622
|
address,
|
|
9613
9623
|
itemsCount = 10
|
|
@@ -9661,15 +9671,15 @@ var TransactionsList = ({
|
|
|
9661
9671
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
9662
9672
|
};
|
|
9663
9673
|
if (loading) {
|
|
9664
|
-
return /* @__PURE__ */ (0,
|
|
9665
|
-
/* @__PURE__ */ (0,
|
|
9666
|
-
/* @__PURE__ */ (0,
|
|
9674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "p-4 text-center", children: [
|
|
9675
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
9676
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
9667
9677
|
] });
|
|
9668
9678
|
}
|
|
9669
9679
|
if (error) {
|
|
9670
|
-
return /* @__PURE__ */ (0,
|
|
9671
|
-
/* @__PURE__ */ (0,
|
|
9672
|
-
/* @__PURE__ */ (0,
|
|
9680
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "p-4 text-center", children: [
|
|
9681
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-red-600 text-sm", children: error }),
|
|
9682
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
9673
9683
|
"button",
|
|
9674
9684
|
{
|
|
9675
9685
|
onClick: () => window.location.reload(),
|
|
@@ -9680,54 +9690,54 @@ var TransactionsList = ({
|
|
|
9680
9690
|
] });
|
|
9681
9691
|
}
|
|
9682
9692
|
if (transactions.length === 0) {
|
|
9683
|
-
return /* @__PURE__ */ (0,
|
|
9693
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "p-4 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
9684
9694
|
}
|
|
9685
|
-
return /* @__PURE__ */ (0,
|
|
9695
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
9686
9696
|
"div",
|
|
9687
9697
|
{
|
|
9688
9698
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
9689
9699
|
onClick: () => openTransaction(tx.hash),
|
|
9690
9700
|
children: [
|
|
9691
|
-
/* @__PURE__ */ (0,
|
|
9692
|
-
/* @__PURE__ */ (0,
|
|
9693
|
-
/* @__PURE__ */ (0,
|
|
9694
|
-
/* @__PURE__ */ (0,
|
|
9695
|
-
/* @__PURE__ */ (0,
|
|
9701
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex justify-between items-start mb-2", children: [
|
|
9702
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex-1", children: [
|
|
9703
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
9704
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress(tx.hash) }),
|
|
9705
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("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" })
|
|
9696
9706
|
] }),
|
|
9697
|
-
/* @__PURE__ */ (0,
|
|
9698
|
-
/* @__PURE__ */ (0,
|
|
9699
|
-
/* @__PURE__ */ (0,
|
|
9700
|
-
/* @__PURE__ */ (0,
|
|
9707
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "text-sm space-y-1", children: [
|
|
9708
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
|
|
9709
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-gray-600", children: "From:" }),
|
|
9710
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "font-mono ml-1", children: [
|
|
9701
9711
|
formatAddress(tx.from.hash),
|
|
9702
|
-
tx.from.is_contract && /* @__PURE__ */ (0,
|
|
9712
|
+
tx.from.is_contract && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
9703
9713
|
] })
|
|
9704
9714
|
] }),
|
|
9705
|
-
/* @__PURE__ */ (0,
|
|
9706
|
-
/* @__PURE__ */ (0,
|
|
9707
|
-
/* @__PURE__ */ (0,
|
|
9715
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
|
|
9716
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-gray-600", children: "To:" }),
|
|
9717
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "font-mono ml-1", children: [
|
|
9708
9718
|
formatAddress(tx.to.hash),
|
|
9709
|
-
tx.to.is_contract && /* @__PURE__ */ (0,
|
|
9719
|
+
tx.to.is_contract && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
9710
9720
|
] })
|
|
9711
9721
|
] }),
|
|
9712
|
-
/* @__PURE__ */ (0,
|
|
9713
|
-
/* @__PURE__ */ (0,
|
|
9714
|
-
/* @__PURE__ */ (0,
|
|
9722
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
|
|
9723
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-gray-600", children: "Value:" }),
|
|
9724
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "font-semibold ml-1", children: [
|
|
9715
9725
|
formatValue(tx.value),
|
|
9716
9726
|
" LUMIA"
|
|
9717
9727
|
] })
|
|
9718
9728
|
] })
|
|
9719
9729
|
] })
|
|
9720
9730
|
] }),
|
|
9721
|
-
/* @__PURE__ */ (0,
|
|
9722
|
-
/* @__PURE__ */ (0,
|
|
9723
|
-
/* @__PURE__ */ (0,
|
|
9731
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "text-right text-xs text-gray-500", children: [
|
|
9732
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { children: formatDate2(tx.timestamp) }),
|
|
9733
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "mt-1", children: [
|
|
9724
9734
|
"Gas: ",
|
|
9725
9735
|
parseInt(tx.gas_used).toLocaleString()
|
|
9726
9736
|
] }),
|
|
9727
|
-
tx.method && /* @__PURE__ */ (0,
|
|
9737
|
+
tx.method && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
9728
9738
|
] })
|
|
9729
9739
|
] }),
|
|
9730
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */ (0,
|
|
9740
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
9731
9741
|
"span",
|
|
9732
9742
|
{
|
|
9733
9743
|
className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full",
|