@lumiapassport/ui-kit 1.12.5 → 1.12.6
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/README.md +210 -159
- package/dist/iframe/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +1503 -1467
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +1321 -1284
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1973,27 +1973,12 @@ var init_keyshare = __esm({
|
|
|
1973
1973
|
});
|
|
1974
1974
|
|
|
1975
1975
|
// src/internal/auth/providers/types.ts
|
|
1976
|
-
import {
|
|
1976
|
+
import { Key, Mail, Wallet2 } from "lucide-react";
|
|
1977
1977
|
function getTssUrl3() {
|
|
1978
1978
|
return getServiceUrls().tssUrl;
|
|
1979
1979
|
}
|
|
1980
1980
|
function getProviderDisplayInfo(provider) {
|
|
1981
|
-
|
|
1982
|
-
passkey: { name: "Passkey", icon: Fingerprint, description: "Biometric authentication", color: "blue" },
|
|
1983
|
-
email: { name: "Email", icon: Mail, description: "Email verification", color: "gray" },
|
|
1984
|
-
telegram: { name: "Telegram", icon: TelegramIcon, description: "Telegram account", color: "blue" },
|
|
1985
|
-
google: { name: "Google", icon: GoogleIcon, description: "Google account", color: "red" },
|
|
1986
|
-
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account", color: "purple" },
|
|
1987
|
-
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account", color: "blue" },
|
|
1988
|
-
x: { name: "X", icon: TwitterIcon, description: "X (Twitter) account", color: "blue" },
|
|
1989
|
-
wallet: { name: "Wallet", icon: WalletIcon, description: "External wallet (EOA)", color: "purple" }
|
|
1990
|
-
};
|
|
1991
|
-
return providers[provider] || {
|
|
1992
|
-
name: provider,
|
|
1993
|
-
icon: LinkIcon,
|
|
1994
|
-
description: "Authentication provider",
|
|
1995
|
-
color: "gray"
|
|
1996
|
-
};
|
|
1981
|
+
return PROVIDERS_META[provider];
|
|
1997
1982
|
}
|
|
1998
1983
|
function formatDate(dateString) {
|
|
1999
1984
|
if (!dateString) return "Never";
|
|
@@ -2004,10 +1989,20 @@ function formatDate(dateString) {
|
|
|
2004
1989
|
return "Invalid date";
|
|
2005
1990
|
}
|
|
2006
1991
|
}
|
|
1992
|
+
var PROVIDERS_META;
|
|
2007
1993
|
var init_types = __esm({
|
|
2008
1994
|
"src/internal/auth/providers/types.ts"() {
|
|
2009
1995
|
init_assets();
|
|
2010
1996
|
init_lumiaPassport();
|
|
1997
|
+
PROVIDERS_META = {
|
|
1998
|
+
passkey: { name: "Passkey", icon: Key, description: "Biometric authentication" },
|
|
1999
|
+
email: { name: "Email", icon: Mail, description: "Email verification" },
|
|
2000
|
+
telegram: { name: "Telegram", icon: TelegramIcon, description: "Telegram account" },
|
|
2001
|
+
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
2002
|
+
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
2003
|
+
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
2004
|
+
wallet: { name: "Wallet", icon: Wallet2, description: "External wallet (EOA)" }
|
|
2005
|
+
};
|
|
2011
2006
|
}
|
|
2012
2007
|
});
|
|
2013
2008
|
|
|
@@ -4256,26 +4251,26 @@ var init_profile = __esm({
|
|
|
4256
4251
|
});
|
|
4257
4252
|
|
|
4258
4253
|
// src/styles/built.css
|
|
4259
|
-
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .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 .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-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-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 .mr-4{margin-right:1rem}.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 .size-5{width:1.25rem;height:1.25rem}.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-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-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-\\[60dvh\\]{max-height:60dvh}.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-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.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-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 20px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 10px var(--l-pass-shadow-c)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.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 .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-\\[var\\(--l-pass-info\\)\\]{border-color:var(--l-pass-info)}.lumia-scope .border-\\[var\\(--l-pass-success\\)\\]{border-color:var(--l-pass-success)}.lumia-scope .border-\\[var\\(--l-pass-warning\\)\\]{border-color:var(--l-pass-warning)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-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-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-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-note\\)\\]{background-color:var(--l-pass-bg-note)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-error\\)\\]{background-color:var(--l-pass-error)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-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-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-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-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-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\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-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 .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .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 .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.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 .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[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 .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-note\\)\\]{color:var(--l-pass-note)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-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-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-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-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 .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-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-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .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-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-el-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.8));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.6));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-note:var(--lumia-passport-note,var(--l-pass-fg-inverted));--l-pass-bg-note:var(--lumia-passport-bg-note,#d6204e);--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,var(--l-pass-fg));--l-pass-bg-error:var(--lumia-passport-bg-error,#e9fa00)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.9));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.7));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-note:var(--lumia-passport-note,var(--l-pass-fg-inverted));--l-pass-bg-note:var(--lumia-passport-bg-note,#d6204e);--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,var(--l-pass-fg));--l-pass-bg-error:var(--lumia-passport-bg-error,#e9fa00)}.lumia-scope,.lumia-scope *{font-family:Inter,system-ui,-apple-system,sans-serif;font-optical-sizing:auto;margin:0;box-sizing:border-box}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:calc(100% + 8px);padding-right:4px;overflow-y:auto;max-height:calc(var(--l-pass-maw)*2/3)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.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-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .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 .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\: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-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-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-900\\/60:hover{background-color:rgba(30,58,138,.6)}.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-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-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-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/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-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\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.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-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-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/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\\: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\\:opacity-90::file-selector-button:hover{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.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-\\[var\\(--l-pass-bd-intense\\)\\]:focus{--tw-ring-color:var(--l-pass-bd-intense)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-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-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.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 .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.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-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.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}';
|
|
4254
|
+
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .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 .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-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-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 .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.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 .mr-4{margin-right:1rem}.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 .size-5{width:1.25rem;height:1.25rem}.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-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-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-\\[60dvh\\]{max-height:60dvh}.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-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.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-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.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 .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-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-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-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-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-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-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-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-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\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-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 .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .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 .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[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 .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-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-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-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-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 .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-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-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .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-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:Inter;src:url(@/src/styles/Inter-VariableFont_opsz,wght.ttf) format("truetype-variations");font-weight:100 900;font-stretch:75% 125%;font-style:normal;font-display:swap}.lumia-scope{--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.8));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.6));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.9));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.7));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,system-ui,Inter,sans-serif;font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:calc(100% + 8px);padding-right:4px;overflow-y:auto;max-height:calc(var(--l-pass-maw)*2/3)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.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-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .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 .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\: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-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-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-900\\/60:hover{background-color:rgba(30,58,138,.6)}.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-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-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-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/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-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\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.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-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-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/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\\: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\\:opacity-90::file-selector-button:hover{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-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-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.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 .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.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-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.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}';
|
|
4260
4255
|
|
|
4261
4256
|
// src/context/LumiaPassportContext.tsx
|
|
4262
4257
|
init_lumiaPassport();
|
|
4263
4258
|
init_iframe_manager();
|
|
4264
4259
|
import { initSdkErrorTracking } from "@lumiapassport/core/internal/error-tracking";
|
|
4265
|
-
import { createContext, useCallback as useCallback16, useContext, useEffect as
|
|
4260
|
+
import { createContext, useCallback as useCallback16, useContext, useEffect as useEffect28, useState as useState14 } from "react";
|
|
4266
4261
|
|
|
4267
4262
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4268
|
-
import { Fragment as
|
|
4263
|
+
import { Fragment as Fragment10 } from "react";
|
|
4269
4264
|
import { create as create5 } from "zustand";
|
|
4270
4265
|
|
|
4271
4266
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4272
|
-
import { AnimatePresence as
|
|
4273
|
-
import { useEffect as
|
|
4267
|
+
import { AnimatePresence as AnimatePresence4, motion as motion4 } from "framer-motion";
|
|
4268
|
+
import { useEffect as useEffect24 } from "react";
|
|
4274
4269
|
|
|
4275
4270
|
// package.json
|
|
4276
4271
|
var package_default = {
|
|
4277
4272
|
name: "@lumiapassport/ui-kit",
|
|
4278
|
-
version: "1.12.
|
|
4273
|
+
version: "1.12.6",
|
|
4279
4274
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4280
4275
|
type: "module",
|
|
4281
4276
|
main: "./dist/index.cjs",
|
|
@@ -4380,7 +4375,7 @@ var LumiaLogo = forwardRef(({ size = 24, className = "" }, ref) => /* @__PURE__
|
|
|
4380
4375
|
xmlns: "http://www.w3.org/2000/svg",
|
|
4381
4376
|
fill: "none",
|
|
4382
4377
|
children: [
|
|
4383
|
-
/* @__PURE__ */ jsx2("circle", { cx: "256", cy: "256", r: "256", fill: "
|
|
4378
|
+
/* @__PURE__ */ jsx2("circle", { cx: "256", cy: "256", r: "256", fill: "currentColor", strokeWidth: "0" }),
|
|
4384
4379
|
/* @__PURE__ */ jsx2(
|
|
4385
4380
|
"path",
|
|
4386
4381
|
{
|
|
@@ -4425,12 +4420,22 @@ init_base();
|
|
|
4425
4420
|
import { create } from "zustand";
|
|
4426
4421
|
|
|
4427
4422
|
// src/internal/constants.ts
|
|
4428
|
-
|
|
4423
|
+
init_assets();
|
|
4424
|
+
import { Key as Key2, Mail as Mail2, Wallet2 as Wallet22 } from "lucide-react";
|
|
4425
|
+
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4429
4426
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4430
|
-
var MAX_LIST_HEIGHT = 320;
|
|
4431
4427
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4432
4428
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4433
4429
|
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
4430
|
+
var PROVIDERS_META2 = {
|
|
4431
|
+
passkey: { name: "Passkey", icon: Key2, description: "Biometric authentication" },
|
|
4432
|
+
email: { name: "Email", icon: Mail2, description: "Email verification" },
|
|
4433
|
+
telegram: { name: "Telegram", icon: TelegramIcon, description: "Telegram account" },
|
|
4434
|
+
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
4435
|
+
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
4436
|
+
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
4437
|
+
wallet: { name: "Wallet", icon: Wallet22, description: "External wallet (EOA)" }
|
|
4438
|
+
};
|
|
4434
4439
|
|
|
4435
4440
|
// src/internal/hooks/useLayoutDataStore.ts
|
|
4436
4441
|
var PageKey = /* @__PURE__ */ ((PageKey2) => {
|
|
@@ -4445,7 +4450,6 @@ var PageKey = /* @__PURE__ */ ((PageKey2) => {
|
|
|
4445
4450
|
PageKey2["TRANSACTIONS"] = "transactions";
|
|
4446
4451
|
PageKey2["ASSETS"] = "assets";
|
|
4447
4452
|
PageKey2["MANAGE_WALLET"] = "manage-wallet";
|
|
4448
|
-
PageKey2["ADD_PROVIDER"] = "add-provider";
|
|
4449
4453
|
PageKey2["UNLINK_PROVIDER"] = "unlink-provider";
|
|
4450
4454
|
PageKey2["SECURITY"] = "security";
|
|
4451
4455
|
PageKey2["KEYSARE_BACKUP"] = "keysare-backup";
|
|
@@ -4458,19 +4462,24 @@ var useLayoutDataStore = create((set) => ({
|
|
|
4458
4462
|
lumiaRate: 1,
|
|
4459
4463
|
usdBalance: 0,
|
|
4460
4464
|
balance: { decimals: 18, formatted: "0.0", symbol: "LUMIA", value: BigInt(0) },
|
|
4461
|
-
layoutError: "",
|
|
4462
4465
|
mainPageHeight: DEFAULT_MAIN_MENU_HEIGHT,
|
|
4463
4466
|
settingsNotifications: [],
|
|
4464
|
-
isUiDisabled: false,
|
|
4465
4467
|
setPage: (page) => set({ page }),
|
|
4466
4468
|
setPageParams: (pageOptions) => set({ pageParams: pageOptions }),
|
|
4467
4469
|
setLumiaRate: (lumiaRate) => set({ lumiaRate }),
|
|
4468
4470
|
setUsdBalance: (usdBalance) => set({ usdBalance }),
|
|
4469
4471
|
setBalance: (balance) => set({ balance }),
|
|
4470
|
-
setLayoutError: (providersError) => set({ layoutError: providersError }),
|
|
4471
4472
|
setMainPageHeight: (height) => set({ mainPageHeight: height }),
|
|
4472
|
-
setSettingsNotifications: (
|
|
4473
|
-
|
|
4473
|
+
setSettingsNotifications: (notification) => set((prev) => {
|
|
4474
|
+
const actions = notification.status === "active" ? "add" : "remove";
|
|
4475
|
+
const exists = prev.settingsNotifications.find((n) => n.id === notification.id);
|
|
4476
|
+
if (actions === "add") {
|
|
4477
|
+
if (exists) return prev;
|
|
4478
|
+
return { settingsNotifications: [...prev.settingsNotifications, notification] };
|
|
4479
|
+
}
|
|
4480
|
+
const filtered = prev.settingsNotifications.filter((n) => n.id !== notification.id);
|
|
4481
|
+
return { settingsNotifications: filtered };
|
|
4482
|
+
})
|
|
4474
4483
|
}));
|
|
4475
4484
|
|
|
4476
4485
|
// src/internal/lib/utils.ts
|
|
@@ -4567,15 +4576,14 @@ Button.displayName = "Button";
|
|
|
4567
4576
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
4568
4577
|
function Footer() {
|
|
4569
4578
|
const { callbacks } = useLumiaPassportConfig();
|
|
4570
|
-
const { address, setSession, setAddress, setStatus, setError } = useLumiaPassportSession();
|
|
4579
|
+
const { address, setSession, setAddress, setStatus, setError, setIsLoading } = useLumiaPassportSession();
|
|
4571
4580
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
4572
|
-
const setIsUiDisabled = useLayoutDataStore((st) => st.setIsUiDisabled);
|
|
4573
4581
|
const { mutate: disconnect, isPending: isDisconnecting } = useMutation({
|
|
4574
4582
|
mutationFn: async (disconnectAddress) => {
|
|
4575
4583
|
if (!disconnectAddress) throw new Error("No address to disconnect");
|
|
4576
4584
|
setError(null);
|
|
4577
4585
|
setStatus("disconnecting");
|
|
4578
|
-
|
|
4586
|
+
setIsLoading(true);
|
|
4579
4587
|
const userId = jwtTokenManager2.getUserId() || null;
|
|
4580
4588
|
const { logout: logout2 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
4581
4589
|
await logout2();
|
|
@@ -4586,14 +4594,14 @@ function Footer() {
|
|
|
4586
4594
|
setAddress(null);
|
|
4587
4595
|
setError(null);
|
|
4588
4596
|
setStatus("idle");
|
|
4589
|
-
|
|
4597
|
+
setIsLoading(false);
|
|
4590
4598
|
callbacks?.onLumiaPassportDisconnect?.({ address: disconnectAddress, userId: disconnectedUserId });
|
|
4591
4599
|
setPage("auth" /* AUTH */);
|
|
4592
4600
|
},
|
|
4593
4601
|
onError: (err) => {
|
|
4594
4602
|
setError(err.message || "An unknown error occurred during sign out");
|
|
4595
4603
|
setStatus("idle");
|
|
4596
|
-
|
|
4604
|
+
setIsLoading(false);
|
|
4597
4605
|
}
|
|
4598
4606
|
});
|
|
4599
4607
|
const { name, logo, logoDataUri } = lumiaBeam;
|
|
@@ -4942,15 +4950,15 @@ var DialogContent = React2.forwardRef(
|
|
|
4942
4950
|
children: [
|
|
4943
4951
|
/* @__PURE__ */ jsx8("span", { className: "sr-only", children: "Settings" }),
|
|
4944
4952
|
/* @__PURE__ */ jsx8(SlidersHorizontal, { className: "w-4 h-4" }),
|
|
4945
|
-
|
|
4953
|
+
!!settingsNotifications.length && /* @__PURE__ */ jsx8(
|
|
4946
4954
|
"div",
|
|
4947
4955
|
{
|
|
4948
4956
|
className: cn(
|
|
4949
4957
|
"absolute -top-2 -right-2 flex h-4 w-4",
|
|
4950
|
-
"items-center justify-center rounded-full bg-[var(--l-pass-bg-
|
|
4951
|
-
"text-xs font-semibold text-[var(--l-pass-
|
|
4958
|
+
"items-center justify-center rounded-full bg-[var(--l-pass-bg-error)]",
|
|
4959
|
+
"text-xs font-semibold text-[var(--l-pass-error)]"
|
|
4952
4960
|
),
|
|
4953
|
-
children: settingsNotifications.length
|
|
4961
|
+
children: settingsNotifications.length
|
|
4954
4962
|
}
|
|
4955
4963
|
)
|
|
4956
4964
|
]
|
|
@@ -5268,7 +5276,7 @@ function AuthFailedStep() {
|
|
|
5268
5276
|
{
|
|
5269
5277
|
className: cn(
|
|
5270
5278
|
"w-full flex flex-col p-2 gap-2 rounded-[var(--l-pass-el-bdrs)]",
|
|
5271
|
-
isCritical ? "text-[var(--l-pass-error)] bg-[var(--l-pass-bg-error)]
|
|
5279
|
+
isCritical ? "text-[var(--l-pass-error)] bg-[var(--l-pass-bg-error)]" : "text-[var(--l-pass-warning)] bg-[var(--l-pass-bg-warning)]"
|
|
5272
5280
|
),
|
|
5273
5281
|
children: [
|
|
5274
5282
|
/* @__PURE__ */ jsxs8("div", { className: "w-full flex items-center justify-center gap-2", children: [
|
|
@@ -5279,7 +5287,7 @@ function AuthFailedStep() {
|
|
|
5279
5287
|
]
|
|
5280
5288
|
}
|
|
5281
5289
|
),
|
|
5282
|
-
failedType === "config" && /* @__PURE__ */ jsxs8("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)]
|
|
5290
|
+
failedType === "config" && /* @__PURE__ */ jsxs8("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)]", children: [
|
|
5283
5291
|
/* @__PURE__ */ jsx10("div", { className: "text-sm font-medium text-[var(--l-pass-info)] mb-2", children: "To fix this issue:" }),
|
|
5284
5292
|
/* @__PURE__ */ jsxs8("ul", { className: "text-xs text-[var(--l-pass-info)] text-left space-y-1 list-disc list-inside", children: [
|
|
5285
5293
|
/* @__PURE__ */ jsx10("li", { children: "Contact your project administrator" }),
|
|
@@ -5287,7 +5295,7 @@ function AuthFailedStep() {
|
|
|
5287
5295
|
/* @__PURE__ */ jsx10("li", { children: "Check project metadata on the server" })
|
|
5288
5296
|
] })
|
|
5289
5297
|
] }),
|
|
5290
|
-
failedType === "critical" && /* @__PURE__ */ jsxs8("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)] border
|
|
5298
|
+
failedType === "critical" && /* @__PURE__ */ jsxs8("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)] border", children: [
|
|
5291
5299
|
/* @__PURE__ */ jsx10("div", { className: "text-sm font-semibold text-[var(--l-pass-error)] mb-2", children: "What to do next:" }),
|
|
5292
5300
|
/* @__PURE__ */ jsxs8("ul", { className: "text-xs text-[var(--l-pass-error)] text-left space-y-1 list-disc list-inside", children: [
|
|
5293
5301
|
/* @__PURE__ */ jsx10("li", { children: "Contact support immediately" }),
|
|
@@ -5322,7 +5330,7 @@ init_profile();
|
|
|
5322
5330
|
import React3, { useImperativeHandle, useRef as useRef2 } from "react";
|
|
5323
5331
|
import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
5324
5332
|
var Input = React3.forwardRef((props, ref) => {
|
|
5325
|
-
const { className,
|
|
5333
|
+
const { className, disabled, error, Icon, element, ...inputProps } = props;
|
|
5326
5334
|
const internalRef = useRef2(null);
|
|
5327
5335
|
useImperativeHandle(ref, () => internalRef.current);
|
|
5328
5336
|
return /* @__PURE__ */ jsxs9("div", { className: cn("w-full flex flex-col gap-1", className), children: [
|
|
@@ -5330,7 +5338,7 @@ var Input = React3.forwardRef((props, ref) => {
|
|
|
5330
5338
|
"div",
|
|
5331
5339
|
{
|
|
5332
5340
|
className: cn(
|
|
5333
|
-
"flex h-12 w-full rounded-[var(--l-pass-el-bdrs)] text-sm items-center gap-
|
|
5341
|
+
"flex h-12 w-full rounded-[var(--l-pass-el-bdrs)] text-sm items-center gap-[var(--l-pass-gap)] px-[var(--l-pass-pd)]",
|
|
5334
5342
|
"bg-[var(--l-pass-secondary)]",
|
|
5335
5343
|
"hover:bg-[var(--l-pass-secondary-h)]",
|
|
5336
5344
|
"transition-colors duration-200 ease-in-out",
|
|
@@ -5342,7 +5350,7 @@ var Input = React3.forwardRef((props, ref) => {
|
|
|
5342
5350
|
internalRef.current?.focus();
|
|
5343
5351
|
},
|
|
5344
5352
|
children: [
|
|
5345
|
-
Icon && /* @__PURE__ */ jsx11("div", { className: "flex items-center justify-center w-6 h-6 p-1", children: /* @__PURE__ */ jsx11(Icon, { width: 16, height: 16, className: "text-[var(--l-pass-fg)]" }) }),
|
|
5353
|
+
Icon && /* @__PURE__ */ jsx11("div", { className: "flex flex-none items-center justify-center w-6 h-6 p-1", children: /* @__PURE__ */ jsx11(Icon, { width: 16, height: 16, className: "text-[var(--l-pass-fg)]" }) }),
|
|
5346
5354
|
/* @__PURE__ */ jsx11(
|
|
5347
5355
|
"input",
|
|
5348
5356
|
{
|
|
@@ -5357,7 +5365,8 @@ var Input = React3.forwardRef((props, ref) => {
|
|
|
5357
5365
|
disabled,
|
|
5358
5366
|
...inputProps
|
|
5359
5367
|
}
|
|
5360
|
-
)
|
|
5368
|
+
),
|
|
5369
|
+
element
|
|
5361
5370
|
]
|
|
5362
5371
|
}
|
|
5363
5372
|
),
|
|
@@ -5483,7 +5492,7 @@ import { Fragment } from "react";
|
|
|
5483
5492
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
5484
5493
|
init_lumiaPassport();
|
|
5485
5494
|
init_projectId();
|
|
5486
|
-
import { ChevronRight, Loader as Loader2, Mail as
|
|
5495
|
+
import { ChevronRight, Loader as Loader2, Mail as Mail3 } from "lucide-react";
|
|
5487
5496
|
import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
5488
5497
|
function Email() {
|
|
5489
5498
|
const { config, callbacks } = useLumiaPassportConfig();
|
|
@@ -5539,7 +5548,7 @@ function Email() {
|
|
|
5539
5548
|
Input,
|
|
5540
5549
|
{
|
|
5541
5550
|
name: "signin-email",
|
|
5542
|
-
Icon:
|
|
5551
|
+
Icon: Mail3,
|
|
5543
5552
|
error: codeSendError,
|
|
5544
5553
|
type: "email",
|
|
5545
5554
|
autoComplete: "off",
|
|
@@ -5573,8 +5582,7 @@ function ErrorAlert(props) {
|
|
|
5573
5582
|
{
|
|
5574
5583
|
className: cn(
|
|
5575
5584
|
"w-full flex flex-col gap-2 rounded-[var(--l-pass-el-bdrs)]",
|
|
5576
|
-
"text-[var(--l-pass-error)] bg-[var(--l-pass-bg-error)]"
|
|
5577
|
-
"border border-[var(--l-pass-error)]"
|
|
5585
|
+
"text-[var(--l-pass-error)] bg-[var(--l-pass-bg-error)]"
|
|
5578
5586
|
),
|
|
5579
5587
|
children: [
|
|
5580
5588
|
/* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
|
|
@@ -5591,7 +5599,7 @@ function ErrorAlert(props) {
|
|
|
5591
5599
|
init_assets();
|
|
5592
5600
|
init_lumiaPassport();
|
|
5593
5601
|
init_auth();
|
|
5594
|
-
import { Key } from "lucide-react";
|
|
5602
|
+
import { Key as Key3 } from "lucide-react";
|
|
5595
5603
|
import { useCallback as useCallback2 } from "react";
|
|
5596
5604
|
init_projectId();
|
|
5597
5605
|
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
@@ -6004,7 +6012,7 @@ function Social(props) {
|
|
|
6004
6012
|
onClick: () => setStep("signin-passkey"),
|
|
6005
6013
|
disabled: isLoading,
|
|
6006
6014
|
title: "Passkey",
|
|
6007
|
-
children: /* @__PURE__ */ jsx16(
|
|
6015
|
+
children: /* @__PURE__ */ jsx16(Key3, { className: "w-5 h-5" })
|
|
6008
6016
|
}
|
|
6009
6017
|
),
|
|
6010
6018
|
config.social.providers.filter((provider) => provider.enabled).map((provider) => {
|
|
@@ -6102,7 +6110,7 @@ function SignInStep(props) {
|
|
|
6102
6110
|
}
|
|
6103
6111
|
|
|
6104
6112
|
// src/internal/components/AuthMenu/SignInStep/PassKeyStep.tsx
|
|
6105
|
-
import { ArrowLeft as ArrowLeft2, Key as
|
|
6113
|
+
import { ArrowLeft as ArrowLeft2, Key as Key4 } from "lucide-react";
|
|
6106
6114
|
import { useCallback as useCallback4 } from "react";
|
|
6107
6115
|
|
|
6108
6116
|
// src/internal/assets/PasskeyAddIcon.tsx
|
|
@@ -6371,7 +6379,7 @@ function PassKeyStep(props) {
|
|
|
6371
6379
|
}, [onAuthSuccess, setPage, callbacks]);
|
|
6372
6380
|
return /* @__PURE__ */ jsxs16(Expandable, { isExpanded: true, contentClassName: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6373
6381
|
/* @__PURE__ */ jsxs16("div", { className: "relative flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
6374
|
-
/* @__PURE__ */ jsx20(
|
|
6382
|
+
/* @__PURE__ */ jsx20(Key4, { className: "w-6 h-6" }),
|
|
6375
6383
|
/* @__PURE__ */ jsx20("span", { className: "font-bold text-xl leading-6", children: "Passkey" }),
|
|
6376
6384
|
/* @__PURE__ */ jsxs16(
|
|
6377
6385
|
Button,
|
|
@@ -6390,7 +6398,7 @@ function PassKeyStep(props) {
|
|
|
6390
6398
|
)
|
|
6391
6399
|
] }),
|
|
6392
6400
|
/* @__PURE__ */ jsxs16(Button, { variant: "default", size: "large", className: "w-full", onClick: onPasskeyAuth, disabled: isLoading, children: [
|
|
6393
|
-
/* @__PURE__ */ jsx20(
|
|
6401
|
+
/* @__PURE__ */ jsx20(Key4, { className: "w-4 h-4" }),
|
|
6394
6402
|
"Sign in with existing Passkey"
|
|
6395
6403
|
] }),
|
|
6396
6404
|
config.passkey.showCreateButton && /* @__PURE__ */ jsxs16(Fragment2, { children: [
|
|
@@ -6915,8 +6923,8 @@ function VerifyStep(props) {
|
|
|
6915
6923
|
)
|
|
6916
6924
|
] }),
|
|
6917
6925
|
/* @__PURE__ */ jsxs18("div", { className: "w-full flex flex-col gap-1 text-center", children: [
|
|
6918
|
-
/* @__PURE__ */ jsx23("span", { className: "text-
|
|
6919
|
-
/* @__PURE__ */ jsx23("strong", { className: "text-
|
|
6926
|
+
/* @__PURE__ */ jsx23("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "We sent a verification code to:" }),
|
|
6927
|
+
/* @__PURE__ */ jsx23("strong", { className: "text-xs", children: email })
|
|
6920
6928
|
] }),
|
|
6921
6929
|
/* @__PURE__ */ jsx23(
|
|
6922
6930
|
VerificationCodeInput,
|
|
@@ -6999,18 +7007,21 @@ var AuthMenu = () => {
|
|
|
6999
7007
|
}),
|
|
7000
7008
|
[onAuthSuccess, goBackToSignIn, checkDisplayNameRequired]
|
|
7001
7009
|
);
|
|
7002
|
-
return
|
|
7003
|
-
|
|
7004
|
-
{
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
|
|
7011
|
-
|
|
7012
|
-
|
|
7013
|
-
|
|
7010
|
+
return (
|
|
7011
|
+
// simple wrap by div
|
|
7012
|
+
/* @__PURE__ */ jsx24("div", { className: "w-full", children: /* @__PURE__ */ jsx24(AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx24(
|
|
7013
|
+
motion.div,
|
|
7014
|
+
{
|
|
7015
|
+
initial: { opacity: 0, height: DEFAULT_AUTH_MENU_HEIGHT },
|
|
7016
|
+
animate: { opacity: 1, height: "auto" },
|
|
7017
|
+
exit: { opacity: 0, height: DEFAULT_AUTH_MENU_HEIGHT },
|
|
7018
|
+
style: { overflow: "hidden" },
|
|
7019
|
+
transition: Y_ANIMATION_SETUP,
|
|
7020
|
+
children: stepContent[step]
|
|
7021
|
+
},
|
|
7022
|
+
step
|
|
7023
|
+
) }) })
|
|
7024
|
+
);
|
|
7014
7025
|
};
|
|
7015
7026
|
|
|
7016
7027
|
// src/internal/components/BuyMenu/ByuMenu.tsx
|
|
@@ -7756,7 +7767,7 @@ function BuyMenu() {
|
|
|
7756
7767
|
}
|
|
7757
7768
|
|
|
7758
7769
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7759
|
-
import { AlertCircle, ArrowLeft as ArrowLeft5, CheckCircle2 as CheckCircle22, Cloud, Download, Eye, EyeOff, Key as
|
|
7770
|
+
import { AlertCircle, ArrowLeft as ArrowLeft5, CheckCircle2 as CheckCircle22, Cloud, Download, Eye, EyeOff, Key as Key5, Lock, Server } from "lucide-react";
|
|
7760
7771
|
import React9, { useEffect as useEffect12 } from "react";
|
|
7761
7772
|
init_iframe_manager();
|
|
7762
7773
|
|
|
@@ -7785,8 +7796,31 @@ function Checkbox({ className, ...props }) {
|
|
|
7785
7796
|
);
|
|
7786
7797
|
}
|
|
7787
7798
|
|
|
7799
|
+
// src/internal/components/ui/highlight.tsx
|
|
7800
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
7801
|
+
var CARD_STYLES = {
|
|
7802
|
+
info: "text-[var(--l-pass-info)] bg-[var(--l-pass-bg-info)]",
|
|
7803
|
+
success: "text-[var(--l-pass-success)] bg-[var(--l-pass-bg-success)]",
|
|
7804
|
+
warning: "text-[var(--l-pass-warning)] bg-[var(--l-pass-bg-warning)]",
|
|
7805
|
+
error: "text-[var(--l-pass-error)] bg-[var(--l-pass-bg-error)]"
|
|
7806
|
+
};
|
|
7807
|
+
function Highlight(props) {
|
|
7808
|
+
const { type = "info", children, className } = props;
|
|
7809
|
+
return /* @__PURE__ */ jsx35(
|
|
7810
|
+
"div",
|
|
7811
|
+
{
|
|
7812
|
+
className: cn(
|
|
7813
|
+
"w-full text-xs rounded-[var(--l-pass-el-bdrs)] p-[var(--l-pass-pd)]",
|
|
7814
|
+
CARD_STYLES[type],
|
|
7815
|
+
className
|
|
7816
|
+
),
|
|
7817
|
+
children
|
|
7818
|
+
}
|
|
7819
|
+
);
|
|
7820
|
+
}
|
|
7821
|
+
|
|
7788
7822
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7789
|
-
import { jsx as
|
|
7823
|
+
import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
7790
7824
|
function KeyshareBackupMenu() {
|
|
7791
7825
|
const { session } = useLumiaPassportSession();
|
|
7792
7826
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -7941,184 +7975,148 @@ function KeyshareBackupMenu() {
|
|
|
7941
7975
|
const date = new Date(timestamp);
|
|
7942
7976
|
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
7943
7977
|
};
|
|
7944
|
-
return /* @__PURE__ */ jsxs26("div", { className: "w-full flex flex-col gap-
|
|
7978
|
+
return /* @__PURE__ */ jsxs26("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
7945
7979
|
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2", children: [
|
|
7946
|
-
/* @__PURE__ */
|
|
7980
|
+
/* @__PURE__ */ jsx36(
|
|
7947
7981
|
Button,
|
|
7948
7982
|
{
|
|
7949
7983
|
variant: "ghost",
|
|
7950
7984
|
size: "icon",
|
|
7951
|
-
onClick: () => setPage("
|
|
7985
|
+
onClick: () => setPage("settings" /* SETTINGS */),
|
|
7952
7986
|
className: "p-1 text-gray-500 hover:text-gray-700",
|
|
7953
7987
|
title: "Back",
|
|
7954
|
-
children: /* @__PURE__ */
|
|
7988
|
+
children: /* @__PURE__ */ jsx36(ArrowLeft5, { className: "h-4 w-4" })
|
|
7955
7989
|
}
|
|
7956
7990
|
),
|
|
7957
|
-
/* @__PURE__ */
|
|
7991
|
+
/* @__PURE__ */ jsx36("span", { className: "text-xl font-semibold", children: "Create Backup" })
|
|
7958
7992
|
] }),
|
|
7959
|
-
/* @__PURE__ */
|
|
7960
|
-
|
|
7961
|
-
|
|
7962
|
-
|
|
7993
|
+
/* @__PURE__ */ jsx36("span", { className: "text-xs", children: "Secure your keyshare with encrypted backups" }),
|
|
7994
|
+
error && /* @__PURE__ */ jsxs26(Highlight, { type: "error", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
7995
|
+
/* @__PURE__ */ jsx36(AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
7996
|
+
/* @__PURE__ */ jsx36("span", { children: error })
|
|
7997
|
+
] }),
|
|
7998
|
+
success && /* @__PURE__ */ jsxs26(Highlight, { type: "success", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
7999
|
+
/* @__PURE__ */ jsx36(CheckCircle22, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8000
|
+
/* @__PURE__ */ jsx36("span", { children: success })
|
|
8001
|
+
] }),
|
|
8002
|
+
/* @__PURE__ */ jsx36("div", { className: "text-xs font-medium text-[var(--l-pass-fg-muted)]", children: "Encryption Method:" }),
|
|
8003
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2", children: [
|
|
8004
|
+
/* @__PURE__ */ jsx36(
|
|
8005
|
+
Checkbox,
|
|
7963
8006
|
{
|
|
7964
|
-
|
|
7965
|
-
|
|
7966
|
-
|
|
7967
|
-
)
|
|
7968
|
-
children: [
|
|
7969
|
-
/* @__PURE__ */ jsx35(AlertCircle, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
7970
|
-
/* @__PURE__ */ jsx35("span", { children: error })
|
|
7971
|
-
]
|
|
8007
|
+
name: "use-backup-password-checkbox",
|
|
8008
|
+
id: "use-backup-password",
|
|
8009
|
+
checked: useCustomPassword,
|
|
8010
|
+
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
7972
8011
|
}
|
|
7973
8012
|
),
|
|
7974
|
-
|
|
7975
|
-
|
|
8013
|
+
/* @__PURE__ */ jsx36("label", { htmlFor: "use-backup-password", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8014
|
+
] }),
|
|
8015
|
+
!useCustomPassword && /* @__PURE__ */ jsxs26(Highlight, { className: "h-12 px-[var(--l-pass-pd)] py-2 flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8016
|
+
/* @__PURE__ */ jsx36("span", { className: "block flex-shrink-0 w-6 h-6 p-1", children: /* @__PURE__ */ jsx36(Key5, { className: "h-4 w-4 text-[var(--l-pass-info)]" }) }),
|
|
8017
|
+
/* @__PURE__ */ jsx36("span", { children: "Backup will be encrypted with passkey" })
|
|
8018
|
+
] }),
|
|
8019
|
+
useCustomPassword && /* @__PURE__ */ jsx36("div", { className: "relative", children: /* @__PURE__ */ jsx36(
|
|
8020
|
+
Input,
|
|
8021
|
+
{
|
|
8022
|
+
Icon: Key5,
|
|
8023
|
+
type: showPassword ? "text" : "password",
|
|
8024
|
+
placeholder: "Enter backup password",
|
|
8025
|
+
value: customPassword,
|
|
8026
|
+
onChange: (e) => setCustomPassword(e.target.value),
|
|
8027
|
+
element: /* @__PURE__ */ jsx36("div", { className: "w-fit h-12 w-12 flex items-center", children: /* @__PURE__ */ jsx36(
|
|
8028
|
+
Button,
|
|
8029
|
+
{
|
|
8030
|
+
variant: "ghost",
|
|
8031
|
+
size: "icon",
|
|
8032
|
+
type: "button",
|
|
8033
|
+
onClick: () => setShowPassword(!showPassword),
|
|
8034
|
+
style: { transform: "translateY(-50%)" },
|
|
8035
|
+
className: "absolute right-2 top-1/2 z-10",
|
|
8036
|
+
children: showPassword ? /* @__PURE__ */ jsx36(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx36(Eye, { className: "h-4 w-4" })
|
|
8037
|
+
}
|
|
8038
|
+
) })
|
|
8039
|
+
}
|
|
8040
|
+
) }),
|
|
8041
|
+
/* @__PURE__ */ jsx36("div", { className: "text-xs font-medium text-[var(--l-pass-fg-muted)]", children: "Choose Backup Method:" }),
|
|
8042
|
+
/* @__PURE__ */ jsxs26(Highlight, { children: [
|
|
8043
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8044
|
+
/* @__PURE__ */ jsx36(Server, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8045
|
+
/* @__PURE__ */ jsx36("div", { className: "text-sm font-medium", children: "Server Backup" })
|
|
8046
|
+
] }),
|
|
8047
|
+
/* @__PURE__ */ jsx36(
|
|
8048
|
+
Button,
|
|
7976
8049
|
{
|
|
7977
|
-
|
|
7978
|
-
|
|
7979
|
-
|
|
7980
|
-
|
|
7981
|
-
children: [
|
|
7982
|
-
/* @__PURE__ */ jsx35(CheckCircle22, { className: "h-3.5 w-3.5 flex-shrink-0" }),
|
|
7983
|
-
/* @__PURE__ */ jsx35("span", { children: success })
|
|
7984
|
-
]
|
|
8050
|
+
onClick: () => handleBackup("server"),
|
|
8051
|
+
disabled: loading.server || useCustomPassword && !customPassword || !hasKeyshareData,
|
|
8052
|
+
className: "w-full",
|
|
8053
|
+
children: loading.server ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
|
|
7985
8054
|
}
|
|
7986
|
-
)
|
|
7987
|
-
|
|
7988
|
-
|
|
7989
|
-
|
|
7990
|
-
|
|
7991
|
-
|
|
7992
|
-
|
|
7993
|
-
name: "use-backup-password-checkbox",
|
|
7994
|
-
id: "use-backup-password",
|
|
7995
|
-
checked: useCustomPassword,
|
|
7996
|
-
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
7997
|
-
}
|
|
7998
|
-
),
|
|
7999
|
-
/* @__PURE__ */ jsx35("label", { htmlFor: "use-backup-password", className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8000
|
-
] }),
|
|
8001
|
-
!useCustomPassword && /* @__PURE__ */ jsxs26("div", { className: "w-full rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)] h-12 px-4 py-2 flex items-center gap-2 border border-[var(--l-pass-info)] text-[var(--l-pass-info)]", children: [
|
|
8002
|
-
/* @__PURE__ */ jsx35("span", { className: "block flex-shrink-0 w-6 h-6 p-1", children: /* @__PURE__ */ jsx35(Key3, { className: "h-4 w-4 text-[var(--l-pass-info)]" }) }),
|
|
8003
|
-
/* @__PURE__ */ jsx35("span", { className: "text-sm", children: "Backup will be encrypted with passkey" })
|
|
8055
|
+
)
|
|
8056
|
+
] }),
|
|
8057
|
+
/* @__PURE__ */ jsxs26("div", { className: "grid grid-cols-2 gap-[var(--l-pass-gap)]", children: [
|
|
8058
|
+
/* @__PURE__ */ jsxs26(Highlight, { children: [
|
|
8059
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8060
|
+
/* @__PURE__ */ jsx36(Cloud, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8061
|
+
/* @__PURE__ */ jsx36("div", { className: "text-sm font-medium", children: "Cloud" })
|
|
8004
8062
|
] }),
|
|
8005
|
-
|
|
8006
|
-
|
|
8007
|
-
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8011
|
-
|
|
8012
|
-
|
|
8013
|
-
|
|
8014
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8017
|
-
|
|
8018
|
-
|
|
8019
|
-
|
|
8020
|
-
|
|
8021
|
-
|
|
8022
|
-
|
|
8023
|
-
onClick: () => setShowPassword(!showPassword),
|
|
8024
|
-
style: { transform: "translateY(-50%)" },
|
|
8025
|
-
className: "absolute right-2 top-1/2 z-10",
|
|
8026
|
-
children: showPassword ? /* @__PURE__ */ jsx35(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx35(Eye, { className: "h-4 w-4" })
|
|
8027
|
-
}
|
|
8028
|
-
)
|
|
8029
|
-
] })
|
|
8063
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx36(
|
|
8064
|
+
"select",
|
|
8065
|
+
{
|
|
8066
|
+
value: selectedCloudProvider || "",
|
|
8067
|
+
onChange: (e) => setSelectedCloudProvider(e.target.value),
|
|
8068
|
+
className: "text-xs text-[var(--l-pass-fg)] border border-[var(--l-pass-bd)] rounded-[var(--l-pass-el-bdrs)] px-2 py-1 w-full mb-2 bg-transparent",
|
|
8069
|
+
children: cloudProviders.map((provider) => /* @__PURE__ */ jsx36("option", { value: provider.id, disabled: !provider.available, children: provider.name }, provider.id))
|
|
8070
|
+
}
|
|
8071
|
+
),
|
|
8072
|
+
/* @__PURE__ */ jsx36(
|
|
8073
|
+
Button,
|
|
8074
|
+
{
|
|
8075
|
+
className: "w-full",
|
|
8076
|
+
onClick: () => handleBackup("cloud"),
|
|
8077
|
+
disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
|
|
8078
|
+
children: loading.cloud ? "Creating..." : "Create"
|
|
8079
|
+
}
|
|
8080
|
+
)
|
|
8030
8081
|
] }),
|
|
8031
|
-
/* @__PURE__ */ jsxs26(
|
|
8032
|
-
/* @__PURE__ */
|
|
8033
|
-
|
|
8034
|
-
/* @__PURE__ */
|
|
8035
|
-
/* @__PURE__ */ jsx35(Server, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8036
|
-
/* @__PURE__ */ jsx35("div", { className: "text-sm font-medium text-[var(--l-pass-fg)]", children: "Server Backup" })
|
|
8037
|
-
] }),
|
|
8038
|
-
/* @__PURE__ */ jsx35(
|
|
8039
|
-
Button,
|
|
8040
|
-
{
|
|
8041
|
-
onClick: () => handleBackup("server"),
|
|
8042
|
-
disabled: loading.server || useCustomPassword && !customPassword || !hasKeyshareData,
|
|
8043
|
-
className: "w-full",
|
|
8044
|
-
children: loading.server ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
|
|
8045
|
-
}
|
|
8046
|
-
)
|
|
8082
|
+
/* @__PURE__ */ jsxs26(Highlight, { children: [
|
|
8083
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8084
|
+
/* @__PURE__ */ jsx36(Download, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8085
|
+
/* @__PURE__ */ jsx36("div", { className: "text-sm font-medium", children: "File" })
|
|
8047
8086
|
] }),
|
|
8048
|
-
/* @__PURE__ */
|
|
8049
|
-
|
|
8050
|
-
|
|
8051
|
-
|
|
8052
|
-
|
|
8053
|
-
|
|
8054
|
-
|
|
8055
|
-
|
|
8056
|
-
|
|
8057
|
-
|
|
8058
|
-
|
|
8059
|
-
|
|
8060
|
-
|
|
8061
|
-
|
|
8062
|
-
|
|
8063
|
-
|
|
8064
|
-
|
|
8065
|
-
|
|
8066
|
-
|
|
8067
|
-
|
|
8068
|
-
|
|
8069
|
-
|
|
8070
|
-
|
|
8071
|
-
)
|
|
8072
|
-
] }),
|
|
8073
|
-
/* @__PURE__ */ jsxs26("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] flex flex-col border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)]", children: [
|
|
8074
|
-
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
8075
|
-
/* @__PURE__ */ jsx35(Download, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8076
|
-
/* @__PURE__ */ jsx35("div", { className: "text-sm font-medium", children: "File" })
|
|
8077
|
-
] }),
|
|
8078
|
-
cloudProviders.length > 1 && /* @__PURE__ */ jsx35("div", { className: "h-[32px]" }),
|
|
8079
|
-
/* @__PURE__ */ jsx35(
|
|
8080
|
-
Button,
|
|
8081
|
-
{
|
|
8082
|
-
onClick: () => handleBackup("local"),
|
|
8083
|
-
disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
|
|
8084
|
-
className: "w-full",
|
|
8085
|
-
children: loading.local ? "Creating..." : "Download"
|
|
8086
|
-
}
|
|
8087
|
-
)
|
|
8088
|
-
] })
|
|
8089
|
-
] })
|
|
8090
|
-
] }),
|
|
8091
|
-
/* @__PURE__ */ jsxs26(
|
|
8092
|
-
"div",
|
|
8093
|
-
{
|
|
8094
|
-
className: cn(
|
|
8095
|
-
"flex items-start gap-2 p-2 rounded-[var(--l-pass-el-bdrs)]",
|
|
8096
|
-
"text-xs text-[var(--l-pass-warning)] bg-[var(--l-pass-bg-warning)] border border-[var(--l-pass-warning)]"
|
|
8097
|
-
),
|
|
8098
|
-
children: [
|
|
8099
|
-
/* @__PURE__ */ jsx35(Lock, { className: "h-4 w-4 mt-0.5 flex-shrink-0 text-[var(--l-pass-warning)]" }),
|
|
8100
|
-
/* @__PURE__ */ jsxs26("div", { children: [
|
|
8101
|
-
/* @__PURE__ */ jsx35("span", { className: "font-medium", children: "Security Notice:" }),
|
|
8102
|
-
" All backups are encrypted with AES-256 using your",
|
|
8103
|
-
" ",
|
|
8104
|
-
useCustomPassword ? "custom password" : "passkey",
|
|
8105
|
-
".",
|
|
8106
|
-
useCustomPassword ? " Store your password securely - " : " Your passkey authenticator is required to restore backups. ",
|
|
8107
|
-
"Without backup access, you cannot recover your account if you lose this device."
|
|
8108
|
-
] })
|
|
8109
|
-
]
|
|
8110
|
-
}
|
|
8111
|
-
)
|
|
8087
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx36("div", { className: "h-[32px]" }),
|
|
8088
|
+
/* @__PURE__ */ jsx36(
|
|
8089
|
+
Button,
|
|
8090
|
+
{
|
|
8091
|
+
onClick: () => handleBackup("local"),
|
|
8092
|
+
disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
|
|
8093
|
+
className: "w-full",
|
|
8094
|
+
children: loading.local ? "Creating..." : "Download"
|
|
8095
|
+
}
|
|
8096
|
+
)
|
|
8097
|
+
] })
|
|
8098
|
+
] }),
|
|
8099
|
+
/* @__PURE__ */ jsxs26(Highlight, { className: "flex items-start gap-[var(--l-pass-gap)]", type: "warning", children: [
|
|
8100
|
+
/* @__PURE__ */ jsx36(Lock, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8101
|
+
/* @__PURE__ */ jsxs26("div", { children: [
|
|
8102
|
+
/* @__PURE__ */ jsx36("span", { className: "font-medium", children: "Security Notice:" }),
|
|
8103
|
+
" All backups are encrypted with AES-256 using your",
|
|
8104
|
+
" ",
|
|
8105
|
+
useCustomPassword ? "custom password" : "passkey",
|
|
8106
|
+
".",
|
|
8107
|
+
useCustomPassword ? " Store your password securely - " : " Your passkey authenticator is required to restore backups. ",
|
|
8108
|
+
"Without backup access, you cannot recover your account if you lose this device."
|
|
8109
|
+
] })
|
|
8112
8110
|
] })
|
|
8113
8111
|
] });
|
|
8114
8112
|
}
|
|
8115
8113
|
|
|
8116
8114
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8117
8115
|
import { useMutation as useMutation6 } from "@tanstack/react-query";
|
|
8118
|
-
import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle23, Eye as Eye2, EyeOff as EyeOff2, Key as
|
|
8116
|
+
import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle23, Eye as Eye2, EyeOff as EyeOff2, Key as Key6, Loader as Loader5, Server as Server2, Upload } from "lucide-react";
|
|
8119
8117
|
import React10, { useCallback as useCallback8, useEffect as useEffect13 } from "react";
|
|
8120
8118
|
init_vaultClient();
|
|
8121
|
-
import { Fragment as Fragment5, jsx as
|
|
8119
|
+
import { Fragment as Fragment5, jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
8122
8120
|
var KeyshareRestoreMenu = () => {
|
|
8123
8121
|
const { config, callbacks } = useLumiaPassportConfig();
|
|
8124
8122
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -8325,36 +8323,36 @@ var KeyshareRestoreMenu = () => {
|
|
|
8325
8323
|
return /* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col p-4", children: [
|
|
8326
8324
|
/* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col gap-1", children: [
|
|
8327
8325
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
|
|
8328
|
-
/* @__PURE__ */
|
|
8329
|
-
/* @__PURE__ */
|
|
8326
|
+
/* @__PURE__ */ jsx37(Loader5, { className: "w-5 h-5 animate-spin" }),
|
|
8327
|
+
/* @__PURE__ */ jsx37("span", { className: "text-xl leading-5 font-semibold", children: "Checking Backup Availability" })
|
|
8330
8328
|
] }),
|
|
8331
|
-
/* @__PURE__ */
|
|
8329
|
+
/* @__PURE__ */ jsx37("span", { className: "text-sm", children: "Please wait while we check for available backups..." })
|
|
8332
8330
|
] }),
|
|
8333
|
-
/* @__PURE__ */
|
|
8331
|
+
/* @__PURE__ */ jsx37("div", { className: "flex items-center justify-center p-4", children: /* @__PURE__ */ jsx37("span", { className: "block w-full text-center text-sm text-[var(--l-pass-fg-muted)]", children: "Checking for backups..." }) })
|
|
8334
8332
|
] });
|
|
8335
8333
|
}
|
|
8336
8334
|
if (hasServerBackup === false) {
|
|
8337
8335
|
return /* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col p-4", children: [
|
|
8338
|
-
/* @__PURE__ */
|
|
8339
|
-
/* @__PURE__ */
|
|
8340
|
-
/* @__PURE__ */
|
|
8336
|
+
/* @__PURE__ */ jsx37("div", { className: "w-full flex flex-col gap-1", children: /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
|
|
8337
|
+
/* @__PURE__ */ jsx37(AlertCircle2, { className: "h-5 w-5 text-[var(--l-pass-error)]" }),
|
|
8338
|
+
/* @__PURE__ */ jsx37("span", { className: "text-xl leading-5 font-semibold", children: "No Keyshare Found" })
|
|
8341
8339
|
] }) }),
|
|
8342
8340
|
/* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col gap-2", children: [
|
|
8343
|
-
/* @__PURE__ */ jsxs27("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)]
|
|
8344
|
-
/* @__PURE__ */
|
|
8345
|
-
/* @__PURE__ */
|
|
8341
|
+
/* @__PURE__ */ jsxs27("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)]", children: [
|
|
8342
|
+
/* @__PURE__ */ jsx37("span", { className: "block font-medium text-sm text-[var(--l-pass-error)]", children: "Account Recovery Needed" }),
|
|
8343
|
+
/* @__PURE__ */ jsx37("span", { className: "block w-full text-xs leading-relaxed", 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." })
|
|
8346
8344
|
] }),
|
|
8347
|
-
/* @__PURE__ */ jsxs27("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-warning)]
|
|
8348
|
-
/* @__PURE__ */
|
|
8349
|
-
/* @__PURE__ */
|
|
8345
|
+
/* @__PURE__ */ jsxs27("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-warning)]", children: [
|
|
8346
|
+
/* @__PURE__ */ jsx37("strong", { className: "text-xs text-[var(--l-pass-warning)]", children: "Alternative:" }),
|
|
8347
|
+
/* @__PURE__ */ jsx37("span", { className: "text-xs", children: "Try uploading a backup file if you have one saved locally, or create a new account with a different email." })
|
|
8350
8348
|
] }),
|
|
8351
8349
|
/* @__PURE__ */ jsxs27("div", { className: "p-2 rounded border border-[var(--l-pass-bd)]", children: [
|
|
8352
8350
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
|
|
8353
|
-
/* @__PURE__ */
|
|
8354
|
-
/* @__PURE__ */
|
|
8351
|
+
/* @__PURE__ */ jsx37(Upload, { className: "h-5 w-5 text-[var(--l-pass-info)]" }),
|
|
8352
|
+
/* @__PURE__ */ jsx37("span", { className: "text-sm leading-5 font-medium", children: "Try Backup File" })
|
|
8355
8353
|
] }),
|
|
8356
8354
|
/* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
|
|
8357
|
-
/* @__PURE__ */
|
|
8355
|
+
/* @__PURE__ */ jsx37("label", { className: "block w-full cursor-pointer", children: /* @__PURE__ */ jsx37(
|
|
8358
8356
|
"input",
|
|
8359
8357
|
{
|
|
8360
8358
|
type: "file",
|
|
@@ -8368,13 +8366,13 @@ var KeyshareRestoreMenu = () => {
|
|
|
8368
8366
|
)
|
|
8369
8367
|
}
|
|
8370
8368
|
) }),
|
|
8371
|
-
!restoreFile && /* @__PURE__ */
|
|
8369
|
+
!restoreFile && /* @__PURE__ */ jsx37("p", { className: "text-xs", children: "No file chosen" }),
|
|
8372
8370
|
restoreFile && /* @__PURE__ */ jsxs27(Fragment5, { children: [
|
|
8373
8371
|
/* @__PURE__ */ jsxs27("div", { className: "text-xs p-2 rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
8374
8372
|
"Selected: ",
|
|
8375
8373
|
restoreFile.name
|
|
8376
8374
|
] }),
|
|
8377
|
-
/* @__PURE__ */
|
|
8375
|
+
/* @__PURE__ */ jsx37(
|
|
8378
8376
|
Button,
|
|
8379
8377
|
{
|
|
8380
8378
|
onClick: () => restoreFromFile(),
|
|
@@ -8387,9 +8385,9 @@ var KeyshareRestoreMenu = () => {
|
|
|
8387
8385
|
] })
|
|
8388
8386
|
] }),
|
|
8389
8387
|
restoreFile && /* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
|
|
8390
|
-
/* @__PURE__ */
|
|
8388
|
+
/* @__PURE__ */ jsx37("div", { className: "text-xs font-medium", children: "Decryption Method:" }),
|
|
8391
8389
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
|
|
8392
|
-
/* @__PURE__ */
|
|
8390
|
+
/* @__PURE__ */ jsx37(
|
|
8393
8391
|
Checkbox,
|
|
8394
8392
|
{
|
|
8395
8393
|
name: "use-restore-password-checkbox",
|
|
@@ -8398,17 +8396,17 @@ var KeyshareRestoreMenu = () => {
|
|
|
8398
8396
|
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
8399
8397
|
}
|
|
8400
8398
|
),
|
|
8401
|
-
/* @__PURE__ */
|
|
8399
|
+
/* @__PURE__ */ jsx37("label", { htmlFor: "use-restore-password", className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8402
8400
|
] }),
|
|
8403
|
-
!useCustomPassword && /* @__PURE__ */ jsxs27("div", { className: "w-full rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)] h-12 px-4 py-2 flex items-center gap-2
|
|
8404
|
-
/* @__PURE__ */
|
|
8405
|
-
/* @__PURE__ */
|
|
8401
|
+
!useCustomPassword && /* @__PURE__ */ jsxs27("div", { className: "w-full rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)] h-12 px-4 py-2 flex items-center gap-2 text-[var(--l-pass-info)]", children: [
|
|
8402
|
+
/* @__PURE__ */ jsx37("span", { className: "block flex-shrink-0 w-6 h-6 p-1", children: /* @__PURE__ */ jsx37(Key6, { className: "h-4 w-4 text-[var(--l-pass-info)]" }) }),
|
|
8403
|
+
/* @__PURE__ */ jsx37("span", { className: "text-sm", children: "Your passkey will be used to decrypt the backup securely" })
|
|
8406
8404
|
] }),
|
|
8407
8405
|
useCustomPassword && /* @__PURE__ */ jsxs27("div", { className: "relative", children: [
|
|
8408
|
-
/* @__PURE__ */
|
|
8406
|
+
/* @__PURE__ */ jsx37(
|
|
8409
8407
|
Input,
|
|
8410
8408
|
{
|
|
8411
|
-
Icon:
|
|
8409
|
+
Icon: Key6,
|
|
8412
8410
|
type: showPassword ? "text" : "password",
|
|
8413
8411
|
placeholder: "Enter backup decryption password",
|
|
8414
8412
|
value: restorePassword,
|
|
@@ -8416,7 +8414,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8416
8414
|
className: "pr-10"
|
|
8417
8415
|
}
|
|
8418
8416
|
),
|
|
8419
|
-
/* @__PURE__ */
|
|
8417
|
+
/* @__PURE__ */ jsx37(
|
|
8420
8418
|
Button,
|
|
8421
8419
|
{
|
|
8422
8420
|
variant: "ghost",
|
|
@@ -8425,7 +8423,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8425
8423
|
onClick: () => setShowPassword(!showPassword),
|
|
8426
8424
|
style: { transform: "translateY(-50%)" },
|
|
8427
8425
|
className: "absolute right-2 top-1/2 z-10",
|
|
8428
|
-
children: showPassword ? /* @__PURE__ */
|
|
8426
|
+
children: showPassword ? /* @__PURE__ */ jsx37(EyeOff2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx37(Eye2, { className: "h-4 w-4" })
|
|
8429
8427
|
}
|
|
8430
8428
|
)
|
|
8431
8429
|
] })
|
|
@@ -8434,12 +8432,12 @@ var KeyshareRestoreMenu = () => {
|
|
|
8434
8432
|
"div",
|
|
8435
8433
|
{
|
|
8436
8434
|
className: cn(
|
|
8437
|
-
"w-full flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)]
|
|
8438
|
-
"bg-[var(--l-pass-bg-error)]
|
|
8435
|
+
"w-full flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)] text-xs",
|
|
8436
|
+
"bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)]"
|
|
8439
8437
|
),
|
|
8440
8438
|
children: [
|
|
8441
|
-
/* @__PURE__ */
|
|
8442
|
-
/* @__PURE__ */
|
|
8439
|
+
/* @__PURE__ */ jsx37(AlertCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8440
|
+
/* @__PURE__ */ jsx37("span", { children: error })
|
|
8443
8441
|
]
|
|
8444
8442
|
}
|
|
8445
8443
|
),
|
|
@@ -8447,12 +8445,12 @@ var KeyshareRestoreMenu = () => {
|
|
|
8447
8445
|
"div",
|
|
8448
8446
|
{
|
|
8449
8447
|
className: cn(
|
|
8450
|
-
"w-full flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)]
|
|
8451
|
-
"bg-[var(--l-pass-bg-success)]
|
|
8448
|
+
"w-full flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)] text-xs",
|
|
8449
|
+
"bg-[var(--l-pass-bg-success)] text-[var(--l-pass-success)]"
|
|
8452
8450
|
),
|
|
8453
8451
|
children: [
|
|
8454
|
-
/* @__PURE__ */
|
|
8455
|
-
/* @__PURE__ */
|
|
8452
|
+
/* @__PURE__ */ jsx37(CheckCircle23, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8453
|
+
/* @__PURE__ */ jsx37("span", { children: success })
|
|
8456
8454
|
]
|
|
8457
8455
|
}
|
|
8458
8456
|
)
|
|
@@ -8461,22 +8459,22 @@ var KeyshareRestoreMenu = () => {
|
|
|
8461
8459
|
}
|
|
8462
8460
|
return /* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col p-4", children: [
|
|
8463
8461
|
/* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col gap-1", children: [
|
|
8464
|
-
/* @__PURE__ */
|
|
8465
|
-
/* @__PURE__ */
|
|
8462
|
+
/* @__PURE__ */ jsx37("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx37("span", { className: "text-xl leading-5 font-semibold", children: "Restore Account Access" }) }),
|
|
8463
|
+
/* @__PURE__ */ jsx37("span", { className: "text-sm", children: "Your account was found in the Vault" })
|
|
8466
8464
|
] }),
|
|
8467
8465
|
/* @__PURE__ */ jsxs27("div", { className: "flex flex-col gap-4 p-0", children: [
|
|
8468
|
-
error && !error.includes("No backup found") && /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)]
|
|
8469
|
-
/* @__PURE__ */
|
|
8470
|
-
/* @__PURE__ */
|
|
8466
|
+
error && !error.includes("No backup found") && /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] text-xs", children: [
|
|
8467
|
+
/* @__PURE__ */ jsx37(AlertCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8468
|
+
/* @__PURE__ */ jsx37("span", { children: error })
|
|
8471
8469
|
] }),
|
|
8472
|
-
success && /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-success)]
|
|
8473
|
-
/* @__PURE__ */
|
|
8474
|
-
/* @__PURE__ */
|
|
8470
|
+
success && /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2 p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-success)] text-[var(--l-pass-success)] text-xs", children: [
|
|
8471
|
+
/* @__PURE__ */ jsx37(CheckCircle23, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8472
|
+
/* @__PURE__ */ jsx37("span", { children: success })
|
|
8475
8473
|
] }),
|
|
8476
8474
|
/* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col gap-2", children: [
|
|
8477
|
-
/* @__PURE__ */
|
|
8475
|
+
/* @__PURE__ */ jsx37("div", { className: "text-xs font-medium text-[var(--l-pass-fg-muted)]", children: "Decryption Method:" }),
|
|
8478
8476
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
|
|
8479
|
-
/* @__PURE__ */
|
|
8477
|
+
/* @__PURE__ */ jsx37(
|
|
8480
8478
|
Checkbox,
|
|
8481
8479
|
{
|
|
8482
8480
|
name: "use-restore-password-checkbox",
|
|
@@ -8485,17 +8483,17 @@ var KeyshareRestoreMenu = () => {
|
|
|
8485
8483
|
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
8486
8484
|
}
|
|
8487
8485
|
),
|
|
8488
|
-
/* @__PURE__ */
|
|
8486
|
+
/* @__PURE__ */ jsx37("label", { htmlFor: "use-restore-password", className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8489
8487
|
] }),
|
|
8490
|
-
!useCustomPassword && /* @__PURE__ */ jsxs27("div", { className: "w-full rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)] h-12 px-4 py-2 flex items-center gap-2
|
|
8491
|
-
/* @__PURE__ */
|
|
8492
|
-
/* @__PURE__ */
|
|
8488
|
+
!useCustomPassword && /* @__PURE__ */ jsxs27("div", { className: "w-full rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)] h-12 px-4 py-2 flex items-center gap-2 text-[var(--l-pass-info)]", children: [
|
|
8489
|
+
/* @__PURE__ */ jsx37("span", { className: "block flex-shrink-0 w-6 h-6 p-1", children: /* @__PURE__ */ jsx37(Key6, { className: "h-4 w-4 text-[var(--l-pass-info)]" }) }),
|
|
8490
|
+
/* @__PURE__ */ jsx37("span", { className: "text-sm", children: "Passkey will be used to decrypt the backup" })
|
|
8493
8491
|
] }),
|
|
8494
8492
|
useCustomPassword && /* @__PURE__ */ jsxs27("div", { className: "relative", children: [
|
|
8495
|
-
/* @__PURE__ */
|
|
8493
|
+
/* @__PURE__ */ jsx37(
|
|
8496
8494
|
Input,
|
|
8497
8495
|
{
|
|
8498
|
-
Icon:
|
|
8496
|
+
Icon: Key6,
|
|
8499
8497
|
type: showPassword ? "text" : "password",
|
|
8500
8498
|
placeholder: "Enter backup decryption password",
|
|
8501
8499
|
value: restorePassword,
|
|
@@ -8503,7 +8501,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8503
8501
|
className: "pr-10"
|
|
8504
8502
|
}
|
|
8505
8503
|
),
|
|
8506
|
-
/* @__PURE__ */
|
|
8504
|
+
/* @__PURE__ */ jsx37(
|
|
8507
8505
|
Button,
|
|
8508
8506
|
{
|
|
8509
8507
|
variant: "ghost",
|
|
@@ -8512,19 +8510,19 @@ var KeyshareRestoreMenu = () => {
|
|
|
8512
8510
|
onClick: () => setShowPassword(!showPassword),
|
|
8513
8511
|
style: { transform: "translateY(-50%)" },
|
|
8514
8512
|
className: "absolute right-2 top-1/2 z-10",
|
|
8515
|
-
children: showPassword ? /* @__PURE__ */
|
|
8513
|
+
children: showPassword ? /* @__PURE__ */ jsx37(EyeOff2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx37(Eye2, { className: "h-4 w-4" })
|
|
8516
8514
|
}
|
|
8517
8515
|
)
|
|
8518
8516
|
] })
|
|
8519
8517
|
] }),
|
|
8520
8518
|
/* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col gap-2", children: [
|
|
8521
|
-
/* @__PURE__ */
|
|
8519
|
+
/* @__PURE__ */ jsx37("div", { className: "text-xs font-medium text-[var(--l-pass-fg-muted)]", children: "Choose Backup Method:" }),
|
|
8522
8520
|
/* @__PURE__ */ jsxs27("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)]", children: [
|
|
8523
8521
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
8524
|
-
/* @__PURE__ */
|
|
8525
|
-
/* @__PURE__ */
|
|
8522
|
+
/* @__PURE__ */ jsx37(Server2, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8523
|
+
/* @__PURE__ */ jsx37("div", { className: "text-sm font-medium text-[var(--l-pass-fg)]", children: "Server Backup" })
|
|
8526
8524
|
] }),
|
|
8527
|
-
/* @__PURE__ */
|
|
8525
|
+
/* @__PURE__ */ jsx37(
|
|
8528
8526
|
Button,
|
|
8529
8527
|
{
|
|
8530
8528
|
onClick: () => restoreFromServer2(),
|
|
@@ -8536,11 +8534,11 @@ var KeyshareRestoreMenu = () => {
|
|
|
8536
8534
|
] }),
|
|
8537
8535
|
/* @__PURE__ */ jsxs27("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)]", children: [
|
|
8538
8536
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
8539
|
-
/* @__PURE__ */
|
|
8540
|
-
/* @__PURE__ */
|
|
8537
|
+
/* @__PURE__ */ jsx37(Upload, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8538
|
+
/* @__PURE__ */ jsx37("div", { className: "text-sm font-medium text-[var(--l-pass-fg)]", children: "Backup File" })
|
|
8541
8539
|
] }),
|
|
8542
8540
|
/* @__PURE__ */ jsxs27("div", { className: "space-y-2", children: [
|
|
8543
|
-
/* @__PURE__ */
|
|
8541
|
+
/* @__PURE__ */ jsx37("label", { className: "block w-full cursor-pointer text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx37(
|
|
8544
8542
|
"input",
|
|
8545
8543
|
{
|
|
8546
8544
|
type: "file",
|
|
@@ -8555,8 +8553,8 @@ var KeyshareRestoreMenu = () => {
|
|
|
8555
8553
|
}
|
|
8556
8554
|
) }),
|
|
8557
8555
|
restoreFile && /* @__PURE__ */ jsxs27(Fragment5, { children: [
|
|
8558
|
-
/* @__PURE__ */
|
|
8559
|
-
/* @__PURE__ */
|
|
8556
|
+
/* @__PURE__ */ jsx37("div", { className: "text-xs p-2 rounded text-[var(--l-pass-fg)]", children: restoreFile.name }),
|
|
8557
|
+
/* @__PURE__ */ jsx37(
|
|
8560
8558
|
Button,
|
|
8561
8559
|
{
|
|
8562
8560
|
onClick: () => restoreFromFile(),
|
|
@@ -8747,7 +8745,7 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8747
8745
|
}
|
|
8748
8746
|
|
|
8749
8747
|
// src/internal/components/KYC/SumsubIframe.tsx
|
|
8750
|
-
import { Fragment as Fragment6, jsx as
|
|
8748
|
+
import { Fragment as Fragment6, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
8751
8749
|
var MAX_IFRAME_HEIGHT = 650;
|
|
8752
8750
|
var SumsubIframe = () => {
|
|
8753
8751
|
const { config } = useLumiaPassportConfig();
|
|
@@ -8755,11 +8753,11 @@ var SumsubIframe = () => {
|
|
|
8755
8753
|
const { iframeRef, isLoading, error, height, status } = useSumsubIframe({ iframeUrl });
|
|
8756
8754
|
return /* @__PURE__ */ jsxs28(Fragment6, { children: [
|
|
8757
8755
|
isLoading && /* @__PURE__ */ jsxs28("div", { className: "rounded-[10px] p-6 text-center", children: [
|
|
8758
|
-
/* @__PURE__ */
|
|
8759
|
-
/* @__PURE__ */
|
|
8756
|
+
/* @__PURE__ */ jsx38(LoaderIcon3, { className: "w-5 h-5 animate-spin mx-auto" }),
|
|
8757
|
+
/* @__PURE__ */ jsx38("p", { className: "text-sm text-[var(--l-pass-text-secondary)] mt-2", children: status || "Loading KYC verification..." })
|
|
8760
8758
|
] }),
|
|
8761
|
-
error && /* @__PURE__ */
|
|
8762
|
-
/* @__PURE__ */
|
|
8759
|
+
error && /* @__PURE__ */ jsx38("div", { className: "rounded-[10px] p-4 text-center bg-[var(--l-pass-bg-error)] border border-[var(--l-pass-error)]", children: /* @__PURE__ */ jsx38("div", { className: "text-sm text-[var(--l-pass-error)]", children: error }) }),
|
|
8760
|
+
/* @__PURE__ */ jsx38("div", { className: "w-full h-full relative", children: /* @__PURE__ */ jsx38(
|
|
8763
8761
|
"iframe",
|
|
8764
8762
|
{
|
|
8765
8763
|
ref: iframeRef,
|
|
@@ -8779,46 +8777,46 @@ var SumsubIframe = () => {
|
|
|
8779
8777
|
};
|
|
8780
8778
|
|
|
8781
8779
|
// src/internal/components/KYC/KycContent.tsx
|
|
8782
|
-
import { jsx as
|
|
8780
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
8783
8781
|
var KycContent = () => {
|
|
8784
8782
|
const { config } = useLumiaPassportConfig();
|
|
8785
8783
|
const provider = config.kyc?.provider;
|
|
8786
8784
|
switch (provider) {
|
|
8787
8785
|
case "sumsub":
|
|
8788
|
-
return /* @__PURE__ */
|
|
8786
|
+
return /* @__PURE__ */ jsx39(SumsubIframe, {});
|
|
8789
8787
|
default:
|
|
8790
|
-
return /* @__PURE__ */
|
|
8788
|
+
return /* @__PURE__ */ jsx39("div", { className: "rounded-xl p-4 text-center bg-[var(--l-pass-secondary)]", children: /* @__PURE__ */ jsx39("div", { className: "text-sm", children: provider ? `KYC provider "${provider}" coming soon\u2026` : "KYC verification coming soon\u2026" }) });
|
|
8791
8789
|
}
|
|
8792
8790
|
};
|
|
8793
8791
|
|
|
8794
8792
|
// src/internal/components/KYC/KycMenu.tsx
|
|
8795
8793
|
import { ArrowLeft as ArrowLeft6 } from "lucide-react";
|
|
8796
|
-
import { jsx as
|
|
8794
|
+
import { jsx as jsx40, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
8797
8795
|
function KycMenu() {
|
|
8798
8796
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8799
8797
|
return /* @__PURE__ */ jsxs29("div", { className: "w-full p-4 flex flex-col", children: [
|
|
8800
|
-
/* @__PURE__ */
|
|
8801
|
-
/* @__PURE__ */
|
|
8802
|
-
/* @__PURE__ */
|
|
8798
|
+
/* @__PURE__ */ jsx40("div", { className: "w-full", children: /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
|
|
8799
|
+
/* @__PURE__ */ jsx40(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx40(ArrowLeft6, { className: "h-4 w-4" }) }),
|
|
8800
|
+
/* @__PURE__ */ jsx40("span", { className: "text-xl font-semibold", children: "KYC" })
|
|
8803
8801
|
] }) }),
|
|
8804
|
-
/* @__PURE__ */
|
|
8802
|
+
/* @__PURE__ */ jsx40("div", { className: "w-full", children: /* @__PURE__ */ jsx40(KycContent, {}) })
|
|
8805
8803
|
] });
|
|
8806
8804
|
}
|
|
8807
8805
|
|
|
8808
8806
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
8809
|
-
import { ChevronLeft, ChevronRight as ChevronRight2, Wallet2 } from "lucide-react";
|
|
8807
|
+
import { ChevronLeft, ChevronRight as ChevronRight2, Wallet2 as Wallet23 } from "lucide-react";
|
|
8810
8808
|
import { useEffect as useEffect15 } from "react";
|
|
8811
8809
|
|
|
8812
8810
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
8813
8811
|
import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-motion";
|
|
8814
|
-
import {
|
|
8815
|
-
import { jsx as
|
|
8812
|
+
import { DatabaseBackup } from "lucide-react";
|
|
8813
|
+
import { jsx as jsx41, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
8816
8814
|
function BackupWarning() {
|
|
8817
8815
|
const { config } = useLumiaPassportConfig();
|
|
8818
8816
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8819
8817
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8820
8818
|
const isShown = config.warnings?.backupWarning && !hasServerVault;
|
|
8821
|
-
return /* @__PURE__ */
|
|
8819
|
+
return /* @__PURE__ */ jsx41(AnimatePresence2, { mode: "wait", initial: false, children: isShown ? /* @__PURE__ */ jsx41(
|
|
8822
8820
|
motion2.div,
|
|
8823
8821
|
{
|
|
8824
8822
|
initial: { opacity: 0, height: 0 },
|
|
@@ -8826,65 +8824,21 @@ function BackupWarning() {
|
|
|
8826
8824
|
exit: { opacity: 0, height: 0 },
|
|
8827
8825
|
transition: Y_ANIMATION_SETUP,
|
|
8828
8826
|
children: /* @__PURE__ */ jsxs30(
|
|
8829
|
-
|
|
8827
|
+
Highlight,
|
|
8830
8828
|
{
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
"rounded-[var(--l-pass-el-bdrs)] items-center text-center",
|
|
8834
|
-
"flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]",
|
|
8835
|
-
"bg-[var(--l-pass-bg-error)]"
|
|
8836
|
-
// 'border border-[var(--l-pass-error)]'
|
|
8837
|
-
),
|
|
8829
|
+
type: "error",
|
|
8830
|
+
className: "animate-glow-warning flex items-center flex-col gap-[var(--l-pass-gap)] text-center",
|
|
8838
8831
|
children: [
|
|
8839
|
-
/* @__PURE__ */
|
|
8840
|
-
/* @__PURE__ */ jsxs30("span", { className: "
|
|
8841
|
-
/* @__PURE__ */
|
|
8842
|
-
/* @__PURE__ */
|
|
8843
|
-
/* @__PURE__ */
|
|
8832
|
+
/* @__PURE__ */ jsx41("span", { className: "text-lg font-bold", children: "BACKUP NOT CREATED" }),
|
|
8833
|
+
/* @__PURE__ */ jsxs30("span", { className: "font-medium", children: [
|
|
8834
|
+
/* @__PURE__ */ jsx41("span", { children: "Your wallet will be " }),
|
|
8835
|
+
/* @__PURE__ */ jsx41("strong", { children: "PERMANENTLY LOST" }),
|
|
8836
|
+
/* @__PURE__ */ jsx41("span", { children: " if browser data is cleared" })
|
|
8844
8837
|
] }),
|
|
8845
|
-
/* @__PURE__ */
|
|
8846
|
-
/* @__PURE__ */ jsxs30(Button, { size: "
|
|
8847
|
-
/* @__PURE__ */
|
|
8848
|
-
/* @__PURE__ */
|
|
8849
|
-
] })
|
|
8850
|
-
]
|
|
8851
|
-
}
|
|
8852
|
-
)
|
|
8853
|
-
}
|
|
8854
|
-
) : null });
|
|
8855
|
-
}
|
|
8856
|
-
|
|
8857
|
-
// src/internal/components/MainMenu/EmailNotConnectedWarning.tsx
|
|
8858
|
-
import { AnimatePresence as AnimatePresence3, motion as motion3 } from "framer-motion";
|
|
8859
|
-
import { ShieldCheck as ShieldCheck2 } from "lucide-react";
|
|
8860
|
-
init_auth();
|
|
8861
|
-
import { jsx as jsx41, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
8862
|
-
function EmailNotConnectedWarning() {
|
|
8863
|
-
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
8864
|
-
const providers = jwtTokenManager2.getProviders();
|
|
8865
|
-
const hasEmail = providers.includes("email");
|
|
8866
|
-
const { config } = useLumiaPassportConfig();
|
|
8867
|
-
const isShown = config.warnings?.emailNotConnectedWarning && !hasEmail;
|
|
8868
|
-
return /* @__PURE__ */ jsx41(AnimatePresence3, { mode: "wait", initial: false, children: isShown ? /* @__PURE__ */ jsx41(
|
|
8869
|
-
motion3.div,
|
|
8870
|
-
{
|
|
8871
|
-
initial: { opacity: 0, height: 0 },
|
|
8872
|
-
animate: { opacity: 1, height: "auto" },
|
|
8873
|
-
exit: { opacity: 0, height: 0 },
|
|
8874
|
-
transition: Y_ANIMATION_SETUP,
|
|
8875
|
-
children: /* @__PURE__ */ jsxs31(
|
|
8876
|
-
"div",
|
|
8877
|
-
{
|
|
8878
|
-
className: cn(
|
|
8879
|
-
"p-4 rounded-[var(--l-pass-el-bdrs)] flex flex-col gap-2 items-center text-center bg-[var(--l-pass-bg-info)]"
|
|
8880
|
-
// 'border border-[var(--l-pass-info)]'
|
|
8881
|
-
),
|
|
8882
|
-
children: [
|
|
8883
|
-
/* @__PURE__ */ jsx41("span", { className: "text-lg font-bold text-[var(--l-pass-info)]", children: "EMAIL IS NOT CONNECTED" }),
|
|
8884
|
-
/* @__PURE__ */ jsx41("span", { className: "text-sm font-medium text-[var(--l-pass-info)]", children: "Connect your email for easier account recovery and additional security." }),
|
|
8885
|
-
/* @__PURE__ */ jsxs31(Button, { size: "large", onClick: () => setPage("manage-wallet" /* MANAGE_WALLET */), children: [
|
|
8886
|
-
/* @__PURE__ */ jsx41(ShieldCheck2, { className: "w-3 h-3 inline mr-1" }),
|
|
8887
|
-
/* @__PURE__ */ jsx41("span", { children: "CONNECT EMAIL" })
|
|
8838
|
+
/* @__PURE__ */ jsx41("span", { children: "Lumia cannot recover your wallet without a backup!" }),
|
|
8839
|
+
/* @__PURE__ */ jsxs30(Button, { size: "medium", onClick: () => setPage("keysare-backup" /* KEYSARE_BACKUP */), children: [
|
|
8840
|
+
/* @__PURE__ */ jsx41(DatabaseBackup, { className: "w-4 h-4" }),
|
|
8841
|
+
/* @__PURE__ */ jsx41("span", { children: "CREATE BACKUP NOW" })
|
|
8888
8842
|
] })
|
|
8889
8843
|
]
|
|
8890
8844
|
}
|
|
@@ -8894,115 +8848,71 @@ function EmailNotConnectedWarning() {
|
|
|
8894
8848
|
}
|
|
8895
8849
|
|
|
8896
8850
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
8897
|
-
import { jsx as jsx42, jsxs as
|
|
8851
|
+
import { jsx as jsx42, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
8852
|
+
var MAIN_MENU_BUTTONS = [
|
|
8853
|
+
{ id: "send" /* SEND */, label: "Send", icon: ChevronRight2 },
|
|
8854
|
+
{ id: "receive" /* RECEIVE */, label: "Receive", icon: ChevronLeft },
|
|
8855
|
+
{ id: "buy" /* BUY */, label: "Buy", icon: DollarIcon },
|
|
8856
|
+
{ id: "assets" /* ASSETS */, label: "Portfolio", icon: Wallet23 }
|
|
8857
|
+
];
|
|
8898
8858
|
function MainMenu() {
|
|
8899
8859
|
const address = useLumiaPassportSession((st) => st.address);
|
|
8900
8860
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8901
8861
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
8902
8862
|
useEffect15(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
8903
|
-
return /* @__PURE__ */
|
|
8904
|
-
/* @__PURE__ */
|
|
8905
|
-
|
|
8906
|
-
|
|
8907
|
-
|
|
8908
|
-
|
|
8909
|
-
|
|
8910
|
-
|
|
8911
|
-
|
|
8912
|
-
|
|
8913
|
-
|
|
8914
|
-
|
|
8915
|
-
|
|
8916
|
-
|
|
8917
|
-
|
|
8918
|
-
|
|
8919
|
-
|
|
8920
|
-
Button,
|
|
8921
|
-
{
|
|
8922
|
-
className: "flex-col",
|
|
8923
|
-
disabled: !address,
|
|
8924
|
-
variant: "ghost",
|
|
8925
|
-
size: "large",
|
|
8926
|
-
onClick: () => setPage("receive" /* RECEIVE */),
|
|
8927
|
-
children: [
|
|
8928
|
-
/* @__PURE__ */ jsx42(ChevronLeft, { className: "w-8 h-8" }),
|
|
8929
|
-
/* @__PURE__ */ jsx42("span", { className: "text-xs font-semibold", children: "Receive" })
|
|
8930
|
-
]
|
|
8931
|
-
}
|
|
8932
|
-
),
|
|
8933
|
-
/* @__PURE__ */ jsxs32(
|
|
8934
|
-
Button,
|
|
8935
|
-
{
|
|
8936
|
-
className: "flex-col",
|
|
8937
|
-
disabled: !address,
|
|
8938
|
-
variant: "ghost",
|
|
8939
|
-
size: "large",
|
|
8940
|
-
onClick: () => setPage("buy" /* BUY */),
|
|
8941
|
-
children: [
|
|
8942
|
-
/* @__PURE__ */ jsx42(DollarIcon, { className: "w-8 h-8" }),
|
|
8943
|
-
/* @__PURE__ */ jsx42("span", { className: "text-xs font-semibold", children: "Buy" })
|
|
8944
|
-
]
|
|
8945
|
-
}
|
|
8946
|
-
),
|
|
8947
|
-
/* @__PURE__ */ jsxs32(
|
|
8948
|
-
Button,
|
|
8949
|
-
{
|
|
8950
|
-
className: "flex-col",
|
|
8951
|
-
disabled: !address,
|
|
8952
|
-
variant: "ghost",
|
|
8953
|
-
size: "large",
|
|
8954
|
-
onClick: () => setPage("assets" /* ASSETS */),
|
|
8955
|
-
children: [
|
|
8956
|
-
/* @__PURE__ */ jsx42(Wallet2, { className: "w-8 h-8" }),
|
|
8957
|
-
/* @__PURE__ */ jsx42("span", { className: "text-xs font-semibold", children: "Portfolio" })
|
|
8958
|
-
]
|
|
8959
|
-
}
|
|
8960
|
-
)
|
|
8961
|
-
] }),
|
|
8962
|
-
!!address && /* @__PURE__ */ jsx42(BackupWarning, {}),
|
|
8963
|
-
!!address && /* @__PURE__ */ jsx42(EmailNotConnectedWarning, {})
|
|
8863
|
+
return /* @__PURE__ */ jsxs31("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
8864
|
+
/* @__PURE__ */ jsx42("div", { className: "grid grid-cols-4 gap-[var(--l-pass-gap)]", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ jsxs31(
|
|
8865
|
+
Button,
|
|
8866
|
+
{
|
|
8867
|
+
size: "large",
|
|
8868
|
+
variant: "ghost",
|
|
8869
|
+
disabled: !address,
|
|
8870
|
+
className: "flex-col h-fit py-1",
|
|
8871
|
+
onClick: () => setPage(id),
|
|
8872
|
+
children: [
|
|
8873
|
+
/* @__PURE__ */ jsx42(Icon, { className: "w-8 h-8" }),
|
|
8874
|
+
/* @__PURE__ */ jsx42("span", { className: "text-xs font-semibold", children: label })
|
|
8875
|
+
]
|
|
8876
|
+
},
|
|
8877
|
+
id
|
|
8878
|
+
)) }),
|
|
8879
|
+
!!address && /* @__PURE__ */ jsx42(BackupWarning, {})
|
|
8964
8880
|
] });
|
|
8965
8881
|
}
|
|
8966
8882
|
|
|
8967
8883
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
8968
|
-
import {
|
|
8969
|
-
import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft7, Loader as
|
|
8884
|
+
import { fromPairs } from "lodash-es";
|
|
8885
|
+
import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft7, Loader as Loader7 } from "lucide-react";
|
|
8970
8886
|
import { useMemo as useMemo2 } from "react";
|
|
8971
8887
|
|
|
8972
|
-
// src/internal/components/ManageWalletMenu/
|
|
8973
|
-
import {
|
|
8974
|
-
|
|
8975
|
-
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
8976
|
-
function useProvidersList() {
|
|
8977
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
8978
|
-
return useQuery4({
|
|
8979
|
-
retry: false,
|
|
8980
|
-
enabled: !!walletAddress,
|
|
8981
|
-
queryKey: [PROVIDERS_QUERY_KEY, walletAddress],
|
|
8982
|
-
queryFn: getLinkedProviders
|
|
8983
|
-
});
|
|
8984
|
-
}
|
|
8888
|
+
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
8889
|
+
import { useQueryClient as useQueryClient4 } from "@tanstack/react-query";
|
|
8890
|
+
init_passkey2();
|
|
8985
8891
|
|
|
8986
|
-
// src/internal/components/ManageWalletMenu/
|
|
8987
|
-
|
|
8988
|
-
|
|
8892
|
+
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8893
|
+
init_lumiaPassport();
|
|
8894
|
+
init_projectId();
|
|
8895
|
+
import { useMutation as useMutation7 } from "@tanstack/react-query";
|
|
8896
|
+
import { ChevronRight as ChevronRight3, Loader as Loader6, Mail as Mail4 } from "lucide-react";
|
|
8989
8897
|
|
|
8990
8898
|
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
8991
8899
|
import { create as create4 } from "zustand";
|
|
8992
8900
|
var useManageWalletStore = create4((set) => ({
|
|
8901
|
+
emailStep: "input",
|
|
8993
8902
|
email: "",
|
|
8994
8903
|
emailCode: "",
|
|
8995
|
-
|
|
8996
|
-
emailCodeExpiresIn:
|
|
8904
|
+
emailCodeSentError: "",
|
|
8905
|
+
emailCodeExpiresIn: 0,
|
|
8997
8906
|
isWalletLinking: false,
|
|
8998
8907
|
linkIsLoading: false,
|
|
8999
8908
|
linkError: "",
|
|
9000
8909
|
verificationError: "",
|
|
9001
8910
|
providerType: null,
|
|
9002
8911
|
confirmUnlink: null,
|
|
8912
|
+
setEmailStep: (emailStep) => set({ emailStep }),
|
|
9003
8913
|
setEmail: (email) => set({ email }),
|
|
9004
8914
|
setEmailCode: (emailCode) => set({ emailCode }),
|
|
9005
|
-
|
|
8915
|
+
setEmailCodeSentError: (emailCodeSentError) => set({ emailCodeSentError }),
|
|
9006
8916
|
setEmailCodeExpiresIn: (emailCodeExpiresIn) => set({ emailCodeExpiresIn }),
|
|
9007
8917
|
setIsWalletLinking: (isWalletLinking) => set({ isWalletLinking }),
|
|
9008
8918
|
setLinkIsLoading: (linkIsLoading) => set({ linkIsLoading }),
|
|
@@ -9012,138 +8922,362 @@ var useManageWalletStore = create4((set) => ({
|
|
|
9012
8922
|
setConfirmUnlink: (confirmUnlink) => set({ confirmUnlink })
|
|
9013
8923
|
}));
|
|
9014
8924
|
|
|
9015
|
-
// src/internal/components/ManageWalletMenu/
|
|
9016
|
-
import { jsx as jsx43, jsxs as
|
|
9017
|
-
function
|
|
9018
|
-
const
|
|
9019
|
-
const
|
|
9020
|
-
const
|
|
9021
|
-
const
|
|
9022
|
-
|
|
9023
|
-
|
|
9024
|
-
|
|
9025
|
-
|
|
9026
|
-
|
|
9027
|
-
|
|
9028
|
-
|
|
9029
|
-
|
|
9030
|
-
|
|
9031
|
-
|
|
9032
|
-
|
|
9033
|
-
|
|
9034
|
-
|
|
9035
|
-
|
|
9036
|
-
|
|
9037
|
-
|
|
9038
|
-
|
|
9039
|
-
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9044
|
-
|
|
9045
|
-
|
|
9046
|
-
|
|
9047
|
-
|
|
9048
|
-
|
|
9049
|
-
|
|
9050
|
-
|
|
9051
|
-
|
|
9052
|
-
|
|
9053
|
-
|
|
9054
|
-
|
|
9055
|
-
|
|
9056
|
-
|
|
9057
|
-
|
|
9058
|
-
|
|
9059
|
-
|
|
9060
|
-
|
|
9061
|
-
|
|
9062
|
-
|
|
9063
|
-
|
|
9064
|
-
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
|
|
9068
|
-
|
|
8925
|
+
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8926
|
+
import { jsx as jsx43, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
8927
|
+
function EmailForm() {
|
|
8928
|
+
const { config, callbacks } = useLumiaPassportConfig();
|
|
8929
|
+
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
8930
|
+
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
8931
|
+
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
8932
|
+
const { mutate: onSendVerificationCode } = useMutation7({
|
|
8933
|
+
mutationFn: async () => {
|
|
8934
|
+
if (!email) return;
|
|
8935
|
+
setIsLoading(true);
|
|
8936
|
+
setEmailCodeSentError("");
|
|
8937
|
+
try {
|
|
8938
|
+
const response = await fetch(addProjectIdToUrl(`${getServiceUrls().tssUrl}/api/auth/email/send-code`), {
|
|
8939
|
+
method: "POST",
|
|
8940
|
+
headers: {
|
|
8941
|
+
"Content-Type": "application/json"
|
|
8942
|
+
},
|
|
8943
|
+
credentials: "include",
|
|
8944
|
+
body: JSON.stringify({
|
|
8945
|
+
email,
|
|
8946
|
+
purpose: "login"
|
|
8947
|
+
})
|
|
8948
|
+
});
|
|
8949
|
+
const data = await response.json();
|
|
8950
|
+
if (response.ok) {
|
|
8951
|
+
setEmailCodeExpiresIn(data?.expiresIn || 300);
|
|
8952
|
+
setEmailStep("verify");
|
|
8953
|
+
} else {
|
|
8954
|
+
if (response.status === 429) {
|
|
8955
|
+
const retryAfter = data.retryAfter || 60;
|
|
8956
|
+
setEmailCodeSentError(
|
|
8957
|
+
`Code already sent recently. Please wait ${retryAfter} seconds before requesting another.`
|
|
8958
|
+
);
|
|
8959
|
+
} else if (response.status === 400) {
|
|
8960
|
+
setEmailCodeSentError(data.message || "Invalid email address");
|
|
8961
|
+
} else {
|
|
8962
|
+
setEmailCodeSentError(data.message || "Failed to send verification code");
|
|
8963
|
+
}
|
|
8964
|
+
}
|
|
8965
|
+
} catch (error) {
|
|
8966
|
+
const errorMessage = "Network error. Please check your connection.";
|
|
8967
|
+
setEmailCodeSentError(errorMessage);
|
|
8968
|
+
try {
|
|
8969
|
+
callbacks?.onLumiaPassportError?.({
|
|
8970
|
+
error: error instanceof Error ? error : new Error(errorMessage),
|
|
8971
|
+
message: errorMessage
|
|
8972
|
+
});
|
|
8973
|
+
} catch {
|
|
8974
|
+
}
|
|
8975
|
+
} finally {
|
|
8976
|
+
setIsLoading(false);
|
|
8977
|
+
}
|
|
8978
|
+
}
|
|
8979
|
+
});
|
|
8980
|
+
return /* @__PURE__ */ jsxs32("div", { className: "w-full flex gap-[10px] items-center", children: [
|
|
8981
|
+
/* @__PURE__ */ jsx43(
|
|
8982
|
+
Input,
|
|
8983
|
+
{
|
|
8984
|
+
name: "signin-email",
|
|
8985
|
+
Icon: Mail4,
|
|
8986
|
+
type: "email",
|
|
8987
|
+
autoComplete: "off",
|
|
8988
|
+
placeholder: config.email.placeholder,
|
|
8989
|
+
value: email,
|
|
8990
|
+
onChange: (e) => setEmail(e.target.value),
|
|
8991
|
+
className: "flex-1 w-full"
|
|
8992
|
+
}
|
|
8993
|
+
),
|
|
8994
|
+
/* @__PURE__ */ jsx43(
|
|
8995
|
+
Button,
|
|
8996
|
+
{
|
|
8997
|
+
className: "w-12 h-12 flex-none",
|
|
8998
|
+
variant: "default",
|
|
8999
|
+
size: "large",
|
|
9000
|
+
disabled: !email || isLoading,
|
|
9001
|
+
onClick: () => onSendVerificationCode(),
|
|
9002
|
+
children: isLoading ? /* @__PURE__ */ jsx43(Loader6, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx43(ChevronRight3, { className: "w-4 h-4" })
|
|
9003
|
+
}
|
|
9004
|
+
)
|
|
9005
|
+
] });
|
|
9006
|
+
}
|
|
9007
|
+
|
|
9008
|
+
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9009
|
+
import { useQuery as useQuery4 } from "@tanstack/react-query";
|
|
9010
|
+
init_common();
|
|
9011
|
+
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9012
|
+
function useProvidersList() {
|
|
9013
|
+
const walletAddress = useLumiaPassportSession().address;
|
|
9014
|
+
return useQuery4({
|
|
9015
|
+
retry: false,
|
|
9016
|
+
enabled: !!walletAddress,
|
|
9017
|
+
queryKey: [PROVIDERS_QUERY_KEY, walletAddress],
|
|
9018
|
+
queryFn: getLinkedProviders
|
|
9019
|
+
});
|
|
9020
|
+
}
|
|
9021
|
+
|
|
9022
|
+
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9023
|
+
init_email();
|
|
9024
|
+
import { useMutation as useMutation8 } from "@tanstack/react-query";
|
|
9025
|
+
function useSendVerificationCode() {
|
|
9026
|
+
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9027
|
+
return useMutation8({
|
|
9028
|
+
mutationFn: async (email) => {
|
|
9029
|
+
if (!email) {
|
|
9030
|
+
throw new Error("Email is required");
|
|
9031
|
+
}
|
|
9032
|
+
setVerificationError("");
|
|
9033
|
+
setLinkIsLoading(true);
|
|
9034
|
+
await sendEmailLinkCode(email);
|
|
9069
9035
|
},
|
|
9070
|
-
|
|
9071
|
-
|
|
9036
|
+
onError: (error) => {
|
|
9037
|
+
console.error("Failed to send verification code", error.message);
|
|
9038
|
+
setEmailCodeSentError(error?.message || "Failed to send verification code");
|
|
9039
|
+
setLinkIsLoading(false);
|
|
9040
|
+
},
|
|
9041
|
+
onSuccess: () => {
|
|
9042
|
+
setEmailCodeExpiresIn(300);
|
|
9043
|
+
console.log("Verification code sent");
|
|
9044
|
+
setLinkIsLoading(false);
|
|
9045
|
+
}
|
|
9046
|
+
});
|
|
9072
9047
|
}
|
|
9073
9048
|
|
|
9074
|
-
// src/internal/components/ManageWalletMenu/
|
|
9075
|
-
import {
|
|
9076
|
-
|
|
9077
|
-
|
|
9078
|
-
|
|
9079
|
-
|
|
9080
|
-
|
|
9081
|
-
|
|
9049
|
+
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9050
|
+
import { useMutation as useMutation9, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
9051
|
+
init_email();
|
|
9052
|
+
function useVerifyCode() {
|
|
9053
|
+
const { callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
9054
|
+
const qc = useQueryClient3();
|
|
9055
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
9056
|
+
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9057
|
+
const {
|
|
9058
|
+
email,
|
|
9059
|
+
emailCode,
|
|
9060
|
+
setEmail,
|
|
9061
|
+
setEmailStep,
|
|
9062
|
+
setEmailCode,
|
|
9063
|
+
setProviderType,
|
|
9064
|
+
setLinkIsLoading,
|
|
9065
|
+
setVerificationError,
|
|
9066
|
+
setEmailCodeSentError
|
|
9067
|
+
} = useManageWalletStore();
|
|
9068
|
+
return useMutation9({
|
|
9069
|
+
mutationFn: async (codeToVerify) => {
|
|
9070
|
+
const code = codeToVerify ?? emailCode;
|
|
9071
|
+
if (!code) {
|
|
9072
|
+
setEmailCodeSentError("Please enter the verification code");
|
|
9073
|
+
return;
|
|
9074
|
+
}
|
|
9075
|
+
setIsLoading(true);
|
|
9076
|
+
setLinkIsLoading(true);
|
|
9077
|
+
setVerificationError("");
|
|
9078
|
+
setEmailCodeSentError("");
|
|
9079
|
+
return await verifyEmailLinkCode(email, code);
|
|
9080
|
+
},
|
|
9081
|
+
onSuccess: async () => {
|
|
9082
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, walletAddress] });
|
|
9083
|
+
setProviderType(null);
|
|
9084
|
+
setEmail("");
|
|
9085
|
+
setEmailCode("");
|
|
9086
|
+
setVerificationError("");
|
|
9087
|
+
setEmailCodeSentError("");
|
|
9088
|
+
setEmailStep("input");
|
|
9089
|
+
try {
|
|
9090
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, walletAddress]) });
|
|
9091
|
+
notifyProvidersUpdate?.();
|
|
9092
|
+
} catch {
|
|
9093
|
+
}
|
|
9094
|
+
setIsLoading(false);
|
|
9095
|
+
setLinkIsLoading(false);
|
|
9096
|
+
},
|
|
9097
|
+
onError: (error) => {
|
|
9098
|
+
setVerificationError(error?.message || "Failed to verify and link email");
|
|
9099
|
+
setIsLoading(false);
|
|
9100
|
+
setLinkIsLoading(false);
|
|
9101
|
+
}
|
|
9102
|
+
});
|
|
9103
|
+
}
|
|
9104
|
+
|
|
9105
|
+
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
9106
|
+
import { Fragment as Fragment7, jsx as jsx44, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
9107
|
+
function normalizePasskeyLinkError(msg) {
|
|
9108
|
+
const lower = msg.toLowerCase();
|
|
9109
|
+
if (lower.includes("already registered") || lower.includes("credential") && lower.includes("exists")) {
|
|
9110
|
+
return "This authenticator already has a credential for this site. Try a different device or security key.";
|
|
9111
|
+
}
|
|
9112
|
+
if (lower.includes("not allowed") || lower.includes("user cancelled")) {
|
|
9113
|
+
return "Operation cancelled. No changes were made.";
|
|
9114
|
+
}
|
|
9115
|
+
return msg;
|
|
9116
|
+
}
|
|
9117
|
+
function AddProvider() {
|
|
9118
|
+
const qc = useQueryClient4();
|
|
9119
|
+
const walletAddress = useLumiaPassportSession().address;
|
|
9120
|
+
const { callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
9121
|
+
const {
|
|
9122
|
+
linkIsLoading,
|
|
9123
|
+
providerType,
|
|
9124
|
+
email,
|
|
9125
|
+
emailStep,
|
|
9126
|
+
emailCodeExpiresIn,
|
|
9127
|
+
setProviderType,
|
|
9128
|
+
setLinkError,
|
|
9129
|
+
setLinkIsLoading
|
|
9130
|
+
} = useManageWalletStore();
|
|
9082
9131
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9083
|
-
const {
|
|
9084
|
-
const
|
|
9085
|
-
|
|
9086
|
-
|
|
9087
|
-
|
|
9088
|
-
|
|
9089
|
-
|
|
9090
|
-
|
|
9091
|
-
|
|
9092
|
-
|
|
9093
|
-
|
|
9094
|
-
|
|
9095
|
-
|
|
9096
|
-
|
|
9097
|
-
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
|
|
9101
|
-
|
|
9102
|
-
|
|
9103
|
-
|
|
9104
|
-
|
|
9105
|
-
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
|
|
9109
|
-
|
|
9110
|
-
|
|
9111
|
-
|
|
9112
|
-
|
|
9113
|
-
|
|
9132
|
+
const { mutate: onResendCode, isPending: isCodeSending } = useSendVerificationCode();
|
|
9133
|
+
const { mutate: onVerifyCode, isPending: isCodeVerifying } = useVerifyCode();
|
|
9134
|
+
const isLoading = linkIsLoading || isCodeSending || isCodeVerifying;
|
|
9135
|
+
if (!providerType) return null;
|
|
9136
|
+
return /* @__PURE__ */ jsxs33(Fragment7, { children: [
|
|
9137
|
+
providerType === "email" && emailStep === "input" && /* @__PURE__ */ jsxs33("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9138
|
+
/* @__PURE__ */ jsx44("div", { className: "w-full flex flex-col gap-1 text-center", children: /* @__PURE__ */ jsx44("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Provide Email to connect" }) }),
|
|
9139
|
+
/* @__PURE__ */ jsx44(EmailForm, {})
|
|
9140
|
+
] }),
|
|
9141
|
+
providerType === "email" && emailStep === "verify" && /* @__PURE__ */ jsxs33("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9142
|
+
/* @__PURE__ */ jsxs33("div", { className: "w-full flex flex-col gap-1 text-center", children: [
|
|
9143
|
+
/* @__PURE__ */ jsx44("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "We sent a verification code to:" }),
|
|
9144
|
+
/* @__PURE__ */ jsx44("strong", { className: "text-xs", children: email })
|
|
9145
|
+
] }),
|
|
9146
|
+
/* @__PURE__ */ jsx44(
|
|
9147
|
+
VerificationCodeInput,
|
|
9148
|
+
{
|
|
9149
|
+
onVerifyCode,
|
|
9150
|
+
onResendCode: () => onResendCode(email),
|
|
9151
|
+
isLoading,
|
|
9152
|
+
expiresIn: emailCodeExpiresIn
|
|
9153
|
+
}
|
|
9154
|
+
)
|
|
9155
|
+
] }),
|
|
9156
|
+
providerType === "passkey" && /* @__PURE__ */ jsxs33("div", { className: "flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9157
|
+
/* @__PURE__ */ jsxs33(Highlight, { children: [
|
|
9158
|
+
/* @__PURE__ */ jsx44("span", { className: "block mb-1", children: "Link a passkey to your account using WebAuth. Your device may let you choose an existing passkey" }),
|
|
9159
|
+
/* @__PURE__ */ jsx44("span", { className: "block", children: "Otherwise a new one will be created" })
|
|
9160
|
+
] }),
|
|
9161
|
+
/* @__PURE__ */ jsxs33(
|
|
9162
|
+
Button,
|
|
9163
|
+
{
|
|
9164
|
+
className: "w-full",
|
|
9165
|
+
size: "medium",
|
|
9166
|
+
disabled: isLoading,
|
|
9167
|
+
onClick: async () => {
|
|
9168
|
+
setLinkError("");
|
|
9169
|
+
setLinkIsLoading(true);
|
|
9170
|
+
try {
|
|
9171
|
+
await linkPasskeyWithWebAuthn({
|
|
9172
|
+
authenticatorSelection: {
|
|
9173
|
+
authenticatorAttachment: "platform",
|
|
9174
|
+
residentKey: "preferred",
|
|
9175
|
+
userVerification: "preferred"
|
|
9176
|
+
}
|
|
9177
|
+
});
|
|
9178
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, walletAddress] });
|
|
9179
|
+
try {
|
|
9180
|
+
callbacks?.onLumiaPassportUpdate?.({
|
|
9181
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, walletAddress])
|
|
9182
|
+
});
|
|
9183
|
+
notifyProvidersUpdate?.();
|
|
9184
|
+
} catch {
|
|
9185
|
+
}
|
|
9186
|
+
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9187
|
+
setProviderType(null);
|
|
9188
|
+
} catch (e) {
|
|
9189
|
+
const msg = e?.message || "Failed to link passkey";
|
|
9190
|
+
setLinkError(normalizePasskeyLinkError(msg));
|
|
9191
|
+
} finally {
|
|
9192
|
+
setLinkIsLoading(false);
|
|
9114
9193
|
}
|
|
9115
|
-
|
|
9116
|
-
|
|
9117
|
-
"
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
|
|
9194
|
+
},
|
|
9195
|
+
children: [
|
|
9196
|
+
/* @__PURE__ */ jsx44(PasskeyAddIcon, { className: "w-4 h-4" }),
|
|
9197
|
+
linkIsLoading ? "Linking\u2026" : "Create on This Device"
|
|
9198
|
+
]
|
|
9199
|
+
}
|
|
9200
|
+
),
|
|
9201
|
+
/* @__PURE__ */ jsxs33(
|
|
9202
|
+
Button,
|
|
9203
|
+
{
|
|
9204
|
+
className: "w-full",
|
|
9205
|
+
variant: "outline",
|
|
9206
|
+
size: "medium",
|
|
9207
|
+
disabled: isLoading,
|
|
9208
|
+
onClick: async () => {
|
|
9209
|
+
setLinkError("");
|
|
9210
|
+
setLinkIsLoading(true);
|
|
9211
|
+
try {
|
|
9212
|
+
await linkPasskeyWithWebAuthn({
|
|
9213
|
+
authenticatorSelection: {
|
|
9214
|
+
authenticatorAttachment: "cross-platform",
|
|
9215
|
+
residentKey: "preferred",
|
|
9216
|
+
userVerification: "preferred"
|
|
9217
|
+
}
|
|
9218
|
+
});
|
|
9219
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, walletAddress] });
|
|
9220
|
+
try {
|
|
9221
|
+
callbacks?.onLumiaPassportUpdate?.({
|
|
9222
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, walletAddress])
|
|
9223
|
+
});
|
|
9224
|
+
notifyProvidersUpdate?.();
|
|
9225
|
+
} catch {
|
|
9226
|
+
}
|
|
9227
|
+
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9228
|
+
setProviderType(null);
|
|
9229
|
+
} catch (e) {
|
|
9230
|
+
const msg = e?.message || "Failed to link passkey";
|
|
9231
|
+
setLinkError(normalizePasskeyLinkError(msg));
|
|
9232
|
+
} finally {
|
|
9233
|
+
setLinkIsLoading(false);
|
|
9121
9234
|
}
|
|
9122
|
-
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
|
|
9131
|
-
] })
|
|
9235
|
+
},
|
|
9236
|
+
children: [
|
|
9237
|
+
/* @__PURE__ */ jsx44(PasskeyAddIcon, { className: "w-4 h-4" }),
|
|
9238
|
+
"Create on Security Key"
|
|
9239
|
+
]
|
|
9240
|
+
}
|
|
9241
|
+
)
|
|
9242
|
+
] }),
|
|
9243
|
+
providerType !== null && providerType !== "email" && providerType !== "passkey" && providerType !== "telegram" && providerType !== "wallet" && /* @__PURE__ */ jsx44(Highlight, { children: linkIsLoading ? `Linking with ${providerType.charAt(0).toUpperCase() + providerType.slice(1)}\u2026 Follow the popup to approve the connection.` : `Launching ${providerType.charAt(0).toUpperCase() + providerType.slice(1)} authentication\u2026` })
|
|
9132
9244
|
] });
|
|
9133
9245
|
}
|
|
9134
9246
|
|
|
9135
|
-
// src/internal/components/ManageWalletMenu/
|
|
9136
|
-
|
|
9137
|
-
import {
|
|
9138
|
-
|
|
9139
|
-
|
|
9247
|
+
// src/internal/components/ManageWalletMenu/EmailNotConnectedWarning.tsx
|
|
9248
|
+
init_auth();
|
|
9249
|
+
import { AnimatePresence as AnimatePresence3, motion as motion3 } from "framer-motion";
|
|
9250
|
+
import { Mail as Mail5 } from "lucide-react";
|
|
9251
|
+
import { jsx as jsx45, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
9252
|
+
function EmailNotConnectedWarning() {
|
|
9253
|
+
const providers = jwtTokenManager2.getProviders();
|
|
9254
|
+
const hasEmail = providers.includes("email");
|
|
9255
|
+
const { config } = useLumiaPassportConfig();
|
|
9256
|
+
const isShown = config.warnings?.emailNotConnectedWarning && !hasEmail;
|
|
9257
|
+
return /* @__PURE__ */ jsx45(AnimatePresence3, { mode: "wait", initial: false, children: isShown ? /* @__PURE__ */ jsx45(
|
|
9258
|
+
motion3.div,
|
|
9259
|
+
{
|
|
9260
|
+
initial: { opacity: 0, height: 0 },
|
|
9261
|
+
animate: { opacity: 1, height: "auto" },
|
|
9262
|
+
exit: { opacity: 0, height: 0 },
|
|
9263
|
+
transition: Y_ANIMATION_SETUP,
|
|
9264
|
+
children: /* @__PURE__ */ jsxs34(Highlight, { className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9265
|
+
/* @__PURE__ */ jsxs34("span", { className: "flex items-center gap-[var(--l-pass-gap)] text-lg font-bold", children: [
|
|
9266
|
+
/* @__PURE__ */ jsx45(Mail5, { className: "w-5 h-5" }),
|
|
9267
|
+
"CONNECT EMAIL"
|
|
9268
|
+
] }),
|
|
9269
|
+
/* @__PURE__ */ jsx45("span", { className: "font-medium", children: "Connect your email for easier account recovery and additional security." })
|
|
9270
|
+
] })
|
|
9271
|
+
}
|
|
9272
|
+
) : null });
|
|
9273
|
+
}
|
|
9140
9274
|
|
|
9141
9275
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9142
|
-
import { useQueryClient as
|
|
9276
|
+
import { useQueryClient as useQueryClient5 } from "@tanstack/react-query";
|
|
9143
9277
|
import React11, { useEffect as useEffect16 } from "react";
|
|
9144
9278
|
init_auth();
|
|
9145
9279
|
function useLinkSocial() {
|
|
9146
|
-
const qc =
|
|
9280
|
+
const qc = useQueryClient5();
|
|
9147
9281
|
const walletAddress = useLumiaPassportSession().address;
|
|
9148
9282
|
const { config, callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
9149
9283
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -9214,19 +9348,19 @@ function useLinkSocial() {
|
|
|
9214
9348
|
}
|
|
9215
9349
|
|
|
9216
9350
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9217
|
-
import { useQueryClient as
|
|
9351
|
+
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
9218
9352
|
import { useCallback as useCallback9, useEffect as useEffect17, useState as useState7 } from "react";
|
|
9219
9353
|
init_telegram2();
|
|
9220
9354
|
function useLinkTelegram() {
|
|
9221
|
-
const qc = useQueryClient4();
|
|
9222
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
9223
9355
|
const { config, callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
9224
|
-
const
|
|
9225
|
-
const
|
|
9356
|
+
const qc = useQueryClient6();
|
|
9357
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
9358
|
+
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9359
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9226
9360
|
const handleLinkTelegram = useCallback9(async () => {
|
|
9227
9361
|
try {
|
|
9228
9362
|
setLinkIsLoading(true);
|
|
9229
|
-
|
|
9363
|
+
setLinkError("");
|
|
9230
9364
|
const telegramProvider = config.social?.providers?.find(
|
|
9231
9365
|
(p) => (p.id || "").toLowerCase() === "telegram" && p.enabled
|
|
9232
9366
|
);
|
|
@@ -9248,367 +9382,242 @@ function useLinkTelegram() {
|
|
|
9248
9382
|
throw new Error("No user data received from Telegram");
|
|
9249
9383
|
}
|
|
9250
9384
|
console.log("[ManageWallet] Linking Telegram with data:", user);
|
|
9251
|
-
await linkTelegram(user);
|
|
9252
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, walletAddress] });
|
|
9253
|
-
try {
|
|
9254
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, walletAddress]) });
|
|
9255
|
-
notifyProvidersUpdate?.();
|
|
9256
|
-
} catch {
|
|
9257
|
-
}
|
|
9258
|
-
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9259
|
-
setProviderType(null);
|
|
9260
|
-
} catch (e) {
|
|
9261
|
-
console.error("[ManageWallet] Failed to link Telegram:", e);
|
|
9262
|
-
setLayoutError(e?.message || "Failed to link Telegram");
|
|
9263
|
-
setProviderType(null);
|
|
9264
|
-
} finally {
|
|
9265
|
-
setLinkIsLoading(false);
|
|
9266
|
-
}
|
|
9267
|
-
}, [config.social?.providers, callbacks]);
|
|
9268
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = useState7(false);
|
|
9269
|
-
useEffect17(() => {
|
|
9270
|
-
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9271
|
-
setTelegramLinkStarted(true);
|
|
9272
|
-
handleLinkTelegram();
|
|
9273
|
-
}
|
|
9274
|
-
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9275
|
-
useEffect17(() => {
|
|
9276
|
-
if (providerType !== "telegram") {
|
|
9277
|
-
setTelegramLinkStarted(false);
|
|
9278
|
-
}
|
|
9279
|
-
}, [providerType]);
|
|
9280
|
-
}
|
|
9281
|
-
|
|
9282
|
-
// src/internal/components/ManageWalletMenu/AddProviderMenu/AvailableProviders.tsx
|
|
9283
|
-
import { Key as Key5, Loader as Loader7, Wallet } from "lucide-react";
|
|
9284
|
-
import { Fragment as Fragment7, memo } from "react";
|
|
9285
|
-
|
|
9286
|
-
// src/internal/components/ManageWalletMenu/AddProviderMenu/useSendVerificationCode.ts
|
|
9287
|
-
init_email();
|
|
9288
|
-
import { useMutation as useMutation7 } from "@tanstack/react-query";
|
|
9289
|
-
function useSendVerificationCode() {
|
|
9290
|
-
const setLayoutError = useLayoutDataStore((st) => st.setLayoutError);
|
|
9291
|
-
const { setVerificationError, setLinkIsLoading, setEmailCodeSent, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9292
|
-
return useMutation7({
|
|
9293
|
-
mutationFn: async (email) => {
|
|
9294
|
-
if (!email) {
|
|
9295
|
-
throw new Error("Email is required");
|
|
9296
|
-
}
|
|
9297
|
-
setLayoutError("");
|
|
9298
|
-
setVerificationError("");
|
|
9299
|
-
setLinkIsLoading(true);
|
|
9300
|
-
await sendEmailLinkCode(email);
|
|
9301
|
-
setEmailCodeSent(true);
|
|
9302
|
-
setEmailCodeExpiresIn(300);
|
|
9303
|
-
},
|
|
9304
|
-
onError: (error) => {
|
|
9305
|
-
console.error("Failed to send verification code", error.message);
|
|
9306
|
-
setLayoutError(error?.message || "Failed to send verification code");
|
|
9307
|
-
setLinkIsLoading(false);
|
|
9308
|
-
},
|
|
9309
|
-
onSuccess: () => {
|
|
9310
|
-
console.log("Verification code sent");
|
|
9311
|
-
setLinkIsLoading(false);
|
|
9312
|
-
}
|
|
9313
|
-
});
|
|
9314
|
-
}
|
|
9315
|
-
|
|
9316
|
-
// src/internal/components/ManageWalletMenu/AddProviderMenu/AvailableProviders.tsx
|
|
9317
|
-
import { jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
9318
|
-
var EXISTING_PROVIDERS_METHODS = ["passkey", "email", "wallet", "social"];
|
|
9319
|
-
var AvalableAuthProviders = memo(() => {
|
|
9320
|
-
const config = useLumiaPassportConfig().config;
|
|
9321
|
-
const { email, setEmail, setProviderType } = useManageWalletStore();
|
|
9322
|
-
const { data: providers, isLoading: isProvidersLoading } = useProvidersList();
|
|
9323
|
-
const { mutate: sendVerificationCode } = useSendVerificationCode();
|
|
9324
|
-
const renderItems = EXISTING_PROVIDERS_METHODS.map((methodKey) => {
|
|
9325
|
-
switch (methodKey) {
|
|
9326
|
-
case "social":
|
|
9327
|
-
const isSocialEnabled = !!config.social?.enabled && !!config.social?.providers?.length;
|
|
9328
|
-
return null;
|
|
9329
|
-
case "passkey":
|
|
9330
|
-
const isPasskeyUsed = providers.some((p) => p.provider === "passkey");
|
|
9331
|
-
const showPasskey = !isPasskeyUsed && !!config.passkey?.enabled;
|
|
9332
|
-
if (!showPasskey) return null;
|
|
9333
|
-
return {
|
|
9334
|
-
key: "passkey",
|
|
9335
|
-
component: /* @__PURE__ */ jsxs35(Button, { onClick: () => setProviderType("passkey"), className: "w-full", size: "large", children: [
|
|
9336
|
-
/* @__PURE__ */ jsx45(Key5, { className: "w-4 h-4 mr-2" }),
|
|
9337
|
-
"Link with Passkey"
|
|
9338
|
-
] })
|
|
9339
|
-
};
|
|
9340
|
-
case "wallet":
|
|
9341
|
-
if (!config.wallet?.enabled) return null;
|
|
9342
|
-
return {
|
|
9343
|
-
key: "wallet",
|
|
9344
|
-
component: /* @__PURE__ */ jsxs35(
|
|
9345
|
-
Button,
|
|
9346
|
-
{
|
|
9347
|
-
className: "w-full",
|
|
9348
|
-
size: "large",
|
|
9349
|
-
onClick: () => {
|
|
9350
|
-
alert("WIP");
|
|
9351
|
-
},
|
|
9352
|
-
children: [
|
|
9353
|
-
/* @__PURE__ */ jsx45(Wallet, { className: "w-4 h-4 mr-2" }),
|
|
9354
|
-
"Connect External Wallet"
|
|
9355
|
-
]
|
|
9356
|
-
}
|
|
9357
|
-
)
|
|
9358
|
-
};
|
|
9359
|
-
case "email":
|
|
9360
|
-
const isEmailUsed = providers.some((p) => p.provider === "email");
|
|
9361
|
-
const showEmail = !isEmailUsed && !!config.email?.enabled;
|
|
9362
|
-
if (!showEmail) return null;
|
|
9363
|
-
return {
|
|
9364
|
-
key: "email",
|
|
9365
|
-
component: /* @__PURE__ */ jsxs35("div", { className: "space-y-2", children: [
|
|
9366
|
-
/* @__PURE__ */ jsx45(
|
|
9367
|
-
Input,
|
|
9368
|
-
{
|
|
9369
|
-
type: "email",
|
|
9370
|
-
placeholder: config.email.placeholder || "Enter your email",
|
|
9371
|
-
value: email,
|
|
9372
|
-
onChange: (e) => setEmail(e.target.value),
|
|
9373
|
-
className: "h-12"
|
|
9374
|
-
}
|
|
9375
|
-
),
|
|
9376
|
-
/* @__PURE__ */ jsx45(
|
|
9377
|
-
Button,
|
|
9378
|
-
{
|
|
9379
|
-
disabled: !email,
|
|
9380
|
-
className: "w-full",
|
|
9381
|
-
size: "large",
|
|
9382
|
-
onClick: () => {
|
|
9383
|
-
setProviderType("email");
|
|
9384
|
-
sendVerificationCode(email);
|
|
9385
|
-
},
|
|
9386
|
-
children: "Continue"
|
|
9387
|
-
}
|
|
9388
|
-
)
|
|
9389
|
-
] })
|
|
9390
|
-
};
|
|
9391
|
-
default:
|
|
9392
|
-
return null;
|
|
9393
|
-
}
|
|
9394
|
-
}).filter(Boolean);
|
|
9395
|
-
return /* @__PURE__ */ jsxs35("div", { className: "w-full flex flex-col", children: [
|
|
9396
|
-
isProvidersLoading && /* @__PURE__ */ jsx45("div", { className: "w-full p-6", children: /* @__PURE__ */ jsx45(Loader7, { className: "w-5 h-5 mr-2 animate-spin" }) }),
|
|
9397
|
-
!isProvidersLoading && renderItems.map((r, rIdx) => /* @__PURE__ */ jsxs35(Fragment7, { children: [
|
|
9398
|
-
r.component,
|
|
9399
|
-
rIdx === renderItems.length - 1 ? null : /* @__PURE__ */ jsx45("div", { className: "w-full py-2", children: /* @__PURE__ */ jsx45("span", { className: "block w-full text-center text-sm text-[var(--l-pass-fg-muted)]", children: "Or" }) })
|
|
9400
|
-
] }, r.key))
|
|
9401
|
-
] });
|
|
9402
|
-
});
|
|
9403
|
-
|
|
9404
|
-
// src/internal/components/ManageWalletMenu/AddProviderMenu/AddProviderMenu.tsx
|
|
9405
|
-
import { jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
9406
|
-
function normalizePasskeyLinkError(msg) {
|
|
9407
|
-
const lower = msg.toLowerCase();
|
|
9408
|
-
if (lower.includes("already registered") || lower.includes("credential") && lower.includes("exists")) {
|
|
9409
|
-
return "This authenticator already has a credential for this site. Try a different device or security key.";
|
|
9410
|
-
}
|
|
9411
|
-
if (lower.includes("not allowed") || lower.includes("user cancelled")) {
|
|
9412
|
-
return "Operation cancelled. No changes were made.";
|
|
9413
|
-
}
|
|
9414
|
-
return msg;
|
|
9415
|
-
}
|
|
9416
|
-
function AddProviderMenu() {
|
|
9417
|
-
const qc = useQueryClient5();
|
|
9418
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
9419
|
-
const { callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
9420
|
-
const {
|
|
9421
|
-
linkError,
|
|
9422
|
-
linkIsLoading,
|
|
9423
|
-
providerType,
|
|
9424
|
-
email,
|
|
9425
|
-
emailCode,
|
|
9426
|
-
emailCodeSent,
|
|
9427
|
-
emailCodeExpiresIn,
|
|
9428
|
-
verificationError,
|
|
9429
|
-
setVerificationError,
|
|
9430
|
-
setEmailCodeSent,
|
|
9431
|
-
setEmailCode,
|
|
9432
|
-
setEmail,
|
|
9433
|
-
setProviderType,
|
|
9434
|
-
setLinkError,
|
|
9435
|
-
setLinkIsLoading
|
|
9436
|
-
} = useManageWalletStore();
|
|
9437
|
-
const { setPage, setLayoutError } = useLayoutDataStore();
|
|
9438
|
-
const { mutate: sendVerificationCode } = useSendVerificationCode();
|
|
9439
|
-
const handleVerifyCode = async (codeToVerify) => {
|
|
9440
|
-
const code = codeToVerify ?? emailCode;
|
|
9441
|
-
if (!code) {
|
|
9442
|
-
setLayoutError("Please enter the verification code");
|
|
9443
|
-
return;
|
|
9444
|
-
}
|
|
9445
|
-
setLayoutError("");
|
|
9446
|
-
setVerificationError("");
|
|
9447
|
-
setLinkIsLoading(true);
|
|
9448
|
-
try {
|
|
9449
|
-
await verifyEmailLinkCode(email, code);
|
|
9385
|
+
await linkTelegram(user);
|
|
9450
9386
|
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, walletAddress] });
|
|
9451
9387
|
try {
|
|
9452
9388
|
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, walletAddress]) });
|
|
9453
9389
|
notifyProvidersUpdate?.();
|
|
9454
9390
|
} catch {
|
|
9455
9391
|
}
|
|
9456
|
-
setProviderType(null);
|
|
9457
|
-
setEmail("");
|
|
9458
|
-
setEmailCode("");
|
|
9459
|
-
setEmailCodeSent(false);
|
|
9460
9392
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9393
|
+
setProviderType(null);
|
|
9461
9394
|
} catch (e) {
|
|
9462
|
-
|
|
9395
|
+
console.error("[ManageWallet] Failed to link Telegram:", e);
|
|
9396
|
+
setLinkError(e?.message || "Failed to link Telegram");
|
|
9397
|
+
setProviderType(null);
|
|
9463
9398
|
} finally {
|
|
9464
9399
|
setLinkIsLoading(false);
|
|
9465
9400
|
}
|
|
9401
|
+
}, [config.social?.providers, callbacks]);
|
|
9402
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = useState7(false);
|
|
9403
|
+
useEffect17(() => {
|
|
9404
|
+
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9405
|
+
setTelegramLinkStarted(true);
|
|
9406
|
+
handleLinkTelegram();
|
|
9407
|
+
}
|
|
9408
|
+
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9409
|
+
useEffect17(() => {
|
|
9410
|
+
if (providerType !== "telegram") {
|
|
9411
|
+
setTelegramLinkStarted(false);
|
|
9412
|
+
}
|
|
9413
|
+
}, [providerType]);
|
|
9414
|
+
}
|
|
9415
|
+
|
|
9416
|
+
// src/internal/components/ManageWalletMenu/ProviderCard.tsx
|
|
9417
|
+
init_types();
|
|
9418
|
+
import { CheckCircle, Clock, Trash2 } from "lucide-react";
|
|
9419
|
+
import { jsx as jsx46, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
9420
|
+
function ProviderCard(props) {
|
|
9421
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9422
|
+
const setConfirmUnlink = useManageWalletStore((st) => st.setConfirmUnlink);
|
|
9423
|
+
const { data: providers = [] } = useProvidersList();
|
|
9424
|
+
const canUnlink = (p) => {
|
|
9425
|
+
const verified = providers.filter((x) => x.verified);
|
|
9426
|
+
if (verified.length <= 1 && p.verified) return false;
|
|
9427
|
+
return true;
|
|
9466
9428
|
};
|
|
9429
|
+
const info = getProviderDisplayInfo(props.provider);
|
|
9430
|
+
const allowUnlink = canUnlink(props);
|
|
9431
|
+
const IconComponent = info.icon;
|
|
9432
|
+
return /* @__PURE__ */ jsxs35("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
9433
|
+
/* @__PURE__ */ jsx46("div", { className: "w-12 h-12 flex items-center justify-center flex-none border border-[var(--l-pass-bd)] rounded-full", children: /* @__PURE__ */ jsx46(IconComponent, { className: "w-5 h-5" }) }),
|
|
9434
|
+
/* @__PURE__ */ jsxs35("div", { className: "flex flex-col gap-1 flex-1", children: [
|
|
9435
|
+
/* @__PURE__ */ jsx46("span", { className: "block w-full text-sm font-medium", children: info.name }),
|
|
9436
|
+
props.externalId && /* @__PURE__ */ jsx46(
|
|
9437
|
+
"span",
|
|
9438
|
+
{
|
|
9439
|
+
style: { maxWidth: 144 },
|
|
9440
|
+
className: "block w-full text-[10px] font-mono whitespace-nowrap text-ellipsis overflow-hidden",
|
|
9441
|
+
children: props.externalId
|
|
9442
|
+
}
|
|
9443
|
+
)
|
|
9444
|
+
] }),
|
|
9445
|
+
/* @__PURE__ */ jsxs35("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] flex-none", children: [
|
|
9446
|
+
props.verified ? /* @__PURE__ */ jsx46(CheckCircle, { className: `w-4 h-4 text-[var(--l-pass-bg-success)]` }) : /* @__PURE__ */ jsx46(Clock, { className: "w-4 h-4 text-[var(--l-pass-bg-warning)]" }),
|
|
9447
|
+
allowUnlink && /* @__PURE__ */ jsx46(
|
|
9448
|
+
Button,
|
|
9449
|
+
{
|
|
9450
|
+
variant: "ghost",
|
|
9451
|
+
size: "icon",
|
|
9452
|
+
title: "Remove provider",
|
|
9453
|
+
className: "w-5 h-5",
|
|
9454
|
+
onClick: () => {
|
|
9455
|
+
setConfirmUnlink({ provider: props.provider, providerName: info.name, externalId: props.externalId });
|
|
9456
|
+
setPage("unlink-provider" /* UNLINK_PROVIDER */);
|
|
9457
|
+
},
|
|
9458
|
+
children: /* @__PURE__ */ jsx46(Trash2, { className: "w-4 h-4 text-[var(--l-pass-bg-error)]" })
|
|
9459
|
+
}
|
|
9460
|
+
)
|
|
9461
|
+
] })
|
|
9462
|
+
] });
|
|
9463
|
+
}
|
|
9464
|
+
|
|
9465
|
+
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
9466
|
+
import { jsx as jsx47, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
9467
|
+
var POSSIBLE_PROVIDERS = [
|
|
9468
|
+
"email",
|
|
9469
|
+
// 'google',
|
|
9470
|
+
"twitter",
|
|
9471
|
+
"telegram",
|
|
9472
|
+
// 'discord',
|
|
9473
|
+
"passkey",
|
|
9474
|
+
"wallet"
|
|
9475
|
+
];
|
|
9476
|
+
function getConfiguredProviders(config) {
|
|
9477
|
+
return POSSIBLE_PROVIDERS.reduce(
|
|
9478
|
+
(acc, p) => {
|
|
9479
|
+
const isEnabled = config[p]?.enabled;
|
|
9480
|
+
const isSocial = ["twitter", "telegram", "discord", "google"].includes(p);
|
|
9481
|
+
if (!isSocial) acc[p] = isEnabled;
|
|
9482
|
+
config?.social?.providers.filter((sp) => !!sp.enabled).forEach((sp) => {
|
|
9483
|
+
if (sp.id === "X" || sp.id === "x") {
|
|
9484
|
+
acc["twitter"] = true;
|
|
9485
|
+
} else {
|
|
9486
|
+
acc[sp.id.toLowerCase()] = true;
|
|
9487
|
+
}
|
|
9488
|
+
});
|
|
9489
|
+
return acc;
|
|
9490
|
+
},
|
|
9491
|
+
fromPairs(POSSIBLE_PROVIDERS.map((p) => [p, false]))
|
|
9492
|
+
);
|
|
9493
|
+
}
|
|
9494
|
+
function ManageWalletMenu() {
|
|
9495
|
+
const { config } = useLumiaPassportConfig();
|
|
9496
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9497
|
+
const {
|
|
9498
|
+
providerType,
|
|
9499
|
+
linkError,
|
|
9500
|
+
verificationError,
|
|
9501
|
+
emailCodeSentError,
|
|
9502
|
+
setProviderType,
|
|
9503
|
+
setEmail,
|
|
9504
|
+
setEmailStep,
|
|
9505
|
+
setEmailCodeSentError,
|
|
9506
|
+
setEmailCodeExpiresIn,
|
|
9507
|
+
setEmailCode,
|
|
9508
|
+
setLinkError,
|
|
9509
|
+
setVerificationError
|
|
9510
|
+
} = useManageWalletStore();
|
|
9511
|
+
const configuredProviders = getConfiguredProviders(config);
|
|
9512
|
+
const { data: providers = [], isFetching: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9513
|
+
const renderProviders = useMemo2(() => {
|
|
9514
|
+
const usedProviders = fromPairs(providers.map((p) => [p.provider, true]));
|
|
9515
|
+
const used = [];
|
|
9516
|
+
const unused = [];
|
|
9517
|
+
POSSIBLE_PROVIDERS.forEach((provider, providerIdx) => {
|
|
9518
|
+
if (!configuredProviders[provider]) return null;
|
|
9519
|
+
const Icon = PROVIDERS_META2[provider].icon;
|
|
9520
|
+
if (usedProviders[provider]) {
|
|
9521
|
+
used.push(
|
|
9522
|
+
/* @__PURE__ */ jsx47(ProviderCard, { ...providers.find((p) => p.provider === provider) }, `${provider}-${providerIdx}`)
|
|
9523
|
+
);
|
|
9524
|
+
} else {
|
|
9525
|
+
unused.push(
|
|
9526
|
+
/* @__PURE__ */ jsxs36(
|
|
9527
|
+
Button,
|
|
9528
|
+
{
|
|
9529
|
+
variant: "default",
|
|
9530
|
+
size: "medium",
|
|
9531
|
+
className: "w-full",
|
|
9532
|
+
onClick: () => {
|
|
9533
|
+
switch (provider) {
|
|
9534
|
+
case "email":
|
|
9535
|
+
setEmail("");
|
|
9536
|
+
setEmailCode("");
|
|
9537
|
+
setEmailCodeSentError("");
|
|
9538
|
+
setEmailCodeExpiresIn(0);
|
|
9539
|
+
setEmailStep("input");
|
|
9540
|
+
setProviderType(provider);
|
|
9541
|
+
break;
|
|
9542
|
+
case "twitter":
|
|
9543
|
+
setProviderType("social");
|
|
9544
|
+
break;
|
|
9545
|
+
default:
|
|
9546
|
+
setProviderType(provider);
|
|
9547
|
+
break;
|
|
9548
|
+
}
|
|
9549
|
+
},
|
|
9550
|
+
children: [
|
|
9551
|
+
/* @__PURE__ */ jsx47(Icon, { className: "w-4 h-4" }),
|
|
9552
|
+
`Add ${provider.toUpperCase()}`
|
|
9553
|
+
]
|
|
9554
|
+
},
|
|
9555
|
+
`${provider}-${providerIdx}`
|
|
9556
|
+
)
|
|
9557
|
+
);
|
|
9558
|
+
}
|
|
9559
|
+
});
|
|
9560
|
+
return [...used, ...unused];
|
|
9561
|
+
}, [providers, configuredProviders]);
|
|
9467
9562
|
useLinkTelegram();
|
|
9468
9563
|
useLinkSocial();
|
|
9469
|
-
|
|
9470
|
-
|
|
9471
|
-
|
|
9564
|
+
const showCurrentProviders = !isProvidersLoading && !providersError && (providerType !== "email" && providerType !== "passkey" || providerType === null);
|
|
9565
|
+
const showExtraProvidersUi = !isProvidersLoading && !providersError && (providerType === "email" || providerType === "passkey");
|
|
9566
|
+
const combinedError = emailCodeSentError || linkError || verificationError || null;
|
|
9567
|
+
return /* @__PURE__ */ jsxs36("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9568
|
+
/* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9569
|
+
/* @__PURE__ */ jsx47(
|
|
9472
9570
|
Button,
|
|
9473
9571
|
{
|
|
9474
9572
|
variant: "ghost",
|
|
9475
9573
|
size: "icon",
|
|
9476
9574
|
title: "Back",
|
|
9477
9575
|
onClick: () => {
|
|
9478
|
-
if (providerType) {
|
|
9479
|
-
setProviderType(null);
|
|
9480
|
-
setEmailCodeSent(false);
|
|
9576
|
+
if (providerType === "email") {
|
|
9481
9577
|
setEmail("");
|
|
9482
9578
|
setEmailCode("");
|
|
9483
|
-
|
|
9484
|
-
|
|
9485
|
-
|
|
9579
|
+
setEmailStep("input");
|
|
9580
|
+
setEmailCodeSentError("");
|
|
9581
|
+
setEmailCodeExpiresIn(0);
|
|
9582
|
+
setVerificationError("");
|
|
9486
9583
|
}
|
|
9584
|
+
setLinkError("");
|
|
9585
|
+
if (!providerType) setPage("settings" /* SETTINGS */);
|
|
9586
|
+
setProviderType(null);
|
|
9487
9587
|
},
|
|
9488
|
-
children: /* @__PURE__ */
|
|
9588
|
+
children: /* @__PURE__ */ jsx47(ArrowLeft7, { className: "h-4 w-4" })
|
|
9489
9589
|
}
|
|
9490
9590
|
),
|
|
9491
|
-
/* @__PURE__ */
|
|
9591
|
+
/* @__PURE__ */ jsx47("span", { className: "text-xl font-semibold", children: "Profiles" })
|
|
9492
9592
|
] }),
|
|
9493
|
-
|
|
9494
|
-
|
|
9495
|
-
|
|
9496
|
-
/* @__PURE__ */
|
|
9497
|
-
/* @__PURE__ */ jsx46(
|
|
9498
|
-
VerificationCodeInput,
|
|
9499
|
-
{
|
|
9500
|
-
onVerifyCode: handleVerifyCode,
|
|
9501
|
-
onResendCode: () => sendVerificationCode(email),
|
|
9502
|
-
isLoading: linkIsLoading,
|
|
9503
|
-
expiresIn: emailCodeExpiresIn,
|
|
9504
|
-
error: verificationError
|
|
9505
|
-
}
|
|
9506
|
-
)
|
|
9507
|
-
] }),
|
|
9508
|
-
providerType === "passkey" && /* @__PURE__ */ jsxs36("div", { className: "space-y-3", children: [
|
|
9509
|
-
/* @__PURE__ */ jsx46("div", { className: "p-3 rounded-xl text-sm bg-blue-50 border border-blue-200 text-blue-700", children: "Link a passkey to your account using WebAuth. Your device may let you choose an existing passkey; otherwise a new one will be created." }),
|
|
9510
|
-
/* @__PURE__ */ jsxs36(
|
|
9511
|
-
Button,
|
|
9512
|
-
{
|
|
9513
|
-
className: "w-full",
|
|
9514
|
-
size: "large",
|
|
9515
|
-
disabled: linkIsLoading,
|
|
9516
|
-
onClick: async () => {
|
|
9517
|
-
setLinkError("");
|
|
9518
|
-
setLinkIsLoading(true);
|
|
9519
|
-
try {
|
|
9520
|
-
await linkPasskeyWithWebAuthn({
|
|
9521
|
-
authenticatorSelection: {
|
|
9522
|
-
authenticatorAttachment: "platform",
|
|
9523
|
-
residentKey: "preferred",
|
|
9524
|
-
userVerification: "preferred"
|
|
9525
|
-
}
|
|
9526
|
-
});
|
|
9527
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, walletAddress] });
|
|
9528
|
-
try {
|
|
9529
|
-
callbacks?.onLumiaPassportUpdate?.({
|
|
9530
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, walletAddress])
|
|
9531
|
-
});
|
|
9532
|
-
notifyProvidersUpdate?.();
|
|
9533
|
-
} catch {
|
|
9534
|
-
}
|
|
9535
|
-
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9536
|
-
setProviderType(null);
|
|
9537
|
-
} catch (e) {
|
|
9538
|
-
const msg = e?.message || "Failed to link passkey";
|
|
9539
|
-
setLinkError(normalizePasskeyLinkError(msg));
|
|
9540
|
-
} finally {
|
|
9541
|
-
setLinkIsLoading(false);
|
|
9542
|
-
}
|
|
9543
|
-
},
|
|
9544
|
-
children: [
|
|
9545
|
-
/* @__PURE__ */ jsx46(Key6, { className: "w-4 h-4" }),
|
|
9546
|
-
linkIsLoading ? "Linking\u2026" : "Create on This Device"
|
|
9547
|
-
]
|
|
9548
|
-
}
|
|
9549
|
-
),
|
|
9550
|
-
/* @__PURE__ */ jsxs36(
|
|
9551
|
-
Button,
|
|
9552
|
-
{
|
|
9553
|
-
className: "w-full",
|
|
9554
|
-
variant: "outline",
|
|
9555
|
-
size: "large",
|
|
9556
|
-
disabled: linkIsLoading,
|
|
9557
|
-
onClick: async () => {
|
|
9558
|
-
setLinkError("");
|
|
9559
|
-
setLinkIsLoading(true);
|
|
9560
|
-
try {
|
|
9561
|
-
await linkPasskeyWithWebAuthn({
|
|
9562
|
-
authenticatorSelection: {
|
|
9563
|
-
authenticatorAttachment: "cross-platform",
|
|
9564
|
-
residentKey: "preferred",
|
|
9565
|
-
userVerification: "preferred"
|
|
9566
|
-
}
|
|
9567
|
-
});
|
|
9568
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, walletAddress] });
|
|
9569
|
-
try {
|
|
9570
|
-
callbacks?.onLumiaPassportUpdate?.({
|
|
9571
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, walletAddress])
|
|
9572
|
-
});
|
|
9573
|
-
notifyProvidersUpdate?.();
|
|
9574
|
-
} catch {
|
|
9575
|
-
}
|
|
9576
|
-
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9577
|
-
setProviderType(null);
|
|
9578
|
-
} catch (e) {
|
|
9579
|
-
const msg = e?.message || "Failed to link passkey";
|
|
9580
|
-
setLinkError(normalizePasskeyLinkError(msg));
|
|
9581
|
-
} finally {
|
|
9582
|
-
setLinkIsLoading(false);
|
|
9583
|
-
}
|
|
9584
|
-
},
|
|
9585
|
-
children: [
|
|
9586
|
-
/* @__PURE__ */ jsx46(Key6, { className: "w-4 h-4" }),
|
|
9587
|
-
"Create on Security Key"
|
|
9588
|
-
]
|
|
9589
|
-
}
|
|
9590
|
-
),
|
|
9591
|
-
linkError && /* @__PURE__ */ jsx46("div", { className: "p-3 rounded text-sm break-words whitespace-pre-wrap bg-red-50 border border-red-200 text-red-700", children: linkError })
|
|
9593
|
+
/* @__PURE__ */ jsxs36(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9594
|
+
providersError && /* @__PURE__ */ jsxs36(Highlight, { type: "error", className: "flex items-start gap-[var(--l-pass-gap)] break-words whitespace-pre-wrap", children: [
|
|
9595
|
+
/* @__PURE__ */ jsx47(AlertTriangle3, { className: "w-4 h-4 shrink-0" }),
|
|
9596
|
+
/* @__PURE__ */ jsx47("span", { className: "block", children: providersError.message })
|
|
9592
9597
|
] }),
|
|
9593
|
-
|
|
9598
|
+
isProvidersLoading && /* @__PURE__ */ jsx47("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx47(Loader7, { className: "w-5 h-5 animate-spin" }) }),
|
|
9599
|
+
/* @__PURE__ */ jsx47(EmailNotConnectedWarning, {}),
|
|
9600
|
+
showCurrentProviders && renderProviders.map((node) => node),
|
|
9601
|
+
showExtraProvidersUi && /* @__PURE__ */ jsx47(AddProvider, {}),
|
|
9602
|
+
combinedError && /* @__PURE__ */ jsx47(Highlight, { type: "error", children: /* @__PURE__ */ jsx47("span", { children: combinedError }) })
|
|
9594
9603
|
] })
|
|
9595
9604
|
] });
|
|
9596
9605
|
}
|
|
9597
9606
|
|
|
9598
9607
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9599
|
-
import { useMutation as
|
|
9608
|
+
import { useMutation as useMutation10, useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
9600
9609
|
import { Key as Key7, Loader as Loader8 } from "lucide-react";
|
|
9601
9610
|
import { useState as useState8 } from "react";
|
|
9602
9611
|
init_auth();
|
|
9603
|
-
import { jsx as
|
|
9612
|
+
import { jsx as jsx48, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
9604
9613
|
function UnlinkProviderMenu() {
|
|
9605
|
-
const qc =
|
|
9614
|
+
const qc = useQueryClient7();
|
|
9606
9615
|
const walletAddress = useLumiaPassportSession().address;
|
|
9607
9616
|
const { callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
9608
|
-
const
|
|
9609
|
-
const { confirmUnlink, setConfirmUnlink } = useManageWalletStore();
|
|
9617
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9618
|
+
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9610
9619
|
const [confirmInput, setConfirmInput] = useState8("");
|
|
9611
|
-
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } =
|
|
9620
|
+
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = useMutation10({
|
|
9612
9621
|
mutationFn: async () => {
|
|
9613
9622
|
if (!confirmUnlink) {
|
|
9614
9623
|
throw new Error("No provider to unlink");
|
|
@@ -9627,16 +9636,16 @@ function UnlinkProviderMenu() {
|
|
|
9627
9636
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9628
9637
|
},
|
|
9629
9638
|
onError: (error) => {
|
|
9630
|
-
|
|
9639
|
+
setLinkError(error?.message || "Failed to unlink provider");
|
|
9631
9640
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9632
9641
|
}
|
|
9633
9642
|
});
|
|
9634
9643
|
return /* @__PURE__ */ jsxs37("div", { className: "w-full p-5 flex flex-col gap-4", children: [
|
|
9635
|
-
/* @__PURE__ */
|
|
9644
|
+
/* @__PURE__ */ jsx48("div", { className: "text-xl font-semibold text-[var(--l-pass-error)]", children: "This action cannot be undone." }),
|
|
9636
9645
|
confirmUnlink && /* @__PURE__ */ jsxs37("div", { className: "w-full flex flex-col gap-2", children: [
|
|
9637
|
-
/* @__PURE__ */
|
|
9638
|
-
/* @__PURE__ */
|
|
9639
|
-
/* @__PURE__ */
|
|
9646
|
+
/* @__PURE__ */ jsx48("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Type the provider ID to confirm removal:" }),
|
|
9647
|
+
/* @__PURE__ */ jsx48("div", { className: "text-sm font-mono break-all", children: confirmUnlink.externalId }),
|
|
9648
|
+
/* @__PURE__ */ jsx48(
|
|
9640
9649
|
Input,
|
|
9641
9650
|
{
|
|
9642
9651
|
Icon: Key7,
|
|
@@ -9647,7 +9656,7 @@ function UnlinkProviderMenu() {
|
|
|
9647
9656
|
)
|
|
9648
9657
|
] }),
|
|
9649
9658
|
/* @__PURE__ */ jsxs37("div", { className: "w-full flex justify-between gap-2", children: [
|
|
9650
|
-
/* @__PURE__ */
|
|
9659
|
+
/* @__PURE__ */ jsx48(
|
|
9651
9660
|
Button,
|
|
9652
9661
|
{
|
|
9653
9662
|
size: "large",
|
|
@@ -9670,7 +9679,7 @@ function UnlinkProviderMenu() {
|
|
|
9670
9679
|
disabled: !!isProviderUnlinking || !confirmUnlink || confirmInput !== confirmUnlink.externalId,
|
|
9671
9680
|
className: "w-full flex-1",
|
|
9672
9681
|
children: [
|
|
9673
|
-
isProviderUnlinking && /* @__PURE__ */
|
|
9682
|
+
isProviderUnlinking && /* @__PURE__ */ jsx48(Loader8, { className: "animate-spin h-4 w-4" }),
|
|
9674
9683
|
isProviderUnlinking ? "Removing\u2026" : "Remove"
|
|
9675
9684
|
]
|
|
9676
9685
|
}
|
|
@@ -9684,7 +9693,7 @@ init_auth();
|
|
|
9684
9693
|
init_keyshare();
|
|
9685
9694
|
import {
|
|
9686
9695
|
AlertTriangle as AlertTriangle4,
|
|
9687
|
-
ArrowLeft as
|
|
9696
|
+
ArrowLeft as ArrowLeft8,
|
|
9688
9697
|
CheckCircle2 as CheckCircle24,
|
|
9689
9698
|
Cloud as Cloud2,
|
|
9690
9699
|
HardDrive,
|
|
@@ -9697,7 +9706,7 @@ import {
|
|
|
9697
9706
|
} from "lucide-react";
|
|
9698
9707
|
import { useCallback as useCallback10, useEffect as useEffect18, useState as useState9 } from "react";
|
|
9699
9708
|
init_vaultClient();
|
|
9700
|
-
import { jsx as
|
|
9709
|
+
import { jsx as jsx49, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
9701
9710
|
function SecurityMenu() {
|
|
9702
9711
|
const page = useLayoutDataStore((st) => st.page);
|
|
9703
9712
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -9762,18 +9771,18 @@ function SecurityMenu() {
|
|
|
9762
9771
|
return null;
|
|
9763
9772
|
};
|
|
9764
9773
|
return /* @__PURE__ */ jsxs38("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
9765
|
-
/* @__PURE__ */
|
|
9766
|
-
/* @__PURE__ */
|
|
9774
|
+
/* @__PURE__ */ jsx49("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-2", children: [
|
|
9775
|
+
/* @__PURE__ */ jsx49(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx49(ArrowLeft8, { className: "h-4 w-4" }) }),
|
|
9767
9776
|
/* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
9768
|
-
/* @__PURE__ */
|
|
9769
|
-
/* @__PURE__ */
|
|
9777
|
+
/* @__PURE__ */ jsx49("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
9778
|
+
/* @__PURE__ */ jsx49(Button, { variant: "ghost", size: "icon", title: "Refresh", onClick: fetchRecovery, children: isRefreshing ? /* @__PURE__ */ jsx49(Loader9, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx49(RefreshCw, { className: "h-4 w-4" }) })
|
|
9770
9779
|
] })
|
|
9771
9780
|
] }) }),
|
|
9772
9781
|
/* @__PURE__ */ jsxs38("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
9773
9782
|
/* @__PURE__ */ jsxs38("div", { className: "space-y-2 text-center", children: [
|
|
9774
9783
|
/* @__PURE__ */ jsxs38("div", { className: "flex items-center justify-center gap-2", children: [
|
|
9775
|
-
/* @__PURE__ */
|
|
9776
|
-
/* @__PURE__ */
|
|
9784
|
+
/* @__PURE__ */ jsx49(Cloud2, { className: "h-4 w-4" }),
|
|
9785
|
+
/* @__PURE__ */ jsx49("span", { className: "text-sm font-medium", children: "Server" })
|
|
9777
9786
|
] }),
|
|
9778
9787
|
/* @__PURE__ */ jsxs38(
|
|
9779
9788
|
"span",
|
|
@@ -9783,7 +9792,7 @@ function SecurityMenu() {
|
|
|
9783
9792
|
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9784
9793
|
),
|
|
9785
9794
|
children: [
|
|
9786
|
-
serverHasKeyshare ? /* @__PURE__ */
|
|
9795
|
+
serverHasKeyshare ? /* @__PURE__ */ jsx49(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx49(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9787
9796
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
9788
9797
|
]
|
|
9789
9798
|
}
|
|
@@ -9791,8 +9800,8 @@ function SecurityMenu() {
|
|
|
9791
9800
|
] }),
|
|
9792
9801
|
/* @__PURE__ */ jsxs38("div", { className: "space-y-2 text-center", children: [
|
|
9793
9802
|
/* @__PURE__ */ jsxs38("div", { className: "flex items-center justify-center gap-2", children: [
|
|
9794
|
-
/* @__PURE__ */
|
|
9795
|
-
/* @__PURE__ */
|
|
9803
|
+
/* @__PURE__ */ jsx49(Laptop, { className: "h-4 w-4" }),
|
|
9804
|
+
/* @__PURE__ */ jsx49("span", { className: "text-sm font-medium", children: "Local" })
|
|
9796
9805
|
] }),
|
|
9797
9806
|
/* @__PURE__ */ jsxs38(
|
|
9798
9807
|
"span",
|
|
@@ -9802,7 +9811,7 @@ function SecurityMenu() {
|
|
|
9802
9811
|
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9803
9812
|
),
|
|
9804
9813
|
children: [
|
|
9805
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */
|
|
9814
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ jsx49(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx49(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9806
9815
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
9807
9816
|
]
|
|
9808
9817
|
}
|
|
@@ -9810,8 +9819,8 @@ function SecurityMenu() {
|
|
|
9810
9819
|
] }),
|
|
9811
9820
|
/* @__PURE__ */ jsxs38("div", { className: "space-y-2 text-center", children: [
|
|
9812
9821
|
/* @__PURE__ */ jsxs38("div", { className: "flex items-center justify-center gap-2", children: [
|
|
9813
|
-
/* @__PURE__ */
|
|
9814
|
-
/* @__PURE__ */
|
|
9822
|
+
/* @__PURE__ */ jsx49(Shield, { className: "h-4 w-4" }),
|
|
9823
|
+
/* @__PURE__ */ jsx49("span", { className: "text-sm font-medium", children: "Vault" })
|
|
9815
9824
|
] }),
|
|
9816
9825
|
/* @__PURE__ */ jsxs38(
|
|
9817
9826
|
"span",
|
|
@@ -9821,7 +9830,7 @@ function SecurityMenu() {
|
|
|
9821
9830
|
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9822
9831
|
),
|
|
9823
9832
|
children: [
|
|
9824
|
-
hasServerBackup ? /* @__PURE__ */
|
|
9833
|
+
hasServerBackup ? /* @__PURE__ */ jsx49(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx49(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9825
9834
|
hasServerBackup ? "Ready" : "None"
|
|
9826
9835
|
]
|
|
9827
9836
|
}
|
|
@@ -9831,42 +9840,42 @@ function SecurityMenu() {
|
|
|
9831
9840
|
/* @__PURE__ */ jsxs38(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
9832
9841
|
localInfo?.hasKeyshare && /* @__PURE__ */ jsxs38("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
9833
9842
|
localInfo.ownerAddress && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9834
|
-
/* @__PURE__ */
|
|
9835
|
-
/* @__PURE__ */
|
|
9843
|
+
/* @__PURE__ */ jsx49("span", { children: "Owner: " }),
|
|
9844
|
+
/* @__PURE__ */ jsx49("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
9836
9845
|
] }),
|
|
9837
9846
|
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9838
|
-
/* @__PURE__ */
|
|
9839
|
-
/* @__PURE__ */
|
|
9847
|
+
/* @__PURE__ */ jsx49("span", { children: "Size: " }),
|
|
9848
|
+
/* @__PURE__ */ jsx49("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
9840
9849
|
] }),
|
|
9841
9850
|
localInfo.sessionId && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9842
|
-
/* @__PURE__ */
|
|
9843
|
-
/* @__PURE__ */
|
|
9851
|
+
/* @__PURE__ */ jsx49("span", { children: "Session: " }),
|
|
9852
|
+
/* @__PURE__ */ jsx49("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
9844
9853
|
] })
|
|
9845
9854
|
] }),
|
|
9846
9855
|
/* @__PURE__ */ jsxs38("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
9847
9856
|
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9848
|
-
/* @__PURE__ */
|
|
9857
|
+
/* @__PURE__ */ jsx49(Server3, { className: "h-2.5 w-2.5" }),
|
|
9849
9858
|
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9850
9859
|
"Server: ",
|
|
9851
9860
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
9852
9861
|
] })
|
|
9853
9862
|
] }),
|
|
9854
9863
|
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9855
|
-
/* @__PURE__ */
|
|
9864
|
+
/* @__PURE__ */ jsx49(Server3, { className: "h-2.5 w-2.5" }),
|
|
9856
9865
|
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9857
9866
|
"Server: ",
|
|
9858
9867
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
9859
9868
|
] })
|
|
9860
9869
|
] }),
|
|
9861
9870
|
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9862
|
-
/* @__PURE__ */
|
|
9871
|
+
/* @__PURE__ */ jsx49(Cloud2, { className: "h-2.5 w-2.5" }),
|
|
9863
9872
|
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9864
9873
|
"Cloud: ",
|
|
9865
9874
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
9866
9875
|
] })
|
|
9867
9876
|
] }),
|
|
9868
9877
|
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9869
|
-
/* @__PURE__ */
|
|
9878
|
+
/* @__PURE__ */ jsx49(HardDrive, { className: "h-2.5 w-2.5" }),
|
|
9870
9879
|
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9871
9880
|
"Local: ",
|
|
9872
9881
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
@@ -9874,7 +9883,7 @@ function SecurityMenu() {
|
|
|
9874
9883
|
] })
|
|
9875
9884
|
] }),
|
|
9876
9885
|
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ jsxs38("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
9877
|
-
/* @__PURE__ */
|
|
9886
|
+
/* @__PURE__ */ jsx49("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: "Device Information:" }),
|
|
9878
9887
|
recoveryCreatedAt && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9879
9888
|
"Created: ",
|
|
9880
9889
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
@@ -9898,24 +9907,24 @@ function SecurityMenu() {
|
|
|
9898
9907
|
] }),
|
|
9899
9908
|
recoveryDeviceId && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9900
9909
|
"Device ID: ",
|
|
9901
|
-
/* @__PURE__ */
|
|
9910
|
+
/* @__PURE__ */ jsx49("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
9902
9911
|
] })
|
|
9903
9912
|
] }),
|
|
9904
9913
|
trustedApps.length > 0 && /* @__PURE__ */ jsxs38("div", { className: "w-full space-y-2", children: [
|
|
9905
|
-
/* @__PURE__ */
|
|
9906
|
-
/* @__PURE__ */
|
|
9914
|
+
/* @__PURE__ */ jsx49("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
9915
|
+
/* @__PURE__ */ jsx49("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs38(
|
|
9907
9916
|
"div",
|
|
9908
9917
|
{
|
|
9909
9918
|
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
9910
9919
|
children: [
|
|
9911
9920
|
/* @__PURE__ */ jsxs38("div", { className: "flex-1 min-w-0", children: [
|
|
9912
|
-
/* @__PURE__ */
|
|
9921
|
+
/* @__PURE__ */ jsx49("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
9913
9922
|
/* @__PURE__ */ jsxs38("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
9914
9923
|
"Trusted: ",
|
|
9915
9924
|
new Date(app.trustedAt).toLocaleDateString()
|
|
9916
9925
|
] })
|
|
9917
9926
|
] }),
|
|
9918
|
-
/* @__PURE__ */
|
|
9927
|
+
/* @__PURE__ */ jsx49(
|
|
9919
9928
|
Button,
|
|
9920
9929
|
{
|
|
9921
9930
|
variant: "ghost",
|
|
@@ -9927,7 +9936,7 @@ function SecurityMenu() {
|
|
|
9927
9936
|
origin: app.origin,
|
|
9928
9937
|
hostname: new URL(app.origin).hostname
|
|
9929
9938
|
}),
|
|
9930
|
-
children: /* @__PURE__ */
|
|
9939
|
+
children: /* @__PURE__ */ jsx49(Trash22, { className: "h-3 w-3" })
|
|
9931
9940
|
}
|
|
9932
9941
|
)
|
|
9933
9942
|
]
|
|
@@ -9940,7 +9949,7 @@ function SecurityMenu() {
|
|
|
9940
9949
|
}
|
|
9941
9950
|
|
|
9942
9951
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
9943
|
-
import { AlertCircle as AlertCircle3, ArrowLeft as
|
|
9952
|
+
import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft9, CheckCircle2 as CheckCircle25, Loader as Loader10, Wallet } from "lucide-react";
|
|
9944
9953
|
import { useEffect as useEffect19, useState as useState11 } from "react";
|
|
9945
9954
|
import { isAddress as isAddress2 } from "viem";
|
|
9946
9955
|
import { useBalance as useBalance2 } from "wagmi";
|
|
@@ -10168,7 +10177,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10168
10177
|
|
|
10169
10178
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10170
10179
|
init_base();
|
|
10171
|
-
import { jsx as
|
|
10180
|
+
import { Fragment as Fragment8, jsx as jsx50, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
10172
10181
|
function SendLumiaMenu() {
|
|
10173
10182
|
const page = useLayoutDataStore((st) => st.page);
|
|
10174
10183
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10241,120 +10250,118 @@ function SendLumiaMenu() {
|
|
|
10241
10250
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
10242
10251
|
setAmount(maxAmount.toFixed(6));
|
|
10243
10252
|
};
|
|
10244
|
-
return /* @__PURE__ */ jsxs39("div", { className: "w-full p-
|
|
10245
|
-
/* @__PURE__ */
|
|
10246
|
-
txStep === "input" && /* @__PURE__ */
|
|
10247
|
-
/* @__PURE__ */
|
|
10248
|
-
] })
|
|
10249
|
-
/* @__PURE__ */ jsxs39(
|
|
10250
|
-
|
|
10251
|
-
/* @__PURE__ */
|
|
10252
|
-
|
|
10253
|
-
|
|
10253
|
+
return /* @__PURE__ */ jsxs39("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10254
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10255
|
+
txStep === "input" && /* @__PURE__ */ jsx50(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx50(ArrowLeft9, { className: "h-4 w-4" }) }),
|
|
10256
|
+
/* @__PURE__ */ jsx50("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
10257
|
+
] }),
|
|
10258
|
+
txStep === "input" && /* @__PURE__ */ jsxs39(Fragment8, { children: [
|
|
10259
|
+
/* @__PURE__ */ jsxs39("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10260
|
+
/* @__PURE__ */ jsx50("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient Address" }),
|
|
10261
|
+
/* @__PURE__ */ jsx50(
|
|
10262
|
+
Input,
|
|
10263
|
+
{
|
|
10264
|
+
Icon: Wallet,
|
|
10265
|
+
type: "text",
|
|
10266
|
+
value: recipient,
|
|
10267
|
+
onChange: (e) => setRecipient(e.target.value),
|
|
10268
|
+
placeholder: "0x..."
|
|
10269
|
+
}
|
|
10270
|
+
)
|
|
10271
|
+
] }),
|
|
10272
|
+
/* @__PURE__ */ jsxs39("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10273
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex justify-between items-center", children: [
|
|
10274
|
+
/* @__PURE__ */ jsx50("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: "Amount" }),
|
|
10275
|
+
/* @__PURE__ */ jsxs39("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
10276
|
+
"Balance: ",
|
|
10277
|
+
balance.toFixed(4),
|
|
10278
|
+
" LUMIA"
|
|
10279
|
+
] })
|
|
10280
|
+
] }),
|
|
10281
|
+
/* @__PURE__ */ jsxs39("div", { className: "w-full relative", children: [
|
|
10282
|
+
/* @__PURE__ */ jsx50(
|
|
10254
10283
|
Input,
|
|
10255
10284
|
{
|
|
10256
|
-
Icon:
|
|
10257
|
-
type: "
|
|
10258
|
-
value:
|
|
10259
|
-
onChange: (e) =>
|
|
10260
|
-
placeholder: "
|
|
10285
|
+
Icon: LumiaIcon,
|
|
10286
|
+
type: "number",
|
|
10287
|
+
value: amount,
|
|
10288
|
+
onChange: (e) => setAmount(e.target.value),
|
|
10289
|
+
placeholder: "0.0",
|
|
10290
|
+
step: "0.000001"
|
|
10291
|
+
}
|
|
10292
|
+
),
|
|
10293
|
+
/* @__PURE__ */ jsx50(
|
|
10294
|
+
Button,
|
|
10295
|
+
{
|
|
10296
|
+
onClick: handleMaxAmount,
|
|
10297
|
+
variant: "ghost",
|
|
10298
|
+
size: "medium",
|
|
10299
|
+
style: { transform: "translateY(-50%)" },
|
|
10300
|
+
className: "absolute right-2 top-1/2",
|
|
10301
|
+
children: "MAX"
|
|
10261
10302
|
}
|
|
10262
10303
|
)
|
|
10263
|
-
] })
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
|
|
10267
|
-
|
|
10268
|
-
|
|
10269
|
-
|
|
10304
|
+
] })
|
|
10305
|
+
] }),
|
|
10306
|
+
(validationError || error) && /* @__PURE__ */ jsxs39("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
10307
|
+
/* @__PURE__ */ jsx50(AlertCircle3, { className: "h-4 w-4" }),
|
|
10308
|
+
/* @__PURE__ */ jsx50("span", { className: "text-sm", children: validationError || error })
|
|
10309
|
+
] }),
|
|
10310
|
+
/* @__PURE__ */ jsx50(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
10311
|
+
] }),
|
|
10312
|
+
txStep === "confirm" && /* @__PURE__ */ jsxs39(Fragment8, { children: [
|
|
10313
|
+
/* @__PURE__ */ jsxs39("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
10314
|
+
/* @__PURE__ */ jsx50("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
10315
|
+
/* @__PURE__ */ jsxs39("div", { className: "space-y-2 text-sm", children: [
|
|
10316
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex justify-between", children: [
|
|
10317
|
+
/* @__PURE__ */ jsx50("span", { children: "To:" }),
|
|
10318
|
+
/* @__PURE__ */ jsx50("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
10319
|
+
] }),
|
|
10320
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex justify-between", children: [
|
|
10321
|
+
/* @__PURE__ */ jsx50("span", { children: "Amount:" }),
|
|
10322
|
+
/* @__PURE__ */ jsxs39("span", { className: `font-semibold`, children: [
|
|
10323
|
+
amount,
|
|
10270
10324
|
" LUMIA"
|
|
10271
10325
|
] })
|
|
10272
10326
|
] }),
|
|
10273
|
-
/* @__PURE__ */ jsxs39("div", { className: "
|
|
10274
|
-
/* @__PURE__ */
|
|
10275
|
-
|
|
10276
|
-
{
|
|
10277
|
-
Icon: LumiaIcon,
|
|
10278
|
-
type: "number",
|
|
10279
|
-
value: amount,
|
|
10280
|
-
onChange: (e) => setAmount(e.target.value),
|
|
10281
|
-
placeholder: "0.0",
|
|
10282
|
-
step: "0.000001"
|
|
10283
|
-
}
|
|
10284
|
-
),
|
|
10285
|
-
/* @__PURE__ */ jsx49(
|
|
10286
|
-
Button,
|
|
10287
|
-
{
|
|
10288
|
-
onClick: handleMaxAmount,
|
|
10289
|
-
variant: "ghost",
|
|
10290
|
-
size: "medium",
|
|
10291
|
-
style: { transform: "translateY(-50%)" },
|
|
10292
|
-
className: "absolute right-2 top-1/2",
|
|
10293
|
-
children: "MAX"
|
|
10294
|
-
}
|
|
10295
|
-
)
|
|
10296
|
-
] })
|
|
10297
|
-
] }),
|
|
10298
|
-
(validationError || error) && /* @__PURE__ */ jsxs39("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)] border border-[var(--l-pass-error)]", children: [
|
|
10299
|
-
/* @__PURE__ */ jsx49(AlertCircle3, { className: "h-4 w-4" }),
|
|
10300
|
-
/* @__PURE__ */ jsx49("span", { className: "text-sm", children: validationError || error })
|
|
10301
|
-
] }),
|
|
10302
|
-
/* @__PURE__ */ jsx49(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
10303
|
-
] }),
|
|
10304
|
-
txStep === "confirm" && /* @__PURE__ */ jsxs39("div", { className: "space-y-4", children: [
|
|
10305
|
-
/* @__PURE__ */ jsxs39("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
10306
|
-
/* @__PURE__ */ jsx49("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
10307
|
-
/* @__PURE__ */ jsxs39("div", { className: "space-y-2 text-sm", children: [
|
|
10308
|
-
/* @__PURE__ */ jsxs39("div", { className: "flex justify-between", children: [
|
|
10309
|
-
/* @__PURE__ */ jsx49("span", { children: "To:" }),
|
|
10310
|
-
/* @__PURE__ */ jsx49("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
10311
|
-
] }),
|
|
10312
|
-
/* @__PURE__ */ jsxs39("div", { className: "flex justify-between", children: [
|
|
10313
|
-
/* @__PURE__ */ jsx49("span", { children: "Amount:" }),
|
|
10314
|
-
/* @__PURE__ */ jsxs39("span", { className: `font-semibold`, children: [
|
|
10315
|
-
amount,
|
|
10316
|
-
" LUMIA"
|
|
10317
|
-
] })
|
|
10318
|
-
] }),
|
|
10319
|
-
/* @__PURE__ */ jsxs39("div", { className: "flex justify-between", children: [
|
|
10320
|
-
/* @__PURE__ */ jsx49("span", { children: "Network:" }),
|
|
10321
|
-
/* @__PURE__ */ jsx49("span", { children: "Lumia Beam" })
|
|
10322
|
-
] })
|
|
10323
|
-
] })
|
|
10324
|
-
] }),
|
|
10325
|
-
/* @__PURE__ */ jsxs39("div", { className: "flex gap-2", children: [
|
|
10326
|
-
/* @__PURE__ */ jsx49(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
10327
|
-
/* @__PURE__ */ jsxs39(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
10328
|
-
isLoading && /* @__PURE__ */ jsx49(Loader10, { className: "h-4 w-4 animate-spin" }),
|
|
10329
|
-
"Confirm"
|
|
10327
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex justify-between", children: [
|
|
10328
|
+
/* @__PURE__ */ jsx50("span", { children: "Network:" }),
|
|
10329
|
+
/* @__PURE__ */ jsx50("span", { children: "Lumia Beam" })
|
|
10330
10330
|
] })
|
|
10331
10331
|
] })
|
|
10332
10332
|
] }),
|
|
10333
|
-
|
|
10334
|
-
/* @__PURE__ */
|
|
10335
|
-
/* @__PURE__ */ jsxs39("
|
|
10336
|
-
/* @__PURE__ */
|
|
10337
|
-
|
|
10333
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex gap-2", children: [
|
|
10334
|
+
/* @__PURE__ */ jsx50(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
10335
|
+
/* @__PURE__ */ jsxs39(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
10336
|
+
isLoading && /* @__PURE__ */ jsx50(Loader10, { className: "h-4 w-4 animate-spin" }),
|
|
10337
|
+
"Confirm"
|
|
10338
10338
|
] })
|
|
10339
|
-
] }),
|
|
10340
|
-
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs39("div", { className: "space-y-6", children: [
|
|
10341
|
-
/* @__PURE__ */ jsxs39("div", { className: "text-center py-4", children: [
|
|
10342
|
-
/* @__PURE__ */ jsx49(CheckCircle25, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
10343
|
-
/* @__PURE__ */ jsx49("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
10344
|
-
/* @__PURE__ */ jsx49("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
10345
|
-
] }),
|
|
10346
|
-
/* @__PURE__ */ jsx49(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
10347
10339
|
] })
|
|
10340
|
+
] }),
|
|
10341
|
+
txStep === "pending" && /* @__PURE__ */ jsxs39("div", { className: "py-8 text-center space-y-4", children: [
|
|
10342
|
+
/* @__PURE__ */ jsx50(Loader10, { className: "h-12 w-12 animate-spin mx-auto" }),
|
|
10343
|
+
/* @__PURE__ */ jsxs39("div", { children: [
|
|
10344
|
+
/* @__PURE__ */ jsx50("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
10345
|
+
/* @__PURE__ */ jsx50("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
10346
|
+
] })
|
|
10347
|
+
] }),
|
|
10348
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs39(Fragment8, { children: [
|
|
10349
|
+
/* @__PURE__ */ jsxs39("div", { className: "text-center py-4", children: [
|
|
10350
|
+
/* @__PURE__ */ jsx50(CheckCircle25, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
10351
|
+
/* @__PURE__ */ jsx50("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
10352
|
+
/* @__PURE__ */ jsx50("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
10353
|
+
] }),
|
|
10354
|
+
/* @__PURE__ */ jsx50(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
10348
10355
|
] })
|
|
10349
10356
|
] });
|
|
10350
10357
|
}
|
|
10351
10358
|
|
|
10352
10359
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10353
|
-
import { ArrowLeft as
|
|
10360
|
+
import { ArrowLeft as ArrowLeft10, CheckCircle2 as CheckCircle26, Copy as Copy2, Loader as Loader11 } from "lucide-react";
|
|
10354
10361
|
import QRCode from "qrcode";
|
|
10355
10362
|
import { useEffect as useEffect20, useState as useState12 } from "react";
|
|
10356
10363
|
init_clients();
|
|
10357
|
-
import { Fragment as
|
|
10364
|
+
import { Fragment as Fragment9, jsx as jsx51, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
10358
10365
|
function ReceiveLumiaMenu() {
|
|
10359
10366
|
const page = useLayoutDataStore((st) => st.page);
|
|
10360
10367
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10385,83 +10392,86 @@ function ReceiveLumiaMenu() {
|
|
|
10385
10392
|
console.error("Failed to copy address:", error);
|
|
10386
10393
|
}
|
|
10387
10394
|
};
|
|
10388
|
-
return /* @__PURE__ */ jsxs40(
|
|
10389
|
-
"div",
|
|
10390
|
-
|
|
10391
|
-
className: "
|
|
10392
|
-
|
|
10393
|
-
|
|
10394
|
-
|
|
10395
|
-
|
|
10396
|
-
|
|
10397
|
-
|
|
10398
|
-
|
|
10399
|
-
|
|
10400
|
-
|
|
10401
|
-
|
|
10402
|
-
|
|
10403
|
-
|
|
10404
|
-
|
|
10405
|
-
|
|
10406
|
-
|
|
10407
|
-
|
|
10408
|
-
|
|
10409
|
-
|
|
10410
|
-
/* @__PURE__ */ jsx50(Copy2, { className: "h-4 w-4" }),
|
|
10411
|
-
/* @__PURE__ */ jsx50("span", { children: "Copy Address" })
|
|
10412
|
-
] }) })
|
|
10413
|
-
] }),
|
|
10414
|
-
/* @__PURE__ */ jsxs40("div", { className: "text-center text-sm", children: [
|
|
10415
|
-
/* @__PURE__ */ jsx50("span", { className: "block", children: "Share this address to receive LUMIA tokens." }),
|
|
10416
|
-
/* @__PURE__ */ jsxs40("span", { className: "block mt-1", children: [
|
|
10417
|
-
`Only send LUMIA tokens to this address on`,
|
|
10418
|
-
/* @__PURE__ */ jsx50("br", {}),
|
|
10419
|
-
/* @__PURE__ */ jsx50("strong", { className: "text-[var(--l-pass-info)]", children: `${lumiaBeam.name} network` })
|
|
10420
|
-
] })
|
|
10421
|
-
] })
|
|
10422
|
-
] })
|
|
10423
|
-
]
|
|
10424
|
-
}
|
|
10425
|
-
);
|
|
10395
|
+
return /* @__PURE__ */ jsxs40("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10396
|
+
/* @__PURE__ */ jsxs40("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10397
|
+
/* @__PURE__ */ jsx51(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx51(ArrowLeft10, { className: "h-4 w-4" }) }),
|
|
10398
|
+
/* @__PURE__ */ jsx51("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10399
|
+
] }),
|
|
10400
|
+
/* @__PURE__ */ jsxs40(Highlight, { className: "text-center", type: "warning", children: [
|
|
10401
|
+
/* @__PURE__ */ jsx51("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
10402
|
+
/* @__PURE__ */ jsx51("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
10403
|
+
] }),
|
|
10404
|
+
/* @__PURE__ */ jsx51("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx51("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx51(Loader11, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
10405
|
+
/* @__PURE__ */ jsxs40(Highlight, { type: "info", children: [
|
|
10406
|
+
/* @__PURE__ */ jsx51("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
10407
|
+
/* @__PURE__ */ jsx51(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ jsxs40(Fragment9, { children: [
|
|
10408
|
+
/* @__PURE__ */ jsx51(CheckCircle26, { className: "h-4 w-4" }),
|
|
10409
|
+
/* @__PURE__ */ jsx51("span", { children: "Copied!" })
|
|
10410
|
+
] }) : /* @__PURE__ */ jsxs40(Fragment9, { children: [
|
|
10411
|
+
/* @__PURE__ */ jsx51(Copy2, { className: "h-4 w-4" }),
|
|
10412
|
+
/* @__PURE__ */ jsx51("span", { children: "Copy Address" })
|
|
10413
|
+
] }) })
|
|
10414
|
+
] }),
|
|
10415
|
+
/* @__PURE__ */ jsx51("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx51("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
10416
|
+
] });
|
|
10426
10417
|
}
|
|
10427
10418
|
|
|
10428
10419
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10429
|
-
import { ArrowLeft as
|
|
10420
|
+
import { ArrowLeft as ArrowLeft11 } from "lucide-react";
|
|
10421
|
+
|
|
10422
|
+
// src/internal/components/SettingsMenu/constants.ts
|
|
10423
|
+
import { ArrowLeftRight, DatabaseBackup as DatabaseBackup2, LockKeyhole, UsersRound } from "lucide-react";
|
|
10424
|
+
|
|
10425
|
+
// src/internal/assets/KycIcon.tsx
|
|
10426
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
10427
|
+
function KycIcon(props) {
|
|
10428
|
+
const { width = "24", height = "24", ...rest } = props;
|
|
10429
|
+
return /* @__PURE__ */ jsx52("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx52(
|
|
10430
|
+
"path",
|
|
10431
|
+
{
|
|
10432
|
+
d: "M12 18.5455C10.1727 18.5455 8.625 17.9114 7.35682 16.6432C6.08864 15.375 5.45455 13.8273 5.45455 12C5.45455 10.1727 6.08864 8.625 7.35682 7.35682C8.625 6.08864 10.1727 5.45455 12 5.45455C13.8273 5.45455 15.375 6.08864 16.6432 7.35682C17.9114 8.625 18.5455 10.1727 18.5455 12C18.5455 13.8273 17.9114 15.375 16.6432 16.6432C15.375 17.9114 13.8273 18.5455 12 18.5455ZM12 16.9091C13.3636 16.9091 14.5227 16.4318 15.4773 15.4773C16.4318 14.5227 16.9091 13.3636 16.9091 12C16.9091 11.7682 16.892 11.5398 16.858 11.3148C16.8239 11.0898 16.7727 10.8682 16.7045 10.65C16.5 10.6909 16.2955 10.7216 16.0909 10.742C15.8864 10.7625 15.6818 10.7727 15.4773 10.7727C14.6182 10.7727 13.8 10.6091 13.0227 10.2818C12.2455 9.95455 11.55 9.47727 10.9364 8.85C10.5545 9.62727 10.0295 10.3023 9.36136 10.875C8.69318 11.4477 7.93636 11.8636 7.09091 12.1227C7.13182 13.4591 7.62614 14.5909 8.57386 15.5182C9.52159 16.4455 10.6636 16.9091 12 16.9091ZM7.41818 10.2409C8.01818 9.92727 8.475 9.5625 8.78864 9.14659C9.10227 8.73068 9.40909 8.23636 9.70909 7.66364C9.19091 7.93636 8.73409 8.29432 8.33864 8.7375C7.94318 9.18068 7.63636 9.68182 7.41818 10.2409ZM9.95455 13.6364C9.72273 13.6364 9.52841 13.558 9.37159 13.4011C9.21477 13.2443 9.13636 13.05 9.13636 12.8182C9.13636 12.5864 9.21477 12.392 9.37159 12.2352C9.52841 12.0784 9.72273 12 9.95455 12C10.1864 12 10.3807 12.0784 10.5375 12.2352C10.6943 12.392 10.7727 12.5864 10.7727 12.8182C10.7727 13.05 10.6943 13.2443 10.5375 13.4011C10.3807 13.558 10.1864 13.6364 9.95455 13.6364ZM15.4773 9.13636H15.7227C15.8045 9.13636 15.8864 9.12955 15.9682 9.11591C15.5182 8.50227 14.9489 8.01136 14.2602 7.64318C13.5716 7.275 12.8182 7.09091 12 7.09091H11.7545C11.6727 7.09091 11.5977 7.09773 11.5295 7.11136C12.0614 7.725 12.6239 8.21591 13.217 8.58409C13.8102 8.95227 14.5636 9.13636 15.4773 9.13636ZM14.0455 13.6364C13.8136 13.6364 13.6193 13.558 13.4625 13.4011C13.3057 13.2443 13.2273 13.05 13.2273 12.8182C13.2273 12.5864 13.3057 12.392 13.4625 12.2352C13.6193 12.0784 13.8136 12 14.0455 12C14.2773 12 14.4716 12.0784 14.6284 12.2352C14.7852 12.392 14.8636 12.5864 14.8636 12.8182C14.8636 13.05 14.7852 13.2443 14.6284 13.4011C14.4716 13.558 14.2773 13.6364 14.0455 13.6364ZM3 7.09091V4.63636C3 4.18636 3.16023 3.80114 3.48068 3.48068C3.80114 3.16023 4.18636 3 4.63636 3H7.09091V4.63636H4.63636V7.09091H3ZM7.09091 21H4.63636C4.18636 21 3.80114 20.8398 3.48068 20.5193C3.16023 20.1989 3 19.8136 3 19.3636V16.9091H4.63636V19.3636H7.09091V21ZM16.9091 21V19.3636H19.3636V16.9091H21V19.3636C21 19.8136 20.8398 20.1989 20.5193 20.5193C20.1989 20.8398 19.8136 21 19.3636 21H16.9091ZM19.3636 7.09091V4.63636H16.9091V3H19.3636C19.8136 3 20.1989 3.16023 20.5193 3.48068C20.8398 3.80114 21 4.18636 21 4.63636V7.09091H19.3636Z",
|
|
10433
|
+
fill: "currentColor"
|
|
10434
|
+
}
|
|
10435
|
+
) });
|
|
10436
|
+
}
|
|
10430
10437
|
|
|
10431
10438
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10432
|
-
import { Activity, CreditCard, Gem, Lock as Lock2, Shield as Shield2, ShieldCheck as ShieldCheck3 } from "lucide-react";
|
|
10433
10439
|
var NAV_BUTTONS = [
|
|
10434
|
-
{ id: "
|
|
10435
|
-
{ id: "
|
|
10436
|
-
{ id: "
|
|
10437
|
-
{ id: "
|
|
10438
|
-
{ id: "
|
|
10439
|
-
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Keyshare", Icon: Shield2 }
|
|
10440
|
+
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon: ArrowLeftRight },
|
|
10441
|
+
{ id: "kyc" /* KYC */, name: "KYC", Icon: KycIcon },
|
|
10442
|
+
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon: UsersRound },
|
|
10443
|
+
{ id: "security" /* SECURITY */, name: "Security", Icon: LockKeyhole },
|
|
10444
|
+
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon: DatabaseBackup2 }
|
|
10440
10445
|
];
|
|
10441
10446
|
|
|
10442
10447
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10443
|
-
import { jsx as
|
|
10448
|
+
import { jsx as jsx53, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10444
10449
|
function SettingsMenu() {
|
|
10450
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10445
10451
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10452
|
+
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10446
10453
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10447
|
-
const
|
|
10454
|
+
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10448
10455
|
return /* @__PURE__ */ jsxs41("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10449
|
-
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-
|
|
10450
|
-
/* @__PURE__ */
|
|
10451
|
-
/* @__PURE__ */
|
|
10456
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10457
|
+
/* @__PURE__ */ jsx53(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx53(ArrowLeft11, { className: "h-4 w-4" }) }),
|
|
10458
|
+
/* @__PURE__ */ jsx53("span", { className: "text-xl font-semibold", children: "Wallet Details" })
|
|
10452
10459
|
] }),
|
|
10453
|
-
/* @__PURE__ */
|
|
10460
|
+
/* @__PURE__ */ jsx53("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon, onClick }) => /* @__PURE__ */ jsxs41(
|
|
10454
10461
|
Button,
|
|
10455
10462
|
{
|
|
10456
10463
|
variant: "outline",
|
|
10457
10464
|
size: "large",
|
|
10458
10465
|
onClick,
|
|
10459
|
-
disabled: !
|
|
10460
|
-
|
|
10461
|
-
|
|
10466
|
+
disabled: !address,
|
|
10467
|
+
className: cn(
|
|
10468
|
+
//
|
|
10469
|
+
"w-full items-center justify-start",
|
|
10470
|
+
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
10471
|
+
),
|
|
10462
10472
|
children: [
|
|
10463
|
-
/* @__PURE__ */
|
|
10464
|
-
/* @__PURE__ */
|
|
10473
|
+
/* @__PURE__ */ jsx53(Icon, { className: "w-4 h-4" }),
|
|
10474
|
+
/* @__PURE__ */ jsx53("span", { children: name })
|
|
10465
10475
|
]
|
|
10466
10476
|
},
|
|
10467
10477
|
id
|
|
@@ -10470,14 +10480,14 @@ function SettingsMenu() {
|
|
|
10470
10480
|
}
|
|
10471
10481
|
|
|
10472
10482
|
// src/internal/components/TermsOfService.tsx
|
|
10473
|
-
import { jsx as
|
|
10483
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
10474
10484
|
function TermsOfService() {
|
|
10475
|
-
return /* @__PURE__ */
|
|
10485
|
+
return /* @__PURE__ */ jsx54("div", { className: "w-full p-4 flex flex-col gap-4", children: /* @__PURE__ */ jsx54("span", { className: "prose text-sm", children: "By using Lumia Passport you agree to our terms." }) });
|
|
10476
10486
|
}
|
|
10477
10487
|
|
|
10478
10488
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10479
|
-
import { useQuery as useQuery5, useQueryClient as
|
|
10480
|
-
import { Activity
|
|
10489
|
+
import { useQuery as useQuery5, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
10490
|
+
import { Activity, ArrowLeft as ArrowLeft12, Loader as Loader12, RefreshCw as RefreshCw2, XCircle as XCircle2 } from "lucide-react";
|
|
10481
10491
|
import { useCallback as useCallback12, useState as useState13 } from "react";
|
|
10482
10492
|
|
|
10483
10493
|
// src/internal/components/TransactionsMenu/api.ts
|
|
@@ -10816,15 +10826,15 @@ var formatTimestamp = (timestampMs) => {
|
|
|
10816
10826
|
};
|
|
10817
10827
|
|
|
10818
10828
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10819
|
-
import { jsx as
|
|
10820
|
-
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */
|
|
10821
|
-
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */
|
|
10829
|
+
import { jsx as jsx55, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10830
|
+
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */ jsx55(CheckCircle27, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx55(XCircle, { className: "w-4 h-4 text-[var(--l-pass-error)]" });
|
|
10831
|
+
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */ jsx55(ArrowDownRight, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx55(ArrowUpRight, { className: "w-4 h-4 text-[var(--l-pass-info)]" });
|
|
10822
10832
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
10823
10833
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
10824
10834
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
10825
10835
|
return /* @__PURE__ */ jsxs42("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
10826
10836
|
/* @__PURE__ */ jsxs42("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
10827
|
-
/* @__PURE__ */
|
|
10837
|
+
/* @__PURE__ */ jsx55("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
10828
10838
|
/* @__PURE__ */ jsxs42("span", { children: [
|
|
10829
10839
|
formatValue(internal.value, internalDecimals),
|
|
10830
10840
|
" ",
|
|
@@ -10832,8 +10842,8 @@ function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
|
10832
10842
|
] })
|
|
10833
10843
|
] }),
|
|
10834
10844
|
/* @__PURE__ */ jsxs42("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
10835
|
-
/* @__PURE__ */
|
|
10836
|
-
/* @__PURE__ */
|
|
10845
|
+
/* @__PURE__ */ jsx55("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
10846
|
+
/* @__PURE__ */ jsx55("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
10837
10847
|
] })
|
|
10838
10848
|
] });
|
|
10839
10849
|
}
|
|
@@ -10856,31 +10866,31 @@ function TransactionsGroup(props) {
|
|
|
10856
10866
|
/* @__PURE__ */ jsxs42("div", { className: "flex items-center justify-between gap-2", children: [
|
|
10857
10867
|
/* @__PURE__ */ jsxs42("div", { className: "flex items-center gap-2", children: [
|
|
10858
10868
|
getTransactionIcon(parent.direction),
|
|
10859
|
-
/* @__PURE__ */
|
|
10869
|
+
/* @__PURE__ */ jsx55("span", { className: "font-medium", children: isIncoming ? "Received" : "Sent" }),
|
|
10860
10870
|
getStatusIcon(parent.status)
|
|
10861
10871
|
] }),
|
|
10862
|
-
parent.badgeLabel && /* @__PURE__ */
|
|
10872
|
+
parent.badgeLabel && /* @__PURE__ */ jsx55(
|
|
10863
10873
|
"span",
|
|
10864
10874
|
{
|
|
10865
10875
|
className: cn(
|
|
10866
10876
|
"text-xs uppercase tracking-wide text-[var(--l-pass-info)] px-2 py-1 rounded-full",
|
|
10867
|
-
"bg-[var(--l-pass-bg-info)]
|
|
10877
|
+
"bg-[var(--l-pass-bg-info)]"
|
|
10868
10878
|
),
|
|
10869
10879
|
children: parent.badgeLabel
|
|
10870
10880
|
}
|
|
10871
10881
|
)
|
|
10872
10882
|
] }),
|
|
10873
|
-
/* @__PURE__ */
|
|
10883
|
+
/* @__PURE__ */ jsx55("span", { className: "block w-full leading-4 mb-1 text-xs text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) }),
|
|
10874
10884
|
/* @__PURE__ */ jsxs42("div", { className: "flex flex-col gap-0 text-sm", children: [
|
|
10875
10885
|
/* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10876
|
-
/* @__PURE__ */
|
|
10886
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: isIncoming ? "From:" : "To:" }),
|
|
10877
10887
|
/* @__PURE__ */ jsxs42("span", { className: "font-mono", children: [
|
|
10878
10888
|
parent.counterpartyName || formatAddress2(parent.counterparty),
|
|
10879
|
-
parent.counterpartyIsContract && /* @__PURE__ */
|
|
10889
|
+
parent.counterpartyIsContract && /* @__PURE__ */ jsx55("span", { className: "text-xs text-[var(--l-pass-info)] ml-1", children: "(Contract)" })
|
|
10880
10890
|
] })
|
|
10881
10891
|
] }),
|
|
10882
10892
|
/* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10883
|
-
/* @__PURE__ */
|
|
10893
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Value:" }),
|
|
10884
10894
|
/* @__PURE__ */ jsxs42("span", { className: "font-semibold", children: [
|
|
10885
10895
|
formatValue(parent.value, assetDecimals),
|
|
10886
10896
|
" ",
|
|
@@ -10888,12 +10898,12 @@ function TransactionsGroup(props) {
|
|
|
10888
10898
|
] })
|
|
10889
10899
|
] }),
|
|
10890
10900
|
/* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10891
|
-
/* @__PURE__ */
|
|
10892
|
-
/* @__PURE__ */
|
|
10901
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Block:" }),
|
|
10902
|
+
/* @__PURE__ */ jsx55("span", { className: "font-mono", children: parent.blockNumber ? `#${parent.blockNumber}` : "-" })
|
|
10893
10903
|
] }),
|
|
10894
10904
|
parent.method && /* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10895
|
-
/* @__PURE__ */
|
|
10896
|
-
/* @__PURE__ */
|
|
10905
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Method:" }),
|
|
10906
|
+
/* @__PURE__ */ jsx55("span", { className: "text-[var(--l-pass-info)] text-xs", children: parent.method })
|
|
10897
10907
|
] })
|
|
10898
10908
|
] }),
|
|
10899
10909
|
internalsToRender.length > 0 && /* @__PURE__ */ jsxs42(
|
|
@@ -10915,11 +10925,11 @@ function TransactionsGroup(props) {
|
|
|
10915
10925
|
internalsToRender.length,
|
|
10916
10926
|
")"
|
|
10917
10927
|
] }),
|
|
10918
|
-
/* @__PURE__ */
|
|
10928
|
+
/* @__PURE__ */ jsx55("span", { children: expanded ? "Hide" : "Show" })
|
|
10919
10929
|
]
|
|
10920
10930
|
}
|
|
10921
10931
|
),
|
|
10922
|
-
expanded && /* @__PURE__ */
|
|
10932
|
+
expanded && /* @__PURE__ */ jsx55("div", { className: "px-3 pb-3 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ jsx55(
|
|
10923
10933
|
InternalTransaction,
|
|
10924
10934
|
{
|
|
10925
10935
|
internal,
|
|
@@ -10937,9 +10947,9 @@ function TransactionsGroup(props) {
|
|
|
10937
10947
|
}
|
|
10938
10948
|
|
|
10939
10949
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10940
|
-
import { jsx as
|
|
10950
|
+
import { jsx as jsx56, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
10941
10951
|
function TransactionsMenu() {
|
|
10942
|
-
const qc =
|
|
10952
|
+
const qc = useQueryClient8();
|
|
10943
10953
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10944
10954
|
const page = useLayoutDataStore((st) => st.page);
|
|
10945
10955
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10961,10 +10971,10 @@ function TransactionsMenu() {
|
|
|
10961
10971
|
);
|
|
10962
10972
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
10963
10973
|
return /* @__PURE__ */ jsxs43("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10964
|
-
/* @__PURE__ */
|
|
10965
|
-
/* @__PURE__ */
|
|
10966
|
-
/* @__PURE__ */
|
|
10967
|
-
/* @__PURE__ */
|
|
10974
|
+
/* @__PURE__ */ jsx56("div", { className: "w-full", children: /* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-2", children: [
|
|
10975
|
+
/* @__PURE__ */ jsx56(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx56(ArrowLeft12, { className: "h-4 w-4" }) }),
|
|
10976
|
+
/* @__PURE__ */ jsx56("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
10977
|
+
/* @__PURE__ */ jsx56(
|
|
10968
10978
|
Button,
|
|
10969
10979
|
{
|
|
10970
10980
|
variant: "ghost",
|
|
@@ -10972,35 +10982,35 @@ function TransactionsMenu() {
|
|
|
10972
10982
|
onClick: refreshTxHistory,
|
|
10973
10983
|
disabled: isTxHistoryFetching,
|
|
10974
10984
|
title: "Refresh transactions",
|
|
10975
|
-
children: isTxHistoryFetching ? /* @__PURE__ */
|
|
10985
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ jsx56(Loader12, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx56(RefreshCw2, { className: "h-4 w-4" })
|
|
10976
10986
|
}
|
|
10977
10987
|
)
|
|
10978
10988
|
] }) }),
|
|
10979
10989
|
/* @__PURE__ */ jsxs43("div", { className: "max-h-[60vh] overflow-y-auto", children: [
|
|
10980
|
-
isTxHistoryLoading && /* @__PURE__ */
|
|
10990
|
+
isTxHistoryLoading && /* @__PURE__ */ jsx56("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx56(Loader12, { className: "h-5 w-5 animate-spin" }) }),
|
|
10981
10991
|
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs43(
|
|
10982
10992
|
"div",
|
|
10983
10993
|
{
|
|
10984
10994
|
className: cn(
|
|
10985
10995
|
"flex flex-col items-center justify-center p-4",
|
|
10986
|
-
"
|
|
10996
|
+
"rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)]",
|
|
10987
10997
|
"text-[var(--l-pass-error)]"
|
|
10988
10998
|
),
|
|
10989
10999
|
children: [
|
|
10990
|
-
/* @__PURE__ */
|
|
10991
|
-
/* @__PURE__ */
|
|
11000
|
+
/* @__PURE__ */ jsx56(XCircle2, { className: "w-12 h-12 mb-2" }),
|
|
11001
|
+
/* @__PURE__ */ jsx56("span", { className: "block w-full text-center text-sm", children: txHistoryResolvedError })
|
|
10992
11002
|
]
|
|
10993
11003
|
}
|
|
10994
11004
|
),
|
|
10995
11005
|
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsxs43("div", { className: "flex flex-col gap-2 items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: [
|
|
10996
|
-
/* @__PURE__ */
|
|
11006
|
+
/* @__PURE__ */ jsx56(Activity, { className: "w-12 h-12" }),
|
|
10997
11007
|
/* @__PURE__ */ jsxs43("span", { className: "block w-full text-center", children: [
|
|
10998
|
-
/* @__PURE__ */
|
|
10999
|
-
/* @__PURE__ */
|
|
11000
|
-
/* @__PURE__ */
|
|
11008
|
+
/* @__PURE__ */ jsx56("span", { children: "No transactions found" }),
|
|
11009
|
+
/* @__PURE__ */ jsx56("br", {}),
|
|
11010
|
+
/* @__PURE__ */ jsx56("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
11001
11011
|
] })
|
|
11002
11012
|
] }),
|
|
11003
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */
|
|
11013
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ jsx56("div", { className: "w-full flex flex-col gap-2", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx56(
|
|
11004
11014
|
TransactionsGroup,
|
|
11005
11015
|
{
|
|
11006
11016
|
group,
|
|
@@ -11014,13 +11024,13 @@ function TransactionsMenu() {
|
|
|
11014
11024
|
}
|
|
11015
11025
|
|
|
11016
11026
|
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11017
|
-
import { ArrowLeft as
|
|
11027
|
+
import { ArrowLeft as ArrowLeft13, Gem, Loader as Loader13, RefreshCw as RefreshCw3 } from "lucide-react";
|
|
11018
11028
|
|
|
11019
11029
|
// src/internal/components/ViewAssetsMenu/AssetItem.tsx
|
|
11020
11030
|
init_base();
|
|
11021
11031
|
import { Check as Check2, Copy as Copy3, ExternalLink } from "lucide-react";
|
|
11022
11032
|
import React14 from "react";
|
|
11023
|
-
import { jsx as
|
|
11033
|
+
import { jsx as jsx57, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
11024
11034
|
var openInExplorer2 = (address) => {
|
|
11025
11035
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11026
11036
|
};
|
|
@@ -11039,80 +11049,80 @@ function AssetItem(props) {
|
|
|
11039
11049
|
return /* @__PURE__ */ jsxs44("div", { className: "w-full border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] rounded-xl p-3 transition-colors", children: [
|
|
11040
11050
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between mb-2", children: [
|
|
11041
11051
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-3", children: [
|
|
11042
|
-
/* @__PURE__ */
|
|
11052
|
+
/* @__PURE__ */ jsx57("div", { className: "w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx57("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
11043
11053
|
/* @__PURE__ */ jsxs44("div", { children: [
|
|
11044
|
-
/* @__PURE__ */
|
|
11045
|
-
/* @__PURE__ */
|
|
11054
|
+
/* @__PURE__ */ jsx57("div", { className: "font-medium", children: asset.name }),
|
|
11055
|
+
/* @__PURE__ */ jsx57("div", { className: "text-sm", children: asset.symbol })
|
|
11046
11056
|
] })
|
|
11047
11057
|
] }),
|
|
11048
11058
|
/* @__PURE__ */ jsxs44("div", { className: "text-right", children: [
|
|
11049
|
-
/* @__PURE__ */
|
|
11050
|
-
/* @__PURE__ */
|
|
11059
|
+
/* @__PURE__ */ jsx57("div", { className: "font-mono", children: asset.formattedBalance }),
|
|
11060
|
+
/* @__PURE__ */ jsx57("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: asset.symbol })
|
|
11051
11061
|
] })
|
|
11052
11062
|
] }),
|
|
11053
11063
|
asset.address && /* @__PURE__ */ jsxs44("div", { className: "w-full space-y-2 mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: [
|
|
11054
11064
|
/* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11055
|
-
/* @__PURE__ */
|
|
11065
|
+
/* @__PURE__ */ jsx57("span", { children: "Contract Address:" }),
|
|
11056
11066
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11057
|
-
/* @__PURE__ */
|
|
11058
|
-
/* @__PURE__ */
|
|
11067
|
+
/* @__PURE__ */ jsx57("span", { className: `font-mono text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
11068
|
+
/* @__PURE__ */ jsx57(
|
|
11059
11069
|
Button,
|
|
11060
11070
|
{
|
|
11061
11071
|
variant: "ghost",
|
|
11062
11072
|
size: "icon",
|
|
11063
11073
|
title: "Copy address",
|
|
11064
11074
|
onClick: () => handleCopy(asset.address, "address"),
|
|
11065
|
-
children: copied === "address" ? /* @__PURE__ */
|
|
11075
|
+
children: copied === "address" ? /* @__PURE__ */ jsx57(Check2, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(Copy3, { className: "w-3 h-3" })
|
|
11066
11076
|
}
|
|
11067
11077
|
),
|
|
11068
|
-
/* @__PURE__ */
|
|
11078
|
+
/* @__PURE__ */ jsx57(
|
|
11069
11079
|
Button,
|
|
11070
11080
|
{
|
|
11071
11081
|
variant: "ghost",
|
|
11072
11082
|
size: "icon",
|
|
11073
11083
|
onClick: () => openInExplorer2(asset.address),
|
|
11074
11084
|
title: "View in explorer",
|
|
11075
|
-
children: /* @__PURE__ */
|
|
11085
|
+
children: /* @__PURE__ */ jsx57(ExternalLink, { className: "w-3 h-3" })
|
|
11076
11086
|
}
|
|
11077
11087
|
)
|
|
11078
11088
|
] })
|
|
11079
11089
|
] }),
|
|
11080
11090
|
asset.decimals && /* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11081
|
-
/* @__PURE__ */
|
|
11082
|
-
/* @__PURE__ */
|
|
11091
|
+
/* @__PURE__ */ jsx57("span", { children: "Decimals:" }),
|
|
11092
|
+
/* @__PURE__ */ jsx57("span", { children: asset.decimals })
|
|
11083
11093
|
] })
|
|
11084
11094
|
] }),
|
|
11085
|
-
asset.type === "native" && address && /* @__PURE__ */
|
|
11086
|
-
/* @__PURE__ */
|
|
11095
|
+
asset.type === "native" && address && /* @__PURE__ */ jsx57("div", { className: "mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: /* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between text-sm", children: [
|
|
11096
|
+
/* @__PURE__ */ jsx57("span", { children: "Your Address:" }),
|
|
11087
11097
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11088
|
-
/* @__PURE__ */
|
|
11089
|
-
/* @__PURE__ */
|
|
11098
|
+
/* @__PURE__ */ jsx57("span", { className: "font-mono text-xs", children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
11099
|
+
/* @__PURE__ */ jsx57(
|
|
11090
11100
|
Button,
|
|
11091
11101
|
{
|
|
11092
11102
|
variant: "ghost",
|
|
11093
11103
|
size: "icon",
|
|
11094
11104
|
onClick: () => handleCopy(address, "wallet"),
|
|
11095
11105
|
title: "Copy wallet address",
|
|
11096
|
-
children: copied === "wallet" ? /* @__PURE__ */
|
|
11106
|
+
children: copied === "wallet" ? /* @__PURE__ */ jsx57(Check2, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(Copy3, { className: "w-3 h-3" })
|
|
11097
11107
|
}
|
|
11098
11108
|
),
|
|
11099
|
-
/* @__PURE__ */
|
|
11109
|
+
/* @__PURE__ */ jsx57(Button, { variant: "ghost", size: "icon", onClick: () => openInExplorer2(address), title: "View in explorer", children: /* @__PURE__ */ jsx57(ExternalLink, { className: "w-3 h-3" }) })
|
|
11100
11110
|
] })
|
|
11101
11111
|
] }) })
|
|
11102
11112
|
] });
|
|
11103
11113
|
}
|
|
11104
11114
|
|
|
11105
11115
|
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11106
|
-
import { jsx as
|
|
11116
|
+
import { jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
11107
11117
|
function ViewAssetsMenu() {
|
|
11108
11118
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11109
11119
|
const { address } = useLumiaPassportSession();
|
|
11110
11120
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
11111
11121
|
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11112
|
-
/* @__PURE__ */
|
|
11113
|
-
/* @__PURE__ */
|
|
11114
|
-
/* @__PURE__ */
|
|
11115
|
-
/* @__PURE__ */
|
|
11122
|
+
/* @__PURE__ */ jsx58("div", { className: "w-full", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
11123
|
+
/* @__PURE__ */ jsx58(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx58(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
11124
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11125
|
+
/* @__PURE__ */ jsx58(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ jsx58(Loader13, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx58(RefreshCw3, { className: "h-4 w-4" }) })
|
|
11116
11126
|
] }) }),
|
|
11117
11127
|
/* @__PURE__ */ jsxs45(Expandable, { isExpanded: true, contentClassName: "w-full max-h-[60dvh] overflow-y-auto", children: [
|
|
11118
11128
|
!isLoading && assets.length > 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full text-sm text-[var(--l-pass-muted)] mb-4", children: [
|
|
@@ -11122,14 +11132,14 @@ function ViewAssetsMenu() {
|
|
|
11122
11132
|
assets.length !== 1 ? "s" : ""
|
|
11123
11133
|
] }),
|
|
11124
11134
|
isLoading && /* @__PURE__ */ jsxs45("div", { className: "w-full flex items-center justify-center gap-2 p-4", children: [
|
|
11125
|
-
/* @__PURE__ */
|
|
11126
|
-
/* @__PURE__ */
|
|
11135
|
+
/* @__PURE__ */ jsx58(Loader13, { className: "h-5 w-5 mr-2 animate-spin" }),
|
|
11136
|
+
/* @__PURE__ */ jsx58("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
11127
11137
|
] }),
|
|
11128
11138
|
!isLoading && assets.length === 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
11129
|
-
/* @__PURE__ */
|
|
11130
|
-
/* @__PURE__ */
|
|
11139
|
+
/* @__PURE__ */ jsx58(Gem, { className: "w-12 h-12 mb-2" }),
|
|
11140
|
+
/* @__PURE__ */ jsx58("p", { children: "No assets found" })
|
|
11131
11141
|
] }),
|
|
11132
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */
|
|
11142
|
+
!isLoading && assets.length > 0 && /* @__PURE__ */ jsx58("div", { className: "w-full flex flex-col gap-2", children: assets.map((asset, index) => /* @__PURE__ */ jsx58(AssetItem, { address, asset }, `${asset.type}-${asset.address || "native"}-${index}`)) })
|
|
11133
11143
|
] })
|
|
11134
11144
|
] });
|
|
11135
11145
|
}
|
|
@@ -11220,12 +11230,6 @@ var PAGE_MAP = {
|
|
|
11220
11230
|
description: "Restore your wallet from backup",
|
|
11221
11231
|
component: KeyshareRestoreMenu
|
|
11222
11232
|
},
|
|
11223
|
-
["add-provider" /* ADD_PROVIDER */]: {
|
|
11224
|
-
key: "add-provider" /* ADD_PROVIDER */,
|
|
11225
|
-
title: "Add Provider",
|
|
11226
|
-
description: "Add a new authentication provider",
|
|
11227
|
-
component: AddProviderMenu
|
|
11228
|
-
},
|
|
11229
11233
|
["unlink-provider" /* UNLINK_PROVIDER */]: {
|
|
11230
11234
|
key: "unlink-provider" /* UNLINK_PROVIDER */,
|
|
11231
11235
|
title: "Remove Provider",
|
|
@@ -11235,7 +11239,7 @@ var PAGE_MAP = {
|
|
|
11235
11239
|
};
|
|
11236
11240
|
|
|
11237
11241
|
// src/internal/hooks/usePageMapper.tsx
|
|
11238
|
-
import { jsx as
|
|
11242
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
11239
11243
|
var CLEAR_DIALOG_TIMEOUT = MAIN_DIALOG_ANIMATION_SPEED + 5;
|
|
11240
11244
|
function usePageMapper() {
|
|
11241
11245
|
const page = useLayoutDataStore((st) => st.page);
|
|
@@ -11265,7 +11269,7 @@ function usePageMapper() {
|
|
|
11265
11269
|
const PageContentComponent = pageItem.component;
|
|
11266
11270
|
setDialogTitle(pageItem.title);
|
|
11267
11271
|
setDialogDescription(pageItem.description);
|
|
11268
|
-
setDialogContent(/* @__PURE__ */
|
|
11272
|
+
setDialogContent(/* @__PURE__ */ jsx59(PageContentComponent, {}));
|
|
11269
11273
|
setIsDialogOpen(true);
|
|
11270
11274
|
},
|
|
11271
11275
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
@@ -11282,15 +11286,47 @@ function usePageMapper() {
|
|
|
11282
11286
|
}, [protectedRoutes, page, closeDialog, openDialog]);
|
|
11283
11287
|
}
|
|
11284
11288
|
|
|
11285
|
-
// src/internal/hooks/
|
|
11289
|
+
// src/internal/hooks/useSettingsNotifications.ts
|
|
11290
|
+
init_auth();
|
|
11286
11291
|
import { useEffect as useEffect22 } from "react";
|
|
11292
|
+
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11293
|
+
id: "email-not-connected",
|
|
11294
|
+
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
11295
|
+
message: "Email is not connected"
|
|
11296
|
+
};
|
|
11297
|
+
var BACKUP_IS_NOT_CREATED_NOTIFICATION = {
|
|
11298
|
+
id: "backup-is-not-created",
|
|
11299
|
+
target: "keysare-backup" /* KEYSARE_BACKUP */,
|
|
11300
|
+
message: "Backup is not created"
|
|
11301
|
+
};
|
|
11302
|
+
function useSettingsNotifications() {
|
|
11303
|
+
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
11304
|
+
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11305
|
+
const providers = jwtTokenManager2.getProviders();
|
|
11306
|
+
const hasEmail = providers.includes("email");
|
|
11307
|
+
useEffect22(() => {
|
|
11308
|
+
setSettingsNotifications({
|
|
11309
|
+
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11310
|
+
status: hasServerVault ? "resolved" : "active"
|
|
11311
|
+
});
|
|
11312
|
+
}, [hasServerVault, setSettingsNotifications]);
|
|
11313
|
+
useEffect22(() => {
|
|
11314
|
+
setSettingsNotifications({
|
|
11315
|
+
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11316
|
+
status: hasEmail ? "resolved" : "active"
|
|
11317
|
+
});
|
|
11318
|
+
}, [hasEmail, setSettingsNotifications]);
|
|
11319
|
+
}
|
|
11320
|
+
|
|
11321
|
+
// src/internal/hooks/useWalletStatus.ts
|
|
11322
|
+
import { useEffect as useEffect23 } from "react";
|
|
11287
11323
|
init_auth();
|
|
11288
11324
|
function useWalletStatus() {
|
|
11289
11325
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
11290
11326
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11291
11327
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11292
11328
|
const { config, callbacks } = useLumiaPassportConfig();
|
|
11293
|
-
|
|
11329
|
+
useEffect23(() => {
|
|
11294
11330
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11295
11331
|
const userId = jwtTokenManager2.getUserId();
|
|
11296
11332
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -11310,7 +11346,7 @@ function useWalletStatus() {
|
|
|
11310
11346
|
}
|
|
11311
11347
|
|
|
11312
11348
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11313
|
-
import { jsx as
|
|
11349
|
+
import { jsx as jsx60, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
11314
11350
|
function LumiaPassportDialog() {
|
|
11315
11351
|
const className = useLumiaPassportConfig()?.config?.ui?.dialogClassName;
|
|
11316
11352
|
const session = useLumiaPassportSession((st) => st.session);
|
|
@@ -11318,13 +11354,14 @@ function LumiaPassportDialog() {
|
|
|
11318
11354
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11319
11355
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11320
11356
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11321
|
-
|
|
11357
|
+
useEffect24(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11322
11358
|
usePageMapper();
|
|
11323
11359
|
useAutoConnect();
|
|
11324
11360
|
useCheckVaultStatus();
|
|
11325
11361
|
useBackupStatusChanges();
|
|
11362
|
+
useSettingsNotifications();
|
|
11326
11363
|
useWalletStatus();
|
|
11327
|
-
return /* @__PURE__ */
|
|
11364
|
+
return /* @__PURE__ */ jsx60(
|
|
11328
11365
|
Dialog,
|
|
11329
11366
|
{
|
|
11330
11367
|
open: isDialogOpen,
|
|
@@ -11333,11 +11370,11 @@ function LumiaPassportDialog() {
|
|
|
11333
11370
|
if (!open) setPage(null);
|
|
11334
11371
|
},
|
|
11335
11372
|
children: /* @__PURE__ */ jsxs46(DialogContent, { colorMode, hideClose: isDialogForced, className, children: [
|
|
11336
|
-
/* @__PURE__ */
|
|
11337
|
-
/* @__PURE__ */
|
|
11338
|
-
!!session && /* @__PURE__ */
|
|
11339
|
-
/* @__PURE__ */
|
|
11340
|
-
|
|
11373
|
+
/* @__PURE__ */ jsx60(VisuallyHidden, { children: /* @__PURE__ */ jsx60(DialogTitle, { children: dialogTitle }) }),
|
|
11374
|
+
/* @__PURE__ */ jsx60(DialogDescription, { className: "sr-only", children: dialogDescription }),
|
|
11375
|
+
!!session && /* @__PURE__ */ jsx60(Header, {}),
|
|
11376
|
+
/* @__PURE__ */ jsx60(AnimatePresence4, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx60(
|
|
11377
|
+
motion4.div,
|
|
11341
11378
|
{
|
|
11342
11379
|
initial: { opacity: 0, height: mainPageHeight },
|
|
11343
11380
|
animate: { opacity: 1, height: "auto" },
|
|
@@ -11348,20 +11385,20 @@ function LumiaPassportDialog() {
|
|
|
11348
11385
|
},
|
|
11349
11386
|
page || "empty"
|
|
11350
11387
|
) }),
|
|
11351
|
-
/* @__PURE__ */
|
|
11388
|
+
/* @__PURE__ */ jsx60(Footer, {})
|
|
11352
11389
|
] })
|
|
11353
11390
|
}
|
|
11354
11391
|
);
|
|
11355
11392
|
}
|
|
11356
11393
|
|
|
11357
11394
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11358
|
-
import { useEffect as
|
|
11395
|
+
import { useEffect as useEffect26 } from "react";
|
|
11359
11396
|
import { useBalance as useBalance3 } from "wagmi";
|
|
11360
11397
|
init_base();
|
|
11361
11398
|
|
|
11362
11399
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11363
|
-
import { useMutation as
|
|
11364
|
-
import { useEffect as
|
|
11400
|
+
import { useMutation as useMutation11 } from "@tanstack/react-query";
|
|
11401
|
+
import { useEffect as useEffect25 } from "react";
|
|
11365
11402
|
|
|
11366
11403
|
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11367
11404
|
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
@@ -11487,7 +11524,7 @@ async function sseConnectMutation() {
|
|
|
11487
11524
|
|
|
11488
11525
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11489
11526
|
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
11490
|
-
const { mutate: connectSSE } =
|
|
11527
|
+
const { mutate: connectSSE } = useMutation11({
|
|
11491
11528
|
mutationFn: sseConnectMutation,
|
|
11492
11529
|
onSuccess: () => {
|
|
11493
11530
|
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
@@ -11496,7 +11533,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11496
11533
|
console.error("Lumia Price SSE connection error:", err);
|
|
11497
11534
|
}
|
|
11498
11535
|
});
|
|
11499
|
-
|
|
11536
|
+
useEffect25(() => {
|
|
11500
11537
|
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11501
11538
|
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11502
11539
|
if (!enabled) {
|
|
@@ -11527,7 +11564,7 @@ function LumiaPriceSSE() {
|
|
|
11527
11564
|
});
|
|
11528
11565
|
const { lumiaRate, setLumiaRate, setUsdBalance, setBalance } = useLayoutDataStore();
|
|
11529
11566
|
useLumiaPriceSSE(!!address, (update) => setLumiaRate(update.price || 1));
|
|
11530
|
-
|
|
11567
|
+
useEffect26(() => {
|
|
11531
11568
|
const usdBalance = Number(balance?.formatted || 0) * lumiaRate;
|
|
11532
11569
|
setUsdBalance(usdBalance);
|
|
11533
11570
|
setBalance(balance);
|
|
@@ -11579,12 +11616,12 @@ var TssManagerWithRef = React15.forwardRef((props, ref) => {
|
|
|
11579
11616
|
|
|
11580
11617
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11581
11618
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
11582
|
-
import { useQueryClient as
|
|
11583
|
-
import React16, { useCallback as useCallback15, useEffect as
|
|
11619
|
+
import { useQueryClient as useQueryClient9 } from "@tanstack/react-query";
|
|
11620
|
+
import React16, { useCallback as useCallback15, useEffect as useEffect27 } from "react";
|
|
11584
11621
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
11585
11622
|
init_wallet();
|
|
11586
11623
|
function WalletConnectHandler() {
|
|
11587
|
-
const qc =
|
|
11624
|
+
const qc = useQueryClient9();
|
|
11588
11625
|
const { callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
11589
11626
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11590
11627
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
@@ -11616,7 +11653,7 @@ function WalletConnectHandler() {
|
|
|
11616
11653
|
const { signMessageAsync } = useSignMessage();
|
|
11617
11654
|
const [hasStartedLinking, setHasStartedLinking] = React16.useState(false);
|
|
11618
11655
|
const timeoutRef = React16.useRef();
|
|
11619
|
-
|
|
11656
|
+
useEffect27(() => {
|
|
11620
11657
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11621
11658
|
setHasStartedLinking(true);
|
|
11622
11659
|
if (isConnected) {
|
|
@@ -11648,7 +11685,7 @@ function WalletConnectHandler() {
|
|
|
11648
11685
|
}
|
|
11649
11686
|
}
|
|
11650
11687
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect]);
|
|
11651
|
-
|
|
11688
|
+
useEffect27(() => {
|
|
11652
11689
|
if (isConnected && address && isWalletLinking && hasStartedLinking) {
|
|
11653
11690
|
handleWalletSign();
|
|
11654
11691
|
}
|
|
@@ -11709,7 +11746,7 @@ function WalletConnectHandler() {
|
|
|
11709
11746
|
}
|
|
11710
11747
|
|
|
11711
11748
|
// src/context/LumiaPassportSessionContext.tsx
|
|
11712
|
-
import { jsx as
|
|
11749
|
+
import { jsx as jsx61, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
11713
11750
|
var useLumiaPassportSession = create5((set) => ({
|
|
11714
11751
|
isLoading: false,
|
|
11715
11752
|
usePaymaster: true,
|
|
@@ -11735,17 +11772,17 @@ var useLumiaPassportSession = create5((set) => ({
|
|
|
11735
11772
|
function LumiaPassportSessionProvider({ children }) {
|
|
11736
11773
|
const { config } = useLumiaPassportConfig();
|
|
11737
11774
|
console.log("[PASSPORT PROVIDER RENDER]: should be as less as possible");
|
|
11738
|
-
return /* @__PURE__ */ jsxs47(
|
|
11775
|
+
return /* @__PURE__ */ jsxs47(Fragment10, { children: [
|
|
11739
11776
|
children,
|
|
11740
|
-
config.wallet?.enabled && /* @__PURE__ */
|
|
11741
|
-
/* @__PURE__ */
|
|
11742
|
-
/* @__PURE__ */
|
|
11777
|
+
config.wallet?.enabled && /* @__PURE__ */ jsx61(WalletConnectHandler, {}),
|
|
11778
|
+
/* @__PURE__ */ jsx61(LumiaPriceSSE, {}),
|
|
11779
|
+
/* @__PURE__ */ jsx61(
|
|
11743
11780
|
TssManagerWithRef,
|
|
11744
11781
|
{
|
|
11745
11782
|
mpcPin: void 0
|
|
11746
11783
|
}
|
|
11747
11784
|
),
|
|
11748
|
-
/* @__PURE__ */
|
|
11785
|
+
/* @__PURE__ */ jsx61(LumiaPassportDialog, {})
|
|
11749
11786
|
] });
|
|
11750
11787
|
}
|
|
11751
11788
|
|
|
@@ -11780,13 +11817,13 @@ var wagmiConfig = createConfig({
|
|
|
11780
11817
|
});
|
|
11781
11818
|
|
|
11782
11819
|
// src/context/WagmiContext.tsx
|
|
11783
|
-
import { jsx as
|
|
11820
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
11784
11821
|
var LumiaWagmiProvider = ({ children }) => {
|
|
11785
|
-
return /* @__PURE__ */
|
|
11822
|
+
return /* @__PURE__ */ jsx62(WagmiProvider, { config: wagmiConfig, children });
|
|
11786
11823
|
};
|
|
11787
11824
|
|
|
11788
11825
|
// src/context/LumiaPassportContext.tsx
|
|
11789
|
-
import { jsx as
|
|
11826
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
11790
11827
|
var LumiaPassportContext = createContext(void 0);
|
|
11791
11828
|
function LumiaPassportProvider(props) {
|
|
11792
11829
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
@@ -11877,7 +11914,7 @@ function LumiaPassportProvider(props) {
|
|
|
11877
11914
|
return next;
|
|
11878
11915
|
});
|
|
11879
11916
|
}, []);
|
|
11880
|
-
|
|
11917
|
+
useEffect28(() => {
|
|
11881
11918
|
if (typeof window === "undefined") return;
|
|
11882
11919
|
if (!config.projectId) return;
|
|
11883
11920
|
const iframeUrl = getIframeUrl();
|
|
@@ -11910,7 +11947,7 @@ function LumiaPassportProvider(props) {
|
|
|
11910
11947
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
11911
11948
|
}
|
|
11912
11949
|
}, [config.projectId, config.features?.mpcSecurity]);
|
|
11913
|
-
return /* @__PURE__ */
|
|
11950
|
+
return /* @__PURE__ */ jsx63(LumiaWagmiProvider, { children: /* @__PURE__ */ jsx63(
|
|
11914
11951
|
LumiaPassportContext.Provider,
|
|
11915
11952
|
{
|
|
11916
11953
|
value: { config, updateConfig, callbacks, providersVersion, notifyProvidersUpdate },
|
|
@@ -11925,10 +11962,10 @@ var useLumiaPassportConfig = () => {
|
|
|
11925
11962
|
};
|
|
11926
11963
|
|
|
11927
11964
|
// src/components/ConnectWalletButton.tsx
|
|
11928
|
-
import { Cloud as Cloud3, Laptop as Laptop2, Loader as
|
|
11929
|
-
import { useEffect as
|
|
11965
|
+
import { Cloud as Cloud3, Laptop as Laptop2, Loader as Loader14, Shield as Shield2 } from "lucide-react";
|
|
11966
|
+
import { useEffect as useEffect29, useMemo as useMemo3 } from "react";
|
|
11930
11967
|
init_auth();
|
|
11931
|
-
import { Fragment as
|
|
11968
|
+
import { Fragment as Fragment11, jsx as jsx64, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
11932
11969
|
function getFormattedStatus(label, status, showStatus) {
|
|
11933
11970
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
11934
11971
|
if (!isStatus) return label;
|
|
@@ -11947,7 +11984,7 @@ function ConnectWalletButton(props) {
|
|
|
11947
11984
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
11948
11985
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
11949
11986
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
11950
|
-
|
|
11987
|
+
useEffect29(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
11951
11988
|
const avatar = jwtTokenManager2.getAvatar();
|
|
11952
11989
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
11953
11990
|
const indicators = useMemo3(() => {
|
|
@@ -11958,16 +11995,16 @@ function ConnectWalletButton(props) {
|
|
|
11958
11995
|
return { server, local, backup: hasServerVault };
|
|
11959
11996
|
}, [session, address, hasServerVault]);
|
|
11960
11997
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
11961
|
-
return /* @__PURE__ */
|
|
11998
|
+
return /* @__PURE__ */ jsx64("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
11962
11999
|
/** external Buttons can be provided */
|
|
11963
|
-
/* @__PURE__ */
|
|
12000
|
+
/* @__PURE__ */ jsx64(Fragment11, { children: ConnectButton ? /* @__PURE__ */ jsxs48(
|
|
11964
12001
|
ConnectButton,
|
|
11965
12002
|
{
|
|
11966
12003
|
type: "button",
|
|
11967
12004
|
disabled: isConnecting,
|
|
11968
12005
|
onClick: () => setPage("auth" /* AUTH */),
|
|
11969
12006
|
children: [
|
|
11970
|
-
isConnecting && /* @__PURE__ */
|
|
12007
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader14, { className: "w-4 h-4 animate-spin" }),
|
|
11971
12008
|
connectButtonLabel
|
|
11972
12009
|
]
|
|
11973
12010
|
}
|
|
@@ -11985,7 +12022,7 @@ function ConnectWalletButton(props) {
|
|
|
11985
12022
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
11986
12023
|
),
|
|
11987
12024
|
children: [
|
|
11988
|
-
isConnecting && /* @__PURE__ */
|
|
12025
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader14, { className: "w-4 h-4 animate-spin" }),
|
|
11989
12026
|
connectButtonLabel.toUpperCase()
|
|
11990
12027
|
]
|
|
11991
12028
|
}
|
|
@@ -12001,21 +12038,21 @@ function ConnectWalletButton(props) {
|
|
|
12001
12038
|
"rounded-[var(--l-pass-el-bdrs)] p-2 max-w-sm min-w-[256px]"
|
|
12002
12039
|
),
|
|
12003
12040
|
children: [
|
|
12004
|
-
/* @__PURE__ */
|
|
12041
|
+
/* @__PURE__ */ jsx64("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx64(
|
|
12005
12042
|
"img",
|
|
12006
12043
|
{
|
|
12007
12044
|
src: avatar,
|
|
12008
12045
|
alt: "User avatar",
|
|
12009
12046
|
className: "w-full h-full object-cover"
|
|
12010
12047
|
}
|
|
12011
|
-
) : /* @__PURE__ */
|
|
12048
|
+
) : /* @__PURE__ */ jsx64(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12012
12049
|
/* @__PURE__ */ jsxs48("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
12013
|
-
/* @__PURE__ */
|
|
12014
|
-
/* @__PURE__ */
|
|
12050
|
+
/* @__PURE__ */ jsx64("div", { className: "font-semibold text-base truncate max-w-[144px]", children: displayName }),
|
|
12051
|
+
/* @__PURE__ */ jsx64(UsdBalance, { className: "font-semibold text-base text-[var(--l-pass-fg-muted)]" })
|
|
12015
12052
|
] }),
|
|
12016
12053
|
/* @__PURE__ */ jsxs48("div", { className: "flex items-center space-x-1", children: [
|
|
12017
12054
|
/* @__PURE__ */ jsxs48("div", { className: "group relative", children: [
|
|
12018
|
-
/* @__PURE__ */
|
|
12055
|
+
/* @__PURE__ */ jsx64(
|
|
12019
12056
|
Cloud3,
|
|
12020
12057
|
{
|
|
12021
12058
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-success)]" : "text-[var(--l-pass-warning)]"}`
|
|
@@ -12037,7 +12074,7 @@ function ConnectWalletButton(props) {
|
|
|
12037
12074
|
)
|
|
12038
12075
|
] }),
|
|
12039
12076
|
/* @__PURE__ */ jsxs48("div", { className: "group relative", children: [
|
|
12040
|
-
/* @__PURE__ */
|
|
12077
|
+
/* @__PURE__ */ jsx64(
|
|
12041
12078
|
Laptop2,
|
|
12042
12079
|
{
|
|
12043
12080
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-success)]" : "text-[var(--l-pass-warning)]"}`
|
|
@@ -12059,8 +12096,8 @@ function ConnectWalletButton(props) {
|
|
|
12059
12096
|
)
|
|
12060
12097
|
] }),
|
|
12061
12098
|
/* @__PURE__ */ jsxs48("div", { className: "group relative", children: [
|
|
12062
|
-
/* @__PURE__ */
|
|
12063
|
-
|
|
12099
|
+
/* @__PURE__ */ jsx64(
|
|
12100
|
+
Shield2,
|
|
12064
12101
|
{
|
|
12065
12102
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-success)]" : "text-[var(--l-pass-warning)]"}`
|
|
12066
12103
|
}
|
|
@@ -12125,7 +12162,7 @@ function useLumiaPassportOpen() {
|
|
|
12125
12162
|
}
|
|
12126
12163
|
|
|
12127
12164
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12128
|
-
import { useCallback as useCallback18, useEffect as
|
|
12165
|
+
import { useCallback as useCallback18, useEffect as useEffect30 } from "react";
|
|
12129
12166
|
function useLumiaPassportColorMode() {
|
|
12130
12167
|
const preferedColorMode = useLumiaPassportConfig().config?.preferedColorMode;
|
|
12131
12168
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
@@ -12137,7 +12174,7 @@ function useLumiaPassportColorMode() {
|
|
|
12137
12174
|
},
|
|
12138
12175
|
[handleStoreColorMode]
|
|
12139
12176
|
);
|
|
12140
|
-
|
|
12177
|
+
useEffect30(() => {
|
|
12141
12178
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12142
12179
|
if (!targetColorMode && !preferedColorMode) {
|
|
12143
12180
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12155,23 +12192,23 @@ function useLumiaPassportColorMode() {
|
|
|
12155
12192
|
|
|
12156
12193
|
// src/components/ThemeToggle.tsx
|
|
12157
12194
|
import { Moon, Sun } from "lucide-react";
|
|
12158
|
-
import { jsx as
|
|
12195
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
12159
12196
|
function ThemeToggle(props) {
|
|
12160
12197
|
const { colorMode, setColorMode } = useLumiaPassportColorMode();
|
|
12161
|
-
return /* @__PURE__ */
|
|
12198
|
+
return /* @__PURE__ */ jsx65(
|
|
12162
12199
|
"div",
|
|
12163
12200
|
{
|
|
12164
12201
|
className: "lumia-scope",
|
|
12165
12202
|
"data-lumia-passport-mode": colorMode,
|
|
12166
12203
|
style: { width: "fit-content", height: "fit-content" },
|
|
12167
|
-
children: /* @__PURE__ */
|
|
12204
|
+
children: /* @__PURE__ */ jsx65(
|
|
12168
12205
|
Button,
|
|
12169
12206
|
{
|
|
12170
12207
|
...props,
|
|
12171
12208
|
variant: "ghost",
|
|
12172
12209
|
onClick: () => setColorMode(colorMode === "light" ? "dark" : "light"),
|
|
12173
12210
|
title: `Current theme: ${colorMode}. Click to switch.`,
|
|
12174
|
-
children: colorMode === "dark" ? /* @__PURE__ */
|
|
12211
|
+
children: colorMode === "dark" ? /* @__PURE__ */ jsx65(Sun, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx65(Moon, { className: "w-4 h-4" })
|
|
12175
12212
|
}
|
|
12176
12213
|
)
|
|
12177
12214
|
}
|
|
@@ -12329,7 +12366,7 @@ var rainbowTheme = {
|
|
|
12329
12366
|
};
|
|
12330
12367
|
|
|
12331
12368
|
// src/context/RainbowKitContext.tsx
|
|
12332
|
-
import { Fragment as
|
|
12369
|
+
import { Fragment as Fragment12, jsx as jsx66 } from "react/jsx-runtime";
|
|
12333
12370
|
var LumiaRainbowKitProvider = ({ children }) => {
|
|
12334
12371
|
const { config } = useLumiaPassportConfig();
|
|
12335
12372
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
@@ -12358,9 +12395,9 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12358
12395
|
);
|
|
12359
12396
|
const isWalletEnabled = config.wallet?.enabled ?? false;
|
|
12360
12397
|
if (!isWalletEnabled) {
|
|
12361
|
-
return /* @__PURE__ */
|
|
12398
|
+
return /* @__PURE__ */ jsx66(Fragment12, { children });
|
|
12362
12399
|
}
|
|
12363
|
-
return /* @__PURE__ */
|
|
12400
|
+
return /* @__PURE__ */ jsx66(WagmiProvider2, { config: rainbowConfig2, children: /* @__PURE__ */ jsx66(RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
12364
12401
|
};
|
|
12365
12402
|
|
|
12366
12403
|
// src/internal/components/UserOpStatus.tsx
|
|
@@ -12378,7 +12415,7 @@ function cn2(...inputs) {
|
|
|
12378
12415
|
}
|
|
12379
12416
|
|
|
12380
12417
|
// src/internal/components/ui/badge.tsx
|
|
12381
|
-
import { jsx as
|
|
12418
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
12382
12419
|
var badgeVariants = cva2(
|
|
12383
12420
|
"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",
|
|
12384
12421
|
{
|
|
@@ -12398,13 +12435,13 @@ var badgeVariants = cva2(
|
|
|
12398
12435
|
}
|
|
12399
12436
|
);
|
|
12400
12437
|
function Badge({ className, variant, ...props }) {
|
|
12401
|
-
return /* @__PURE__ */
|
|
12438
|
+
return /* @__PURE__ */ jsx67("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12402
12439
|
}
|
|
12403
12440
|
|
|
12404
12441
|
// src/internal/components/Address.tsx
|
|
12405
12442
|
import * as React19 from "react";
|
|
12406
12443
|
import { Copy as Copy4, ExternalLink as ExternalLink2 } from "lucide-react";
|
|
12407
|
-
import { jsx as
|
|
12444
|
+
import { jsx as jsx68, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
12408
12445
|
function toExplorerAddressUrl(address, chain) {
|
|
12409
12446
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12410
12447
|
if (!base2) return null;
|
|
@@ -12426,11 +12463,11 @@ var Address = ({
|
|
|
12426
12463
|
const addr = address || "";
|
|
12427
12464
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12428
12465
|
const [copied, setCopied] = React19.useState(false);
|
|
12429
|
-
if (!addr) return /* @__PURE__ */
|
|
12466
|
+
if (!addr) return /* @__PURE__ */ jsx68("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12430
12467
|
return /* @__PURE__ */ jsxs49("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12431
|
-
label && /* @__PURE__ */
|
|
12432
|
-
/* @__PURE__ */
|
|
12433
|
-
showCopy && /* @__PURE__ */
|
|
12468
|
+
label && /* @__PURE__ */ jsx68("span", { className: "text-sm font-medium", children: label }),
|
|
12469
|
+
/* @__PURE__ */ jsx68("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
12470
|
+
showCopy && /* @__PURE__ */ jsx68(
|
|
12434
12471
|
Button,
|
|
12435
12472
|
{
|
|
12436
12473
|
variant: "ghost",
|
|
@@ -12444,10 +12481,10 @@ var Address = ({
|
|
|
12444
12481
|
} catch {
|
|
12445
12482
|
}
|
|
12446
12483
|
},
|
|
12447
|
-
children: /* @__PURE__ */
|
|
12484
|
+
children: /* @__PURE__ */ jsx68(Copy4, { className: "h-4 w-4" })
|
|
12448
12485
|
}
|
|
12449
12486
|
),
|
|
12450
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
12487
|
+
showExplorer && explorer && /* @__PURE__ */ jsx68(
|
|
12451
12488
|
"a",
|
|
12452
12489
|
{
|
|
12453
12490
|
href: explorer,
|
|
@@ -12455,7 +12492,7 @@ var Address = ({
|
|
|
12455
12492
|
rel: "noreferrer noopener",
|
|
12456
12493
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12457
12494
|
title: "Open in explorer",
|
|
12458
|
-
children: /* @__PURE__ */
|
|
12495
|
+
children: /* @__PURE__ */ jsx68(ExternalLink2, { className: "h-4 w-4" })
|
|
12459
12496
|
}
|
|
12460
12497
|
)
|
|
12461
12498
|
] });
|
|
@@ -12463,7 +12500,7 @@ var Address = ({
|
|
|
12463
12500
|
|
|
12464
12501
|
// src/internal/components/UserOpStatus.tsx
|
|
12465
12502
|
init_base();
|
|
12466
|
-
import { jsx as
|
|
12503
|
+
import { jsx as jsx69, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
12467
12504
|
var UserOpStatus = ({
|
|
12468
12505
|
userOpHash,
|
|
12469
12506
|
chain,
|
|
@@ -12597,30 +12634,30 @@ var UserOpStatus = ({
|
|
|
12597
12634
|
if (receipt) {
|
|
12598
12635
|
const ok = !!receipt.success;
|
|
12599
12636
|
return /* @__PURE__ */ jsxs50(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
12600
|
-
ok ? /* @__PURE__ */
|
|
12637
|
+
ok ? /* @__PURE__ */ jsx69(CheckCircle28, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx69(AlertCircle4, { className: "h-3 w-3" }),
|
|
12601
12638
|
ok ? "Included" : "Failed"
|
|
12602
12639
|
] });
|
|
12603
12640
|
}
|
|
12604
12641
|
if (rejected) {
|
|
12605
12642
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
12606
|
-
/* @__PURE__ */
|
|
12643
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-3 w-3" }),
|
|
12607
12644
|
" Rejected by bundler"
|
|
12608
12645
|
] });
|
|
12609
12646
|
}
|
|
12610
12647
|
if (timedOut) {
|
|
12611
12648
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "warning", className: "gap-1", children: [
|
|
12612
|
-
/* @__PURE__ */
|
|
12649
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-3 w-3" }),
|
|
12613
12650
|
" Timeout - may be rejected"
|
|
12614
12651
|
] });
|
|
12615
12652
|
}
|
|
12616
12653
|
if (mempool) {
|
|
12617
12654
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "outline", className: "gap-1", children: [
|
|
12618
|
-
/* @__PURE__ */
|
|
12655
|
+
/* @__PURE__ */ jsx69(Clock2, { className: "h-3 w-3" }),
|
|
12619
12656
|
" Pending in bundler"
|
|
12620
12657
|
] });
|
|
12621
12658
|
}
|
|
12622
12659
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
12623
|
-
/* @__PURE__ */
|
|
12660
|
+
/* @__PURE__ */ jsx69(Clock2, { className: "h-3 w-3" }),
|
|
12624
12661
|
" Waiting"
|
|
12625
12662
|
] });
|
|
12626
12663
|
};
|
|
@@ -12633,17 +12670,17 @@ var UserOpStatus = ({
|
|
|
12633
12670
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center justify-between mb-3", children: [
|
|
12634
12671
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-2", children: [
|
|
12635
12672
|
stateBadge(),
|
|
12636
|
-
/* @__PURE__ */
|
|
12673
|
+
/* @__PURE__ */ jsx69("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
12637
12674
|
] }),
|
|
12638
12675
|
/* @__PURE__ */ jsxs50(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
12639
|
-
/* @__PURE__ */
|
|
12640
|
-
/* @__PURE__ */
|
|
12676
|
+
/* @__PURE__ */ jsx69(RefreshCw4, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
12677
|
+
/* @__PURE__ */ jsx69("span", { className: "text-xs", children: "Refresh" })
|
|
12641
12678
|
] })
|
|
12642
12679
|
] }),
|
|
12643
12680
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
12644
|
-
/* @__PURE__ */
|
|
12645
|
-
/* @__PURE__ */
|
|
12646
|
-
/* @__PURE__ */
|
|
12681
|
+
/* @__PURE__ */ jsx69("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
12682
|
+
/* @__PURE__ */ jsx69("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
12683
|
+
/* @__PURE__ */ jsx69(
|
|
12647
12684
|
Button,
|
|
12648
12685
|
{
|
|
12649
12686
|
variant: "ghost",
|
|
@@ -12655,14 +12692,14 @@ var UserOpStatus = ({
|
|
|
12655
12692
|
} catch {
|
|
12656
12693
|
}
|
|
12657
12694
|
},
|
|
12658
|
-
children: /* @__PURE__ */
|
|
12695
|
+
children: /* @__PURE__ */ jsx69(Copy5, { className: "h-3.5 w-3.5" })
|
|
12659
12696
|
}
|
|
12660
12697
|
)
|
|
12661
12698
|
] }),
|
|
12662
12699
|
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
12663
|
-
/* @__PURE__ */
|
|
12664
|
-
/* @__PURE__ */
|
|
12665
|
-
/* @__PURE__ */
|
|
12700
|
+
/* @__PURE__ */ jsx69("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
12701
|
+
/* @__PURE__ */ jsx69("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
12702
|
+
/* @__PURE__ */ jsx69(
|
|
12666
12703
|
Button,
|
|
12667
12704
|
{
|
|
12668
12705
|
variant: "ghost",
|
|
@@ -12674,10 +12711,10 @@ var UserOpStatus = ({
|
|
|
12674
12711
|
} catch {
|
|
12675
12712
|
}
|
|
12676
12713
|
},
|
|
12677
|
-
children: /* @__PURE__ */
|
|
12714
|
+
children: /* @__PURE__ */ jsx69(Copy5, { className: "h-3.5 w-3.5" })
|
|
12678
12715
|
}
|
|
12679
12716
|
),
|
|
12680
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */
|
|
12717
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx69(
|
|
12681
12718
|
"a",
|
|
12682
12719
|
{
|
|
12683
12720
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -12685,7 +12722,7 @@ var UserOpStatus = ({
|
|
|
12685
12722
|
rel: "noreferrer noopener",
|
|
12686
12723
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
12687
12724
|
title: "Open in explorer",
|
|
12688
|
-
children: /* @__PURE__ */
|
|
12725
|
+
children: /* @__PURE__ */ jsx69(ExternalLink3, { className: "h-3.5 w-3.5" })
|
|
12689
12726
|
}
|
|
12690
12727
|
)
|
|
12691
12728
|
] }),
|
|
@@ -12698,7 +12735,7 @@ var UserOpStatus = ({
|
|
|
12698
12735
|
" \u2022 Success ",
|
|
12699
12736
|
String(!!receipt.success)
|
|
12700
12737
|
] }),
|
|
12701
|
-
/* @__PURE__ */
|
|
12738
|
+
/* @__PURE__ */ jsx69("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs50("span", { className: "ml-2", children: [
|
|
12702
12739
|
"\u2022 Polling for ",
|
|
12703
12740
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
12704
12741
|
"s"
|
|
@@ -12706,24 +12743,24 @@ var UserOpStatus = ({
|
|
|
12706
12743
|
mempool && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
12707
12744
|
/* @__PURE__ */ jsxs50("div", { children: [
|
|
12708
12745
|
"Seen by bundler at ",
|
|
12709
|
-
/* @__PURE__ */
|
|
12746
|
+
/* @__PURE__ */ jsx69(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
12710
12747
|
] }),
|
|
12711
12748
|
/* @__PURE__ */ jsxs50("div", { children: [
|
|
12712
12749
|
"sender ",
|
|
12713
|
-
/* @__PURE__ */
|
|
12750
|
+
/* @__PURE__ */ jsx69(Address, { address: mempool.sender, chain, truncate: false })
|
|
12714
12751
|
] })
|
|
12715
12752
|
] }),
|
|
12716
12753
|
error && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
12717
|
-
/* @__PURE__ */
|
|
12754
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-4 w-4" }),
|
|
12718
12755
|
" ",
|
|
12719
12756
|
error
|
|
12720
12757
|
] }),
|
|
12721
12758
|
rejected && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
12722
|
-
/* @__PURE__ */
|
|
12759
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-4 w-4" }),
|
|
12723
12760
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
12724
12761
|
] }),
|
|
12725
12762
|
timedOut && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
12726
|
-
/* @__PURE__ */
|
|
12763
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-4 w-4" }),
|
|
12727
12764
|
"Stopped polling after ",
|
|
12728
12765
|
Math.round(maxPollTimeMs / 1e3),
|
|
12729
12766
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -12736,7 +12773,7 @@ var UserOpStatus = ({
|
|
|
12736
12773
|
// src/internal/components/Hash.tsx
|
|
12737
12774
|
import * as React21 from "react";
|
|
12738
12775
|
import { Copy as Copy6, ExternalLink as ExternalLink4 } from "lucide-react";
|
|
12739
|
-
import { jsx as
|
|
12776
|
+
import { jsx as jsx70, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
12740
12777
|
function toExplorerUrl(kind, value, chain) {
|
|
12741
12778
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12742
12779
|
if (!base2) return null;
|
|
@@ -12760,11 +12797,11 @@ var Hash = ({
|
|
|
12760
12797
|
const value = hash || "";
|
|
12761
12798
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12762
12799
|
const [copied, setCopied] = React21.useState(false);
|
|
12763
|
-
if (!value) return /* @__PURE__ */
|
|
12800
|
+
if (!value) return /* @__PURE__ */ jsx70("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12764
12801
|
return /* @__PURE__ */ jsxs51("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12765
|
-
label && /* @__PURE__ */
|
|
12766
|
-
/* @__PURE__ */
|
|
12767
|
-
showCopy && /* @__PURE__ */
|
|
12802
|
+
label && /* @__PURE__ */ jsx70("span", { className: "text-sm font-medium", children: label }),
|
|
12803
|
+
/* @__PURE__ */ jsx70("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
12804
|
+
showCopy && /* @__PURE__ */ jsx70(
|
|
12768
12805
|
Button,
|
|
12769
12806
|
{
|
|
12770
12807
|
variant: "ghost",
|
|
@@ -12778,10 +12815,10 @@ var Hash = ({
|
|
|
12778
12815
|
} catch {
|
|
12779
12816
|
}
|
|
12780
12817
|
},
|
|
12781
|
-
children: /* @__PURE__ */
|
|
12818
|
+
children: /* @__PURE__ */ jsx70(Copy6, { className: "h-4 w-4" })
|
|
12782
12819
|
}
|
|
12783
12820
|
),
|
|
12784
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
12821
|
+
showExplorer && explorer && /* @__PURE__ */ jsx70(
|
|
12785
12822
|
"a",
|
|
12786
12823
|
{
|
|
12787
12824
|
href: explorer,
|
|
@@ -12789,7 +12826,7 @@ var Hash = ({
|
|
|
12789
12826
|
rel: "noreferrer noopener",
|
|
12790
12827
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12791
12828
|
title: "Open in explorer",
|
|
12792
|
-
children: /* @__PURE__ */
|
|
12829
|
+
children: /* @__PURE__ */ jsx70(ExternalLink4, { className: "h-4 w-4" })
|
|
12793
12830
|
}
|
|
12794
12831
|
)
|
|
12795
12832
|
] });
|
|
@@ -12797,13 +12834,13 @@ var Hash = ({
|
|
|
12797
12834
|
|
|
12798
12835
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
12799
12836
|
init_base();
|
|
12800
|
-
import { useEffect as
|
|
12801
|
-
import { jsx as
|
|
12837
|
+
import { useEffect as useEffect32, useState as useState18 } from "react";
|
|
12838
|
+
import { jsx as jsx71, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
12802
12839
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
12803
12840
|
const [transactions, setTransactions] = useState18([]);
|
|
12804
12841
|
const [loading, setLoading] = useState18(true);
|
|
12805
12842
|
const [error, setError] = useState18(null);
|
|
12806
|
-
|
|
12843
|
+
useEffect32(() => {
|
|
12807
12844
|
const fetchTransactions = async () => {
|
|
12808
12845
|
try {
|
|
12809
12846
|
setLoading(true);
|
|
@@ -12841,7 +12878,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12841
12878
|
const formatAddress3 = (addr) => {
|
|
12842
12879
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
12843
12880
|
};
|
|
12844
|
-
const
|
|
12881
|
+
const formatDate3 = (timestamp) => {
|
|
12845
12882
|
return new Date(timestamp).toLocaleString();
|
|
12846
12883
|
};
|
|
12847
12884
|
const openTransaction = (txHash) => {
|
|
@@ -12850,20 +12887,20 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12850
12887
|
};
|
|
12851
12888
|
if (loading) {
|
|
12852
12889
|
return /* @__PURE__ */ jsxs52("div", { className: "p-4 text-center", children: [
|
|
12853
|
-
/* @__PURE__ */
|
|
12854
|
-
/* @__PURE__ */
|
|
12890
|
+
/* @__PURE__ */ jsx71("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
12891
|
+
/* @__PURE__ */ jsx71("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
12855
12892
|
] });
|
|
12856
12893
|
}
|
|
12857
12894
|
if (error) {
|
|
12858
12895
|
return /* @__PURE__ */ jsxs52("div", { className: "p-4 text-center", children: [
|
|
12859
|
-
/* @__PURE__ */
|
|
12860
|
-
/* @__PURE__ */
|
|
12896
|
+
/* @__PURE__ */ jsx71("p", { className: "text-red-600 text-sm", children: error }),
|
|
12897
|
+
/* @__PURE__ */ jsx71("button", { onClick: () => window.location.reload(), className: "mt-2 text-blue-600 text-sm hover:underline", children: "Retry" })
|
|
12861
12898
|
] });
|
|
12862
12899
|
}
|
|
12863
12900
|
if (transactions.length === 0) {
|
|
12864
|
-
return /* @__PURE__ */
|
|
12901
|
+
return /* @__PURE__ */ jsx71("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx71("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
12865
12902
|
}
|
|
12866
|
-
return /* @__PURE__ */
|
|
12903
|
+
return /* @__PURE__ */ jsx71("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx71("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs52(
|
|
12867
12904
|
"div",
|
|
12868
12905
|
{
|
|
12869
12906
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
@@ -12872,8 +12909,8 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12872
12909
|
/* @__PURE__ */ jsxs52("div", { className: "flex justify-between items-start mb-2", children: [
|
|
12873
12910
|
/* @__PURE__ */ jsxs52("div", { className: "flex-1", children: [
|
|
12874
12911
|
/* @__PURE__ */ jsxs52("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
12875
|
-
/* @__PURE__ */
|
|
12876
|
-
/* @__PURE__ */
|
|
12912
|
+
/* @__PURE__ */ jsx71("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress3(tx.hash) }),
|
|
12913
|
+
/* @__PURE__ */ jsx71(
|
|
12877
12914
|
"span",
|
|
12878
12915
|
{
|
|
12879
12916
|
className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`,
|
|
@@ -12883,21 +12920,21 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12883
12920
|
] }),
|
|
12884
12921
|
/* @__PURE__ */ jsxs52("div", { className: "text-sm space-y-1", children: [
|
|
12885
12922
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12886
|
-
/* @__PURE__ */
|
|
12923
|
+
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "From:" }),
|
|
12887
12924
|
/* @__PURE__ */ jsxs52("span", { className: "font-mono ml-1", children: [
|
|
12888
12925
|
formatAddress3(tx.from.hash),
|
|
12889
|
-
tx.from.is_contract && /* @__PURE__ */
|
|
12926
|
+
tx.from.is_contract && /* @__PURE__ */ jsx71("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
12890
12927
|
] })
|
|
12891
12928
|
] }),
|
|
12892
12929
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12893
|
-
/* @__PURE__ */
|
|
12930
|
+
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "To:" }),
|
|
12894
12931
|
/* @__PURE__ */ jsxs52("span", { className: "font-mono ml-1", children: [
|
|
12895
12932
|
formatAddress3(tx.to.hash),
|
|
12896
|
-
tx.to.is_contract && /* @__PURE__ */
|
|
12933
|
+
tx.to.is_contract && /* @__PURE__ */ jsx71("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
12897
12934
|
] })
|
|
12898
12935
|
] }),
|
|
12899
12936
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12900
|
-
/* @__PURE__ */
|
|
12937
|
+
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "Value:" }),
|
|
12901
12938
|
/* @__PURE__ */ jsxs52("span", { className: "font-semibold ml-1", children: [
|
|
12902
12939
|
formatValue2(tx.value),
|
|
12903
12940
|
" LUMIA"
|
|
@@ -12906,15 +12943,15 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12906
12943
|
] })
|
|
12907
12944
|
] }),
|
|
12908
12945
|
/* @__PURE__ */ jsxs52("div", { className: "text-right text-xs text-gray-500", children: [
|
|
12909
|
-
/* @__PURE__ */
|
|
12946
|
+
/* @__PURE__ */ jsx71("div", { children: formatDate3(tx.timestamp) }),
|
|
12910
12947
|
/* @__PURE__ */ jsxs52("div", { className: "mt-1", children: [
|
|
12911
12948
|
"Gas: ",
|
|
12912
12949
|
parseInt(tx.gas_used).toLocaleString()
|
|
12913
12950
|
] }),
|
|
12914
|
-
tx.method && /* @__PURE__ */
|
|
12951
|
+
tx.method && /* @__PURE__ */ jsx71("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
12915
12952
|
] })
|
|
12916
12953
|
] }),
|
|
12917
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
12954
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ jsx71("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx71("span", { className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full", children: type.replace("_", " ") }, idx)) })
|
|
12918
12955
|
]
|
|
12919
12956
|
},
|
|
12920
12957
|
tx.hash
|
|
@@ -13257,10 +13294,10 @@ function useSmartAccountTransactions() {
|
|
|
13257
13294
|
}
|
|
13258
13295
|
|
|
13259
13296
|
// src/modules/linkedProfiles.ts
|
|
13297
|
+
import * as React24 from "react";
|
|
13298
|
+
init_auth();
|
|
13260
13299
|
init_common();
|
|
13261
13300
|
init_types();
|
|
13262
|
-
init_auth();
|
|
13263
|
-
import * as React24 from "react";
|
|
13264
13301
|
function useLumiaPassportLinkedProfiles() {
|
|
13265
13302
|
const { providersVersion } = useLumiaPassportConfig();
|
|
13266
13303
|
const [profiles, setProfiles] = React24.useState([]);
|
|
@@ -13277,8 +13314,8 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
13277
13314
|
return {
|
|
13278
13315
|
...p,
|
|
13279
13316
|
displayName: info.name,
|
|
13280
|
-
icon: info.icon
|
|
13281
|
-
color: info.color
|
|
13317
|
+
icon: info.icon
|
|
13318
|
+
// color: info.color,
|
|
13282
13319
|
};
|
|
13283
13320
|
});
|
|
13284
13321
|
setProfiles(enriched);
|