@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.js
CHANGED
|
@@ -2347,7 +2347,9 @@ function getIframeManager(config) {
|
|
|
2347
2347
|
iframeManagerInstance = new IframeManager(config);
|
|
2348
2348
|
}
|
|
2349
2349
|
if (!iframeManagerInstance) {
|
|
2350
|
-
throw new Error(
|
|
2350
|
+
throw new Error(
|
|
2351
|
+
'IframeManager not initialized. This usually means projectId is not configured.\n\nTo fix this:\n1. Get your projectId from https://dashboard.lumiapassport.com/\n2. Add it to LumiaPassportProvider:\n <LumiaPassportProvider projectId="your-project-id">\n\nFor more details, see the documentation.'
|
|
2352
|
+
);
|
|
2351
2353
|
}
|
|
2352
2354
|
return iframeManagerInstance;
|
|
2353
2355
|
}
|
|
@@ -2921,8 +2923,8 @@ var init_LumiaPassportContext = __esm({
|
|
|
2921
2923
|
merged.projectId = initialConfig.projectId;
|
|
2922
2924
|
}
|
|
2923
2925
|
if (!merged.projectId) {
|
|
2924
|
-
console.
|
|
2925
|
-
'
|
|
2926
|
+
console.error(
|
|
2927
|
+
'\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551 \u26A0\uFE0F LUMIA PASSPORT WARNING \u26A0\uFE0F \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563\n\u2551 \u2551\n\u2551 projectId is NOT configured! \u2551\n\u2551 \u2551\n\u2551 Your integration will NOT work without a valid projectId. \u2551\n\u2551 Most features will be disabled and errors will occur. \u2551\n\u2551 \u2551\n\u2551 To fix this: \u2551\n\u2551 1. Get your projectId from: https://dashboard.lumiapassport.com/ \u2551\n\u2551 2. Add it to your LumiaPassportProvider: \u2551\n\u2551 \u2551\n\u2551 <LumiaPassportProvider projectId="your-project-id"> \u2551\n\u2551 {children} \u2551\n\u2551 </LumiaPassportProvider> \u2551\n\u2551 \u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n'
|
|
2926
2928
|
);
|
|
2927
2929
|
} else {
|
|
2928
2930
|
console.log("[LumiaPassport] \u2705 Initialized with projectId:", merged.projectId);
|
|
@@ -3022,9 +3024,6 @@ var init_LumiaPassportContext = __esm({
|
|
|
3022
3024
|
if (typeof window === "undefined") return;
|
|
3023
3025
|
const projectId2 = config.projectId;
|
|
3024
3026
|
if (!projectId2) {
|
|
3025
|
-
console.warn(
|
|
3026
|
-
"[LumiaPassport] Skipping iframe initialization - projectId not configured"
|
|
3027
|
-
);
|
|
3028
3027
|
return;
|
|
3029
3028
|
}
|
|
3030
3029
|
const iframeUrl = getIframeUrl();
|
|
@@ -3470,26 +3469,8 @@ var init_LumiaLogo = __esm({
|
|
|
3470
3469
|
}
|
|
3471
3470
|
});
|
|
3472
3471
|
|
|
3473
|
-
// src/internal/components/SuccessScreen.tsx
|
|
3474
|
-
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
3475
|
-
var SuccessScreen;
|
|
3476
|
-
var init_SuccessScreen = __esm({
|
|
3477
|
-
"src/internal/components/SuccessScreen.tsx"() {
|
|
3478
|
-
init_useTheme();
|
|
3479
|
-
init_LumiaPassportContext();
|
|
3480
|
-
SuccessScreen = () => {
|
|
3481
|
-
const { config } = useLumiaPassportConfig();
|
|
3482
|
-
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3483
|
-
return /* @__PURE__ */ jsxs6("div", { className: "text-center", children: [
|
|
3484
|
-
/* @__PURE__ */ jsx12("div", { className: "w-16 h-16 rounded-full bg-green-100 text-green-600 flex items-center justify-center mx-auto mb-4", children: "\u2713" }),
|
|
3485
|
-
/* @__PURE__ */ jsx12("div", { className: `text-lg font-medium ${theme.titleText}`, children: "Success" })
|
|
3486
|
-
] });
|
|
3487
|
-
};
|
|
3488
|
-
}
|
|
3489
|
-
});
|
|
3490
|
-
|
|
3491
3472
|
// src/internal/components/FailedScreen.tsx
|
|
3492
|
-
import { jsx as
|
|
3473
|
+
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
3493
3474
|
var FailedScreen;
|
|
3494
3475
|
var init_FailedScreen = __esm({
|
|
3495
3476
|
"src/internal/components/FailedScreen.tsx"() {
|
|
@@ -3498,17 +3479,17 @@ var init_FailedScreen = __esm({
|
|
|
3498
3479
|
FailedScreen = ({ message = "Failed" }) => {
|
|
3499
3480
|
const { config } = useLumiaPassportConfig();
|
|
3500
3481
|
const { classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3501
|
-
return /* @__PURE__ */
|
|
3502
|
-
/* @__PURE__ */
|
|
3503
|
-
/* @__PURE__ */
|
|
3504
|
-
message && /* @__PURE__ */
|
|
3482
|
+
return /* @__PURE__ */ jsxs6("div", { className: "text-center", children: [
|
|
3483
|
+
/* @__PURE__ */ jsx12("div", { className: "w-16 h-16 rounded-full bg-red-100 text-red-600 flex items-center justify-center mx-auto mb-4 text-3xl", children: "\u2717" }),
|
|
3484
|
+
/* @__PURE__ */ jsx12("div", { className: `text-lg font-medium ${theme.titleText} mb-2`, children: "Failed" }),
|
|
3485
|
+
message && /* @__PURE__ */ jsx12("div", { className: `text-sm ${theme.bodyText}`, children: message })
|
|
3505
3486
|
] });
|
|
3506
3487
|
};
|
|
3507
3488
|
}
|
|
3508
3489
|
});
|
|
3509
3490
|
|
|
3510
3491
|
// src/internal/components/TermsOfService.tsx
|
|
3511
|
-
import { jsx as
|
|
3492
|
+
import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
3512
3493
|
var TermsOfService;
|
|
3513
3494
|
var init_TermsOfService = __esm({
|
|
3514
3495
|
"src/internal/components/TermsOfService.tsx"() {
|
|
@@ -3518,7 +3499,7 @@ var init_TermsOfService = __esm({
|
|
|
3518
3499
|
TermsOfService = ({ open, onOpenChange }) => {
|
|
3519
3500
|
const { config } = useLumiaPassportConfig();
|
|
3520
3501
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
3521
|
-
return /* @__PURE__ */
|
|
3502
|
+
return /* @__PURE__ */ jsx13(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs7(
|
|
3522
3503
|
DialogContent,
|
|
3523
3504
|
{
|
|
3524
3505
|
className: `lumia-scope p-6 border-0 ${theme.modalBg} ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -3530,8 +3511,8 @@ var init_TermsOfService = __esm({
|
|
|
3530
3511
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
3531
3512
|
},
|
|
3532
3513
|
children: [
|
|
3533
|
-
/* @__PURE__ */
|
|
3534
|
-
/* @__PURE__ */
|
|
3514
|
+
/* @__PURE__ */ jsx13(DialogTitle, { children: "Terms of Service" }),
|
|
3515
|
+
/* @__PURE__ */ jsx13("div", { className: "prose text-sm text-gray-700", children: /* @__PURE__ */ jsx13("p", { children: "By using Lumia Passport you agree to our terms." }) })
|
|
3535
3516
|
]
|
|
3536
3517
|
}
|
|
3537
3518
|
) });
|
|
@@ -3541,29 +3522,29 @@ var init_TermsOfService = __esm({
|
|
|
3541
3522
|
|
|
3542
3523
|
// src/internal/components/ui/card.tsx
|
|
3543
3524
|
import * as React8 from "react";
|
|
3544
|
-
import { jsx as
|
|
3525
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
3545
3526
|
var Card, CardHeader, CardTitle, CardDescription, CardContent;
|
|
3546
3527
|
var init_card = __esm({
|
|
3547
3528
|
"src/internal/components/ui/card.tsx"() {
|
|
3548
3529
|
init_utils();
|
|
3549
3530
|
Card = React8.forwardRef(
|
|
3550
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3531
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("div", { ref, className: cn("rounded-xl border bg-card text-card-foreground shadow", className), ...props })
|
|
3551
3532
|
);
|
|
3552
3533
|
Card.displayName = "Card";
|
|
3553
3534
|
CardHeader = React8.forwardRef(
|
|
3554
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3535
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
|
|
3555
3536
|
);
|
|
3556
3537
|
CardHeader.displayName = "CardHeader";
|
|
3557
3538
|
CardTitle = React8.forwardRef(
|
|
3558
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3539
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("h3", { ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })
|
|
3559
3540
|
);
|
|
3560
3541
|
CardTitle.displayName = "CardTitle";
|
|
3561
3542
|
CardDescription = React8.forwardRef(
|
|
3562
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3543
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
|
|
3563
3544
|
);
|
|
3564
3545
|
CardDescription.displayName = "CardDescription";
|
|
3565
3546
|
CardContent = React8.forwardRef(
|
|
3566
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
3547
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx14("div", { ref, className: cn("p-6 pt-0", className), ...props })
|
|
3567
3548
|
);
|
|
3568
3549
|
CardContent.displayName = "CardContent";
|
|
3569
3550
|
}
|
|
@@ -3571,13 +3552,13 @@ var init_card = __esm({
|
|
|
3571
3552
|
|
|
3572
3553
|
// src/internal/components/ui/input.tsx
|
|
3573
3554
|
import * as React9 from "react";
|
|
3574
|
-
import { jsx as
|
|
3555
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
3575
3556
|
var Input;
|
|
3576
3557
|
var init_input = __esm({
|
|
3577
3558
|
"src/internal/components/ui/input.tsx"() {
|
|
3578
3559
|
init_utils();
|
|
3579
3560
|
Input = React9.forwardRef(({ className, type, ...props }, ref) => {
|
|
3580
|
-
return /* @__PURE__ */
|
|
3561
|
+
return /* @__PURE__ */ jsx15(
|
|
3581
3562
|
"input",
|
|
3582
3563
|
{
|
|
3583
3564
|
type,
|
|
@@ -3597,7 +3578,7 @@ var init_input = __esm({
|
|
|
3597
3578
|
// src/internal/components/KeyshareRestore.tsx
|
|
3598
3579
|
import * as React10 from "react";
|
|
3599
3580
|
import { Shield, Server, Upload, CheckCircle2, AlertCircle, Key, X as X2, Eye, EyeOff } from "lucide-react";
|
|
3600
|
-
import { Fragment as Fragment2, jsx as
|
|
3581
|
+
import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3601
3582
|
function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
3602
3583
|
const { config } = useLumiaPassportConfig();
|
|
3603
3584
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
@@ -3710,48 +3691,48 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3710
3691
|
}
|
|
3711
3692
|
};
|
|
3712
3693
|
if (checkingBackup) {
|
|
3713
|
-
return /* @__PURE__ */
|
|
3714
|
-
/* @__PURE__ */
|
|
3715
|
-
/* @__PURE__ */
|
|
3716
|
-
/* @__PURE__ */
|
|
3717
|
-
/* @__PURE__ */
|
|
3718
|
-
/* @__PURE__ */
|
|
3719
|
-
/* @__PURE__ */
|
|
3694
|
+
return /* @__PURE__ */ jsxs8(Card, { className: `${isDark ? "border-gray-700 bg-gray-900" : "border-blue-200 bg-blue-50"} border-0`, children: [
|
|
3695
|
+
/* @__PURE__ */ jsx16(CardHeader, { className: "pb-4", children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between", children: [
|
|
3696
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-3", children: [
|
|
3697
|
+
/* @__PURE__ */ jsx16(Shield, { className: `h-6 w-6 ${isDark ? "text-blue-400" : "text-blue-600"}` }),
|
|
3698
|
+
/* @__PURE__ */ jsxs8("div", { children: [
|
|
3699
|
+
/* @__PURE__ */ jsx16(CardTitle, { className: `text-lg ${isDark ? "text-gray-100" : ""}`, children: "Checking Backup Availability" }),
|
|
3700
|
+
/* @__PURE__ */ jsx16(CardDescription, { className: `text-sm ${isDark ? "text-gray-400" : ""}`, children: "Please wait while we check for available backups..." })
|
|
3720
3701
|
] })
|
|
3721
3702
|
] }),
|
|
3722
|
-
onClose && /* @__PURE__ */
|
|
3703
|
+
onClose && /* @__PURE__ */ jsx16("button", { onClick: onClose, className: `p-1 rounded transition-colors ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-red-100 text-red-600 hover:bg-red-200"}`, title: "Close", "aria-label": "Close", children: /* @__PURE__ */ jsx16(X2, { className: "h-4 w-4" }) })
|
|
3723
3704
|
] }) }),
|
|
3724
|
-
/* @__PURE__ */
|
|
3725
|
-
/* @__PURE__ */
|
|
3726
|
-
/* @__PURE__ */
|
|
3705
|
+
/* @__PURE__ */ jsx16(CardContent, { className: "space-y-6", children: /* @__PURE__ */ jsx16("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsxs8("div", { className: "text-center", children: [
|
|
3706
|
+
/* @__PURE__ */ jsx16("div", { className: `animate-spin rounded-full h-8 w-8 border-b-2 ${isDark ? "border-blue-400" : "border-blue-600"} mx-auto mb-4` }),
|
|
3707
|
+
/* @__PURE__ */ jsx16("p", { className: `text-sm ${isDark ? "text-gray-400" : "text-gray-600"}`, children: "Checking for backups..." })
|
|
3727
3708
|
] }) }) })
|
|
3728
3709
|
] });
|
|
3729
3710
|
}
|
|
3730
3711
|
if (hasServerBackup === false) {
|
|
3731
|
-
return /* @__PURE__ */
|
|
3732
|
-
/* @__PURE__ */
|
|
3733
|
-
/* @__PURE__ */
|
|
3734
|
-
/* @__PURE__ */
|
|
3735
|
-
/* @__PURE__ */
|
|
3712
|
+
return /* @__PURE__ */ jsxs8(Card, { className: `border-0 ${theme.bg} ${theme.divider}`, children: [
|
|
3713
|
+
/* @__PURE__ */ jsx16(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between", children: [
|
|
3714
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3715
|
+
/* @__PURE__ */ jsx16(AlertCircle, { className: "h-5 w-5 text-red-600" }),
|
|
3716
|
+
/* @__PURE__ */ jsx16(CardTitle, { className: `text-base ${theme.titleText}`, children: "No Keyshare Found" })
|
|
3736
3717
|
] }),
|
|
3737
|
-
onClose && /* @__PURE__ */
|
|
3718
|
+
onClose && /* @__PURE__ */ jsx16("button", { onClick: onClose, className: `p-1 rounded transition-colors ${theme.secondaryBtn}`, title: "Close", "aria-label": "Close", children: /* @__PURE__ */ jsx16(X2, { className: "h-4 w-4" }) })
|
|
3738
3719
|
] }) }),
|
|
3739
|
-
/* @__PURE__ */
|
|
3740
|
-
/* @__PURE__ */
|
|
3741
|
-
/* @__PURE__ */
|
|
3742
|
-
/* @__PURE__ */
|
|
3720
|
+
/* @__PURE__ */ jsxs8(CardContent, { className: "space-y-3.5", children: [
|
|
3721
|
+
/* @__PURE__ */ jsxs8("div", { className: `p-3 rounded ${isDark ? "bg-red-500/15" : "bg-red-100"}`, children: [
|
|
3722
|
+
/* @__PURE__ */ jsx16("h4", { className: `font-medium text-sm mb-1.5 ${isDark ? "text-red-300" : "text-red-800"}`, children: "Account Recovery Needed" }),
|
|
3723
|
+
/* @__PURE__ */ jsx16("p", { className: `text-xs leading-relaxed ${theme.text}`, children: "This device doesn't have access to your wallet keyshare, and no backup was found in the Vault. To access your wallet: use the original device where you created the account, create a backup from that device first, then try restoring on this device." })
|
|
3743
3724
|
] }),
|
|
3744
|
-
/* @__PURE__ */
|
|
3745
|
-
/* @__PURE__ */
|
|
3725
|
+
/* @__PURE__ */ jsx16("div", { className: `p-2.5 rounded border ${isDark ? "bg-amber-500/15 border-amber-500/40" : "bg-amber-50 border-amber-200"}`, children: /* @__PURE__ */ jsxs8("p", { className: `text-xs ${theme.text}`, children: [
|
|
3726
|
+
/* @__PURE__ */ jsx16("span", { className: "font-semibold", children: "Alternative:" }),
|
|
3746
3727
|
" Try uploading a backup file if you have one saved locally, or create a new account with a different email."
|
|
3747
3728
|
] }) }),
|
|
3748
|
-
/* @__PURE__ */
|
|
3749
|
-
/* @__PURE__ */
|
|
3750
|
-
/* @__PURE__ */
|
|
3751
|
-
/* @__PURE__ */
|
|
3729
|
+
/* @__PURE__ */ jsxs8("div", { className: `p-3 rounded border ${theme.bg} ${theme.divider}`, children: [
|
|
3730
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3731
|
+
/* @__PURE__ */ jsx16(Upload, { className: "h-4 w-4 text-purple-600" }),
|
|
3732
|
+
/* @__PURE__ */ jsx16("div", { className: `font-medium text-sm ${theme.text}`, children: "Try Backup File" })
|
|
3752
3733
|
] }),
|
|
3753
|
-
/* @__PURE__ */
|
|
3754
|
-
/* @__PURE__ */
|
|
3734
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3735
|
+
/* @__PURE__ */ jsx16("label", { className: `block w-full cursor-pointer ${theme.text}`, children: /* @__PURE__ */ jsx16(
|
|
3755
3736
|
"input",
|
|
3756
3737
|
{
|
|
3757
3738
|
type: "file",
|
|
@@ -3760,28 +3741,28 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3760
3741
|
className: "block w-full text-xs file:mr-3 file:py-1.5 file:px-3 file:rounded file:border-0 file:text-xs file:font-medium file:bg-purple-600 file:text-white hover:file:bg-purple-700 file:cursor-pointer"
|
|
3761
3742
|
}
|
|
3762
3743
|
) }),
|
|
3763
|
-
!restoreFile && /* @__PURE__ */
|
|
3764
|
-
restoreFile && /* @__PURE__ */
|
|
3765
|
-
/* @__PURE__ */
|
|
3744
|
+
!restoreFile && /* @__PURE__ */ jsx16("p", { className: `text-xs ${theme.mutedText}`, children: "No file chosen" }),
|
|
3745
|
+
restoreFile && /* @__PURE__ */ jsxs8(Fragment2, { children: [
|
|
3746
|
+
/* @__PURE__ */ jsxs8("div", { className: `text-xs p-2 rounded ${theme.inputBg} ${theme.text}`, children: [
|
|
3766
3747
|
"Selected: ",
|
|
3767
3748
|
restoreFile.name
|
|
3768
3749
|
] }),
|
|
3769
|
-
/* @__PURE__ */
|
|
3750
|
+
/* @__PURE__ */ jsx16(Button, { onClick: handleRestoreFromFile, disabled: loading.file || useCustomPassword && !restorePassword, className: "w-full py-2 text-sm", children: loading.file ? "Restoring..." : useCustomPassword ? "Restore" : "Restore with Passkey" })
|
|
3770
3751
|
] })
|
|
3771
3752
|
] })
|
|
3772
3753
|
] }),
|
|
3773
|
-
restoreFile && /* @__PURE__ */
|
|
3774
|
-
/* @__PURE__ */
|
|
3775
|
-
/* @__PURE__ */
|
|
3776
|
-
/* @__PURE__ */
|
|
3777
|
-
/* @__PURE__ */
|
|
3754
|
+
restoreFile && /* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3755
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs font-medium ${theme.text}`, children: "Decryption Method:" }),
|
|
3756
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3757
|
+
/* @__PURE__ */ jsx16("input", { type: "checkbox", id: "use-restore-password", checked: useCustomPassword, onChange: (e) => setUseCustomPassword(e.target.checked), className: "rounded" }),
|
|
3758
|
+
/* @__PURE__ */ jsx16("label", { htmlFor: "use-restore-password", className: `text-xs ${theme.text}`, children: "Use custom password instead of passkey" })
|
|
3778
3759
|
] }),
|
|
3779
|
-
!useCustomPassword && /* @__PURE__ */
|
|
3780
|
-
/* @__PURE__ */
|
|
3781
|
-
/* @__PURE__ */
|
|
3760
|
+
!useCustomPassword && /* @__PURE__ */ jsx16("div", { className: `p-2 border rounded text-xs ${theme.inputBg} ${theme.text}`, children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3761
|
+
/* @__PURE__ */ jsx16(Key, { className: "h-3.5 w-3.5" }),
|
|
3762
|
+
/* @__PURE__ */ jsx16("span", { children: "Your passkey will be used to decrypt the backup securely" })
|
|
3782
3763
|
] }) }),
|
|
3783
|
-
useCustomPassword && /* @__PURE__ */
|
|
3784
|
-
/* @__PURE__ */
|
|
3764
|
+
useCustomPassword && /* @__PURE__ */ jsxs8("div", { className: "relative", children: [
|
|
3765
|
+
/* @__PURE__ */ jsx16(
|
|
3785
3766
|
Input,
|
|
3786
3767
|
{
|
|
3787
3768
|
type: showPassword ? "text" : "password",
|
|
@@ -3791,61 +3772,61 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3791
3772
|
className: `pr-10 text-sm bg-transparent ${isDark ? "text-gray-100 placeholder:text-gray-400 border-gray-600 focus-visible:ring-offset-0" : "text-gray-900 placeholder:text-gray-500 border-gray-300"}`
|
|
3792
3773
|
}
|
|
3793
3774
|
),
|
|
3794
|
-
/* @__PURE__ */
|
|
3775
|
+
/* @__PURE__ */ jsx16(
|
|
3795
3776
|
"button",
|
|
3796
3777
|
{
|
|
3797
3778
|
type: "button",
|
|
3798
3779
|
onClick: () => setShowPassword(!showPassword),
|
|
3799
3780
|
className: `absolute inset-y-0 right-2 flex items-center justify-center p-0 rounded ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-transparent text-gray-500 hover:text-gray-700"}`,
|
|
3800
|
-
children: showPassword ? /* @__PURE__ */
|
|
3781
|
+
children: showPassword ? /* @__PURE__ */ jsx16(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx16(Eye, { className: "h-4 w-4" })
|
|
3801
3782
|
}
|
|
3802
3783
|
)
|
|
3803
3784
|
] })
|
|
3804
3785
|
] }),
|
|
3805
|
-
error && /* @__PURE__ */
|
|
3806
|
-
/* @__PURE__ */
|
|
3807
|
-
/* @__PURE__ */
|
|
3786
|
+
error && /* @__PURE__ */ jsxs8("div", { className: `flex items-center gap-2 p-2 rounded border text-xs ${theme.errorText} ${isDark ? "bg-red-500/15 border-red-500/40" : "bg-red-50 border-red-200"}`, children: [
|
|
3787
|
+
/* @__PURE__ */ jsx16(AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3788
|
+
/* @__PURE__ */ jsx16("span", { children: error })
|
|
3808
3789
|
] }),
|
|
3809
|
-
success && /* @__PURE__ */
|
|
3810
|
-
/* @__PURE__ */
|
|
3811
|
-
/* @__PURE__ */
|
|
3790
|
+
success && /* @__PURE__ */ jsxs8("div", { className: `flex items-center gap-2 p-2 rounded border text-xs ${theme.successText} ${isDark ? "bg-green-500/15 border-green-500/40" : "bg-green-50 border-green-200"}`, children: [
|
|
3791
|
+
/* @__PURE__ */ jsx16(CheckCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3792
|
+
/* @__PURE__ */ jsx16("span", { children: success })
|
|
3812
3793
|
] })
|
|
3813
3794
|
] })
|
|
3814
3795
|
] });
|
|
3815
3796
|
}
|
|
3816
|
-
return /* @__PURE__ */
|
|
3817
|
-
/* @__PURE__ */
|
|
3818
|
-
/* @__PURE__ */
|
|
3819
|
-
/* @__PURE__ */
|
|
3820
|
-
/* @__PURE__ */
|
|
3821
|
-
/* @__PURE__ */
|
|
3797
|
+
return /* @__PURE__ */ jsxs8(Card, { className: `${isDark ? "border-gray-700 bg-gray-900" : "border-blue-200 bg-blue-50"} border-0`, children: [
|
|
3798
|
+
/* @__PURE__ */ jsxs8(CardHeader, { className: "pb-3", children: [
|
|
3799
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between", children: [
|
|
3800
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3801
|
+
/* @__PURE__ */ jsx16(Shield, { className: "h-5 w-5 text-blue-600" }),
|
|
3802
|
+
/* @__PURE__ */ jsx16(CardTitle, { className: `text-base ${isDark ? "text-gray-100" : "text-gray-900"}`, children: "Restore Account Access" })
|
|
3822
3803
|
] }),
|
|
3823
|
-
onClose && /* @__PURE__ */
|
|
3804
|
+
onClose && /* @__PURE__ */ jsx16(
|
|
3824
3805
|
"button",
|
|
3825
3806
|
{
|
|
3826
3807
|
onClick: onClose,
|
|
3827
3808
|
className: `p-1 rounded transition-colors ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-red-100 text-red-600 hover:bg-red-200"}`,
|
|
3828
3809
|
title: "Close",
|
|
3829
3810
|
"aria-label": "Close",
|
|
3830
|
-
children: /* @__PURE__ */
|
|
3811
|
+
children: /* @__PURE__ */ jsx16(X2, { className: "h-4 w-4" })
|
|
3831
3812
|
}
|
|
3832
3813
|
)
|
|
3833
3814
|
] }),
|
|
3834
|
-
/* @__PURE__ */
|
|
3815
|
+
/* @__PURE__ */ jsx16(CardDescription, { className: `text-sm mt-1 ${isDark ? "text-gray-300" : "text-gray-600"}`, children: "Your account was found in the Vault" })
|
|
3835
3816
|
] }),
|
|
3836
|
-
/* @__PURE__ */
|
|
3837
|
-
error && !error.includes("No backup found") && /* @__PURE__ */
|
|
3838
|
-
/* @__PURE__ */
|
|
3839
|
-
/* @__PURE__ */
|
|
3817
|
+
/* @__PURE__ */ jsxs8(CardContent, { className: "space-y-3.5", children: [
|
|
3818
|
+
error && !error.includes("No backup found") && /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 p-2 rounded bg-red-50 border border-red-200 text-red-700 text-xs", children: [
|
|
3819
|
+
/* @__PURE__ */ jsx16(AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3820
|
+
/* @__PURE__ */ jsx16("span", { children: error })
|
|
3840
3821
|
] }),
|
|
3841
|
-
success && /* @__PURE__ */
|
|
3842
|
-
/* @__PURE__ */
|
|
3843
|
-
/* @__PURE__ */
|
|
3822
|
+
success && /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 p-2 rounded bg-green-50 border border-green-200 text-green-700 text-xs", children: [
|
|
3823
|
+
/* @__PURE__ */ jsx16(CheckCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
3824
|
+
/* @__PURE__ */ jsx16("span", { children: success })
|
|
3844
3825
|
] }),
|
|
3845
|
-
/* @__PURE__ */
|
|
3846
|
-
/* @__PURE__ */
|
|
3847
|
-
/* @__PURE__ */
|
|
3848
|
-
/* @__PURE__ */
|
|
3826
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3827
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Decryption Method:" }),
|
|
3828
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3829
|
+
/* @__PURE__ */ jsx16(
|
|
3849
3830
|
"input",
|
|
3850
3831
|
{
|
|
3851
3832
|
type: "checkbox",
|
|
@@ -3855,14 +3836,14 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3855
3836
|
className: "rounded"
|
|
3856
3837
|
}
|
|
3857
3838
|
),
|
|
3858
|
-
/* @__PURE__ */
|
|
3839
|
+
/* @__PURE__ */ jsx16("label", { htmlFor: "use-restore-password", className: `text-xs ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Use custom password instead of passkey" })
|
|
3859
3840
|
] }),
|
|
3860
|
-
!useCustomPassword && /* @__PURE__ */
|
|
3861
|
-
/* @__PURE__ */
|
|
3862
|
-
/* @__PURE__ */
|
|
3841
|
+
!useCustomPassword && /* @__PURE__ */ jsx16("div", { className: isDark ? "p-2 rounded bg-blue-500/10 border border-blue-500/30" : "p-2 rounded bg-blue-50 border border-blue-200", children: /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
|
|
3842
|
+
/* @__PURE__ */ jsx16(Key, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
3843
|
+
/* @__PURE__ */ jsx16("p", { className: `text-xs ${isDark ? "text-gray-300" : "text-blue-700"}`, children: "Passkey will be used to decrypt the backup" })
|
|
3863
3844
|
] }) }),
|
|
3864
|
-
useCustomPassword && /* @__PURE__ */
|
|
3865
|
-
/* @__PURE__ */
|
|
3845
|
+
useCustomPassword && /* @__PURE__ */ jsxs8("div", { className: "relative", children: [
|
|
3846
|
+
/* @__PURE__ */ jsx16(
|
|
3866
3847
|
Input,
|
|
3867
3848
|
{
|
|
3868
3849
|
type: showPassword ? "text" : "password",
|
|
@@ -3872,26 +3853,26 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3872
3853
|
className: `pr-10 text-sm bg-transparent ${isDark ? "text-gray-100 placeholder:text-gray-400 border-gray-600 focus-visible:ring-offset-0" : "text-gray-900 placeholder:text-gray-500 border-gray-300"}`
|
|
3873
3854
|
}
|
|
3874
3855
|
),
|
|
3875
|
-
/* @__PURE__ */
|
|
3856
|
+
/* @__PURE__ */ jsx16(
|
|
3876
3857
|
"button",
|
|
3877
3858
|
{
|
|
3878
3859
|
type: "button",
|
|
3879
3860
|
onClick: () => setShowPassword(!showPassword),
|
|
3880
3861
|
className: `absolute inset-y-0 right-2 flex items-center justify-center p-0 rounded ${isDark ? "bg-transparent text-gray-400 hover:text-gray-200" : "bg-transparent text-gray-500 hover:text-gray-700"}`,
|
|
3881
3862
|
"aria-label": "Toggle password visibility",
|
|
3882
|
-
children: showPassword ? /* @__PURE__ */
|
|
3863
|
+
children: showPassword ? /* @__PURE__ */ jsx16(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx16(Eye, { className: "h-4 w-4" })
|
|
3883
3864
|
}
|
|
3884
3865
|
)
|
|
3885
3866
|
] })
|
|
3886
3867
|
] }),
|
|
3887
|
-
/* @__PURE__ */
|
|
3888
|
-
/* @__PURE__ */
|
|
3889
|
-
/* @__PURE__ */
|
|
3890
|
-
/* @__PURE__ */
|
|
3891
|
-
/* @__PURE__ */
|
|
3892
|
-
/* @__PURE__ */
|
|
3868
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2.5", children: [
|
|
3869
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Choose Restore Method:" }),
|
|
3870
|
+
/* @__PURE__ */ jsxs8("div", { className: isDark ? "p-3 rounded bg-gray-800/50" : "p-3 rounded bg-blue-50/50", children: [
|
|
3871
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3872
|
+
/* @__PURE__ */ jsx16(Server, { className: "h-4 w-4 text-blue-500" }),
|
|
3873
|
+
/* @__PURE__ */ jsx16("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Server Backup" })
|
|
3893
3874
|
] }),
|
|
3894
|
-
/* @__PURE__ */
|
|
3875
|
+
/* @__PURE__ */ jsx16(
|
|
3895
3876
|
Button,
|
|
3896
3877
|
{
|
|
3897
3878
|
onClick: handleRestoreFromServer,
|
|
@@ -3901,13 +3882,13 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3901
3882
|
}
|
|
3902
3883
|
)
|
|
3903
3884
|
] }),
|
|
3904
|
-
/* @__PURE__ */
|
|
3905
|
-
/* @__PURE__ */
|
|
3906
|
-
/* @__PURE__ */
|
|
3907
|
-
/* @__PURE__ */
|
|
3885
|
+
/* @__PURE__ */ jsxs8("div", { className: isDark ? "p-3 rounded bg-gray-800/50" : "p-3 rounded bg-purple-50/50", children: [
|
|
3886
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
3887
|
+
/* @__PURE__ */ jsx16(Upload, { className: "h-4 w-4 text-purple-500" }),
|
|
3888
|
+
/* @__PURE__ */ jsx16("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Backup File" })
|
|
3908
3889
|
] }),
|
|
3909
|
-
/* @__PURE__ */
|
|
3910
|
-
/* @__PURE__ */
|
|
3890
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-2", children: [
|
|
3891
|
+
/* @__PURE__ */ jsx16("label", { className: `block w-full cursor-pointer ${isDark ? "text-gray-300" : "text-gray-700"}`, children: /* @__PURE__ */ jsx16(
|
|
3911
3892
|
"input",
|
|
3912
3893
|
{
|
|
3913
3894
|
type: "file",
|
|
@@ -3916,9 +3897,9 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
|
|
|
3916
3897
|
className: isDark ? "block w-full text-xs file:mr-3 file:py-1.5 file:px-3 file:rounded file:border-0 file:text-xs file:font-medium file:bg-purple-600 file:text-white hover:file:bg-purple-700 file:cursor-pointer" : "block w-full text-xs file:mr-3 file:py-1.5 file:px-3 file:rounded file:border-0 file:text-xs file:font-medium file:bg-purple-600 file:text-white hover:file:bg-purple-700 file:cursor-pointer"
|
|
3917
3898
|
}
|
|
3918
3899
|
) }),
|
|
3919
|
-
restoreFile && /* @__PURE__ */
|
|
3920
|
-
/* @__PURE__ */
|
|
3921
|
-
/* @__PURE__ */
|
|
3900
|
+
restoreFile && /* @__PURE__ */ jsxs8(Fragment2, { children: [
|
|
3901
|
+
/* @__PURE__ */ jsx16("div", { className: `text-xs p-2 rounded ${isDark ? "bg-gray-700 text-gray-300" : "bg-gray-100 text-gray-600"}`, children: restoreFile.name }),
|
|
3902
|
+
/* @__PURE__ */ jsx16(
|
|
3922
3903
|
Button,
|
|
3923
3904
|
{
|
|
3924
3905
|
onClick: handleRestoreFromFile,
|
|
@@ -3949,7 +3930,7 @@ var init_KeyshareRestore = __esm({
|
|
|
3949
3930
|
|
|
3950
3931
|
// src/internal/components/VerificationCodeInput.tsx
|
|
3951
3932
|
import { useEffect as useEffect4, useMemo as useMemo3, useRef, useState as useState4 } from "react";
|
|
3952
|
-
import { jsx as
|
|
3933
|
+
import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3953
3934
|
var VerificationCodeInput;
|
|
3954
3935
|
var init_VerificationCodeInput = __esm({
|
|
3955
3936
|
"src/internal/components/VerificationCodeInput.tsx"() {
|
|
@@ -4029,8 +4010,8 @@ var init_VerificationCodeInput = __esm({
|
|
|
4029
4010
|
};
|
|
4030
4011
|
const mm = Math.floor(timeLeft / 60).toString();
|
|
4031
4012
|
const ss = (timeLeft % 60).toString().padStart(2, "0");
|
|
4032
|
-
return /* @__PURE__ */
|
|
4033
|
-
/* @__PURE__ */
|
|
4013
|
+
return /* @__PURE__ */ jsxs9("div", { className: "text-center", children: [
|
|
4014
|
+
/* @__PURE__ */ jsx17("div", { className: `flex items-center justify-center gap-2 mb-4`, children: digits.map((d, i) => /* @__PURE__ */ jsx17(
|
|
4034
4015
|
"input",
|
|
4035
4016
|
{
|
|
4036
4017
|
ref: (el) => inputsRef.current[i] = el,
|
|
@@ -4046,17 +4027,17 @@ var init_VerificationCodeInput = __esm({
|
|
|
4046
4027
|
},
|
|
4047
4028
|
i
|
|
4048
4029
|
)) }),
|
|
4049
|
-
error && /* @__PURE__ */
|
|
4050
|
-
/* @__PURE__ */
|
|
4030
|
+
error && /* @__PURE__ */ jsx17("div", { className: `text-sm ${theme.errorText} mb-3 break-words whitespace-pre-wrap text-center`, children: error }),
|
|
4031
|
+
/* @__PURE__ */ jsxs9("div", { className: `text-sm ${theme.mutedText} mb-3`, children: [
|
|
4051
4032
|
"Code expires in ",
|
|
4052
4033
|
mm,
|
|
4053
4034
|
":",
|
|
4054
4035
|
ss
|
|
4055
4036
|
] }),
|
|
4056
|
-
/* @__PURE__ */
|
|
4037
|
+
/* @__PURE__ */ jsxs9("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
4057
4038
|
"Didn't receive code?",
|
|
4058
4039
|
" ",
|
|
4059
|
-
/* @__PURE__ */
|
|
4040
|
+
/* @__PURE__ */ jsx17(
|
|
4060
4041
|
"button",
|
|
4061
4042
|
{
|
|
4062
4043
|
onClick: () => timeLeft === 0 ? onResendCode() : void 0,
|
|
@@ -4097,7 +4078,7 @@ var init_profile = __esm({
|
|
|
4097
4078
|
// src/internal/components/DisplayNameInput.tsx
|
|
4098
4079
|
import { useState as useState5 } from "react";
|
|
4099
4080
|
import { User } from "lucide-react";
|
|
4100
|
-
import { jsx as
|
|
4081
|
+
import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
4101
4082
|
var DisplayNameInput;
|
|
4102
4083
|
var init_DisplayNameInput = __esm({
|
|
4103
4084
|
"src/internal/components/DisplayNameInput.tsx"() {
|
|
@@ -4144,14 +4125,14 @@ var init_DisplayNameInput = __esm({
|
|
|
4144
4125
|
onComplete();
|
|
4145
4126
|
}
|
|
4146
4127
|
};
|
|
4147
|
-
return /* @__PURE__ */
|
|
4148
|
-
/* @__PURE__ */
|
|
4149
|
-
/* @__PURE__ */
|
|
4150
|
-
/* @__PURE__ */
|
|
4151
|
-
/* @__PURE__ */
|
|
4152
|
-
/* @__PURE__ */
|
|
4153
|
-
/* @__PURE__ */
|
|
4154
|
-
/* @__PURE__ */
|
|
4128
|
+
return /* @__PURE__ */ jsxs10("div", { children: [
|
|
4129
|
+
/* @__PURE__ */ jsx18("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx18("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx18(LumiaLogo, { size: 28 }) }) }),
|
|
4130
|
+
/* @__PURE__ */ jsx18("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "What's your name?" }),
|
|
4131
|
+
/* @__PURE__ */ jsx18("p", { className: `text-sm ${theme.bodyText} mb-6`, children: "This helps personalize your experience" }),
|
|
4132
|
+
/* @__PURE__ */ jsxs10("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
|
|
4133
|
+
/* @__PURE__ */ jsxs10("div", { className: "relative", children: [
|
|
4134
|
+
/* @__PURE__ */ jsx18(User, { className: `absolute left-3 top-3 h-5 w-5 ${theme.iconColor}` }),
|
|
4135
|
+
/* @__PURE__ */ jsx18(
|
|
4155
4136
|
Input,
|
|
4156
4137
|
{
|
|
4157
4138
|
type: "text",
|
|
@@ -4168,8 +4149,8 @@ var init_DisplayNameInput = __esm({
|
|
|
4168
4149
|
}
|
|
4169
4150
|
)
|
|
4170
4151
|
] }),
|
|
4171
|
-
error && /* @__PURE__ */
|
|
4172
|
-
/* @__PURE__ */
|
|
4152
|
+
error && /* @__PURE__ */ jsx18("div", { className: `text-sm ${theme.errorText} text-center`, children: error }),
|
|
4153
|
+
/* @__PURE__ */ jsx18(
|
|
4173
4154
|
Button,
|
|
4174
4155
|
{
|
|
4175
4156
|
type: "submit",
|
|
@@ -4179,7 +4160,7 @@ var init_DisplayNameInput = __esm({
|
|
|
4179
4160
|
children: isLoading ? "Saving..." : "Continue"
|
|
4180
4161
|
}
|
|
4181
4162
|
),
|
|
4182
|
-
onSkip && /* @__PURE__ */
|
|
4163
|
+
onSkip && /* @__PURE__ */ jsx18("div", { className: "text-center mt-4", children: /* @__PURE__ */ jsx18(
|
|
4183
4164
|
"button",
|
|
4184
4165
|
{
|
|
4185
4166
|
type: "button",
|
|
@@ -4204,7 +4185,7 @@ __export(AuthModal_exports, {
|
|
|
4204
4185
|
});
|
|
4205
4186
|
import React13, { useState as useState6 } from "react";
|
|
4206
4187
|
import { Mail, Fingerprint, KeyRound } from "lucide-react";
|
|
4207
|
-
import { Fragment as Fragment3, jsx as
|
|
4188
|
+
import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
4208
4189
|
function getPendingLoginResponse() {
|
|
4209
4190
|
return _pendingLoginResponse;
|
|
4210
4191
|
}
|
|
@@ -4217,7 +4198,6 @@ var init_AuthModal = __esm({
|
|
|
4217
4198
|
init_auth();
|
|
4218
4199
|
init_ErrorAlert();
|
|
4219
4200
|
init_LumiaLogo();
|
|
4220
|
-
init_SuccessScreen();
|
|
4221
4201
|
init_FailedScreen();
|
|
4222
4202
|
init_TermsOfService();
|
|
4223
4203
|
init_button();
|
|
@@ -4395,15 +4375,12 @@ var init_AuthModal = __esm({
|
|
|
4395
4375
|
}
|
|
4396
4376
|
throw authError;
|
|
4397
4377
|
}
|
|
4398
|
-
console.log("[AuthModal]
|
|
4399
|
-
setStep("success");
|
|
4378
|
+
console.log("[AuthModal] Authentication successful, closing modal");
|
|
4400
4379
|
if (autoCloseOnSuccess && !needsRecovery) {
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
setVerificationError("");
|
|
4406
|
-
}, 2e3);
|
|
4380
|
+
setStep("signin");
|
|
4381
|
+
setEmail("");
|
|
4382
|
+
setVerificationError("");
|
|
4383
|
+
onOpenChange(false);
|
|
4407
4384
|
}
|
|
4408
4385
|
} catch (error) {
|
|
4409
4386
|
let errorMessage = "";
|
|
@@ -4491,15 +4468,12 @@ var init_AuthModal = __esm({
|
|
|
4491
4468
|
if (onAuthSuccess) {
|
|
4492
4469
|
await onAuthSuccess();
|
|
4493
4470
|
}
|
|
4494
|
-
setStep("
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
setPasskeyError("");
|
|
4501
|
-
setPasskeyStatus("idle");
|
|
4502
|
-
}, 2e3);
|
|
4471
|
+
setStep("signin");
|
|
4472
|
+
setEmail("");
|
|
4473
|
+
setVerificationError("");
|
|
4474
|
+
setPasskeyError("");
|
|
4475
|
+
setPasskeyStatus("idle");
|
|
4476
|
+
onOpenChange(false);
|
|
4503
4477
|
} else {
|
|
4504
4478
|
setPasskeyStatus("Passkey registered successfully!");
|
|
4505
4479
|
setTimeout(() => {
|
|
@@ -4577,16 +4551,13 @@ var init_AuthModal = __esm({
|
|
|
4577
4551
|
}
|
|
4578
4552
|
throw authError;
|
|
4579
4553
|
}
|
|
4580
|
-
setStep("success");
|
|
4581
4554
|
if (autoCloseOnSuccess) {
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
setPasskeyStatus("idle");
|
|
4589
|
-
}, 2e3);
|
|
4555
|
+
setStep("signin");
|
|
4556
|
+
setEmail("");
|
|
4557
|
+
setVerificationError("");
|
|
4558
|
+
setPasskeyError("");
|
|
4559
|
+
setPasskeyStatus("idle");
|
|
4560
|
+
onOpenChange(false);
|
|
4590
4561
|
}
|
|
4591
4562
|
} catch (e) {
|
|
4592
4563
|
const normalized = normalizeWebAuthnError(e);
|
|
@@ -4660,15 +4631,12 @@ var init_AuthModal = __esm({
|
|
|
4660
4631
|
if (onAuthSuccess) {
|
|
4661
4632
|
await onAuthSuccess();
|
|
4662
4633
|
}
|
|
4663
|
-
setStep("
|
|
4664
|
-
|
|
4665
|
-
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
setPasskeyError("");
|
|
4670
|
-
setPasskeyStatus("idle");
|
|
4671
|
-
}, 2e3);
|
|
4634
|
+
setStep("signin");
|
|
4635
|
+
setEmail("");
|
|
4636
|
+
setVerificationError("");
|
|
4637
|
+
setPasskeyError("");
|
|
4638
|
+
setPasskeyStatus("idle");
|
|
4639
|
+
onOpenChange(false);
|
|
4672
4640
|
} catch (sessionError) {
|
|
4673
4641
|
let errorMessage = "Account setup failed. Please try again.";
|
|
4674
4642
|
if (sessionError?.code === "NO_BACKUP_AVAILABLE") {
|
|
@@ -4698,20 +4666,20 @@ var init_AuthModal = __esm({
|
|
|
4698
4666
|
};
|
|
4699
4667
|
}, [step, onAuthSuccess, onOpenChange]);
|
|
4700
4668
|
if (recoveryUserId) {
|
|
4701
|
-
return /* @__PURE__ */
|
|
4669
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4702
4670
|
DialogContent,
|
|
4703
4671
|
{
|
|
4704
4672
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4705
4673
|
hideClose: true,
|
|
4706
4674
|
children: [
|
|
4707
|
-
/* @__PURE__ */
|
|
4708
|
-
/* @__PURE__ */
|
|
4675
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Restore Account Access" }),
|
|
4676
|
+
/* @__PURE__ */ jsx19(KeyshareRestore, { userId: recoveryUserId, onClose: onRecoveryClose, onRestoreSuccess: onRecoverySuccess })
|
|
4709
4677
|
]
|
|
4710
4678
|
}
|
|
4711
4679
|
) });
|
|
4712
4680
|
}
|
|
4713
4681
|
if (step === "display-name") {
|
|
4714
|
-
return /* @__PURE__ */
|
|
4682
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4715
4683
|
DialogContent,
|
|
4716
4684
|
{
|
|
4717
4685
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4721,8 +4689,8 @@ var init_AuthModal = __esm({
|
|
|
4721
4689
|
},
|
|
4722
4690
|
hideClose: true,
|
|
4723
4691
|
children: [
|
|
4724
|
-
/* @__PURE__ */
|
|
4725
|
-
/* @__PURE__ */
|
|
4692
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Enter Your Name" }),
|
|
4693
|
+
/* @__PURE__ */ jsx19("div", { className: "p-8", children: /* @__PURE__ */ jsx19(
|
|
4726
4694
|
DisplayNameInput,
|
|
4727
4695
|
{
|
|
4728
4696
|
onComplete: async () => {
|
|
@@ -4755,24 +4723,8 @@ var init_AuthModal = __esm({
|
|
|
4755
4723
|
}
|
|
4756
4724
|
) });
|
|
4757
4725
|
}
|
|
4758
|
-
if (step === "success") {
|
|
4759
|
-
return /* @__PURE__ */ jsx20(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs12(
|
|
4760
|
-
DialogContent,
|
|
4761
|
-
{
|
|
4762
|
-
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
4763
|
-
style: {
|
|
4764
|
-
borderRadius: config.ui.modal?.borderRadius || "24px",
|
|
4765
|
-
maxWidth: config.ui.modal?.width || "400px"
|
|
4766
|
-
},
|
|
4767
|
-
children: [
|
|
4768
|
-
/* @__PURE__ */ jsx20(DialogTitle, { className: "sr-only", children: "Authentication Success" }),
|
|
4769
|
-
/* @__PURE__ */ jsx20("div", { className: "p-8", children: /* @__PURE__ */ jsx20(SuccessScreen, {}) })
|
|
4770
|
-
]
|
|
4771
|
-
}
|
|
4772
|
-
) });
|
|
4773
|
-
}
|
|
4774
4726
|
if (step === "failed") {
|
|
4775
|
-
return /* @__PURE__ */
|
|
4727
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4776
4728
|
DialogContent,
|
|
4777
4729
|
{
|
|
4778
4730
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4781,14 +4733,14 @@ var init_AuthModal = __esm({
|
|
|
4781
4733
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4782
4734
|
},
|
|
4783
4735
|
children: [
|
|
4784
|
-
/* @__PURE__ */
|
|
4785
|
-
/* @__PURE__ */
|
|
4736
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Authentication Failed" }),
|
|
4737
|
+
/* @__PURE__ */ jsx19("div", { className: "p-8", children: /* @__PURE__ */ jsx19(FailedScreen, { message: failedMessage }) })
|
|
4786
4738
|
]
|
|
4787
4739
|
}
|
|
4788
4740
|
) });
|
|
4789
4741
|
}
|
|
4790
4742
|
if (step === "verify") {
|
|
4791
|
-
return /* @__PURE__ */
|
|
4743
|
+
return /* @__PURE__ */ jsx19(Dialog, { open: open && !iframeVisible, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4792
4744
|
DialogContent,
|
|
4793
4745
|
{
|
|
4794
4746
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4797,17 +4749,17 @@ var init_AuthModal = __esm({
|
|
|
4797
4749
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4798
4750
|
},
|
|
4799
4751
|
children: [
|
|
4800
|
-
/* @__PURE__ */
|
|
4801
|
-
/* @__PURE__ */
|
|
4802
|
-
/* @__PURE__ */
|
|
4803
|
-
/* @__PURE__ */
|
|
4804
|
-
/* @__PURE__ */
|
|
4805
|
-
/* @__PURE__ */
|
|
4752
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Email Verification" }),
|
|
4753
|
+
/* @__PURE__ */ jsxs11("div", { className: "p-5", children: [
|
|
4754
|
+
/* @__PURE__ */ jsx19(DialogTopBar, { onBack: goBackToSignIn, className: "-mx-5 -mt-5 mb-1" }),
|
|
4755
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx19("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx19(LumiaLogo, { size: 28 }) }) }),
|
|
4756
|
+
/* @__PURE__ */ jsx19("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "Enter verification code" }),
|
|
4757
|
+
/* @__PURE__ */ jsxs11("p", { className: `text-sm ${theme.bodyText} mb-6`, children: [
|
|
4806
4758
|
"We sent a verification code to",
|
|
4807
|
-
/* @__PURE__ */
|
|
4808
|
-
/* @__PURE__ */
|
|
4759
|
+
/* @__PURE__ */ jsx19("br", {}),
|
|
4760
|
+
/* @__PURE__ */ jsx19("span", { className: "font-semibold", children: email })
|
|
4809
4761
|
] }),
|
|
4810
|
-
/* @__PURE__ */
|
|
4762
|
+
/* @__PURE__ */ jsx19(
|
|
4811
4763
|
VerificationCodeInput,
|
|
4812
4764
|
{
|
|
4813
4765
|
onVerifyCode: verifyCode,
|
|
@@ -4817,10 +4769,10 @@ var init_AuthModal = __esm({
|
|
|
4817
4769
|
error: verificationError
|
|
4818
4770
|
}
|
|
4819
4771
|
),
|
|
4820
|
-
config.features.mpcSecurity && /* @__PURE__ */
|
|
4772
|
+
config.features.mpcSecurity && /* @__PURE__ */ jsxs11("div", { className: `text-xs ${theme.mutedText} mt-6 text-center`, children: [
|
|
4821
4773
|
"protected by \u26A1",
|
|
4822
4774
|
" ",
|
|
4823
|
-
config.ui.branding.link ? /* @__PURE__ */
|
|
4775
|
+
config.ui.branding.link ? /* @__PURE__ */ jsx19("a", { href: config.ui.branding.link.url, target: "_blank", rel: "noopener noreferrer", className: `${theme.linkText} underline font-medium`, children: config.ui.branding.tagline }) : /* @__PURE__ */ jsx19("span", { className: "font-medium", children: config.ui.branding.tagline })
|
|
4824
4776
|
] })
|
|
4825
4777
|
] })
|
|
4826
4778
|
]
|
|
@@ -4828,7 +4780,7 @@ var init_AuthModal = __esm({
|
|
|
4828
4780
|
) });
|
|
4829
4781
|
}
|
|
4830
4782
|
if (step === "telegram") {
|
|
4831
|
-
return /* @__PURE__ */
|
|
4783
|
+
return /* @__PURE__ */ jsx19(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4832
4784
|
DialogContent,
|
|
4833
4785
|
{
|
|
4834
4786
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-visible ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -4837,16 +4789,16 @@ var init_AuthModal = __esm({
|
|
|
4837
4789
|
maxWidth: config.ui.modal?.width || "400px"
|
|
4838
4790
|
},
|
|
4839
4791
|
children: [
|
|
4840
|
-
/* @__PURE__ */
|
|
4841
|
-
/* @__PURE__ */
|
|
4842
|
-
/* @__PURE__ */
|
|
4843
|
-
/* @__PURE__ */
|
|
4844
|
-
/* @__PURE__ */
|
|
4845
|
-
/* @__PURE__ */
|
|
4792
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Telegram Authentication" }),
|
|
4793
|
+
/* @__PURE__ */ jsxs11("div", { className: "p-8", children: [
|
|
4794
|
+
/* @__PURE__ */ jsxs11("div", { className: "text-center mb-6", children: [
|
|
4795
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx19("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx19(LumiaLogo, { size: 32 }) }) }),
|
|
4796
|
+
/* @__PURE__ */ jsx19("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: "Sign in with Telegram" }),
|
|
4797
|
+
/* @__PURE__ */ jsx19("p", { className: `text-sm ${theme.bodyText} mb-6`, children: "Click the button below to authenticate with Telegram" })
|
|
4846
4798
|
] }),
|
|
4847
|
-
/* @__PURE__ */
|
|
4848
|
-
isLoading && /* @__PURE__ */
|
|
4849
|
-
/* @__PURE__ */
|
|
4799
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-6", children: /* @__PURE__ */ jsx19("div", { id: "tg-root", className: "flex justify-center" }) }),
|
|
4800
|
+
isLoading && /* @__PURE__ */ jsx19("div", { className: `text-center text-sm ${theme.successText} mb-4`, children: "Loading Telegram widget..." }),
|
|
4801
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx19(
|
|
4850
4802
|
Button,
|
|
4851
4803
|
{
|
|
4852
4804
|
variant: "outline",
|
|
@@ -4860,24 +4812,24 @@ var init_AuthModal = __esm({
|
|
|
4860
4812
|
}
|
|
4861
4813
|
) });
|
|
4862
4814
|
}
|
|
4863
|
-
return /* @__PURE__ */
|
|
4864
|
-
/* @__PURE__ */
|
|
4815
|
+
return /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
4816
|
+
/* @__PURE__ */ jsx19(Dialog, { open: open && !iframeVisible, onOpenChange, children: /* @__PURE__ */ jsxs11(
|
|
4865
4817
|
DialogContent,
|
|
4866
4818
|
{
|
|
4867
4819
|
className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden`,
|
|
4868
4820
|
children: [
|
|
4869
|
-
/* @__PURE__ */
|
|
4870
|
-
/* @__PURE__ */
|
|
4871
|
-
/* @__PURE__ */
|
|
4872
|
-
/* @__PURE__ */
|
|
4873
|
-
/* @__PURE__ */
|
|
4874
|
-
config.features.mpcSecurity && /* @__PURE__ */
|
|
4821
|
+
/* @__PURE__ */ jsx19(DialogTitle, { className: "sr-only", children: "Sign in to Lumia Passport" }),
|
|
4822
|
+
/* @__PURE__ */ jsxs11("div", { className: "p-8", children: [
|
|
4823
|
+
/* @__PURE__ */ jsxs11("div", { className: "text-center mb-8", children: [
|
|
4824
|
+
/* @__PURE__ */ jsx19("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsx19("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-100 to-blue-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx19(LumiaLogo, { size: 32 }) }) }),
|
|
4825
|
+
/* @__PURE__ */ jsx19("h2", { className: `text-2xl font-bold font-sans ${theme.titleText} mb-2`, children: config.ui.title }),
|
|
4826
|
+
config.features.mpcSecurity && /* @__PURE__ */ jsxs11("div", { className: `text-xs ${theme.mutedText} mb-6`, children: [
|
|
4875
4827
|
"protected by",
|
|
4876
4828
|
" ",
|
|
4877
|
-
/* @__PURE__ */
|
|
4829
|
+
/* @__PURE__ */ jsxs11("span", { className: "font-semibold", children: [
|
|
4878
4830
|
"\u26A1",
|
|
4879
4831
|
" ",
|
|
4880
|
-
config.ui.branding.link ? /* @__PURE__ */
|
|
4832
|
+
config.ui.branding.link ? /* @__PURE__ */ jsx19(
|
|
4881
4833
|
"a",
|
|
4882
4834
|
{
|
|
4883
4835
|
href: config.ui.branding.link.url,
|
|
@@ -4890,7 +4842,7 @@ var init_AuthModal = __esm({
|
|
|
4890
4842
|
] })
|
|
4891
4843
|
] })
|
|
4892
4844
|
] }),
|
|
4893
|
-
/* @__PURE__ */
|
|
4845
|
+
/* @__PURE__ */ jsxs11("div", { className: "space-y-4", children: [
|
|
4894
4846
|
(() => {
|
|
4895
4847
|
const order = config.ui.authOrder || ["passkey", "email", "social"];
|
|
4896
4848
|
const isPasskey = config.passkey.enabled;
|
|
@@ -4901,8 +4853,8 @@ var init_AuthModal = __esm({
|
|
|
4901
4853
|
);
|
|
4902
4854
|
const renderSection = (kind) => {
|
|
4903
4855
|
if (kind === "passkey") {
|
|
4904
|
-
return /* @__PURE__ */
|
|
4905
|
-
/* @__PURE__ */
|
|
4856
|
+
return /* @__PURE__ */ jsxs11("div", { className: "space-y-3", children: [
|
|
4857
|
+
/* @__PURE__ */ jsxs11(
|
|
4906
4858
|
Button,
|
|
4907
4859
|
{
|
|
4908
4860
|
variant: "plain",
|
|
@@ -4910,14 +4862,14 @@ var init_AuthModal = __esm({
|
|
|
4910
4862
|
disabled: isLoading,
|
|
4911
4863
|
className: `w-full h-14 ${theme.primaryBtn} rounded-2xl font-semibold shadow-sm`,
|
|
4912
4864
|
children: [
|
|
4913
|
-
/* @__PURE__ */
|
|
4865
|
+
/* @__PURE__ */ jsx19(Fingerprint, { className: "w-5 h-5 mr-2" }),
|
|
4914
4866
|
"Sign in with existing Passkey"
|
|
4915
4867
|
]
|
|
4916
4868
|
}
|
|
4917
4869
|
),
|
|
4918
|
-
config.passkey.showCreateButton && /* @__PURE__ */
|
|
4919
|
-
/* @__PURE__ */
|
|
4920
|
-
/* @__PURE__ */
|
|
4870
|
+
config.passkey.showCreateButton && /* @__PURE__ */ jsxs11("div", { className: `border-t ${theme.divider} pt-3`, children: [
|
|
4871
|
+
/* @__PURE__ */ jsx19("div", { className: `text-center text-sm ${theme.bodyText} mb-3`, children: "Don't have a passkey? Create one:" }),
|
|
4872
|
+
/* @__PURE__ */ jsxs11(
|
|
4921
4873
|
Button,
|
|
4922
4874
|
{
|
|
4923
4875
|
variant: "plain",
|
|
@@ -4925,23 +4877,23 @@ var init_AuthModal = __esm({
|
|
|
4925
4877
|
disabled: isLoading,
|
|
4926
4878
|
className: `w-full h-12 ${theme.outlineBtn} rounded-xl font-medium border`,
|
|
4927
4879
|
children: [
|
|
4928
|
-
/* @__PURE__ */
|
|
4880
|
+
/* @__PURE__ */ jsx19(KeyRound, { className: "w-5 h-5 mr-2" }),
|
|
4929
4881
|
"Create Passkey"
|
|
4930
4882
|
]
|
|
4931
4883
|
}
|
|
4932
4884
|
)
|
|
4933
4885
|
] }),
|
|
4934
|
-
(passkeyError || passkeyStatus !== "idle") && /* @__PURE__ */
|
|
4935
|
-
passkeyError && /* @__PURE__ */
|
|
4936
|
-
passkeyStatus !== "idle" && /* @__PURE__ */
|
|
4886
|
+
(passkeyError || passkeyStatus !== "idle") && /* @__PURE__ */ jsxs11("div", { className: "text-center", children: [
|
|
4887
|
+
passkeyError && /* @__PURE__ */ jsx19("div", { className: `text-sm ${theme.errorText} mb-2 break-words whitespace-pre-wrap text-left mx-auto max-w-full max-h-24 overflow-auto`, children: passkeyError }),
|
|
4888
|
+
passkeyStatus !== "idle" && /* @__PURE__ */ jsx19("div", { className: `text-sm ${theme.successText}`, children: passkeyStatus })
|
|
4937
4889
|
] })
|
|
4938
4890
|
] }, "passkey");
|
|
4939
4891
|
}
|
|
4940
4892
|
if (kind === "email") {
|
|
4941
|
-
return /* @__PURE__ */
|
|
4942
|
-
/* @__PURE__ */
|
|
4943
|
-
/* @__PURE__ */
|
|
4944
|
-
/* @__PURE__ */
|
|
4893
|
+
return /* @__PURE__ */ jsxs11("div", { className: "space-y-3", children: [
|
|
4894
|
+
/* @__PURE__ */ jsxs11("div", { className: "relative", children: [
|
|
4895
|
+
/* @__PURE__ */ jsx19(Mail, { className: `absolute left-3 top-3 h-5 w-5 ${theme.iconColor}` }),
|
|
4896
|
+
/* @__PURE__ */ jsx19(
|
|
4945
4897
|
Input,
|
|
4946
4898
|
{
|
|
4947
4899
|
type: "email",
|
|
@@ -4952,7 +4904,7 @@ var init_AuthModal = __esm({
|
|
|
4952
4904
|
}
|
|
4953
4905
|
)
|
|
4954
4906
|
] }),
|
|
4955
|
-
/* @__PURE__ */
|
|
4907
|
+
/* @__PURE__ */ jsx19(
|
|
4956
4908
|
Button,
|
|
4957
4909
|
{
|
|
4958
4910
|
variant: "plain",
|
|
@@ -4962,10 +4914,10 @@ var init_AuthModal = __esm({
|
|
|
4962
4914
|
children: isLoading ? "Sending..." : config.email.buttonText
|
|
4963
4915
|
}
|
|
4964
4916
|
),
|
|
4965
|
-
sendError && /* @__PURE__ */
|
|
4917
|
+
sendError && /* @__PURE__ */ jsx19("div", { className: `text-sm ${theme.errorText} mt-2 text-center break-words whitespace-pre-wrap`, children: sendError })
|
|
4966
4918
|
] }, "email");
|
|
4967
4919
|
}
|
|
4968
|
-
return /* @__PURE__ */
|
|
4920
|
+
return /* @__PURE__ */ jsx19("div", { className: `grid grid-cols-${config.social.gridColumns} gap-3`, children: config.social.providers.filter((provider) => provider.enabled).map((provider) => {
|
|
4969
4921
|
const fallbackMap = {
|
|
4970
4922
|
google: GoogleIcon,
|
|
4971
4923
|
telegram: TelegramIcon,
|
|
@@ -4975,7 +4927,7 @@ var init_AuthModal = __esm({
|
|
|
4975
4927
|
};
|
|
4976
4928
|
const IconComponent = provider.icon ?? fallbackMap[(provider.id || "").toLowerCase()];
|
|
4977
4929
|
const handleClick = provider.id === "telegram" ? handleTelegramAuth : () => handleComingSoon(provider.name);
|
|
4978
|
-
return /* @__PURE__ */
|
|
4930
|
+
return /* @__PURE__ */ jsx19(
|
|
4979
4931
|
Button,
|
|
4980
4932
|
{
|
|
4981
4933
|
variant: "outline",
|
|
@@ -4983,7 +4935,7 @@ var init_AuthModal = __esm({
|
|
|
4983
4935
|
onClick: handleClick,
|
|
4984
4936
|
disabled: isLoading,
|
|
4985
4937
|
title: provider.comingSoon ? `${provider.name} (Coming Soon)` : provider.name,
|
|
4986
|
-
children: IconComponent ? /* @__PURE__ */
|
|
4938
|
+
children: IconComponent ? /* @__PURE__ */ jsx19(IconComponent, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx19("span", { className: "text-sm", children: provider.name })
|
|
4987
4939
|
},
|
|
4988
4940
|
provider.id
|
|
4989
4941
|
);
|
|
@@ -4993,10 +4945,10 @@ var init_AuthModal = __esm({
|
|
|
4993
4945
|
enabled.forEach((kind, idx) => {
|
|
4994
4946
|
if (idx > 0) {
|
|
4995
4947
|
nodes.push(
|
|
4996
|
-
/* @__PURE__ */
|
|
4997
|
-
/* @__PURE__ */
|
|
4998
|
-
/* @__PURE__ */
|
|
4999
|
-
/* @__PURE__ */
|
|
4948
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-center my-6", children: [
|
|
4949
|
+
/* @__PURE__ */ jsx19("div", { className: `flex-1 border-t ${theme.divider}` }),
|
|
4950
|
+
/* @__PURE__ */ jsx19("div", { className: `px-3 ${theme.mutedText} text-sm`, children: "Or" }),
|
|
4951
|
+
/* @__PURE__ */ jsx19("div", { className: `flex-1 border-t ${theme.divider}` })
|
|
5000
4952
|
] }, `div-${idx}`)
|
|
5001
4953
|
);
|
|
5002
4954
|
}
|
|
@@ -5004,10 +4956,10 @@ var init_AuthModal = __esm({
|
|
|
5004
4956
|
});
|
|
5005
4957
|
return nodes;
|
|
5006
4958
|
})(),
|
|
5007
|
-
/* @__PURE__ */
|
|
4959
|
+
/* @__PURE__ */ jsxs11("div", { className: `text-center mt-6 text-sm ${theme.mutedText} font-medium font-sans`, children: [
|
|
5008
4960
|
"By signing in, you agree to the",
|
|
5009
4961
|
" ",
|
|
5010
|
-
/* @__PURE__ */
|
|
4962
|
+
/* @__PURE__ */ jsx19(
|
|
5011
4963
|
"button",
|
|
5012
4964
|
{
|
|
5013
4965
|
onClick: () => setShowTerms(true),
|
|
@@ -5021,8 +4973,8 @@ var init_AuthModal = __esm({
|
|
|
5021
4973
|
]
|
|
5022
4974
|
}
|
|
5023
4975
|
) }),
|
|
5024
|
-
/* @__PURE__ */
|
|
5025
|
-
/* @__PURE__ */
|
|
4976
|
+
/* @__PURE__ */ jsx19(TermsOfService, { open: showTerms, onOpenChange: setShowTerms }),
|
|
4977
|
+
/* @__PURE__ */ jsx19(ErrorAlert2, {})
|
|
5026
4978
|
] });
|
|
5027
4979
|
};
|
|
5028
4980
|
}
|
|
@@ -5647,7 +5599,7 @@ var init_clients = __esm({
|
|
|
5647
5599
|
});
|
|
5648
5600
|
|
|
5649
5601
|
// src/styles/built.css
|
|
5650
|
-
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}';
|
|
5602
|
+
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope{background-color:hsl(var(--background));color:hsl(var(--foreground))}.lumia-scope,.lumia-scope *,.lumia-scope :after,.lumia-scope :before{box-sizing:border-box;border-width:0;border-style:solid}.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font:inherit;color:inherit;margin:0;background-color:transparent}.lumia-scope button{font:inherit;margin:0;background-color:transparent;border:0}.lumia-scope input[type=search]::-webkit-search-cancel-button,.lumia-scope input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.lumia-scope,.lumia-scope *,.lumia-scope .lumia-heading,.lumia-scope [data-radix-dialog-content],.lumia-scope [data-radix-dialog-content] *,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-heading{font-weight:700}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .left-\\[50\\%\\]{left:50%}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[50\\%\\]{top:50%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[2147483646\\]{z-index:2147483646}.lumia-scope .z-\\[2147483647\\]{z-index:2147483647}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .-m-px{margin:-1px}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-1\\.5{margin-bottom:.375rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1,.lumia-scope .-translate-y-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.lumia-scope .translate-x-\\[-50\\%\\],.lumia-scope .translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{box-shadow:0 0 0 rgba(234,88,12,.5)}50%{box-shadow:0 0 20px rgba(234,88,12,.8)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease-in-out infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.875rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.875rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis}.lumia-scope .truncate,.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:var(--radius)}.lumia-scope .rounded-md{border-radius:calc(var(--radius) - 2px)}.lumia-scope .rounded-sm{border-radius:calc(var(--radius) - 4px)}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500\\/30{border-color:rgba(245,158,11,.3)}.lumia-scope .border-amber-500\\/40{border-color:rgba(245,158,11,.4)}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500\\/30{border-color:rgba(59,130,246,.3)}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-border{border-color:hsl(var(--border))}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-500\\/40{border-color:rgba(34,197,94,.4)}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-green-900\\/60{border-color:rgba(20,83,45,.6)}.lumia-scope .border-input{border-color:hsl(var(--input))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-500\\/40{border-color:rgba(239,68,68,.4)}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-red-900\\/60{border-color:rgba(127,29,29,.6)}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .\\!bg-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#2456f0\\]{--tw-bg-opacity:1;background-color:rgb(36 86 240/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#db2777\\]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#fde2f3\\]{--tw-bg-opacity:1;background-color:rgb(253 226 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500\\/10{background-color:rgba(245,158,11,.1)}.lumia-scope .bg-amber-500\\/15{background-color:rgba(245,158,11,.15)}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-background{background-color:hsl(var(--background))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-black\\/50{background-color:rgba(0,0,0,.5)}.lumia-scope .bg-black\\/80{background-color:rgba(0,0,0,.8)}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50\\/50{background-color:rgba(239,246,255,.5)}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500\\/10{background-color:rgba(59,130,246,.1)}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-card{background-color:hsl(var(--card))}.lumia-scope .bg-destructive{background-color:hsl(var(--destructive))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800\\/50{background-color:rgba(31,41,55,.5)}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500\\/15{background-color:rgba(34,197,94,.15)}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-950\\/50{background-color:rgba(5,46,22,.5)}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-primary{background-color:hsl(var(--primary))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50\\/50{background-color:rgba(250,245,255,.5)}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500\\/10{background-color:rgba(168,85,247,.1)}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500\\/15{background-color:rgba(239,68,68,.15)}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/50{background-color:rgba(69,10,10,.5)}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-secondary{background-color:hsl(var(--secondary))}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-50\\/50{background-color:rgba(240,249,255,.5)}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500\\/10{background-color:rgba(14,165,233,.1)}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-card-foreground{color:hsl(var(--card-foreground))}.lumia-scope .text-destructive{color:hsl(var(--destructive))}.lumia-scope .text-destructive-foreground{color:hsl(var(--destructive-foreground))}.lumia-scope .text-foreground{color:hsl(var(--foreground))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-muted-foreground{color:hsl(var(--muted-foreground))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-primary{color:hsl(var(--primary))}.lumia-scope .text-primary-foreground{color:hsl(var(--primary-foreground))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-secondary-foreground{color:hsl(var(--secondary-foreground))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline{outline-style:solid}.lumia-scope .ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope .\\[background\\:var\\(--lumia-bg\\)\\]{background:var(--lumia-bg)}.lumia-scope .\\[border-color\\:var\\(--lumia-border\\)\\]{border-color:var(--lumia-border)}.lumia-scope .\\[color\\:var\\(--lumia-text\\)\\]{color:var(--lumia-text)}.lumia-scope .\\[color\\:var\\(--lumia-text-muted\\)\\]{color:var(--lumia-text-muted)}.lumia-scope .\\[color\\:var\\(--lumia-text-secondary\\)\\]{color:var(--lumia-text-secondary)}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded::file-selector-button{border-radius:.25rem}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-purple-600::file-selector-button{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-white::file-selector-button{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#1e49d8\\]:hover{--tw-bg-opacity:1;background-color:rgb(30 73 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#be185d\\]:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#f7c1df\\]:hover{--tw-bg-opacity:1;background-color:rgb(247 193 223/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-accent:hover{background-color:hsl(var(--accent))}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive)/.9)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-900\\/30:hover{background-color:rgba(20,83,45,.3)}.lumia-scope .hover\\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-primary\\/80:hover{background-color:hsl(var(--primary)/.8)}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary)/.8)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:from-purple-600:hover{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .hover\\:from-purple-700:hover{--tw-gradient-from:#7e22ce var(--tw-gradient-from-position);--tw-gradient-to:rgba(126,34,206,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .hover\\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.lumia-scope .hover\\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:no-underline:hover{text-decoration-line:none}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:bg-purple-700::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-blue-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus-visible\\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .disabled\\:pointer-events-none:disabled{pointer-events:none}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}@media (min-width:640px){.lumia-scope .sm\\:mt-0{margin-top:0}.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:rounded-lg{border-radius:var(--radius)}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .dark\\:focus\\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:size-4 svg){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
5651
5603
|
|
|
5652
5604
|
// src/index.ts
|
|
5653
5605
|
init_LumiaPassportContext();
|
|
@@ -6042,7 +5994,7 @@ var WalletConnectHandler = ({
|
|
|
6042
5994
|
};
|
|
6043
5995
|
|
|
6044
5996
|
// src/internal/components/ManageWallet.tsx
|
|
6045
|
-
import { Fragment as Fragment4, jsx as
|
|
5997
|
+
import { Fragment as Fragment4, jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
6046
5998
|
var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
6047
5999
|
const [providers, setProviders] = useState7([]);
|
|
6048
6000
|
const [loading, setLoading] = useState7(false);
|
|
@@ -6189,8 +6141,8 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6189
6141
|
setLinkIsLoading(false);
|
|
6190
6142
|
}
|
|
6191
6143
|
};
|
|
6192
|
-
return /* @__PURE__ */
|
|
6193
|
-
config.wallet?.enabled && /* @__PURE__ */
|
|
6144
|
+
return /* @__PURE__ */ jsxs12(Fragment4, { children: [
|
|
6145
|
+
config.wallet?.enabled && /* @__PURE__ */ jsx20(
|
|
6194
6146
|
WalletConnectHandler,
|
|
6195
6147
|
{
|
|
6196
6148
|
isLinking: isWalletLinking,
|
|
@@ -6223,79 +6175,79 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6223
6175
|
onLoadingChange: setLinkIsLoading
|
|
6224
6176
|
}
|
|
6225
6177
|
),
|
|
6226
|
-
/* @__PURE__ */
|
|
6178
|
+
/* @__PURE__ */ jsxs12(Dialog, { open, onOpenChange: (newOpen) => {
|
|
6227
6179
|
onOpenChange(newOpen);
|
|
6228
6180
|
if (!newOpen) {
|
|
6229
6181
|
setIsWalletLinking(false);
|
|
6230
6182
|
}
|
|
6231
6183
|
}, children: [
|
|
6232
|
-
/* @__PURE__ */
|
|
6233
|
-
/* @__PURE__ */
|
|
6234
|
-
onBack && /* @__PURE__ */
|
|
6184
|
+
/* @__PURE__ */ jsx20(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ jsxs12("div", { className: "p-5", children: [
|
|
6185
|
+
/* @__PURE__ */ jsx20("div", { className: "flex items-center justify-between mb-3", children: /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
|
|
6186
|
+
onBack && /* @__PURE__ */ jsx20(
|
|
6235
6187
|
"button",
|
|
6236
6188
|
{
|
|
6237
6189
|
onClick: onBack,
|
|
6238
6190
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6239
6191
|
title: "Back",
|
|
6240
|
-
children: /* @__PURE__ */
|
|
6192
|
+
children: /* @__PURE__ */ jsx20(ArrowLeft3, { className: "h-4 w-4" })
|
|
6241
6193
|
}
|
|
6242
6194
|
),
|
|
6243
|
-
/* @__PURE__ */
|
|
6244
|
-
/* @__PURE__ */
|
|
6245
|
-
/* @__PURE__ */
|
|
6195
|
+
/* @__PURE__ */ jsxs12("div", { children: [
|
|
6196
|
+
/* @__PURE__ */ jsx20(VisuallyHidden, { children: /* @__PURE__ */ jsx20(DialogTitle, { children: "Manage Wallet Authentication" }) }),
|
|
6197
|
+
/* @__PURE__ */ jsx20("h2", { className: `text-xl font-semibold ${theme.titleText}`, children: "Manage Wallet Authentication" })
|
|
6246
6198
|
] })
|
|
6247
6199
|
] }) }),
|
|
6248
|
-
/* @__PURE__ */
|
|
6249
|
-
error && /* @__PURE__ */
|
|
6250
|
-
/* @__PURE__ */
|
|
6251
|
-
/* @__PURE__ */
|
|
6200
|
+
/* @__PURE__ */ jsx20(DialogDescription, { className: `mb-4 ${theme.bodyText}`, children: "Manage your connected authentication methods" }),
|
|
6201
|
+
error && /* @__PURE__ */ jsxs12("div", { className: `mt-4 p-3 rounded text-sm flex items-start gap-2 break-words whitespace-pre-wrap max-h-24 overflow-auto ${isDark ? "bg-red-900/30 border border-red-900 text-red-400" : "bg-red-50 border border-red-200 text-red-700"}`, children: [
|
|
6202
|
+
/* @__PURE__ */ jsx20(AlertTriangle2, { className: "w-4 h-4 mt-0.5 shrink-0" }),
|
|
6203
|
+
/* @__PURE__ */ jsx20("span", { className: "block", children: error })
|
|
6252
6204
|
] }),
|
|
6253
|
-
loading ? /* @__PURE__ */
|
|
6254
|
-
/* @__PURE__ */
|
|
6205
|
+
loading ? /* @__PURE__ */ jsxs12("div", { className: `flex items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
6206
|
+
/* @__PURE__ */ jsx20(RefreshCw, { className: "w-5 h-5 mr-2 animate-spin" }),
|
|
6255
6207
|
"Loading authentication providers\u2026"
|
|
6256
|
-
] }) : /* @__PURE__ */
|
|
6208
|
+
] }) : /* @__PURE__ */ jsx20("div", { className: "mt-3 space-y-3", children: providers.map((p) => {
|
|
6257
6209
|
const info = getProviderDisplayInfo(p.provider);
|
|
6258
6210
|
const allowUnlink = canUnlink(p);
|
|
6259
|
-
return /* @__PURE__ */
|
|
6260
|
-
/* @__PURE__ */
|
|
6261
|
-
/* @__PURE__ */
|
|
6262
|
-
/* @__PURE__ */
|
|
6263
|
-
/* @__PURE__ */
|
|
6211
|
+
return /* @__PURE__ */ jsxs12("div", { className: `border rounded-xl p-3 ${isDark ? "border-gray-700 bg-gray-800" : "border-gray-200 bg-white"}`, children: [
|
|
6212
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center justify-between", children: [
|
|
6213
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3", children: [
|
|
6214
|
+
/* @__PURE__ */ jsx20("div", { className: `text-lg ${isDark ? "text-gray-400" : "text-gray-600"}`, children: info.icon }),
|
|
6215
|
+
/* @__PURE__ */ jsx20("div", { className: `text-sm font-medium ${theme.titleText}`, children: info.name })
|
|
6264
6216
|
] }),
|
|
6265
|
-
/* @__PURE__ */
|
|
6266
|
-
p.verified ? /* @__PURE__ */
|
|
6267
|
-
allowUnlink && /* @__PURE__ */
|
|
6217
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
|
|
6218
|
+
p.verified ? /* @__PURE__ */ jsx20(CheckCircle, { className: `w-4 h-4 ${isDark ? "text-green-400" : "text-green-500"}` }) : /* @__PURE__ */ jsx20(Clock, { className: "w-4 h-4 text-yellow-500" }),
|
|
6219
|
+
allowUnlink && /* @__PURE__ */ jsx20(
|
|
6268
6220
|
"button",
|
|
6269
6221
|
{
|
|
6270
6222
|
onClick: () => setConfirmUnlink({ provider: p.provider, providerName: info.name, externalId: p.externalId }),
|
|
6271
6223
|
className: `p-1 ${isDark ? "text-red-400 hover:text-red-300" : "text-red-500 hover:text-red-700"}`,
|
|
6272
6224
|
title: "Remove provider",
|
|
6273
|
-
children: unlinking === p.provider ? /* @__PURE__ */
|
|
6225
|
+
children: unlinking === p.provider ? /* @__PURE__ */ jsx20(RefreshCw, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx20(Trash2, { className: "w-4 h-4" })
|
|
6274
6226
|
}
|
|
6275
6227
|
)
|
|
6276
6228
|
] })
|
|
6277
6229
|
] }),
|
|
6278
|
-
/* @__PURE__ */
|
|
6279
|
-
/* @__PURE__ */
|
|
6280
|
-
/* @__PURE__ */
|
|
6230
|
+
/* @__PURE__ */ jsxs12("div", { className: `mt-2 space-y-1 text-xs ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6231
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-1", children: [
|
|
6232
|
+
/* @__PURE__ */ jsx20(LinkIcon, { className: `w-3 h-3 ${isDark ? "text-gray-500" : "text-gray-400"}` }),
|
|
6281
6233
|
"Linked: ",
|
|
6282
6234
|
formatDate(p.linkedAt)
|
|
6283
6235
|
] }),
|
|
6284
|
-
p.lastUsedAt && /* @__PURE__ */
|
|
6285
|
-
/* @__PURE__ */
|
|
6236
|
+
p.lastUsedAt && /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-1", children: [
|
|
6237
|
+
/* @__PURE__ */ jsx20(Clock, { className: `w-3 h-3 ${isDark ? "text-gray-500" : "text-gray-400"}` }),
|
|
6286
6238
|
"Last used: ",
|
|
6287
6239
|
formatDate(p.lastUsedAt)
|
|
6288
6240
|
] }),
|
|
6289
|
-
p.externalId && /* @__PURE__ */
|
|
6241
|
+
p.externalId && /* @__PURE__ */ jsxs12("div", { className: `text-[10px] font-mono break-all ${isDark ? "text-gray-500" : "text-gray-500"}`, children: [
|
|
6290
6242
|
"ID: ",
|
|
6291
6243
|
p.externalId
|
|
6292
6244
|
] })
|
|
6293
6245
|
] })
|
|
6294
6246
|
] }, `${p.provider}-${p.externalId}`);
|
|
6295
6247
|
}) }),
|
|
6296
|
-
/* @__PURE__ */
|
|
6248
|
+
/* @__PURE__ */ jsx20("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ jsx20(Button, { variant: "success", onClick: () => setShowAdd(true), children: "+ Add Provider" }) })
|
|
6297
6249
|
] }) }),
|
|
6298
|
-
/* @__PURE__ */
|
|
6250
|
+
/* @__PURE__ */ jsx20(Dialog, { open: showAdd, onOpenChange: (v) => {
|
|
6299
6251
|
setShowAdd(v);
|
|
6300
6252
|
if (!v) {
|
|
6301
6253
|
setProviderType(null);
|
|
@@ -6303,9 +6255,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6303
6255
|
setEmailCode("");
|
|
6304
6256
|
setEmailCodeSent(false);
|
|
6305
6257
|
}
|
|
6306
|
-
}, children: /* @__PURE__ */
|
|
6307
|
-
/* @__PURE__ */
|
|
6308
|
-
/* @__PURE__ */
|
|
6258
|
+
}, children: /* @__PURE__ */ jsx20(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ jsxs12("div", { className: "p-5", children: [
|
|
6259
|
+
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
6260
|
+
/* @__PURE__ */ jsx20(
|
|
6309
6261
|
"button",
|
|
6310
6262
|
{
|
|
6311
6263
|
onClick: () => {
|
|
@@ -6321,27 +6273,27 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6321
6273
|
},
|
|
6322
6274
|
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6323
6275
|
title: "Back",
|
|
6324
|
-
children: /* @__PURE__ */
|
|
6276
|
+
children: /* @__PURE__ */ jsx20(ArrowLeft3, { className: "h-4 w-4" })
|
|
6325
6277
|
}
|
|
6326
6278
|
),
|
|
6327
|
-
/* @__PURE__ */
|
|
6279
|
+
/* @__PURE__ */ jsx20(DialogTitle, { className: `text-xl font-semibold ${theme.titleText}`, children: "Add Authentication Method" })
|
|
6328
6280
|
] }),
|
|
6329
|
-
/* @__PURE__ */
|
|
6330
|
-
!providerType ? /* @__PURE__ */
|
|
6331
|
-
config.passkey.enabled && /* @__PURE__ */
|
|
6332
|
-
/* @__PURE__ */
|
|
6281
|
+
/* @__PURE__ */ jsx20(DialogDescription, { className: `${theme.bodyText} mb-4`, children: "Add a new way to authenticate to your account" }),
|
|
6282
|
+
!providerType ? /* @__PURE__ */ jsxs12("div", { className: "mt-3 space-y-4", children: [
|
|
6283
|
+
config.passkey.enabled && /* @__PURE__ */ jsxs12(Button, { onClick: () => setProviderType("passkey"), className: "w-full", size: "lg", children: [
|
|
6284
|
+
/* @__PURE__ */ jsx20(Key2, { className: "w-4 h-4 mr-2" }),
|
|
6333
6285
|
"Link with Passkey"
|
|
6334
6286
|
] }),
|
|
6335
|
-
config.passkey.enabled && (config.email.enabled || config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */
|
|
6336
|
-
config.email.enabled && /* @__PURE__ */
|
|
6337
|
-
/* @__PURE__ */
|
|
6338
|
-
/* @__PURE__ */
|
|
6287
|
+
config.passkey.enabled && (config.email.enabled || config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ jsx20("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6288
|
+
config.email.enabled && /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
|
|
6289
|
+
/* @__PURE__ */ jsx20(Input, { type: "email", placeholder: config.email.placeholder || "Enter your email", value: email, onChange: (e) => setEmail(e.target.value), className: `h-11 ${isDark ? "bg-gray-800 border-gray-600 text-gray-100 placeholder:text-gray-500" : ""}` }),
|
|
6290
|
+
/* @__PURE__ */ jsx20(Button, { onClick: () => {
|
|
6339
6291
|
setProviderType("email");
|
|
6340
6292
|
handleSendCode();
|
|
6341
6293
|
}, disabled: !email, className: "w-full", size: "lg", variant: "secondary", children: "Continue" })
|
|
6342
6294
|
] }),
|
|
6343
|
-
(config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */
|
|
6344
|
-
config.wallet?.enabled && /* @__PURE__ */
|
|
6295
|
+
(config.wallet?.enabled || config.social.enabled && config.social.providers.some((p) => p.enabled)) && /* @__PURE__ */ jsx20("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6296
|
+
config.wallet?.enabled && /* @__PURE__ */ jsxs12(
|
|
6345
6297
|
Button,
|
|
6346
6298
|
{
|
|
6347
6299
|
onClick: () => {
|
|
@@ -6357,24 +6309,24 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6357
6309
|
size: "lg",
|
|
6358
6310
|
variant: "outline",
|
|
6359
6311
|
children: [
|
|
6360
|
-
/* @__PURE__ */
|
|
6312
|
+
/* @__PURE__ */ jsx20(Wallet, { className: "w-4 h-4 mr-2" }),
|
|
6361
6313
|
"Connect External Wallet"
|
|
6362
6314
|
]
|
|
6363
6315
|
}
|
|
6364
6316
|
),
|
|
6365
|
-
config.wallet?.enabled && config.social.enabled && config.social.providers.some((p) => p.enabled) && /* @__PURE__ */
|
|
6366
|
-
config.social.enabled && /* @__PURE__ */
|
|
6317
|
+
config.wallet?.enabled && config.social.enabled && config.social.providers.some((p) => p.enabled) && /* @__PURE__ */ jsx20("div", { className: `text-center text-sm ${theme.mutedText}`, children: "Or" }),
|
|
6318
|
+
config.social.enabled && /* @__PURE__ */ jsx20("div", { className: `grid grid-cols-${config.social.gridColumns} gap-2`, children: config.social.providers.filter((p) => p.enabled).map((sp) => {
|
|
6367
6319
|
const map = { google: GoogleIcon, telegram: TelegramIcon, twitter: TwitterIcon, x: TwitterIcon, discord: DiscordIcon };
|
|
6368
6320
|
const F = sp.icon || map[sp.id.toLowerCase()];
|
|
6369
|
-
return /* @__PURE__ */
|
|
6321
|
+
return /* @__PURE__ */ jsx20(Button, { variant: "outline", onClick: () => setProviderType(sp.id), className: `p-0 flex items-center justify-center [&_svg]:!w-5 [&_svg]:!h-5 ${isDark ? "bg-gray-800 border-gray-600 hover:bg-gray-700" : "bg-white border-gray-200 hover:bg-gray-50"}`, size: "lg", children: F ? /* @__PURE__ */ jsx20(F, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx20("span", { className: "text-sm", children: sp.name }) }, sp.id);
|
|
6370
6322
|
}) })
|
|
6371
|
-
] }) : /* @__PURE__ */
|
|
6372
|
-
providerType === "email" && emailCodeSent && /* @__PURE__ */
|
|
6373
|
-
/* @__PURE__ */
|
|
6323
|
+
] }) : /* @__PURE__ */ jsxs12("div", { className: "mt-3 space-y-3", children: [
|
|
6324
|
+
providerType === "email" && emailCodeSent && /* @__PURE__ */ jsxs12("div", { className: "space-y-2", children: [
|
|
6325
|
+
/* @__PURE__ */ jsxs12("div", { className: `p-3 rounded text-sm ${isDark ? "bg-green-900/30 border border-green-900 text-green-400" : "bg-green-50 border border-green-200 text-green-700"}`, children: [
|
|
6374
6326
|
"Verification code sent to ",
|
|
6375
6327
|
email
|
|
6376
6328
|
] }),
|
|
6377
|
-
/* @__PURE__ */
|
|
6329
|
+
/* @__PURE__ */ jsx20(
|
|
6378
6330
|
VerificationCodeInput,
|
|
6379
6331
|
{
|
|
6380
6332
|
onVerifyCode: handleVerifyCode,
|
|
@@ -6385,9 +6337,9 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6385
6337
|
}
|
|
6386
6338
|
)
|
|
6387
6339
|
] }),
|
|
6388
|
-
providerType === "passkey" && /* @__PURE__ */
|
|
6389
|
-
/* @__PURE__ */
|
|
6390
|
-
/* @__PURE__ */
|
|
6340
|
+
providerType === "passkey" && /* @__PURE__ */ jsxs12("div", { className: "space-y-3", children: [
|
|
6341
|
+
/* @__PURE__ */ jsx20("div", { className: `p-3 rounded-xl text-sm ${isDark ? "bg-blue-900/30 border border-blue-900 text-blue-400" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: "Link a passkey to your account using WebAuthn. Your device may let you choose an existing passkey; otherwise a new one will be created." }),
|
|
6342
|
+
/* @__PURE__ */ jsxs12(
|
|
6391
6343
|
Button,
|
|
6392
6344
|
{
|
|
6393
6345
|
onClick: async () => {
|
|
@@ -6417,12 +6369,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6417
6369
|
size: "lg",
|
|
6418
6370
|
disabled: linkIsLoading,
|
|
6419
6371
|
children: [
|
|
6420
|
-
/* @__PURE__ */
|
|
6372
|
+
/* @__PURE__ */ jsx20(Key2, { className: "w-4 h-4 mr-2" }),
|
|
6421
6373
|
linkIsLoading ? "Linking\u2026" : "Create on This Device"
|
|
6422
6374
|
]
|
|
6423
6375
|
}
|
|
6424
6376
|
),
|
|
6425
|
-
/* @__PURE__ */
|
|
6377
|
+
/* @__PURE__ */ jsx20(
|
|
6426
6378
|
Button,
|
|
6427
6379
|
{
|
|
6428
6380
|
onClick: async () => {
|
|
@@ -6455,13 +6407,13 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6455
6407
|
children: "Create on Security Key"
|
|
6456
6408
|
}
|
|
6457
6409
|
),
|
|
6458
|
-
linkError && /* @__PURE__ */
|
|
6410
|
+
linkError && /* @__PURE__ */ jsx20("div", { className: `p-3 rounded text-sm break-words whitespace-pre-wrap ${isDark ? "bg-red-900/30 border border-red-900 text-red-400" : "bg-red-50 border border-red-200 text-red-700"}`, children: linkError })
|
|
6459
6411
|
] }),
|
|
6460
|
-
providerType === "telegram" && /* @__PURE__ */
|
|
6461
|
-
/* @__PURE__ */
|
|
6462
|
-
/* @__PURE__ */
|
|
6412
|
+
providerType === "telegram" && /* @__PURE__ */ jsxs12("div", { className: "space-y-3", children: [
|
|
6413
|
+
/* @__PURE__ */ jsx20("div", { className: `p-3 rounded-xl text-sm ${isDark ? "bg-blue-900/30 border border-blue-900 text-blue-400" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: config.social?.providers?.find((p) => (p.id || "").toLowerCase() === "telegram")?.meta?.botUsername ? "Authenticate with Telegram to link your account." : "Telegram bot username is not configured." }),
|
|
6414
|
+
/* @__PURE__ */ jsx20("div", { ref: telegramContainerRef, className: "flex justify-center" })
|
|
6463
6415
|
] }),
|
|
6464
|
-
providerType && providerType !== "email" && providerType !== "passkey" && providerType !== "telegram" && providerType !== "wallet" && /* @__PURE__ */
|
|
6416
|
+
providerType && providerType !== "email" && providerType !== "passkey" && providerType !== "telegram" && providerType !== "wallet" && /* @__PURE__ */ jsxs12("div", { className: `p-3 rounded-xl text-sm ${isDark ? "bg-blue-900/30 border border-blue-900 text-blue-400" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: [
|
|
6465
6417
|
"Linking with ",
|
|
6466
6418
|
providerType.charAt(0).toUpperCase() + providerType.slice(1),
|
|
6467
6419
|
" requires OAuth implementation. This would typically redirect to ",
|
|
@@ -6470,23 +6422,23 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6470
6422
|
] })
|
|
6471
6423
|
] })
|
|
6472
6424
|
] }) }) }),
|
|
6473
|
-
/* @__PURE__ */
|
|
6425
|
+
/* @__PURE__ */ jsx20(Dialog, { open: !!confirmUnlink, onOpenChange: (v) => {
|
|
6474
6426
|
if (!v) {
|
|
6475
6427
|
setConfirmUnlink(null);
|
|
6476
6428
|
setConfirmInput("");
|
|
6477
6429
|
}
|
|
6478
|
-
}, children: /* @__PURE__ */
|
|
6479
|
-
/* @__PURE__ */
|
|
6480
|
-
/* @__PURE__ */
|
|
6430
|
+
}, children: /* @__PURE__ */ jsx20(DialogContent, { className: `lumia-scope max-w-[380px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden ${isDark ? "lumia-dark" : "lumia-light"}`, children: /* @__PURE__ */ jsxs12("div", { className: "p-5", children: [
|
|
6431
|
+
/* @__PURE__ */ jsx20(DialogTitle, { className: `text-lg font-semibold ${theme.titleText}`, children: "Remove Authentication Method" }),
|
|
6432
|
+
/* @__PURE__ */ jsxs12(DialogDescription, { className: `${theme.bodyText} mt-2`, children: [
|
|
6481
6433
|
"This will permanently unlink ",
|
|
6482
6434
|
confirmUnlink?.providerName,
|
|
6483
6435
|
" from your account. You may lose access if this is your only verified method."
|
|
6484
6436
|
] }),
|
|
6485
|
-
/* @__PURE__ */
|
|
6486
|
-
confirmUnlink && /* @__PURE__ */
|
|
6487
|
-
/* @__PURE__ */
|
|
6488
|
-
/* @__PURE__ */
|
|
6489
|
-
/* @__PURE__ */
|
|
6437
|
+
/* @__PURE__ */ jsx20("div", { className: `mt-3 p-3 rounded text-sm ${isDark ? "bg-red-900/30 border border-red-900 text-red-400" : "bg-red-50 border border-red-200 text-red-700"}`, children: "This action cannot be undone." }),
|
|
6438
|
+
confirmUnlink && /* @__PURE__ */ jsxs12("div", { className: "mt-3", children: [
|
|
6439
|
+
/* @__PURE__ */ jsx20("div", { className: `text-xs mb-1 ${theme.mutedText}`, children: "Type the provider ID to confirm removal:" }),
|
|
6440
|
+
/* @__PURE__ */ jsx20("div", { className: `text-[10px] font-mono mb-2 break-all ${isDark ? "text-gray-400" : "text-gray-600"}`, children: confirmUnlink.externalId }),
|
|
6441
|
+
/* @__PURE__ */ jsx20(
|
|
6490
6442
|
Input,
|
|
6491
6443
|
{
|
|
6492
6444
|
value: confirmInput,
|
|
@@ -6496,12 +6448,12 @@ var ManageWallet = ({ open, onOpenChange, onBack }) => {
|
|
|
6496
6448
|
}
|
|
6497
6449
|
)
|
|
6498
6450
|
] }),
|
|
6499
|
-
/* @__PURE__ */
|
|
6500
|
-
/* @__PURE__ */
|
|
6451
|
+
/* @__PURE__ */ jsxs12("div", { className: "mt-4 flex justify-end gap-2", children: [
|
|
6452
|
+
/* @__PURE__ */ jsx20(Button, { className: `${theme.outlineBtn}`, variant: "outline", onClick: () => {
|
|
6501
6453
|
setConfirmUnlink(null);
|
|
6502
6454
|
setConfirmInput("");
|
|
6503
6455
|
}, disabled: !!unlinking, children: "Cancel" }),
|
|
6504
|
-
/* @__PURE__ */
|
|
6456
|
+
/* @__PURE__ */ jsx20(
|
|
6505
6457
|
Button,
|
|
6506
6458
|
{
|
|
6507
6459
|
onClick: () => confirmUnlink && handleUnlink(confirmUnlink.provider, confirmUnlink.externalId),
|
|
@@ -6526,7 +6478,7 @@ init_vaultClient();
|
|
|
6526
6478
|
init_LumiaPassportContext();
|
|
6527
6479
|
init_useTheme();
|
|
6528
6480
|
import { Cloud, Laptop, Shield as Shield2, AlertTriangle as AlertTriangle3, CheckCircle2 as CheckCircle22, Server as Server2, HardDrive, RefreshCw as RefreshCw2, Key as Key3, ArrowLeft as ArrowLeft4, Trash2 as Trash22 } from "lucide-react";
|
|
6529
|
-
import { jsx as
|
|
6481
|
+
import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
6530
6482
|
var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
6531
6483
|
const userId = jwtTokenManager2.getUserId();
|
|
6532
6484
|
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
@@ -6605,179 +6557,179 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6605
6557
|
console.error("[SecurityModal] Error removing trusted app:", error);
|
|
6606
6558
|
}
|
|
6607
6559
|
};
|
|
6608
|
-
return /* @__PURE__ */
|
|
6609
|
-
/* @__PURE__ */
|
|
6610
|
-
/* @__PURE__ */
|
|
6611
|
-
/* @__PURE__ */
|
|
6612
|
-
/* @__PURE__ */
|
|
6613
|
-
/* @__PURE__ */
|
|
6614
|
-
onBack && /* @__PURE__ */
|
|
6560
|
+
return /* @__PURE__ */ jsxs13(Dialog, { open, onOpenChange, children: [
|
|
6561
|
+
/* @__PURE__ */ jsxs13(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
6562
|
+
/* @__PURE__ */ jsx21(VisuallyHidden, { children: /* @__PURE__ */ jsx21(DialogTitle, { children: "Security" }) }),
|
|
6563
|
+
/* @__PURE__ */ jsx21(DialogDescription, { className: "sr-only", children: "Keyshare and vault status" }),
|
|
6564
|
+
/* @__PURE__ */ jsxs13("div", { className: "p-5 space-y-4", children: [
|
|
6565
|
+
/* @__PURE__ */ jsx21("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
|
|
6566
|
+
onBack && /* @__PURE__ */ jsx21(
|
|
6615
6567
|
"button",
|
|
6616
6568
|
{
|
|
6617
6569
|
onClick: onBack,
|
|
6618
|
-
className: `p-1 mr-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6570
|
+
className: `p-1 mr-1 bg-transparent border-0 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6619
6571
|
title: "Back",
|
|
6620
|
-
children: /* @__PURE__ */
|
|
6572
|
+
children: /* @__PURE__ */ jsx21(ArrowLeft4, { className: "h-4 w-4" })
|
|
6621
6573
|
}
|
|
6622
6574
|
),
|
|
6623
|
-
/* @__PURE__ */
|
|
6624
|
-
/* @__PURE__ */
|
|
6625
|
-
/* @__PURE__ */
|
|
6626
|
-
/* @__PURE__ */
|
|
6575
|
+
/* @__PURE__ */ jsxs13("div", { className: `flex items-center gap-2 ${theme.text} font-semibold`, children: [
|
|
6576
|
+
/* @__PURE__ */ jsx21(Key3, { className: "h-4 w-4" }),
|
|
6577
|
+
/* @__PURE__ */ jsx21("span", { children: "Keyshare Status" }),
|
|
6578
|
+
/* @__PURE__ */ jsx21("button", { onClick: fetchRecovery, className: `p-1 bg-transparent border-0 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`, title: "Refresh", children: /* @__PURE__ */ jsx21(RefreshCw2, { className: `h-4 w-4 ${isRefreshing ? "animate-spin" : ""}` }) })
|
|
6627
6579
|
] })
|
|
6628
6580
|
] }) }),
|
|
6629
|
-
/* @__PURE__ */
|
|
6630
|
-
/* @__PURE__ */
|
|
6631
|
-
/* @__PURE__ */
|
|
6632
|
-
/* @__PURE__ */
|
|
6633
|
-
/* @__PURE__ */
|
|
6581
|
+
/* @__PURE__ */ jsxs13("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
6582
|
+
/* @__PURE__ */ jsxs13("div", { className: "space-y-2 text-center", children: [
|
|
6583
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6584
|
+
/* @__PURE__ */ jsx21(Cloud, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6585
|
+
/* @__PURE__ */ jsx21("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Server" })
|
|
6634
6586
|
] }),
|
|
6635
|
-
/* @__PURE__ */
|
|
6636
|
-
serverHasKeyshare ? /* @__PURE__ */
|
|
6587
|
+
/* @__PURE__ */ jsxs13("span", { className: `inline-flex items-center text-sm px-3 py-2 rounded-full ${serverHasKeyshare ? isDark ? "bg-gray-800 text-green-400" : "bg-green-50 text-green-700" : isDark ? "bg-gray-800 text-orange-400" : "bg-orange-50 text-orange-700"}`, children: [
|
|
6588
|
+
serverHasKeyshare ? /* @__PURE__ */ jsx21(CheckCircle22, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx21(AlertTriangle3, { className: "h-4 w-4 mr-1" }),
|
|
6637
6589
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
6638
6590
|
] })
|
|
6639
6591
|
] }),
|
|
6640
|
-
/* @__PURE__ */
|
|
6641
|
-
/* @__PURE__ */
|
|
6642
|
-
/* @__PURE__ */
|
|
6643
|
-
/* @__PURE__ */
|
|
6592
|
+
/* @__PURE__ */ jsxs13("div", { className: "space-y-2 text-center", children: [
|
|
6593
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6594
|
+
/* @__PURE__ */ jsx21(Laptop, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6595
|
+
/* @__PURE__ */ jsx21("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Local" })
|
|
6644
6596
|
] }),
|
|
6645
|
-
/* @__PURE__ */
|
|
6646
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */
|
|
6597
|
+
/* @__PURE__ */ jsxs13("span", { className: `inline-flex items-center text-sm px-3 py-2 rounded-full ${localInfo?.hasKeyshare ? isDark ? "bg-gray-800 text-green-400" : "bg-green-50 text-green-700" : isDark ? "bg-gray-800 text-orange-400" : "bg-orange-50 text-orange-700"}`, children: [
|
|
6598
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ jsx21(CheckCircle22, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx21(AlertTriangle3, { className: "h-4 w-4 mr-1" }),
|
|
6647
6599
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
6648
6600
|
] })
|
|
6649
6601
|
] }),
|
|
6650
|
-
/* @__PURE__ */
|
|
6651
|
-
/* @__PURE__ */
|
|
6652
|
-
/* @__PURE__ */
|
|
6653
|
-
/* @__PURE__ */
|
|
6602
|
+
/* @__PURE__ */ jsxs13("div", { className: "space-y-2 text-center", children: [
|
|
6603
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-center justify-center gap-2", children: [
|
|
6604
|
+
/* @__PURE__ */ jsx21(Shield2, { className: `h-4 w-4 ${isDark ? "text-gray-400" : "text-gray-500"}` }),
|
|
6605
|
+
/* @__PURE__ */ jsx21("span", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: "Vault" })
|
|
6654
6606
|
] }),
|
|
6655
|
-
/* @__PURE__ */
|
|
6656
|
-
hasServerBackup ? /* @__PURE__ */
|
|
6607
|
+
/* @__PURE__ */ jsxs13("span", { className: `inline-flex items-center text-sm px-3 py-2 rounded-full ${hasServerBackup ? isDark ? "bg-gray-800 text-green-400" : "bg-green-50 text-green-700" : isDark ? "bg-gray-800 text-orange-400" : "bg-orange-50 text-orange-700"}`, children: [
|
|
6608
|
+
hasServerBackup ? /* @__PURE__ */ jsx21(CheckCircle22, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx21(AlertTriangle3, { className: "h-4 w-4 mr-1" }),
|
|
6657
6609
|
hasServerBackup ? "Ready" : "None"
|
|
6658
6610
|
] })
|
|
6659
6611
|
] })
|
|
6660
6612
|
] }),
|
|
6661
|
-
localInfo?.hasKeyshare && /* @__PURE__ */
|
|
6662
|
-
localInfo.ownerAddress && /* @__PURE__ */
|
|
6613
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ jsxs13("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6614
|
+
localInfo.ownerAddress && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6663
6615
|
"Owner: ",
|
|
6664
|
-
/* @__PURE__ */
|
|
6616
|
+
/* @__PURE__ */ jsx21("span", { className: `font-mono break-all ${isDark ? "text-gray-200" : "text-gray-800"}`, children: localInfo.ownerAddress })
|
|
6665
6617
|
] }),
|
|
6666
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */
|
|
6618
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6667
6619
|
"Size: ",
|
|
6668
|
-
/* @__PURE__ */
|
|
6620
|
+
/* @__PURE__ */ jsxs13("span", { className: `font-mono ${isDark ? "text-gray-200" : "text-gray-800"}`, children: [
|
|
6669
6621
|
Math.round((localInfo.keyshareSize || 0) / 1024),
|
|
6670
6622
|
"KB"
|
|
6671
6623
|
] })
|
|
6672
6624
|
] }),
|
|
6673
|
-
localInfo.sessionId && /* @__PURE__ */
|
|
6625
|
+
localInfo.sessionId && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6674
6626
|
"Session: ",
|
|
6675
|
-
/* @__PURE__ */
|
|
6627
|
+
/* @__PURE__ */ jsx21("span", { className: `font-mono break-all ${isDark ? "text-gray-200" : "text-gray-800"}`, children: localInfo.sessionId })
|
|
6676
6628
|
] })
|
|
6677
6629
|
] }),
|
|
6678
|
-
/* @__PURE__ */
|
|
6679
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */
|
|
6680
|
-
/* @__PURE__ */
|
|
6681
|
-
/* @__PURE__ */
|
|
6630
|
+
/* @__PURE__ */ jsxs13("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-500"}`, children: [
|
|
6631
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6632
|
+
/* @__PURE__ */ jsx21(Server2, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6633
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6682
6634
|
"Server: ",
|
|
6683
6635
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
6684
6636
|
] })
|
|
6685
6637
|
] }),
|
|
6686
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */
|
|
6687
|
-
/* @__PURE__ */
|
|
6688
|
-
/* @__PURE__ */
|
|
6638
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6639
|
+
/* @__PURE__ */ jsx21(Server2, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6640
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6689
6641
|
"Server: ",
|
|
6690
6642
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
6691
6643
|
] })
|
|
6692
6644
|
] }),
|
|
6693
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */
|
|
6694
|
-
/* @__PURE__ */
|
|
6695
|
-
/* @__PURE__ */
|
|
6645
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6646
|
+
/* @__PURE__ */ jsx21(Cloud, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6647
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6696
6648
|
"Cloud: ",
|
|
6697
6649
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
6698
6650
|
] })
|
|
6699
6651
|
] }),
|
|
6700
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */
|
|
6701
|
-
/* @__PURE__ */
|
|
6702
|
-
/* @__PURE__ */
|
|
6652
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-1", children: [
|
|
6653
|
+
/* @__PURE__ */ jsx21(HardDrive, { className: "h-2.5 w-2.5 text-gray-400" }),
|
|
6654
|
+
/* @__PURE__ */ jsxs13("span", { children: [
|
|
6703
6655
|
"Local: ",
|
|
6704
6656
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
6705
6657
|
] })
|
|
6706
6658
|
] })
|
|
6707
6659
|
] }),
|
|
6708
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */
|
|
6709
|
-
/* @__PURE__ */
|
|
6710
|
-
recoveryCreatedAt && /* @__PURE__ */
|
|
6660
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ jsxs13("div", { className: `space-y-0.5 text-[10px] leading-tight ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6661
|
+
/* @__PURE__ */ jsx21("div", { className: `font-medium text-[11px] ${isDark ? "text-indigo-400" : "text-indigo-600"}`, children: "Device Information:" }),
|
|
6662
|
+
recoveryCreatedAt && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6711
6663
|
"Created: ",
|
|
6712
6664
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
6713
6665
|
" "
|
|
6714
6666
|
] }),
|
|
6715
|
-
recoveryCountry && /* @__PURE__ */
|
|
6667
|
+
recoveryCountry && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6716
6668
|
"Country: ",
|
|
6717
6669
|
recoveryCountry
|
|
6718
6670
|
] }),
|
|
6719
|
-
recoveryBrowser && /* @__PURE__ */
|
|
6671
|
+
recoveryBrowser && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6720
6672
|
"Browser: ",
|
|
6721
6673
|
recoveryBrowser
|
|
6722
6674
|
] }),
|
|
6723
|
-
parseOS(recoveryUa) && /* @__PURE__ */
|
|
6675
|
+
parseOS(recoveryUa) && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6724
6676
|
"OS: ",
|
|
6725
6677
|
parseOS(recoveryUa)
|
|
6726
6678
|
] }),
|
|
6727
|
-
recoveryDeviceName && /* @__PURE__ */
|
|
6679
|
+
recoveryDeviceName && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6728
6680
|
"Device: ",
|
|
6729
6681
|
recoveryDeviceName
|
|
6730
6682
|
] }),
|
|
6731
|
-
recoveryDeviceId && /* @__PURE__ */
|
|
6683
|
+
recoveryDeviceId && /* @__PURE__ */ jsxs13("div", { children: [
|
|
6732
6684
|
"Device ID: ",
|
|
6733
|
-
/* @__PURE__ */
|
|
6685
|
+
/* @__PURE__ */ jsx21("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
6734
6686
|
] })
|
|
6735
6687
|
] }),
|
|
6736
|
-
trustedApps.length > 0 && /* @__PURE__ */
|
|
6737
|
-
/* @__PURE__ */
|
|
6688
|
+
trustedApps.length > 0 && /* @__PURE__ */ jsxs13("div", { className: `space-y-2 ${isDark ? "text-gray-400" : "text-gray-600"}`, children: [
|
|
6689
|
+
/* @__PURE__ */ jsxs13("div", { className: `font-medium text-[11px] ${isDark ? "text-green-400" : "text-green-600"}`, children: [
|
|
6738
6690
|
"Trusted Applications (",
|
|
6739
6691
|
trustedApps.length,
|
|
6740
6692
|
"):"
|
|
6741
6693
|
] }),
|
|
6742
|
-
/* @__PURE__ */
|
|
6743
|
-
/* @__PURE__ */
|
|
6744
|
-
/* @__PURE__ */
|
|
6745
|
-
/* @__PURE__ */
|
|
6694
|
+
/* @__PURE__ */ jsx21("div", { className: "space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs13("div", { className: `text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 ${isDark ? "bg-gray-800/50" : "bg-gray-50"}`, children: [
|
|
6695
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex-1 min-w-0", children: [
|
|
6696
|
+
/* @__PURE__ */ jsx21("div", { className: `font-medium ${isDark ? "text-gray-200" : "text-gray-800"}`, children: new URL(app.origin).hostname }),
|
|
6697
|
+
/* @__PURE__ */ jsxs13("div", { className: `${isDark ? "text-gray-400" : "text-gray-500"}`, children: [
|
|
6746
6698
|
"Trusted: ",
|
|
6747
6699
|
new Date(app.trustedAt).toLocaleDateString()
|
|
6748
6700
|
] })
|
|
6749
6701
|
] }),
|
|
6750
|
-
/* @__PURE__ */
|
|
6702
|
+
/* @__PURE__ */ jsx21(
|
|
6751
6703
|
"button",
|
|
6752
6704
|
{
|
|
6753
6705
|
onClick: () => setAppToRemove({ projectId: app.projectId, origin: app.origin, hostname: new URL(app.origin).hostname }),
|
|
6754
6706
|
className: `p-1 rounded transition-colors ${isDark ? "text-gray-400 hover:text-red-400 hover:bg-red-900/20" : "text-gray-500 hover:text-red-600 hover:bg-red-50"}`,
|
|
6755
6707
|
title: "Remove from trusted",
|
|
6756
|
-
children: /* @__PURE__ */
|
|
6708
|
+
children: /* @__PURE__ */ jsx21(Trash22, { className: "h-3 w-3" })
|
|
6757
6709
|
}
|
|
6758
6710
|
)
|
|
6759
6711
|
] }, index)) })
|
|
6760
6712
|
] })
|
|
6761
6713
|
] })
|
|
6762
6714
|
] }),
|
|
6763
|
-
appToRemove && /* @__PURE__ */
|
|
6764
|
-
/* @__PURE__ */
|
|
6765
|
-
/* @__PURE__ */
|
|
6766
|
-
/* @__PURE__ */
|
|
6767
|
-
/* @__PURE__ */
|
|
6768
|
-
/* @__PURE__ */
|
|
6769
|
-
/* @__PURE__ */
|
|
6770
|
-
/* @__PURE__ */
|
|
6771
|
-
/* @__PURE__ */
|
|
6772
|
-
/* @__PURE__ */
|
|
6773
|
-
/* @__PURE__ */
|
|
6774
|
-
/* @__PURE__ */
|
|
6775
|
-
/* @__PURE__ */
|
|
6715
|
+
appToRemove && /* @__PURE__ */ jsx21(Dialog, { open: !!appToRemove, onOpenChange: (open2) => !open2 && setAppToRemove(null), children: /* @__PURE__ */ jsxs13(DialogContent, { className: `lumia-scope max-w-[380px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
6716
|
+
/* @__PURE__ */ jsx21(VisuallyHidden, { children: /* @__PURE__ */ jsx21(DialogTitle, { children: "Remove Trusted Application" }) }),
|
|
6717
|
+
/* @__PURE__ */ jsx21(DialogDescription, { className: "sr-only", children: "Confirm removal of trusted application" }),
|
|
6718
|
+
/* @__PURE__ */ jsxs13("div", { className: "p-5 space-y-4", children: [
|
|
6719
|
+
/* @__PURE__ */ jsxs13("div", { className: `text-center ${theme.text}`, children: [
|
|
6720
|
+
/* @__PURE__ */ jsx21("div", { className: "text-lg font-semibold mb-2", children: "Remove Trusted App?" }),
|
|
6721
|
+
/* @__PURE__ */ jsx21("div", { className: `text-sm ${isDark ? "text-gray-300" : "text-gray-700"} mb-3`, children: /* @__PURE__ */ jsx21("span", { className: "font-medium", children: appToRemove.hostname }) }),
|
|
6722
|
+
/* @__PURE__ */ jsxs13("div", { className: `text-xs ${isDark ? "text-gray-400" : "text-gray-600"} text-left space-y-2`, children: [
|
|
6723
|
+
/* @__PURE__ */ jsx21("p", { children: "After removing this application from trusted list:" }),
|
|
6724
|
+
/* @__PURE__ */ jsxs13("ul", { className: "list-disc list-inside space-y-1 ml-2", children: [
|
|
6725
|
+
/* @__PURE__ */ jsx21("li", { children: "All transactions will require confirmation in a separate window" }),
|
|
6726
|
+
/* @__PURE__ */ jsx21("li", { children: "You can add it back to trusted list at any time" }),
|
|
6727
|
+
/* @__PURE__ */ jsx21("li", { children: 'Transaction confirmation window will show "Trust this app" checkbox' })
|
|
6776
6728
|
] })
|
|
6777
6729
|
] })
|
|
6778
6730
|
] }),
|
|
6779
|
-
/* @__PURE__ */
|
|
6780
|
-
/* @__PURE__ */
|
|
6731
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex gap-2", children: [
|
|
6732
|
+
/* @__PURE__ */ jsx21(
|
|
6781
6733
|
Button,
|
|
6782
6734
|
{
|
|
6783
6735
|
onClick: () => setAppToRemove(null),
|
|
@@ -6787,7 +6739,7 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
|
|
|
6787
6739
|
children: "Cancel"
|
|
6788
6740
|
}
|
|
6789
6741
|
),
|
|
6790
|
-
/* @__PURE__ */
|
|
6742
|
+
/* @__PURE__ */ jsx21(
|
|
6791
6743
|
Button,
|
|
6792
6744
|
{
|
|
6793
6745
|
onClick: confirmRemoveTrustedApp,
|
|
@@ -6811,9 +6763,9 @@ init_iframe_manager();
|
|
|
6811
6763
|
init_LumiaPassportContext();
|
|
6812
6764
|
init_useTheme();
|
|
6813
6765
|
import * as React18 from "react";
|
|
6814
|
-
import { Shield as Shield3, Server as Server3, CheckCircle2 as CheckCircle23, AlertCircle as AlertCircle2, Key as Key4, Eye as Eye2, EyeOff as EyeOff2, Download, Cloud as Cloud2, Lock } from "lucide-react";
|
|
6815
|
-
import { jsx as
|
|
6816
|
-
function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
6766
|
+
import { Shield as Shield3, Server as Server3, CheckCircle2 as CheckCircle23, AlertCircle as AlertCircle2, Key as Key4, Eye as Eye2, EyeOff as EyeOff2, Download, Cloud as Cloud2, Lock, ArrowLeft as ArrowLeft5 } from "lucide-react";
|
|
6767
|
+
import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
6768
|
+
function KeyshareBackup({ userId, onBackupSuccess, onBack }) {
|
|
6817
6769
|
const { config } = useLumiaPassportConfig();
|
|
6818
6770
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
6819
6771
|
const [backupStatus, setBackupStatus] = React18.useState({
|
|
@@ -6956,27 +6908,36 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
6956
6908
|
const date = new Date(timestamp);
|
|
6957
6909
|
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
6958
6910
|
};
|
|
6959
|
-
return /* @__PURE__ */
|
|
6960
|
-
/* @__PURE__ */
|
|
6961
|
-
/* @__PURE__ */
|
|
6962
|
-
/* @__PURE__ */
|
|
6963
|
-
|
|
6911
|
+
return /* @__PURE__ */ jsxs14(Card, { className: `${theme.modalBg} border-0`, children: [
|
|
6912
|
+
/* @__PURE__ */ jsxs14(CardHeader, { className: "pb-3", children: [
|
|
6913
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2", children: [
|
|
6914
|
+
onBack && /* @__PURE__ */ jsx22(
|
|
6915
|
+
"button",
|
|
6916
|
+
{
|
|
6917
|
+
onClick: onBack,
|
|
6918
|
+
className: `p-1 ${isDark ? "text-gray-400 hover:text-gray-300" : "text-gray-500 hover:text-gray-700"}`,
|
|
6919
|
+
title: "Back",
|
|
6920
|
+
children: /* @__PURE__ */ jsx22(ArrowLeft5, { className: "h-4 w-4" })
|
|
6921
|
+
}
|
|
6922
|
+
),
|
|
6923
|
+
/* @__PURE__ */ jsx22(Shield3, { className: `h-5 w-5 ${isDark ? "text-green-400" : "text-green-600"}` }),
|
|
6924
|
+
/* @__PURE__ */ jsx22(CardTitle, { className: `text-base ${theme.titleText}`, children: "Create Backup" })
|
|
6964
6925
|
] }),
|
|
6965
|
-
/* @__PURE__ */
|
|
6926
|
+
/* @__PURE__ */ jsx22(CardDescription, { className: `text-sm mt-1 ${theme.mutedText}`, children: "Secure your keyshare with encrypted backups" })
|
|
6966
6927
|
] }),
|
|
6967
|
-
/* @__PURE__ */
|
|
6968
|
-
error && /* @__PURE__ */
|
|
6969
|
-
/* @__PURE__ */
|
|
6970
|
-
/* @__PURE__ */
|
|
6928
|
+
/* @__PURE__ */ jsxs14(CardContent, { className: "space-y-3.5", children: [
|
|
6929
|
+
error && /* @__PURE__ */ jsxs14("div", { className: `flex items-center gap-2 p-2 rounded text-xs ${isDark ? "bg-red-950/50 border border-red-900/60 text-red-300" : "bg-red-50 border border-red-200 text-red-700"}`, children: [
|
|
6930
|
+
/* @__PURE__ */ jsx22(AlertCircle2, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
6931
|
+
/* @__PURE__ */ jsx22("span", { children: error })
|
|
6971
6932
|
] }),
|
|
6972
|
-
success && /* @__PURE__ */
|
|
6973
|
-
/* @__PURE__ */
|
|
6974
|
-
/* @__PURE__ */
|
|
6933
|
+
success && /* @__PURE__ */ jsxs14("div", { className: `flex items-center gap-2 p-2 rounded text-xs ${isDark ? "bg-green-950/50 border border-green-900/60 text-green-300" : "bg-green-50 border border-green-200 text-green-700"}`, children: [
|
|
6934
|
+
/* @__PURE__ */ jsx22(CheckCircle23, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
6935
|
+
/* @__PURE__ */ jsx22("span", { children: success })
|
|
6975
6936
|
] }),
|
|
6976
|
-
/* @__PURE__ */
|
|
6977
|
-
/* @__PURE__ */
|
|
6978
|
-
/* @__PURE__ */
|
|
6979
|
-
/* @__PURE__ */
|
|
6937
|
+
/* @__PURE__ */ jsxs14("div", { className: "space-y-2", children: [
|
|
6938
|
+
/* @__PURE__ */ jsx22("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Encryption Method:" }),
|
|
6939
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2", children: [
|
|
6940
|
+
/* @__PURE__ */ jsx22(
|
|
6980
6941
|
"input",
|
|
6981
6942
|
{
|
|
6982
6943
|
type: "checkbox",
|
|
@@ -6986,42 +6947,45 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
6986
6947
|
className: "rounded"
|
|
6987
6948
|
}
|
|
6988
6949
|
),
|
|
6989
|
-
/* @__PURE__ */
|
|
6950
|
+
/* @__PURE__ */ jsx22("label", { htmlFor: "use-backup-password", className: `text-xs ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Use custom password instead of passkey" })
|
|
6990
6951
|
] }),
|
|
6991
|
-
!useCustomPassword && /* @__PURE__ */
|
|
6992
|
-
/* @__PURE__ */
|
|
6993
|
-
/* @__PURE__ */
|
|
6952
|
+
!useCustomPassword && /* @__PURE__ */ jsx22("div", { className: `p-2 rounded text-xs ${isDark ? "bg-blue-500/10 border border-blue-500/30 text-gray-300" : "bg-blue-50 border border-blue-200 text-blue-700"}`, children: /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2", children: [
|
|
6953
|
+
/* @__PURE__ */ jsx22(Key4, { className: "h-3.5 w-3.5 text-blue-500" }),
|
|
6954
|
+
/* @__PURE__ */ jsx22("span", { children: "Passkey will be used to encrypt the backup" })
|
|
6994
6955
|
] }) }),
|
|
6995
|
-
useCustomPassword && /* @__PURE__ */
|
|
6996
|
-
/* @__PURE__ */
|
|
6956
|
+
useCustomPassword && /* @__PURE__ */ jsxs14("div", { className: "relative", children: [
|
|
6957
|
+
/* @__PURE__ */ jsx22(
|
|
6997
6958
|
Input,
|
|
6998
6959
|
{
|
|
6999
6960
|
type: showPassword ? "text" : "password",
|
|
7000
6961
|
placeholder: "Enter backup password",
|
|
7001
6962
|
value: customPassword,
|
|
7002
6963
|
onChange: (e) => setCustomPassword(e.target.value),
|
|
7003
|
-
className: `pr-10 text-sm ${isDark ? "bg-
|
|
6964
|
+
className: `pr-10 text-sm ${isDark ? "bg-gray-900 border-gray-600 text-white placeholder:text-gray-500" : "bg-white border-gray-300 text-gray-900"}`,
|
|
6965
|
+
style: {
|
|
6966
|
+
WebkitTextFillColor: isDark ? "#ffffff" : "#111827"
|
|
6967
|
+
}
|
|
7004
6968
|
}
|
|
7005
6969
|
),
|
|
7006
|
-
/* @__PURE__ */
|
|
6970
|
+
/* @__PURE__ */ jsx22(
|
|
7007
6971
|
"button",
|
|
7008
6972
|
{
|
|
7009
6973
|
type: "button",
|
|
7010
6974
|
onClick: () => setShowPassword(!showPassword),
|
|
7011
|
-
className: `absolute right-
|
|
7012
|
-
children: showPassword ? /* @__PURE__ */
|
|
6975
|
+
className: `absolute right-3 inset-y-0 my-auto h-fit z-10 bg-transparent border-0 p-0 flex items-center justify-center ${isDark ? "text-gray-400 hover:text-gray-200" : "text-gray-500 hover:text-gray-700"}`,
|
|
6976
|
+
children: showPassword ? /* @__PURE__ */ jsx22(EyeOff2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx22(Eye2, { className: "h-4 w-4" })
|
|
7013
6977
|
}
|
|
7014
6978
|
)
|
|
7015
6979
|
] })
|
|
7016
6980
|
] }),
|
|
7017
|
-
/* @__PURE__ */
|
|
7018
|
-
/* @__PURE__ */
|
|
7019
|
-
/* @__PURE__ */
|
|
7020
|
-
/* @__PURE__ */
|
|
7021
|
-
/* @__PURE__ */
|
|
7022
|
-
/* @__PURE__ */
|
|
6981
|
+
/* @__PURE__ */ jsxs14("div", { className: "space-y-2.5", children: [
|
|
6982
|
+
/* @__PURE__ */ jsx22("div", { className: `text-xs font-medium ${isDark ? "text-gray-300" : "text-gray-700"}`, children: "Choose Backup Method:" }),
|
|
6983
|
+
/* @__PURE__ */ jsxs14("div", { className: `p-3 rounded ${isDark ? "bg-blue-500/10" : "bg-blue-50/50"}`, children: [
|
|
6984
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
6985
|
+
/* @__PURE__ */ jsx22(Server3, { className: `h-4 w-4 ${isDark ? "text-blue-400" : "text-blue-600"}` }),
|
|
6986
|
+
/* @__PURE__ */ jsx22("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Server Backup" })
|
|
7023
6987
|
] }),
|
|
7024
|
-
/* @__PURE__ */
|
|
6988
|
+
/* @__PURE__ */ jsx22(
|
|
7025
6989
|
Button,
|
|
7026
6990
|
{
|
|
7027
6991
|
onClick: () => handleBackup("server"),
|
|
@@ -7031,22 +6995,22 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7031
6995
|
}
|
|
7032
6996
|
)
|
|
7033
6997
|
] }),
|
|
7034
|
-
/* @__PURE__ */
|
|
7035
|
-
/* @__PURE__ */
|
|
7036
|
-
/* @__PURE__ */
|
|
7037
|
-
/* @__PURE__ */
|
|
7038
|
-
/* @__PURE__ */
|
|
6998
|
+
/* @__PURE__ */ jsxs14("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
6999
|
+
/* @__PURE__ */ jsxs14("div", { className: `p-3 rounded flex flex-col ${isDark ? "bg-sky-500/10" : "bg-sky-50/50"}`, children: [
|
|
7000
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7001
|
+
/* @__PURE__ */ jsx22(Cloud2, { className: `h-4 w-4 ${isDark ? "text-sky-400" : "text-sky-600"}` }),
|
|
7002
|
+
/* @__PURE__ */ jsx22("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "Cloud" })
|
|
7039
7003
|
] }),
|
|
7040
|
-
cloudProviders.length > 1 && /* @__PURE__ */
|
|
7004
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx22(
|
|
7041
7005
|
"select",
|
|
7042
7006
|
{
|
|
7043
7007
|
value: selectedCloudProvider || "",
|
|
7044
7008
|
onChange: (e) => setSelectedCloudProvider(e.target.value),
|
|
7045
7009
|
className: `text-xs border rounded px-2 py-1 w-full mb-2 ${isDark ? "bg-gray-800 border-gray-700 text-gray-200" : "bg-white border-gray-300"}`,
|
|
7046
|
-
children: cloudProviders.map((provider) => /* @__PURE__ */
|
|
7010
|
+
children: cloudProviders.map((provider) => /* @__PURE__ */ jsx22("option", { value: provider.id, disabled: !provider.available, children: provider.name }, provider.id))
|
|
7047
7011
|
}
|
|
7048
7012
|
),
|
|
7049
|
-
/* @__PURE__ */
|
|
7013
|
+
/* @__PURE__ */ jsx22(
|
|
7050
7014
|
Button,
|
|
7051
7015
|
{
|
|
7052
7016
|
onClick: () => handleBackup("cloud"),
|
|
@@ -7057,13 +7021,13 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7057
7021
|
}
|
|
7058
7022
|
)
|
|
7059
7023
|
] }),
|
|
7060
|
-
/* @__PURE__ */
|
|
7061
|
-
/* @__PURE__ */
|
|
7062
|
-
/* @__PURE__ */
|
|
7063
|
-
/* @__PURE__ */
|
|
7024
|
+
/* @__PURE__ */ jsxs14("div", { className: `p-3 rounded flex flex-col ${isDark ? "bg-purple-500/10" : "bg-purple-50/50"}`, children: [
|
|
7025
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7026
|
+
/* @__PURE__ */ jsx22(Download, { className: `h-4 w-4 ${isDark ? "text-purple-400" : "text-purple-600"}` }),
|
|
7027
|
+
/* @__PURE__ */ jsx22("div", { className: `text-sm font-medium ${isDark ? "text-gray-200" : "text-gray-900"}`, children: "File" })
|
|
7064
7028
|
] }),
|
|
7065
|
-
cloudProviders.length > 1 && /* @__PURE__ */
|
|
7066
|
-
/* @__PURE__ */
|
|
7029
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx22("div", { className: "h-[32px]" }),
|
|
7030
|
+
/* @__PURE__ */ jsx22(
|
|
7067
7031
|
Button,
|
|
7068
7032
|
{
|
|
7069
7033
|
onClick: () => handleBackup("local"),
|
|
@@ -7076,10 +7040,10 @@ function KeyshareBackup({ userId, onBackupSuccess }) {
|
|
|
7076
7040
|
] })
|
|
7077
7041
|
] })
|
|
7078
7042
|
] }),
|
|
7079
|
-
/* @__PURE__ */
|
|
7080
|
-
/* @__PURE__ */
|
|
7081
|
-
/* @__PURE__ */
|
|
7082
|
-
/* @__PURE__ */
|
|
7043
|
+
/* @__PURE__ */ jsxs14("div", { className: `flex items-start gap-2 p-2.5 rounded text-xs ${isDark ? "bg-amber-500/15 border border-amber-500/30 text-gray-300" : "bg-amber-50 border border-amber-200 text-amber-900"}`, children: [
|
|
7044
|
+
/* @__PURE__ */ jsx22(Lock, { className: "h-3.5 w-3.5 mt-0.5 flex-shrink-0 text-amber-500" }),
|
|
7045
|
+
/* @__PURE__ */ jsxs14("div", { children: [
|
|
7046
|
+
/* @__PURE__ */ jsx22("span", { className: "font-medium", children: "Security Notice:" }),
|
|
7083
7047
|
" All backups are encrypted with AES-256 using your ",
|
|
7084
7048
|
useCustomPassword ? "custom password" : "passkey",
|
|
7085
7049
|
".",
|
|
@@ -7097,8 +7061,8 @@ import React19 from "react";
|
|
|
7097
7061
|
init_base();
|
|
7098
7062
|
init_LumiaPassportContext();
|
|
7099
7063
|
init_useTheme();
|
|
7100
|
-
import { Activity, ArrowUpRight, ArrowDownRight, CheckCircle2 as CheckCircle24, XCircle, ArrowLeft as
|
|
7101
|
-
import { jsx as
|
|
7064
|
+
import { Activity, ArrowUpRight, ArrowDownRight, CheckCircle2 as CheckCircle24, XCircle, ArrowLeft as ArrowLeft6, RefreshCw as RefreshCw3 } from "lucide-react";
|
|
7065
|
+
import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
7102
7066
|
var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
7103
7067
|
const { address } = useLumiaSession();
|
|
7104
7068
|
const [transactions, setTransactions] = React19.useState([]);
|
|
@@ -7148,98 +7112,98 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7148
7112
|
}
|
|
7149
7113
|
};
|
|
7150
7114
|
const getStatusIcon = (status) => {
|
|
7151
|
-
return status === "ok" ? /* @__PURE__ */
|
|
7115
|
+
return status === "ok" ? /* @__PURE__ */ jsx23(CheckCircle24, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx23(XCircle, { className: "w-4 h-4 text-red-500" });
|
|
7152
7116
|
};
|
|
7153
7117
|
const getTransactionIcon = (from, to) => {
|
|
7154
7118
|
const isIncoming = to.toLowerCase() === address?.toLowerCase();
|
|
7155
|
-
return isIncoming ? /* @__PURE__ */
|
|
7119
|
+
return isIncoming ? /* @__PURE__ */ jsx23(ArrowDownRight, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx23(ArrowUpRight, { className: "w-4 h-4 text-blue-500" });
|
|
7156
7120
|
};
|
|
7157
7121
|
const openInExplorer = (txHash) => {
|
|
7158
7122
|
const explorerUrl = getExplorerUrl();
|
|
7159
7123
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
7160
7124
|
};
|
|
7161
|
-
return /* @__PURE__ */
|
|
7162
|
-
/* @__PURE__ */
|
|
7163
|
-
/* @__PURE__ */
|
|
7164
|
-
/* @__PURE__ */
|
|
7165
|
-
onBack && /* @__PURE__ */
|
|
7125
|
+
return /* @__PURE__ */ jsx23(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs15(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
7126
|
+
/* @__PURE__ */ jsx23(VisuallyHidden, { children: /* @__PURE__ */ jsx23(DialogTitle, { children: "Transaction History" }) }),
|
|
7127
|
+
/* @__PURE__ */ jsx23(DialogDescription, { className: "sr-only", children: "View your transaction history" }),
|
|
7128
|
+
/* @__PURE__ */ jsx23("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
|
|
7129
|
+
onBack && /* @__PURE__ */ jsx23(
|
|
7166
7130
|
"button",
|
|
7167
7131
|
{
|
|
7168
7132
|
onClick: onBack,
|
|
7169
7133
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7170
7134
|
title: "Back",
|
|
7171
|
-
children: /* @__PURE__ */
|
|
7135
|
+
children: /* @__PURE__ */ jsx23(ArrowLeft6, { className: "h-4 w-4" })
|
|
7172
7136
|
}
|
|
7173
7137
|
),
|
|
7174
|
-
/* @__PURE__ */
|
|
7175
|
-
/* @__PURE__ */
|
|
7176
|
-
/* @__PURE__ */
|
|
7177
|
-
/* @__PURE__ */
|
|
7138
|
+
/* @__PURE__ */ jsxs15("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
7139
|
+
/* @__PURE__ */ jsx23(Activity, { className: "h-5 w-5" }),
|
|
7140
|
+
/* @__PURE__ */ jsx23("span", { children: "Transaction History" }),
|
|
7141
|
+
/* @__PURE__ */ jsx23(
|
|
7178
7142
|
"button",
|
|
7179
7143
|
{
|
|
7180
7144
|
onClick: loadTransactions,
|
|
7181
7145
|
disabled: loading,
|
|
7182
7146
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7183
7147
|
title: "Refresh transactions",
|
|
7184
|
-
children: /* @__PURE__ */
|
|
7148
|
+
children: /* @__PURE__ */ jsx23(RefreshCw3, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
|
|
7185
7149
|
}
|
|
7186
7150
|
)
|
|
7187
7151
|
] })
|
|
7188
7152
|
] }) }),
|
|
7189
|
-
/* @__PURE__ */
|
|
7190
|
-
/* @__PURE__ */
|
|
7191
|
-
/* @__PURE__ */
|
|
7192
|
-
] }) : transactions.length === 0 ? /* @__PURE__ */
|
|
7193
|
-
/* @__PURE__ */
|
|
7194
|
-
/* @__PURE__ */
|
|
7153
|
+
/* @__PURE__ */ jsx23("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: loading ? /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx23("div", { className: `${theme.mutedText}`, children: "Loading transactions..." }) }) : error ? /* @__PURE__ */ jsxs15("div", { className: `flex flex-col items-center justify-center py-8 ${isDark ? "text-red-400" : "text-red-500"}`, children: [
|
|
7154
|
+
/* @__PURE__ */ jsx23(XCircle, { className: "w-12 h-12 mb-2" }),
|
|
7155
|
+
/* @__PURE__ */ jsx23("p", { className: "text-center text-sm", children: error })
|
|
7156
|
+
] }) : transactions.length === 0 ? /* @__PURE__ */ jsxs15("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
7157
|
+
/* @__PURE__ */ jsx23(Activity, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
|
|
7158
|
+
/* @__PURE__ */ jsxs15("p", { className: "text-center", children: [
|
|
7195
7159
|
"No transactions found",
|
|
7196
|
-
/* @__PURE__ */
|
|
7197
|
-
/* @__PURE__ */
|
|
7160
|
+
/* @__PURE__ */ jsx23("br", {}),
|
|
7161
|
+
/* @__PURE__ */ jsx23("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
7198
7162
|
] })
|
|
7199
|
-
] }) : /* @__PURE__ */
|
|
7163
|
+
] }) : /* @__PURE__ */ jsx23("div", { className: "space-y-3", children: transactions.map((tx) => {
|
|
7200
7164
|
const isIncoming = tx.to.hash.toLowerCase() === address?.toLowerCase();
|
|
7201
7165
|
const displayAddress = isIncoming ? tx.from.hash : tx.to.hash;
|
|
7202
|
-
return /* @__PURE__ */
|
|
7166
|
+
return /* @__PURE__ */ jsxs15(
|
|
7203
7167
|
"div",
|
|
7204
7168
|
{
|
|
7205
7169
|
className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors cursor-pointer`,
|
|
7206
7170
|
onClick: () => openInExplorer(tx.hash),
|
|
7207
7171
|
children: [
|
|
7208
|
-
/* @__PURE__ */
|
|
7209
|
-
/* @__PURE__ */
|
|
7172
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between mb-2", children: [
|
|
7173
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
|
|
7210
7174
|
getTransactionIcon(tx.from.hash, tx.to.hash),
|
|
7211
|
-
/* @__PURE__ */
|
|
7175
|
+
/* @__PURE__ */ jsx23("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
|
|
7212
7176
|
getStatusIcon(tx.status)
|
|
7213
7177
|
] }),
|
|
7214
|
-
/* @__PURE__ */
|
|
7178
|
+
/* @__PURE__ */ jsx23("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
|
|
7215
7179
|
] }),
|
|
7216
|
-
/* @__PURE__ */
|
|
7217
|
-
/* @__PURE__ */
|
|
7218
|
-
/* @__PURE__ */
|
|
7219
|
-
/* @__PURE__ */
|
|
7180
|
+
/* @__PURE__ */ jsxs15("div", { className: "space-y-1 text-sm", children: [
|
|
7181
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7182
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: isIncoming ? "From:" : "To:" }),
|
|
7183
|
+
/* @__PURE__ */ jsxs15("span", { className: `font-mono ${theme.titleText}`, children: [
|
|
7220
7184
|
formatAddress(displayAddress),
|
|
7221
|
-
(isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */
|
|
7185
|
+
(isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ jsx23("span", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} ml-1`, children: "(Contract)" })
|
|
7222
7186
|
] })
|
|
7223
7187
|
] }),
|
|
7224
|
-
/* @__PURE__ */
|
|
7225
|
-
/* @__PURE__ */
|
|
7226
|
-
/* @__PURE__ */
|
|
7188
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7189
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Value:" }),
|
|
7190
|
+
/* @__PURE__ */ jsxs15("span", { className: `font-semibold ${theme.titleText}`, children: [
|
|
7227
7191
|
formatValue(tx.value),
|
|
7228
7192
|
" LUMIA"
|
|
7229
7193
|
] })
|
|
7230
7194
|
] }),
|
|
7231
|
-
/* @__PURE__ */
|
|
7232
|
-
/* @__PURE__ */
|
|
7233
|
-
/* @__PURE__ */
|
|
7195
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7196
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Block:" }),
|
|
7197
|
+
/* @__PURE__ */ jsxs15("span", { className: `font-mono ${theme.titleText}`, children: [
|
|
7234
7198
|
"#",
|
|
7235
7199
|
tx.block_number
|
|
7236
7200
|
] })
|
|
7237
7201
|
] }),
|
|
7238
|
-
tx.method && /* @__PURE__ */
|
|
7239
|
-
/* @__PURE__ */
|
|
7240
|
-
/* @__PURE__ */
|
|
7202
|
+
tx.method && /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
|
|
7203
|
+
/* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Method:" }),
|
|
7204
|
+
/* @__PURE__ */ jsx23("span", { className: `${isDark ? "text-blue-400" : "text-blue-600"} text-xs`, children: tx.method })
|
|
7241
7205
|
] }),
|
|
7242
|
-
tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
7206
|
+
tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ jsx23("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx23(
|
|
7243
7207
|
"span",
|
|
7244
7208
|
{
|
|
7245
7209
|
className: `text-xs ${isDark ? "bg-blue-900/30 text-blue-300" : "bg-blue-100 text-blue-800"} px-2 py-0.5 rounded-full`,
|
|
@@ -7253,7 +7217,7 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7253
7217
|
tx.hash
|
|
7254
7218
|
);
|
|
7255
7219
|
}) }) }),
|
|
7256
|
-
transactions.length > 0 && /* @__PURE__ */
|
|
7220
|
+
transactions.length > 0 && /* @__PURE__ */ jsx23("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs15("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
7257
7221
|
"Total: ",
|
|
7258
7222
|
transactions.length,
|
|
7259
7223
|
" transaction",
|
|
@@ -7431,8 +7395,8 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
7431
7395
|
init_base();
|
|
7432
7396
|
init_LumiaPassportContext();
|
|
7433
7397
|
init_useTheme();
|
|
7434
|
-
import { Gem, RefreshCw as RefreshCw4, Copy, ExternalLink as ExternalLink2, ArrowLeft as
|
|
7435
|
-
import { jsx as
|
|
7398
|
+
import { Gem, RefreshCw as RefreshCw4, Copy, ExternalLink as ExternalLink2, ArrowLeft as ArrowLeft7 } from "lucide-react";
|
|
7399
|
+
import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
7436
7400
|
var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
7437
7401
|
const { address } = useLumiaSession();
|
|
7438
7402
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
@@ -7451,107 +7415,107 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7451
7415
|
const openInExplorer = (address2) => {
|
|
7452
7416
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address2}`, "_blank");
|
|
7453
7417
|
};
|
|
7454
|
-
return /* @__PURE__ */
|
|
7455
|
-
/* @__PURE__ */
|
|
7456
|
-
/* @__PURE__ */
|
|
7457
|
-
/* @__PURE__ */
|
|
7458
|
-
onBack && /* @__PURE__ */
|
|
7418
|
+
return /* @__PURE__ */ jsx24(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs16(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
7419
|
+
/* @__PURE__ */ jsx24(VisuallyHidden, { children: /* @__PURE__ */ jsx24(DialogTitle, { children: "View Assets" }) }),
|
|
7420
|
+
/* @__PURE__ */ jsx24(DialogDescription, { className: "sr-only", children: "View your token balances and assets" }),
|
|
7421
|
+
/* @__PURE__ */ jsx24("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
7422
|
+
onBack && /* @__PURE__ */ jsx24(
|
|
7459
7423
|
"button",
|
|
7460
7424
|
{
|
|
7461
7425
|
onClick: onBack,
|
|
7462
7426
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
7463
7427
|
title: "Back",
|
|
7464
|
-
children: /* @__PURE__ */
|
|
7428
|
+
children: /* @__PURE__ */ jsx24(ArrowLeft7, { className: "h-4 w-4" })
|
|
7465
7429
|
}
|
|
7466
7430
|
),
|
|
7467
|
-
/* @__PURE__ */
|
|
7468
|
-
/* @__PURE__ */
|
|
7469
|
-
/* @__PURE__ */
|
|
7470
|
-
/* @__PURE__ */
|
|
7431
|
+
/* @__PURE__ */ jsxs16("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
7432
|
+
/* @__PURE__ */ jsx24(Gem, { className: "h-5 w-5" }),
|
|
7433
|
+
/* @__PURE__ */ jsx24("span", { children: "Your Assets" }),
|
|
7434
|
+
/* @__PURE__ */ jsx24(
|
|
7471
7435
|
"button",
|
|
7472
7436
|
{
|
|
7473
7437
|
onClick: refreshBalances,
|
|
7474
7438
|
disabled: isLoading,
|
|
7475
7439
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
|
|
7476
7440
|
title: "Refresh balances",
|
|
7477
|
-
children: /* @__PURE__ */
|
|
7441
|
+
children: /* @__PURE__ */ jsx24(RefreshCw4, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
|
|
7478
7442
|
}
|
|
7479
7443
|
)
|
|
7480
7444
|
] })
|
|
7481
7445
|
] }) }),
|
|
7482
|
-
/* @__PURE__ */
|
|
7483
|
-
/* @__PURE__ */
|
|
7484
|
-
/* @__PURE__ */
|
|
7485
|
-
] }) : /* @__PURE__ */
|
|
7486
|
-
/* @__PURE__ */
|
|
7487
|
-
/* @__PURE__ */
|
|
7488
|
-
/* @__PURE__ */
|
|
7489
|
-
/* @__PURE__ */
|
|
7490
|
-
/* @__PURE__ */
|
|
7491
|
-
/* @__PURE__ */
|
|
7446
|
+
/* @__PURE__ */ jsx24("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: isLoading ? /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx24("div", { className: `${theme.mutedText}`, children: "Loading assets..." }) }) : assets.length === 0 ? /* @__PURE__ */ jsxs16("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
|
|
7447
|
+
/* @__PURE__ */ jsx24(Gem, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
|
|
7448
|
+
/* @__PURE__ */ jsx24("p", { children: "No assets found" })
|
|
7449
|
+
] }) : /* @__PURE__ */ jsx24("div", { className: "space-y-3", children: assets.map((asset, index) => /* @__PURE__ */ jsxs16("div", { className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors`, children: [
|
|
7450
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between mb-2", children: [
|
|
7451
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
|
|
7452
|
+
/* @__PURE__ */ jsx24("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx24("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
7453
|
+
/* @__PURE__ */ jsxs16("div", { children: [
|
|
7454
|
+
/* @__PURE__ */ jsx24("div", { className: `font-medium ${theme.titleText}`, children: asset.name }),
|
|
7455
|
+
/* @__PURE__ */ jsx24("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
|
|
7492
7456
|
] })
|
|
7493
7457
|
] }),
|
|
7494
|
-
/* @__PURE__ */
|
|
7495
|
-
/* @__PURE__ */
|
|
7496
|
-
/* @__PURE__ */
|
|
7458
|
+
/* @__PURE__ */ jsxs16("div", { className: "text-right", children: [
|
|
7459
|
+
/* @__PURE__ */ jsx24("div", { className: `font-mono ${theme.titleText}`, children: asset.formattedBalance }),
|
|
7460
|
+
/* @__PURE__ */ jsx24("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
|
|
7497
7461
|
] })
|
|
7498
7462
|
] }),
|
|
7499
|
-
asset.address && /* @__PURE__ */
|
|
7500
|
-
/* @__PURE__ */
|
|
7501
|
-
/* @__PURE__ */
|
|
7502
|
-
/* @__PURE__ */
|
|
7503
|
-
/* @__PURE__ */
|
|
7504
|
-
/* @__PURE__ */
|
|
7463
|
+
asset.address && /* @__PURE__ */ jsxs16("div", { className: `space-y-2 mt-3 pt-3 border-t ${theme.divider}`, children: [
|
|
7464
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7465
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Contract Address:" }),
|
|
7466
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
7467
|
+
/* @__PURE__ */ jsx24("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
7468
|
+
/* @__PURE__ */ jsx24(
|
|
7505
7469
|
"button",
|
|
7506
7470
|
{
|
|
7507
7471
|
onClick: () => handleCopy(asset.address, "address"),
|
|
7508
7472
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7509
7473
|
title: "Copy address",
|
|
7510
|
-
children: copied === "address" ? /* @__PURE__ */
|
|
7474
|
+
children: copied === "address" ? /* @__PURE__ */ jsx24("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx24(Copy, { className: "w-3 h-3" })
|
|
7511
7475
|
}
|
|
7512
7476
|
),
|
|
7513
|
-
/* @__PURE__ */
|
|
7477
|
+
/* @__PURE__ */ jsx24(
|
|
7514
7478
|
"button",
|
|
7515
7479
|
{
|
|
7516
7480
|
onClick: () => openInExplorer(asset.address),
|
|
7517
7481
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7518
7482
|
title: "View in explorer",
|
|
7519
|
-
children: /* @__PURE__ */
|
|
7483
|
+
children: /* @__PURE__ */ jsx24(ExternalLink2, { className: "w-3 h-3" })
|
|
7520
7484
|
}
|
|
7521
7485
|
)
|
|
7522
7486
|
] })
|
|
7523
7487
|
] }),
|
|
7524
|
-
asset.decimals && /* @__PURE__ */
|
|
7525
|
-
/* @__PURE__ */
|
|
7526
|
-
/* @__PURE__ */
|
|
7488
|
+
asset.decimals && /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7489
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Decimals:" }),
|
|
7490
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.titleText}`, children: asset.decimals })
|
|
7527
7491
|
] })
|
|
7528
7492
|
] }),
|
|
7529
|
-
asset.type === "native" && address && /* @__PURE__ */
|
|
7530
|
-
/* @__PURE__ */
|
|
7531
|
-
/* @__PURE__ */
|
|
7532
|
-
/* @__PURE__ */
|
|
7533
|
-
/* @__PURE__ */
|
|
7493
|
+
asset.type === "native" && address && /* @__PURE__ */ jsx24("div", { className: "mt-3 pt-3 border-t border-gray-200", children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
|
|
7494
|
+
/* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Your Address:" }),
|
|
7495
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
7496
|
+
/* @__PURE__ */ jsx24("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
7497
|
+
/* @__PURE__ */ jsx24(
|
|
7534
7498
|
"button",
|
|
7535
7499
|
{
|
|
7536
7500
|
onClick: () => handleCopy(address, "wallet"),
|
|
7537
7501
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7538
7502
|
title: "Copy wallet address",
|
|
7539
|
-
children: copied === "wallet" ? /* @__PURE__ */
|
|
7503
|
+
children: copied === "wallet" ? /* @__PURE__ */ jsx24("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx24(Copy, { className: "w-3 h-3" })
|
|
7540
7504
|
}
|
|
7541
7505
|
),
|
|
7542
|
-
/* @__PURE__ */
|
|
7506
|
+
/* @__PURE__ */ jsx24(
|
|
7543
7507
|
"button",
|
|
7544
7508
|
{
|
|
7545
7509
|
onClick: () => openInExplorer(address),
|
|
7546
7510
|
className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
|
|
7547
7511
|
title: "View in explorer",
|
|
7548
|
-
children: /* @__PURE__ */
|
|
7512
|
+
children: /* @__PURE__ */ jsx24(ExternalLink2, { className: "w-3 h-3" })
|
|
7549
7513
|
}
|
|
7550
7514
|
)
|
|
7551
7515
|
] })
|
|
7552
7516
|
] }) })
|
|
7553
7517
|
] }, `${asset.type}-${asset.address || "native"}-${index}`)) }) }),
|
|
7554
|
-
assets.length > 0 && /* @__PURE__ */
|
|
7518
|
+
assets.length > 0 && /* @__PURE__ */ jsx24("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
7555
7519
|
"Total: ",
|
|
7556
7520
|
assets.length,
|
|
7557
7521
|
" asset",
|
|
@@ -7564,7 +7528,7 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
|
|
|
7564
7528
|
init_dialog();
|
|
7565
7529
|
import { useState as useState12, useEffect as useEffect9 } from "react";
|
|
7566
7530
|
init_button();
|
|
7567
|
-
import { Send, ArrowLeft as
|
|
7531
|
+
import { Send, ArrowLeft as ArrowLeft8, Loader2, CheckCircle2 as CheckCircle26, AlertCircle as AlertCircle4 } from "lucide-react";
|
|
7568
7532
|
|
|
7569
7533
|
// src/hooks/useSendTransaction.ts
|
|
7570
7534
|
init_account();
|
|
@@ -7646,7 +7610,7 @@ function cn2(...inputs) {
|
|
|
7646
7610
|
}
|
|
7647
7611
|
|
|
7648
7612
|
// src/internal/components/ui/badge.tsx
|
|
7649
|
-
import { jsx as
|
|
7613
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
7650
7614
|
var badgeVariants = cva2(
|
|
7651
7615
|
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
7652
7616
|
{
|
|
@@ -7666,14 +7630,14 @@ var badgeVariants = cva2(
|
|
|
7666
7630
|
}
|
|
7667
7631
|
);
|
|
7668
7632
|
function Badge({ className, variant, ...props }) {
|
|
7669
|
-
return /* @__PURE__ */
|
|
7633
|
+
return /* @__PURE__ */ jsx25("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
7670
7634
|
}
|
|
7671
7635
|
|
|
7672
7636
|
// src/internal/components/Address.tsx
|
|
7673
7637
|
init_button();
|
|
7674
7638
|
import * as React22 from "react";
|
|
7675
7639
|
import { Copy as Copy2, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
7676
|
-
import { jsx as
|
|
7640
|
+
import { jsx as jsx26, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
7677
7641
|
function toExplorerAddressUrl(address, chain) {
|
|
7678
7642
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
7679
7643
|
if (!base2) return null;
|
|
@@ -7695,11 +7659,11 @@ var Address = ({
|
|
|
7695
7659
|
const addr = address || "";
|
|
7696
7660
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
7697
7661
|
const [copied, setCopied] = React22.useState(false);
|
|
7698
|
-
if (!addr) return /* @__PURE__ */
|
|
7699
|
-
return /* @__PURE__ */
|
|
7700
|
-
label && /* @__PURE__ */
|
|
7701
|
-
/* @__PURE__ */
|
|
7702
|
-
showCopy && /* @__PURE__ */
|
|
7662
|
+
if (!addr) return /* @__PURE__ */ jsx26("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
7663
|
+
return /* @__PURE__ */ jsxs17("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
7664
|
+
label && /* @__PURE__ */ jsx26("span", { className: "text-sm font-medium", children: label }),
|
|
7665
|
+
/* @__PURE__ */ jsx26("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
7666
|
+
showCopy && /* @__PURE__ */ jsx26(
|
|
7703
7667
|
Button,
|
|
7704
7668
|
{
|
|
7705
7669
|
variant: "ghost",
|
|
@@ -7713,10 +7677,10 @@ var Address = ({
|
|
|
7713
7677
|
} catch {
|
|
7714
7678
|
}
|
|
7715
7679
|
},
|
|
7716
|
-
children: /* @__PURE__ */
|
|
7680
|
+
children: /* @__PURE__ */ jsx26(Copy2, { className: "h-4 w-4" })
|
|
7717
7681
|
}
|
|
7718
7682
|
),
|
|
7719
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
7683
|
+
showExplorer && explorer && /* @__PURE__ */ jsx26(
|
|
7720
7684
|
"a",
|
|
7721
7685
|
{
|
|
7722
7686
|
href: explorer,
|
|
@@ -7724,7 +7688,7 @@ var Address = ({
|
|
|
7724
7688
|
rel: "noreferrer noopener",
|
|
7725
7689
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
7726
7690
|
title: "Open in explorer",
|
|
7727
|
-
children: /* @__PURE__ */
|
|
7691
|
+
children: /* @__PURE__ */ jsx26(ExternalLink3, { className: "h-4 w-4" })
|
|
7728
7692
|
}
|
|
7729
7693
|
)
|
|
7730
7694
|
] });
|
|
@@ -7732,7 +7696,7 @@ var Address = ({
|
|
|
7732
7696
|
|
|
7733
7697
|
// src/internal/components/UserOpStatus.tsx
|
|
7734
7698
|
init_base();
|
|
7735
|
-
import { jsx as
|
|
7699
|
+
import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
7736
7700
|
var UserOpStatus = ({
|
|
7737
7701
|
userOpHash,
|
|
7738
7702
|
chain,
|
|
@@ -7865,54 +7829,54 @@ var UserOpStatus = ({
|
|
|
7865
7829
|
const stateBadge = () => {
|
|
7866
7830
|
if (receipt) {
|
|
7867
7831
|
const ok = !!receipt.success;
|
|
7868
|
-
return /* @__PURE__ */
|
|
7869
|
-
ok ? /* @__PURE__ */
|
|
7832
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
7833
|
+
ok ? /* @__PURE__ */ jsx27(CheckCircle25, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
|
|
7870
7834
|
ok ? "Included" : "Failed"
|
|
7871
7835
|
] });
|
|
7872
7836
|
}
|
|
7873
7837
|
if (rejected) {
|
|
7874
|
-
return /* @__PURE__ */
|
|
7875
|
-
/* @__PURE__ */
|
|
7838
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
7839
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
|
|
7876
7840
|
" Rejected by bundler"
|
|
7877
7841
|
] });
|
|
7878
7842
|
}
|
|
7879
7843
|
if (timedOut) {
|
|
7880
|
-
return /* @__PURE__ */
|
|
7881
|
-
/* @__PURE__ */
|
|
7844
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "warning", className: "gap-1", children: [
|
|
7845
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
|
|
7882
7846
|
" Timeout - may be rejected"
|
|
7883
7847
|
] });
|
|
7884
7848
|
}
|
|
7885
7849
|
if (mempool) {
|
|
7886
|
-
return /* @__PURE__ */
|
|
7887
|
-
/* @__PURE__ */
|
|
7850
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "outline", className: "gap-1", children: [
|
|
7851
|
+
/* @__PURE__ */ jsx27(Clock3, { className: "h-3 w-3" }),
|
|
7888
7852
|
" Pending in bundler"
|
|
7889
7853
|
] });
|
|
7890
7854
|
}
|
|
7891
|
-
return /* @__PURE__ */
|
|
7892
|
-
/* @__PURE__ */
|
|
7855
|
+
return /* @__PURE__ */ jsxs18(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
7856
|
+
/* @__PURE__ */ jsx27(Clock3, { className: "h-3 w-3" }),
|
|
7893
7857
|
" Waiting"
|
|
7894
7858
|
] });
|
|
7895
7859
|
};
|
|
7896
|
-
return /* @__PURE__ */
|
|
7860
|
+
return /* @__PURE__ */ jsxs18(
|
|
7897
7861
|
"div",
|
|
7898
7862
|
{
|
|
7899
7863
|
className: cn2("lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]", className),
|
|
7900
7864
|
style: { textAlign: "left", listStyle: "none" },
|
|
7901
7865
|
children: [
|
|
7902
|
-
/* @__PURE__ */
|
|
7903
|
-
/* @__PURE__ */
|
|
7866
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center justify-between mb-3", children: [
|
|
7867
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2", children: [
|
|
7904
7868
|
stateBadge(),
|
|
7905
|
-
/* @__PURE__ */
|
|
7869
|
+
/* @__PURE__ */ jsx27("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
7906
7870
|
] }),
|
|
7907
|
-
/* @__PURE__ */
|
|
7908
|
-
/* @__PURE__ */
|
|
7909
|
-
/* @__PURE__ */
|
|
7871
|
+
/* @__PURE__ */ jsxs18(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
7872
|
+
/* @__PURE__ */ jsx27(RefreshCw5, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
7873
|
+
/* @__PURE__ */ jsx27("span", { className: "text-xs", children: "Refresh" })
|
|
7910
7874
|
] })
|
|
7911
7875
|
] }),
|
|
7912
|
-
/* @__PURE__ */
|
|
7913
|
-
/* @__PURE__ */
|
|
7914
|
-
/* @__PURE__ */
|
|
7915
|
-
/* @__PURE__ */
|
|
7876
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
7877
|
+
/* @__PURE__ */ jsx27("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
7878
|
+
/* @__PURE__ */ jsx27("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
7879
|
+
/* @__PURE__ */ jsx27(
|
|
7916
7880
|
Button,
|
|
7917
7881
|
{
|
|
7918
7882
|
variant: "ghost",
|
|
@@ -7924,14 +7888,14 @@ var UserOpStatus = ({
|
|
|
7924
7888
|
} catch {
|
|
7925
7889
|
}
|
|
7926
7890
|
},
|
|
7927
|
-
children: /* @__PURE__ */
|
|
7891
|
+
children: /* @__PURE__ */ jsx27(Copy3, { className: "h-3.5 w-3.5" })
|
|
7928
7892
|
}
|
|
7929
7893
|
)
|
|
7930
7894
|
] }),
|
|
7931
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */
|
|
7932
|
-
/* @__PURE__ */
|
|
7933
|
-
/* @__PURE__ */
|
|
7934
|
-
/* @__PURE__ */
|
|
7895
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
7896
|
+
/* @__PURE__ */ jsx27("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
7897
|
+
/* @__PURE__ */ jsx27("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
7898
|
+
/* @__PURE__ */ jsx27(
|
|
7935
7899
|
Button,
|
|
7936
7900
|
{
|
|
7937
7901
|
variant: "ghost",
|
|
@@ -7943,10 +7907,10 @@ var UserOpStatus = ({
|
|
|
7943
7907
|
} catch {
|
|
7944
7908
|
}
|
|
7945
7909
|
},
|
|
7946
|
-
children: /* @__PURE__ */
|
|
7910
|
+
children: /* @__PURE__ */ jsx27(Copy3, { className: "h-3.5 w-3.5" })
|
|
7947
7911
|
}
|
|
7948
7912
|
),
|
|
7949
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */
|
|
7913
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx27(
|
|
7950
7914
|
"a",
|
|
7951
7915
|
{
|
|
7952
7916
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -7954,11 +7918,11 @@ var UserOpStatus = ({
|
|
|
7954
7918
|
rel: "noreferrer noopener",
|
|
7955
7919
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
7956
7920
|
title: "Open in explorer",
|
|
7957
|
-
children: /* @__PURE__ */
|
|
7921
|
+
children: /* @__PURE__ */ jsx27(ExternalLink4, { className: "h-3.5 w-3.5" })
|
|
7958
7922
|
}
|
|
7959
7923
|
)
|
|
7960
7924
|
] }),
|
|
7961
|
-
receipt && /* @__PURE__ */
|
|
7925
|
+
receipt && /* @__PURE__ */ jsxs18("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
7962
7926
|
"Block ",
|
|
7963
7927
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
7964
7928
|
" \u2022 Gas Used",
|
|
@@ -7967,32 +7931,32 @@ var UserOpStatus = ({
|
|
|
7967
7931
|
" \u2022 Success ",
|
|
7968
7932
|
String(!!receipt.success)
|
|
7969
7933
|
] }),
|
|
7970
|
-
/* @__PURE__ */
|
|
7934
|
+
/* @__PURE__ */ jsx27("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs18("span", { className: "ml-2", children: [
|
|
7971
7935
|
"\u2022 Polling for ",
|
|
7972
7936
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
7973
7937
|
"s"
|
|
7974
7938
|
] }) }),
|
|
7975
|
-
mempool && /* @__PURE__ */
|
|
7976
|
-
/* @__PURE__ */
|
|
7939
|
+
mempool && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
7940
|
+
/* @__PURE__ */ jsxs18("div", { children: [
|
|
7977
7941
|
"Seen by bundler at ",
|
|
7978
|
-
/* @__PURE__ */
|
|
7942
|
+
/* @__PURE__ */ jsx27(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
7979
7943
|
] }),
|
|
7980
|
-
/* @__PURE__ */
|
|
7944
|
+
/* @__PURE__ */ jsxs18("div", { children: [
|
|
7981
7945
|
"sender ",
|
|
7982
|
-
/* @__PURE__ */
|
|
7946
|
+
/* @__PURE__ */ jsx27(Address, { address: mempool.sender, chain, truncate: false })
|
|
7983
7947
|
] })
|
|
7984
7948
|
] }),
|
|
7985
|
-
error && /* @__PURE__ */
|
|
7986
|
-
/* @__PURE__ */
|
|
7949
|
+
error && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7950
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
|
|
7987
7951
|
" ",
|
|
7988
7952
|
error
|
|
7989
7953
|
] }),
|
|
7990
|
-
rejected && /* @__PURE__ */
|
|
7991
|
-
/* @__PURE__ */
|
|
7954
|
+
rejected && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7955
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
|
|
7992
7956
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
7993
7957
|
] }),
|
|
7994
|
-
timedOut && /* @__PURE__ */
|
|
7995
|
-
/* @__PURE__ */
|
|
7958
|
+
timedOut && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
7959
|
+
/* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
|
|
7996
7960
|
"Stopped polling after ",
|
|
7997
7961
|
Math.round(maxPollTimeMs / 1e3),
|
|
7998
7962
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -8006,7 +7970,7 @@ var UserOpStatus = ({
|
|
|
8006
7970
|
init_base();
|
|
8007
7971
|
init_LumiaPassportContext();
|
|
8008
7972
|
init_useTheme();
|
|
8009
|
-
import { jsx as
|
|
7973
|
+
import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
8010
7974
|
var SendModal = ({
|
|
8011
7975
|
open,
|
|
8012
7976
|
onOpenChange,
|
|
@@ -8089,7 +8053,7 @@ var SendModal = ({
|
|
|
8089
8053
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
8090
8054
|
setAmount(maxAmount.toFixed(6));
|
|
8091
8055
|
};
|
|
8092
|
-
return /* @__PURE__ */
|
|
8056
|
+
return /* @__PURE__ */ jsx28(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs19(
|
|
8093
8057
|
DialogContent,
|
|
8094
8058
|
{
|
|
8095
8059
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8101,28 +8065,28 @@ var SendModal = ({
|
|
|
8101
8065
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8102
8066
|
},
|
|
8103
8067
|
children: [
|
|
8104
|
-
/* @__PURE__ */
|
|
8105
|
-
/* @__PURE__ */
|
|
8106
|
-
/* @__PURE__ */
|
|
8107
|
-
onBack && txStep === "input" && /* @__PURE__ */
|
|
8068
|
+
/* @__PURE__ */ jsx28(VisuallyHidden, { children: /* @__PURE__ */ jsx28(DialogTitle, { children: "Send Transaction" }) }),
|
|
8069
|
+
/* @__PURE__ */ jsx28(DialogDescription, { className: "sr-only", children: "Send LUMIA tokens to another address" }),
|
|
8070
|
+
/* @__PURE__ */ jsx28("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
|
|
8071
|
+
onBack && txStep === "input" && /* @__PURE__ */ jsx28(
|
|
8108
8072
|
"button",
|
|
8109
8073
|
{
|
|
8110
8074
|
onClick: onBack,
|
|
8111
8075
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8112
8076
|
title: "Back",
|
|
8113
|
-
children: /* @__PURE__ */
|
|
8077
|
+
children: /* @__PURE__ */ jsx28(ArrowLeft8, { className: "h-4 w-4" })
|
|
8114
8078
|
}
|
|
8115
8079
|
),
|
|
8116
|
-
/* @__PURE__ */
|
|
8117
|
-
/* @__PURE__ */
|
|
8118
|
-
/* @__PURE__ */
|
|
8080
|
+
/* @__PURE__ */ jsxs19("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8081
|
+
/* @__PURE__ */ jsx28(Send, { className: "h-5 w-5" }),
|
|
8082
|
+
/* @__PURE__ */ jsx28("span", { children: "Send LUMIA" })
|
|
8119
8083
|
] })
|
|
8120
8084
|
] }) }),
|
|
8121
|
-
/* @__PURE__ */
|
|
8122
|
-
txStep === "input" && /* @__PURE__ */
|
|
8123
|
-
/* @__PURE__ */
|
|
8124
|
-
/* @__PURE__ */
|
|
8125
|
-
/* @__PURE__ */
|
|
8085
|
+
/* @__PURE__ */ jsxs19("div", { className: "p-5", children: [
|
|
8086
|
+
txStep === "input" && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
|
|
8087
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
8088
|
+
/* @__PURE__ */ jsx28("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Recipient Address" }),
|
|
8089
|
+
/* @__PURE__ */ jsx28(
|
|
8126
8090
|
"input",
|
|
8127
8091
|
{
|
|
8128
8092
|
type: "text",
|
|
@@ -8133,17 +8097,17 @@ var SendModal = ({
|
|
|
8133
8097
|
}
|
|
8134
8098
|
)
|
|
8135
8099
|
] }),
|
|
8136
|
-
/* @__PURE__ */
|
|
8137
|
-
/* @__PURE__ */
|
|
8138
|
-
/* @__PURE__ */
|
|
8139
|
-
/* @__PURE__ */
|
|
8100
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
8101
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between items-center mb-2", children: [
|
|
8102
|
+
/* @__PURE__ */ jsx28("label", { className: `text-sm font-medium ${theme.bodyText}`, children: "Amount" }),
|
|
8103
|
+
/* @__PURE__ */ jsxs19("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
8140
8104
|
"Balance: ",
|
|
8141
8105
|
balance.toFixed(4),
|
|
8142
8106
|
" LUMIA"
|
|
8143
8107
|
] })
|
|
8144
8108
|
] }),
|
|
8145
|
-
/* @__PURE__ */
|
|
8146
|
-
/* @__PURE__ */
|
|
8109
|
+
/* @__PURE__ */ jsxs19("div", { className: "relative", children: [
|
|
8110
|
+
/* @__PURE__ */ jsx28(
|
|
8147
8111
|
"input",
|
|
8148
8112
|
{
|
|
8149
8113
|
type: "number",
|
|
@@ -8154,7 +8118,7 @@ var SendModal = ({
|
|
|
8154
8118
|
className: `w-full px-3 py-2 pr-16 border ${isDark ? "bg-gray-800 border-gray-600 text-white placeholder:text-gray-400" : "bg-white border-gray-300 text-gray-900 placeholder:text-gray-400"} rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`
|
|
8155
8119
|
}
|
|
8156
8120
|
),
|
|
8157
|
-
/* @__PURE__ */
|
|
8121
|
+
/* @__PURE__ */ jsx28(
|
|
8158
8122
|
"button",
|
|
8159
8123
|
{
|
|
8160
8124
|
onClick: handleMaxAmount,
|
|
@@ -8164,11 +8128,11 @@ var SendModal = ({
|
|
|
8164
8128
|
)
|
|
8165
8129
|
] })
|
|
8166
8130
|
] }),
|
|
8167
|
-
(validationError || error) && /* @__PURE__ */
|
|
8168
|
-
/* @__PURE__ */
|
|
8169
|
-
/* @__PURE__ */
|
|
8131
|
+
(validationError || error) && /* @__PURE__ */ jsxs19("div", { className: `flex items-center gap-2 p-3 ${isDark ? "bg-red-900/30 text-red-400" : "bg-red-50 text-red-700"} rounded-lg`, children: [
|
|
8132
|
+
/* @__PURE__ */ jsx28(AlertCircle4, { className: "h-4 w-4" }),
|
|
8133
|
+
/* @__PURE__ */ jsx28("span", { className: "text-sm", children: validationError || error })
|
|
8170
8134
|
] }),
|
|
8171
|
-
/* @__PURE__ */
|
|
8135
|
+
/* @__PURE__ */ jsx28(
|
|
8172
8136
|
Button,
|
|
8173
8137
|
{
|
|
8174
8138
|
onClick: handleSend,
|
|
@@ -8179,29 +8143,29 @@ var SendModal = ({
|
|
|
8179
8143
|
}
|
|
8180
8144
|
)
|
|
8181
8145
|
] }),
|
|
8182
|
-
txStep === "confirm" && /* @__PURE__ */
|
|
8183
|
-
/* @__PURE__ */
|
|
8184
|
-
/* @__PURE__ */
|
|
8185
|
-
/* @__PURE__ */
|
|
8186
|
-
/* @__PURE__ */
|
|
8187
|
-
/* @__PURE__ */
|
|
8188
|
-
/* @__PURE__ */
|
|
8146
|
+
txStep === "confirm" && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
|
|
8147
|
+
/* @__PURE__ */ jsxs19("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
|
|
8148
|
+
/* @__PURE__ */ jsx28("h3", { className: `font-medium ${theme.titleText} mb-3`, children: "Transaction Details" }),
|
|
8149
|
+
/* @__PURE__ */ jsxs19("div", { className: "space-y-2 text-sm", children: [
|
|
8150
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
|
|
8151
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "To:" }),
|
|
8152
|
+
/* @__PURE__ */ jsx28("span", { className: `font-mono ${theme.titleText}`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
8189
8153
|
] }),
|
|
8190
|
-
/* @__PURE__ */
|
|
8191
|
-
/* @__PURE__ */
|
|
8192
|
-
/* @__PURE__ */
|
|
8154
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
|
|
8155
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "Amount:" }),
|
|
8156
|
+
/* @__PURE__ */ jsxs19("span", { className: `font-semibold ${theme.titleText}`, children: [
|
|
8193
8157
|
amount,
|
|
8194
8158
|
" LUMIA"
|
|
8195
8159
|
] })
|
|
8196
8160
|
] }),
|
|
8197
|
-
/* @__PURE__ */
|
|
8198
|
-
/* @__PURE__ */
|
|
8199
|
-
/* @__PURE__ */
|
|
8161
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
|
|
8162
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "Network:" }),
|
|
8163
|
+
/* @__PURE__ */ jsx28("span", { className: `${theme.titleText}`, children: "Lumia Beam" })
|
|
8200
8164
|
] })
|
|
8201
8165
|
] })
|
|
8202
8166
|
] }),
|
|
8203
|
-
/* @__PURE__ */
|
|
8204
|
-
/* @__PURE__ */
|
|
8167
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex gap-2", children: [
|
|
8168
|
+
/* @__PURE__ */ jsx28(
|
|
8205
8169
|
Button,
|
|
8206
8170
|
{
|
|
8207
8171
|
onClick: () => setTxStep("input"),
|
|
@@ -8211,7 +8175,7 @@ var SendModal = ({
|
|
|
8211
8175
|
children: "Back"
|
|
8212
8176
|
}
|
|
8213
8177
|
),
|
|
8214
|
-
/* @__PURE__ */
|
|
8178
|
+
/* @__PURE__ */ jsxs19(
|
|
8215
8179
|
Button,
|
|
8216
8180
|
{
|
|
8217
8181
|
onClick: handleConfirm,
|
|
@@ -8219,28 +8183,28 @@ var SendModal = ({
|
|
|
8219
8183
|
className: "flex-1",
|
|
8220
8184
|
size: "lg",
|
|
8221
8185
|
children: [
|
|
8222
|
-
isLoading && /* @__PURE__ */
|
|
8186
|
+
isLoading && /* @__PURE__ */ jsx28(Loader2, { className: "h-4 w-4 animate-spin" }),
|
|
8223
8187
|
"Confirm"
|
|
8224
8188
|
]
|
|
8225
8189
|
}
|
|
8226
8190
|
)
|
|
8227
8191
|
] })
|
|
8228
8192
|
] }),
|
|
8229
|
-
txStep === "pending" && /* @__PURE__ */
|
|
8230
|
-
/* @__PURE__ */
|
|
8231
|
-
/* @__PURE__ */
|
|
8232
|
-
/* @__PURE__ */
|
|
8233
|
-
/* @__PURE__ */
|
|
8193
|
+
txStep === "pending" && /* @__PURE__ */ jsxs19("div", { className: "py-8 text-center space-y-4", children: [
|
|
8194
|
+
/* @__PURE__ */ jsx28(Loader2, { className: `h-12 w-12 animate-spin ${isDark ? "text-blue-400" : "text-blue-600"} mx-auto` }),
|
|
8195
|
+
/* @__PURE__ */ jsxs19("div", { children: [
|
|
8196
|
+
/* @__PURE__ */ jsx28("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Pending" }),
|
|
8197
|
+
/* @__PURE__ */ jsx28("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Please wait while we process your transaction" })
|
|
8234
8198
|
] })
|
|
8235
8199
|
] }),
|
|
8236
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
8237
|
-
/* @__PURE__ */
|
|
8238
|
-
/* @__PURE__ */
|
|
8239
|
-
/* @__PURE__ */
|
|
8240
|
-
/* @__PURE__ */
|
|
8200
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
|
|
8201
|
+
/* @__PURE__ */ jsxs19("div", { className: "text-center py-4", children: [
|
|
8202
|
+
/* @__PURE__ */ jsx28(CheckCircle26, { className: `h-12 w-12 ${isDark ? "text-green-400" : "text-green-500"} mx-auto mb-3` }),
|
|
8203
|
+
/* @__PURE__ */ jsx28("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Sent!" }),
|
|
8204
|
+
/* @__PURE__ */ jsx28("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Your transaction is being processed" })
|
|
8241
8205
|
] }),
|
|
8242
|
-
/* @__PURE__ */
|
|
8243
|
-
/* @__PURE__ */
|
|
8206
|
+
/* @__PURE__ */ jsx28("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: /* @__PURE__ */ jsx28(UserOpStatus, { userOpHash, chain: lumiaBeam }) }),
|
|
8207
|
+
/* @__PURE__ */ jsx28(
|
|
8244
8208
|
Button,
|
|
8245
8209
|
{
|
|
8246
8210
|
onClick: handleClose,
|
|
@@ -8260,11 +8224,11 @@ var SendModal = ({
|
|
|
8260
8224
|
init_dialog();
|
|
8261
8225
|
import { useState as useState13, useEffect as useEffect10 } from "react";
|
|
8262
8226
|
init_button();
|
|
8263
|
-
import { QrCode, Copy as Copy4, ArrowLeft as
|
|
8227
|
+
import { QrCode, Copy as Copy4, ArrowLeft as ArrowLeft9, CheckCircle2 as CheckCircle27 } from "lucide-react";
|
|
8264
8228
|
init_LumiaPassportContext();
|
|
8265
8229
|
init_useTheme();
|
|
8266
8230
|
import QRCode from "qrcode";
|
|
8267
|
-
import { Fragment as Fragment5, jsx as
|
|
8231
|
+
import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
8268
8232
|
var ReceiveModal = ({
|
|
8269
8233
|
open,
|
|
8270
8234
|
onOpenChange,
|
|
@@ -8305,7 +8269,7 @@ var ReceiveModal = ({
|
|
|
8305
8269
|
if (!addr) return "";
|
|
8306
8270
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
8307
8271
|
};
|
|
8308
|
-
return /* @__PURE__ */
|
|
8272
|
+
return /* @__PURE__ */ jsx29(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs20(
|
|
8309
8273
|
DialogContent,
|
|
8310
8274
|
{
|
|
8311
8275
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8317,51 +8281,51 @@ var ReceiveModal = ({
|
|
|
8317
8281
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8318
8282
|
},
|
|
8319
8283
|
children: [
|
|
8320
|
-
/* @__PURE__ */
|
|
8321
|
-
/* @__PURE__ */
|
|
8322
|
-
/* @__PURE__ */
|
|
8323
|
-
onBack && /* @__PURE__ */
|
|
8284
|
+
/* @__PURE__ */ jsx29(VisuallyHidden, { children: /* @__PURE__ */ jsx29(DialogTitle, { children: "Receive LUMIA" }) }),
|
|
8285
|
+
/* @__PURE__ */ jsx29(DialogDescription, { className: "sr-only", children: "Your wallet address and QR code for receiving LUMIA" }),
|
|
8286
|
+
/* @__PURE__ */ jsx29("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
|
|
8287
|
+
onBack && /* @__PURE__ */ jsx29(
|
|
8324
8288
|
"button",
|
|
8325
8289
|
{
|
|
8326
8290
|
onClick: onBack,
|
|
8327
8291
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8328
8292
|
title: "Back",
|
|
8329
|
-
children: /* @__PURE__ */
|
|
8293
|
+
children: /* @__PURE__ */ jsx29(ArrowLeft9, { className: "h-4 w-4" })
|
|
8330
8294
|
}
|
|
8331
8295
|
),
|
|
8332
|
-
/* @__PURE__ */
|
|
8333
|
-
/* @__PURE__ */
|
|
8334
|
-
/* @__PURE__ */
|
|
8296
|
+
/* @__PURE__ */ jsxs20("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8297
|
+
/* @__PURE__ */ jsx29(QrCode, { className: "h-5 w-5" }),
|
|
8298
|
+
/* @__PURE__ */ jsx29("span", { children: "Receive LUMIA" })
|
|
8335
8299
|
] })
|
|
8336
8300
|
] }) }),
|
|
8337
|
-
/* @__PURE__ */
|
|
8338
|
-
qrCodeUrl && /* @__PURE__ */
|
|
8339
|
-
/* @__PURE__ */
|
|
8340
|
-
/* @__PURE__ */
|
|
8341
|
-
/* @__PURE__ */
|
|
8301
|
+
/* @__PURE__ */ jsxs20("div", { className: "p-5 space-y-4", children: [
|
|
8302
|
+
qrCodeUrl && /* @__PURE__ */ jsx29("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx29("div", { className: `${isDark ? "bg-white" : "bg-white"} p-4 rounded-xl border ${theme.divider}`, children: /* @__PURE__ */ jsx29("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
|
|
8303
|
+
/* @__PURE__ */ jsx29("div", { className: `${isDark ? "bg-blue-900/30 border-blue-600" : "bg-blue-50 border-blue-200"} rounded-lg p-3`, children: /* @__PURE__ */ jsx29("div", { className: `flex items-center gap-2 ${isDark ? "text-blue-300" : "text-blue-700"} text-sm`, children: /* @__PURE__ */ jsxs20("div", { className: "flex-1", children: [
|
|
8304
|
+
/* @__PURE__ */ jsx29("p", { className: "font-medium", children: "Network: Lumia Beam" }),
|
|
8305
|
+
/* @__PURE__ */ jsx29("p", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} mt-0.5`, children: "Ensure sender is on the same network" })
|
|
8342
8306
|
] }) }) }),
|
|
8343
|
-
/* @__PURE__ */
|
|
8344
|
-
/* @__PURE__ */
|
|
8345
|
-
/* @__PURE__ */
|
|
8346
|
-
/* @__PURE__ */
|
|
8307
|
+
/* @__PURE__ */ jsxs20("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
|
|
8308
|
+
/* @__PURE__ */ jsx29("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Your Wallet Address" }),
|
|
8309
|
+
/* @__PURE__ */ jsx29("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx29("div", { className: `flex-1 font-mono text-sm ${isDark ? "text-white bg-gray-700 border-gray-600" : "text-gray-900 bg-white border-gray-300"} rounded-lg px-3 py-2 break-all`, children: address }) }),
|
|
8310
|
+
/* @__PURE__ */ jsx29(
|
|
8347
8311
|
Button,
|
|
8348
8312
|
{
|
|
8349
8313
|
onClick: handleCopy,
|
|
8350
8314
|
className: "w-full mt-3",
|
|
8351
8315
|
size: "lg",
|
|
8352
|
-
children: copied ? /* @__PURE__ */
|
|
8353
|
-
/* @__PURE__ */
|
|
8354
|
-
/* @__PURE__ */
|
|
8355
|
-
] }) : /* @__PURE__ */
|
|
8356
|
-
/* @__PURE__ */
|
|
8357
|
-
/* @__PURE__ */
|
|
8316
|
+
children: copied ? /* @__PURE__ */ jsxs20(Fragment5, { children: [
|
|
8317
|
+
/* @__PURE__ */ jsx29(CheckCircle27, { className: "h-4 w-4" }),
|
|
8318
|
+
/* @__PURE__ */ jsx29("span", { children: "Copied!" })
|
|
8319
|
+
] }) : /* @__PURE__ */ jsxs20(Fragment5, { children: [
|
|
8320
|
+
/* @__PURE__ */ jsx29(Copy4, { className: "h-4 w-4" }),
|
|
8321
|
+
/* @__PURE__ */ jsx29("span", { children: "Copy Address" })
|
|
8358
8322
|
] })
|
|
8359
8323
|
}
|
|
8360
8324
|
)
|
|
8361
8325
|
] }),
|
|
8362
|
-
/* @__PURE__ */
|
|
8363
|
-
/* @__PURE__ */
|
|
8364
|
-
/* @__PURE__ */
|
|
8326
|
+
/* @__PURE__ */ jsxs20("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
|
|
8327
|
+
/* @__PURE__ */ jsx29("p", { children: "Share this address to receive LUMIA tokens." }),
|
|
8328
|
+
/* @__PURE__ */ jsx29("p", { className: "mt-1", children: "Only send LUMIA tokens to this address on Lumia Beam network." })
|
|
8365
8329
|
] })
|
|
8366
8330
|
] })
|
|
8367
8331
|
]
|
|
@@ -8374,12 +8338,12 @@ init_dialog();
|
|
|
8374
8338
|
init_button();
|
|
8375
8339
|
init_LumiaPassportContext();
|
|
8376
8340
|
init_useTheme();
|
|
8377
|
-
import { CreditCard, ArrowLeft as
|
|
8378
|
-
import { jsx as
|
|
8341
|
+
import { CreditCard, ArrowLeft as ArrowLeft10 } from "lucide-react";
|
|
8342
|
+
import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
8379
8343
|
var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
8380
8344
|
const { config } = useLumiaPassportConfig();
|
|
8381
8345
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8382
|
-
return /* @__PURE__ */
|
|
8346
|
+
return /* @__PURE__ */ jsx30(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs21(
|
|
8383
8347
|
DialogContent,
|
|
8384
8348
|
{
|
|
8385
8349
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8391,26 +8355,26 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8391
8355
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8392
8356
|
},
|
|
8393
8357
|
children: [
|
|
8394
|
-
/* @__PURE__ */
|
|
8395
|
-
/* @__PURE__ */
|
|
8396
|
-
/* @__PURE__ */
|
|
8397
|
-
onBack && /* @__PURE__ */
|
|
8358
|
+
/* @__PURE__ */ jsx30(VisuallyHidden, { children: /* @__PURE__ */ jsx30(DialogTitle, { children: "Buy Crypto" }) }),
|
|
8359
|
+
/* @__PURE__ */ jsx30(DialogDescription, { className: "sr-only", children: "On-ramp placeholder" }),
|
|
8360
|
+
/* @__PURE__ */ jsx30("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
|
|
8361
|
+
onBack && /* @__PURE__ */ jsx30(
|
|
8398
8362
|
"button",
|
|
8399
8363
|
{
|
|
8400
8364
|
onClick: onBack,
|
|
8401
8365
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8402
8366
|
title: "Back",
|
|
8403
|
-
children: /* @__PURE__ */
|
|
8367
|
+
children: /* @__PURE__ */ jsx30(ArrowLeft10, { className: "h-4 w-4" })
|
|
8404
8368
|
}
|
|
8405
8369
|
),
|
|
8406
|
-
/* @__PURE__ */
|
|
8407
|
-
/* @__PURE__ */
|
|
8408
|
-
/* @__PURE__ */
|
|
8370
|
+
/* @__PURE__ */ jsxs21("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8371
|
+
/* @__PURE__ */ jsx30(CreditCard, { className: "h-5 w-5" }),
|
|
8372
|
+
/* @__PURE__ */ jsx30("span", { children: "Buy" })
|
|
8409
8373
|
] })
|
|
8410
8374
|
] }) }),
|
|
8411
|
-
/* @__PURE__ */
|
|
8412
|
-
/* @__PURE__ */
|
|
8413
|
-
/* @__PURE__ */
|
|
8375
|
+
/* @__PURE__ */ jsxs21("div", { className: "p-5", children: [
|
|
8376
|
+
/* @__PURE__ */ jsx30("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx30("div", { className: `text-sm ${theme.mutedText}`, children: "On-ramp coming soon\u2026" }) }),
|
|
8377
|
+
/* @__PURE__ */ jsx30("div", { className: "pt-4", children: /* @__PURE__ */ jsx30(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
|
|
8414
8378
|
] })
|
|
8415
8379
|
]
|
|
8416
8380
|
}
|
|
@@ -8422,14 +8386,14 @@ init_dialog();
|
|
|
8422
8386
|
init_button();
|
|
8423
8387
|
init_LumiaPassportContext();
|
|
8424
8388
|
init_useTheme();
|
|
8425
|
-
import { ShieldCheck, ArrowLeft as
|
|
8426
|
-
import { jsx as
|
|
8389
|
+
import { ShieldCheck, ArrowLeft as ArrowLeft11 } from "lucide-react";
|
|
8390
|
+
import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
8427
8391
|
var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
8428
8392
|
const { config } = useLumiaPassportConfig();
|
|
8429
8393
|
const { isDark, classes: theme } = useTheme(config.ui.theme, config.ui.colors);
|
|
8430
8394
|
const provider = config.kyc?.provider;
|
|
8431
8395
|
const options = config.kyc?.options || {};
|
|
8432
|
-
return /* @__PURE__ */
|
|
8396
|
+
return /* @__PURE__ */ jsx31(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs22(
|
|
8433
8397
|
DialogContent,
|
|
8434
8398
|
{
|
|
8435
8399
|
className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
|
|
@@ -8441,32 +8405,32 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
|
|
|
8441
8405
|
fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
|
|
8442
8406
|
},
|
|
8443
8407
|
children: [
|
|
8444
|
-
/* @__PURE__ */
|
|
8445
|
-
/* @__PURE__ */
|
|
8446
|
-
/* @__PURE__ */
|
|
8447
|
-
onBack && /* @__PURE__ */
|
|
8408
|
+
/* @__PURE__ */ jsx31(VisuallyHidden, { children: /* @__PURE__ */ jsx31(DialogTitle, { children: "KYC" }) }),
|
|
8409
|
+
/* @__PURE__ */ jsx31(DialogDescription, { className: "sr-only", children: "KYC placeholder" }),
|
|
8410
|
+
/* @__PURE__ */ jsx31("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
|
|
8411
|
+
onBack && /* @__PURE__ */ jsx31(
|
|
8448
8412
|
"button",
|
|
8449
8413
|
{
|
|
8450
8414
|
onClick: onBack,
|
|
8451
8415
|
className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
|
|
8452
8416
|
title: "Back",
|
|
8453
|
-
children: /* @__PURE__ */
|
|
8417
|
+
children: /* @__PURE__ */ jsx31(ArrowLeft11, { className: "h-4 w-4" })
|
|
8454
8418
|
}
|
|
8455
8419
|
),
|
|
8456
|
-
/* @__PURE__ */
|
|
8457
|
-
/* @__PURE__ */
|
|
8458
|
-
/* @__PURE__ */
|
|
8420
|
+
/* @__PURE__ */ jsxs22("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
|
|
8421
|
+
/* @__PURE__ */ jsx31(ShieldCheck, { className: "h-5 w-5" }),
|
|
8422
|
+
/* @__PURE__ */ jsx31("span", { children: "KYC" })
|
|
8459
8423
|
] })
|
|
8460
8424
|
] }) }),
|
|
8461
|
-
/* @__PURE__ */
|
|
8462
|
-
provider ? /* @__PURE__ */
|
|
8463
|
-
/* @__PURE__ */
|
|
8425
|
+
/* @__PURE__ */ jsxs22("div", { className: "p-5", children: [
|
|
8426
|
+
provider ? /* @__PURE__ */ jsxs22("div", { className: `rounded-xl p-4 ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: [
|
|
8427
|
+
/* @__PURE__ */ jsxs22("div", { className: `text-sm ${theme.titleText} mb-2`, children: [
|
|
8464
8428
|
"KYC provider: ",
|
|
8465
|
-
/* @__PURE__ */
|
|
8429
|
+
/* @__PURE__ */ jsx31("span", { className: "font-medium", children: provider })
|
|
8466
8430
|
] }),
|
|
8467
|
-
Object.keys(options).length > 0 ? /* @__PURE__ */
|
|
8468
|
-
] }) : /* @__PURE__ */
|
|
8469
|
-
/* @__PURE__ */
|
|
8431
|
+
Object.keys(options).length > 0 ? /* @__PURE__ */ jsx31("div", { className: `text-xs ${theme.mutedText} break-words whitespace-pre-wrap`, children: JSON.stringify(options, null, 2) }) : /* @__PURE__ */ jsx31("div", { className: `text-sm ${theme.mutedText}`, children: "No provider options configured." })
|
|
8432
|
+
] }) : /* @__PURE__ */ jsx31("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx31("div", { className: `text-sm ${theme.mutedText}`, children: "KYC verification coming soon\u2026" }) }),
|
|
8433
|
+
/* @__PURE__ */ jsx31("div", { className: "pt-4", children: /* @__PURE__ */ jsx31(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
|
|
8470
8434
|
] })
|
|
8471
8435
|
]
|
|
8472
8436
|
}
|
|
@@ -8526,7 +8490,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
8526
8490
|
// package.json
|
|
8527
8491
|
var package_default = {
|
|
8528
8492
|
name: "@lumiapassport/ui-kit",
|
|
8529
|
-
version: "1.5.
|
|
8493
|
+
version: "1.5.1",
|
|
8530
8494
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
8531
8495
|
type: "module",
|
|
8532
8496
|
main: "./dist/index.cjs",
|
|
@@ -8616,7 +8580,7 @@ var package_default = {
|
|
|
8616
8580
|
};
|
|
8617
8581
|
|
|
8618
8582
|
// src/components/ConnectWalletButton.tsx
|
|
8619
|
-
import { jsx as
|
|
8583
|
+
import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
8620
8584
|
var ConnectWalletButton = ({
|
|
8621
8585
|
className,
|
|
8622
8586
|
label = "Connect Wallet",
|
|
@@ -8668,6 +8632,9 @@ var ConnectWalletButton = ({
|
|
|
8668
8632
|
const [isKycOpen, setIsKycOpen] = React27.useState(false);
|
|
8669
8633
|
React27.useEffect(() => {
|
|
8670
8634
|
if (!callbacks?.onWalletReady) return;
|
|
8635
|
+
if (!config.projectId) {
|
|
8636
|
+
return;
|
|
8637
|
+
}
|
|
8671
8638
|
(async () => {
|
|
8672
8639
|
try {
|
|
8673
8640
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
@@ -8677,7 +8644,7 @@ var ConnectWalletButton = ({
|
|
|
8677
8644
|
console.warn("[UI-KIT] Failed to register onWalletReady callback:", e);
|
|
8678
8645
|
}
|
|
8679
8646
|
})();
|
|
8680
|
-
}, [callbacks?.onWalletReady]);
|
|
8647
|
+
}, [callbacks?.onWalletReady, config.projectId]);
|
|
8681
8648
|
React27.useEffect(() => {
|
|
8682
8649
|
try {
|
|
8683
8650
|
const shouldAutoOpen = authOpen ?? config?.ui?.authOpen;
|
|
@@ -8733,6 +8700,9 @@ var ConnectWalletButton = ({
|
|
|
8733
8700
|
const userId = loginResponse.userId;
|
|
8734
8701
|
const hasServerKeyshare = loginResponse.hasKeyshare ?? false;
|
|
8735
8702
|
try {
|
|
8703
|
+
if (!config.projectId) {
|
|
8704
|
+
throw new Error("projectId is not configured. Cannot authenticate with iframe.");
|
|
8705
|
+
}
|
|
8736
8706
|
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8737
8707
|
const iframeManager = getIframeManager2();
|
|
8738
8708
|
await iframeManager.authenticate(userId);
|
|
@@ -8871,6 +8841,9 @@ var ConnectWalletButton = ({
|
|
|
8871
8841
|
if (autoConnectAttemptedRef.current) return;
|
|
8872
8842
|
const tryAutoConnect = async (attempt) => {
|
|
8873
8843
|
if (address || session) return;
|
|
8844
|
+
if (!config.projectId) {
|
|
8845
|
+
return;
|
|
8846
|
+
}
|
|
8874
8847
|
try {
|
|
8875
8848
|
const { waitForIframe: waitForIframe2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8876
8849
|
await waitForIframe2();
|
|
@@ -8910,12 +8883,14 @@ var ConnectWalletButton = ({
|
|
|
8910
8883
|
callbacks?.onLumiaPassportAccount?.({ userId, address: addr, session: sess, hasKeyshare: finalHasKeyshare });
|
|
8911
8884
|
} catch {
|
|
8912
8885
|
}
|
|
8913
|
-
|
|
8914
|
-
|
|
8915
|
-
|
|
8916
|
-
|
|
8917
|
-
|
|
8918
|
-
|
|
8886
|
+
if (config.projectId) {
|
|
8887
|
+
try {
|
|
8888
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
8889
|
+
const iframeManager = getIframeManager2();
|
|
8890
|
+
await iframeManager.authenticate(userId);
|
|
8891
|
+
} catch (e) {
|
|
8892
|
+
console.warn("[UI-KIT][AutoConnect] iframe authentication failed:", e);
|
|
8893
|
+
}
|
|
8919
8894
|
}
|
|
8920
8895
|
try {
|
|
8921
8896
|
const { checkServerBackupAvailability: checkServerBackupAvailability2, updateBackupStatus: updateBackupStatus2, getShareRecoveryStats: getShareRecoveryStats2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -8953,8 +8928,8 @@ var ConnectWalletButton = ({
|
|
|
8953
8928
|
refetchBalance();
|
|
8954
8929
|
}
|
|
8955
8930
|
}, [address]);
|
|
8956
|
-
return /* @__PURE__ */
|
|
8957
|
-
/* @__PURE__ */
|
|
8931
|
+
return /* @__PURE__ */ jsxs23("div", { className: [className, "lumia-scope"].filter(Boolean).join(" "), children: [
|
|
8932
|
+
/* @__PURE__ */ jsx32("div", { className: "inline-flex items-center gap-2", children: !address ? /* @__PURE__ */ jsx32("div", { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ jsx32(
|
|
8958
8933
|
"button",
|
|
8959
8934
|
{
|
|
8960
8935
|
onClick: () => {
|
|
@@ -8989,7 +8964,7 @@ var ConnectWalletButton = ({
|
|
|
8989
8964
|
},
|
|
8990
8965
|
children: label || "Connect"
|
|
8991
8966
|
}
|
|
8992
|
-
) }) : /* @__PURE__ */
|
|
8967
|
+
) }) : /* @__PURE__ */ jsx32(
|
|
8993
8968
|
"div",
|
|
8994
8969
|
{
|
|
8995
8970
|
className: `relative rounded-2xl p-4 shadow-lg cursor-pointer transition-all duration-200 hover:scale-105 hover:shadow-xl max-w-sm min-w-[280px] backdrop-blur`,
|
|
@@ -9000,51 +8975,51 @@ var ConnectWalletButton = ({
|
|
|
9000
8975
|
borderColor: config.ui.colors?.[isDark ? "dark" : "light"]?.connectedButtonBorder || (isDark ? "#374151" : "#e5e7eb")
|
|
9001
8976
|
},
|
|
9002
8977
|
onClick: () => setIsWalletMenuOpen(true),
|
|
9003
|
-
children: /* @__PURE__ */
|
|
9004
|
-
/* @__PURE__ */
|
|
8978
|
+
children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-3", children: [
|
|
8979
|
+
/* @__PURE__ */ jsx32("div", { className: "w-10 h-10 rounded-full flex items-center justify-center flex-shrink-0 overflow-hidden bg-gradient-to-br from-purple-500 to-blue-600", children: avatar ? (
|
|
9005
8980
|
// eslint-disable-next-line @next/next/no-img-element
|
|
9006
|
-
/* @__PURE__ */
|
|
9007
|
-
) : /* @__PURE__ */
|
|
9008
|
-
/* @__PURE__ */
|
|
9009
|
-
/* @__PURE__ */
|
|
9010
|
-
/* @__PURE__ */
|
|
8981
|
+
/* @__PURE__ */ jsx32("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
|
|
8982
|
+
) : /* @__PURE__ */ jsx32("span", { className: "text-white font-bold text-sm", children: "LP" }) }),
|
|
8983
|
+
/* @__PURE__ */ jsxs23("div", { className: "text-left flex-1 min-w-0", children: [
|
|
8984
|
+
/* @__PURE__ */ jsx32("div", { className: `font-semibold text-base truncate ${theme.titleText}`, children: mode === "compact" && displayName ? displayName : formatAddress(address) }),
|
|
8985
|
+
/* @__PURE__ */ jsxs23("div", { className: `text-sm ${theme.mutedText}`, children: [
|
|
9011
8986
|
formatBalance(),
|
|
9012
8987
|
" LUMIA"
|
|
9013
8988
|
] })
|
|
9014
8989
|
] }),
|
|
9015
|
-
/* @__PURE__ */
|
|
9016
|
-
/* @__PURE__ */
|
|
9017
|
-
/* @__PURE__ */
|
|
8990
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-1", children: [
|
|
8991
|
+
/* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
|
|
8992
|
+
/* @__PURE__ */ jsx32(
|
|
9018
8993
|
Cloud3,
|
|
9019
8994
|
{
|
|
9020
8995
|
className: `w-3 h-3 ${indicators.server ? "text-green-500" : "text-orange-400"}`
|
|
9021
8996
|
}
|
|
9022
8997
|
),
|
|
9023
|
-
/* @__PURE__ */
|
|
8998
|
+
/* @__PURE__ */ jsxs23("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
|
|
9024
8999
|
"Server Keyshare: ",
|
|
9025
9000
|
indicators.server ? "Available" : "Missing"
|
|
9026
9001
|
] })
|
|
9027
9002
|
] }),
|
|
9028
|
-
/* @__PURE__ */
|
|
9029
|
-
/* @__PURE__ */
|
|
9003
|
+
/* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
|
|
9004
|
+
/* @__PURE__ */ jsx32(
|
|
9030
9005
|
Laptop2,
|
|
9031
9006
|
{
|
|
9032
9007
|
className: `w-3 h-3 ${indicators.local ? "text-green-500" : "text-orange-400"}`
|
|
9033
9008
|
}
|
|
9034
9009
|
),
|
|
9035
|
-
/* @__PURE__ */
|
|
9010
|
+
/* @__PURE__ */ jsxs23("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
|
|
9036
9011
|
"Local Keyshare: ",
|
|
9037
9012
|
indicators.local ? "Available" : "Missing"
|
|
9038
9013
|
] })
|
|
9039
9014
|
] }),
|
|
9040
|
-
/* @__PURE__ */
|
|
9041
|
-
/* @__PURE__ */
|
|
9015
|
+
/* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
|
|
9016
|
+
/* @__PURE__ */ jsx32(
|
|
9042
9017
|
Shield4,
|
|
9043
9018
|
{
|
|
9044
9019
|
className: `w-3 h-3 ${indicators.backup ? "text-green-500" : "text-orange-400"}`
|
|
9045
9020
|
}
|
|
9046
9021
|
),
|
|
9047
|
-
/* @__PURE__ */
|
|
9022
|
+
/* @__PURE__ */ jsxs23("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
|
|
9048
9023
|
"Vault Backup: ",
|
|
9049
9024
|
indicators.backup ? "Available" : "Not Found"
|
|
9050
9025
|
] })
|
|
@@ -9053,62 +9028,62 @@ var ConnectWalletButton = ({
|
|
|
9053
9028
|
] })
|
|
9054
9029
|
}
|
|
9055
9030
|
) }),
|
|
9056
|
-
isWalletMenuOpen && address && /* @__PURE__ */
|
|
9057
|
-
/* @__PURE__ */
|
|
9058
|
-
/* @__PURE__ */
|
|
9059
|
-
/* @__PURE__ */
|
|
9060
|
-
/* @__PURE__ */
|
|
9031
|
+
isWalletMenuOpen && address && /* @__PURE__ */ jsx32("div", { className: "fixed inset-0 z-[60]", children: /* @__PURE__ */ jsx32(Dialog, { open: isWalletMenuOpen, onOpenChange: setIsWalletMenuOpen, children: /* @__PURE__ */ jsxs23(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
|
|
9032
|
+
/* @__PURE__ */ jsx32(VisuallyHidden, { children: /* @__PURE__ */ jsx32(DialogTitle, { children: "Wallet Menu" }) }),
|
|
9033
|
+
/* @__PURE__ */ jsx32(DialogDescription, { className: "sr-only", children: "Smart Account wallet actions and status" }),
|
|
9034
|
+
/* @__PURE__ */ jsx32("div", { className: `p-4 border-b ${theme.divider}`, children: /* @__PURE__ */ jsx32("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-4", children: [
|
|
9035
|
+
/* @__PURE__ */ jsx32("div", { className: "w-12 h-12 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center relative overflow-hidden", children: avatar ? (
|
|
9061
9036
|
// eslint-disable-next-line @next/next/no-img-element
|
|
9062
|
-
/* @__PURE__ */
|
|
9063
|
-
) : /* @__PURE__ */
|
|
9064
|
-
/* @__PURE__ */
|
|
9065
|
-
/* @__PURE__ */
|
|
9066
|
-
/* @__PURE__ */
|
|
9067
|
-
/* @__PURE__ */
|
|
9068
|
-
/* @__PURE__ */
|
|
9037
|
+
/* @__PURE__ */ jsx32("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
|
|
9038
|
+
) : /* @__PURE__ */ jsx32("span", { className: "text-white font-bold text-lg", children: "L" }) }),
|
|
9039
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
|
|
9040
|
+
/* @__PURE__ */ jsx32("div", { className: `font-medium text-left text-lg ${theme.titleText}`, children: displayName || "Smart Account" }),
|
|
9041
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-2", children: [
|
|
9042
|
+
/* @__PURE__ */ jsx32("div", { className: `text-sm ${theme.mutedText}`, children: formatAddress(address) }),
|
|
9043
|
+
/* @__PURE__ */ jsx32("button", { onClick: async () => {
|
|
9069
9044
|
try {
|
|
9070
9045
|
await navigator.clipboard.writeText(address);
|
|
9071
9046
|
setCopied(true);
|
|
9072
9047
|
setTimeout(() => setCopied(false), 1500);
|
|
9073
9048
|
} catch {
|
|
9074
9049
|
}
|
|
9075
|
-
}, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */
|
|
9050
|
+
}, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ jsx32("span", { className: "text-green-500 text-sm", children: "\u2713" }) : /* @__PURE__ */ jsx32(Copy5, { className: "w-4 h-4" }) })
|
|
9076
9051
|
] })
|
|
9077
9052
|
] })
|
|
9078
9053
|
] }) }) }),
|
|
9079
|
-
/* @__PURE__ */
|
|
9080
|
-
/* @__PURE__ */
|
|
9081
|
-
/* @__PURE__ */
|
|
9054
|
+
/* @__PURE__ */ jsxs23("div", { className: "p-4", children: [
|
|
9055
|
+
/* @__PURE__ */ jsxs23("div", { className: "grid grid-cols-3 gap-2 mb-4", children: [
|
|
9056
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9082
9057
|
setIsWalletMenuOpen(false);
|
|
9083
9058
|
setIsSendOpen(true);
|
|
9084
9059
|
}, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-blue-400" : "bg-blue-50 hover:bg-blue-100 text-blue-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
|
|
9085
|
-
/* @__PURE__ */
|
|
9086
|
-
/* @__PURE__ */
|
|
9060
|
+
/* @__PURE__ */ jsx32(ArrowUp, { className: "w-5 h-5" }),
|
|
9061
|
+
/* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Send" })
|
|
9087
9062
|
] }),
|
|
9088
|
-
/* @__PURE__ */
|
|
9063
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9089
9064
|
setIsWalletMenuOpen(false);
|
|
9090
9065
|
setIsReceiveOpen(true);
|
|
9091
9066
|
}, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-green-400" : "bg-green-50 hover:bg-green-100 text-green-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
|
|
9092
|
-
/* @__PURE__ */
|
|
9093
|
-
/* @__PURE__ */
|
|
9067
|
+
/* @__PURE__ */ jsx32(ArrowDown, { className: "w-5 h-5" }),
|
|
9068
|
+
/* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Receive" })
|
|
9094
9069
|
] }),
|
|
9095
|
-
/* @__PURE__ */
|
|
9070
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9096
9071
|
setIsWalletMenuOpen(false);
|
|
9097
9072
|
setIsBuyOpen(true);
|
|
9098
9073
|
}, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-purple-400" : "bg-purple-50 hover:bg-purple-100 text-purple-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
|
|
9099
|
-
/* @__PURE__ */
|
|
9100
|
-
/* @__PURE__ */
|
|
9074
|
+
/* @__PURE__ */ jsx32(Plus, { className: "w-5 h-5" }),
|
|
9075
|
+
/* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Buy" })
|
|
9101
9076
|
] })
|
|
9102
9077
|
] }),
|
|
9103
|
-
config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */
|
|
9104
|
-
/* @__PURE__ */
|
|
9105
|
-
/* @__PURE__ */
|
|
9078
|
+
config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ jsx32("div", { className: `mb-4 p-4 rounded-xl animate-glow-warning ${isDark ? "bg-red-950/90 border-2 border-red-800/80" : "bg-red-50 border-2 border-red-300"}`, children: /* @__PURE__ */ jsx32("div", { className: "flex items-start space-x-3 text-center", children: /* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
|
|
9079
|
+
/* @__PURE__ */ jsx32("div", { className: `text-sm font-bold ${isDark ? "text-red-200" : "text-red-800"}`, children: "BACKUP NOT CREATED" }),
|
|
9080
|
+
/* @__PURE__ */ jsxs23("div", { className: `text-xs mt-1.5 font-medium ${isDark ? "text-red-300/95" : "text-red-700"}`, children: [
|
|
9106
9081
|
"Your wallet will be ",
|
|
9107
|
-
/* @__PURE__ */
|
|
9082
|
+
/* @__PURE__ */ jsx32("strong", { children: "PERMANENTLY LOST" }),
|
|
9108
9083
|
" if browser data is cleared."
|
|
9109
9084
|
] }),
|
|
9110
|
-
/* @__PURE__ */
|
|
9111
|
-
/* @__PURE__ */
|
|
9085
|
+
/* @__PURE__ */ jsx32("div", { className: `text-[11px] mt-1 ${isDark ? "text-red-400/80" : "text-red-600/90"}`, children: "\u26A0\uFE0F Lumia cannot recover your wallet without a backup!" }),
|
|
9086
|
+
/* @__PURE__ */ jsxs23(
|
|
9112
9087
|
"button",
|
|
9113
9088
|
{
|
|
9114
9089
|
onClick: () => {
|
|
@@ -9117,7 +9092,7 @@ var ConnectWalletButton = ({
|
|
|
9117
9092
|
},
|
|
9118
9093
|
className: `mt-3 px-4 py-2 text-xs font-bold rounded-lg transition-all hover:scale-105 ${isDark ? "bg-red-700/80 hover:bg-red-600/90 text-white shadow-lg" : "bg-red-600 hover:bg-red-700 text-white shadow-lg"}`,
|
|
9119
9094
|
children: [
|
|
9120
|
-
/* @__PURE__ */
|
|
9095
|
+
/* @__PURE__ */ jsx32(ShieldCheck2, { className: "w-3.5 h-3.5 inline mr-1.5" }),
|
|
9121
9096
|
"Create Backup Now"
|
|
9122
9097
|
]
|
|
9123
9098
|
}
|
|
@@ -9126,12 +9101,12 @@ var ConnectWalletButton = ({
|
|
|
9126
9101
|
(() => {
|
|
9127
9102
|
const providers = jwtTokenManager2.getProviders();
|
|
9128
9103
|
const hasEmail = providers.includes("email");
|
|
9129
|
-
return config.warnings?.emailNotConnectedWarning && !hasEmail && /* @__PURE__ */
|
|
9130
|
-
/* @__PURE__ */
|
|
9131
|
-
/* @__PURE__ */
|
|
9132
|
-
/* @__PURE__ */
|
|
9133
|
-
/* @__PURE__ */
|
|
9134
|
-
/* @__PURE__ */
|
|
9104
|
+
return config.warnings?.emailNotConnectedWarning && !hasEmail && /* @__PURE__ */ jsx32("div", { className: `mb-4 p-3 rounded-xl ${isDark ? "bg-blue-900/20 border border-blue-900/40" : "bg-blue-50 border border-blue-200"}`, children: /* @__PURE__ */ jsxs23("div", { className: "flex items-start space-x-3", children: [
|
|
9105
|
+
/* @__PURE__ */ jsx32(AlertTriangle4, { className: `w-5 h-5 ${isDark ? "text-blue-400" : "text-blue-500"} mt-0.5 flex-shrink-0` }),
|
|
9106
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
|
|
9107
|
+
/* @__PURE__ */ jsx32("div", { className: `text-sm font-medium ${isDark ? "text-blue-300" : "text-blue-700"}`, children: "Email Not Connected" }),
|
|
9108
|
+
/* @__PURE__ */ jsx32("div", { className: `text-xs mt-1 ${isDark ? "text-blue-400/80" : "text-blue-600"}`, children: "Connect your email for easier account recovery and additional security." }),
|
|
9109
|
+
/* @__PURE__ */ jsxs23(
|
|
9135
9110
|
"button",
|
|
9136
9111
|
{
|
|
9137
9112
|
onClick: () => {
|
|
@@ -9140,7 +9115,7 @@ var ConnectWalletButton = ({
|
|
|
9140
9115
|
},
|
|
9141
9116
|
className: `mt-2 px-3 py-1.5 text-xs font-medium rounded-lg transition-colors ${isDark ? "bg-blue-900/40 hover:bg-blue-900/60 text-blue-300" : "bg-blue-100 hover:bg-blue-200 text-blue-700"}`,
|
|
9142
9117
|
children: [
|
|
9143
|
-
/* @__PURE__ */
|
|
9118
|
+
/* @__PURE__ */ jsx32(ShieldCheck2, { className: "w-3 h-3 inline mr-1" }),
|
|
9144
9119
|
"Connect Email"
|
|
9145
9120
|
]
|
|
9146
9121
|
}
|
|
@@ -9148,84 +9123,84 @@ var ConnectWalletButton = ({
|
|
|
9148
9123
|
] })
|
|
9149
9124
|
] }) });
|
|
9150
9125
|
})(),
|
|
9151
|
-
/* @__PURE__ */
|
|
9126
|
+
/* @__PURE__ */ jsx32(
|
|
9152
9127
|
"button",
|
|
9153
9128
|
{
|
|
9154
9129
|
onClick: () => address && window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank"),
|
|
9155
9130
|
className: `w-full ${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-3 mb-3 transition-colors cursor-pointer text-left`,
|
|
9156
|
-
children: /* @__PURE__ */
|
|
9157
|
-
/* @__PURE__ */
|
|
9158
|
-
/* @__PURE__ */
|
|
9159
|
-
/* @__PURE__ */
|
|
9160
|
-
/* @__PURE__ */
|
|
9161
|
-
/* @__PURE__ */
|
|
9131
|
+
children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between", children: [
|
|
9132
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-3", children: [
|
|
9133
|
+
/* @__PURE__ */ jsx32("div", { className: "w-8 h-8 rounded-full flex items-center justify-center bg-transparent overflow-hidden", children: lumiaBeam.logoDataUri ? /* @__PURE__ */ jsx32("img", { src: lumiaBeam.logoDataUri, alt: "Chain logo", className: "w-full h-full object-cover" }) : lumiaBeam.logo === "lumia" ? /* @__PURE__ */ jsx32(LumiaLogo, { size: 32 }) : /* @__PURE__ */ jsx32("span", { className: "text-white text-xs font-bold", children: (lumiaBeam.name || "L").charAt(0) }) }),
|
|
9134
|
+
/* @__PURE__ */ jsxs23("div", { children: [
|
|
9135
|
+
/* @__PURE__ */ jsx32("div", { className: `${theme.titleText} font-medium`, children: lumiaBeam.name }),
|
|
9136
|
+
/* @__PURE__ */ jsxs23("div", { className: theme.mutedText + " text-sm", children: [
|
|
9162
9137
|
formatBalance(),
|
|
9163
9138
|
" LUMIA"
|
|
9164
9139
|
] })
|
|
9165
9140
|
] })
|
|
9166
9141
|
] }),
|
|
9167
|
-
/* @__PURE__ */
|
|
9142
|
+
/* @__PURE__ */ jsx32("div", { className: theme.iconColor, children: /* @__PURE__ */ jsx32(ArrowUpRight2, { className: "w-4 h-4" }) })
|
|
9168
9143
|
] })
|
|
9169
9144
|
}
|
|
9170
9145
|
),
|
|
9171
|
-
/* @__PURE__ */
|
|
9172
|
-
config.features?.kycNeeded && /* @__PURE__ */
|
|
9146
|
+
/* @__PURE__ */ jsxs23("div", { className: "space-y-1", children: [
|
|
9147
|
+
config.features?.kycNeeded && /* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9173
9148
|
setIsWalletMenuOpen(false);
|
|
9174
9149
|
setIsKycOpen(true);
|
|
9175
9150
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9176
|
-
/* @__PURE__ */
|
|
9177
|
-
/* @__PURE__ */
|
|
9151
|
+
/* @__PURE__ */ jsx32(ShieldCheck2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9152
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "KYC" })
|
|
9178
9153
|
] }),
|
|
9179
|
-
/* @__PURE__ */
|
|
9154
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9180
9155
|
setIsWalletMenuOpen(false);
|
|
9181
9156
|
setIsTransactionsOpen(true);
|
|
9182
9157
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9183
|
-
/* @__PURE__ */
|
|
9184
|
-
/* @__PURE__ */
|
|
9158
|
+
/* @__PURE__ */ jsx32(Activity2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9159
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Transactions" })
|
|
9185
9160
|
] }),
|
|
9186
|
-
/* @__PURE__ */
|
|
9161
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9187
9162
|
setIsWalletMenuOpen(false);
|
|
9188
9163
|
setIsViewAssetsOpen(true);
|
|
9189
9164
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9190
|
-
/* @__PURE__ */
|
|
9191
|
-
/* @__PURE__ */
|
|
9165
|
+
/* @__PURE__ */ jsx32(Gem2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9166
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "View Assets" })
|
|
9192
9167
|
] }),
|
|
9193
|
-
/* @__PURE__ */
|
|
9168
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9194
9169
|
setIsWalletMenuOpen(false);
|
|
9195
9170
|
setIsManageWalletOpen(true);
|
|
9196
9171
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9197
|
-
/* @__PURE__ */
|
|
9198
|
-
/* @__PURE__ */
|
|
9172
|
+
/* @__PURE__ */ jsx32(CreditCard2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9173
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Manage Wallet" })
|
|
9199
9174
|
] }),
|
|
9200
|
-
/* @__PURE__ */
|
|
9175
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9201
9176
|
setIsWalletMenuOpen(false);
|
|
9202
9177
|
setIsSecurityOpen(true);
|
|
9203
9178
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9204
|
-
/* @__PURE__ */
|
|
9205
|
-
/* @__PURE__ */
|
|
9179
|
+
/* @__PURE__ */ jsx32(Lock2, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9180
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Security" })
|
|
9206
9181
|
] }),
|
|
9207
|
-
/* @__PURE__ */
|
|
9182
|
+
/* @__PURE__ */ jsxs23("button", { onClick: () => {
|
|
9208
9183
|
setIsWalletMenuOpen(false);
|
|
9209
9184
|
setIsBackupOpen(true);
|
|
9210
9185
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-gray-800" : "bg-transparent hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
|
|
9211
|
-
/* @__PURE__ */
|
|
9212
|
-
/* @__PURE__ */
|
|
9186
|
+
/* @__PURE__ */ jsx32(Shield4, { className: `w-5 h-5 ${theme.iconColor}` }),
|
|
9187
|
+
/* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Keyshare Backup" })
|
|
9213
9188
|
] }),
|
|
9214
|
-
/* @__PURE__ */
|
|
9189
|
+
/* @__PURE__ */ jsxs23("button", { onClick: async () => {
|
|
9215
9190
|
await handleDisconnect();
|
|
9216
9191
|
setIsWalletMenuOpen(false);
|
|
9217
9192
|
}, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "bg-transparent hover:bg-red-900/20" : "bg-transparent hover:bg-red-50"} transition-colors flex items-center space-x-3`, children: [
|
|
9218
|
-
/* @__PURE__ */
|
|
9219
|
-
/* @__PURE__ */
|
|
9193
|
+
/* @__PURE__ */ jsx32(ArrowUpRight2, { className: "w-5 h-5 text-red-600" }),
|
|
9194
|
+
/* @__PURE__ */ jsx32("span", { className: "text-red-600", children: "Disconnect Wallet" })
|
|
9220
9195
|
] })
|
|
9221
9196
|
] }),
|
|
9222
|
-
/* @__PURE__ */
|
|
9197
|
+
/* @__PURE__ */ jsx32("div", { className: `mt-3 pt-3 border-t ${theme.divider} text-center`, children: /* @__PURE__ */ jsxs23("div", { className: `text-xs ${theme.mutedText}`, children: [
|
|
9223
9198
|
"Lumia Passport v",
|
|
9224
9199
|
package_default.version
|
|
9225
9200
|
] }) })
|
|
9226
9201
|
] })
|
|
9227
9202
|
] }) }) }),
|
|
9228
|
-
/* @__PURE__ */
|
|
9203
|
+
/* @__PURE__ */ jsx32(
|
|
9229
9204
|
ManageWallet,
|
|
9230
9205
|
{
|
|
9231
9206
|
open: isManageWalletOpen,
|
|
@@ -9236,7 +9211,7 @@ var ConnectWalletButton = ({
|
|
|
9236
9211
|
}
|
|
9237
9212
|
}
|
|
9238
9213
|
),
|
|
9239
|
-
/* @__PURE__ */
|
|
9214
|
+
/* @__PURE__ */ jsx32(
|
|
9240
9215
|
SecurityModal,
|
|
9241
9216
|
{
|
|
9242
9217
|
open: isSecurityOpen,
|
|
@@ -9247,22 +9222,26 @@ var ConnectWalletButton = ({
|
|
|
9247
9222
|
}
|
|
9248
9223
|
}
|
|
9249
9224
|
),
|
|
9250
|
-
isBackupOpen && session?.mpcUserId && /* @__PURE__ */
|
|
9251
|
-
/* @__PURE__ */
|
|
9252
|
-
/* @__PURE__ */
|
|
9253
|
-
/* @__PURE__ */
|
|
9225
|
+
isBackupOpen && session?.mpcUserId && /* @__PURE__ */ jsx32(Dialog, { open: isBackupOpen, onOpenChange: setIsBackupOpen, children: /* @__PURE__ */ jsxs23(DialogContent, { className: "max-w-[400px] p-0", children: [
|
|
9226
|
+
/* @__PURE__ */ jsxs23(VisuallyHidden, { children: [
|
|
9227
|
+
/* @__PURE__ */ jsx32(DialogTitle, { children: "Keyshare Backup" }),
|
|
9228
|
+
/* @__PURE__ */ jsx32(DialogDescription, { children: "Create and manage encrypted backups of your keyshare" })
|
|
9254
9229
|
] }),
|
|
9255
|
-
/* @__PURE__ */
|
|
9230
|
+
/* @__PURE__ */ jsx32(
|
|
9256
9231
|
KeyshareBackup,
|
|
9257
9232
|
{
|
|
9258
9233
|
userId: session.mpcUserId,
|
|
9259
9234
|
onBackupSuccess: () => {
|
|
9260
9235
|
console.log("[ConnectWalletButton] Backup created successfully");
|
|
9236
|
+
},
|
|
9237
|
+
onBack: () => {
|
|
9238
|
+
setIsBackupOpen(false);
|
|
9239
|
+
setIsWalletMenuOpen(true);
|
|
9261
9240
|
}
|
|
9262
9241
|
}
|
|
9263
9242
|
)
|
|
9264
9243
|
] }) }),
|
|
9265
|
-
/* @__PURE__ */
|
|
9244
|
+
/* @__PURE__ */ jsx32(
|
|
9266
9245
|
TransactionsModal,
|
|
9267
9246
|
{
|
|
9268
9247
|
open: isTransactionsOpen,
|
|
@@ -9273,7 +9252,7 @@ var ConnectWalletButton = ({
|
|
|
9273
9252
|
}
|
|
9274
9253
|
}
|
|
9275
9254
|
),
|
|
9276
|
-
/* @__PURE__ */
|
|
9255
|
+
/* @__PURE__ */ jsx32(
|
|
9277
9256
|
ViewAssetsModal,
|
|
9278
9257
|
{
|
|
9279
9258
|
open: isViewAssetsOpen,
|
|
@@ -9284,7 +9263,7 @@ var ConnectWalletButton = ({
|
|
|
9284
9263
|
}
|
|
9285
9264
|
}
|
|
9286
9265
|
),
|
|
9287
|
-
/* @__PURE__ */
|
|
9266
|
+
/* @__PURE__ */ jsx32(
|
|
9288
9267
|
SendModal,
|
|
9289
9268
|
{
|
|
9290
9269
|
open: isSendOpen,
|
|
@@ -9295,7 +9274,7 @@ var ConnectWalletButton = ({
|
|
|
9295
9274
|
}
|
|
9296
9275
|
}
|
|
9297
9276
|
),
|
|
9298
|
-
/* @__PURE__ */
|
|
9277
|
+
/* @__PURE__ */ jsx32(
|
|
9299
9278
|
ReceiveModal,
|
|
9300
9279
|
{
|
|
9301
9280
|
open: isReceiveOpen,
|
|
@@ -9306,7 +9285,7 @@ var ConnectWalletButton = ({
|
|
|
9306
9285
|
}
|
|
9307
9286
|
}
|
|
9308
9287
|
),
|
|
9309
|
-
/* @__PURE__ */
|
|
9288
|
+
/* @__PURE__ */ jsx32(
|
|
9310
9289
|
BuyModal,
|
|
9311
9290
|
{
|
|
9312
9291
|
open: isBuyOpen,
|
|
@@ -9317,7 +9296,7 @@ var ConnectWalletButton = ({
|
|
|
9317
9296
|
}
|
|
9318
9297
|
}
|
|
9319
9298
|
),
|
|
9320
|
-
/* @__PURE__ */
|
|
9299
|
+
/* @__PURE__ */ jsx32(
|
|
9321
9300
|
KycModal,
|
|
9322
9301
|
{
|
|
9323
9302
|
open: isKycOpen,
|
|
@@ -9328,7 +9307,7 @@ var ConnectWalletButton = ({
|
|
|
9328
9307
|
}
|
|
9329
9308
|
}
|
|
9330
9309
|
),
|
|
9331
|
-
/* @__PURE__ */
|
|
9310
|
+
/* @__PURE__ */ jsx32(
|
|
9332
9311
|
AuthModal,
|
|
9333
9312
|
{
|
|
9334
9313
|
open: recoveryUserId ? isRecoveryModalOpen : isAuthModalOpen,
|
|
@@ -9359,6 +9338,7 @@ var ConnectWalletButton = ({
|
|
|
9359
9338
|
setStatus("ready");
|
|
9360
9339
|
setRecoveryUserId(null);
|
|
9361
9340
|
setIsRecoveryModalOpen(false);
|
|
9341
|
+
setIsAuthModalOpen(false);
|
|
9362
9342
|
onConnected?.({ address: addr, session: sess });
|
|
9363
9343
|
try {
|
|
9364
9344
|
callbacks?.onLumiaPassportConnect?.({ address: addr, session: sess });
|
|
@@ -9368,12 +9348,14 @@ var ConnectWalletButton = ({
|
|
|
9368
9348
|
callbacks?.onLumiaPassportAccount?.({ userId: recoveryUserId, address: addr, session: sess, hasKeyshare: hasServerKeyshare });
|
|
9369
9349
|
} catch {
|
|
9370
9350
|
}
|
|
9371
|
-
|
|
9372
|
-
|
|
9373
|
-
|
|
9374
|
-
|
|
9375
|
-
|
|
9376
|
-
|
|
9351
|
+
if (config.projectId) {
|
|
9352
|
+
try {
|
|
9353
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
9354
|
+
const iframeManager = getIframeManager2();
|
|
9355
|
+
await iframeManager.authenticate(recoveryUserId);
|
|
9356
|
+
} catch (e) {
|
|
9357
|
+
console.warn("[UI-KIT] iframe authentication failed:", e);
|
|
9358
|
+
}
|
|
9377
9359
|
}
|
|
9378
9360
|
try {
|
|
9379
9361
|
const { updateBackupStatus: updateBackupStatus2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
|
|
@@ -9389,7 +9371,7 @@ var ConnectWalletButton = ({
|
|
|
9389
9371
|
}
|
|
9390
9372
|
}
|
|
9391
9373
|
),
|
|
9392
|
-
/* @__PURE__ */
|
|
9374
|
+
/* @__PURE__ */ jsx32(
|
|
9393
9375
|
TssManagerWithRef,
|
|
9394
9376
|
{
|
|
9395
9377
|
ref: tssManagerRef,
|
|
@@ -9408,7 +9390,7 @@ var ConnectWalletButton = ({
|
|
|
9408
9390
|
|
|
9409
9391
|
// src/components/ThemeToggle.tsx
|
|
9410
9392
|
init_LumiaPassportContext();
|
|
9411
|
-
import { jsx as
|
|
9393
|
+
import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
9412
9394
|
var ThemeToggle = () => {
|
|
9413
9395
|
const { config, updateConfig } = useLumiaPassportConfig();
|
|
9414
9396
|
const currentTheme = config.ui.theme;
|
|
@@ -9453,7 +9435,7 @@ var ThemeToggle = () => {
|
|
|
9453
9435
|
return "auto";
|
|
9454
9436
|
}
|
|
9455
9437
|
};
|
|
9456
|
-
return /* @__PURE__ */
|
|
9438
|
+
return /* @__PURE__ */ jsx33("div", { className: "lumia-scope", children: /* @__PURE__ */ jsxs24(
|
|
9457
9439
|
"button",
|
|
9458
9440
|
{
|
|
9459
9441
|
onClick: cycleTheme,
|
|
@@ -9469,19 +9451,19 @@ var ThemeToggle = () => {
|
|
|
9469
9451
|
};
|
|
9470
9452
|
|
|
9471
9453
|
// src/components/LumiaLogo.tsx
|
|
9472
|
-
import { jsx as
|
|
9454
|
+
import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
9473
9455
|
var LumiaLogo2 = ({ size = 80, className = "" }) => {
|
|
9474
|
-
return /* @__PURE__ */
|
|
9456
|
+
return /* @__PURE__ */ jsx34(
|
|
9475
9457
|
"div",
|
|
9476
9458
|
{
|
|
9477
9459
|
className: `flex items-center justify-center ${className}`,
|
|
9478
9460
|
style: { width: size, height: size },
|
|
9479
|
-
children: /* @__PURE__ */
|
|
9480
|
-
/* @__PURE__ */
|
|
9481
|
-
/* @__PURE__ */
|
|
9482
|
-
/* @__PURE__ */
|
|
9483
|
-
/* @__PURE__ */
|
|
9484
|
-
/* @__PURE__ */
|
|
9461
|
+
children: /* @__PURE__ */ jsxs25("svg", { viewBox: "0 0 512 512", width: size, height: size, children: [
|
|
9462
|
+
/* @__PURE__ */ jsx34("circle", { cx: "256", cy: "256", r: "256", fill: "#060117", strokeWidth: "0" }),
|
|
9463
|
+
/* @__PURE__ */ jsx34("path", { d: "M264.13948,48.01032l63.62778,132.2788,133.95322,68.65102h-147.34854s-48.55804-10.04649-50.23246-56.93012,0-143.99971,0-143.99971Z", fill: "#fefdff", strokeWidth: "0" }),
|
|
9464
|
+
/* @__PURE__ */ jsx34("path", { d: "M50.27932,245.59045l132.27894-63.62734L251.20943,48.01032l-.00012,147.34824s-10.04654,48.55792-56.93019,50.23222c-46.88366,1.6743-143.9998-.00033-143.9998-.00033Z", fill: "#fefdff", strokeWidth: "0" }),
|
|
9465
|
+
/* @__PURE__ */ jsx34("path", { d: "M247.86056,463.98968l-63.62772-132.27875-133.95315-68.65092,147.34848-.00011s48.55802,10.04646,50.23242,56.93008c1.6744,46.88362-.00004,143.9997-.00004,143.9997Z", fill: "#fefdff", strokeWidth: "0" }),
|
|
9466
|
+
/* @__PURE__ */ jsx34("path", { d: "M461.72068,266.40941l-132.2789,63.62744-68.65118,133.95283.00016-147.34823s10.04655-48.55792,56.93018-50.23226c46.88364-1.67434,143.99974.00023,143.99974.00023Z", fill: "#fefdff", strokeWidth: "0" })
|
|
9485
9467
|
] })
|
|
9486
9468
|
}
|
|
9487
9469
|
);
|
|
@@ -9547,7 +9529,7 @@ function useTheme2(configTheme) {
|
|
|
9547
9529
|
init_button();
|
|
9548
9530
|
import * as React28 from "react";
|
|
9549
9531
|
import { Copy as Copy6, ExternalLink as ExternalLink5 } from "lucide-react";
|
|
9550
|
-
import { jsx as
|
|
9532
|
+
import { jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
9551
9533
|
function toExplorerUrl(kind, value, chain) {
|
|
9552
9534
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
9553
9535
|
if (!base2) return null;
|
|
@@ -9571,11 +9553,11 @@ var Hash = ({
|
|
|
9571
9553
|
const value = hash || "";
|
|
9572
9554
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
9573
9555
|
const [copied, setCopied] = React28.useState(false);
|
|
9574
|
-
if (!value) return /* @__PURE__ */
|
|
9575
|
-
return /* @__PURE__ */
|
|
9576
|
-
label && /* @__PURE__ */
|
|
9577
|
-
/* @__PURE__ */
|
|
9578
|
-
showCopy && /* @__PURE__ */
|
|
9556
|
+
if (!value) return /* @__PURE__ */ jsx35("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
9557
|
+
return /* @__PURE__ */ jsxs26("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
9558
|
+
label && /* @__PURE__ */ jsx35("span", { className: "text-sm font-medium", children: label }),
|
|
9559
|
+
/* @__PURE__ */ jsx35("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
9560
|
+
showCopy && /* @__PURE__ */ jsx35(
|
|
9579
9561
|
Button,
|
|
9580
9562
|
{
|
|
9581
9563
|
variant: "ghost",
|
|
@@ -9589,10 +9571,10 @@ var Hash = ({
|
|
|
9589
9571
|
} catch {
|
|
9590
9572
|
}
|
|
9591
9573
|
},
|
|
9592
|
-
children: /* @__PURE__ */
|
|
9574
|
+
children: /* @__PURE__ */ jsx35(Copy6, { className: "h-4 w-4" })
|
|
9593
9575
|
}
|
|
9594
9576
|
),
|
|
9595
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
9577
|
+
showExplorer && explorer && /* @__PURE__ */ jsx35(
|
|
9596
9578
|
"a",
|
|
9597
9579
|
{
|
|
9598
9580
|
href: explorer,
|
|
@@ -9600,7 +9582,7 @@ var Hash = ({
|
|
|
9600
9582
|
rel: "noreferrer noopener",
|
|
9601
9583
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
9602
9584
|
title: "Open in explorer",
|
|
9603
|
-
children: /* @__PURE__ */
|
|
9585
|
+
children: /* @__PURE__ */ jsx35(ExternalLink5, { className: "h-4 w-4" })
|
|
9604
9586
|
}
|
|
9605
9587
|
)
|
|
9606
9588
|
] });
|
|
@@ -9609,7 +9591,7 @@ var Hash = ({
|
|
|
9609
9591
|
// src/internal/components/TransactionsList.tsx
|
|
9610
9592
|
init_base();
|
|
9611
9593
|
import { useState as useState17, useEffect as useEffect13 } from "react";
|
|
9612
|
-
import { jsx as
|
|
9594
|
+
import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
9613
9595
|
var TransactionsList = ({
|
|
9614
9596
|
address,
|
|
9615
9597
|
itemsCount = 10
|
|
@@ -9663,15 +9645,15 @@ var TransactionsList = ({
|
|
|
9663
9645
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
9664
9646
|
};
|
|
9665
9647
|
if (loading) {
|
|
9666
|
-
return /* @__PURE__ */
|
|
9667
|
-
/* @__PURE__ */
|
|
9668
|
-
/* @__PURE__ */
|
|
9648
|
+
return /* @__PURE__ */ jsxs27("div", { className: "p-4 text-center", children: [
|
|
9649
|
+
/* @__PURE__ */ jsx36("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
9650
|
+
/* @__PURE__ */ jsx36("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
9669
9651
|
] });
|
|
9670
9652
|
}
|
|
9671
9653
|
if (error) {
|
|
9672
|
-
return /* @__PURE__ */
|
|
9673
|
-
/* @__PURE__ */
|
|
9674
|
-
/* @__PURE__ */
|
|
9654
|
+
return /* @__PURE__ */ jsxs27("div", { className: "p-4 text-center", children: [
|
|
9655
|
+
/* @__PURE__ */ jsx36("p", { className: "text-red-600 text-sm", children: error }),
|
|
9656
|
+
/* @__PURE__ */ jsx36(
|
|
9675
9657
|
"button",
|
|
9676
9658
|
{
|
|
9677
9659
|
onClick: () => window.location.reload(),
|
|
@@ -9682,54 +9664,54 @@ var TransactionsList = ({
|
|
|
9682
9664
|
] });
|
|
9683
9665
|
}
|
|
9684
9666
|
if (transactions.length === 0) {
|
|
9685
|
-
return /* @__PURE__ */
|
|
9667
|
+
return /* @__PURE__ */ jsx36("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx36("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
9686
9668
|
}
|
|
9687
|
-
return /* @__PURE__ */
|
|
9669
|
+
return /* @__PURE__ */ jsx36("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx36("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs27(
|
|
9688
9670
|
"div",
|
|
9689
9671
|
{
|
|
9690
9672
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
9691
9673
|
onClick: () => openTransaction(tx.hash),
|
|
9692
9674
|
children: [
|
|
9693
|
-
/* @__PURE__ */
|
|
9694
|
-
/* @__PURE__ */
|
|
9695
|
-
/* @__PURE__ */
|
|
9696
|
-
/* @__PURE__ */
|
|
9697
|
-
/* @__PURE__ */
|
|
9675
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex justify-between items-start mb-2", children: [
|
|
9676
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex-1", children: [
|
|
9677
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
9678
|
+
/* @__PURE__ */ jsx36("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress(tx.hash) }),
|
|
9679
|
+
/* @__PURE__ */ jsx36("span", { className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`, children: tx.status === "ok" ? "Success" : "Failed" })
|
|
9698
9680
|
] }),
|
|
9699
|
-
/* @__PURE__ */
|
|
9700
|
-
/* @__PURE__ */
|
|
9701
|
-
/* @__PURE__ */
|
|
9702
|
-
/* @__PURE__ */
|
|
9681
|
+
/* @__PURE__ */ jsxs27("div", { className: "text-sm space-y-1", children: [
|
|
9682
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
9683
|
+
/* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "From:" }),
|
|
9684
|
+
/* @__PURE__ */ jsxs27("span", { className: "font-mono ml-1", children: [
|
|
9703
9685
|
formatAddress(tx.from.hash),
|
|
9704
|
-
tx.from.is_contract && /* @__PURE__ */
|
|
9686
|
+
tx.from.is_contract && /* @__PURE__ */ jsx36("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
9705
9687
|
] })
|
|
9706
9688
|
] }),
|
|
9707
|
-
/* @__PURE__ */
|
|
9708
|
-
/* @__PURE__ */
|
|
9709
|
-
/* @__PURE__ */
|
|
9689
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
9690
|
+
/* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "To:" }),
|
|
9691
|
+
/* @__PURE__ */ jsxs27("span", { className: "font-mono ml-1", children: [
|
|
9710
9692
|
formatAddress(tx.to.hash),
|
|
9711
|
-
tx.to.is_contract && /* @__PURE__ */
|
|
9693
|
+
tx.to.is_contract && /* @__PURE__ */ jsx36("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
9712
9694
|
] })
|
|
9713
9695
|
] }),
|
|
9714
|
-
/* @__PURE__ */
|
|
9715
|
-
/* @__PURE__ */
|
|
9716
|
-
/* @__PURE__ */
|
|
9696
|
+
/* @__PURE__ */ jsxs27("div", { children: [
|
|
9697
|
+
/* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "Value:" }),
|
|
9698
|
+
/* @__PURE__ */ jsxs27("span", { className: "font-semibold ml-1", children: [
|
|
9717
9699
|
formatValue(tx.value),
|
|
9718
9700
|
" LUMIA"
|
|
9719
9701
|
] })
|
|
9720
9702
|
] })
|
|
9721
9703
|
] })
|
|
9722
9704
|
] }),
|
|
9723
|
-
/* @__PURE__ */
|
|
9724
|
-
/* @__PURE__ */
|
|
9725
|
-
/* @__PURE__ */
|
|
9705
|
+
/* @__PURE__ */ jsxs27("div", { className: "text-right text-xs text-gray-500", children: [
|
|
9706
|
+
/* @__PURE__ */ jsx36("div", { children: formatDate2(tx.timestamp) }),
|
|
9707
|
+
/* @__PURE__ */ jsxs27("div", { className: "mt-1", children: [
|
|
9726
9708
|
"Gas: ",
|
|
9727
9709
|
parseInt(tx.gas_used).toLocaleString()
|
|
9728
9710
|
] }),
|
|
9729
|
-
tx.method && /* @__PURE__ */
|
|
9711
|
+
tx.method && /* @__PURE__ */ jsx36("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
9730
9712
|
] })
|
|
9731
9713
|
] }),
|
|
9732
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
9714
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ jsx36("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx36(
|
|
9733
9715
|
"span",
|
|
9734
9716
|
{
|
|
9735
9717
|
className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full",
|