@lumiapassport/ui-kit 1.5.0 → 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/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +915 -933
- 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 +914 -932
- 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
|
}
|
|
@@ -2920,8 +2922,8 @@ var init_LumiaPassportContext = __esm({
|
|
|
2920
2922
|
merged.projectId = initialConfig.projectId;
|
|
2921
2923
|
}
|
|
2922
2924
|
if (!merged.projectId) {
|
|
2923
|
-
console.
|
|
2924
|
-
'
|
|
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'
|
|
2925
2927
|
);
|
|
2926
2928
|
} else {
|
|
2927
2929
|
console.log("[LumiaPassport] \u2705 Initialized with projectId:", merged.projectId);
|
|
@@ -3021,9 +3023,6 @@ var init_LumiaPassportContext = __esm({
|
|
|
3021
3023
|
if (typeof window === "undefined") return;
|
|
3022
3024
|
const projectId2 = config.projectId;
|
|
3023
3025
|
if (!projectId2) {
|
|
3024
|
-
console.warn(
|
|
3025
|
-
"[LumiaPassport] Skipping iframe initialization - projectId not configured"
|
|
3026
|
-
);
|
|
3027
3026
|
return;
|
|
3028
3027
|
}
|
|
3029
3028
|
const iframeUrl = getIframeUrl();
|
|
@@ -3471,55 +3470,37 @@ var init_LumiaLogo = __esm({
|
|
|
3471
3470
|
}
|
|
3472
3471
|
});
|
|
3473
3472
|
|
|
3474
|
-
// src/internal/components/SuccessScreen.tsx
|
|
3475
|
-
var import_jsx_runtime12, SuccessScreen;
|
|
3476
|
-
var init_SuccessScreen = __esm({
|
|
3477
|
-
"src/internal/components/SuccessScreen.tsx"() {
|
|
3478
|
-
init_useTheme();
|
|
3479
|
-
init_LumiaPassportContext();
|
|
3480
|
-
import_jsx_runtime12 = require("react/jsx-runtime");
|
|
3481
|
-
SuccessScreen = () => {
|
|
3482
|
-
const { config } = useLumiaPassportConfig();
|
|
3483
|
-
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3484
|
-
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "text-center", children: [
|
|
3485
|
-
/* @__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" }),
|
|
3486
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: `text-lg font-medium ${theme.titleText}`, children: "Success" })
|
|
3487
|
-
] });
|
|
3488
|
-
};
|
|
3489
|
-
}
|
|
3490
|
-
});
|
|
3491
|
-
|
|
3492
3473
|
// src/internal/components/FailedScreen.tsx
|
|
3493
|
-
var
|
|
3474
|
+
var import_jsx_runtime12, FailedScreen;
|
|
3494
3475
|
var init_FailedScreen = __esm({
|
|
3495
3476
|
"src/internal/components/FailedScreen.tsx"() {
|
|
3496
3477
|
init_useTheme();
|
|
3497
3478
|
init_LumiaPassportContext();
|
|
3498
|
-
|
|
3479
|
+
import_jsx_runtime12 = require("react/jsx-runtime");
|
|
3499
3480
|
FailedScreen = ({ message = "Failed" }) => {
|
|
3500
3481
|
const { config } = useLumiaPassportConfig();
|
|
3501
3482
|
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3502
|
-
return /* @__PURE__ */ (0,
|
|
3503
|
-
/* @__PURE__ */ (0,
|
|
3504
|
-
/* @__PURE__ */ (0,
|
|
3505
|
-
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 })
|
|
3506
3487
|
] });
|
|
3507
3488
|
};
|
|
3508
3489
|
}
|
|
3509
3490
|
});
|
|
3510
3491
|
|
|
3511
3492
|
// src/internal/components/TermsOfService.tsx
|
|
3512
|
-
var
|
|
3493
|
+
var import_jsx_runtime13, TermsOfService;
|
|
3513
3494
|
var init_TermsOfService = __esm({
|
|
3514
3495
|
"src/internal/components/TermsOfService.tsx"() {
|
|
3515
3496
|
init_dialog();
|
|
3516
3497
|
init_LumiaPassportContext();
|
|
3517
3498
|
init_useTheme();
|
|
3518
|
-
|
|
3499
|
+
import_jsx_runtime13 = require("react/jsx-runtime");
|
|
3519
3500
|
TermsOfService = ({ open, onOpenChange }) => {
|
|
3520
3501
|
const { config } = useLumiaPassportConfig();
|
|
3521
3502
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3522
|
-
return /* @__PURE__ */ (0,
|
|
3503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
3523
3504
|
DialogContent,
|
|
3524
3505
|
{
|
|
3525
3506
|
className: `lumia-scope p-6 border-0 ${theme.modalBg} ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -3531,8 +3512,8 @@ var init_TermsOfService = __esm({
|
|
|
3531
3512
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
3532
3513
|
},
|
|
3533
3514
|
children: [
|
|
3534
|
-
/* @__PURE__ */ (0,
|
|
3535
|
-
/* @__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." }) })
|
|
3536
3517
|
]
|
|
3537
3518
|
}
|
|
3538
3519
|
) });
|
|
@@ -3541,44 +3522,44 @@ var init_TermsOfService = __esm({
|
|
|
3541
3522
|
});
|
|
3542
3523
|
|
|
3543
3524
|
// src/internal/components/ui/card.tsx
|
|
3544
|
-
var React8,
|
|
3525
|
+
var React8, import_jsx_runtime14, Card, CardHeader, CardTitle, CardDescription, CardContent;
|
|
3545
3526
|
var init_card = __esm({
|
|
3546
3527
|
"src/internal/components/ui/card.tsx"() {
|
|
3547
3528
|
React8 = __toESM(require("react"), 1);
|
|
3548
3529
|
init_utils();
|
|
3549
|
-
|
|
3530
|
+
import_jsx_runtime14 = require("react/jsx-runtime");
|
|
3550
3531
|
Card = React8.forwardRef(
|
|
3551
|
-
({ 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 })
|
|
3552
3533
|
);
|
|
3553
3534
|
Card.displayName = "Card";
|
|
3554
3535
|
CardHeader = React8.forwardRef(
|
|
3555
|
-
({ 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 })
|
|
3556
3537
|
);
|
|
3557
3538
|
CardHeader.displayName = "CardHeader";
|
|
3558
3539
|
CardTitle = React8.forwardRef(
|
|
3559
|
-
({ 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 })
|
|
3560
3541
|
);
|
|
3561
3542
|
CardTitle.displayName = "CardTitle";
|
|
3562
3543
|
CardDescription = React8.forwardRef(
|
|
3563
|
-
({ 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 })
|
|
3564
3545
|
);
|
|
3565
3546
|
CardDescription.displayName = "CardDescription";
|
|
3566
3547
|
CardContent = React8.forwardRef(
|
|
3567
|
-
({ 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 })
|
|
3568
3549
|
);
|
|
3569
3550
|
CardContent.displayName = "CardContent";
|
|
3570
3551
|
}
|
|
3571
3552
|
});
|
|
3572
3553
|
|
|
3573
3554
|
// src/internal/components/ui/input.tsx
|
|
3574
|
-
var React9,
|
|
3555
|
+
var React9, import_jsx_runtime15, Input;
|
|
3575
3556
|
var init_input = __esm({
|
|
3576
3557
|
"src/internal/components/ui/input.tsx"() {
|
|
3577
3558
|
React9 = __toESM(require("react"), 1);
|
|
3578
3559
|
init_utils();
|
|
3579
|
-
|
|
3560
|
+
import_jsx_runtime15 = require("react/jsx-runtime");
|
|
3580
3561
|
Input = React9.forwardRef(({ className, type, ...props }, ref) => {
|
|
3581
|
-
return /* @__PURE__ */ (0,
|
|
3562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3582
3563
|
"input",
|
|
3583
3564
|
{
|
|
3584
3565
|
type,
|
|
@@ -3708,48 +3689,48 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3708
3689
|
}
|
|
3709
3690
|
};
|
|
3710
3691
|
if (checkingBackup) {
|
|
3711
|
-
return /* @__PURE__ */ (0,
|
|
3712
|
-
/* @__PURE__ */ (0,
|
|
3713
|
-
/* @__PURE__ */ (0,
|
|
3714
|
-
/* @__PURE__ */ (0,
|
|
3715
|
-
/* @__PURE__ */ (0,
|
|
3716
|
-
/* @__PURE__ */ (0,
|
|
3717
|
-
/* @__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..." })
|
|
3718
3699
|
] })
|
|
3719
3700
|
] }),
|
|
3720
|
-
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" }) })
|
|
3721
3702
|
] }) }),
|
|
3722
|
-
/* @__PURE__ */ (0,
|
|
3723
|
-
/* @__PURE__ */ (0,
|
|
3724
|
-
/* @__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..." })
|
|
3725
3706
|
] }) }) })
|
|
3726
3707
|
] });
|
|
3727
3708
|
}
|
|
3728
3709
|
if (hasServerBackup === false) {
|
|
3729
|
-
return /* @__PURE__ */ (0,
|
|
3730
|
-
/* @__PURE__ */ (0,
|
|
3731
|
-
/* @__PURE__ */ (0,
|
|
3732
|
-
/* @__PURE__ */ (0,
|
|
3733
|
-
/* @__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" })
|
|
3734
3715
|
] }),
|
|
3735
|
-
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" }) })
|
|
3736
3717
|
] }) }),
|
|
3737
|
-
/* @__PURE__ */ (0,
|
|
3738
|
-
/* @__PURE__ */ (0,
|
|
3739
|
-
/* @__PURE__ */ (0,
|
|
3740
|
-
/* @__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." })
|
|
3741
3722
|
] }),
|
|
3742
|
-
/* @__PURE__ */ (0,
|
|
3743
|
-
/* @__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:" }),
|
|
3744
3725
|
" Try uploading a backup file if you have one saved locally, or create a new account with a different email."
|
|
3745
3726
|
] }) }),
|
|
3746
|
-
/* @__PURE__ */ (0,
|
|
3747
|
-
/* @__PURE__ */ (0,
|
|
3748
|
-
/* @__PURE__ */ (0,
|
|
3749
|
-
/* @__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" })
|
|
3750
3731
|
] }),
|
|
3751
|
-
/* @__PURE__ */ (0,
|
|
3752
|
-
/* @__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)(
|
|
3753
3734
|
"input",
|
|
3754
3735
|
{
|
|
3755
3736
|
type: "file",
|
|
@@ -3758,28 +3739,28 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3758
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"
|
|
3759
3740
|
}
|
|
3760
3741
|
) }),
|
|
3761
|
-
!restoreFile && /* @__PURE__ */ (0,
|
|
3762
|
-
restoreFile && /* @__PURE__ */ (0,
|
|
3763
|
-
/* @__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: [
|
|
3764
3745
|
"Selected: ",
|
|
3765
3746
|
restoreFile.name
|
|
3766
3747
|
] }),
|
|
3767
|
-
/* @__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" })
|
|
3768
3749
|
] })
|
|
3769
3750
|
] })
|
|
3770
3751
|
] }),
|
|
3771
|
-
restoreFile && /* @__PURE__ */ (0,
|
|
3772
|
-
/* @__PURE__ */ (0,
|
|
3773
|
-
/* @__PURE__ */ (0,
|
|
3774
|
-
/* @__PURE__ */ (0,
|
|
3775
|
-
/* @__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" })
|
|
3776
3757
|
] }),
|
|
3777
|
-
!useCustomPassword && /* @__PURE__ */ (0,
|
|
3778
|
-
/* @__PURE__ */ (0,
|
|
3779
|
-
/* @__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" })
|
|
3780
3761
|
] }) }),
|
|
3781
|
-
useCustomPassword && /* @__PURE__ */ (0,
|
|
3782
|
-
/* @__PURE__ */ (0,
|
|
3762
|
+
useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "relative", children: [
|
|
3763
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3783
3764
|
Input,
|
|
3784
3765
|
{
|
|
3785
3766
|
type: showPassword ? "text" : "password",
|
|
@@ -3789,61 +3770,61 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3789
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"}`
|
|
3790
3771
|
}
|
|
3791
3772
|
),
|
|
3792
|
-
/* @__PURE__ */ (0,
|
|
3773
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3793
3774
|
"button",
|
|
3794
3775
|
{
|
|
3795
3776
|
type: "button",
|
|
3796
3777
|
onClick: () => setShowPassword(!showPassword),
|
|
3797
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"}`,
|
|
3798
|
-
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" })
|
|
3799
3780
|
}
|
|
3800
3781
|
)
|
|
3801
3782
|
] })
|
|
3802
3783
|
] }),
|
|
3803
|
-
error && /* @__PURE__ */ (0,
|
|
3804
|
-
/* @__PURE__ */ (0,
|
|
3805
|
-
/* @__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 })
|
|
3806
3787
|
] }),
|
|
3807
|
-
success && /* @__PURE__ */ (0,
|
|
3808
|
-
/* @__PURE__ */ (0,
|
|
3809
|
-
/* @__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 })
|
|
3810
3791
|
] })
|
|
3811
3792
|
] })
|
|
3812
3793
|
] });
|
|
3813
3794
|
}
|
|
3814
|
-
return /* @__PURE__ */ (0,
|
|
3815
|
-
/* @__PURE__ */ (0,
|
|
3816
|
-
/* @__PURE__ */ (0,
|
|
3817
|
-
/* @__PURE__ */ (0,
|
|
3818
|
-
/* @__PURE__ */ (0,
|
|
3819
|
-
/* @__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" })
|
|
3820
3801
|
] }),
|
|
3821
|
-
onClose && /* @__PURE__ */ (0,
|
|
3802
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3822
3803
|
"button",
|
|
3823
3804
|
{
|
|
3824
3805
|
onClick: onClose,
|
|
3825
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"}`,
|
|
3826
3807
|
title: "Close",
|
|
3827
3808
|
"aria-label": "Close",
|
|
3828
|
-
children: /* @__PURE__ */ (0,
|
|
3809
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react3.X, { className: "h-4 w-4" })
|
|
3829
3810
|
}
|
|
3830
3811
|
)
|
|
3831
3812
|
] }),
|
|
3832
|
-
/* @__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" })
|
|
3833
3814
|
] }),
|
|
3834
|
-
/* @__PURE__ */ (0,
|
|
3835
|
-
error && !error.includes("No backup found") && /* @__PURE__ */ (0,
|
|
3836
|
-
/* @__PURE__ */ (0,
|
|
3837
|
-
/* @__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 })
|
|
3838
3819
|
] }),
|
|
3839
|
-
success && /* @__PURE__ */ (0,
|
|
3840
|
-
/* @__PURE__ */ (0,
|
|
3841
|
-
/* @__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 })
|
|
3842
3823
|
] }),
|
|
3843
|
-
/* @__PURE__ */ (0,
|
|
3844
|
-
/* @__PURE__ */ (0,
|
|
3845
|
-
/* @__PURE__ */ (0,
|
|
3846
|
-
/* @__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)(
|
|
3847
3828
|
"input",
|
|
3848
3829
|
{
|
|
3849
3830
|
type: "checkbox",
|
|
@@ -3853,14 +3834,14 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3853
3834
|
className: "rounded"
|
|
3854
3835
|
}
|
|
3855
3836
|
),
|
|
3856
|
-
/* @__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" })
|
|
3857
3838
|
] }),
|
|
3858
|
-
!useCustomPassword && /* @__PURE__ */ (0,
|
|
3859
|
-
/* @__PURE__ */ (0,
|
|
3860
|
-
/* @__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" })
|
|
3861
3842
|
] }) }),
|
|
3862
|
-
useCustomPassword && /* @__PURE__ */ (0,
|
|
3863
|
-
/* @__PURE__ */ (0,
|
|
3843
|
+
useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "relative", children: [
|
|
3844
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3864
3845
|
Input,
|
|
3865
3846
|
{
|
|
3866
3847
|
type: showPassword ? "text" : "password",
|
|
@@ -3870,26 +3851,26 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3870
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"}`
|
|
3871
3852
|
}
|
|
3872
3853
|
),
|
|
3873
|
-
/* @__PURE__ */ (0,
|
|
3854
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3874
3855
|
"button",
|
|
3875
3856
|
{
|
|
3876
3857
|
type: "button",
|
|
3877
3858
|
onClick: () => setShowPassword(!showPassword),
|
|
3878
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"}`,
|
|
3879
3860
|
"aria-label": "Toggle password visibility",
|
|
3880
|
-
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" })
|
|
3881
3862
|
}
|
|
3882
3863
|
)
|
|
3883
3864
|
] })
|
|
3884
3865
|
] }),
|
|
3885
|
-
/* @__PURE__ */ (0,
|
|
3886
|
-
/* @__PURE__ */ (0,
|
|
3887
|
-
/* @__PURE__ */ (0,
|
|
3888
|
-
/* @__PURE__ */ (0,
|
|
3889
|
-
/* @__PURE__ */ (0,
|
|
3890
|
-
/* @__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" })
|
|
3891
3872
|
] }),
|
|
3892
|
-
/* @__PURE__ */ (0,
|
|
3873
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3893
3874
|
Button,
|
|
3894
3875
|
{
|
|
3895
3876
|
onClick: handleRestoreFromServer,
|
|
@@ -3899,13 +3880,13 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3899
3880
|
}
|
|
3900
3881
|
)
|
|
3901
3882
|
] }),
|
|
3902
|
-
/* @__PURE__ */ (0,
|
|
3903
|
-
/* @__PURE__ */ (0,
|
|
3904
|
-
/* @__PURE__ */ (0,
|
|
3905
|
-
/* @__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" })
|
|
3906
3887
|
] }),
|
|
3907
|
-
/* @__PURE__ */ (0,
|
|
3908
|
-
/* @__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)(
|
|
3909
3890
|
"input",
|
|
3910
3891
|
{
|
|
3911
3892
|
type: "file",
|
|
@@ -3914,9 +3895,9 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3914
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"
|
|
3915
3896
|
}
|
|
3916
3897
|
) }),
|
|
3917
|
-
restoreFile && /* @__PURE__ */ (0,
|
|
3918
|
-
/* @__PURE__ */ (0,
|
|
3919
|
-
/* @__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)(
|
|
3920
3901
|
Button,
|
|
3921
3902
|
{
|
|
3922
3903
|
onClick: handleRestoreFromFile,
|
|
@@ -3933,7 +3914,7 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3933
3914
|
] })
|
|
3934
3915
|
] });
|
|
3935
3916
|
}
|
|
3936
|
-
var React10, import_lucide_react3,
|
|
3917
|
+
var React10, import_lucide_react3, import_jsx_runtime16;
|
|
3937
3918
|
var init_KeyshareRestore = __esm({
|
|
3938
3919
|
"src/internal/components/KeyshareRestore.tsx"() {
|
|
3939
3920
|
React10 = __toESM(require("react"), 1);
|
|
@@ -3945,18 +3926,18 @@ var init_KeyshareRestore = __esm({
|
|
|
3945
3926
|
init_iframe_manager();
|
|
3946
3927
|
init_LumiaPassportContext();
|
|
3947
3928
|
init_useTheme();
|
|
3948
|
-
|
|
3929
|
+
import_jsx_runtime16 = require("react/jsx-runtime");
|
|
3949
3930
|
}
|
|
3950
3931
|
});
|
|
3951
3932
|
|
|
3952
3933
|
// src/internal/components/VerificationCodeInput.tsx
|
|
3953
|
-
var import_react6,
|
|
3934
|
+
var import_react6, import_jsx_runtime17, VerificationCodeInput;
|
|
3954
3935
|
var init_VerificationCodeInput = __esm({
|
|
3955
3936
|
"src/internal/components/VerificationCodeInput.tsx"() {
|
|
3956
3937
|
import_react6 = require("react");
|
|
3957
3938
|
init_LumiaPassportContext();
|
|
3958
3939
|
init_useTheme();
|
|
3959
|
-
|
|
3940
|
+
import_jsx_runtime17 = require("react/jsx-runtime");
|
|
3960
3941
|
VerificationCodeInput = ({ onVerifyCode, onResendCode, isLoading, expiresIn, error }) => {
|
|
3961
3942
|
const { config } = useLumiaPassportConfig();
|
|
3962
3943
|
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
@@ -4031,8 +4012,8 @@ var init_VerificationCodeInput = __esm({
|
|
|
4031
4012
|
};
|
|
4032
4013
|
const mm = Math.floor(timeLeft / 60).toString();
|
|
4033
4014
|
const ss = (timeLeft % 60).toString().padStart(2, "0");
|
|
4034
|
-
return /* @__PURE__ */ (0,
|
|
4035
|
-
/* @__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)(
|
|
4036
4017
|
"input",
|
|
4037
4018
|
{
|
|
4038
4019
|
ref: (el) => inputsRef.current[i] = el,
|
|
@@ -4048,17 +4029,17 @@ var init_VerificationCodeInput = __esm({
|
|
|
4048
4029
|
},
|
|
4049
4030
|
i
|
|
4050
4031
|
)) }),
|
|
4051
|
-
error && /* @__PURE__ */ (0,
|
|
4052
|
-
/* @__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: [
|
|
4053
4034
|
"Code expires in ",
|
|
4054
4035
|
mm,
|
|
4055
4036
|
":",
|
|
4056
4037
|
ss
|
|
4057
4038
|
] }),
|
|
4058
|
-
/* @__PURE__ */ (0,
|
|
4039
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
4059
4040
|
"Didn't receive code?",
|
|
4060
4041
|
" ",
|
|
4061
|
-
/* @__PURE__ */ (0,
|
|
4042
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
4062
4043
|
"button",
|
|
4063
4044
|
{
|
|
4064
4045
|
onClick: () => timeLeft === 0 ? onResendCode() : void 0,
|
|
@@ -4097,7 +4078,7 @@ var init_profile = __esm({
|
|
|
4097
4078
|
});
|
|
4098
4079
|
|
|
4099
4080
|
// src/internal/components/DisplayNameInput.tsx
|
|
4100
|
-
var import_react7, import_lucide_react4,
|
|
4081
|
+
var import_react7, import_lucide_react4, import_jsx_runtime18, DisplayNameInput;
|
|
4101
4082
|
var init_DisplayNameInput = __esm({
|
|
4102
4083
|
"src/internal/components/DisplayNameInput.tsx"() {
|
|
4103
4084
|
import_react7 = require("react");
|
|
@@ -4109,7 +4090,7 @@ var init_DisplayNameInput = __esm({
|
|
|
4109
4090
|
init_LumiaPassportContext();
|
|
4110
4091
|
init_profile();
|
|
4111
4092
|
init_auth();
|
|
4112
|
-
|
|
4093
|
+
import_jsx_runtime18 = require("react/jsx-runtime");
|
|
4113
4094
|
DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
4114
4095
|
const [displayName, setDisplayName] = (0, import_react7.useState)("");
|
|
4115
4096
|
const [isLoading, setIsLoading] = (0, import_react7.useState)(false);
|
|
@@ -4146,14 +4127,14 @@ var init_DisplayNameInput = __esm({
|
|
|
4146
4127
|
onComplete();
|
|
4147
4128
|
}
|
|
4148
4129
|
};
|
|
4149
|
-
return /* @__PURE__ */ (0,
|
|
4150
|
-
/* @__PURE__ */ (0,
|
|
4151
|
-
/* @__PURE__ */ (0,
|
|
4152
|
-
/* @__PURE__ */ (0,
|
|
4153
|
-
/* @__PURE__ */ (0,
|
|
4154
|
-
/* @__PURE__ */ (0,
|
|
4155
|
-
/* @__PURE__ */ (0,
|
|
4156
|
-
/* @__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)(
|
|
4157
4138
|
Input,
|
|
4158
4139
|
{
|
|
4159
4140
|
type: "text",
|
|
@@ -4170,8 +4151,8 @@ var init_DisplayNameInput = __esm({
|
|
|
4170
4151
|
}
|
|
4171
4152
|
)
|
|
4172
4153
|
] }),
|
|
4173
|
-
error && /* @__PURE__ */ (0,
|
|
4174
|
-
/* @__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)(
|
|
4175
4156
|
Button,
|
|
4176
4157
|
{
|
|
4177
4158
|
type: "submit",
|
|
@@ -4181,7 +4162,7 @@ var init_DisplayNameInput = __esm({
|
|
|
4181
4162
|
children: isLoading ? "Saving..." : "Continue"
|
|
4182
4163
|
}
|
|
4183
4164
|
),
|
|
4184
|
-
onSkip && /* @__PURE__ */ (0,
|
|
4165
|
+
onSkip && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "text-center mt-4", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
4185
4166
|
"button",
|
|
4186
4167
|
{
|
|
4187
4168
|
type: "button",
|
|
@@ -4210,7 +4191,7 @@ function getPendingLoginResponse() {
|
|
|
4210
4191
|
function clearPendingLoginResponse() {
|
|
4211
4192
|
_pendingLoginResponse = null;
|
|
4212
4193
|
}
|
|
4213
|
-
var import_react8, import_lucide_react5,
|
|
4194
|
+
var import_react8, import_lucide_react5, import_jsx_runtime19, _pendingLoginResponse, AuthModal;
|
|
4214
4195
|
var init_AuthModal = __esm({
|
|
4215
4196
|
"src/internal/components/AuthModal.tsx"() {
|
|
4216
4197
|
import_react8 = __toESM(require("react"), 1);
|
|
@@ -4218,7 +4199,6 @@ var init_AuthModal = __esm({
|
|
|
4218
4199
|
init_auth();
|
|
4219
4200
|
init_ErrorAlert();
|
|
4220
4201
|
init_LumiaLogo();
|
|
4221
|
-
init_SuccessScreen();
|
|
4222
4202
|
init_FailedScreen();
|
|
4223
4203
|
init_TermsOfService();
|
|
4224
4204
|
init_button();
|
|
@@ -4233,7 +4213,7 @@ var init_AuthModal = __esm({
|
|
|
4233
4213
|
init_lumiaPassport();
|
|
4234
4214
|
init_projectId();
|
|
4235
4215
|
init_profile();
|
|
4236
|
-
|
|
4216
|
+
import_jsx_runtime19 = require("react/jsx-runtime");
|
|
4237
4217
|
_pendingLoginResponse = null;
|
|
4238
4218
|
AuthModal = ({ open, onOpenChange, onAuthSuccess, autoCloseOnSuccess = true, recoveryUserId, onRecoveryClose, onRecoverySuccess, callbacks }) => {
|
|
4239
4219
|
const [email, setEmail] = (0, import_react8.useState)("");
|
|
@@ -4397,15 +4377,12 @@ var init_AuthModal = __esm({
|
|
|
4397
4377
|
}
|
|
4398
4378
|
throw authError;
|
|
4399
4379
|
}
|
|
4400
|
-
console.log("[AuthModal]
|
|
4401
|
-
setStep("success");
|
|
4380
|
+
console.log("[AuthModal] Authentication successful, closing modal");
|
|
4402
4381
|
if (autoCloseOnSuccess && !needsRecovery) {
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
setVerificationError("");
|
|
4408
|
-
}, 2e3);
|
|
4382
|
+
setStep("signin");
|
|
4383
|
+
setEmail("");
|
|
4384
|
+
setVerificationError("");
|
|
4385
|
+
onOpenChange(false);
|
|
4409
4386
|
}
|
|
4410
4387
|
} catch (error) {
|
|
4411
4388
|
let errorMessage = "";
|
|
@@ -4493,15 +4470,12 @@ var init_AuthModal = __esm({
|
|
|
4493
4470
|
if (onAuthSuccess) {
|
|
4494
4471
|
await onAuthSuccess();
|
|
4495
4472
|
}
|
|
4496
|
-
setStep("
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
setPasskeyError("");
|
|
4503
|
-
setPasskeyStatus("idle");
|
|
4504
|
-
}, 2e3);
|
|
4473
|
+
setStep("signin");
|
|
4474
|
+
setEmail("");
|
|
4475
|
+
setVerificationError("");
|
|
4476
|
+
setPasskeyError("");
|
|
4477
|
+
setPasskeyStatus("idle");
|
|
4478
|
+
onOpenChange(false);
|
|
4505
4479
|
} else {
|
|
4506
4480
|
setPasskeyStatus("Passkey registered successfully!");
|
|
4507
4481
|
setTimeout(() => {
|
|
@@ -4579,16 +4553,13 @@ var init_AuthModal = __esm({
|
|
|
4579
4553
|
}
|
|
4580
4554
|
throw authError;
|
|
4581
4555
|
}
|
|
4582
|
-
setStep("success");
|
|
4583
4556
|
if (autoCloseOnSuccess) {
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
setPasskeyStatus("idle");
|
|
4591
|
-
}, 2e3);
|
|
4557
|
+
setStep("signin");
|
|
4558
|
+
setEmail("");
|
|
4559
|
+
setVerificationError("");
|
|
4560
|
+
setPasskeyError("");
|
|
4561
|
+
setPasskeyStatus("idle");
|
|
4562
|
+
onOpenChange(false);
|
|
4592
4563
|
}
|
|
4593
4564
|
} catch (e) {
|
|
4594
4565
|
const normalized = normalizeWebAuthnError(e);
|
|
@@ -4662,15 +4633,12 @@ var init_AuthModal = __esm({
|
|
|
4662
4633
|
if (onAuthSuccess) {
|
|
4663
4634
|
await onAuthSuccess();
|
|
4664
4635
|
}
|
|
4665
|
-
setStep("
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
|
|
4670
|
-
|
|
4671
|
-
setPasskeyError("");
|
|
4672
|
-
setPasskeyStatus("idle");
|
|
4673
|
-
}, 2e3);
|
|
4636
|
+
setStep("signin");
|
|
4637
|
+
setEmail("");
|
|
4638
|
+
setVerificationError("");
|
|
4639
|
+
setPasskeyError("");
|
|
4640
|
+
setPasskeyStatus("idle");
|
|
4641
|
+
onOpenChange(false);
|
|
4674
4642
|
} catch (sessionError) {
|
|
4675
4643
|
let errorMessage = "Account setup failed. Please try again.";
|
|
4676
4644
|
if (sessionError?.code === "NO_BACKUP_AVAILABLE") {
|
|
@@ -4700,20 +4668,20 @@ var init_AuthModal = __esm({
|
|
|
4700
4668
|
};
|
|
4701
4669
|
}, [step, onAuthSuccess, onOpenChange]);
|
|
4702
4670
|
if (recoveryUserId) {
|
|
4703
|
-
return /* @__PURE__ */ (0,
|
|
4671
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4704
4672
|
DialogContent,
|
|
4705
4673
|
{
|
|
4706
4674
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4707
4675
|
hideClose: true,
|
|
4708
4676
|
children: [
|
|
4709
|
-
/* @__PURE__ */ (0,
|
|
4710
|
-
/* @__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 })
|
|
4711
4679
|
]
|
|
4712
4680
|
}
|
|
4713
4681
|
) });
|
|
4714
4682
|
}
|
|
4715
4683
|
if (step === "display-name") {
|
|
4716
|
-
return /* @__PURE__ */ (0,
|
|
4684
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4717
4685
|
DialogContent,
|
|
4718
4686
|
{
|
|
4719
4687
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4723,8 +4691,8 @@ var init_AuthModal = __esm({
|
|
|
4723
4691
|
},
|
|
4724
4692
|
hideClose: true,
|
|
4725
4693
|
children: [
|
|
4726
|
-
/* @__PURE__ */ (0,
|
|
4727
|
-
/* @__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)(
|
|
4728
4696
|
DisplayNameInput,
|
|
4729
4697
|
{
|
|
4730
4698
|
onComplete: async () => {
|
|
@@ -4757,24 +4725,8 @@ var init_AuthModal = __esm({
|
|
|
4757
4725
|
}
|
|
4758
4726
|
) });
|
|
4759
4727
|
}
|
|
4760
|
-
if (step === "success") {
|
|
4761
|
-
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
4762
|
-
DialogContent,
|
|
4763
|
-
{
|
|
4764
|
-
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4765
|
-
style: {
|
|
4766
|
-
borderRadius: config.ui.modal?.borderRadius || "24px",
|
|
4767
|
-
maxWidth: config.ui.modal?.width || "400px"
|
|
4768
|
-
},
|
|
4769
|
-
children: [
|
|
4770
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogTitle, { className: "sr-only", children: "Authentication Success" }),
|
|
4771
|
-
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "p-8", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SuccessScreen, {}) })
|
|
4772
|
-
]
|
|
4773
|
-
}
|
|
4774
|
-
) });
|
|
4775
|
-
}
|
|
4776
4728
|
if (step === "failed") {
|
|
4777
|
-
return /* @__PURE__ */ (0,
|
|
4729
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4778
4730
|
DialogContent,
|
|
4779
4731
|
{
|
|
4780
4732
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4783,14 +4735,14 @@ var init_AuthModal = __esm({
|
|
|
4783
4735
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4784
4736
|
},
|
|
4785
4737
|
children: [
|
|
4786
|
-
/* @__PURE__ */ (0,
|
|
4787
|
-
/* @__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 }) })
|
|
4788
4740
|
]
|
|
4789
4741
|
}
|
|
4790
4742
|
) });
|
|
4791
4743
|
}
|
|
4792
4744
|
if (step === "verify") {
|
|
4793
|
-
return /* @__PURE__ */ (0,
|
|
4745
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open: open && !iframeVisible, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4794
4746
|
DialogContent,
|
|
4795
4747
|
{
|
|
4796
4748
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4799,17 +4751,17 @@ var init_AuthModal = __esm({
|
|
|
4799
4751
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4800
4752
|
},
|
|
4801
4753
|
children: [
|
|
4802
|
-
/* @__PURE__ */ (0,
|
|
4803
|
-
/* @__PURE__ */ (0,
|
|
4804
|
-
/* @__PURE__ */ (0,
|
|
4805
|
-
/* @__PURE__ */ (0,
|
|
4806
|
-
/* @__PURE__ */ (0,
|
|
4807
|
-
/* @__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: [
|
|
4808
4760
|
"We sent a verification code to",
|
|
4809
|
-
/* @__PURE__ */ (0,
|
|
4810
|
-
/* @__PURE__ */ (0,
|
|
4761
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("br", {}),
|
|
4762
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "font-semibold", children: email })
|
|
4811
4763
|
] }),
|
|
4812
|
-
/* @__PURE__ */ (0,
|
|
4764
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4813
4765
|
VerificationCodeInput,
|
|
4814
4766
|
{
|
|
4815
4767
|
onVerifyCode: verifyCode,
|
|
@@ -4819,10 +4771,10 @@ var init_AuthModal = __esm({
|
|
|
4819
4771
|
error: verificationError
|
|
4820
4772
|
}
|
|
4821
4773
|
),
|
|
4822
|
-
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: [
|
|
4823
4775
|
"protected by \u26A1",
|
|
4824
4776
|
" ",
|
|
4825
|
-
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 })
|
|
4826
4778
|
] })
|
|
4827
4779
|
] })
|
|
4828
4780
|
]
|
|
@@ -4830,7 +4782,7 @@ var init_AuthModal = __esm({
|
|
|
4830
4782
|
) });
|
|
4831
4783
|
}
|
|
4832
4784
|
if (step === "telegram") {
|
|
4833
|
-
return /* @__PURE__ */ (0,
|
|
4785
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4834
4786
|
DialogContent,
|
|
4835
4787
|
{
|
|
4836
4788
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-visible ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4839,16 +4791,16 @@ var init_AuthModal = __esm({
|
|
|
4839
4791
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4840
4792
|
},
|
|
4841
4793
|
children: [
|
|
4842
|
-
/* @__PURE__ */ (0,
|
|
4843
|
-
/* @__PURE__ */ (0,
|
|
4844
|
-
/* @__PURE__ */ (0,
|
|
4845
|
-
/* @__PURE__ */ (0,
|
|
4846
|
-
/* @__PURE__ */ (0,
|
|
4847
|
-
/* @__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" })
|
|
4848
4800
|
] }),
|
|
4849
|
-
/* @__PURE__ */ (0,
|
|
4850
|
-
isLoading && /* @__PURE__ */ (0,
|
|
4851
|
-
/* @__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)(
|
|
4852
4804
|
Button,
|
|
4853
4805
|
{
|
|
4854
4806
|
variant: "outline",
|
|
@@ -4862,24 +4814,24 @@ var init_AuthModal = __esm({
|
|
|
4862
4814
|
}
|
|
4863
4815
|
) });
|
|
4864
4816
|
}
|
|
4865
|
-
return /* @__PURE__ */ (0,
|
|
4866
|
-
/* @__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)(
|
|
4867
4819
|
DialogContent,
|
|
4868
4820
|
{
|
|
4869
4821
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden`,
|
|
4870
4822
|
children: [
|
|
4871
|
-
/* @__PURE__ */ (0,
|
|
4872
|
-
/* @__PURE__ */ (0,
|
|
4873
|
-
/* @__PURE__ */ (0,
|
|
4874
|
-
/* @__PURE__ */ (0,
|
|
4875
|
-
/* @__PURE__ */ (0,
|
|
4876
|
-
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: [
|
|
4877
4829
|
"protected by",
|
|
4878
4830
|
" ",
|
|
4879
|
-
/* @__PURE__ */ (0,
|
|
4831
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "font-semibold", children: [
|
|
4880
4832
|
"\u26A1",
|
|
4881
4833
|
" ",
|
|
4882
|
-
config.ui.branding.link ? /* @__PURE__ */ (0,
|
|
4834
|
+
config.ui.branding.link ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4883
4835
|
"a",
|
|
4884
4836
|
{
|
|
4885
4837
|
href: config.ui.branding.link.url,
|
|
@@ -4892,7 +4844,7 @@ var init_AuthModal = __esm({
|
|
|
4892
4844
|
] })
|
|
4893
4845
|
] })
|
|
4894
4846
|
] }),
|
|
4895
|
-
/* @__PURE__ */ (0,
|
|
4847
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "space-y-4", children: [
|
|
4896
4848
|
(() => {
|
|
4897
4849
|
const order = config.ui.authOrder || ["passkey", "email", "social"];
|
|
4898
4850
|
const isPasskey = config.passkey.enabled;
|
|
@@ -4903,8 +4855,8 @@ var init_AuthModal = __esm({
|
|
|
4903
4855
|
);
|
|
4904
4856
|
const renderSection = (kind) => {
|
|
4905
4857
|
if (kind === "passkey") {
|
|
4906
|
-
return /* @__PURE__ */ (0,
|
|
4907
|
-
/* @__PURE__ */ (0,
|
|
4858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "space-y-3", children: [
|
|
4859
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
4908
4860
|
Button,
|
|
4909
4861
|
{
|
|
4910
4862
|
variant: "plain",
|
|
@@ -4912,14 +4864,14 @@ var init_AuthModal = __esm({
|
|
|
4912
4864
|
disabled: isLoading,
|
|
4913
4865
|
className: `w-full h-14 ${theme.primaryBtn} rounded-2xl font-semibold shadow-sm`,
|
|
4914
4866
|
children: [
|
|
4915
|
-
/* @__PURE__ */ (0,
|
|
4867
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.Fingerprint, { className: "w-5 h-5 mr-2" }),
|
|
4916
4868
|
"Sign in with existing Passkey"
|
|
4917
4869
|
]
|
|
4918
4870
|
}
|
|
4919
4871
|
),
|
|
4920
|
-
config.passkey.showCreateButton && /* @__PURE__ */ (0,
|
|
4921
|
-
/* @__PURE__ */ (0,
|
|
4922
|
-
/* @__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)(
|
|
4923
4875
|
Button,
|
|
4924
4876
|
{
|
|
4925
4877
|
variant: "plain",
|
|
@@ -4927,23 +4879,23 @@ var init_AuthModal = __esm({
|
|
|
4927
4879
|
disabled: isLoading,
|
|
4928
4880
|
className: `w-full h-12 ${theme.outlineBtn} rounded-xl font-medium border`,
|
|
4929
4881
|
children: [
|
|
4930
|
-
/* @__PURE__ */ (0,
|
|
4882
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react5.KeyRound, { className: "w-5 h-5 mr-2" }),
|
|
4931
4883
|
"Create Passkey"
|
|
4932
4884
|
]
|
|
4933
4885
|
}
|
|
4934
4886
|
)
|
|
4935
4887
|
] }),
|
|
4936
|
-
(passkeyError || passkeyStatus !== "idle") && /* @__PURE__ */ (0,
|
|
4937
|
-
passkeyError && /* @__PURE__ */ (0,
|
|
4938
|
-
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 })
|
|
4939
4891
|
] })
|
|
4940
4892
|
] }, "passkey");
|
|
4941
4893
|
}
|
|
4942
4894
|
if (kind === "email") {
|
|
4943
|
-
return /* @__PURE__ */ (0,
|
|
4944
|
-
/* @__PURE__ */ (0,
|
|
4945
|
-
/* @__PURE__ */ (0,
|
|
4946
|
-
/* @__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)(
|
|
4947
4899
|
Input,
|
|
4948
4900
|
{
|
|
4949
4901
|
type: "email",
|
|
@@ -4954,7 +4906,7 @@ var init_AuthModal = __esm({
|
|
|
4954
4906
|
}
|
|
4955
4907
|
)
|
|
4956
4908
|
] }),
|
|
4957
|
-
/* @__PURE__ */ (0,
|
|
4909
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4958
4910
|
Button,
|
|
4959
4911
|
{
|
|
4960
4912
|
variant: "plain",
|
|
@@ -4964,10 +4916,10 @@ var init_AuthModal = __esm({
|
|
|
4964
4916
|
children: isLoading ? "Sending..." : config.email.buttonText
|
|
4965
4917
|
}
|
|
4966
4918
|
),
|
|
4967
|
-
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 })
|
|
4968
4920
|
] }, "email");
|
|
4969
4921
|
}
|
|
4970
|
-
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) => {
|
|
4971
4923
|
const fallbackMap = {
|
|
4972
4924
|
google: GoogleIcon,
|
|
4973
4925
|
telegram: TelegramIcon,
|
|
@@ -4977,7 +4929,7 @@ var init_AuthModal = __esm({
|
|
|
4977
4929
|
};
|
|
4978
4930
|
const IconComponent = provider.icon ?? fallbackMap[(provider.id || "").toLowerCase()];
|
|
4979
4931
|
const handleClick = provider.id === "telegram" ? handleTelegramAuth : () => handleComingSoon(provider.name);
|
|
4980
|
-
return /* @__PURE__ */ (0,
|
|
4932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
4981
4933
|
Button,
|
|
4982
4934
|
{
|
|
4983
4935
|
variant: "outline",
|
|
@@ -4985,7 +4937,7 @@ var init_AuthModal = __esm({
|
|
|
4985
4937
|
onClick: handleClick,
|
|
4986
4938
|
disabled: isLoading,
|
|
4987
4939
|
title: provider.comingSoon ? `${provider.name} (Coming Soon)` : provider.name,
|
|
4988
|
-
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 })
|
|
4989
4941
|
},
|
|
4990
4942
|
provider.id
|
|
4991
4943
|
);
|
|
@@ -4995,10 +4947,10 @@ var init_AuthModal = __esm({
|
|
|
4995
4947
|
enabled.forEach((kind, idx) => {
|
|
4996
4948
|
if (idx > 0) {
|
|
4997
4949
|
nodes.push(
|
|
4998
|
-
/* @__PURE__ */ (0,
|
|
4999
|
-
/* @__PURE__ */ (0,
|
|
5000
|
-
/* @__PURE__ */ (0,
|
|
5001
|
-
/* @__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}` })
|
|
5002
4954
|
] }, `div-${idx}`)
|
|
5003
4955
|
);
|
|
5004
4956
|
}
|
|
@@ -5006,10 +4958,10 @@ var init_AuthModal = __esm({
|
|
|
5006
4958
|
});
|
|
5007
4959
|
return nodes;
|
|
5008
4960
|
})(),
|
|
5009
|
-
/* @__PURE__ */ (0,
|
|
4961
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: `text-center mt-6 text-sm ${theme.mutedText} font-medium font-sans`, children: [
|
|
5010
4962
|
"By signing in, you agree to the",
|
|
5011
4963
|
" ",
|
|
5012
|
-
/* @__PURE__ */ (0,
|
|
4964
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
5013
4965
|
"button",
|
|
5014
4966
|
{
|
|
5015
4967
|
onClick: () => setShowTerms(true),
|
|
@@ -5023,8 +4975,8 @@ var init_AuthModal = __esm({
|
|
|
5023
4975
|
]
|
|
5024
4976
|
}
|
|
5025
4977
|
) }),
|
|
5026
|
-
/* @__PURE__ */ (0,
|
|
5027
|
-
/* @__PURE__ */ (0,
|
|
4978
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(TermsOfService, { open: showTerms, onOpenChange: setShowTerms }),
|
|
4979
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ErrorAlert2, {})
|
|
5028
4980
|
] });
|
|
5029
4981
|
};
|
|
5030
4982
|
}
|
|
@@ -5682,7 +5634,7 @@ __export(index_exports, {
|
|
|
5682
5634
|
module.exports = __toCommonJS(index_exports);
|
|
5683
5635
|
|
|
5684
5636
|
// src/styles/built.css
|
|
5685
|
-
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-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-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}';
|
|
5686
5638
|
|
|
5687
5639
|
// src/index.ts
|
|
5688
5640
|
init_LumiaPassportContext();
|
|
@@ -6068,7 +6020,7 @@ var WalletConnectHandler = ({
|
|
|
6068
6020
|
};
|
|
6069
6021
|
|
|
6070
6022
|
// src/internal/components/ManageWallet.tsx
|
|
6071
|
-
var
|
|
6023
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
6072
6024
|
var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
6073
6025
|
const [providers, setProviders] = (0, import_react11.useState)([]);
|
|
6074
6026
|
const [loading, setLoading] = (0, import_react11.useState)(false);
|
|
@@ -6215,8 +6167,8 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6215
6167
|
setLinkIsLoading(false);
|
|
6216
6168
|
}
|
|
6217
6169
|
};
|
|
6218
|
-
return /* @__PURE__ */ (0,
|
|
6219
|
-
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)(
|
|
6220
6172
|
WalletConnectHandler,
|
|
6221
6173
|
{
|
|
6222
6174
|
isLinking: isWalletLinking,
|
|
@@ -6249,79 +6201,79 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6249
6201
|
onLoadingChange: setLinkIsLoading
|
|
6250
6202
|
}
|
|
6251
6203
|
),
|
|
6252
|
-
/* @__PURE__ */ (0,
|
|
6204
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Dialog, { open, onOpenChange: (newOpen) => {
|
|
6253
6205
|
onOpenChange(newOpen);
|
|
6254
6206
|
if (!newOpen) {
|
|
6255
6207
|
setIsWalletLinking(false);
|
|
6256
6208
|
}
|
|
6257
6209
|
}, children: [
|
|
6258
|
-
/* @__PURE__ */ (0,
|
|
6259
|
-
/* @__PURE__ */ (0,
|
|
6260
|
-
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)(
|
|
6261
6213
|
"button",
|
|
6262
6214
|
{
|
|
6263
6215
|
onClick: onBack,
|
|
6264
6216
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6265
6217
|
title: "Back",
|
|
6266
|
-
children: /* @__PURE__ */ (0,
|
|
6218
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.ArrowLeft, { className: "h-4 w-4" })
|
|
6267
6219
|
}
|
|
6268
6220
|
),
|
|
6269
|
-
/* @__PURE__ */ (0,
|
|
6270
|
-
/* @__PURE__ */ (0,
|
|
6271
|
-
/* @__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" })
|
|
6272
6224
|
] })
|
|
6273
6225
|
] }) }),
|
|
6274
|
-
/* @__PURE__ */ (0,
|
|
6275
|
-
error && /* @__PURE__ */ (0,
|
|
6276
|
-
/* @__PURE__ */ (0,
|
|
6277
|
-
/* @__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 })
|
|
6278
6230
|
] }),
|
|
6279
|
-
loading ? /* @__PURE__ */ (0,
|
|
6280
|
-
/* @__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" }),
|
|
6281
6233
|
"Loading authentication providers\u2026"
|
|
6282
|
-
] }) : /* @__PURE__ */ (0,
|
|
6234
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mt-3 space-y-3", children: providers.map((p) => {
|
|
6283
6235
|
const info = getProviderDisplayInfo(p.provider);
|
|
6284
6236
|
const allowUnlink = canUnlink(p);
|
|
6285
|
-
return /* @__PURE__ */ (0,
|
|
6286
|
-
/* @__PURE__ */ (0,
|
|
6287
|
-
/* @__PURE__ */ (0,
|
|
6288
|
-
/* @__PURE__ */ (0,
|
|
6289
|
-
/* @__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 })
|
|
6290
6242
|
] }),
|
|
6291
|
-
/* @__PURE__ */ (0,
|
|
6292
|
-
p.verified ? /* @__PURE__ */ (0,
|
|
6293
|
-
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)(
|
|
6294
6246
|
"button",
|
|
6295
6247
|
{
|
|
6296
6248
|
onClick: () => setConfirmUnlink({ provider: p.provider, providerName: info.name, externalId: p.externalId }),
|
|
6297
6249
|
className: `p-1 ${isDark ? "text-red-400 hover:text-red-300" : "text-red-500 hover:text-red-700"}`,
|
|
6298
6250
|
title: "Remove provider",
|
|
6299
|
-
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" })
|
|
6300
6252
|
}
|
|
6301
6253
|
)
|
|
6302
6254
|
] })
|
|
6303
6255
|
] }),
|
|
6304
|
-
/* @__PURE__ */ (0,
|
|
6305
|
-
/* @__PURE__ */ (0,
|
|
6306
|
-
/* @__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"}` }),
|
|
6307
6259
|
"Linked: ",
|
|
6308
6260
|
formatDate(p.linkedAt)
|
|
6309
6261
|
] }),
|
|
6310
|
-
p.lastUsedAt && /* @__PURE__ */ (0,
|
|
6311
|
-
/* @__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"}` }),
|
|
6312
6264
|
"Last used: ",
|
|
6313
6265
|
formatDate(p.lastUsedAt)
|
|
6314
6266
|
] }),
|
|
6315
|
-
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: [
|
|
6316
6268
|
"ID: ",
|
|
6317
6269
|
p.externalId
|
|
6318
6270
|
] })
|
|
6319
6271
|
] })
|
|
6320
6272
|
] }, `${p.provider}-${p.externalId}`);
|
|
6321
6273
|
}) }),
|
|
6322
|
-
/* @__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" }) })
|
|
6323
6275
|
] }) }),
|
|
6324
|
-
/* @__PURE__ */ (0,
|
|
6276
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Dialog, { open: showAdd, onOpenChange: (v) => {
|
|
6325
6277
|
setShowAdd(v);
|
|
6326
6278
|
if (!v) {
|
|
6327
6279
|
setProviderType(null);
|
|
@@ -6329,9 +6281,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6329
6281
|
setEmailCode("");
|
|
6330
6282
|
setEmailCodeSent(false);
|
|
6331
6283
|
}
|
|
6332
|
-
}, children: /* @__PURE__ */ (0,
|
|
6333
|
-
/* @__PURE__ */ (0,
|
|
6334
|
-
/* @__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)(
|
|
6335
6287
|
"button",
|
|
6336
6288
|
{
|
|
6337
6289
|
onClick: () => {
|
|
@@ -6347,27 +6299,27 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6347
6299
|
},
|
|
6348
6300
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6349
6301
|
title: "Back",
|
|
6350
|
-
children: /* @__PURE__ */ (0,
|
|
6302
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.ArrowLeft, { className: "h-4 w-4" })
|
|
6351
6303
|
}
|
|
6352
6304
|
),
|
|
6353
|
-
/* @__PURE__ */ (0,
|
|
6305
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogTitle, { className: `text-xl font-semibold ${theme.titleText}`, children: "Add Authentication Method" })
|
|
6354
6306
|
] }),
|
|
6355
|
-
/* @__PURE__ */ (0,
|
|
6356
|
-
!providerType ? /* @__PURE__ */ (0,
|
|
6357
|
-
config.passkey.enabled && /* @__PURE__ */ (0,
|
|
6358
|
-
/* @__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" }),
|
|
6359
6311
|
"Link with Passkey"
|
|
6360
6312
|
] }),
|
|
6361
|
-
config.passkey.enabled && (config.email.enabled || config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ (0,
|
|
6362
|
-
config.email.enabled && /* @__PURE__ */ (0,
|
|
6363
|
-
/* @__PURE__ */ (0,
|
|
6364
|
-
/* @__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: () => {
|
|
6365
6317
|
setProviderType("email");
|
|
6366
6318
|
handleSendCode();
|
|
6367
6319
|
}, disabled: !email, className: "w-full", size: "lg", variant: "secondary", children: "Continue" })
|
|
6368
6320
|
] }),
|
|
6369
|
-
(config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ (0,
|
|
6370
|
-
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)(
|
|
6371
6323
|
Button,
|
|
6372
6324
|
{
|
|
6373
6325
|
onClick: () => {
|
|
@@ -6383,24 +6335,24 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6383
6335
|
size: "lg",
|
|
6384
6336
|
variant: "outline",
|
|
6385
6337
|
children: [
|
|
6386
|
-
/* @__PURE__ */ (0,
|
|
6338
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Wallet, { className: "w-4 h-4 mr-2" }),
|
|
6387
6339
|
"Connect External Wallet"
|
|
6388
6340
|
]
|
|
6389
6341
|
}
|
|
6390
6342
|
),
|
|
6391
|
-
config.wallet?.enabled && config.social.enabled && config.social.providers.some((p) => p.enabled) && /* @__PURE__ */ (0,
|
|
6392
|
-
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) => {
|
|
6393
6345
|
const map = { google: GoogleIcon, telegram: TelegramIcon, twitter: TwitterIcon, x: TwitterIcon, discord: DiscordIcon };
|
|
6394
6346
|
const F = sp.icon || map[sp.id.toLowerCase()];
|
|
6395
|
-
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);
|
|
6396
6348
|
}) })
|
|
6397
|
-
] }) : /* @__PURE__ */ (0,
|
|
6398
|
-
providerType === "email" && emailCodeSent && /* @__PURE__ */ (0,
|
|
6399
|
-
/* @__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: [
|
|
6400
6352
|
"Verification code sent to ",
|
|
6401
6353
|
email
|
|
6402
6354
|
] }),
|
|
6403
|
-
/* @__PURE__ */ (0,
|
|
6355
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6404
6356
|
VerificationCodeInput,
|
|
6405
6357
|
{
|
|
6406
6358
|
onVerifyCode: handleVerifyCode,
|
|
@@ -6411,9 +6363,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6411
6363
|
}
|
|
6412
6364
|
)
|
|
6413
6365
|
] }),
|
|
6414
|
-
providerType === "passkey" && /* @__PURE__ */ (0,
|
|
6415
|
-
/* @__PURE__ */ (0,
|
|
6416
|
-
/* @__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)(
|
|
6417
6369
|
Button,
|
|
6418
6370
|
{
|
|
6419
6371
|
onClick: async () => {
|
|
@@ -6443,12 +6395,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6443
6395
|
size: "lg",
|
|
6444
6396
|
disabled: linkIsLoading,
|
|
6445
6397
|
children: [
|
|
6446
|
-
/* @__PURE__ */ (0,
|
|
6398
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react6.Key, { className: "w-4 h-4 mr-2" }),
|
|
6447
6399
|
linkIsLoading ? "Linking\u2026" : "Create on This Device"
|
|
6448
6400
|
]
|
|
6449
6401
|
}
|
|
6450
6402
|
),
|
|
6451
|
-
/* @__PURE__ */ (0,
|
|
6403
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6452
6404
|
Button,
|
|
6453
6405
|
{
|
|
6454
6406
|
onClick: async () => {
|
|
@@ -6481,13 +6433,13 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6481
6433
|
children: "Create on Security Key"
|
|
6482
6434
|
}
|
|
6483
6435
|
),
|
|
6484
|
-
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 })
|
|
6485
6437
|
] }),
|
|
6486
|
-
providerType === "telegram" && /* @__PURE__ */ (0,
|
|
6487
|
-
/* @__PURE__ */ (0,
|
|
6488
|
-
/* @__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" })
|
|
6489
6441
|
] }),
|
|
6490
|
-
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: [
|
|
6491
6443
|
"Linking with ",
|
|
6492
6444
|
providerType.charAt(0).toUpperCase() + providerType.slice(1),
|
|
6493
6445
|
" requires OAuth implementation. This would typically redirect to ",
|
|
@@ -6496,23 +6448,23 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6496
6448
|
] })
|
|
6497
6449
|
] })
|
|
6498
6450
|
] }) }) }),
|
|
6499
|
-
/* @__PURE__ */ (0,
|
|
6451
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Dialog, { open: !!confirmUnlink, onOpenChange: (v) => {
|
|
6500
6452
|
if (!v) {
|
|
6501
6453
|
setConfirmUnlink(null);
|
|
6502
6454
|
setConfirmInput("");
|
|
6503
6455
|
}
|
|
6504
|
-
}, children: /* @__PURE__ */ (0,
|
|
6505
|
-
/* @__PURE__ */ (0,
|
|
6506
|
-
/* @__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: [
|
|
6507
6459
|
"This will permanently unlink ",
|
|
6508
6460
|
confirmUnlink?.providerName,
|
|
6509
6461
|
" from your account. You may lose access if this is your only verified method."
|
|
6510
6462
|
] }),
|
|
6511
|
-
/* @__PURE__ */ (0,
|
|
6512
|
-
confirmUnlink && /* @__PURE__ */ (0,
|
|
6513
|
-
/* @__PURE__ */ (0,
|
|
6514
|
-
/* @__PURE__ */ (0,
|
|
6515
|
-
/* @__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)(
|
|
6516
6468
|
Input,
|
|
6517
6469
|
{
|
|
6518
6470
|
value: confirmInput,
|
|
@@ -6522,12 +6474,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6522
6474
|
}
|
|
6523
6475
|
)
|
|
6524
6476
|
] }),
|
|
6525
|
-
/* @__PURE__ */ (0,
|
|
6526
|
-
/* @__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: () => {
|
|
6527
6479
|
setConfirmUnlink(null);
|
|
6528
6480
|
setConfirmInput("");
|
|
6529
6481
|
}, disabled: !!unlinking, children: "Cancel" }),
|
|
6530
|
-
/* @__PURE__ */ (0,
|
|
6482
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
6531
6483
|
Button,
|
|
6532
6484
|
{
|
|
6533
6485
|
onClick: () => confirmUnlink && handleUnlink(confirmUnlink.provider, confirmUnlink.externalId),
|
|
@@ -6552,7 +6504,7 @@ init_vaultClient();
|
|
|
6552
6504
|
var import_lucide_react7 = require("lucide-react");
|
|
6553
6505
|
init_LumiaPassportContext();
|
|
6554
6506
|
init_useTheme();
|
|
6555
|
-
var
|
|
6507
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
6556
6508
|
var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
6557
6509
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
6558
6510
|
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -6631,179 +6583,179 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6631
6583
|
console.error("[SecurityModal] Error removing trusted app:", error);
|
|
6632
6584
|
}
|
|
6633
6585
|
};
|
|
6634
|
-
return /* @__PURE__ */ (0,
|
|
6635
|
-
/* @__PURE__ */ (0,
|
|
6636
|
-
/* @__PURE__ */ (0,
|
|
6637
|
-
/* @__PURE__ */ (0,
|
|
6638
|
-
/* @__PURE__ */ (0,
|
|
6639
|
-
/* @__PURE__ */ (0,
|
|
6640
|
-
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)(
|
|
6641
6593
|
"button",
|
|
6642
6594
|
{
|
|
6643
6595
|
onClick: onBack,
|
|
6644
|
-
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"}`,
|
|
6645
6597
|
title: "Back",
|
|
6646
|
-
children: /* @__PURE__ */ (0,
|
|
6598
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.ArrowLeft, { className: "h-4 w-4" })
|
|
6647
6599
|
}
|
|
6648
6600
|
),
|
|
6649
|
-
/* @__PURE__ */ (0,
|
|
6650
|
-
/* @__PURE__ */ (0,
|
|
6651
|
-
/* @__PURE__ */ (0,
|
|
6652
|
-
/* @__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" : ""}` }) })
|
|
6653
6605
|
] })
|
|
6654
6606
|
] }) }),
|
|
6655
|
-
/* @__PURE__ */ (0,
|
|
6656
|
-
/* @__PURE__ */ (0,
|
|
6657
|
-
/* @__PURE__ */ (0,
|
|
6658
|
-
/* @__PURE__ */ (0,
|
|
6659
|
-
/* @__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" })
|
|
6660
6612
|
] }),
|
|
6661
|
-
/* @__PURE__ */ (0,
|
|
6662
|
-
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" }),
|
|
6663
6615
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
6664
6616
|
] })
|
|
6665
6617
|
] }),
|
|
6666
|
-
/* @__PURE__ */ (0,
|
|
6667
|
-
/* @__PURE__ */ (0,
|
|
6668
|
-
/* @__PURE__ */ (0,
|
|
6669
|
-
/* @__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" })
|
|
6670
6622
|
] }),
|
|
6671
|
-
/* @__PURE__ */ (0,
|
|
6672
|
-
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" }),
|
|
6673
6625
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
6674
6626
|
] })
|
|
6675
6627
|
] }),
|
|
6676
|
-
/* @__PURE__ */ (0,
|
|
6677
|
-
/* @__PURE__ */ (0,
|
|
6678
|
-
/* @__PURE__ */ (0,
|
|
6679
|
-
/* @__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" })
|
|
6680
6632
|
] }),
|
|
6681
|
-
/* @__PURE__ */ (0,
|
|
6682
|
-
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" }),
|
|
6683
6635
|
hasServerBackup ? "Ready" : "None"
|
|
6684
6636
|
] })
|
|
6685
6637
|
] })
|
|
6686
6638
|
] }),
|
|
6687
|
-
localInfo?.hasKeyshare && /* @__PURE__ */ (0,
|
|
6688
|
-
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: [
|
|
6689
6641
|
"Owner: ",
|
|
6690
|
-
/* @__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 })
|
|
6691
6643
|
] }),
|
|
6692
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0,
|
|
6644
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6693
6645
|
"Size: ",
|
|
6694
|
-
/* @__PURE__ */ (0,
|
|
6646
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("span", { className: `font-mono ${isDark ? "text-gray-200" : "text-gray-800"}`, children: [
|
|
6695
6647
|
Math.round((localInfo.keyshareSize || 0) / 1024),
|
|
6696
6648
|
"KB"
|
|
6697
6649
|
] })
|
|
6698
6650
|
] }),
|
|
6699
|
-
localInfo.sessionId && /* @__PURE__ */ (0,
|
|
6651
|
+
localInfo.sessionId && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6700
6652
|
"Session: ",
|
|
6701
|
-
/* @__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 })
|
|
6702
6654
|
] })
|
|
6703
6655
|
] }),
|
|
6704
|
-
/* @__PURE__ */ (0,
|
|
6705
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0,
|
|
6706
|
-
/* @__PURE__ */ (0,
|
|
6707
|
-
/* @__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: [
|
|
6708
6660
|
"Server: ",
|
|
6709
6661
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
6710
6662
|
] })
|
|
6711
6663
|
] }),
|
|
6712
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
6713
|
-
/* @__PURE__ */ (0,
|
|
6714
|
-
/* @__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: [
|
|
6715
6667
|
"Server: ",
|
|
6716
6668
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
6717
6669
|
] })
|
|
6718
6670
|
] }),
|
|
6719
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0,
|
|
6720
|
-
/* @__PURE__ */ (0,
|
|
6721
|
-
/* @__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: [
|
|
6722
6674
|
"Cloud: ",
|
|
6723
6675
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
6724
6676
|
] })
|
|
6725
6677
|
] }),
|
|
6726
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0,
|
|
6727
|
-
/* @__PURE__ */ (0,
|
|
6728
|
-
/* @__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: [
|
|
6729
6681
|
"Local: ",
|
|
6730
6682
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
6731
6683
|
] })
|
|
6732
6684
|
] })
|
|
6733
6685
|
] }),
|
|
6734
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0,
|
|
6735
|
-
/* @__PURE__ */ (0,
|
|
6736
|
-
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: [
|
|
6737
6689
|
"Created: ",
|
|
6738
6690
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
6739
6691
|
" "
|
|
6740
6692
|
] }),
|
|
6741
|
-
recoveryCountry && /* @__PURE__ */ (0,
|
|
6693
|
+
recoveryCountry && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6742
6694
|
"Country: ",
|
|
6743
6695
|
recoveryCountry
|
|
6744
6696
|
] }),
|
|
6745
|
-
recoveryBrowser && /* @__PURE__ */ (0,
|
|
6697
|
+
recoveryBrowser && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6746
6698
|
"Browser: ",
|
|
6747
6699
|
recoveryBrowser
|
|
6748
6700
|
] }),
|
|
6749
|
-
parseOS(recoveryUa) && /* @__PURE__ */ (0,
|
|
6701
|
+
parseOS(recoveryUa) && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6750
6702
|
"OS: ",
|
|
6751
6703
|
parseOS(recoveryUa)
|
|
6752
6704
|
] }),
|
|
6753
|
-
recoveryDeviceName && /* @__PURE__ */ (0,
|
|
6705
|
+
recoveryDeviceName && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6754
6706
|
"Device: ",
|
|
6755
6707
|
recoveryDeviceName
|
|
6756
6708
|
] }),
|
|
6757
|
-
recoveryDeviceId && /* @__PURE__ */ (0,
|
|
6709
|
+
recoveryDeviceId && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
6758
6710
|
"Device ID: ",
|
|
6759
|
-
/* @__PURE__ */ (0,
|
|
6711
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
6760
6712
|
] })
|
|
6761
6713
|
] }),
|
|
6762
|
-
trustedApps.length > 0 && /* @__PURE__ */ (0,
|
|
6763
|
-
/* @__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: [
|
|
6764
6716
|
"Trusted Applications (",
|
|
6765
6717
|
trustedApps.length,
|
|
6766
6718
|
"):"
|
|
6767
6719
|
] }),
|
|
6768
|
-
/* @__PURE__ */ (0,
|
|
6769
|
-
/* @__PURE__ */ (0,
|
|
6770
|
-
/* @__PURE__ */ (0,
|
|
6771
|
-
/* @__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: [
|
|
6772
6724
|
"Trusted: ",
|
|
6773
6725
|
new Date(app.trustedAt).toLocaleDateString()
|
|
6774
6726
|
] })
|
|
6775
6727
|
] }),
|
|
6776
|
-
/* @__PURE__ */ (0,
|
|
6728
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
6777
6729
|
"button",
|
|
6778
6730
|
{
|
|
6779
6731
|
onClick: () => setAppToRemove({ projectId: app.projectId, origin: app.origin, hostname: new URL(app.origin).hostname }),
|
|
6780
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"}`,
|
|
6781
6733
|
title: "Remove from trusted",
|
|
6782
|
-
children: /* @__PURE__ */ (0,
|
|
6734
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react7.Trash2, { className: "h-3 w-3" })
|
|
6783
6735
|
}
|
|
6784
6736
|
)
|
|
6785
6737
|
] }, index)) })
|
|
6786
6738
|
] })
|
|
6787
6739
|
] })
|
|
6788
6740
|
] }),
|
|
6789
|
-
appToRemove && /* @__PURE__ */ (0,
|
|
6790
|
-
/* @__PURE__ */ (0,
|
|
6791
|
-
/* @__PURE__ */ (0,
|
|
6792
|
-
/* @__PURE__ */ (0,
|
|
6793
|
-
/* @__PURE__ */ (0,
|
|
6794
|
-
/* @__PURE__ */ (0,
|
|
6795
|
-
/* @__PURE__ */ (0,
|
|
6796
|
-
/* @__PURE__ */ (0,
|
|
6797
|
-
/* @__PURE__ */ (0,
|
|
6798
|
-
/* @__PURE__ */ (0,
|
|
6799
|
-
/* @__PURE__ */ (0,
|
|
6800
|
-
/* @__PURE__ */ (0,
|
|
6801
|
-
/* @__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' })
|
|
6802
6754
|
] })
|
|
6803
6755
|
] })
|
|
6804
6756
|
] }),
|
|
6805
|
-
/* @__PURE__ */ (0,
|
|
6806
|
-
/* @__PURE__ */ (0,
|
|
6757
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex gap-2", children: [
|
|
6758
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
6807
6759
|
Button,
|
|
6808
6760
|
{
|
|
6809
6761
|
onClick: () => setAppToRemove(null),
|
|
@@ -6813,7 +6765,7 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6813
6765
|
children: "Cancel"
|
|
6814
6766
|
}
|
|
6815
6767
|
),
|
|
6816
|
-
/* @__PURE__ */ (0,
|
|
6768
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
6817
6769
|
Button,
|
|
6818
6770
|
{
|
|
6819
6771
|
onClick: confirmRemoveTrustedApp,
|
|
@@ -6838,8 +6790,8 @@ init_input();
|
|
|
6838
6790
|
init_iframe_manager();
|
|
6839
6791
|
init_LumiaPassportContext();
|
|
6840
6792
|
init_useTheme();
|
|
6841
|
-
var
|
|
6842
|
-
function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
6793
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
6794
|
+
function KeyshareBackup({ userId, onBackupSuccess, onBack }) {
|
|
6843
6795
|
const { config } = useLumiaPassportConfig();
|
|
6844
6796
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
6845
6797
|
const [backupStatus, setBackupStatus] = React18.useState({
|
|
@@ -6982,27 +6934,36 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
6982
6934
|
const date = new Date(timestamp);
|
|
6983
6935
|
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
6984
6936
|
};
|
|
6985
|
-
return /* @__PURE__ */ (0,
|
|
6986
|
-
/* @__PURE__ */ (0,
|
|
6987
|
-
/* @__PURE__ */ (0,
|
|
6988
|
-
/* @__PURE__ */ (0,
|
|
6989
|
-
|
|
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" })
|
|
6990
6951
|
] }),
|
|
6991
|
-
/* @__PURE__ */ (0,
|
|
6952
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CardDescription, { className: `text-sm mt-1 ${theme.mutedText}`, children: "Secure your keyshare with encrypted backups" })
|
|
6992
6953
|
] }),
|
|
6993
|
-
/* @__PURE__ */ (0,
|
|
6994
|
-
error && /* @__PURE__ */ (0,
|
|
6995
|
-
/* @__PURE__ */ (0,
|
|
6996
|
-
/* @__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 })
|
|
6997
6958
|
] }),
|
|
6998
|
-
success && /* @__PURE__ */ (0,
|
|
6999
|
-
/* @__PURE__ */ (0,
|
|
7000
|
-
/* @__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 })
|
|
7001
6962
|
] }),
|
|
7002
|
-
/* @__PURE__ */ (0,
|
|
7003
|
-
/* @__PURE__ */ (0,
|
|
7004
|
-
/* @__PURE__ */ (0,
|
|
7005
|
-
/* @__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)(
|
|
7006
6967
|
"input",
|
|
7007
6968
|
{
|
|
7008
6969
|
type: "checkbox",
|
|
@@ -7012,42 +6973,45 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7012
6973
|
className: "rounded"
|
|
7013
6974
|
}
|
|
7014
6975
|
),
|
|
7015
|
-
/* @__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" })
|
|
7016
6977
|
] }),
|
|
7017
|
-
!useCustomPassword && /* @__PURE__ */ (0,
|
|
7018
|
-
/* @__PURE__ */ (0,
|
|
7019
|
-
/* @__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" })
|
|
7020
6981
|
] }) }),
|
|
7021
|
-
useCustomPassword && /* @__PURE__ */ (0,
|
|
7022
|
-
/* @__PURE__ */ (0,
|
|
6982
|
+
useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "relative", children: [
|
|
6983
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7023
6984
|
Input,
|
|
7024
6985
|
{
|
|
7025
6986
|
type: showPassword ? "text" : "password",
|
|
7026
6987
|
placeholder: "Enter backup password",
|
|
7027
6988
|
value: customPassword,
|
|
7028
6989
|
onChange: (e) => setCustomPassword(e.target.value),
|
|
7029
|
-
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
|
+
}
|
|
7030
6994
|
}
|
|
7031
6995
|
),
|
|
7032
|
-
/* @__PURE__ */ (0,
|
|
6996
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7033
6997
|
"button",
|
|
7034
6998
|
{
|
|
7035
6999
|
type: "button",
|
|
7036
7000
|
onClick: () => setShowPassword(!showPassword),
|
|
7037
|
-
className: `absolute right-
|
|
7038
|
-
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" })
|
|
7039
7003
|
}
|
|
7040
7004
|
)
|
|
7041
7005
|
] })
|
|
7042
7006
|
] }),
|
|
7043
|
-
/* @__PURE__ */ (0,
|
|
7044
|
-
/* @__PURE__ */ (0,
|
|
7045
|
-
/* @__PURE__ */ (0,
|
|
7046
|
-
/* @__PURE__ */ (0,
|
|
7047
|
-
/* @__PURE__ */ (0,
|
|
7048
|
-
/* @__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" })
|
|
7049
7013
|
] }),
|
|
7050
|
-
/* @__PURE__ */ (0,
|
|
7014
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7051
7015
|
Button,
|
|
7052
7016
|
{
|
|
7053
7017
|
onClick: () => handleBackup("server"),
|
|
@@ -7057,22 +7021,22 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7057
7021
|
}
|
|
7058
7022
|
)
|
|
7059
7023
|
] }),
|
|
7060
|
-
/* @__PURE__ */ (0,
|
|
7061
|
-
/* @__PURE__ */ (0,
|
|
7062
|
-
/* @__PURE__ */ (0,
|
|
7063
|
-
/* @__PURE__ */ (0,
|
|
7064
|
-
/* @__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" })
|
|
7065
7029
|
] }),
|
|
7066
|
-
cloudProviders.length > 1 && /* @__PURE__ */ (0,
|
|
7030
|
+
cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7067
7031
|
"select",
|
|
7068
7032
|
{
|
|
7069
7033
|
value: selectedCloudProvider || "",
|
|
7070
7034
|
onChange: (e) => setSelectedCloudProvider(e.target.value),
|
|
7071
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"}`,
|
|
7072
|
-
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))
|
|
7073
7037
|
}
|
|
7074
7038
|
),
|
|
7075
|
-
/* @__PURE__ */ (0,
|
|
7039
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7076
7040
|
Button,
|
|
7077
7041
|
{
|
|
7078
7042
|
onClick: () => handleBackup("cloud"),
|
|
@@ -7083,13 +7047,13 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7083
7047
|
}
|
|
7084
7048
|
)
|
|
7085
7049
|
] }),
|
|
7086
|
-
/* @__PURE__ */ (0,
|
|
7087
|
-
/* @__PURE__ */ (0,
|
|
7088
|
-
/* @__PURE__ */ (0,
|
|
7089
|
-
/* @__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" })
|
|
7090
7054
|
] }),
|
|
7091
|
-
cloudProviders.length > 1 && /* @__PURE__ */ (0,
|
|
7092
|
-
/* @__PURE__ */ (0,
|
|
7055
|
+
cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-[32px]" }),
|
|
7056
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
7093
7057
|
Button,
|
|
7094
7058
|
{
|
|
7095
7059
|
onClick: () => handleBackup("local"),
|
|
@@ -7102,10 +7066,10 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7102
7066
|
] })
|
|
7103
7067
|
] })
|
|
7104
7068
|
] }),
|
|
7105
|
-
/* @__PURE__ */ (0,
|
|
7106
|
-
/* @__PURE__ */ (0,
|
|
7107
|
-
/* @__PURE__ */ (0,
|
|
7108
|
-
/* @__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:" }),
|
|
7109
7073
|
" All backups are encrypted with AES-256 using your ",
|
|
7110
7074
|
useCustomPassword ? "custom password" : "passkey",
|
|
7111
7075
|
".",
|
|
@@ -7124,7 +7088,7 @@ var import_lucide_react9 = require("lucide-react");
|
|
|
7124
7088
|
init_base();
|
|
7125
7089
|
init_LumiaPassportContext();
|
|
7126
7090
|
init_useTheme();
|
|
7127
|
-
var
|
|
7091
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
7128
7092
|
var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
7129
7093
|
const { address } = useLumiaSession();
|
|
7130
7094
|
const [transactions, setTransactions] = import_react13.default.useState([]);
|
|
@@ -7174,98 +7138,98 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7174
7138
|
}
|
|
7175
7139
|
};
|
|
7176
7140
|
const getStatusIcon = (status) => {
|
|
7177
|
-
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" });
|
|
7178
7142
|
};
|
|
7179
7143
|
const getTransactionIcon = (from, to) => {
|
|
7180
7144
|
const isIncoming = to.toLowerCase() === address?.toLowerCase();
|
|
7181
|
-
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" });
|
|
7182
7146
|
};
|
|
7183
7147
|
const openInExplorer = (txHash) => {
|
|
7184
7148
|
const explorerUrl = getExplorerUrl();
|
|
7185
7149
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
7186
7150
|
};
|
|
7187
|
-
return /* @__PURE__ */ (0,
|
|
7188
|
-
/* @__PURE__ */ (0,
|
|
7189
|
-
/* @__PURE__ */ (0,
|
|
7190
|
-
/* @__PURE__ */ (0,
|
|
7191
|
-
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)(
|
|
7192
7156
|
"button",
|
|
7193
7157
|
{
|
|
7194
7158
|
onClick: onBack,
|
|
7195
7159
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7196
7160
|
title: "Back",
|
|
7197
|
-
children: /* @__PURE__ */ (0,
|
|
7161
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.ArrowLeft, { className: "h-4 w-4" })
|
|
7198
7162
|
}
|
|
7199
7163
|
),
|
|
7200
|
-
/* @__PURE__ */ (0,
|
|
7201
|
-
/* @__PURE__ */ (0,
|
|
7202
|
-
/* @__PURE__ */ (0,
|
|
7203
|
-
/* @__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)(
|
|
7204
7168
|
"button",
|
|
7205
7169
|
{
|
|
7206
7170
|
onClick: loadTransactions,
|
|
7207
7171
|
disabled: loading,
|
|
7208
7172
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7209
7173
|
title: "Refresh transactions",
|
|
7210
|
-
children: /* @__PURE__ */ (0,
|
|
7174
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.RefreshCw, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
|
|
7211
7175
|
}
|
|
7212
7176
|
)
|
|
7213
7177
|
] })
|
|
7214
7178
|
] }) }),
|
|
7215
|
-
/* @__PURE__ */ (0,
|
|
7216
|
-
/* @__PURE__ */ (0,
|
|
7217
|
-
/* @__PURE__ */ (0,
|
|
7218
|
-
] }) : transactions.length === 0 ? /* @__PURE__ */ (0,
|
|
7219
|
-
/* @__PURE__ */ (0,
|
|
7220
|
-
/* @__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: [
|
|
7221
7185
|
"No transactions found",
|
|
7222
|
-
/* @__PURE__ */ (0,
|
|
7223
|
-
/* @__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" })
|
|
7224
7188
|
] })
|
|
7225
|
-
] }) : /* @__PURE__ */ (0,
|
|
7189
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "space-y-3", children: transactions.map((tx) => {
|
|
7226
7190
|
const isIncoming = tx.to.hash.toLowerCase() === address?.toLowerCase();
|
|
7227
7191
|
const displayAddress = isIncoming ? tx.from.hash : tx.to.hash;
|
|
7228
|
-
return /* @__PURE__ */ (0,
|
|
7192
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
7229
7193
|
"div",
|
|
7230
7194
|
{
|
|
7231
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`,
|
|
7232
7196
|
onClick: () => openInExplorer(tx.hash),
|
|
7233
7197
|
children: [
|
|
7234
|
-
/* @__PURE__ */ (0,
|
|
7235
|
-
/* @__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: [
|
|
7236
7200
|
getTransactionIcon(tx.from.hash, tx.to.hash),
|
|
7237
|
-
/* @__PURE__ */ (0,
|
|
7201
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
|
|
7238
7202
|
getStatusIcon(tx.status)
|
|
7239
7203
|
] }),
|
|
7240
|
-
/* @__PURE__ */ (0,
|
|
7204
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
|
|
7241
7205
|
] }),
|
|
7242
|
-
/* @__PURE__ */ (0,
|
|
7243
|
-
/* @__PURE__ */ (0,
|
|
7244
|
-
/* @__PURE__ */ (0,
|
|
7245
|
-
/* @__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: [
|
|
7246
7210
|
formatAddress(displayAddress),
|
|
7247
|
-
(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)" })
|
|
7248
7212
|
] })
|
|
7249
7213
|
] }),
|
|
7250
|
-
/* @__PURE__ */ (0,
|
|
7251
|
-
/* @__PURE__ */ (0,
|
|
7252
|
-
/* @__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: [
|
|
7253
7217
|
formatValue(tx.value),
|
|
7254
7218
|
" LUMIA"
|
|
7255
7219
|
] })
|
|
7256
7220
|
] }),
|
|
7257
|
-
/* @__PURE__ */ (0,
|
|
7258
|
-
/* @__PURE__ */ (0,
|
|
7259
|
-
/* @__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: [
|
|
7260
7224
|
"#",
|
|
7261
7225
|
tx.block_number
|
|
7262
7226
|
] })
|
|
7263
7227
|
] }),
|
|
7264
|
-
tx.method && /* @__PURE__ */ (0,
|
|
7265
|
-
/* @__PURE__ */ (0,
|
|
7266
|
-
/* @__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 })
|
|
7267
7231
|
] }),
|
|
7268
|
-
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)(
|
|
7269
7233
|
"span",
|
|
7270
7234
|
{
|
|
7271
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`,
|
|
@@ -7279,7 +7243,7 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7279
7243
|
tx.hash
|
|
7280
7244
|
);
|
|
7281
7245
|
}) }) }),
|
|
7282
|
-
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: [
|
|
7283
7247
|
"Total: ",
|
|
7284
7248
|
transactions.length,
|
|
7285
7249
|
" transaction",
|
|
@@ -7458,7 +7422,7 @@ var import_lucide_react10 = require("lucide-react");
|
|
|
7458
7422
|
init_base();
|
|
7459
7423
|
init_LumiaPassportContext();
|
|
7460
7424
|
init_useTheme();
|
|
7461
|
-
var
|
|
7425
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
7462
7426
|
var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
7463
7427
|
const { address } = useLumiaSession();
|
|
7464
7428
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
@@ -7477,107 +7441,107 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7477
7441
|
const openInExplorer = (address2) => {
|
|
7478
7442
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address2}`, "_blank");
|
|
7479
7443
|
};
|
|
7480
|
-
return /* @__PURE__ */ (0,
|
|
7481
|
-
/* @__PURE__ */ (0,
|
|
7482
|
-
/* @__PURE__ */ (0,
|
|
7483
|
-
/* @__PURE__ */ (0,
|
|
7484
|
-
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)(
|
|
7485
7449
|
"button",
|
|
7486
7450
|
{
|
|
7487
7451
|
onClick: onBack,
|
|
7488
7452
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7489
7453
|
title: "Back",
|
|
7490
|
-
children: /* @__PURE__ */ (0,
|
|
7454
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ArrowLeft, { className: "h-4 w-4" })
|
|
7491
7455
|
}
|
|
7492
7456
|
),
|
|
7493
|
-
/* @__PURE__ */ (0,
|
|
7494
|
-
/* @__PURE__ */ (0,
|
|
7495
|
-
/* @__PURE__ */ (0,
|
|
7496
|
-
/* @__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)(
|
|
7497
7461
|
"button",
|
|
7498
7462
|
{
|
|
7499
7463
|
onClick: refreshBalances,
|
|
7500
7464
|
disabled: isLoading,
|
|
7501
7465
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7502
7466
|
title: "Refresh balances",
|
|
7503
|
-
children: /* @__PURE__ */ (0,
|
|
7467
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.RefreshCw, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
|
|
7504
7468
|
}
|
|
7505
7469
|
)
|
|
7506
7470
|
] })
|
|
7507
7471
|
] }) }),
|
|
7508
|
-
/* @__PURE__ */ (0,
|
|
7509
|
-
/* @__PURE__ */ (0,
|
|
7510
|
-
/* @__PURE__ */ (0,
|
|
7511
|
-
] }) : /* @__PURE__ */ (0,
|
|
7512
|
-
/* @__PURE__ */ (0,
|
|
7513
|
-
/* @__PURE__ */ (0,
|
|
7514
|
-
/* @__PURE__ */ (0,
|
|
7515
|
-
/* @__PURE__ */ (0,
|
|
7516
|
-
/* @__PURE__ */ (0,
|
|
7517
|
-
/* @__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 })
|
|
7518
7482
|
] })
|
|
7519
7483
|
] }),
|
|
7520
|
-
/* @__PURE__ */ (0,
|
|
7521
|
-
/* @__PURE__ */ (0,
|
|
7522
|
-
/* @__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 })
|
|
7523
7487
|
] })
|
|
7524
7488
|
] }),
|
|
7525
|
-
asset.address && /* @__PURE__ */ (0,
|
|
7526
|
-
/* @__PURE__ */ (0,
|
|
7527
|
-
/* @__PURE__ */ (0,
|
|
7528
|
-
/* @__PURE__ */ (0,
|
|
7529
|
-
/* @__PURE__ */ (0,
|
|
7530
|
-
/* @__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)(
|
|
7531
7495
|
"button",
|
|
7532
7496
|
{
|
|
7533
7497
|
onClick: () => handleCopy(asset.address, "address"),
|
|
7534
7498
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7535
7499
|
title: "Copy address",
|
|
7536
|
-
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" })
|
|
7537
7501
|
}
|
|
7538
7502
|
),
|
|
7539
|
-
/* @__PURE__ */ (0,
|
|
7503
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7540
7504
|
"button",
|
|
7541
7505
|
{
|
|
7542
7506
|
onClick: () => openInExplorer(asset.address),
|
|
7543
7507
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7544
7508
|
title: "View in explorer",
|
|
7545
|
-
children: /* @__PURE__ */ (0,
|
|
7509
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ExternalLink, { className: "w-3 h-3" })
|
|
7546
7510
|
}
|
|
7547
7511
|
)
|
|
7548
7512
|
] })
|
|
7549
7513
|
] }),
|
|
7550
|
-
asset.decimals && /* @__PURE__ */ (0,
|
|
7551
|
-
/* @__PURE__ */ (0,
|
|
7552
|
-
/* @__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 })
|
|
7553
7517
|
] })
|
|
7554
7518
|
] }),
|
|
7555
|
-
asset.type === "native" && address && /* @__PURE__ */ (0,
|
|
7556
|
-
/* @__PURE__ */ (0,
|
|
7557
|
-
/* @__PURE__ */ (0,
|
|
7558
|
-
/* @__PURE__ */ (0,
|
|
7559
|
-
/* @__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)(
|
|
7560
7524
|
"button",
|
|
7561
7525
|
{
|
|
7562
7526
|
onClick: () => handleCopy(address, "wallet"),
|
|
7563
7527
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7564
7528
|
title: "Copy wallet address",
|
|
7565
|
-
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" })
|
|
7566
7530
|
}
|
|
7567
7531
|
),
|
|
7568
|
-
/* @__PURE__ */ (0,
|
|
7532
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
7569
7533
|
"button",
|
|
7570
7534
|
{
|
|
7571
7535
|
onClick: () => openInExplorer(address),
|
|
7572
7536
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7573
7537
|
title: "View in explorer",
|
|
7574
|
-
children: /* @__PURE__ */ (0,
|
|
7538
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ExternalLink, { className: "w-3 h-3" })
|
|
7575
7539
|
}
|
|
7576
7540
|
)
|
|
7577
7541
|
] })
|
|
7578
7542
|
] }) })
|
|
7579
7543
|
] }, `${asset.type}-${asset.address || "native"}-${index}`)) }) }),
|
|
7580
|
-
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: [
|
|
7581
7545
|
"Total: ",
|
|
7582
7546
|
assets.length,
|
|
7583
7547
|
" asset",
|
|
@@ -7672,7 +7636,7 @@ function cn2(...inputs) {
|
|
|
7672
7636
|
}
|
|
7673
7637
|
|
|
7674
7638
|
// src/internal/components/ui/badge.tsx
|
|
7675
|
-
var
|
|
7639
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
7676
7640
|
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
7677
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",
|
|
7678
7642
|
{
|
|
@@ -7692,14 +7656,14 @@ var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
|
7692
7656
|
}
|
|
7693
7657
|
);
|
|
7694
7658
|
function Badge({ className, variant, ...props }) {
|
|
7695
|
-
return /* @__PURE__ */ (0,
|
|
7659
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
7696
7660
|
}
|
|
7697
7661
|
|
|
7698
7662
|
// src/internal/components/Address.tsx
|
|
7699
7663
|
var React22 = __toESM(require("react"), 1);
|
|
7700
7664
|
var import_lucide_react11 = require("lucide-react");
|
|
7701
7665
|
init_button();
|
|
7702
|
-
var
|
|
7666
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
7703
7667
|
function toExplorerAddressUrl(address, chain) {
|
|
7704
7668
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
7705
7669
|
if (!base2) return null;
|
|
@@ -7721,11 +7685,11 @@ var Address = ({
|
|
|
7721
7685
|
const addr = address || "";
|
|
7722
7686
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
7723
7687
|
const [copied, setCopied] = React22.useState(false);
|
|
7724
|
-
if (!addr) return /* @__PURE__ */ (0,
|
|
7725
|
-
return /* @__PURE__ */ (0,
|
|
7726
|
-
label && /* @__PURE__ */ (0,
|
|
7727
|
-
/* @__PURE__ */ (0,
|
|
7728
|
-
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)(
|
|
7729
7693
|
Button,
|
|
7730
7694
|
{
|
|
7731
7695
|
variant: "ghost",
|
|
@@ -7739,10 +7703,10 @@ var Address = ({
|
|
|
7739
7703
|
} catch {
|
|
7740
7704
|
}
|
|
7741
7705
|
},
|
|
7742
|
-
children: /* @__PURE__ */ (0,
|
|
7706
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.Copy, { className: "h-4 w-4" })
|
|
7743
7707
|
}
|
|
7744
7708
|
),
|
|
7745
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
7709
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
7746
7710
|
"a",
|
|
7747
7711
|
{
|
|
7748
7712
|
href: explorer,
|
|
@@ -7750,7 +7714,7 @@ var Address = ({
|
|
|
7750
7714
|
rel: "noreferrer noopener",
|
|
7751
7715
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
7752
7716
|
title: "Open in explorer",
|
|
7753
|
-
children: /* @__PURE__ */ (0,
|
|
7717
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.ExternalLink, { className: "h-4 w-4" })
|
|
7754
7718
|
}
|
|
7755
7719
|
)
|
|
7756
7720
|
] });
|
|
@@ -7758,7 +7722,7 @@ var Address = ({
|
|
|
7758
7722
|
|
|
7759
7723
|
// src/internal/components/UserOpStatus.tsx
|
|
7760
7724
|
init_base();
|
|
7761
|
-
var
|
|
7725
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
7762
7726
|
var UserOpStatus = ({
|
|
7763
7727
|
userOpHash,
|
|
7764
7728
|
chain,
|
|
@@ -7891,54 +7855,54 @@ var UserOpStatus = ({
|
|
|
7891
7855
|
const stateBadge = () => {
|
|
7892
7856
|
if (receipt) {
|
|
7893
7857
|
const ok = !!receipt.success;
|
|
7894
|
-
return /* @__PURE__ */ (0,
|
|
7895
|
-
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" }),
|
|
7896
7860
|
ok ? "Included" : "Failed"
|
|
7897
7861
|
] });
|
|
7898
7862
|
}
|
|
7899
7863
|
if (rejected) {
|
|
7900
|
-
return /* @__PURE__ */ (0,
|
|
7901
|
-
/* @__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" }),
|
|
7902
7866
|
" Rejected by bundler"
|
|
7903
7867
|
] });
|
|
7904
7868
|
}
|
|
7905
7869
|
if (timedOut) {
|
|
7906
|
-
return /* @__PURE__ */ (0,
|
|
7907
|
-
/* @__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" }),
|
|
7908
7872
|
" Timeout - may be rejected"
|
|
7909
7873
|
] });
|
|
7910
7874
|
}
|
|
7911
7875
|
if (mempool) {
|
|
7912
|
-
return /* @__PURE__ */ (0,
|
|
7913
|
-
/* @__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" }),
|
|
7914
7878
|
" Pending in bundler"
|
|
7915
7879
|
] });
|
|
7916
7880
|
}
|
|
7917
|
-
return /* @__PURE__ */ (0,
|
|
7918
|
-
/* @__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" }),
|
|
7919
7883
|
" Waiting"
|
|
7920
7884
|
] });
|
|
7921
7885
|
};
|
|
7922
|
-
return /* @__PURE__ */ (0,
|
|
7886
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
7923
7887
|
"div",
|
|
7924
7888
|
{
|
|
7925
7889
|
className: cn2("lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]", className),
|
|
7926
7890
|
style: { textAlign: "left", listStyle: "none" },
|
|
7927
7891
|
children: [
|
|
7928
|
-
/* @__PURE__ */ (0,
|
|
7929
|
-
/* @__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: [
|
|
7930
7894
|
stateBadge(),
|
|
7931
|
-
/* @__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." })
|
|
7932
7896
|
] }),
|
|
7933
|
-
/* @__PURE__ */ (0,
|
|
7934
|
-
/* @__PURE__ */ (0,
|
|
7935
|
-
/* @__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" })
|
|
7936
7900
|
] })
|
|
7937
7901
|
] }),
|
|
7938
|
-
/* @__PURE__ */ (0,
|
|
7939
|
-
/* @__PURE__ */ (0,
|
|
7940
|
-
/* @__PURE__ */ (0,
|
|
7941
|
-
/* @__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)(
|
|
7942
7906
|
Button,
|
|
7943
7907
|
{
|
|
7944
7908
|
variant: "ghost",
|
|
@@ -7950,14 +7914,14 @@ var UserOpStatus = ({
|
|
|
7950
7914
|
} catch {
|
|
7951
7915
|
}
|
|
7952
7916
|
},
|
|
7953
|
-
children: /* @__PURE__ */ (0,
|
|
7917
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Copy, { className: "h-3.5 w-3.5" })
|
|
7954
7918
|
}
|
|
7955
7919
|
)
|
|
7956
7920
|
] }),
|
|
7957
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ (0,
|
|
7958
|
-
/* @__PURE__ */ (0,
|
|
7959
|
-
/* @__PURE__ */ (0,
|
|
7960
|
-
/* @__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)(
|
|
7961
7925
|
Button,
|
|
7962
7926
|
{
|
|
7963
7927
|
variant: "ghost",
|
|
@@ -7969,10 +7933,10 @@ var UserOpStatus = ({
|
|
|
7969
7933
|
} catch {
|
|
7970
7934
|
}
|
|
7971
7935
|
},
|
|
7972
|
-
children: /* @__PURE__ */ (0,
|
|
7936
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Copy, { className: "h-3.5 w-3.5" })
|
|
7973
7937
|
}
|
|
7974
7938
|
),
|
|
7975
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0,
|
|
7939
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
7976
7940
|
"a",
|
|
7977
7941
|
{
|
|
7978
7942
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -7980,11 +7944,11 @@ var UserOpStatus = ({
|
|
|
7980
7944
|
rel: "noreferrer noopener",
|
|
7981
7945
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
7982
7946
|
title: "Open in explorer",
|
|
7983
|
-
children: /* @__PURE__ */ (0,
|
|
7947
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.ExternalLink, { className: "h-3.5 w-3.5" })
|
|
7984
7948
|
}
|
|
7985
7949
|
)
|
|
7986
7950
|
] }),
|
|
7987
|
-
receipt && /* @__PURE__ */ (0,
|
|
7951
|
+
receipt && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
7988
7952
|
"Block ",
|
|
7989
7953
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
7990
7954
|
" \u2022 Gas Used",
|
|
@@ -7993,32 +7957,32 @@ var UserOpStatus = ({
|
|
|
7993
7957
|
" \u2022 Success ",
|
|
7994
7958
|
String(!!receipt.success)
|
|
7995
7959
|
] }),
|
|
7996
|
-
/* @__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: [
|
|
7997
7961
|
"\u2022 Polling for ",
|
|
7998
7962
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
7999
7963
|
"s"
|
|
8000
7964
|
] }) }),
|
|
8001
|
-
mempool && /* @__PURE__ */ (0,
|
|
8002
|
-
/* @__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: [
|
|
8003
7967
|
"Seen by bundler at ",
|
|
8004
|
-
/* @__PURE__ */ (0,
|
|
7968
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
8005
7969
|
] }),
|
|
8006
|
-
/* @__PURE__ */ (0,
|
|
7970
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { children: [
|
|
8007
7971
|
"sender ",
|
|
8008
|
-
/* @__PURE__ */ (0,
|
|
7972
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Address, { address: mempool.sender, chain, truncate: false })
|
|
8009
7973
|
] })
|
|
8010
7974
|
] }),
|
|
8011
|
-
error && /* @__PURE__ */ (0,
|
|
8012
|
-
/* @__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" }),
|
|
8013
7977
|
" ",
|
|
8014
7978
|
error
|
|
8015
7979
|
] }),
|
|
8016
|
-
rejected && /* @__PURE__ */ (0,
|
|
8017
|
-
/* @__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" }),
|
|
8018
7982
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
8019
7983
|
] }),
|
|
8020
|
-
timedOut && /* @__PURE__ */ (0,
|
|
8021
|
-
/* @__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" }),
|
|
8022
7986
|
"Stopped polling after ",
|
|
8023
7987
|
Math.round(maxPollTimeMs / 1e3),
|
|
8024
7988
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -8032,7 +7996,7 @@ var UserOpStatus = ({
|
|
|
8032
7996
|
init_base();
|
|
8033
7997
|
init_LumiaPassportContext();
|
|
8034
7998
|
init_useTheme();
|
|
8035
|
-
var
|
|
7999
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
8036
8000
|
var SendModal = ({
|
|
8037
8001
|
open,
|
|
8038
8002
|
onOpenChange,
|
|
@@ -8115,7 +8079,7 @@ var SendModal = ({
|
|
|
8115
8079
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
8116
8080
|
setAmount(maxAmount.toFixed(6));
|
|
8117
8081
|
};
|
|
8118
|
-
return /* @__PURE__ */ (0,
|
|
8082
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
8119
8083
|
DialogContent,
|
|
8120
8084
|
{
|
|
8121
8085
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8127,28 +8091,28 @@ var SendModal = ({
|
|
|
8127
8091
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8128
8092
|
},
|
|
8129
8093
|
children: [
|
|
8130
|
-
/* @__PURE__ */ (0,
|
|
8131
|
-
/* @__PURE__ */ (0,
|
|
8132
|
-
/* @__PURE__ */ (0,
|
|
8133
|
-
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)(
|
|
8134
8098
|
"button",
|
|
8135
8099
|
{
|
|
8136
8100
|
onClick: onBack,
|
|
8137
8101
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8138
8102
|
title: "Back",
|
|
8139
|
-
children: /* @__PURE__ */ (0,
|
|
8103
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.ArrowLeft, { className: "h-4 w-4" })
|
|
8140
8104
|
}
|
|
8141
8105
|
),
|
|
8142
|
-
/* @__PURE__ */ (0,
|
|
8143
|
-
/* @__PURE__ */ (0,
|
|
8144
|
-
/* @__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" })
|
|
8145
8109
|
] })
|
|
8146
8110
|
] }) }),
|
|
8147
|
-
/* @__PURE__ */ (0,
|
|
8148
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
8149
|
-
/* @__PURE__ */ (0,
|
|
8150
|
-
/* @__PURE__ */ (0,
|
|
8151
|
-
/* @__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)(
|
|
8152
8116
|
"input",
|
|
8153
8117
|
{
|
|
8154
8118
|
type: "text",
|
|
@@ -8159,17 +8123,17 @@ var SendModal = ({
|
|
|
8159
8123
|
}
|
|
8160
8124
|
)
|
|
8161
8125
|
] }),
|
|
8162
|
-
/* @__PURE__ */ (0,
|
|
8163
|
-
/* @__PURE__ */ (0,
|
|
8164
|
-
/* @__PURE__ */ (0,
|
|
8165
|
-
/* @__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: [
|
|
8166
8130
|
"Balance: ",
|
|
8167
8131
|
balance.toFixed(4),
|
|
8168
8132
|
" LUMIA"
|
|
8169
8133
|
] })
|
|
8170
8134
|
] }),
|
|
8171
|
-
/* @__PURE__ */ (0,
|
|
8172
|
-
/* @__PURE__ */ (0,
|
|
8135
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "relative", children: [
|
|
8136
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8173
8137
|
"input",
|
|
8174
8138
|
{
|
|
8175
8139
|
type: "number",
|
|
@@ -8180,7 +8144,7 @@ var SendModal = ({
|
|
|
8180
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`
|
|
8181
8145
|
}
|
|
8182
8146
|
),
|
|
8183
|
-
/* @__PURE__ */ (0,
|
|
8147
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8184
8148
|
"button",
|
|
8185
8149
|
{
|
|
8186
8150
|
onClick: handleMaxAmount,
|
|
@@ -8190,11 +8154,11 @@ var SendModal = ({
|
|
|
8190
8154
|
)
|
|
8191
8155
|
] })
|
|
8192
8156
|
] }),
|
|
8193
|
-
(validationError || error) && /* @__PURE__ */ (0,
|
|
8194
|
-
/* @__PURE__ */ (0,
|
|
8195
|
-
/* @__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 })
|
|
8196
8160
|
] }),
|
|
8197
|
-
/* @__PURE__ */ (0,
|
|
8161
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8198
8162
|
Button,
|
|
8199
8163
|
{
|
|
8200
8164
|
onClick: handleSend,
|
|
@@ -8205,29 +8169,29 @@ var SendModal = ({
|
|
|
8205
8169
|
}
|
|
8206
8170
|
)
|
|
8207
8171
|
] }),
|
|
8208
|
-
txStep === "confirm" && /* @__PURE__ */ (0,
|
|
8209
|
-
/* @__PURE__ */ (0,
|
|
8210
|
-
/* @__PURE__ */ (0,
|
|
8211
|
-
/* @__PURE__ */ (0,
|
|
8212
|
-
/* @__PURE__ */ (0,
|
|
8213
|
-
/* @__PURE__ */ (0,
|
|
8214
|
-
/* @__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)}` })
|
|
8215
8179
|
] }),
|
|
8216
|
-
/* @__PURE__ */ (0,
|
|
8217
|
-
/* @__PURE__ */ (0,
|
|
8218
|
-
/* @__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: [
|
|
8219
8183
|
amount,
|
|
8220
8184
|
" LUMIA"
|
|
8221
8185
|
] })
|
|
8222
8186
|
] }),
|
|
8223
|
-
/* @__PURE__ */ (0,
|
|
8224
|
-
/* @__PURE__ */ (0,
|
|
8225
|
-
/* @__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" })
|
|
8226
8190
|
] })
|
|
8227
8191
|
] })
|
|
8228
8192
|
] }),
|
|
8229
|
-
/* @__PURE__ */ (0,
|
|
8230
|
-
/* @__PURE__ */ (0,
|
|
8193
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex gap-2", children: [
|
|
8194
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
8231
8195
|
Button,
|
|
8232
8196
|
{
|
|
8233
8197
|
onClick: () => setTxStep("input"),
|
|
@@ -8237,7 +8201,7 @@ var SendModal = ({
|
|
|
8237
8201
|
children: "Back"
|
|
8238
8202
|
}
|
|
8239
8203
|
),
|
|
8240
|
-
/* @__PURE__ */ (0,
|
|
8204
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
8241
8205
|
Button,
|
|
8242
8206
|
{
|
|
8243
8207
|
onClick: handleConfirm,
|
|
@@ -8245,28 +8209,28 @@ var SendModal = ({
|
|
|
8245
8209
|
className: "flex-1",
|
|
8246
8210
|
size: "lg",
|
|
8247
8211
|
children: [
|
|
8248
|
-
isLoading && /* @__PURE__ */ (0,
|
|
8212
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
8249
8213
|
"Confirm"
|
|
8250
8214
|
]
|
|
8251
8215
|
}
|
|
8252
8216
|
)
|
|
8253
8217
|
] })
|
|
8254
8218
|
] }),
|
|
8255
|
-
txStep === "pending" && /* @__PURE__ */ (0,
|
|
8256
|
-
/* @__PURE__ */ (0,
|
|
8257
|
-
/* @__PURE__ */ (0,
|
|
8258
|
-
/* @__PURE__ */ (0,
|
|
8259
|
-
/* @__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" })
|
|
8260
8224
|
] })
|
|
8261
8225
|
] }),
|
|
8262
|
-
txStep === "success" && userOpHash && /* @__PURE__ */ (0,
|
|
8263
|
-
/* @__PURE__ */ (0,
|
|
8264
|
-
/* @__PURE__ */ (0,
|
|
8265
|
-
/* @__PURE__ */ (0,
|
|
8266
|
-
/* @__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" })
|
|
8267
8231
|
] }),
|
|
8268
|
-
/* @__PURE__ */ (0,
|
|
8269
|
-
/* @__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)(
|
|
8270
8234
|
Button,
|
|
8271
8235
|
{
|
|
8272
8236
|
onClick: handleClose,
|
|
@@ -8290,7 +8254,7 @@ var import_lucide_react14 = require("lucide-react");
|
|
|
8290
8254
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
8291
8255
|
init_LumiaPassportContext();
|
|
8292
8256
|
init_useTheme();
|
|
8293
|
-
var
|
|
8257
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
8294
8258
|
var ReceiveModal = ({
|
|
8295
8259
|
open,
|
|
8296
8260
|
onOpenChange,
|
|
@@ -8331,7 +8295,7 @@ var ReceiveModal = ({
|
|
|
8331
8295
|
if (!addr) return "";
|
|
8332
8296
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
8333
8297
|
};
|
|
8334
|
-
return /* @__PURE__ */ (0,
|
|
8298
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
8335
8299
|
DialogContent,
|
|
8336
8300
|
{
|
|
8337
8301
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8343,51 +8307,51 @@ var ReceiveModal = ({
|
|
|
8343
8307
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8344
8308
|
},
|
|
8345
8309
|
children: [
|
|
8346
|
-
/* @__PURE__ */ (0,
|
|
8347
|
-
/* @__PURE__ */ (0,
|
|
8348
|
-
/* @__PURE__ */ (0,
|
|
8349
|
-
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)(
|
|
8350
8314
|
"button",
|
|
8351
8315
|
{
|
|
8352
8316
|
onClick: onBack,
|
|
8353
8317
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8354
8318
|
title: "Back",
|
|
8355
|
-
children: /* @__PURE__ */ (0,
|
|
8319
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.ArrowLeft, { className: "h-4 w-4" })
|
|
8356
8320
|
}
|
|
8357
8321
|
),
|
|
8358
|
-
/* @__PURE__ */ (0,
|
|
8359
|
-
/* @__PURE__ */ (0,
|
|
8360
|
-
/* @__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" })
|
|
8361
8325
|
] })
|
|
8362
8326
|
] }) }),
|
|
8363
|
-
/* @__PURE__ */ (0,
|
|
8364
|
-
qrCodeUrl && /* @__PURE__ */ (0,
|
|
8365
|
-
/* @__PURE__ */ (0,
|
|
8366
|
-
/* @__PURE__ */ (0,
|
|
8367
|
-
/* @__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" })
|
|
8368
8332
|
] }) }) }),
|
|
8369
|
-
/* @__PURE__ */ (0,
|
|
8370
|
-
/* @__PURE__ */ (0,
|
|
8371
|
-
/* @__PURE__ */ (0,
|
|
8372
|
-
/* @__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)(
|
|
8373
8337
|
Button,
|
|
8374
8338
|
{
|
|
8375
8339
|
onClick: handleCopy,
|
|
8376
8340
|
className: "w-full mt-3",
|
|
8377
8341
|
size: "lg",
|
|
8378
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
8379
|
-
/* @__PURE__ */ (0,
|
|
8380
|
-
/* @__PURE__ */ (0,
|
|
8381
|
-
] }) : /* @__PURE__ */ (0,
|
|
8382
|
-
/* @__PURE__ */ (0,
|
|
8383
|
-
/* @__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" })
|
|
8384
8348
|
] })
|
|
8385
8349
|
}
|
|
8386
8350
|
)
|
|
8387
8351
|
] }),
|
|
8388
|
-
/* @__PURE__ */ (0,
|
|
8389
|
-
/* @__PURE__ */ (0,
|
|
8390
|
-
/* @__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." })
|
|
8391
8355
|
] })
|
|
8392
8356
|
] })
|
|
8393
8357
|
]
|
|
@@ -8401,11 +8365,11 @@ init_button();
|
|
|
8401
8365
|
var import_lucide_react15 = require("lucide-react");
|
|
8402
8366
|
init_LumiaPassportContext();
|
|
8403
8367
|
init_useTheme();
|
|
8404
|
-
var
|
|
8368
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
8405
8369
|
var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
8406
8370
|
const { config } = useLumiaPassportConfig();
|
|
8407
8371
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8408
|
-
return /* @__PURE__ */ (0,
|
|
8372
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
|
|
8409
8373
|
DialogContent,
|
|
8410
8374
|
{
|
|
8411
8375
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8417,26 +8381,26 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8417
8381
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8418
8382
|
},
|
|
8419
8383
|
children: [
|
|
8420
|
-
/* @__PURE__ */ (0,
|
|
8421
|
-
/* @__PURE__ */ (0,
|
|
8422
|
-
/* @__PURE__ */ (0,
|
|
8423
|
-
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)(
|
|
8424
8388
|
"button",
|
|
8425
8389
|
{
|
|
8426
8390
|
onClick: onBack,
|
|
8427
8391
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8428
8392
|
title: "Back",
|
|
8429
|
-
children: /* @__PURE__ */ (0,
|
|
8393
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.ArrowLeft, { className: "h-4 w-4" })
|
|
8430
8394
|
}
|
|
8431
8395
|
),
|
|
8432
|
-
/* @__PURE__ */ (0,
|
|
8433
|
-
/* @__PURE__ */ (0,
|
|
8434
|
-
/* @__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" })
|
|
8435
8399
|
] })
|
|
8436
8400
|
] }) }),
|
|
8437
|
-
/* @__PURE__ */ (0,
|
|
8438
|
-
/* @__PURE__ */ (0,
|
|
8439
|
-
/* @__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" }) })
|
|
8440
8404
|
] })
|
|
8441
8405
|
]
|
|
8442
8406
|
}
|
|
@@ -8449,13 +8413,13 @@ init_button();
|
|
|
8449
8413
|
var import_lucide_react16 = require("lucide-react");
|
|
8450
8414
|
init_LumiaPassportContext();
|
|
8451
8415
|
init_useTheme();
|
|
8452
|
-
var
|
|
8416
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
8453
8417
|
var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
8454
8418
|
const { config } = useLumiaPassportConfig();
|
|
8455
8419
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8456
8420
|
const provider = config.kyc?.provider;
|
|
8457
8421
|
const options = config.kyc?.options || {};
|
|
8458
|
-
return /* @__PURE__ */ (0,
|
|
8422
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
8459
8423
|
DialogContent,
|
|
8460
8424
|
{
|
|
8461
8425
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8467,32 +8431,32 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8467
8431
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8468
8432
|
},
|
|
8469
8433
|
children: [
|
|
8470
|
-
/* @__PURE__ */ (0,
|
|
8471
|
-
/* @__PURE__ */ (0,
|
|
8472
|
-
/* @__PURE__ */ (0,
|
|
8473
|
-
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)(
|
|
8474
8438
|
"button",
|
|
8475
8439
|
{
|
|
8476
8440
|
onClick: onBack,
|
|
8477
8441
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8478
8442
|
title: "Back",
|
|
8479
|
-
children: /* @__PURE__ */ (0,
|
|
8443
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react16.ArrowLeft, { className: "h-4 w-4" })
|
|
8480
8444
|
}
|
|
8481
8445
|
),
|
|
8482
|
-
/* @__PURE__ */ (0,
|
|
8483
|
-
/* @__PURE__ */ (0,
|
|
8484
|
-
/* @__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" })
|
|
8485
8449
|
] })
|
|
8486
8450
|
] }) }),
|
|
8487
|
-
/* @__PURE__ */ (0,
|
|
8488
|
-
provider ? /* @__PURE__ */ (0,
|
|
8489
|
-
/* @__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: [
|
|
8490
8454
|
"KYC provider: ",
|
|
8491
|
-
/* @__PURE__ */ (0,
|
|
8455
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "font-medium", children: provider })
|
|
8492
8456
|
] }),
|
|
8493
|
-
Object.keys(options).length > 0 ? /* @__PURE__ */ (0,
|
|
8494
|
-
] }) : /* @__PURE__ */ (0,
|
|
8495
|
-
/* @__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" }) })
|
|
8496
8460
|
] })
|
|
8497
8461
|
]
|
|
8498
8462
|
}
|
|
@@ -8552,7 +8516,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
8552
8516
|
// package.json
|
|
8553
8517
|
var package_default = {
|
|
8554
8518
|
name: "@lumiapassport/ui-kit",
|
|
8555
|
-
version: "1.5.
|
|
8519
|
+
version: "1.5.1",
|
|
8556
8520
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
8557
8521
|
type: "module",
|
|
8558
8522
|
main: "./dist/index.cjs",
|
|
@@ -8642,7 +8606,7 @@ var package_default = {
|
|
|
8642
8606
|
};
|
|
8643
8607
|
|
|
8644
8608
|
// src/components/ConnectWalletButton.tsx
|
|
8645
|
-
var
|
|
8609
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
8646
8610
|
var ConnectWalletButton = ({
|
|
8647
8611
|
className,
|
|
8648
8612
|
label = "Connect Wallet",
|
|
@@ -8694,6 +8658,9 @@ var ConnectWalletButton = ({
|
|
|
8694
8658
|
const [isKycOpen, setIsKycOpen] = import_react19.default.useState(false);
|
|
8695
8659
|
import_react19.default.useEffect(() => {
|
|
8696
8660
|
if (!callbacks?.onWalletReady) return;
|
|
8661
|
+
if (!config.projectId) {
|
|
8662
|
+
return;
|
|
8663
|
+
}
|
|
8697
8664
|
(async () => {
|
|
8698
8665
|
try {
|
|
8699
8666
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
@@ -8703,7 +8670,7 @@ var ConnectWalletButton = ({
|
|
|
8703
8670
|
console.warn("[UI-KIT] Failed to register onWalletReady callback:", e);
|
|
8704
8671
|
}
|
|
8705
8672
|
})();
|
|
8706
|
-
}, [callbacks?.onWalletReady]);
|
|
8673
|
+
}, [callbacks?.onWalletReady, config.projectId]);
|
|
8707
8674
|
import_react19.default.useEffect(() => {
|
|
8708
8675
|
try {
|
|
8709
8676
|
const shouldAutoOpen = authOpen ?? config?.ui?.authOpen;
|
|
@@ -8759,6 +8726,9 @@ var ConnectWalletButton = ({
|
|
|
8759
8726
|
const userId = loginResponse.userId;
|
|
8760
8727
|
const hasServerKeyshare = loginResponse.hasKeyshare ?? false;
|
|
8761
8728
|
try {
|
|
8729
|
+
if (!config.projectId) {
|
|
8730
|
+
throw new Error("projectId is not configured. Cannot authenticate with iframe.");
|
|
8731
|
+
}
|
|
8762
8732
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8763
8733
|
const iframeManager = getIframeManager2();
|
|
8764
8734
|
await iframeManager.authenticate(userId);
|
|
@@ -8897,6 +8867,9 @@ var ConnectWalletButton = ({
|
|
|
8897
8867
|
if (autoConnectAttemptedRef.current) return;
|
|
8898
8868
|
const tryAutoConnect = async (attempt) => {
|
|
8899
8869
|
if (address || session) return;
|
|
8870
|
+
if (!config.projectId) {
|
|
8871
|
+
return;
|
|
8872
|
+
}
|
|
8900
8873
|
try {
|
|
8901
8874
|
const { waitForIframe: waitForIframe2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8902
8875
|
await waitForIframe2();
|
|
@@ -8936,12 +8909,14 @@ var ConnectWalletButton = ({
|
|
|
8936
8909
|
callbacks?.onLumiaPassportAccount?.({ userId, address: addr, session: sess, hasKeyshare: finalHasKeyshare });
|
|
8937
8910
|
} catch {
|
|
8938
8911
|
}
|
|
8939
|
-
|
|
8940
|
-
|
|
8941
|
-
|
|
8942
|
-
|
|
8943
|
-
|
|
8944
|
-
|
|
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
|
+
}
|
|
8945
8920
|
}
|
|
8946
8921
|
try {
|
|
8947
8922
|
const { checkServerBackupAvailability: checkServerBackupAvailability2, updateBackupStatus: updateBackupStatus2, getShareRecoveryStats: getShareRecoveryStats2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -8979,8 +8954,8 @@ var ConnectWalletButton = ({
|
|
|
8979
8954
|
refetchBalance();
|
|
8980
8955
|
}
|
|
8981
8956
|
}, [address]);
|
|
8982
|
-
return /* @__PURE__ */ (0,
|
|
8983
|
-
/* @__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)(
|
|
8984
8959
|
"button",
|
|
8985
8960
|
{
|
|
8986
8961
|
onClick: () => {
|
|
@@ -9015,7 +8990,7 @@ var ConnectWalletButton = ({
|
|
|
9015
8990
|
},
|
|
9016
8991
|
children: label || "Connect"
|
|
9017
8992
|
}
|
|
9018
|
-
) }) : /* @__PURE__ */ (0,
|
|
8993
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9019
8994
|
"div",
|
|
9020
8995
|
{
|
|
9021
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`,
|
|
@@ -9026,51 +9001,51 @@ var ConnectWalletButton = ({
|
|
|
9026
9001
|
borderColor: config.ui.colors?.[isDark ? "dark" : "light"]?.connectedButtonBorder || (isDark ? "#374151" : "#e5e7eb")
|
|
9027
9002
|
},
|
|
9028
9003
|
onClick: () => setIsWalletMenuOpen(true),
|
|
9029
|
-
children: /* @__PURE__ */ (0,
|
|
9030
|
-
/* @__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 ? (
|
|
9031
9006
|
// eslint-disable-next-line @next/next/no-img-element
|
|
9032
|
-
/* @__PURE__ */ (0,
|
|
9033
|
-
) : /* @__PURE__ */ (0,
|
|
9034
|
-
/* @__PURE__ */ (0,
|
|
9035
|
-
/* @__PURE__ */ (0,
|
|
9036
|
-
/* @__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: [
|
|
9037
9012
|
formatBalance(),
|
|
9038
9013
|
" LUMIA"
|
|
9039
9014
|
] })
|
|
9040
9015
|
] }),
|
|
9041
|
-
/* @__PURE__ */ (0,
|
|
9042
|
-
/* @__PURE__ */ (0,
|
|
9043
|
-
/* @__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)(
|
|
9044
9019
|
import_lucide_react17.Cloud,
|
|
9045
9020
|
{
|
|
9046
9021
|
className: `w-3 h-3 ${indicators.server ? "text-green-500" : "text-orange-400"}`
|
|
9047
9022
|
}
|
|
9048
9023
|
),
|
|
9049
|
-
/* @__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: [
|
|
9050
9025
|
"Server Keyshare: ",
|
|
9051
9026
|
indicators.server ? "Available" : "Missing"
|
|
9052
9027
|
] })
|
|
9053
9028
|
] }),
|
|
9054
|
-
/* @__PURE__ */ (0,
|
|
9055
|
-
/* @__PURE__ */ (0,
|
|
9029
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
|
|
9030
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9056
9031
|
import_lucide_react17.Laptop,
|
|
9057
9032
|
{
|
|
9058
9033
|
className: `w-3 h-3 ${indicators.local ? "text-green-500" : "text-orange-400"}`
|
|
9059
9034
|
}
|
|
9060
9035
|
),
|
|
9061
|
-
/* @__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: [
|
|
9062
9037
|
"Local Keyshare: ",
|
|
9063
9038
|
indicators.local ? "Available" : "Missing"
|
|
9064
9039
|
] })
|
|
9065
9040
|
] }),
|
|
9066
|
-
/* @__PURE__ */ (0,
|
|
9067
|
-
/* @__PURE__ */ (0,
|
|
9041
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
|
|
9042
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9068
9043
|
import_lucide_react17.Shield,
|
|
9069
9044
|
{
|
|
9070
9045
|
className: `w-3 h-3 ${indicators.backup ? "text-green-500" : "text-orange-400"}`
|
|
9071
9046
|
}
|
|
9072
9047
|
),
|
|
9073
|
-
/* @__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: [
|
|
9074
9049
|
"Vault Backup: ",
|
|
9075
9050
|
indicators.backup ? "Available" : "Not Found"
|
|
9076
9051
|
] })
|
|
@@ -9079,62 +9054,62 @@ var ConnectWalletButton = ({
|
|
|
9079
9054
|
] })
|
|
9080
9055
|
}
|
|
9081
9056
|
) }),
|
|
9082
|
-
isWalletMenuOpen && address && /* @__PURE__ */ (0,
|
|
9083
|
-
/* @__PURE__ */ (0,
|
|
9084
|
-
/* @__PURE__ */ (0,
|
|
9085
|
-
/* @__PURE__ */ (0,
|
|
9086
|
-
/* @__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 ? (
|
|
9087
9062
|
// eslint-disable-next-line @next/next/no-img-element
|
|
9088
|
-
/* @__PURE__ */ (0,
|
|
9089
|
-
) : /* @__PURE__ */ (0,
|
|
9090
|
-
/* @__PURE__ */ (0,
|
|
9091
|
-
/* @__PURE__ */ (0,
|
|
9092
|
-
/* @__PURE__ */ (0,
|
|
9093
|
-
/* @__PURE__ */ (0,
|
|
9094
|
-
/* @__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 () => {
|
|
9095
9070
|
try {
|
|
9096
9071
|
await navigator.clipboard.writeText(address);
|
|
9097
9072
|
setCopied(true);
|
|
9098
9073
|
setTimeout(() => setCopied(false), 1500);
|
|
9099
9074
|
} catch {
|
|
9100
9075
|
}
|
|
9101
|
-
}, 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" }) })
|
|
9102
9077
|
] })
|
|
9103
9078
|
] })
|
|
9104
9079
|
] }) }) }),
|
|
9105
|
-
/* @__PURE__ */ (0,
|
|
9106
|
-
/* @__PURE__ */ (0,
|
|
9107
|
-
/* @__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: () => {
|
|
9108
9083
|
setIsWalletMenuOpen(false);
|
|
9109
9084
|
setIsSendOpen(true);
|
|
9110
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: [
|
|
9111
|
-
/* @__PURE__ */ (0,
|
|
9112
|
-
/* @__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" })
|
|
9113
9088
|
] }),
|
|
9114
|
-
/* @__PURE__ */ (0,
|
|
9089
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9115
9090
|
setIsWalletMenuOpen(false);
|
|
9116
9091
|
setIsReceiveOpen(true);
|
|
9117
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: [
|
|
9118
|
-
/* @__PURE__ */ (0,
|
|
9119
|
-
/* @__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" })
|
|
9120
9095
|
] }),
|
|
9121
|
-
/* @__PURE__ */ (0,
|
|
9096
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9122
9097
|
setIsWalletMenuOpen(false);
|
|
9123
9098
|
setIsBuyOpen(true);
|
|
9124
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: [
|
|
9125
|
-
/* @__PURE__ */ (0,
|
|
9126
|
-
/* @__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" })
|
|
9127
9102
|
] })
|
|
9128
9103
|
] }),
|
|
9129
|
-
config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ (0,
|
|
9130
|
-
/* @__PURE__ */ (0,
|
|
9131
|
-
/* @__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: [
|
|
9132
9107
|
"Your wallet will be ",
|
|
9133
|
-
/* @__PURE__ */ (0,
|
|
9108
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("strong", { children: "PERMANENTLY LOST" }),
|
|
9134
9109
|
" if browser data is cleared."
|
|
9135
9110
|
] }),
|
|
9136
|
-
/* @__PURE__ */ (0,
|
|
9137
|
-
/* @__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)(
|
|
9138
9113
|
"button",
|
|
9139
9114
|
{
|
|
9140
9115
|
onClick: () => {
|
|
@@ -9143,7 +9118,7 @@ var ConnectWalletButton = ({
|
|
|
9143
9118
|
},
|
|
9144
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"}`,
|
|
9145
9120
|
children: [
|
|
9146
|
-
/* @__PURE__ */ (0,
|
|
9121
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: "w-3.5 h-3.5 inline mr-1.5" }),
|
|
9147
9122
|
"Create Backup Now"
|
|
9148
9123
|
]
|
|
9149
9124
|
}
|
|
@@ -9152,12 +9127,12 @@ var ConnectWalletButton = ({
|
|
|
9152
9127
|
(() => {
|
|
9153
9128
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
9154
9129
|
const hasEmail = providers.includes("email");
|
|
9155
|
-
return config.warnings?.emailNotConnectedWarning && !hasEmail && /* @__PURE__ */ (0,
|
|
9156
|
-
/* @__PURE__ */ (0,
|
|
9157
|
-
/* @__PURE__ */ (0,
|
|
9158
|
-
/* @__PURE__ */ (0,
|
|
9159
|
-
/* @__PURE__ */ (0,
|
|
9160
|
-
/* @__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)(
|
|
9161
9136
|
"button",
|
|
9162
9137
|
{
|
|
9163
9138
|
onClick: () => {
|
|
@@ -9166,7 +9141,7 @@ var ConnectWalletButton = ({
|
|
|
9166
9141
|
},
|
|
9167
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"}`,
|
|
9168
9143
|
children: [
|
|
9169
|
-
/* @__PURE__ */ (0,
|
|
9144
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: "w-3 h-3 inline mr-1" }),
|
|
9170
9145
|
"Connect Email"
|
|
9171
9146
|
]
|
|
9172
9147
|
}
|
|
@@ -9174,84 +9149,84 @@ var ConnectWalletButton = ({
|
|
|
9174
9149
|
] })
|
|
9175
9150
|
] }) });
|
|
9176
9151
|
})(),
|
|
9177
|
-
/* @__PURE__ */ (0,
|
|
9152
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9178
9153
|
"button",
|
|
9179
9154
|
{
|
|
9180
9155
|
onClick: () => address && window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank"),
|
|
9181
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`,
|
|
9182
|
-
children: /* @__PURE__ */ (0,
|
|
9183
|
-
/* @__PURE__ */ (0,
|
|
9184
|
-
/* @__PURE__ */ (0,
|
|
9185
|
-
/* @__PURE__ */ (0,
|
|
9186
|
-
/* @__PURE__ */ (0,
|
|
9187
|
-
/* @__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: [
|
|
9188
9163
|
formatBalance(),
|
|
9189
9164
|
" LUMIA"
|
|
9190
9165
|
] })
|
|
9191
9166
|
] })
|
|
9192
9167
|
] }),
|
|
9193
|
-
/* @__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" }) })
|
|
9194
9169
|
] })
|
|
9195
9170
|
}
|
|
9196
9171
|
),
|
|
9197
|
-
/* @__PURE__ */ (0,
|
|
9198
|
-
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: () => {
|
|
9199
9174
|
setIsWalletMenuOpen(false);
|
|
9200
9175
|
setIsKycOpen(true);
|
|
9201
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: [
|
|
9202
|
-
/* @__PURE__ */ (0,
|
|
9203
|
-
/* @__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" })
|
|
9204
9179
|
] }),
|
|
9205
|
-
/* @__PURE__ */ (0,
|
|
9180
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9206
9181
|
setIsWalletMenuOpen(false);
|
|
9207
9182
|
setIsTransactionsOpen(true);
|
|
9208
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: [
|
|
9209
|
-
/* @__PURE__ */ (0,
|
|
9210
|
-
/* @__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" })
|
|
9211
9186
|
] }),
|
|
9212
|
-
/* @__PURE__ */ (0,
|
|
9187
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9213
9188
|
setIsWalletMenuOpen(false);
|
|
9214
9189
|
setIsViewAssetsOpen(true);
|
|
9215
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: [
|
|
9216
|
-
/* @__PURE__ */ (0,
|
|
9217
|
-
/* @__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" })
|
|
9218
9193
|
] }),
|
|
9219
|
-
/* @__PURE__ */ (0,
|
|
9194
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9220
9195
|
setIsWalletMenuOpen(false);
|
|
9221
9196
|
setIsManageWalletOpen(true);
|
|
9222
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: [
|
|
9223
|
-
/* @__PURE__ */ (0,
|
|
9224
|
-
/* @__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" })
|
|
9225
9200
|
] }),
|
|
9226
|
-
/* @__PURE__ */ (0,
|
|
9201
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9227
9202
|
setIsWalletMenuOpen(false);
|
|
9228
9203
|
setIsSecurityOpen(true);
|
|
9229
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: [
|
|
9230
|
-
/* @__PURE__ */ (0,
|
|
9231
|
-
/* @__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" })
|
|
9232
9207
|
] }),
|
|
9233
|
-
/* @__PURE__ */ (0,
|
|
9208
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
|
|
9234
9209
|
setIsWalletMenuOpen(false);
|
|
9235
9210
|
setIsBackupOpen(true);
|
|
9236
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: [
|
|
9237
|
-
/* @__PURE__ */ (0,
|
|
9238
|
-
/* @__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" })
|
|
9239
9214
|
] }),
|
|
9240
|
-
/* @__PURE__ */ (0,
|
|
9215
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: async () => {
|
|
9241
9216
|
await handleDisconnect();
|
|
9242
9217
|
setIsWalletMenuOpen(false);
|
|
9243
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: [
|
|
9244
|
-
/* @__PURE__ */ (0,
|
|
9245
|
-
/* @__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" })
|
|
9246
9221
|
] })
|
|
9247
9222
|
] }),
|
|
9248
|
-
/* @__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: [
|
|
9249
9224
|
"Lumia Passport v",
|
|
9250
9225
|
package_default.version
|
|
9251
9226
|
] }) })
|
|
9252
9227
|
] })
|
|
9253
9228
|
] }) }) }),
|
|
9254
|
-
/* @__PURE__ */ (0,
|
|
9229
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9255
9230
|
ManageWallet,
|
|
9256
9231
|
{
|
|
9257
9232
|
open: isManageWalletOpen,
|
|
@@ -9262,7 +9237,7 @@ var ConnectWalletButton = ({
|
|
|
9262
9237
|
}
|
|
9263
9238
|
}
|
|
9264
9239
|
),
|
|
9265
|
-
/* @__PURE__ */ (0,
|
|
9240
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9266
9241
|
SecurityModal,
|
|
9267
9242
|
{
|
|
9268
9243
|
open: isSecurityOpen,
|
|
@@ -9273,22 +9248,26 @@ var ConnectWalletButton = ({
|
|
|
9273
9248
|
}
|
|
9274
9249
|
}
|
|
9275
9250
|
),
|
|
9276
|
-
isBackupOpen && session?.mpcUserId && /* @__PURE__ */ (0,
|
|
9277
|
-
/* @__PURE__ */ (0,
|
|
9278
|
-
/* @__PURE__ */ (0,
|
|
9279
|
-
/* @__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" })
|
|
9280
9255
|
] }),
|
|
9281
|
-
/* @__PURE__ */ (0,
|
|
9256
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9282
9257
|
KeyshareBackup,
|
|
9283
9258
|
{
|
|
9284
9259
|
userId: session.mpcUserId,
|
|
9285
9260
|
onBackupSuccess: () => {
|
|
9286
9261
|
console.log("[ConnectWalletButton] Backup created successfully");
|
|
9262
|
+
},
|
|
9263
|
+
onBack: () => {
|
|
9264
|
+
setIsBackupOpen(false);
|
|
9265
|
+
setIsWalletMenuOpen(true);
|
|
9287
9266
|
}
|
|
9288
9267
|
}
|
|
9289
9268
|
)
|
|
9290
9269
|
] }) }),
|
|
9291
|
-
/* @__PURE__ */ (0,
|
|
9270
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9292
9271
|
TransactionsModal,
|
|
9293
9272
|
{
|
|
9294
9273
|
open: isTransactionsOpen,
|
|
@@ -9299,7 +9278,7 @@ var ConnectWalletButton = ({
|
|
|
9299
9278
|
}
|
|
9300
9279
|
}
|
|
9301
9280
|
),
|
|
9302
|
-
/* @__PURE__ */ (0,
|
|
9281
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9303
9282
|
ViewAssetsModal,
|
|
9304
9283
|
{
|
|
9305
9284
|
open: isViewAssetsOpen,
|
|
@@ -9310,7 +9289,7 @@ var ConnectWalletButton = ({
|
|
|
9310
9289
|
}
|
|
9311
9290
|
}
|
|
9312
9291
|
),
|
|
9313
|
-
/* @__PURE__ */ (0,
|
|
9292
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9314
9293
|
SendModal,
|
|
9315
9294
|
{
|
|
9316
9295
|
open: isSendOpen,
|
|
@@ -9321,7 +9300,7 @@ var ConnectWalletButton = ({
|
|
|
9321
9300
|
}
|
|
9322
9301
|
}
|
|
9323
9302
|
),
|
|
9324
|
-
/* @__PURE__ */ (0,
|
|
9303
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9325
9304
|
ReceiveModal,
|
|
9326
9305
|
{
|
|
9327
9306
|
open: isReceiveOpen,
|
|
@@ -9332,7 +9311,7 @@ var ConnectWalletButton = ({
|
|
|
9332
9311
|
}
|
|
9333
9312
|
}
|
|
9334
9313
|
),
|
|
9335
|
-
/* @__PURE__ */ (0,
|
|
9314
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9336
9315
|
BuyModal,
|
|
9337
9316
|
{
|
|
9338
9317
|
open: isBuyOpen,
|
|
@@ -9343,7 +9322,7 @@ var ConnectWalletButton = ({
|
|
|
9343
9322
|
}
|
|
9344
9323
|
}
|
|
9345
9324
|
),
|
|
9346
|
-
/* @__PURE__ */ (0,
|
|
9325
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9347
9326
|
KycModal,
|
|
9348
9327
|
{
|
|
9349
9328
|
open: isKycOpen,
|
|
@@ -9354,7 +9333,7 @@ var ConnectWalletButton = ({
|
|
|
9354
9333
|
}
|
|
9355
9334
|
}
|
|
9356
9335
|
),
|
|
9357
|
-
/* @__PURE__ */ (0,
|
|
9336
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9358
9337
|
AuthModal,
|
|
9359
9338
|
{
|
|
9360
9339
|
open: recoveryUserId ? isRecoveryModalOpen : isAuthModalOpen,
|
|
@@ -9385,6 +9364,7 @@ var ConnectWalletButton = ({
|
|
|
9385
9364
|
setStatus("ready");
|
|
9386
9365
|
setRecoveryUserId(null);
|
|
9387
9366
|
setIsRecoveryModalOpen(false);
|
|
9367
|
+
setIsAuthModalOpen(false);
|
|
9388
9368
|
onConnected?.({ address: addr, session: sess });
|
|
9389
9369
|
try {
|
|
9390
9370
|
callbacks?.onLumiaPassportConnect?.({ address: addr, session: sess });
|
|
@@ -9394,12 +9374,14 @@ var ConnectWalletButton = ({
|
|
|
9394
9374
|
callbacks?.onLumiaPassportAccount?.({ userId: recoveryUserId, address: addr, session: sess, hasKeyshare: hasServerKeyshare });
|
|
9395
9375
|
} catch {
|
|
9396
9376
|
}
|
|
9397
|
-
|
|
9398
|
-
|
|
9399
|
-
|
|
9400
|
-
|
|
9401
|
-
|
|
9402
|
-
|
|
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
|
+
}
|
|
9403
9385
|
}
|
|
9404
9386
|
try {
|
|
9405
9387
|
const { updateBackupStatus: updateBackupStatus2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -9415,7 +9397,7 @@ var ConnectWalletButton = ({
|
|
|
9415
9397
|
}
|
|
9416
9398
|
}
|
|
9417
9399
|
),
|
|
9418
|
-
/* @__PURE__ */ (0,
|
|
9400
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
9419
9401
|
TssManagerWithRef,
|
|
9420
9402
|
{
|
|
9421
9403
|
ref: tssManagerRef,
|
|
@@ -9434,7 +9416,7 @@ var ConnectWalletButton = ({
|
|
|
9434
9416
|
|
|
9435
9417
|
// src/components/ThemeToggle.tsx
|
|
9436
9418
|
init_LumiaPassportContext();
|
|
9437
|
-
var
|
|
9419
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
9438
9420
|
var ThemeToggle = () => {
|
|
9439
9421
|
const { config, updateConfig } = useLumiaPassportConfig();
|
|
9440
9422
|
const currentTheme = config.ui.theme;
|
|
@@ -9479,7 +9461,7 @@ var ThemeToggle = () => {
|
|
|
9479
9461
|
return "auto";
|
|
9480
9462
|
}
|
|
9481
9463
|
};
|
|
9482
|
-
return /* @__PURE__ */ (0,
|
|
9464
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "lumia-scope", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
9483
9465
|
"button",
|
|
9484
9466
|
{
|
|
9485
9467
|
onClick: cycleTheme,
|
|
@@ -9495,19 +9477,19 @@ var ThemeToggle = () => {
|
|
|
9495
9477
|
};
|
|
9496
9478
|
|
|
9497
9479
|
// src/components/LumiaLogo.tsx
|
|
9498
|
-
var
|
|
9480
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
9499
9481
|
var LumiaLogo2 = ({ size = 80, className = "" }) => {
|
|
9500
|
-
return /* @__PURE__ */ (0,
|
|
9482
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
9501
9483
|
"div",
|
|
9502
9484
|
{
|
|
9503
9485
|
className: `flex items-center justify-center ${className}`,
|
|
9504
9486
|
style: { width: size, height: size },
|
|
9505
|
-
children: /* @__PURE__ */ (0,
|
|
9506
|
-
/* @__PURE__ */ (0,
|
|
9507
|
-
/* @__PURE__ */ (0,
|
|
9508
|
-
/* @__PURE__ */ (0,
|
|
9509
|
-
/* @__PURE__ */ (0,
|
|
9510
|
-
/* @__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" })
|
|
9511
9493
|
] })
|
|
9512
9494
|
}
|
|
9513
9495
|
);
|
|
@@ -9573,7 +9555,7 @@ function useTheme2(configTheme) {
|
|
|
9573
9555
|
var React28 = __toESM(require("react"), 1);
|
|
9574
9556
|
var import_lucide_react18 = require("lucide-react");
|
|
9575
9557
|
init_button();
|
|
9576
|
-
var
|
|
9558
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
9577
9559
|
function toExplorerUrl(kind, value, chain) {
|
|
9578
9560
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
9579
9561
|
if (!base2) return null;
|
|
@@ -9597,11 +9579,11 @@ var Hash = ({
|
|
|
9597
9579
|
const value = hash || "";
|
|
9598
9580
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
9599
9581
|
const [copied, setCopied] = React28.useState(false);
|
|
9600
|
-
if (!value) return /* @__PURE__ */ (0,
|
|
9601
|
-
return /* @__PURE__ */ (0,
|
|
9602
|
-
label && /* @__PURE__ */ (0,
|
|
9603
|
-
/* @__PURE__ */ (0,
|
|
9604
|
-
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)(
|
|
9605
9587
|
Button,
|
|
9606
9588
|
{
|
|
9607
9589
|
variant: "ghost",
|
|
@@ -9615,10 +9597,10 @@ var Hash = ({
|
|
|
9615
9597
|
} catch {
|
|
9616
9598
|
}
|
|
9617
9599
|
},
|
|
9618
|
-
children: /* @__PURE__ */ (0,
|
|
9600
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react18.Copy, { className: "h-4 w-4" })
|
|
9619
9601
|
}
|
|
9620
9602
|
),
|
|
9621
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
9603
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
9622
9604
|
"a",
|
|
9623
9605
|
{
|
|
9624
9606
|
href: explorer,
|
|
@@ -9626,7 +9608,7 @@ var Hash = ({
|
|
|
9626
9608
|
rel: "noreferrer noopener",
|
|
9627
9609
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
9628
9610
|
title: "Open in explorer",
|
|
9629
|
-
children: /* @__PURE__ */ (0,
|
|
9611
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react18.ExternalLink, { className: "h-4 w-4" })
|
|
9630
9612
|
}
|
|
9631
9613
|
)
|
|
9632
9614
|
] });
|
|
@@ -9635,7 +9617,7 @@ var Hash = ({
|
|
|
9635
9617
|
// src/internal/components/TransactionsList.tsx
|
|
9636
9618
|
var import_react21 = require("react");
|
|
9637
9619
|
init_base();
|
|
9638
|
-
var
|
|
9620
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
9639
9621
|
var TransactionsList = ({
|
|
9640
9622
|
address,
|
|
9641
9623
|
itemsCount = 10
|
|
@@ -9689,15 +9671,15 @@ var TransactionsList = ({
|
|
|
9689
9671
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
9690
9672
|
};
|
|
9691
9673
|
if (loading) {
|
|
9692
|
-
return /* @__PURE__ */ (0,
|
|
9693
|
-
/* @__PURE__ */ (0,
|
|
9694
|
-
/* @__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..." })
|
|
9695
9677
|
] });
|
|
9696
9678
|
}
|
|
9697
9679
|
if (error) {
|
|
9698
|
-
return /* @__PURE__ */ (0,
|
|
9699
|
-
/* @__PURE__ */ (0,
|
|
9700
|
-
/* @__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)(
|
|
9701
9683
|
"button",
|
|
9702
9684
|
{
|
|
9703
9685
|
onClick: () => window.location.reload(),
|
|
@@ -9708,54 +9690,54 @@ var TransactionsList = ({
|
|
|
9708
9690
|
] });
|
|
9709
9691
|
}
|
|
9710
9692
|
if (transactions.length === 0) {
|
|
9711
|
-
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" }) });
|
|
9712
9694
|
}
|
|
9713
|
-
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)(
|
|
9714
9696
|
"div",
|
|
9715
9697
|
{
|
|
9716
9698
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
9717
9699
|
onClick: () => openTransaction(tx.hash),
|
|
9718
9700
|
children: [
|
|
9719
|
-
/* @__PURE__ */ (0,
|
|
9720
|
-
/* @__PURE__ */ (0,
|
|
9721
|
-
/* @__PURE__ */ (0,
|
|
9722
|
-
/* @__PURE__ */ (0,
|
|
9723
|
-
/* @__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" })
|
|
9724
9706
|
] }),
|
|
9725
|
-
/* @__PURE__ */ (0,
|
|
9726
|
-
/* @__PURE__ */ (0,
|
|
9727
|
-
/* @__PURE__ */ (0,
|
|
9728
|
-
/* @__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: [
|
|
9729
9711
|
formatAddress(tx.from.hash),
|
|
9730
|
-
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)" })
|
|
9731
9713
|
] })
|
|
9732
9714
|
] }),
|
|
9733
|
-
/* @__PURE__ */ (0,
|
|
9734
|
-
/* @__PURE__ */ (0,
|
|
9735
|
-
/* @__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: [
|
|
9736
9718
|
formatAddress(tx.to.hash),
|
|
9737
|
-
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)" })
|
|
9738
9720
|
] })
|
|
9739
9721
|
] }),
|
|
9740
|
-
/* @__PURE__ */ (0,
|
|
9741
|
-
/* @__PURE__ */ (0,
|
|
9742
|
-
/* @__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: [
|
|
9743
9725
|
formatValue(tx.value),
|
|
9744
9726
|
" LUMIA"
|
|
9745
9727
|
] })
|
|
9746
9728
|
] })
|
|
9747
9729
|
] })
|
|
9748
9730
|
] }),
|
|
9749
|
-
/* @__PURE__ */ (0,
|
|
9750
|
-
/* @__PURE__ */ (0,
|
|
9751
|
-
/* @__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: [
|
|
9752
9734
|
"Gas: ",
|
|
9753
9735
|
parseInt(tx.gas_used).toLocaleString()
|
|
9754
9736
|
] }),
|
|
9755
|
-
tx.method && /* @__PURE__ */ (0,
|
|
9737
|
+
tx.method && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
9756
9738
|
] })
|
|
9757
9739
|
] }),
|
|
9758
|
-
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)(
|
|
9759
9741
|
"span",
|
|
9760
9742
|
{
|
|
9761
9743
|
className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full",
|