@lumiapassport/ui-kit 1.12.4 → 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 +1533 -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 +1308 -1241
- 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 *,.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: [
|
|
@@ -6630,7 +6638,7 @@ function OtpIcon(props) {
|
|
|
6630
6638
|
"path",
|
|
6631
6639
|
{
|
|
6632
6640
|
d: "M2 19V17H22V19H2ZM3.15 12.95L1.85 12.2L2.7 10.7H1V9.2H2.7L1.85 7.75L3.15 7L4 8.45L4.85 7L6.15 7.75L5.3 9.2H7V10.7H5.3L6.15 12.2L4.85 12.95L4 11.45L3.15 12.95ZM11.15 12.95L9.85 12.2L10.7 10.7H9V9.2H10.7L9.85 7.75L11.15 7L12 8.45L12.85 7L14.15 7.75L13.3 9.2H15V10.7H13.3L14.15 12.2L12.85 12.95L12 11.45L11.15 12.95ZM19.15 12.95L17.85 12.2L18.7 10.7H17V9.2H18.7L17.85 7.75L19.15 7L20 8.45L20.85 7L22.15 7.75L21.3 9.2H23V10.7H21.3L22.15 12.2L20.85 12.95L20 11.45L19.15 12.95Z",
|
|
6633
|
-
fill: "
|
|
6641
|
+
fill: "currentColor"
|
|
6634
6642
|
}
|
|
6635
6643
|
) });
|
|
6636
6644
|
}
|
|
@@ -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
|
);
|
|
@@ -9259,7 +9393,7 @@ function useLinkTelegram() {
|
|
|
9259
9393
|
setProviderType(null);
|
|
9260
9394
|
} catch (e) {
|
|
9261
9395
|
console.error("[ManageWallet] Failed to link Telegram:", e);
|
|
9262
|
-
|
|
9396
|
+
setLinkError(e?.message || "Failed to link Telegram");
|
|
9263
9397
|
setProviderType(null);
|
|
9264
9398
|
} finally {
|
|
9265
9399
|
setLinkIsLoading(false);
|
|
@@ -9279,336 +9413,211 @@ function useLinkTelegram() {
|
|
|
9279
9413
|
}, [providerType]);
|
|
9280
9414
|
}
|
|
9281
9415
|
|
|
9282
|
-
// src/internal/components/ManageWalletMenu/
|
|
9283
|
-
|
|
9284
|
-
import {
|
|
9285
|
-
|
|
9286
|
-
|
|
9287
|
-
|
|
9288
|
-
|
|
9289
|
-
|
|
9290
|
-
const
|
|
9291
|
-
|
|
9292
|
-
|
|
9293
|
-
|
|
9294
|
-
|
|
9295
|
-
|
|
9296
|
-
|
|
9297
|
-
|
|
9298
|
-
|
|
9299
|
-
|
|
9300
|
-
|
|
9301
|
-
|
|
9302
|
-
|
|
9303
|
-
|
|
9304
|
-
|
|
9305
|
-
|
|
9306
|
-
|
|
9307
|
-
|
|
9308
|
-
|
|
9309
|
-
|
|
9310
|
-
|
|
9311
|
-
|
|
9312
|
-
|
|
9313
|
-
|
|
9314
|
-
|
|
9315
|
-
|
|
9316
|
-
|
|
9317
|
-
|
|
9318
|
-
|
|
9319
|
-
|
|
9320
|
-
|
|
9321
|
-
|
|
9322
|
-
|
|
9323
|
-
|
|
9324
|
-
|
|
9325
|
-
|
|
9326
|
-
|
|
9327
|
-
|
|
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))
|
|
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;
|
|
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
|
+
] })
|
|
9401
9462
|
] });
|
|
9402
|
-
}
|
|
9463
|
+
}
|
|
9403
9464
|
|
|
9404
|
-
// src/internal/components/ManageWalletMenu/
|
|
9405
|
-
import { jsx as
|
|
9406
|
-
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9414
|
-
|
|
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
|
+
);
|
|
9415
9493
|
}
|
|
9416
|
-
function
|
|
9417
|
-
const
|
|
9418
|
-
const
|
|
9419
|
-
const { callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
9494
|
+
function ManageWalletMenu() {
|
|
9495
|
+
const { config } = useLumiaPassportConfig();
|
|
9496
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9420
9497
|
const {
|
|
9421
|
-
linkError,
|
|
9422
|
-
linkIsLoading,
|
|
9423
9498
|
providerType,
|
|
9424
|
-
|
|
9425
|
-
emailCode,
|
|
9426
|
-
emailCodeSent,
|
|
9427
|
-
emailCodeExpiresIn,
|
|
9499
|
+
linkError,
|
|
9428
9500
|
verificationError,
|
|
9429
|
-
|
|
9430
|
-
setEmailCodeSent,
|
|
9431
|
-
setEmailCode,
|
|
9432
|
-
setEmail,
|
|
9501
|
+
emailCodeSentError,
|
|
9433
9502
|
setProviderType,
|
|
9503
|
+
setEmail,
|
|
9504
|
+
setEmailStep,
|
|
9505
|
+
setEmailCodeSentError,
|
|
9506
|
+
setEmailCodeExpiresIn,
|
|
9507
|
+
setEmailCode,
|
|
9434
9508
|
setLinkError,
|
|
9435
|
-
|
|
9509
|
+
setVerificationError
|
|
9436
9510
|
} = useManageWalletStore();
|
|
9437
|
-
const
|
|
9438
|
-
const {
|
|
9439
|
-
const
|
|
9440
|
-
const
|
|
9441
|
-
|
|
9442
|
-
|
|
9443
|
-
|
|
9444
|
-
|
|
9445
|
-
|
|
9446
|
-
|
|
9447
|
-
|
|
9448
|
-
|
|
9449
|
-
|
|
9450
|
-
|
|
9451
|
-
|
|
9452
|
-
|
|
9453
|
-
|
|
9454
|
-
|
|
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
|
+
);
|
|
9455
9558
|
}
|
|
9456
|
-
|
|
9457
|
-
|
|
9458
|
-
|
|
9459
|
-
setEmailCodeSent(false);
|
|
9460
|
-
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9461
|
-
} catch (e) {
|
|
9462
|
-
setVerificationError(e?.message || "Failed to verify and link email");
|
|
9463
|
-
} finally {
|
|
9464
|
-
setLinkIsLoading(false);
|
|
9465
|
-
}
|
|
9466
|
-
};
|
|
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,69 +10392,102 @@ function ReceiveLumiaMenu() {
|
|
|
10385
10392
|
console.error("Failed to copy address:", error);
|
|
10386
10393
|
}
|
|
10387
10394
|
};
|
|
10388
|
-
return /* @__PURE__ */ jsxs40(
|
|
10389
|
-
"div",
|
|
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
|
+
] });
|
|
10417
|
+
}
|
|
10418
|
+
|
|
10419
|
+
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
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",
|
|
10390
10431
|
{
|
|
10391
|
-
|
|
10392
|
-
|
|
10393
|
-
children: [
|
|
10394
|
-
/* @__PURE__ */ jsx50("div", { className: "w-full", children: /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-2", children: [
|
|
10395
|
-
/* @__PURE__ */ jsx50(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx50(ArrowLeft11, { className: "h-4 w-4" }) }),
|
|
10396
|
-
/* @__PURE__ */ jsx50("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10397
|
-
] }) }),
|
|
10398
|
-
/* @__PURE__ */ jsxs40("div", { className: "flex flex-col gap-4", children: [
|
|
10399
|
-
/* @__PURE__ */ jsxs40("div", { className: "rounded-[var(--l-pass-el-bdrs)] border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)] p-2 text-center font-medium text-sm", children: [
|
|
10400
|
-
/* @__PURE__ */ jsx50("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
10401
|
-
/* @__PURE__ */ jsx50("span", { className: "block w-full text-[var(--l-pass-info)]", children: "Ensure sender is on the same network" })
|
|
10402
|
-
] }),
|
|
10403
|
-
qrCodeUrl && /* @__PURE__ */ jsx50("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx50("div", { className: `p-2 rounded-[var(--l-pass-el-bdrs)] border border-[var(--l-pass-bd)]`, children: /* @__PURE__ */ jsx50("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
|
|
10404
|
-
/* @__PURE__ */ jsxs40("div", { className: "rounded-[var(--l-pass-el-bdrs)] border border-[var(--l-pass-bd)] p-2 bg-[var(--l-pass-secondary)]", children: [
|
|
10405
|
-
/* @__PURE__ */ jsx50("span", { className: "block flex-1 font-mono text-xs p-2 break-all", children: address }),
|
|
10406
|
-
/* @__PURE__ */ jsx50(Button, { onClick: handleCopy, className: "w-full mt-2", size: "large", children: copied ? /* @__PURE__ */ jsxs40(Fragment8, { children: [
|
|
10407
|
-
/* @__PURE__ */ jsx50(CheckCircle26, { className: "h-4 w-4" }),
|
|
10408
|
-
/* @__PURE__ */ jsx50("span", { children: "Copied!" })
|
|
10409
|
-
] }) : /* @__PURE__ */ jsxs40(Fragment8, { children: [
|
|
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
|
-
]
|
|
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"
|
|
10424
10434
|
}
|
|
10425
|
-
);
|
|
10435
|
+
) });
|
|
10426
10436
|
}
|
|
10427
10437
|
|
|
10438
|
+
// src/internal/components/SettingsMenu/constants.ts
|
|
10439
|
+
var NAV_BUTTONS = [
|
|
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 }
|
|
10445
|
+
];
|
|
10446
|
+
|
|
10428
10447
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10429
|
-
import {
|
|
10430
|
-
import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10448
|
+
import { jsx as jsx53, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10431
10449
|
function SettingsMenu() {
|
|
10450
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10432
10451
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10452
|
+
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10453
|
+
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10454
|
+
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10433
10455
|
return /* @__PURE__ */ jsxs41("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10434
|
-
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-
|
|
10435
|
-
/* @__PURE__ */
|
|
10436
|
-
/* @__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" })
|
|
10437
10459
|
] }),
|
|
10438
|
-
/* @__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(
|
|
10461
|
+
Button,
|
|
10462
|
+
{
|
|
10463
|
+
variant: "outline",
|
|
10464
|
+
size: "large",
|
|
10465
|
+
onClick,
|
|
10466
|
+
disabled: !address,
|
|
10467
|
+
className: cn(
|
|
10468
|
+
//
|
|
10469
|
+
"w-full items-center justify-start",
|
|
10470
|
+
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
10471
|
+
),
|
|
10472
|
+
children: [
|
|
10473
|
+
/* @__PURE__ */ jsx53(Icon, { className: "w-4 h-4" }),
|
|
10474
|
+
/* @__PURE__ */ jsx53("span", { children: name })
|
|
10475
|
+
]
|
|
10476
|
+
},
|
|
10477
|
+
id
|
|
10478
|
+
)) })
|
|
10439
10479
|
] });
|
|
10440
10480
|
}
|
|
10441
10481
|
|
|
10442
10482
|
// src/internal/components/TermsOfService.tsx
|
|
10443
|
-
import { jsx as
|
|
10483
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
10444
10484
|
function TermsOfService() {
|
|
10445
|
-
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." }) });
|
|
10446
10486
|
}
|
|
10447
10487
|
|
|
10448
10488
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10449
|
-
import { useQuery as useQuery5, useQueryClient as
|
|
10450
|
-
import { Activity, ArrowLeft as
|
|
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";
|
|
10451
10491
|
import { useCallback as useCallback12, useState as useState13 } from "react";
|
|
10452
10492
|
|
|
10453
10493
|
// src/internal/components/TransactionsMenu/api.ts
|
|
@@ -10786,15 +10826,15 @@ var formatTimestamp = (timestampMs) => {
|
|
|
10786
10826
|
};
|
|
10787
10827
|
|
|
10788
10828
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10789
|
-
import { jsx as
|
|
10790
|
-
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */
|
|
10791
|
-
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)]" });
|
|
10792
10832
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
10793
10833
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
10794
10834
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
10795
10835
|
return /* @__PURE__ */ jsxs42("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
10796
10836
|
/* @__PURE__ */ jsxs42("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
10797
|
-
/* @__PURE__ */
|
|
10837
|
+
/* @__PURE__ */ jsx55("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
10798
10838
|
/* @__PURE__ */ jsxs42("span", { children: [
|
|
10799
10839
|
formatValue(internal.value, internalDecimals),
|
|
10800
10840
|
" ",
|
|
@@ -10802,8 +10842,8 @@ function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
|
10802
10842
|
] })
|
|
10803
10843
|
] }),
|
|
10804
10844
|
/* @__PURE__ */ jsxs42("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
10805
|
-
/* @__PURE__ */
|
|
10806
|
-
/* @__PURE__ */
|
|
10845
|
+
/* @__PURE__ */ jsx55("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
10846
|
+
/* @__PURE__ */ jsx55("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
10807
10847
|
] })
|
|
10808
10848
|
] });
|
|
10809
10849
|
}
|
|
@@ -10826,31 +10866,31 @@ function TransactionsGroup(props) {
|
|
|
10826
10866
|
/* @__PURE__ */ jsxs42("div", { className: "flex items-center justify-between gap-2", children: [
|
|
10827
10867
|
/* @__PURE__ */ jsxs42("div", { className: "flex items-center gap-2", children: [
|
|
10828
10868
|
getTransactionIcon(parent.direction),
|
|
10829
|
-
/* @__PURE__ */
|
|
10869
|
+
/* @__PURE__ */ jsx55("span", { className: "font-medium", children: isIncoming ? "Received" : "Sent" }),
|
|
10830
10870
|
getStatusIcon(parent.status)
|
|
10831
10871
|
] }),
|
|
10832
|
-
parent.badgeLabel && /* @__PURE__ */
|
|
10872
|
+
parent.badgeLabel && /* @__PURE__ */ jsx55(
|
|
10833
10873
|
"span",
|
|
10834
10874
|
{
|
|
10835
10875
|
className: cn(
|
|
10836
10876
|
"text-xs uppercase tracking-wide text-[var(--l-pass-info)] px-2 py-1 rounded-full",
|
|
10837
|
-
"bg-[var(--l-pass-bg-info)]
|
|
10877
|
+
"bg-[var(--l-pass-bg-info)]"
|
|
10838
10878
|
),
|
|
10839
10879
|
children: parent.badgeLabel
|
|
10840
10880
|
}
|
|
10841
10881
|
)
|
|
10842
10882
|
] }),
|
|
10843
|
-
/* @__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) }),
|
|
10844
10884
|
/* @__PURE__ */ jsxs42("div", { className: "flex flex-col gap-0 text-sm", children: [
|
|
10845
10885
|
/* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10846
|
-
/* @__PURE__ */
|
|
10886
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: isIncoming ? "From:" : "To:" }),
|
|
10847
10887
|
/* @__PURE__ */ jsxs42("span", { className: "font-mono", children: [
|
|
10848
10888
|
parent.counterpartyName || formatAddress2(parent.counterparty),
|
|
10849
|
-
parent.counterpartyIsContract && /* @__PURE__ */
|
|
10889
|
+
parent.counterpartyIsContract && /* @__PURE__ */ jsx55("span", { className: "text-xs text-[var(--l-pass-info)] ml-1", children: "(Contract)" })
|
|
10850
10890
|
] })
|
|
10851
10891
|
] }),
|
|
10852
10892
|
/* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10853
|
-
/* @__PURE__ */
|
|
10893
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Value:" }),
|
|
10854
10894
|
/* @__PURE__ */ jsxs42("span", { className: "font-semibold", children: [
|
|
10855
10895
|
formatValue(parent.value, assetDecimals),
|
|
10856
10896
|
" ",
|
|
@@ -10858,12 +10898,12 @@ function TransactionsGroup(props) {
|
|
|
10858
10898
|
] })
|
|
10859
10899
|
] }),
|
|
10860
10900
|
/* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10861
|
-
/* @__PURE__ */
|
|
10862
|
-
/* @__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}` : "-" })
|
|
10863
10903
|
] }),
|
|
10864
10904
|
parent.method && /* @__PURE__ */ jsxs42("div", { className: "flex justify-between", children: [
|
|
10865
|
-
/* @__PURE__ */
|
|
10866
|
-
/* @__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 })
|
|
10867
10907
|
] })
|
|
10868
10908
|
] }),
|
|
10869
10909
|
internalsToRender.length > 0 && /* @__PURE__ */ jsxs42(
|
|
@@ -10885,11 +10925,11 @@ function TransactionsGroup(props) {
|
|
|
10885
10925
|
internalsToRender.length,
|
|
10886
10926
|
")"
|
|
10887
10927
|
] }),
|
|
10888
|
-
/* @__PURE__ */
|
|
10928
|
+
/* @__PURE__ */ jsx55("span", { children: expanded ? "Hide" : "Show" })
|
|
10889
10929
|
]
|
|
10890
10930
|
}
|
|
10891
10931
|
),
|
|
10892
|
-
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(
|
|
10893
10933
|
InternalTransaction,
|
|
10894
10934
|
{
|
|
10895
10935
|
internal,
|
|
@@ -10907,9 +10947,9 @@ function TransactionsGroup(props) {
|
|
|
10907
10947
|
}
|
|
10908
10948
|
|
|
10909
10949
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10910
|
-
import { jsx as
|
|
10950
|
+
import { jsx as jsx56, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
10911
10951
|
function TransactionsMenu() {
|
|
10912
|
-
const qc =
|
|
10952
|
+
const qc = useQueryClient8();
|
|
10913
10953
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10914
10954
|
const page = useLayoutDataStore((st) => st.page);
|
|
10915
10955
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10931,10 +10971,10 @@ function TransactionsMenu() {
|
|
|
10931
10971
|
);
|
|
10932
10972
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
10933
10973
|
return /* @__PURE__ */ jsxs43("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10934
|
-
/* @__PURE__ */
|
|
10935
|
-
/* @__PURE__ */
|
|
10936
|
-
/* @__PURE__ */
|
|
10937
|
-
/* @__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(
|
|
10938
10978
|
Button,
|
|
10939
10979
|
{
|
|
10940
10980
|
variant: "ghost",
|
|
@@ -10942,35 +10982,35 @@ function TransactionsMenu() {
|
|
|
10942
10982
|
onClick: refreshTxHistory,
|
|
10943
10983
|
disabled: isTxHistoryFetching,
|
|
10944
10984
|
title: "Refresh transactions",
|
|
10945
|
-
children: isTxHistoryFetching ? /* @__PURE__ */
|
|
10985
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ jsx56(Loader12, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx56(RefreshCw2, { className: "h-4 w-4" })
|
|
10946
10986
|
}
|
|
10947
10987
|
)
|
|
10948
10988
|
] }) }),
|
|
10949
10989
|
/* @__PURE__ */ jsxs43("div", { className: "max-h-[60vh] overflow-y-auto", children: [
|
|
10950
|
-
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" }) }),
|
|
10951
10991
|
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs43(
|
|
10952
10992
|
"div",
|
|
10953
10993
|
{
|
|
10954
10994
|
className: cn(
|
|
10955
10995
|
"flex flex-col items-center justify-center p-4",
|
|
10956
|
-
"
|
|
10996
|
+
"rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)]",
|
|
10957
10997
|
"text-[var(--l-pass-error)]"
|
|
10958
10998
|
),
|
|
10959
10999
|
children: [
|
|
10960
|
-
/* @__PURE__ */
|
|
10961
|
-
/* @__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 })
|
|
10962
11002
|
]
|
|
10963
11003
|
}
|
|
10964
11004
|
),
|
|
10965
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: [
|
|
10966
|
-
/* @__PURE__ */
|
|
11006
|
+
/* @__PURE__ */ jsx56(Activity, { className: "w-12 h-12" }),
|
|
10967
11007
|
/* @__PURE__ */ jsxs43("span", { className: "block w-full text-center", children: [
|
|
10968
|
-
/* @__PURE__ */
|
|
10969
|
-
/* @__PURE__ */
|
|
10970
|
-
/* @__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" })
|
|
10971
11011
|
] })
|
|
10972
11012
|
] }),
|
|
10973
|
-
!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(
|
|
10974
11014
|
TransactionsGroup,
|
|
10975
11015
|
{
|
|
10976
11016
|
group,
|
|
@@ -10984,13 +11024,13 @@ function TransactionsMenu() {
|
|
|
10984
11024
|
}
|
|
10985
11025
|
|
|
10986
11026
|
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
10987
|
-
import { ArrowLeft as
|
|
11027
|
+
import { ArrowLeft as ArrowLeft13, Gem, Loader as Loader13, RefreshCw as RefreshCw3 } from "lucide-react";
|
|
10988
11028
|
|
|
10989
11029
|
// src/internal/components/ViewAssetsMenu/AssetItem.tsx
|
|
10990
11030
|
init_base();
|
|
10991
11031
|
import { Check as Check2, Copy as Copy3, ExternalLink } from "lucide-react";
|
|
10992
11032
|
import React14 from "react";
|
|
10993
|
-
import { jsx as
|
|
11033
|
+
import { jsx as jsx57, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
10994
11034
|
var openInExplorer2 = (address) => {
|
|
10995
11035
|
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
10996
11036
|
};
|
|
@@ -11009,80 +11049,80 @@ function AssetItem(props) {
|
|
|
11009
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: [
|
|
11010
11050
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between mb-2", children: [
|
|
11011
11051
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-3", children: [
|
|
11012
|
-
/* @__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) }) }),
|
|
11013
11053
|
/* @__PURE__ */ jsxs44("div", { children: [
|
|
11014
|
-
/* @__PURE__ */
|
|
11015
|
-
/* @__PURE__ */
|
|
11054
|
+
/* @__PURE__ */ jsx57("div", { className: "font-medium", children: asset.name }),
|
|
11055
|
+
/* @__PURE__ */ jsx57("div", { className: "text-sm", children: asset.symbol })
|
|
11016
11056
|
] })
|
|
11017
11057
|
] }),
|
|
11018
11058
|
/* @__PURE__ */ jsxs44("div", { className: "text-right", children: [
|
|
11019
|
-
/* @__PURE__ */
|
|
11020
|
-
/* @__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 })
|
|
11021
11061
|
] })
|
|
11022
11062
|
] }),
|
|
11023
11063
|
asset.address && /* @__PURE__ */ jsxs44("div", { className: "w-full space-y-2 mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: [
|
|
11024
11064
|
/* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11025
|
-
/* @__PURE__ */
|
|
11065
|
+
/* @__PURE__ */ jsx57("span", { children: "Contract Address:" }),
|
|
11026
11066
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11027
|
-
/* @__PURE__ */
|
|
11028
|
-
/* @__PURE__ */
|
|
11067
|
+
/* @__PURE__ */ jsx57("span", { className: `font-mono text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
11068
|
+
/* @__PURE__ */ jsx57(
|
|
11029
11069
|
Button,
|
|
11030
11070
|
{
|
|
11031
11071
|
variant: "ghost",
|
|
11032
11072
|
size: "icon",
|
|
11033
11073
|
title: "Copy address",
|
|
11034
11074
|
onClick: () => handleCopy(asset.address, "address"),
|
|
11035
|
-
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" })
|
|
11036
11076
|
}
|
|
11037
11077
|
),
|
|
11038
|
-
/* @__PURE__ */
|
|
11078
|
+
/* @__PURE__ */ jsx57(
|
|
11039
11079
|
Button,
|
|
11040
11080
|
{
|
|
11041
11081
|
variant: "ghost",
|
|
11042
11082
|
size: "icon",
|
|
11043
11083
|
onClick: () => openInExplorer2(asset.address),
|
|
11044
11084
|
title: "View in explorer",
|
|
11045
|
-
children: /* @__PURE__ */
|
|
11085
|
+
children: /* @__PURE__ */ jsx57(ExternalLink, { className: "w-3 h-3" })
|
|
11046
11086
|
}
|
|
11047
11087
|
)
|
|
11048
11088
|
] })
|
|
11049
11089
|
] }),
|
|
11050
11090
|
asset.decimals && /* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11051
|
-
/* @__PURE__ */
|
|
11052
|
-
/* @__PURE__ */
|
|
11091
|
+
/* @__PURE__ */ jsx57("span", { children: "Decimals:" }),
|
|
11092
|
+
/* @__PURE__ */ jsx57("span", { children: asset.decimals })
|
|
11053
11093
|
] })
|
|
11054
11094
|
] }),
|
|
11055
|
-
asset.type === "native" && address && /* @__PURE__ */
|
|
11056
|
-
/* @__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:" }),
|
|
11057
11097
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11058
|
-
/* @__PURE__ */
|
|
11059
|
-
/* @__PURE__ */
|
|
11098
|
+
/* @__PURE__ */ jsx57("span", { className: "font-mono text-xs", children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
11099
|
+
/* @__PURE__ */ jsx57(
|
|
11060
11100
|
Button,
|
|
11061
11101
|
{
|
|
11062
11102
|
variant: "ghost",
|
|
11063
11103
|
size: "icon",
|
|
11064
11104
|
onClick: () => handleCopy(address, "wallet"),
|
|
11065
11105
|
title: "Copy wallet address",
|
|
11066
|
-
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" })
|
|
11067
11107
|
}
|
|
11068
11108
|
),
|
|
11069
|
-
/* @__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" }) })
|
|
11070
11110
|
] })
|
|
11071
11111
|
] }) })
|
|
11072
11112
|
] });
|
|
11073
11113
|
}
|
|
11074
11114
|
|
|
11075
11115
|
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11076
|
-
import { jsx as
|
|
11116
|
+
import { jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
11077
11117
|
function ViewAssetsMenu() {
|
|
11078
11118
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11079
11119
|
const { address } = useLumiaPassportSession();
|
|
11080
11120
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
11081
11121
|
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11082
|
-
/* @__PURE__ */
|
|
11083
|
-
/* @__PURE__ */
|
|
11084
|
-
/* @__PURE__ */
|
|
11085
|
-
/* @__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" }) })
|
|
11086
11126
|
] }) }),
|
|
11087
11127
|
/* @__PURE__ */ jsxs45(Expandable, { isExpanded: true, contentClassName: "w-full max-h-[60dvh] overflow-y-auto", children: [
|
|
11088
11128
|
!isLoading && assets.length > 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full text-sm text-[var(--l-pass-muted)] mb-4", children: [
|
|
@@ -11092,14 +11132,14 @@ function ViewAssetsMenu() {
|
|
|
11092
11132
|
assets.length !== 1 ? "s" : ""
|
|
11093
11133
|
] }),
|
|
11094
11134
|
isLoading && /* @__PURE__ */ jsxs45("div", { className: "w-full flex items-center justify-center gap-2 p-4", children: [
|
|
11095
|
-
/* @__PURE__ */
|
|
11096
|
-
/* @__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..." })
|
|
11097
11137
|
] }),
|
|
11098
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: [
|
|
11099
|
-
/* @__PURE__ */
|
|
11100
|
-
/* @__PURE__ */
|
|
11139
|
+
/* @__PURE__ */ jsx58(Gem, { className: "w-12 h-12 mb-2" }),
|
|
11140
|
+
/* @__PURE__ */ jsx58("p", { children: "No assets found" })
|
|
11101
11141
|
] }),
|
|
11102
|
-
!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}`)) })
|
|
11103
11143
|
] })
|
|
11104
11144
|
] });
|
|
11105
11145
|
}
|
|
@@ -11190,12 +11230,6 @@ var PAGE_MAP = {
|
|
|
11190
11230
|
description: "Restore your wallet from backup",
|
|
11191
11231
|
component: KeyshareRestoreMenu
|
|
11192
11232
|
},
|
|
11193
|
-
["add-provider" /* ADD_PROVIDER */]: {
|
|
11194
|
-
key: "add-provider" /* ADD_PROVIDER */,
|
|
11195
|
-
title: "Add Provider",
|
|
11196
|
-
description: "Add a new authentication provider",
|
|
11197
|
-
component: AddProviderMenu
|
|
11198
|
-
},
|
|
11199
11233
|
["unlink-provider" /* UNLINK_PROVIDER */]: {
|
|
11200
11234
|
key: "unlink-provider" /* UNLINK_PROVIDER */,
|
|
11201
11235
|
title: "Remove Provider",
|
|
@@ -11205,7 +11239,7 @@ var PAGE_MAP = {
|
|
|
11205
11239
|
};
|
|
11206
11240
|
|
|
11207
11241
|
// src/internal/hooks/usePageMapper.tsx
|
|
11208
|
-
import { jsx as
|
|
11242
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
11209
11243
|
var CLEAR_DIALOG_TIMEOUT = MAIN_DIALOG_ANIMATION_SPEED + 5;
|
|
11210
11244
|
function usePageMapper() {
|
|
11211
11245
|
const page = useLayoutDataStore((st) => st.page);
|
|
@@ -11235,7 +11269,7 @@ function usePageMapper() {
|
|
|
11235
11269
|
const PageContentComponent = pageItem.component;
|
|
11236
11270
|
setDialogTitle(pageItem.title);
|
|
11237
11271
|
setDialogDescription(pageItem.description);
|
|
11238
|
-
setDialogContent(/* @__PURE__ */
|
|
11272
|
+
setDialogContent(/* @__PURE__ */ jsx59(PageContentComponent, {}));
|
|
11239
11273
|
setIsDialogOpen(true);
|
|
11240
11274
|
},
|
|
11241
11275
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
@@ -11252,15 +11286,47 @@ function usePageMapper() {
|
|
|
11252
11286
|
}, [protectedRoutes, page, closeDialog, openDialog]);
|
|
11253
11287
|
}
|
|
11254
11288
|
|
|
11255
|
-
// src/internal/hooks/
|
|
11289
|
+
// src/internal/hooks/useSettingsNotifications.ts
|
|
11290
|
+
init_auth();
|
|
11256
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";
|
|
11257
11323
|
init_auth();
|
|
11258
11324
|
function useWalletStatus() {
|
|
11259
11325
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
11260
11326
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11261
11327
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11262
11328
|
const { config, callbacks } = useLumiaPassportConfig();
|
|
11263
|
-
|
|
11329
|
+
useEffect23(() => {
|
|
11264
11330
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11265
11331
|
const userId = jwtTokenManager2.getUserId();
|
|
11266
11332
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -11280,7 +11346,7 @@ function useWalletStatus() {
|
|
|
11280
11346
|
}
|
|
11281
11347
|
|
|
11282
11348
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11283
|
-
import { jsx as
|
|
11349
|
+
import { jsx as jsx60, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
11284
11350
|
function LumiaPassportDialog() {
|
|
11285
11351
|
const className = useLumiaPassportConfig()?.config?.ui?.dialogClassName;
|
|
11286
11352
|
const session = useLumiaPassportSession((st) => st.session);
|
|
@@ -11288,13 +11354,14 @@ function LumiaPassportDialog() {
|
|
|
11288
11354
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11289
11355
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11290
11356
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11291
|
-
|
|
11357
|
+
useEffect24(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11292
11358
|
usePageMapper();
|
|
11293
11359
|
useAutoConnect();
|
|
11294
11360
|
useCheckVaultStatus();
|
|
11295
11361
|
useBackupStatusChanges();
|
|
11362
|
+
useSettingsNotifications();
|
|
11296
11363
|
useWalletStatus();
|
|
11297
|
-
return /* @__PURE__ */
|
|
11364
|
+
return /* @__PURE__ */ jsx60(
|
|
11298
11365
|
Dialog,
|
|
11299
11366
|
{
|
|
11300
11367
|
open: isDialogOpen,
|
|
@@ -11303,11 +11370,11 @@ function LumiaPassportDialog() {
|
|
|
11303
11370
|
if (!open) setPage(null);
|
|
11304
11371
|
},
|
|
11305
11372
|
children: /* @__PURE__ */ jsxs46(DialogContent, { colorMode, hideClose: isDialogForced, className, children: [
|
|
11306
|
-
/* @__PURE__ */
|
|
11307
|
-
/* @__PURE__ */
|
|
11308
|
-
!!session && /* @__PURE__ */
|
|
11309
|
-
/* @__PURE__ */
|
|
11310
|
-
|
|
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,
|
|
11311
11378
|
{
|
|
11312
11379
|
initial: { opacity: 0, height: mainPageHeight },
|
|
11313
11380
|
animate: { opacity: 1, height: "auto" },
|
|
@@ -11318,20 +11385,20 @@ function LumiaPassportDialog() {
|
|
|
11318
11385
|
},
|
|
11319
11386
|
page || "empty"
|
|
11320
11387
|
) }),
|
|
11321
|
-
/* @__PURE__ */
|
|
11388
|
+
/* @__PURE__ */ jsx60(Footer, {})
|
|
11322
11389
|
] })
|
|
11323
11390
|
}
|
|
11324
11391
|
);
|
|
11325
11392
|
}
|
|
11326
11393
|
|
|
11327
11394
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11328
|
-
import { useEffect as
|
|
11395
|
+
import { useEffect as useEffect26 } from "react";
|
|
11329
11396
|
import { useBalance as useBalance3 } from "wagmi";
|
|
11330
11397
|
init_base();
|
|
11331
11398
|
|
|
11332
11399
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11333
|
-
import { useMutation as
|
|
11334
|
-
import { useEffect as
|
|
11400
|
+
import { useMutation as useMutation11 } from "@tanstack/react-query";
|
|
11401
|
+
import { useEffect as useEffect25 } from "react";
|
|
11335
11402
|
|
|
11336
11403
|
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11337
11404
|
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
@@ -11457,7 +11524,7 @@ async function sseConnectMutation() {
|
|
|
11457
11524
|
|
|
11458
11525
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11459
11526
|
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
11460
|
-
const { mutate: connectSSE } =
|
|
11527
|
+
const { mutate: connectSSE } = useMutation11({
|
|
11461
11528
|
mutationFn: sseConnectMutation,
|
|
11462
11529
|
onSuccess: () => {
|
|
11463
11530
|
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
@@ -11466,7 +11533,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11466
11533
|
console.error("Lumia Price SSE connection error:", err);
|
|
11467
11534
|
}
|
|
11468
11535
|
});
|
|
11469
|
-
|
|
11536
|
+
useEffect25(() => {
|
|
11470
11537
|
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11471
11538
|
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11472
11539
|
if (!enabled) {
|
|
@@ -11497,7 +11564,7 @@ function LumiaPriceSSE() {
|
|
|
11497
11564
|
});
|
|
11498
11565
|
const { lumiaRate, setLumiaRate, setUsdBalance, setBalance } = useLayoutDataStore();
|
|
11499
11566
|
useLumiaPriceSSE(!!address, (update) => setLumiaRate(update.price || 1));
|
|
11500
|
-
|
|
11567
|
+
useEffect26(() => {
|
|
11501
11568
|
const usdBalance = Number(balance?.formatted || 0) * lumiaRate;
|
|
11502
11569
|
setUsdBalance(usdBalance);
|
|
11503
11570
|
setBalance(balance);
|
|
@@ -11549,12 +11616,12 @@ var TssManagerWithRef = React15.forwardRef((props, ref) => {
|
|
|
11549
11616
|
|
|
11550
11617
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11551
11618
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
11552
|
-
import { useQueryClient as
|
|
11553
|
-
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";
|
|
11554
11621
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
11555
11622
|
init_wallet();
|
|
11556
11623
|
function WalletConnectHandler() {
|
|
11557
|
-
const qc =
|
|
11624
|
+
const qc = useQueryClient9();
|
|
11558
11625
|
const { callbacks, notifyProvidersUpdate } = useLumiaPassportConfig();
|
|
11559
11626
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11560
11627
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
@@ -11586,7 +11653,7 @@ function WalletConnectHandler() {
|
|
|
11586
11653
|
const { signMessageAsync } = useSignMessage();
|
|
11587
11654
|
const [hasStartedLinking, setHasStartedLinking] = React16.useState(false);
|
|
11588
11655
|
const timeoutRef = React16.useRef();
|
|
11589
|
-
|
|
11656
|
+
useEffect27(() => {
|
|
11590
11657
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11591
11658
|
setHasStartedLinking(true);
|
|
11592
11659
|
if (isConnected) {
|
|
@@ -11618,7 +11685,7 @@ function WalletConnectHandler() {
|
|
|
11618
11685
|
}
|
|
11619
11686
|
}
|
|
11620
11687
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect]);
|
|
11621
|
-
|
|
11688
|
+
useEffect27(() => {
|
|
11622
11689
|
if (isConnected && address && isWalletLinking && hasStartedLinking) {
|
|
11623
11690
|
handleWalletSign();
|
|
11624
11691
|
}
|
|
@@ -11679,7 +11746,7 @@ function WalletConnectHandler() {
|
|
|
11679
11746
|
}
|
|
11680
11747
|
|
|
11681
11748
|
// src/context/LumiaPassportSessionContext.tsx
|
|
11682
|
-
import { jsx as
|
|
11749
|
+
import { jsx as jsx61, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
11683
11750
|
var useLumiaPassportSession = create5((set) => ({
|
|
11684
11751
|
isLoading: false,
|
|
11685
11752
|
usePaymaster: true,
|
|
@@ -11705,17 +11772,17 @@ var useLumiaPassportSession = create5((set) => ({
|
|
|
11705
11772
|
function LumiaPassportSessionProvider({ children }) {
|
|
11706
11773
|
const { config } = useLumiaPassportConfig();
|
|
11707
11774
|
console.log("[PASSPORT PROVIDER RENDER]: should be as less as possible");
|
|
11708
|
-
return /* @__PURE__ */ jsxs47(
|
|
11775
|
+
return /* @__PURE__ */ jsxs47(Fragment10, { children: [
|
|
11709
11776
|
children,
|
|
11710
|
-
config.wallet?.enabled && /* @__PURE__ */
|
|
11711
|
-
/* @__PURE__ */
|
|
11712
|
-
/* @__PURE__ */
|
|
11777
|
+
config.wallet?.enabled && /* @__PURE__ */ jsx61(WalletConnectHandler, {}),
|
|
11778
|
+
/* @__PURE__ */ jsx61(LumiaPriceSSE, {}),
|
|
11779
|
+
/* @__PURE__ */ jsx61(
|
|
11713
11780
|
TssManagerWithRef,
|
|
11714
11781
|
{
|
|
11715
11782
|
mpcPin: void 0
|
|
11716
11783
|
}
|
|
11717
11784
|
),
|
|
11718
|
-
/* @__PURE__ */
|
|
11785
|
+
/* @__PURE__ */ jsx61(LumiaPassportDialog, {})
|
|
11719
11786
|
] });
|
|
11720
11787
|
}
|
|
11721
11788
|
|
|
@@ -11750,13 +11817,13 @@ var wagmiConfig = createConfig({
|
|
|
11750
11817
|
});
|
|
11751
11818
|
|
|
11752
11819
|
// src/context/WagmiContext.tsx
|
|
11753
|
-
import { jsx as
|
|
11820
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
11754
11821
|
var LumiaWagmiProvider = ({ children }) => {
|
|
11755
|
-
return /* @__PURE__ */
|
|
11822
|
+
return /* @__PURE__ */ jsx62(WagmiProvider, { config: wagmiConfig, children });
|
|
11756
11823
|
};
|
|
11757
11824
|
|
|
11758
11825
|
// src/context/LumiaPassportContext.tsx
|
|
11759
|
-
import { jsx as
|
|
11826
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
11760
11827
|
var LumiaPassportContext = createContext(void 0);
|
|
11761
11828
|
function LumiaPassportProvider(props) {
|
|
11762
11829
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
@@ -11847,7 +11914,7 @@ function LumiaPassportProvider(props) {
|
|
|
11847
11914
|
return next;
|
|
11848
11915
|
});
|
|
11849
11916
|
}, []);
|
|
11850
|
-
|
|
11917
|
+
useEffect28(() => {
|
|
11851
11918
|
if (typeof window === "undefined") return;
|
|
11852
11919
|
if (!config.projectId) return;
|
|
11853
11920
|
const iframeUrl = getIframeUrl();
|
|
@@ -11880,7 +11947,7 @@ function LumiaPassportProvider(props) {
|
|
|
11880
11947
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
11881
11948
|
}
|
|
11882
11949
|
}, [config.projectId, config.features?.mpcSecurity]);
|
|
11883
|
-
return /* @__PURE__ */
|
|
11950
|
+
return /* @__PURE__ */ jsx63(LumiaWagmiProvider, { children: /* @__PURE__ */ jsx63(
|
|
11884
11951
|
LumiaPassportContext.Provider,
|
|
11885
11952
|
{
|
|
11886
11953
|
value: { config, updateConfig, callbacks, providersVersion, notifyProvidersUpdate },
|
|
@@ -11895,10 +11962,10 @@ var useLumiaPassportConfig = () => {
|
|
|
11895
11962
|
};
|
|
11896
11963
|
|
|
11897
11964
|
// src/components/ConnectWalletButton.tsx
|
|
11898
|
-
import { Cloud as Cloud3, Laptop as Laptop2, Loader as
|
|
11899
|
-
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";
|
|
11900
11967
|
init_auth();
|
|
11901
|
-
import { Fragment as
|
|
11968
|
+
import { Fragment as Fragment11, jsx as jsx64, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
11902
11969
|
function getFormattedStatus(label, status, showStatus) {
|
|
11903
11970
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
11904
11971
|
if (!isStatus) return label;
|
|
@@ -11917,7 +11984,7 @@ function ConnectWalletButton(props) {
|
|
|
11917
11984
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
11918
11985
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
11919
11986
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
11920
|
-
|
|
11987
|
+
useEffect29(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
11921
11988
|
const avatar = jwtTokenManager2.getAvatar();
|
|
11922
11989
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
11923
11990
|
const indicators = useMemo3(() => {
|
|
@@ -11928,16 +11995,16 @@ function ConnectWalletButton(props) {
|
|
|
11928
11995
|
return { server, local, backup: hasServerVault };
|
|
11929
11996
|
}, [session, address, hasServerVault]);
|
|
11930
11997
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
11931
|
-
return /* @__PURE__ */
|
|
11998
|
+
return /* @__PURE__ */ jsx64("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
11932
11999
|
/** external Buttons can be provided */
|
|
11933
|
-
/* @__PURE__ */
|
|
12000
|
+
/* @__PURE__ */ jsx64(Fragment11, { children: ConnectButton ? /* @__PURE__ */ jsxs48(
|
|
11934
12001
|
ConnectButton,
|
|
11935
12002
|
{
|
|
11936
12003
|
type: "button",
|
|
11937
12004
|
disabled: isConnecting,
|
|
11938
12005
|
onClick: () => setPage("auth" /* AUTH */),
|
|
11939
12006
|
children: [
|
|
11940
|
-
isConnecting && /* @__PURE__ */
|
|
12007
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader14, { className: "w-4 h-4 animate-spin" }),
|
|
11941
12008
|
connectButtonLabel
|
|
11942
12009
|
]
|
|
11943
12010
|
}
|
|
@@ -11955,7 +12022,7 @@ function ConnectWalletButton(props) {
|
|
|
11955
12022
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
11956
12023
|
),
|
|
11957
12024
|
children: [
|
|
11958
|
-
isConnecting && /* @__PURE__ */
|
|
12025
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader14, { className: "w-4 h-4 animate-spin" }),
|
|
11959
12026
|
connectButtonLabel.toUpperCase()
|
|
11960
12027
|
]
|
|
11961
12028
|
}
|
|
@@ -11971,21 +12038,21 @@ function ConnectWalletButton(props) {
|
|
|
11971
12038
|
"rounded-[var(--l-pass-el-bdrs)] p-2 max-w-sm min-w-[256px]"
|
|
11972
12039
|
),
|
|
11973
12040
|
children: [
|
|
11974
|
-
/* @__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(
|
|
11975
12042
|
"img",
|
|
11976
12043
|
{
|
|
11977
12044
|
src: avatar,
|
|
11978
12045
|
alt: "User avatar",
|
|
11979
12046
|
className: "w-full h-full object-cover"
|
|
11980
12047
|
}
|
|
11981
|
-
) : /* @__PURE__ */
|
|
12048
|
+
) : /* @__PURE__ */ jsx64(LumiaIcon, { width: 48, height: 48 }) }),
|
|
11982
12049
|
/* @__PURE__ */ jsxs48("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
11983
|
-
/* @__PURE__ */
|
|
11984
|
-
/* @__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)]" })
|
|
11985
12052
|
] }),
|
|
11986
12053
|
/* @__PURE__ */ jsxs48("div", { className: "flex items-center space-x-1", children: [
|
|
11987
12054
|
/* @__PURE__ */ jsxs48("div", { className: "group relative", children: [
|
|
11988
|
-
/* @__PURE__ */
|
|
12055
|
+
/* @__PURE__ */ jsx64(
|
|
11989
12056
|
Cloud3,
|
|
11990
12057
|
{
|
|
11991
12058
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-success)]" : "text-[var(--l-pass-warning)]"}`
|
|
@@ -12007,7 +12074,7 @@ function ConnectWalletButton(props) {
|
|
|
12007
12074
|
)
|
|
12008
12075
|
] }),
|
|
12009
12076
|
/* @__PURE__ */ jsxs48("div", { className: "group relative", children: [
|
|
12010
|
-
/* @__PURE__ */
|
|
12077
|
+
/* @__PURE__ */ jsx64(
|
|
12011
12078
|
Laptop2,
|
|
12012
12079
|
{
|
|
12013
12080
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-success)]" : "text-[var(--l-pass-warning)]"}`
|
|
@@ -12029,7 +12096,7 @@ function ConnectWalletButton(props) {
|
|
|
12029
12096
|
)
|
|
12030
12097
|
] }),
|
|
12031
12098
|
/* @__PURE__ */ jsxs48("div", { className: "group relative", children: [
|
|
12032
|
-
/* @__PURE__ */
|
|
12099
|
+
/* @__PURE__ */ jsx64(
|
|
12033
12100
|
Shield2,
|
|
12034
12101
|
{
|
|
12035
12102
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-success)]" : "text-[var(--l-pass-warning)]"}`
|
|
@@ -12095,7 +12162,7 @@ function useLumiaPassportOpen() {
|
|
|
12095
12162
|
}
|
|
12096
12163
|
|
|
12097
12164
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12098
|
-
import { useCallback as useCallback18, useEffect as
|
|
12165
|
+
import { useCallback as useCallback18, useEffect as useEffect30 } from "react";
|
|
12099
12166
|
function useLumiaPassportColorMode() {
|
|
12100
12167
|
const preferedColorMode = useLumiaPassportConfig().config?.preferedColorMode;
|
|
12101
12168
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
@@ -12107,7 +12174,7 @@ function useLumiaPassportColorMode() {
|
|
|
12107
12174
|
},
|
|
12108
12175
|
[handleStoreColorMode]
|
|
12109
12176
|
);
|
|
12110
|
-
|
|
12177
|
+
useEffect30(() => {
|
|
12111
12178
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12112
12179
|
if (!targetColorMode && !preferedColorMode) {
|
|
12113
12180
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12125,23 +12192,23 @@ function useLumiaPassportColorMode() {
|
|
|
12125
12192
|
|
|
12126
12193
|
// src/components/ThemeToggle.tsx
|
|
12127
12194
|
import { Moon, Sun } from "lucide-react";
|
|
12128
|
-
import { jsx as
|
|
12195
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
12129
12196
|
function ThemeToggle(props) {
|
|
12130
12197
|
const { colorMode, setColorMode } = useLumiaPassportColorMode();
|
|
12131
|
-
return /* @__PURE__ */
|
|
12198
|
+
return /* @__PURE__ */ jsx65(
|
|
12132
12199
|
"div",
|
|
12133
12200
|
{
|
|
12134
12201
|
className: "lumia-scope",
|
|
12135
12202
|
"data-lumia-passport-mode": colorMode,
|
|
12136
12203
|
style: { width: "fit-content", height: "fit-content" },
|
|
12137
|
-
children: /* @__PURE__ */
|
|
12204
|
+
children: /* @__PURE__ */ jsx65(
|
|
12138
12205
|
Button,
|
|
12139
12206
|
{
|
|
12140
12207
|
...props,
|
|
12141
12208
|
variant: "ghost",
|
|
12142
12209
|
onClick: () => setColorMode(colorMode === "light" ? "dark" : "light"),
|
|
12143
12210
|
title: `Current theme: ${colorMode}. Click to switch.`,
|
|
12144
|
-
children: colorMode === "dark" ? /* @__PURE__ */
|
|
12211
|
+
children: colorMode === "dark" ? /* @__PURE__ */ jsx65(Sun, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx65(Moon, { className: "w-4 h-4" })
|
|
12145
12212
|
}
|
|
12146
12213
|
)
|
|
12147
12214
|
}
|
|
@@ -12299,7 +12366,7 @@ var rainbowTheme = {
|
|
|
12299
12366
|
};
|
|
12300
12367
|
|
|
12301
12368
|
// src/context/RainbowKitContext.tsx
|
|
12302
|
-
import { Fragment as
|
|
12369
|
+
import { Fragment as Fragment12, jsx as jsx66 } from "react/jsx-runtime";
|
|
12303
12370
|
var LumiaRainbowKitProvider = ({ children }) => {
|
|
12304
12371
|
const { config } = useLumiaPassportConfig();
|
|
12305
12372
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
@@ -12328,9 +12395,9 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12328
12395
|
);
|
|
12329
12396
|
const isWalletEnabled = config.wallet?.enabled ?? false;
|
|
12330
12397
|
if (!isWalletEnabled) {
|
|
12331
|
-
return /* @__PURE__ */
|
|
12398
|
+
return /* @__PURE__ */ jsx66(Fragment12, { children });
|
|
12332
12399
|
}
|
|
12333
|
-
return /* @__PURE__ */
|
|
12400
|
+
return /* @__PURE__ */ jsx66(WagmiProvider2, { config: rainbowConfig2, children: /* @__PURE__ */ jsx66(RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
12334
12401
|
};
|
|
12335
12402
|
|
|
12336
12403
|
// src/internal/components/UserOpStatus.tsx
|
|
@@ -12348,7 +12415,7 @@ function cn2(...inputs) {
|
|
|
12348
12415
|
}
|
|
12349
12416
|
|
|
12350
12417
|
// src/internal/components/ui/badge.tsx
|
|
12351
|
-
import { jsx as
|
|
12418
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
12352
12419
|
var badgeVariants = cva2(
|
|
12353
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",
|
|
12354
12421
|
{
|
|
@@ -12368,13 +12435,13 @@ var badgeVariants = cva2(
|
|
|
12368
12435
|
}
|
|
12369
12436
|
);
|
|
12370
12437
|
function Badge({ className, variant, ...props }) {
|
|
12371
|
-
return /* @__PURE__ */
|
|
12438
|
+
return /* @__PURE__ */ jsx67("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12372
12439
|
}
|
|
12373
12440
|
|
|
12374
12441
|
// src/internal/components/Address.tsx
|
|
12375
12442
|
import * as React19 from "react";
|
|
12376
12443
|
import { Copy as Copy4, ExternalLink as ExternalLink2 } from "lucide-react";
|
|
12377
|
-
import { jsx as
|
|
12444
|
+
import { jsx as jsx68, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
12378
12445
|
function toExplorerAddressUrl(address, chain) {
|
|
12379
12446
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12380
12447
|
if (!base2) return null;
|
|
@@ -12396,11 +12463,11 @@ var Address = ({
|
|
|
12396
12463
|
const addr = address || "";
|
|
12397
12464
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12398
12465
|
const [copied, setCopied] = React19.useState(false);
|
|
12399
|
-
if (!addr) return /* @__PURE__ */
|
|
12466
|
+
if (!addr) return /* @__PURE__ */ jsx68("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12400
12467
|
return /* @__PURE__ */ jsxs49("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12401
|
-
label && /* @__PURE__ */
|
|
12402
|
-
/* @__PURE__ */
|
|
12403
|
-
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(
|
|
12404
12471
|
Button,
|
|
12405
12472
|
{
|
|
12406
12473
|
variant: "ghost",
|
|
@@ -12414,10 +12481,10 @@ var Address = ({
|
|
|
12414
12481
|
} catch {
|
|
12415
12482
|
}
|
|
12416
12483
|
},
|
|
12417
|
-
children: /* @__PURE__ */
|
|
12484
|
+
children: /* @__PURE__ */ jsx68(Copy4, { className: "h-4 w-4" })
|
|
12418
12485
|
}
|
|
12419
12486
|
),
|
|
12420
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
12487
|
+
showExplorer && explorer && /* @__PURE__ */ jsx68(
|
|
12421
12488
|
"a",
|
|
12422
12489
|
{
|
|
12423
12490
|
href: explorer,
|
|
@@ -12425,7 +12492,7 @@ var Address = ({
|
|
|
12425
12492
|
rel: "noreferrer noopener",
|
|
12426
12493
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12427
12494
|
title: "Open in explorer",
|
|
12428
|
-
children: /* @__PURE__ */
|
|
12495
|
+
children: /* @__PURE__ */ jsx68(ExternalLink2, { className: "h-4 w-4" })
|
|
12429
12496
|
}
|
|
12430
12497
|
)
|
|
12431
12498
|
] });
|
|
@@ -12433,7 +12500,7 @@ var Address = ({
|
|
|
12433
12500
|
|
|
12434
12501
|
// src/internal/components/UserOpStatus.tsx
|
|
12435
12502
|
init_base();
|
|
12436
|
-
import { jsx as
|
|
12503
|
+
import { jsx as jsx69, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
12437
12504
|
var UserOpStatus = ({
|
|
12438
12505
|
userOpHash,
|
|
12439
12506
|
chain,
|
|
@@ -12567,30 +12634,30 @@ var UserOpStatus = ({
|
|
|
12567
12634
|
if (receipt) {
|
|
12568
12635
|
const ok = !!receipt.success;
|
|
12569
12636
|
return /* @__PURE__ */ jsxs50(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
12570
|
-
ok ? /* @__PURE__ */
|
|
12637
|
+
ok ? /* @__PURE__ */ jsx69(CheckCircle28, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx69(AlertCircle4, { className: "h-3 w-3" }),
|
|
12571
12638
|
ok ? "Included" : "Failed"
|
|
12572
12639
|
] });
|
|
12573
12640
|
}
|
|
12574
12641
|
if (rejected) {
|
|
12575
12642
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
12576
|
-
/* @__PURE__ */
|
|
12643
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-3 w-3" }),
|
|
12577
12644
|
" Rejected by bundler"
|
|
12578
12645
|
] });
|
|
12579
12646
|
}
|
|
12580
12647
|
if (timedOut) {
|
|
12581
12648
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "warning", className: "gap-1", children: [
|
|
12582
|
-
/* @__PURE__ */
|
|
12649
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-3 w-3" }),
|
|
12583
12650
|
" Timeout - may be rejected"
|
|
12584
12651
|
] });
|
|
12585
12652
|
}
|
|
12586
12653
|
if (mempool) {
|
|
12587
12654
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "outline", className: "gap-1", children: [
|
|
12588
|
-
/* @__PURE__ */
|
|
12655
|
+
/* @__PURE__ */ jsx69(Clock2, { className: "h-3 w-3" }),
|
|
12589
12656
|
" Pending in bundler"
|
|
12590
12657
|
] });
|
|
12591
12658
|
}
|
|
12592
12659
|
return /* @__PURE__ */ jsxs50(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
12593
|
-
/* @__PURE__ */
|
|
12660
|
+
/* @__PURE__ */ jsx69(Clock2, { className: "h-3 w-3" }),
|
|
12594
12661
|
" Waiting"
|
|
12595
12662
|
] });
|
|
12596
12663
|
};
|
|
@@ -12603,17 +12670,17 @@ var UserOpStatus = ({
|
|
|
12603
12670
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center justify-between mb-3", children: [
|
|
12604
12671
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-2", children: [
|
|
12605
12672
|
stateBadge(),
|
|
12606
|
-
/* @__PURE__ */
|
|
12673
|
+
/* @__PURE__ */ jsx69("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
12607
12674
|
] }),
|
|
12608
12675
|
/* @__PURE__ */ jsxs50(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
12609
|
-
/* @__PURE__ */
|
|
12610
|
-
/* @__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" })
|
|
12611
12678
|
] })
|
|
12612
12679
|
] }),
|
|
12613
12680
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
12614
|
-
/* @__PURE__ */
|
|
12615
|
-
/* @__PURE__ */
|
|
12616
|
-
/* @__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(
|
|
12617
12684
|
Button,
|
|
12618
12685
|
{
|
|
12619
12686
|
variant: "ghost",
|
|
@@ -12625,14 +12692,14 @@ var UserOpStatus = ({
|
|
|
12625
12692
|
} catch {
|
|
12626
12693
|
}
|
|
12627
12694
|
},
|
|
12628
|
-
children: /* @__PURE__ */
|
|
12695
|
+
children: /* @__PURE__ */ jsx69(Copy5, { className: "h-3.5 w-3.5" })
|
|
12629
12696
|
}
|
|
12630
12697
|
)
|
|
12631
12698
|
] }),
|
|
12632
12699
|
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
12633
|
-
/* @__PURE__ */
|
|
12634
|
-
/* @__PURE__ */
|
|
12635
|
-
/* @__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(
|
|
12636
12703
|
Button,
|
|
12637
12704
|
{
|
|
12638
12705
|
variant: "ghost",
|
|
@@ -12644,10 +12711,10 @@ var UserOpStatus = ({
|
|
|
12644
12711
|
} catch {
|
|
12645
12712
|
}
|
|
12646
12713
|
},
|
|
12647
|
-
children: /* @__PURE__ */
|
|
12714
|
+
children: /* @__PURE__ */ jsx69(Copy5, { className: "h-3.5 w-3.5" })
|
|
12648
12715
|
}
|
|
12649
12716
|
),
|
|
12650
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */
|
|
12717
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx69(
|
|
12651
12718
|
"a",
|
|
12652
12719
|
{
|
|
12653
12720
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -12655,7 +12722,7 @@ var UserOpStatus = ({
|
|
|
12655
12722
|
rel: "noreferrer noopener",
|
|
12656
12723
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
12657
12724
|
title: "Open in explorer",
|
|
12658
|
-
children: /* @__PURE__ */
|
|
12725
|
+
children: /* @__PURE__ */ jsx69(ExternalLink3, { className: "h-3.5 w-3.5" })
|
|
12659
12726
|
}
|
|
12660
12727
|
)
|
|
12661
12728
|
] }),
|
|
@@ -12668,7 +12735,7 @@ var UserOpStatus = ({
|
|
|
12668
12735
|
" \u2022 Success ",
|
|
12669
12736
|
String(!!receipt.success)
|
|
12670
12737
|
] }),
|
|
12671
|
-
/* @__PURE__ */
|
|
12738
|
+
/* @__PURE__ */ jsx69("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs50("span", { className: "ml-2", children: [
|
|
12672
12739
|
"\u2022 Polling for ",
|
|
12673
12740
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
12674
12741
|
"s"
|
|
@@ -12676,24 +12743,24 @@ var UserOpStatus = ({
|
|
|
12676
12743
|
mempool && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
12677
12744
|
/* @__PURE__ */ jsxs50("div", { children: [
|
|
12678
12745
|
"Seen by bundler at ",
|
|
12679
|
-
/* @__PURE__ */
|
|
12746
|
+
/* @__PURE__ */ jsx69(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
12680
12747
|
] }),
|
|
12681
12748
|
/* @__PURE__ */ jsxs50("div", { children: [
|
|
12682
12749
|
"sender ",
|
|
12683
|
-
/* @__PURE__ */
|
|
12750
|
+
/* @__PURE__ */ jsx69(Address, { address: mempool.sender, chain, truncate: false })
|
|
12684
12751
|
] })
|
|
12685
12752
|
] }),
|
|
12686
12753
|
error && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
12687
|
-
/* @__PURE__ */
|
|
12754
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-4 w-4" }),
|
|
12688
12755
|
" ",
|
|
12689
12756
|
error
|
|
12690
12757
|
] }),
|
|
12691
12758
|
rejected && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
12692
|
-
/* @__PURE__ */
|
|
12759
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-4 w-4" }),
|
|
12693
12760
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
12694
12761
|
] }),
|
|
12695
12762
|
timedOut && /* @__PURE__ */ jsxs50("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
12696
|
-
/* @__PURE__ */
|
|
12763
|
+
/* @__PURE__ */ jsx69(AlertCircle4, { className: "h-4 w-4" }),
|
|
12697
12764
|
"Stopped polling after ",
|
|
12698
12765
|
Math.round(maxPollTimeMs / 1e3),
|
|
12699
12766
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -12706,7 +12773,7 @@ var UserOpStatus = ({
|
|
|
12706
12773
|
// src/internal/components/Hash.tsx
|
|
12707
12774
|
import * as React21 from "react";
|
|
12708
12775
|
import { Copy as Copy6, ExternalLink as ExternalLink4 } from "lucide-react";
|
|
12709
|
-
import { jsx as
|
|
12776
|
+
import { jsx as jsx70, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
12710
12777
|
function toExplorerUrl(kind, value, chain) {
|
|
12711
12778
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12712
12779
|
if (!base2) return null;
|
|
@@ -12730,11 +12797,11 @@ var Hash = ({
|
|
|
12730
12797
|
const value = hash || "";
|
|
12731
12798
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12732
12799
|
const [copied, setCopied] = React21.useState(false);
|
|
12733
|
-
if (!value) return /* @__PURE__ */
|
|
12800
|
+
if (!value) return /* @__PURE__ */ jsx70("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12734
12801
|
return /* @__PURE__ */ jsxs51("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12735
|
-
label && /* @__PURE__ */
|
|
12736
|
-
/* @__PURE__ */
|
|
12737
|
-
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(
|
|
12738
12805
|
Button,
|
|
12739
12806
|
{
|
|
12740
12807
|
variant: "ghost",
|
|
@@ -12748,10 +12815,10 @@ var Hash = ({
|
|
|
12748
12815
|
} catch {
|
|
12749
12816
|
}
|
|
12750
12817
|
},
|
|
12751
|
-
children: /* @__PURE__ */
|
|
12818
|
+
children: /* @__PURE__ */ jsx70(Copy6, { className: "h-4 w-4" })
|
|
12752
12819
|
}
|
|
12753
12820
|
),
|
|
12754
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
12821
|
+
showExplorer && explorer && /* @__PURE__ */ jsx70(
|
|
12755
12822
|
"a",
|
|
12756
12823
|
{
|
|
12757
12824
|
href: explorer,
|
|
@@ -12759,7 +12826,7 @@ var Hash = ({
|
|
|
12759
12826
|
rel: "noreferrer noopener",
|
|
12760
12827
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12761
12828
|
title: "Open in explorer",
|
|
12762
|
-
children: /* @__PURE__ */
|
|
12829
|
+
children: /* @__PURE__ */ jsx70(ExternalLink4, { className: "h-4 w-4" })
|
|
12763
12830
|
}
|
|
12764
12831
|
)
|
|
12765
12832
|
] });
|
|
@@ -12767,13 +12834,13 @@ var Hash = ({
|
|
|
12767
12834
|
|
|
12768
12835
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
12769
12836
|
init_base();
|
|
12770
|
-
import { useEffect as
|
|
12771
|
-
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";
|
|
12772
12839
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
12773
12840
|
const [transactions, setTransactions] = useState18([]);
|
|
12774
12841
|
const [loading, setLoading] = useState18(true);
|
|
12775
12842
|
const [error, setError] = useState18(null);
|
|
12776
|
-
|
|
12843
|
+
useEffect32(() => {
|
|
12777
12844
|
const fetchTransactions = async () => {
|
|
12778
12845
|
try {
|
|
12779
12846
|
setLoading(true);
|
|
@@ -12811,7 +12878,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12811
12878
|
const formatAddress3 = (addr) => {
|
|
12812
12879
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
12813
12880
|
};
|
|
12814
|
-
const
|
|
12881
|
+
const formatDate3 = (timestamp) => {
|
|
12815
12882
|
return new Date(timestamp).toLocaleString();
|
|
12816
12883
|
};
|
|
12817
12884
|
const openTransaction = (txHash) => {
|
|
@@ -12820,20 +12887,20 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12820
12887
|
};
|
|
12821
12888
|
if (loading) {
|
|
12822
12889
|
return /* @__PURE__ */ jsxs52("div", { className: "p-4 text-center", children: [
|
|
12823
|
-
/* @__PURE__ */
|
|
12824
|
-
/* @__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..." })
|
|
12825
12892
|
] });
|
|
12826
12893
|
}
|
|
12827
12894
|
if (error) {
|
|
12828
12895
|
return /* @__PURE__ */ jsxs52("div", { className: "p-4 text-center", children: [
|
|
12829
|
-
/* @__PURE__ */
|
|
12830
|
-
/* @__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" })
|
|
12831
12898
|
] });
|
|
12832
12899
|
}
|
|
12833
12900
|
if (transactions.length === 0) {
|
|
12834
|
-
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" }) });
|
|
12835
12902
|
}
|
|
12836
|
-
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(
|
|
12837
12904
|
"div",
|
|
12838
12905
|
{
|
|
12839
12906
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
@@ -12842,8 +12909,8 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12842
12909
|
/* @__PURE__ */ jsxs52("div", { className: "flex justify-between items-start mb-2", children: [
|
|
12843
12910
|
/* @__PURE__ */ jsxs52("div", { className: "flex-1", children: [
|
|
12844
12911
|
/* @__PURE__ */ jsxs52("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
12845
|
-
/* @__PURE__ */
|
|
12846
|
-
/* @__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(
|
|
12847
12914
|
"span",
|
|
12848
12915
|
{
|
|
12849
12916
|
className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`,
|
|
@@ -12853,21 +12920,21 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12853
12920
|
] }),
|
|
12854
12921
|
/* @__PURE__ */ jsxs52("div", { className: "text-sm space-y-1", children: [
|
|
12855
12922
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12856
|
-
/* @__PURE__ */
|
|
12923
|
+
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "From:" }),
|
|
12857
12924
|
/* @__PURE__ */ jsxs52("span", { className: "font-mono ml-1", children: [
|
|
12858
12925
|
formatAddress3(tx.from.hash),
|
|
12859
|
-
tx.from.is_contract && /* @__PURE__ */
|
|
12926
|
+
tx.from.is_contract && /* @__PURE__ */ jsx71("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
12860
12927
|
] })
|
|
12861
12928
|
] }),
|
|
12862
12929
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12863
|
-
/* @__PURE__ */
|
|
12930
|
+
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "To:" }),
|
|
12864
12931
|
/* @__PURE__ */ jsxs52("span", { className: "font-mono ml-1", children: [
|
|
12865
12932
|
formatAddress3(tx.to.hash),
|
|
12866
|
-
tx.to.is_contract && /* @__PURE__ */
|
|
12933
|
+
tx.to.is_contract && /* @__PURE__ */ jsx71("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
12867
12934
|
] })
|
|
12868
12935
|
] }),
|
|
12869
12936
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12870
|
-
/* @__PURE__ */
|
|
12937
|
+
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "Value:" }),
|
|
12871
12938
|
/* @__PURE__ */ jsxs52("span", { className: "font-semibold ml-1", children: [
|
|
12872
12939
|
formatValue2(tx.value),
|
|
12873
12940
|
" LUMIA"
|
|
@@ -12876,15 +12943,15 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12876
12943
|
] })
|
|
12877
12944
|
] }),
|
|
12878
12945
|
/* @__PURE__ */ jsxs52("div", { className: "text-right text-xs text-gray-500", children: [
|
|
12879
|
-
/* @__PURE__ */
|
|
12946
|
+
/* @__PURE__ */ jsx71("div", { children: formatDate3(tx.timestamp) }),
|
|
12880
12947
|
/* @__PURE__ */ jsxs52("div", { className: "mt-1", children: [
|
|
12881
12948
|
"Gas: ",
|
|
12882
12949
|
parseInt(tx.gas_used).toLocaleString()
|
|
12883
12950
|
] }),
|
|
12884
|
-
tx.method && /* @__PURE__ */
|
|
12951
|
+
tx.method && /* @__PURE__ */ jsx71("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
12885
12952
|
] })
|
|
12886
12953
|
] }),
|
|
12887
|
-
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)) })
|
|
12888
12955
|
]
|
|
12889
12956
|
},
|
|
12890
12957
|
tx.hash
|
|
@@ -13227,10 +13294,10 @@ function useSmartAccountTransactions() {
|
|
|
13227
13294
|
}
|
|
13228
13295
|
|
|
13229
13296
|
// src/modules/linkedProfiles.ts
|
|
13297
|
+
import * as React24 from "react";
|
|
13298
|
+
init_auth();
|
|
13230
13299
|
init_common();
|
|
13231
13300
|
init_types();
|
|
13232
|
-
init_auth();
|
|
13233
|
-
import * as React24 from "react";
|
|
13234
13301
|
function useLumiaPassportLinkedProfiles() {
|
|
13235
13302
|
const { providersVersion } = useLumiaPassportConfig();
|
|
13236
13303
|
const [profiles, setProfiles] = React24.useState([]);
|
|
@@ -13247,8 +13314,8 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
13247
13314
|
return {
|
|
13248
13315
|
...p,
|
|
13249
13316
|
displayName: info.name,
|
|
13250
|
-
icon: info.icon
|
|
13251
|
-
color: info.color
|
|
13317
|
+
icon: info.icon
|
|
13318
|
+
// color: info.color,
|
|
13252
13319
|
};
|
|
13253
13320
|
});
|
|
13254
13321
|
setProfiles(enriched);
|