@lumiapassport/ui-kit 1.14.8 → 1.14.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/iframe/index.html +23 -16
- package/dist/iframe/main.js +156 -231
- package/dist/iframe/main.js.map +1 -1
- package/dist/index.cjs +928 -831
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +980 -895
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2068,7 +2068,7 @@ function getTssUrl3() {
|
|
|
2068
2068
|
return getServiceUrls().tssUrl;
|
|
2069
2069
|
}
|
|
2070
2070
|
function getProviderDisplayInfo(provider) {
|
|
2071
|
-
return PROVIDERS_META[provider];
|
|
2071
|
+
return PROVIDERS_META[provider] || UNKNOWN_PROVIDER;
|
|
2072
2072
|
}
|
|
2073
2073
|
function formatDate(dateString) {
|
|
2074
2074
|
if (!dateString) return "Never";
|
|
@@ -2079,7 +2079,7 @@ function formatDate(dateString) {
|
|
|
2079
2079
|
return "Invalid date";
|
|
2080
2080
|
}
|
|
2081
2081
|
}
|
|
2082
|
-
var PROVIDERS_META;
|
|
2082
|
+
var PROVIDERS_META, UNKNOWN_PROVIDER;
|
|
2083
2083
|
var init_types = __esm({
|
|
2084
2084
|
"src/internal/auth/providers/types.ts"() {
|
|
2085
2085
|
init_assets();
|
|
@@ -2091,8 +2091,11 @@ var init_types = __esm({
|
|
|
2091
2091
|
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
2092
2092
|
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
2093
2093
|
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
2094
|
+
x: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
2095
|
+
// Alias for twitter (API uses 'x')
|
|
2094
2096
|
wallet: { name: "Wallet", icon: Wallet2, description: "External wallet (EOA)" }
|
|
2095
2097
|
};
|
|
2098
|
+
UNKNOWN_PROVIDER = { name: "Unknown", icon: Key, description: "Unknown provider" };
|
|
2096
2099
|
}
|
|
2097
2100
|
});
|
|
2098
2101
|
|
|
@@ -4329,7 +4332,7 @@ var init_profile = __esm({
|
|
|
4329
4332
|
});
|
|
4330
4333
|
|
|
4331
4334
|
// src/styles/built.css
|
|
4332
|
-
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 .invisible{visibility:hidden}.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-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.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-0{right:0}.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-\\[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-1{margin-left:.25rem;margin-right:.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-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.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 .mt-\\[var\\(--l-pass-gap\\)\\]{margin-top:var(--l-pass-gap)}.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 .aspect-square{aspect-ratio:1/1}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.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-\\[100dvh\\]{height:100dvh}.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-\\[95dvh\\]{max-height:95dvh}.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-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.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 .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-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-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.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-end{align-items:flex-end}.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 .overflow-y-hidden{overflow-y:hidden}.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-normal{overflow-wrap:normal;word-break:normal}.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-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-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-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/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-accent\\)\\]{background-color:var(--l-pass-accent)}.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-warning-bg\\)\\]{background-color:var(--l-pass-warning-bg)}.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-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-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-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.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-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-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 .py-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-gap\\)\\]{padding-top:var(--l-pass-gap);padding-bottom:var(--l-pass-gap)}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.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-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-normal{font-weight:400}.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-8{line-height:2rem}.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-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-black{--tw-text-opacity:1;color:rgb(0 0 0/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-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-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.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-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 .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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 .grayscale{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 .grayscale{--tw-grayscale:grayscale(100%)}.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-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,384px);--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,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--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%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--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:var(--l-pass-ff);font-optical-sizing:auto;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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 p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none;appearance:none;-webkit-appearance:none;-moz-appearance:none}.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-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@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:100%;padding-right:var(--l-pass-list-scrollbar-pd-r,0);overflow-y:auto;max-height:var(--l-pass-scrollbar-mah,300px)}.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 .noScrollbars::-webkit-scrollbar{display:none}.lumia-scope .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.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-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.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 .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\\: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-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/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-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/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-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\\:underline:hover{text-decoration-line:underline}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{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-\\[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 .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 .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.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 :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.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 (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@media (prefers-color-scheme:dark){.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-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\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4335
|
+
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 .invisible{visibility:hidden}.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-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.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-0{right:0}.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-\\[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 .m-4{margin:1rem}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.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-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.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 .mt-\\[var\\(--l-pass-gap\\)\\]{margin-top:var(--l-pass-gap)}.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 .aspect-square{aspect-ratio:1/1}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.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-\\[100dvh\\]{height:100dvh}.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-\\[95dvh\\]{max-height:95dvh}.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-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.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 .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-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-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.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-end{align-items:flex-end}.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 .overflow-y-hidden{overflow-y:hidden}.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-normal{overflow-wrap:normal;word-break:normal}.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-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-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-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/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-accent\\)\\]{background-color:var(--l-pass-accent)}.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-muted\\)\\]{background-color:var(--l-pass-bg-muted)}.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-warning-bg\\)\\]{background-color:var(--l-pass-warning-bg)}.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-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-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-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.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-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-gap\\)\\]{padding-left:var(--l-pass-gap);padding-right:var(--l-pass-gap)}.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-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 .py-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-gap\\)\\]{padding-top:var(--l-pass-gap);padding-bottom:var(--l-pass-gap)}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.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-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-normal{font-weight:400}.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-8{line-height:2rem}.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-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-black{--tw-text-opacity:1;color:rgb(0 0 0/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-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-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.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-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 .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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 .shadow-xl{--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 .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 .grayscale{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 .grayscale{--tw-grayscale:grayscale(100%)}.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-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,384px);--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,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--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%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--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:var(--l-pass-ff);font-optical-sizing:auto;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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 p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none;appearance:none;-webkit-appearance:none;-moz-appearance:none}.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-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@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:100%;padding-right:var(--l-pass-list-scrollbar-pd-r,0);overflow-y:auto;max-height:var(--l-pass-scrollbar-mah,300px)}.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 .noScrollbars::-webkit-scrollbar{display:none}.lumia-scope .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.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-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.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 .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\\: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-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/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-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/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-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\\:underline:hover{text-decoration-line:underline}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{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-\\[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 .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 .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.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 :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.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 (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@media (prefers-color-scheme:dark){.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-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\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4333
4336
|
|
|
4334
4337
|
// src/context/LumiaPassportContext.tsx
|
|
4335
4338
|
init_lumiaPassport();
|
|
@@ -4340,13 +4343,13 @@ import {
|
|
|
4340
4343
|
createContext,
|
|
4341
4344
|
useCallback as useCallback20,
|
|
4342
4345
|
useContext,
|
|
4343
|
-
useEffect as
|
|
4346
|
+
useEffect as useEffect32,
|
|
4344
4347
|
useMemo as useMemo5,
|
|
4345
4348
|
useRef as useRef13
|
|
4346
4349
|
} from "react";
|
|
4347
4350
|
|
|
4348
4351
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4349
|
-
import { Fragment as
|
|
4352
|
+
import { Fragment as Fragment22 } from "react";
|
|
4350
4353
|
import { create as create6 } from "zustand";
|
|
4351
4354
|
|
|
4352
4355
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
@@ -4379,27 +4382,29 @@ var PROVIDERS_META2 = {
|
|
|
4379
4382
|
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
4380
4383
|
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
4381
4384
|
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
4385
|
+
x: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
4386
|
+
// Alias for twitter (API uses 'x')
|
|
4382
4387
|
wallet: { name: "Wallet", icon: Wallet22, description: "External wallet (EOA)" }
|
|
4383
4388
|
};
|
|
4384
4389
|
|
|
4385
4390
|
// src/internal/hooks/useLayoutDataStore.ts
|
|
4386
|
-
var PageKey = /* @__PURE__ */ ((
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
return
|
|
4391
|
+
var PageKey = /* @__PURE__ */ ((PageKey3) => {
|
|
4392
|
+
PageKey3["AUTH"] = "auth";
|
|
4393
|
+
PageKey3["TERMS_OF_SERVICE"] = "terms-of-service";
|
|
4394
|
+
PageKey3["MAIN_MENU"] = "main-menu";
|
|
4395
|
+
PageKey3["SETTINGS"] = "settings";
|
|
4396
|
+
PageKey3["SEND"] = "send";
|
|
4397
|
+
PageKey3["RECEIVE"] = "receive";
|
|
4398
|
+
PageKey3["BUY"] = "buy";
|
|
4399
|
+
PageKey3["KYC"] = "kyc";
|
|
4400
|
+
PageKey3["TRANSACTIONS"] = "transactions";
|
|
4401
|
+
PageKey3["ASSETS"] = "assets";
|
|
4402
|
+
PageKey3["MANAGE_WALLET"] = "manage-wallet";
|
|
4403
|
+
PageKey3["UNLINK_PROVIDER"] = "unlink-provider";
|
|
4404
|
+
PageKey3["SECURITY"] = "security";
|
|
4405
|
+
PageKey3["KEYSARE_BACKUP"] = "keysare-backup";
|
|
4406
|
+
PageKey3["KEYSHARE_RESTORE"] = "keyshare-restore";
|
|
4407
|
+
return PageKey3;
|
|
4403
4408
|
})(PageKey || {});
|
|
4404
4409
|
var useLayoutDataStore = create((set) => ({
|
|
4405
4410
|
page: null,
|
|
@@ -4521,12 +4526,12 @@ function BalanceFeedProvider() {
|
|
|
4521
4526
|
|
|
4522
4527
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4523
4528
|
import { AnimatePresence as AnimatePresence3, motion as motion3 } from "framer-motion";
|
|
4524
|
-
import { useEffect as
|
|
4529
|
+
import { useEffect as useEffect30 } from "react";
|
|
4525
4530
|
|
|
4526
4531
|
// package.json
|
|
4527
4532
|
var package_default = {
|
|
4528
4533
|
name: "@lumiapassport/ui-kit",
|
|
4529
|
-
version: "1.14.
|
|
4534
|
+
version: "1.14.10",
|
|
4530
4535
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4531
4536
|
type: "module",
|
|
4532
4537
|
main: "./dist/index.cjs",
|
|
@@ -5800,15 +5805,17 @@ import { debounce } from "lodash-es";
|
|
|
5800
5805
|
import { useCallback as useCallback3, useEffect as useEffect8 } from "react";
|
|
5801
5806
|
var DEBOUNCE_DELAY = 50;
|
|
5802
5807
|
function useDetectMaxScrollHeight() {
|
|
5808
|
+
const page = useLayoutDataStore((state) => state.page);
|
|
5803
5809
|
const setIsMobileView = useLayoutStore((state) => state.setIsMobileView);
|
|
5804
5810
|
const setMaxScrollHeight = useLayoutStore((state) => state.setMaxScrollHeight);
|
|
5805
5811
|
const onResize = useCallback3(
|
|
5806
5812
|
debounce(({ width, height }) => {
|
|
5807
|
-
const
|
|
5813
|
+
const headerHeight = page === "auth" /* AUTH */ || page === "keyshare-restore" /* KEYSHARE_RESTORE */ ? 0 : 116;
|
|
5814
|
+
const limContentHeight = height * 0.92 - headerHeight - 72;
|
|
5808
5815
|
setIsMobileView(width < height && (width < 475 || limContentHeight <= MAX_CONTENT_HEIGHT));
|
|
5809
5816
|
setMaxScrollHeight(Math.min(limContentHeight, MAX_CONTENT_HEIGHT));
|
|
5810
5817
|
}, DEBOUNCE_DELAY),
|
|
5811
|
-
[setMaxScrollHeight, setIsMobileView]
|
|
5818
|
+
[page, setMaxScrollHeight, setIsMobileView]
|
|
5812
5819
|
);
|
|
5813
5820
|
useEffect8(() => {
|
|
5814
5821
|
const obs = new ResizeObserver(([entry]) => onResize(entry.contentRect));
|
|
@@ -5819,15 +5826,65 @@ function useDetectMaxScrollHeight() {
|
|
|
5819
5826
|
}
|
|
5820
5827
|
|
|
5821
5828
|
// src/internal/hooks/usePageMapper.tsx
|
|
5822
|
-
import { useCallback as useCallback17, useEffect as
|
|
5829
|
+
import { useCallback as useCallback17, useEffect as useEffect27 } from "react";
|
|
5823
5830
|
|
|
5824
5831
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5825
5832
|
import { AnimatePresence, motion } from "framer-motion";
|
|
5826
5833
|
import { AlertTriangle as AlertTriangle2, Loader as Loader5 } from "lucide-react";
|
|
5827
5834
|
import { useEffect as useEffect11, useMemo } from "react";
|
|
5828
5835
|
|
|
5829
|
-
// src/internal/components/
|
|
5836
|
+
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
5837
|
+
import { useCallback as useCallback4, useEffect as useEffect9, useRef as useRef4 } from "react";
|
|
5838
|
+
var useExpandable = (props) => {
|
|
5839
|
+
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
5840
|
+
const expandableRef = useRef4(null);
|
|
5841
|
+
const contentRef = useRef4(null);
|
|
5842
|
+
useEffect9(() => {
|
|
5843
|
+
if (!expandableRef.current) return;
|
|
5844
|
+
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
5845
|
+
}, []);
|
|
5846
|
+
const setExpandableHeight = useCallback4(
|
|
5847
|
+
(isExpnd) => {
|
|
5848
|
+
if (!contentRef.current || !expandableRef.current) return;
|
|
5849
|
+
expandableRef.current.style.setProperty(
|
|
5850
|
+
"--ifo-basic-expandable-h",
|
|
5851
|
+
isExpnd ? `${contentRef.current.clientHeight}px` : `${minHeight}px`
|
|
5852
|
+
);
|
|
5853
|
+
},
|
|
5854
|
+
// ON_RESIZE_DELEAY),
|
|
5855
|
+
[minHeight]
|
|
5856
|
+
);
|
|
5857
|
+
useEffect9(() => {
|
|
5858
|
+
if (!contentRef.current || !expandableRef.current) return;
|
|
5859
|
+
const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
|
|
5860
|
+
obs.observe(expandableRef.current);
|
|
5861
|
+
return () => obs.disconnect();
|
|
5862
|
+
}, [isExpanded, children]);
|
|
5863
|
+
return {
|
|
5864
|
+
expandableRef,
|
|
5865
|
+
contentRef
|
|
5866
|
+
};
|
|
5867
|
+
};
|
|
5868
|
+
|
|
5869
|
+
// src/internal/components/Expandable/Expandable.tsx
|
|
5830
5870
|
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
5871
|
+
function Expandable(props) {
|
|
5872
|
+
const { children, className, contentClassName, minHeight, divProps } = props;
|
|
5873
|
+
const { expandableRef, contentRef } = useExpandable(props);
|
|
5874
|
+
return /* @__PURE__ */ jsx14(
|
|
5875
|
+
"div",
|
|
5876
|
+
{
|
|
5877
|
+
...divProps,
|
|
5878
|
+
ref: expandableRef,
|
|
5879
|
+
className: cn("w-full overflow-y-hidden", className),
|
|
5880
|
+
style: { height: "var(--ifo-basic-expandable-h)", transition: "height 375ms ease" },
|
|
5881
|
+
children: /* @__PURE__ */ jsx14("div", { className: cn("w-full", contentClassName), ref: contentRef, style: minHeight ? { minHeight } : void 0, children })
|
|
5882
|
+
}
|
|
5883
|
+
);
|
|
5884
|
+
}
|
|
5885
|
+
|
|
5886
|
+
// src/internal/components/ui/highlight.tsx
|
|
5887
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
5831
5888
|
var CARD_STYLES = {
|
|
5832
5889
|
info: "text-[var(--l-pass-info)] bg-[var(--l-pass-bg-info)]",
|
|
5833
5890
|
success: "text-[var(--l-pass-success)] bg-[var(--l-pass-bg-success)]",
|
|
@@ -5836,7 +5893,7 @@ var CARD_STYLES = {
|
|
|
5836
5893
|
};
|
|
5837
5894
|
function Highlight(props) {
|
|
5838
5895
|
const { type = "info", children, className } = props;
|
|
5839
|
-
return /* @__PURE__ */
|
|
5896
|
+
return /* @__PURE__ */ jsx15(
|
|
5840
5897
|
"div",
|
|
5841
5898
|
{
|
|
5842
5899
|
className: cn(
|
|
@@ -5873,13 +5930,13 @@ var useAuthStore = create3((set) => ({
|
|
|
5873
5930
|
}));
|
|
5874
5931
|
|
|
5875
5932
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5876
|
-
import { jsx as
|
|
5933
|
+
import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
5877
5934
|
function AuthFailedStep() {
|
|
5878
5935
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
5879
5936
|
const { failedType, setStep, setFailedType, setAlert } = useAuthStore();
|
|
5880
5937
|
const isCritical = failedType === "critical" || failedType === "config";
|
|
5881
5938
|
return /* @__PURE__ */ jsxs12("div", { className: "w-full flex flex-col text-center gap-4 p-4", children: [
|
|
5882
|
-
/* @__PURE__ */
|
|
5939
|
+
/* @__PURE__ */ jsx16(
|
|
5883
5940
|
"div",
|
|
5884
5941
|
{
|
|
5885
5942
|
className: cn(
|
|
@@ -5887,28 +5944,28 @@ function AuthFailedStep() {
|
|
|
5887
5944
|
isCritical ? "text-[var(--l-pass-error)] bg-[var(--l-pass-bg-error)]" : "text-[var(--l-pass-warning)] bg-[var(--l-pass-bg-warning)]"
|
|
5888
5945
|
),
|
|
5889
5946
|
children: /* @__PURE__ */ jsxs12("div", { className: "w-full flex items-center justify-center gap-2", children: [
|
|
5890
|
-
isCritical ? /* @__PURE__ */
|
|
5891
|
-
/* @__PURE__ */
|
|
5947
|
+
isCritical ? /* @__PURE__ */ jsx16(AlertTriangle, { className: "w-5 h-5 text-[var(--l-pass-error)]" }) : /* @__PURE__ */ jsx16(Cross, { className: "w-5 h-5 text-[var(--l-pass-warning)]" }),
|
|
5948
|
+
/* @__PURE__ */ jsx16("span", { className: "text-center block text-xl font-bold", children: failedType === "config" ? "Configuration Error" : failedType === "critical" ? "Critical Error" : "Failed" })
|
|
5892
5949
|
] })
|
|
5893
5950
|
}
|
|
5894
5951
|
),
|
|
5895
5952
|
failedType === "config" && /* @__PURE__ */ jsxs12("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-info)]", children: [
|
|
5896
|
-
/* @__PURE__ */
|
|
5953
|
+
/* @__PURE__ */ jsx16("div", { className: "text-sm font-medium text-[var(--l-pass-info)] mb-2", children: "To fix this issue:" }),
|
|
5897
5954
|
/* @__PURE__ */ jsxs12("ul", { className: "text-xs text-[var(--l-pass-info)] text-left space-y-1 list-disc list-inside", children: [
|
|
5898
|
-
/* @__PURE__ */
|
|
5899
|
-
/* @__PURE__ */
|
|
5900
|
-
/* @__PURE__ */
|
|
5955
|
+
/* @__PURE__ */ jsx16("li", { children: "Contact your project administrator" }),
|
|
5956
|
+
/* @__PURE__ */ jsx16("li", { children: "Verify projectId is correctly configured" }),
|
|
5957
|
+
/* @__PURE__ */ jsx16("li", { children: "Check project metadata on the server" })
|
|
5901
5958
|
] })
|
|
5902
5959
|
] }),
|
|
5903
5960
|
failedType === "critical" && /* @__PURE__ */ jsxs12("div", { className: "p-2 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)] border", children: [
|
|
5904
|
-
/* @__PURE__ */
|
|
5961
|
+
/* @__PURE__ */ jsx16("div", { className: "text-sm font-semibold text-[var(--l-pass-error)] mb-2", children: "What to do next:" }),
|
|
5905
5962
|
/* @__PURE__ */ jsxs12("ul", { className: "text-xs text-[var(--l-pass-error)] text-left space-y-1 list-disc list-inside", children: [
|
|
5906
|
-
/* @__PURE__ */
|
|
5907
|
-
/* @__PURE__ */
|
|
5908
|
-
/* @__PURE__ */
|
|
5963
|
+
/* @__PURE__ */ jsx16("li", { children: "Contact support immediately" }),
|
|
5964
|
+
/* @__PURE__ */ jsx16("li", { children: "Provide your projectId and error details" }),
|
|
5965
|
+
/* @__PURE__ */ jsx16("li", { children: "You may need to create a new account" })
|
|
5909
5966
|
] })
|
|
5910
5967
|
] }),
|
|
5911
|
-
/* @__PURE__ */
|
|
5968
|
+
/* @__PURE__ */ jsx16("div", { className: "flex flex-col gap-2", children: /* @__PURE__ */ jsx16(
|
|
5912
5969
|
Button,
|
|
5913
5970
|
{
|
|
5914
5971
|
size: "large",
|
|
@@ -5932,11 +5989,11 @@ init_auth();
|
|
|
5932
5989
|
init_profile();
|
|
5933
5990
|
|
|
5934
5991
|
// src/internal/components/ui/input.tsx
|
|
5935
|
-
import React2, { useImperativeHandle, useRef as
|
|
5936
|
-
import { jsx as
|
|
5992
|
+
import React2, { useImperativeHandle, useRef as useRef5 } from "react";
|
|
5993
|
+
import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
5937
5994
|
var Input = React2.forwardRef((props, ref) => {
|
|
5938
5995
|
const { className, disabled, error, Icon, element, ...inputProps } = props;
|
|
5939
|
-
const internalRef =
|
|
5996
|
+
const internalRef = useRef5(null);
|
|
5940
5997
|
useImperativeHandle(ref, () => internalRef.current);
|
|
5941
5998
|
return /* @__PURE__ */ jsxs13("div", { className: cn("w-full flex flex-col gap-1", className), children: [
|
|
5942
5999
|
/* @__PURE__ */ jsxs13(
|
|
@@ -5955,8 +6012,8 @@ var Input = React2.forwardRef((props, ref) => {
|
|
|
5955
6012
|
internalRef.current?.focus();
|
|
5956
6013
|
},
|
|
5957
6014
|
children: [
|
|
5958
|
-
Icon && /* @__PURE__ */
|
|
5959
|
-
/* @__PURE__ */
|
|
6015
|
+
Icon && /* @__PURE__ */ jsx17("div", { className: "flex flex-none items-center justify-center w-6 h-6 p-1", children: /* @__PURE__ */ jsx17(Icon, { width: 16, height: 16, className: "text-[var(--l-pass-fg)]" }) }),
|
|
6016
|
+
/* @__PURE__ */ jsx17(
|
|
5960
6017
|
"input",
|
|
5961
6018
|
{
|
|
5962
6019
|
ref: internalRef,
|
|
@@ -5975,13 +6032,13 @@ var Input = React2.forwardRef((props, ref) => {
|
|
|
5975
6032
|
]
|
|
5976
6033
|
}
|
|
5977
6034
|
),
|
|
5978
|
-
!!error?.length && /* @__PURE__ */
|
|
6035
|
+
!!error?.length && /* @__PURE__ */ jsx17("span", { className: "block text-[var(--l-pass-error)]", children: error })
|
|
5979
6036
|
] });
|
|
5980
6037
|
});
|
|
5981
6038
|
Input.displayName = "Input";
|
|
5982
6039
|
|
|
5983
6040
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameInput.tsx
|
|
5984
|
-
import { jsx as
|
|
6041
|
+
import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
5985
6042
|
var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
5986
6043
|
const [displayName, setDisplayName] = useState4("");
|
|
5987
6044
|
const [isLoading, setIsLoading] = useState4(false);
|
|
@@ -6011,12 +6068,12 @@ var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
|
6011
6068
|
};
|
|
6012
6069
|
return /* @__PURE__ */ jsxs14("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6013
6070
|
/* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
6014
|
-
/* @__PURE__ */
|
|
6015
|
-
/* @__PURE__ */
|
|
6071
|
+
/* @__PURE__ */ jsx18(LumiaLogo, { size: 24, className: "w-6 h-6" }),
|
|
6072
|
+
/* @__PURE__ */ jsx18("span", { className: "font-bold text-xl leading-6", children: "What's your name?" })
|
|
6016
6073
|
] }),
|
|
6017
|
-
/* @__PURE__ */
|
|
6074
|
+
/* @__PURE__ */ jsx18("span", { className: "block w-full text-xs text-center", children: "This helps personalize your experience" }),
|
|
6018
6075
|
/* @__PURE__ */ jsxs14("form", { onSubmit: handleSubmit, className: "w-full flex flex-col gap-[var(--l-pass-pd)]", children: [
|
|
6019
|
-
/* @__PURE__ */
|
|
6076
|
+
/* @__PURE__ */ jsx18(
|
|
6020
6077
|
Input,
|
|
6021
6078
|
{
|
|
6022
6079
|
Icon: User,
|
|
@@ -6034,7 +6091,7 @@ var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
|
6034
6091
|
}
|
|
6035
6092
|
),
|
|
6036
6093
|
/* @__PURE__ */ jsxs14("div", { className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
6037
|
-
/* @__PURE__ */
|
|
6094
|
+
/* @__PURE__ */ jsx18(
|
|
6038
6095
|
Button,
|
|
6039
6096
|
{
|
|
6040
6097
|
type: "submit",
|
|
@@ -6044,7 +6101,7 @@ var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
|
6044
6101
|
children: isLoading ? "Saving..." : "Continue"
|
|
6045
6102
|
}
|
|
6046
6103
|
),
|
|
6047
|
-
/* @__PURE__ */
|
|
6104
|
+
/* @__PURE__ */ jsx18(
|
|
6048
6105
|
Button,
|
|
6049
6106
|
{
|
|
6050
6107
|
className: "flex-1 text-[var(--l-pass-fg-muted)]",
|
|
@@ -6062,7 +6119,7 @@ var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
|
6062
6119
|
};
|
|
6063
6120
|
|
|
6064
6121
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameStep.tsx
|
|
6065
|
-
import { jsx as
|
|
6122
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
6066
6123
|
function DisplayNameStep(props) {
|
|
6067
6124
|
const { onAuthSuccess } = props;
|
|
6068
6125
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -6085,7 +6142,7 @@ function DisplayNameStep(props) {
|
|
|
6085
6142
|
await new Promise((resolve) => setTimeout(resolve, 250));
|
|
6086
6143
|
if (onAuthSuccess) await onAuthSuccess();
|
|
6087
6144
|
};
|
|
6088
|
-
return /* @__PURE__ */
|
|
6145
|
+
return /* @__PURE__ */ jsx19(DisplayNameInput, { onComplete, onSkip });
|
|
6089
6146
|
}
|
|
6090
6147
|
|
|
6091
6148
|
// src/internal/components/AuthMenu/PassKeyStep.tsx
|
|
@@ -6093,7 +6150,7 @@ import { ArrowLeft as ArrowLeft3, Key as Key3 } from "lucide-react";
|
|
|
6093
6150
|
import { useCallback as useCallback5 } from "react";
|
|
6094
6151
|
|
|
6095
6152
|
// src/internal/assets/PasskeyAddIcon.tsx
|
|
6096
|
-
import { jsx as
|
|
6153
|
+
import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
6097
6154
|
function PasskeyAddIcon(props) {
|
|
6098
6155
|
const { width = "24", height = "24", className = "w-6 h-6", ...rest } = props;
|
|
6099
6156
|
return /* @__PURE__ */ jsxs15(
|
|
@@ -6109,11 +6166,11 @@ function PasskeyAddIcon(props) {
|
|
|
6109
6166
|
strokeLinejoin: "round",
|
|
6110
6167
|
xmlns: "http://www.w3.org/2000/svg",
|
|
6111
6168
|
children: [
|
|
6112
|
-
/* @__PURE__ */
|
|
6113
|
-
/* @__PURE__ */
|
|
6114
|
-
/* @__PURE__ */
|
|
6115
|
-
/* @__PURE__ */
|
|
6116
|
-
/* @__PURE__ */
|
|
6169
|
+
/* @__PURE__ */ jsx20("path", { d: "m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4" }),
|
|
6170
|
+
/* @__PURE__ */ jsx20("path", { d: "m21 2-9.6 9.6" }),
|
|
6171
|
+
/* @__PURE__ */ jsx20("circle", { cx: "7.5", cy: "15.5", r: "5.5" }),
|
|
6172
|
+
/* @__PURE__ */ jsx20("path", { d: "M18 15v6" }),
|
|
6173
|
+
/* @__PURE__ */ jsx20("path", { d: "M21 18h-6" })
|
|
6117
6174
|
]
|
|
6118
6175
|
}
|
|
6119
6176
|
);
|
|
@@ -6121,58 +6178,6 @@ function PasskeyAddIcon(props) {
|
|
|
6121
6178
|
|
|
6122
6179
|
// src/internal/components/AuthMenu/PassKeyStep.tsx
|
|
6123
6180
|
init_auth();
|
|
6124
|
-
|
|
6125
|
-
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
6126
|
-
import { useCallback as useCallback4, useEffect as useEffect9, useRef as useRef5 } from "react";
|
|
6127
|
-
var useExpandable = (props) => {
|
|
6128
|
-
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
6129
|
-
const expandableRef = useRef5(null);
|
|
6130
|
-
const contentRef = useRef5(null);
|
|
6131
|
-
useEffect9(() => {
|
|
6132
|
-
if (!expandableRef.current) return;
|
|
6133
|
-
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
6134
|
-
}, []);
|
|
6135
|
-
const setExpandableHeight = useCallback4(
|
|
6136
|
-
(isExpnd) => {
|
|
6137
|
-
if (!contentRef.current || !expandableRef.current) return;
|
|
6138
|
-
expandableRef.current.style.setProperty(
|
|
6139
|
-
"--ifo-basic-expandable-h",
|
|
6140
|
-
isExpnd ? `${contentRef.current.clientHeight}px` : `${minHeight}px`
|
|
6141
|
-
);
|
|
6142
|
-
},
|
|
6143
|
-
// ON_RESIZE_DELEAY),
|
|
6144
|
-
[minHeight]
|
|
6145
|
-
);
|
|
6146
|
-
useEffect9(() => {
|
|
6147
|
-
if (!contentRef.current || !expandableRef.current) return;
|
|
6148
|
-
const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
|
|
6149
|
-
obs.observe(expandableRef.current);
|
|
6150
|
-
return () => obs.disconnect();
|
|
6151
|
-
}, [isExpanded, children]);
|
|
6152
|
-
return {
|
|
6153
|
-
expandableRef,
|
|
6154
|
-
contentRef
|
|
6155
|
-
};
|
|
6156
|
-
};
|
|
6157
|
-
|
|
6158
|
-
// src/internal/components/Expandable/Expandable.tsx
|
|
6159
|
-
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
6160
|
-
function Expandable(props) {
|
|
6161
|
-
const { children, className, contentClassName, minHeight, divProps } = props;
|
|
6162
|
-
const { expandableRef, contentRef } = useExpandable(props);
|
|
6163
|
-
return /* @__PURE__ */ jsx20(
|
|
6164
|
-
"div",
|
|
6165
|
-
{
|
|
6166
|
-
...divProps,
|
|
6167
|
-
ref: expandableRef,
|
|
6168
|
-
className: cn("w-full overflow-y-hidden", className),
|
|
6169
|
-
style: { height: "var(--ifo-basic-expandable-h)", transition: "height 375ms ease" },
|
|
6170
|
-
children: /* @__PURE__ */ jsx20("div", { className: cn("w-full", contentClassName), ref: contentRef, style: minHeight ? { minHeight } : void 0, children })
|
|
6171
|
-
}
|
|
6172
|
-
);
|
|
6173
|
-
}
|
|
6174
|
-
|
|
6175
|
-
// src/internal/components/AuthMenu/PassKeyStep.tsx
|
|
6176
6181
|
import { Fragment as Fragment2, jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
6177
6182
|
function normalizeWebAuthnError(err) {
|
|
6178
6183
|
const raw = err?.message || String(err || "");
|
|
@@ -7569,28 +7574,27 @@ var AuthMenu = () => {
|
|
|
7569
7574
|
}),
|
|
7570
7575
|
[onAuthSuccess, goBackToSignIn, checkDisplayNameRequired]
|
|
7571
7576
|
);
|
|
7572
|
-
return /* @__PURE__ */
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
stepContent[step]
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
]
|
|
7591
|
-
}
|
|
7592
|
-
|
|
7593
|
-
) }) });
|
|
7577
|
+
return /* @__PURE__ */ jsxs23("div", { className: "w-full", children: [
|
|
7578
|
+
/* @__PURE__ */ jsx29(AnimatePresence, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx29(
|
|
7579
|
+
motion.div,
|
|
7580
|
+
{
|
|
7581
|
+
initial: { opacity: 0, height: DEFAULT_AUTH_MENU_HEIGHT },
|
|
7582
|
+
animate: { opacity: 1, height: "auto" },
|
|
7583
|
+
exit: { opacity: 0, height: DEFAULT_AUTH_MENU_HEIGHT },
|
|
7584
|
+
style: { overflow: "hidden" },
|
|
7585
|
+
transition: Y_ANIMATION_SETUP,
|
|
7586
|
+
children: stepContent[step]
|
|
7587
|
+
},
|
|
7588
|
+
step
|
|
7589
|
+
) }),
|
|
7590
|
+
/* @__PURE__ */ jsx29(Expandable, { isExpanded: !!alert2, contentClassName: "px-[var(--l-pass-pd)]", children: /* @__PURE__ */ jsxs23(Highlight, { type: "error", className: "w-full flex gap-[var(--l-pass-gap)] ", children: [
|
|
7591
|
+
/* @__PURE__ */ jsx29(AlertTriangle2, { className: "w-5 h-5 text-[var(--l-pass-error)]" }),
|
|
7592
|
+
/* @__PURE__ */ jsxs23("span", { className: "block w-full flex flex-col gap-1 flex-1", children: [
|
|
7593
|
+
alert2?.title && /* @__PURE__ */ jsx29("span", { className: "block font-bold leading-5", children: alert2.title }),
|
|
7594
|
+
/* @__PURE__ */ jsx29("span", { className: "block whitespace-pre-line", children: alert2?.message || "Unknown error" })
|
|
7595
|
+
] })
|
|
7596
|
+
] }) })
|
|
7597
|
+
] });
|
|
7594
7598
|
};
|
|
7595
7599
|
|
|
7596
7600
|
// src/internal/components/BuyMenu/ByuMenu.tsx
|
|
@@ -8237,15 +8241,15 @@ function BuyMenu() {
|
|
|
8237
8241
|
simplex: "bg-[#081f2c]",
|
|
8238
8242
|
binance: "bg-[#f3ba2f]"
|
|
8239
8243
|
};
|
|
8240
|
-
return /* @__PURE__ */
|
|
8244
|
+
return /* @__PURE__ */ jsx36(
|
|
8241
8245
|
"div",
|
|
8242
8246
|
{
|
|
8243
8247
|
style: {
|
|
8244
8248
|
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
8245
8249
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
8246
8250
|
},
|
|
8247
|
-
className: "list-scrollbar-y w-full
|
|
8248
|
-
children: [
|
|
8251
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
8252
|
+
children: /* @__PURE__ */ jsxs28(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
8249
8253
|
/* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8250
8254
|
/* @__PURE__ */ jsx36(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx36(ArrowLeft5, { className: "h-4 w-4" }) }),
|
|
8251
8255
|
/* @__PURE__ */ jsx36("span", { className: "text-xl font-semibold", children: "Buy LUMIA" })
|
|
@@ -8263,22 +8267,20 @@ function BuyMenu() {
|
|
|
8263
8267
|
id
|
|
8264
8268
|
)) }),
|
|
8265
8269
|
/* @__PURE__ */ jsx36(ProviderComponent, { control, walletAddress })
|
|
8266
|
-
]
|
|
8270
|
+
] })
|
|
8267
8271
|
}
|
|
8268
8272
|
);
|
|
8269
8273
|
}
|
|
8270
8274
|
|
|
8271
8275
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8272
|
-
import { useMutation as useMutation10, useQuery as
|
|
8273
|
-
import { AlertCircle as AlertCircle2, CheckCircle2,
|
|
8276
|
+
import { useMutation as useMutation10, useQuery as useQuery7, useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
8277
|
+
import { AlertCircle as AlertCircle2, CheckCircle2, CloudDownload, Loader as Loader11, UserCircle as UserCircle2 } from "lucide-react";
|
|
8274
8278
|
import { useEffect as useEffect19 } from "react";
|
|
8275
8279
|
init_vaultClient();
|
|
8276
8280
|
|
|
8277
8281
|
// src/internal/components/KeyshareRestoreMenu/components/MethodSelector.tsx
|
|
8278
|
-
import {
|
|
8279
|
-
import {
|
|
8280
|
-
import { Fragment as Fragment6, useEffect as useEffect17, useMemo as useMemo2 } from "react";
|
|
8281
|
-
init_vaultClient();
|
|
8282
|
+
import { Cloud, FileDown, FileUp, ShieldCheck } from "lucide-react";
|
|
8283
|
+
import { Fragment as Fragment6, useMemo as useMemo2 } from "react";
|
|
8282
8284
|
|
|
8283
8285
|
// src/internal/components/KeyshareRestoreMenu/hooks/useCheckBackupAvailability.ts
|
|
8284
8286
|
init_vaultClient();
|
|
@@ -8690,15 +8692,13 @@ function useRestoreAccount() {
|
|
|
8690
8692
|
|
|
8691
8693
|
// src/internal/components/KeyshareRestoreMenu/components/MethodSelector.tsx
|
|
8692
8694
|
import { jsx as jsx37, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
8693
|
-
var
|
|
8694
|
-
{ method: "server", label: "
|
|
8695
|
-
{ method: "file", label: "File", Icon: FileDown }
|
|
8696
|
-
|
|
8695
|
+
var restoreMethodes = (mode) => [
|
|
8696
|
+
{ method: "server", label: "Secured Vault", Icon: ShieldCheck },
|
|
8697
|
+
{ method: "file", label: "Local File", Icon: mode === "restore" ? FileUp : FileDown },
|
|
8698
|
+
{ method: "cloud", label: "Cloud", Icon: Cloud }
|
|
8697
8699
|
];
|
|
8698
8700
|
function MethodSelector(props) {
|
|
8699
|
-
const { mode = "restore" } = props;
|
|
8700
|
-
const qc = useQueryClient7();
|
|
8701
|
-
const address = useLumiaPassportSession((st) => st.address);
|
|
8701
|
+
const { mode = "restore", serverRecoveryStatus } = props;
|
|
8702
8702
|
const {
|
|
8703
8703
|
method: selectedRecoveryMethod,
|
|
8704
8704
|
setMethod,
|
|
@@ -8708,16 +8708,8 @@ function MethodSelector(props) {
|
|
|
8708
8708
|
setError,
|
|
8709
8709
|
setSuccess
|
|
8710
8710
|
} = useRestoreStore();
|
|
8711
|
-
const { data: serverRecoveryStatus, isFetching: isBackupStatusLoading } = useQuery6({
|
|
8712
|
-
retry: false,
|
|
8713
|
-
queryKey: [CHECK_BACKUP_QUERY_KEY, address],
|
|
8714
|
-
queryFn: async () => await getShareRecoveryStats()
|
|
8715
|
-
});
|
|
8716
|
-
useEffect17(() => {
|
|
8717
|
-
qc.invalidateQueries({ queryKey: [CHECK_BACKUP_QUERY_KEY] });
|
|
8718
|
-
}, [qc]);
|
|
8719
8711
|
const recoveryRenderMethods = useMemo2(() => {
|
|
8720
|
-
const methodsWithBackupData =
|
|
8712
|
+
const methodsWithBackupData = restoreMethodes(mode).map((mt) => {
|
|
8721
8713
|
const lastCreatedBackupMethod = serverRecoveryStatus?.created?.encryptionMethod;
|
|
8722
8714
|
let data = null;
|
|
8723
8715
|
switch (true) {
|
|
@@ -8739,19 +8731,21 @@ function MethodSelector(props) {
|
|
|
8739
8731
|
}, [mode, serverRecoveryStatus]);
|
|
8740
8732
|
if (!!selectedRecoveryMethod) return null;
|
|
8741
8733
|
return /* @__PURE__ */ jsxs29(Fragment6, { children: [
|
|
8742
|
-
/* @__PURE__ */ jsx37("span", { className: "block w-full text-xs font-semibold text-center leading-8 text-[var(--l-pass-fg-muted)]", children:
|
|
8734
|
+
/* @__PURE__ */ jsx37("span", { className: "block w-full text-xs font-semibold text-center leading-8 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx37("span", { className: "leading-8", children: mode === "restore" ? "Choose restore method" : "Create or Update Backup via" }) }),
|
|
8743
8735
|
/* @__PURE__ */ jsx37(
|
|
8744
8736
|
"div",
|
|
8745
8737
|
{
|
|
8746
8738
|
style: { gridTemplateColumns: `repeat(${recoveryRenderMethods.length}, minmax(0, 1fr))` },
|
|
8747
8739
|
className: "w-full grid gap-[var(--l-pass-gap)]",
|
|
8748
|
-
children: recoveryRenderMethods.map(({ method: recoveryMethod, label, Icon, data }) => /* @__PURE__ */ jsxs29("div", { className: "w-full h-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
8749
|
-
/* @__PURE__ */
|
|
8740
|
+
children: recoveryRenderMethods.map(({ method: recoveryMethod, label, Icon, data }) => /* @__PURE__ */ jsxs29("div", { className: "w-full h-full flex flex-col items-center gap-[var(--l-pass-gap)]", children: [
|
|
8741
|
+
/* @__PURE__ */ jsx37(
|
|
8750
8742
|
Button,
|
|
8751
8743
|
{
|
|
8752
|
-
size: "
|
|
8744
|
+
size: "icon",
|
|
8745
|
+
variant: "outline",
|
|
8753
8746
|
type: "button",
|
|
8754
|
-
|
|
8747
|
+
style: { height: "unset", maxWidth: "96px" },
|
|
8748
|
+
className: "w-full aspect-square h-unset rounded-[var(--l-pass-el-bdrs)]",
|
|
8755
8749
|
onClick: () => {
|
|
8756
8750
|
setRestorePassword("");
|
|
8757
8751
|
setRestoreFile(null);
|
|
@@ -8760,31 +8754,23 @@ function MethodSelector(props) {
|
|
|
8760
8754
|
setSuccess(null);
|
|
8761
8755
|
setMethod(recoveryMethod);
|
|
8762
8756
|
},
|
|
8763
|
-
children:
|
|
8764
|
-
/* @__PURE__ */ jsx37(Icon, { className: "h-6 w-6" }),
|
|
8765
|
-
label
|
|
8766
|
-
]
|
|
8757
|
+
children: /* @__PURE__ */ jsx37(Icon, { className: "w-5 h-5 md:w-8 md:h-8" })
|
|
8767
8758
|
}
|
|
8768
8759
|
),
|
|
8769
|
-
|
|
8770
|
-
"span",
|
|
8771
|
-
{
|
|
8772
|
-
className: cn(
|
|
8773
|
-
"flex w-full h-fit items-center gap-[var(--l-pass-gap)]",
|
|
8774
|
-
"rounded-[var(--l-pass-el-bdrs)] p-[var(--l-pass-pd)]",
|
|
8775
|
-
"bg-[var(--l-pass-bg-success)]",
|
|
8776
|
-
"text-[10px] text-black"
|
|
8777
|
-
),
|
|
8778
|
-
children: [
|
|
8779
|
-
`Last ${label} backup:`,
|
|
8780
|
-
/* @__PURE__ */ jsx37("br", {}),
|
|
8781
|
-
typeof data.lastBackup === "number" ? new Date(data.lastBackup).toLocaleString() : data.lastBackup.toUpperCase()
|
|
8782
|
-
]
|
|
8783
|
-
}
|
|
8784
|
-
)
|
|
8760
|
+
/* @__PURE__ */ jsx37("span", { className: "text-xs font-bold leading-4", children: label })
|
|
8785
8761
|
] }, recoveryMethod))
|
|
8786
8762
|
}
|
|
8787
|
-
)
|
|
8763
|
+
),
|
|
8764
|
+
/* @__PURE__ */ jsx37("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-gap)]", children: recoveryRenderMethods.filter((el) => !!el.data?.lastBackup).map(({ data, label, Icon }, methodIdx) => /* @__PURE__ */ jsxs29(Highlight, { type: "info", children: [
|
|
8765
|
+
/* @__PURE__ */ jsxs29("span", { children: [
|
|
8766
|
+
/* @__PURE__ */ jsx37(Icon, { className: "w-4 h-4 inline" }),
|
|
8767
|
+
" Last ",
|
|
8768
|
+
/* @__PURE__ */ jsx37("strong", { children: label }),
|
|
8769
|
+
" backup:"
|
|
8770
|
+
] }),
|
|
8771
|
+
/* @__PURE__ */ jsx37("br", {}),
|
|
8772
|
+
/* @__PURE__ */ jsx37("span", { className: "text-[10px] font-mono", children: typeof data.lastBackup === "number" ? new Date(data.lastBackup).toLocaleString() : data.lastBackup.toUpperCase() })
|
|
8773
|
+
] }, `${label}-${methodIdx}`)) })
|
|
8788
8774
|
] });
|
|
8789
8775
|
}
|
|
8790
8776
|
|
|
@@ -8797,7 +8783,7 @@ function NoBackupFound(props) {
|
|
|
8797
8783
|
const { isLoading, restoreFromFile } = props;
|
|
8798
8784
|
const { restoreFile, setRestoreFile } = useRestoreStore();
|
|
8799
8785
|
return /* @__PURE__ */ jsxs30(Fragment7, { children: [
|
|
8800
|
-
/* @__PURE__ */ jsxs30(Highlight, { type: "
|
|
8786
|
+
/* @__PURE__ */ jsxs30(Highlight, { type: "warning", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
8801
8787
|
/* @__PURE__ */ jsx38(AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8802
8788
|
/* @__PURE__ */ jsxs30("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
|
|
8803
8789
|
/* @__PURE__ */ jsx38("span", { className: "block w-full text-xl leading-5 font-semibold", children: "No Keyshare Found! Account Recovery Needed" }),
|
|
@@ -8859,7 +8845,7 @@ function File2(props) {
|
|
|
8859
8845
|
children: /* @__PURE__ */ jsx39(ArrowLeft6, { className: "h-4 w-4" })
|
|
8860
8846
|
}
|
|
8861
8847
|
),
|
|
8862
|
-
/* @__PURE__ */ jsx39("span", { className: "text-
|
|
8848
|
+
/* @__PURE__ */ jsx39("span", { className: "text-lg font-semibold", children: `${mode === "restore" ? "Restore" : "Create"} File Backup` })
|
|
8863
8849
|
] }),
|
|
8864
8850
|
mode === "restore" && /* @__PURE__ */ jsx39("label", { className: "block w-full flex items-center justify-center cursor-pointer p-[var(--l-pass-pd)] bg-[var(--l-pass-secondary)] rounded-[var(--l-pass-el-bdrs)]", children: /* @__PURE__ */ jsx39(
|
|
8865
8851
|
"input",
|
|
@@ -8897,7 +8883,7 @@ function File2(props) {
|
|
|
8897
8883
|
}
|
|
8898
8884
|
|
|
8899
8885
|
// src/internal/components/KeyshareRestoreMenu/methods/Server.tsx
|
|
8900
|
-
import { ArrowLeft as ArrowLeft7, Eye, EyeOff, Loader as Loader9, ServerIcon } from "lucide-react";
|
|
8886
|
+
import { ArrowLeft as ArrowLeft7, ChevronRight as ChevronRight2, Eye, EyeOff, Loader as Loader9, ServerIcon } from "lucide-react";
|
|
8901
8887
|
import { useRef as useRef11 } from "react";
|
|
8902
8888
|
|
|
8903
8889
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -8963,40 +8949,54 @@ function Server(props) {
|
|
|
8963
8949
|
children: /* @__PURE__ */ jsx41(ArrowLeft7, { className: "h-4 w-4" })
|
|
8964
8950
|
}
|
|
8965
8951
|
),
|
|
8966
|
-
/* @__PURE__ */ jsx41("span", { className: "text-
|
|
8952
|
+
/* @__PURE__ */ jsx41("span", { className: "text-lg font-semibold", children: `${mode === "restore" ? "Restore" : "Create"} Server Backup` })
|
|
8967
8953
|
] }),
|
|
8968
|
-
/* @__PURE__ */ jsxs32("div", { className: "flex
|
|
8954
|
+
!usePasskey ? /* @__PURE__ */ jsxs32("div", { className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
8969
8955
|
/* @__PURE__ */ jsx41(
|
|
8970
|
-
|
|
8956
|
+
Input,
|
|
8971
8957
|
{
|
|
8972
|
-
|
|
8973
|
-
|
|
8974
|
-
|
|
8975
|
-
|
|
8958
|
+
autoComplete: "off",
|
|
8959
|
+
Icon: ServerIcon,
|
|
8960
|
+
type: showPassword ? "text" : "password",
|
|
8961
|
+
placeholder: "Your backup password",
|
|
8962
|
+
value: restorePassword,
|
|
8963
|
+
onChange: (e) => setRestorePassword(e.target.value),
|
|
8964
|
+
className: "flex-1",
|
|
8965
|
+
onKeyDown: (e) => {
|
|
8966
|
+
if (e.key === "Enter" && !isLoading && restorePassword) actionRef.current?.click();
|
|
8967
|
+
},
|
|
8968
|
+
element: /* @__PURE__ */ jsx41(
|
|
8969
|
+
Button,
|
|
8970
|
+
{
|
|
8971
|
+
variant: "ghost",
|
|
8972
|
+
size: "icon",
|
|
8973
|
+
type: "button",
|
|
8974
|
+
title: "Restore using Password",
|
|
8975
|
+
disabled: isLoading,
|
|
8976
|
+
onClick: () => setShowPassword(!showPassword),
|
|
8977
|
+
children: showPassword ? /* @__PURE__ */ jsx41(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx41(Eye, { className: "h-4 w-4" })
|
|
8978
|
+
}
|
|
8979
|
+
)
|
|
8976
8980
|
}
|
|
8977
8981
|
),
|
|
8978
|
-
/* @__PURE__ */ jsx41(
|
|
8979
|
-
|
|
8980
|
-
|
|
8981
|
-
|
|
8982
|
-
|
|
8983
|
-
|
|
8984
|
-
|
|
8985
|
-
|
|
8986
|
-
|
|
8987
|
-
|
|
8988
|
-
|
|
8989
|
-
|
|
8990
|
-
|
|
8991
|
-
},
|
|
8992
|
-
element: /* @__PURE__ */ jsx41(Button, { variant: "ghost", size: "icon", type: "button", onClick: () => setShowPassword(!showPassword), children: showPassword ? /* @__PURE__ */ jsx41(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx41(Eye, { className: "h-4 w-4" }) })
|
|
8993
|
-
}
|
|
8994
|
-
),
|
|
8995
|
-
/* @__PURE__ */ jsxs32(
|
|
8982
|
+
/* @__PURE__ */ jsx41(
|
|
8983
|
+
Button,
|
|
8984
|
+
{
|
|
8985
|
+
ref: actionRef,
|
|
8986
|
+
size: "icon",
|
|
8987
|
+
variant: "default",
|
|
8988
|
+
onClick: serverHandler,
|
|
8989
|
+
disabled: isLoading || !usePasskey && !restorePassword,
|
|
8990
|
+
className: "w-full w-12 h-12 flex-shrink-0 rounded-[var(--l-pass-el-bdrs)]",
|
|
8991
|
+
children: isLoading ? /* @__PURE__ */ jsx41(Loader9, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ jsx41(ChevronRight2, { className: "h-4 w-4" })
|
|
8992
|
+
}
|
|
8993
|
+
)
|
|
8994
|
+
] }) : /* @__PURE__ */ jsxs32(
|
|
8996
8995
|
Button,
|
|
8997
8996
|
{
|
|
8998
8997
|
ref: actionRef,
|
|
8999
8998
|
size: "large",
|
|
8999
|
+
title: "Restore using Passkey",
|
|
9000
9000
|
onClick: serverHandler,
|
|
9001
9001
|
disabled: isLoading || !usePasskey && !restorePassword,
|
|
9002
9002
|
className: "w-full",
|
|
@@ -9005,12 +9005,27 @@ function Server(props) {
|
|
|
9005
9005
|
/* @__PURE__ */ jsx41("span", { children: isLoading ? loadingText : `${actionText} with ${passkeyOrPassword}` })
|
|
9006
9006
|
]
|
|
9007
9007
|
}
|
|
9008
|
-
)
|
|
9008
|
+
),
|
|
9009
|
+
/* @__PURE__ */ jsxs32(Highlight, { type: "info", className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9010
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9011
|
+
/* @__PURE__ */ jsx41(
|
|
9012
|
+
Checkbox,
|
|
9013
|
+
{
|
|
9014
|
+
id: "use-backup-password",
|
|
9015
|
+
name: "use-backup-password-checkbox",
|
|
9016
|
+
checked: usePasskey,
|
|
9017
|
+
onCheckedChange: (checked) => setUsePasskey(!!checked)
|
|
9018
|
+
}
|
|
9019
|
+
),
|
|
9020
|
+
/* @__PURE__ */ jsx41("label", { htmlFor: "use-backup-password", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use passkey instead of password" })
|
|
9021
|
+
] }),
|
|
9022
|
+
/* @__PURE__ */ jsx41("span", { className: "text-[10px] text-[var(--l-pass-fg-muted)]", children: "* use this option if you used passkey as encryption to create your server backup, otherwise use password" })
|
|
9023
|
+
] })
|
|
9009
9024
|
] });
|
|
9010
9025
|
}
|
|
9011
9026
|
|
|
9012
9027
|
// src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx
|
|
9013
|
-
import { useQuery as
|
|
9028
|
+
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
9014
9029
|
import { ArrowLeft as ArrowLeft8, CloudUpload, Loader as Loader10 } from "lucide-react";
|
|
9015
9030
|
import { useEffect as useEffect18 } from "react";
|
|
9016
9031
|
import { Fragment as Fragment10, jsx as jsx42, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
@@ -9023,7 +9038,7 @@ function Cloud2(props) {
|
|
|
9023
9038
|
data: cloudProviders = [],
|
|
9024
9039
|
isLoading: isCloudProvidersLoading,
|
|
9025
9040
|
error: cloudProvidersError
|
|
9026
|
-
} =
|
|
9041
|
+
} = useQuery6({
|
|
9027
9042
|
retry: false,
|
|
9028
9043
|
enabled: !!passportUserId,
|
|
9029
9044
|
queryKey: [AVAILABLE_CLOUD_PROVIDERS_QUERY_KEY, passportUserId],
|
|
@@ -9061,7 +9076,7 @@ function Cloud2(props) {
|
|
|
9061
9076
|
children: /* @__PURE__ */ jsx42(ArrowLeft8, { className: "h-4 w-4" })
|
|
9062
9077
|
}
|
|
9063
9078
|
),
|
|
9064
|
-
/* @__PURE__ */ jsx42("span", { className: "text-
|
|
9079
|
+
/* @__PURE__ */ jsx42("span", { className: "text-lg font-semibold", children: `${mode === "restore" ? "Restore" : "Create"} Cloud Backup` })
|
|
9065
9080
|
] }),
|
|
9066
9081
|
isCloudProvidersLoading && /* @__PURE__ */ jsx42(Loader10, { className: "animate-spin w-4 h-4 mx-auto" }),
|
|
9067
9082
|
!isCloudProvidersLoading && cloudProviders.length > 1 && /* @__PURE__ */ jsx42(
|
|
@@ -9098,10 +9113,10 @@ var RESTORE_COMPONENTS = {
|
|
|
9098
9113
|
file: File2
|
|
9099
9114
|
};
|
|
9100
9115
|
var KeyshareRestoreMenu = () => {
|
|
9101
|
-
const qc =
|
|
9116
|
+
const qc = useQueryClient7();
|
|
9102
9117
|
const callbacks = useLumiaPassportConfig().callbacks;
|
|
9103
9118
|
const { address, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
9104
|
-
const { isFetching: isBackupStatusLoading } =
|
|
9119
|
+
const { data: serverRecoveryStatus, isFetching: isBackupStatusLoading } = useQuery7({
|
|
9105
9120
|
retry: false,
|
|
9106
9121
|
queryKey: [CHECK_BACKUP_QUERY_KEY, address],
|
|
9107
9122
|
queryFn: async () => await getShareRecoveryStats()
|
|
@@ -9149,7 +9164,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
9149
9164
|
setIsLoading(false);
|
|
9150
9165
|
setIsDialogForced(false);
|
|
9151
9166
|
callbacks?.onLumiaPassportDisconnect?.({ address: "0x", userId: disconnectedUserId });
|
|
9152
|
-
setPage("auth" /* AUTH */);
|
|
9167
|
+
setTimeout(() => setPage("auth" /* AUTH */), 50);
|
|
9153
9168
|
},
|
|
9154
9169
|
onError: (err) => {
|
|
9155
9170
|
setError(err.message || "An unknown error occurred during sign out");
|
|
@@ -9165,24 +9180,24 @@ var KeyshareRestoreMenu = () => {
|
|
|
9165
9180
|
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
9166
9181
|
className: "list-scrollbar-y w-full",
|
|
9167
9182
|
children: /* @__PURE__ */ jsxs34(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
9168
|
-
checkingBackup && /* @__PURE__ */ jsxs34("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
|
|
9183
|
+
(checkingBackup || isBackupStatusLoading) && /* @__PURE__ */ jsxs34("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
|
|
9169
9184
|
/* @__PURE__ */ jsx43(Loader11, { className: "w-5 h-5 animate-spin" }),
|
|
9170
9185
|
/* @__PURE__ */ jsx43("span", { className: "block w-full text-xs leading-4", children: "Checking for backups..." }),
|
|
9171
9186
|
/* @__PURE__ */ jsx43("span", { className: "block w-full text-xs leading-4", children: "Please wait while we check for available backups..." })
|
|
9172
9187
|
] }),
|
|
9173
|
-
!isBackupStatusLoading && !checkingBackup && !hasServerBackup && /* @__PURE__ */ jsx43(
|
|
9188
|
+
!isBackupStatusLoading && !isDisconnecting && !checkingBackup && !hasServerBackup && /* @__PURE__ */ jsx43(
|
|
9174
9189
|
NoBackupFound,
|
|
9175
9190
|
{
|
|
9176
9191
|
isLoading: isRestoringFromServer || isRestoringFromCloud || isRestoringFromFile || isDisconnecting,
|
|
9177
9192
|
restoreFromFile
|
|
9178
9193
|
}
|
|
9179
9194
|
),
|
|
9180
|
-
!success && !checkingBackup && hasServerBackup && /* @__PURE__ */ jsxs34(Fragment11, { children: [
|
|
9195
|
+
!success && !checkingBackup && !isBackupStatusLoading && hasServerBackup && /* @__PURE__ */ jsxs34(Fragment11, { children: [
|
|
9181
9196
|
/* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-center gap-[var(--l-pass-gap)] px-[var(--l-pass-pd)] py-[var(--l-pass-gap)]", children: [
|
|
9182
|
-
/* @__PURE__ */ jsx43(
|
|
9197
|
+
/* @__PURE__ */ jsx43(CloudDownload, { className: "w-6 h-6" }),
|
|
9183
9198
|
/* @__PURE__ */ jsx43("span", { className: "font-bold text-xl leading-6", children: "Restore Account" })
|
|
9184
9199
|
] }),
|
|
9185
|
-
/* @__PURE__ */ jsx43(MethodSelector, { mode: "restore" }),
|
|
9200
|
+
/* @__PURE__ */ jsx43(MethodSelector, { mode: "restore", serverRecoveryStatus }),
|
|
9186
9201
|
!!currentRestoreMethod && /* @__PURE__ */ jsx43(
|
|
9187
9202
|
RestoreComponent,
|
|
9188
9203
|
{
|
|
@@ -9193,7 +9208,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
9193
9208
|
}
|
|
9194
9209
|
)
|
|
9195
9210
|
] }),
|
|
9196
|
-
!success && !currentRestoreMethod && !checkingBackup && /* @__PURE__ */ jsxs34(Fragment11, { children: [
|
|
9211
|
+
!success && !currentRestoreMethod && !checkingBackup && !isBackupStatusLoading && /* @__PURE__ */ jsxs34(Fragment11, { children: [
|
|
9197
9212
|
/* @__PURE__ */ jsx43("div", { className: "w-full mt-[var(--l-pass-gap)]", style: { borderTop: "1px solid var(--l-pass-bd)" } }),
|
|
9198
9213
|
/* @__PURE__ */ jsx43("div", { className: "w-full flex items-center justify-center", children: /* @__PURE__ */ jsx43("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Or" }) }),
|
|
9199
9214
|
/* @__PURE__ */ jsxs34(
|
|
@@ -9205,8 +9220,8 @@ var KeyshareRestoreMenu = () => {
|
|
|
9205
9220
|
disabled: isDisconnecting || isRestoringFromFile || isRestoringFromServer,
|
|
9206
9221
|
className: "w-fit mx-auto",
|
|
9207
9222
|
children: [
|
|
9208
|
-
isDisconnecting ? /* @__PURE__ */ jsx43(Loader11, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx43(
|
|
9209
|
-
/* @__PURE__ */ jsx43("span", { children: "
|
|
9223
|
+
isDisconnecting ? /* @__PURE__ */ jsx43(Loader11, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx43(UserCircle2, { className: "w-4 h-4" }),
|
|
9224
|
+
/* @__PURE__ */ jsx43("span", { children: "Try Another Account" })
|
|
9210
9225
|
]
|
|
9211
9226
|
}
|
|
9212
9227
|
)
|
|
@@ -9225,8 +9240,10 @@ var KeyshareRestoreMenu = () => {
|
|
|
9225
9240
|
};
|
|
9226
9241
|
|
|
9227
9242
|
// src/internal/components/KeyshareRestoreMenu/KeyshareBackupMenu.tsx
|
|
9243
|
+
import { useQuery as useQuery8 } from "@tanstack/react-query";
|
|
9228
9244
|
import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft9, CheckCircle2 as CheckCircle22 } from "lucide-react";
|
|
9229
9245
|
import { useEffect as useEffect20 } from "react";
|
|
9246
|
+
init_vaultClient();
|
|
9230
9247
|
import { Fragment as Fragment12, jsx as jsx44, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
9231
9248
|
var COMPONENTS = {
|
|
9232
9249
|
server: Server,
|
|
@@ -9235,6 +9252,7 @@ var COMPONENTS = {
|
|
|
9235
9252
|
};
|
|
9236
9253
|
var BACKUP_INFO_MESSAGE = "No existing backups found. Creating a backup will help you restore your account if you clear cache or lose access to this device.";
|
|
9237
9254
|
function KeyshareBackupMenu() {
|
|
9255
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9238
9256
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9239
9257
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9240
9258
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
@@ -9252,6 +9270,11 @@ function KeyshareBackupMenu() {
|
|
|
9252
9270
|
setShowPassword,
|
|
9253
9271
|
setUsePasskey
|
|
9254
9272
|
} = useRestoreStore();
|
|
9273
|
+
const { data: serverRecoveryStatus, isFetching: isBackupStatusLoading } = useQuery8({
|
|
9274
|
+
retry: false,
|
|
9275
|
+
queryKey: [CHECK_BACKUP_QUERY_KEY, address],
|
|
9276
|
+
queryFn: async () => await getShareRecoveryStats()
|
|
9277
|
+
});
|
|
9255
9278
|
const { hasRecoveryData, isRecoveryLoading } = useCheckBackupAvailability();
|
|
9256
9279
|
const {
|
|
9257
9280
|
isPasswordBackupCreating,
|
|
@@ -9294,30 +9317,17 @@ function KeyshareBackupMenu() {
|
|
|
9294
9317
|
/* @__PURE__ */ jsx44(AlertCircle3, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9295
9318
|
/* @__PURE__ */ jsx44("span", { className: "block flex-1", children: BACKUP_INFO_MESSAGE })
|
|
9296
9319
|
] }),
|
|
9297
|
-
/* @__PURE__ */ jsx44(MethodSelector, { mode: "backup" }),
|
|
9298
|
-
!!currentBackupMethod && /* @__PURE__ */
|
|
9299
|
-
|
|
9300
|
-
|
|
9301
|
-
|
|
9302
|
-
|
|
9303
|
-
|
|
9304
|
-
|
|
9305
|
-
|
|
9306
|
-
|
|
9307
|
-
|
|
9308
|
-
),
|
|
9309
|
-
currentBackupMethod === "server" && /* @__PURE__ */ jsxs35(Highlight, { className: "flex items-start gap-[var(--l-pass-gap)]", type: "info", children: [
|
|
9310
|
-
/* @__PURE__ */ jsx44(CheckCircle22, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9311
|
-
/* @__PURE__ */ jsxs35("div", { children: [
|
|
9312
|
-
/* @__PURE__ */ jsx44("span", { className: "font-medium", children: "Security Notice:" }),
|
|
9313
|
-
" All backups are encrypted with AES-256 using your ",
|
|
9314
|
-
usePasskey ? "passkey" : "custom password",
|
|
9315
|
-
".",
|
|
9316
|
-
usePasskey ? " Your passkey authenticator is required to restore backups. " : " Store your password securely - ",
|
|
9317
|
-
"Without backup access, you cannot recover your account if you lose this device."
|
|
9318
|
-
] })
|
|
9319
|
-
] })
|
|
9320
|
-
] }),
|
|
9320
|
+
/* @__PURE__ */ jsx44(MethodSelector, { mode: "backup", serverRecoveryStatus }),
|
|
9321
|
+
!!currentBackupMethod && /* @__PURE__ */ jsx44(Fragment12, { children: /* @__PURE__ */ jsx44(
|
|
9322
|
+
BackupComponent,
|
|
9323
|
+
{
|
|
9324
|
+
mode: "backup",
|
|
9325
|
+
isLoading: isPasswordBackupCreating || isCloudBackupCreating || isLocalBackupCreating,
|
|
9326
|
+
fileHandler: createLocalBackup,
|
|
9327
|
+
serverHandler: createPasswordBackup,
|
|
9328
|
+
cloudHandler: createCloudBackup
|
|
9329
|
+
}
|
|
9330
|
+
) }),
|
|
9321
9331
|
error && /* @__PURE__ */ jsxs35(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
9322
9332
|
/* @__PURE__ */ jsx44(AlertCircle3, { className: "h-4 w-4 flex-shrink-0" }),
|
|
9323
9333
|
/* @__PURE__ */ jsx44("span", { className: "block w-full flex-1", children: error })
|
|
@@ -9332,7 +9342,7 @@ function KeyshareBackupMenu() {
|
|
|
9332
9342
|
}
|
|
9333
9343
|
|
|
9334
9344
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9335
|
-
import { ChevronLeft, ChevronRight as
|
|
9345
|
+
import { ChevronLeft, ChevronRight as ChevronRight3, DollarSign as DollarSign3, Wallet2 as Wallet23 } from "lucide-react";
|
|
9336
9346
|
import { useEffect as useEffect21 } from "react";
|
|
9337
9347
|
|
|
9338
9348
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
@@ -9354,7 +9364,7 @@ function useProvidersList() {
|
|
|
9354
9364
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9355
9365
|
import { jsx as jsx45, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
9356
9366
|
var MAIN_MENU_BUTTONS = [
|
|
9357
|
-
{ id: "send" /* SEND */, label: "Send", icon:
|
|
9367
|
+
{ id: "send" /* SEND */, label: "Send", icon: ChevronRight3 },
|
|
9358
9368
|
{ id: "receive" /* RECEIVE */, label: "Receive", icon: ChevronLeft },
|
|
9359
9369
|
{ id: "buy" /* BUY */, label: "Buy", icon: DollarSign3 },
|
|
9360
9370
|
{ id: "assets" /* ASSETS */, label: "Portfolio", icon: Wallet23 }
|
|
@@ -9388,7 +9398,7 @@ import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft10, Loader as Lo
|
|
|
9388
9398
|
import { useMemo as useMemo3 } from "react";
|
|
9389
9399
|
|
|
9390
9400
|
// src/modules/linkedProfiles.ts
|
|
9391
|
-
import { useQuery as useQuery10, useQueryClient as
|
|
9401
|
+
import { useQuery as useQuery10, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
9392
9402
|
import { useCallback as useCallback10 } from "react";
|
|
9393
9403
|
init_auth();
|
|
9394
9404
|
init_common();
|
|
@@ -9409,7 +9419,7 @@ async function getLinkProfilesData() {
|
|
|
9409
9419
|
return { profiles: loadedProfiles, avatar };
|
|
9410
9420
|
}
|
|
9411
9421
|
function useLumiaPassportLinkedProfiles() {
|
|
9412
|
-
const qc =
|
|
9422
|
+
const qc = useQueryClient8();
|
|
9413
9423
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9414
9424
|
const {
|
|
9415
9425
|
data,
|
|
@@ -9429,14 +9439,14 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
9429
9439
|
}
|
|
9430
9440
|
|
|
9431
9441
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
9432
|
-
import { useQueryClient as
|
|
9442
|
+
import { useQueryClient as useQueryClient10 } from "@tanstack/react-query";
|
|
9433
9443
|
init_passkey2();
|
|
9434
9444
|
|
|
9435
9445
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9436
9446
|
init_lumiaPassport();
|
|
9437
9447
|
init_projectId();
|
|
9438
9448
|
import { useMutation as useMutation11 } from "@tanstack/react-query";
|
|
9439
|
-
import { ChevronRight as
|
|
9449
|
+
import { ChevronRight as ChevronRight4, Loader as Loader12, Mail as Mail4 } from "lucide-react";
|
|
9440
9450
|
|
|
9441
9451
|
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
9442
9452
|
import { create as create5 } from "zustand";
|
|
@@ -9549,7 +9559,7 @@ function EmailForm() {
|
|
|
9549
9559
|
size: "large",
|
|
9550
9560
|
disabled: !email || isLoading,
|
|
9551
9561
|
onClick: () => onSendVerificationCode(),
|
|
9552
|
-
children: isLoading ? /* @__PURE__ */ jsx46(Loader12, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx46(
|
|
9562
|
+
children: isLoading ? /* @__PURE__ */ jsx46(Loader12, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx46(ChevronRight4, { className: "w-4 h-4" })
|
|
9553
9563
|
}
|
|
9554
9564
|
)
|
|
9555
9565
|
] });
|
|
@@ -9585,11 +9595,11 @@ function useSendVerificationCode() {
|
|
|
9585
9595
|
}
|
|
9586
9596
|
|
|
9587
9597
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9588
|
-
import { useMutation as useMutation13, useQueryClient as
|
|
9598
|
+
import { useMutation as useMutation13, useQueryClient as useQueryClient9 } from "@tanstack/react-query";
|
|
9589
9599
|
init_email();
|
|
9590
9600
|
function useVerifyCode() {
|
|
9591
9601
|
const { callbacks } = useLumiaPassportConfig();
|
|
9592
|
-
const qc =
|
|
9602
|
+
const qc = useQueryClient9();
|
|
9593
9603
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9594
9604
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9595
9605
|
const { email, emailCode, setEmail, setEmailStep, setEmailCode, setProviderType, setLinkIsLoading, setAlert } = useManageWalletStore();
|
|
@@ -9641,7 +9651,7 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9641
9651
|
return msg;
|
|
9642
9652
|
}
|
|
9643
9653
|
function AddProvider() {
|
|
9644
|
-
const qc =
|
|
9654
|
+
const qc = useQueryClient10();
|
|
9645
9655
|
const callbacks = useLumiaPassportConfig().callbacks;
|
|
9646
9656
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9647
9657
|
const {
|
|
@@ -9801,11 +9811,11 @@ function EmailNotConnectedWarning() {
|
|
|
9801
9811
|
}
|
|
9802
9812
|
|
|
9803
9813
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9804
|
-
import { useQueryClient as
|
|
9814
|
+
import { useQueryClient as useQueryClient11 } from "@tanstack/react-query";
|
|
9805
9815
|
import React7, { useEffect as useEffect22 } from "react";
|
|
9806
9816
|
init_auth();
|
|
9807
9817
|
function useLinkSocial() {
|
|
9808
|
-
const qc =
|
|
9818
|
+
const qc = useQueryClient11();
|
|
9809
9819
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9810
9820
|
const {
|
|
9811
9821
|
config: { current: config },
|
|
@@ -9888,14 +9898,14 @@ function useLinkSocial() {
|
|
|
9888
9898
|
|
|
9889
9899
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9890
9900
|
init_telegram2();
|
|
9891
|
-
import { useQueryClient as
|
|
9892
|
-
import { useCallback as useCallback11, useEffect as useEffect23, useState as
|
|
9901
|
+
import { useQueryClient as useQueryClient12 } from "@tanstack/react-query";
|
|
9902
|
+
import { useCallback as useCallback11, useEffect as useEffect23, useState as useState9 } from "react";
|
|
9893
9903
|
function useLinkTelegram() {
|
|
9894
9904
|
const {
|
|
9895
9905
|
config: { current: config },
|
|
9896
9906
|
callbacks
|
|
9897
9907
|
} = useLumiaPassportConfig();
|
|
9898
|
-
const qc =
|
|
9908
|
+
const qc = useQueryClient12();
|
|
9899
9909
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9900
9910
|
const isWalletLinking = useLayoutDataStore((st) => st.isWalletLinking);
|
|
9901
9911
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setAlert } = useManageWalletStore();
|
|
@@ -9942,7 +9952,7 @@ function useLinkTelegram() {
|
|
|
9942
9952
|
setLinkIsLoading(false);
|
|
9943
9953
|
}
|
|
9944
9954
|
}, [config.social?.providers, callbacks]);
|
|
9945
|
-
const [telegramLinkStarted, setTelegramLinkStarted] =
|
|
9955
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = useState9(false);
|
|
9946
9956
|
useEffect23(() => {
|
|
9947
9957
|
console.log("[useLinkTelegram] Effect triggered:", {
|
|
9948
9958
|
providerType,
|
|
@@ -9975,6 +9985,10 @@ function ProviderCard(props) {
|
|
|
9975
9985
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9976
9986
|
const setConfirmUnlink = useManageWalletStore((st) => st.setConfirmUnlink);
|
|
9977
9987
|
const { data: providers = [] } = useProvidersList();
|
|
9988
|
+
if (!props?.provider) {
|
|
9989
|
+
console.warn("[ProviderCard] Received undefined provider");
|
|
9990
|
+
return null;
|
|
9991
|
+
}
|
|
9978
9992
|
const canUnlink = (p) => {
|
|
9979
9993
|
const verified = providers.filter((x) => x.verified);
|
|
9980
9994
|
if (verified.length <= 1 && p.verified) return false;
|
|
@@ -10066,16 +10080,24 @@ function ManageWalletMenu() {
|
|
|
10066
10080
|
const configuredProviders = getConfiguredProviders(config);
|
|
10067
10081
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
10068
10082
|
const renderProviders = useMemo3(() => {
|
|
10069
|
-
const
|
|
10083
|
+
const normalizeProviderName = (name) => {
|
|
10084
|
+
if (name === "x") return "twitter";
|
|
10085
|
+
return name;
|
|
10086
|
+
};
|
|
10087
|
+
const usedProviders = fromPairs(
|
|
10088
|
+
providers.map((p) => [normalizeProviderName(p.provider), true])
|
|
10089
|
+
);
|
|
10070
10090
|
const used = [];
|
|
10071
10091
|
const unused = [];
|
|
10072
10092
|
POSSIBLE_PROVIDERS.forEach((provider, providerIdx) => {
|
|
10073
10093
|
if (!configuredProviders[provider]) return;
|
|
10074
10094
|
const Icon = PROVIDERS_META2[provider].icon;
|
|
10075
10095
|
if (usedProviders[provider]) {
|
|
10076
|
-
|
|
10077
|
-
|
|
10078
|
-
)
|
|
10096
|
+
const apiProviderName = provider === "twitter" ? "x" : provider;
|
|
10097
|
+
const providerData = providers.find((p) => p.provider === apiProviderName || p.provider === provider);
|
|
10098
|
+
if (providerData) {
|
|
10099
|
+
used.push(/* @__PURE__ */ jsx50(ProviderCard, { ...providerData }, `${provider}-${providerIdx}`));
|
|
10100
|
+
}
|
|
10079
10101
|
} else {
|
|
10080
10102
|
unused.push(
|
|
10081
10103
|
/* @__PURE__ */ jsxs41(
|
|
@@ -10177,18 +10199,18 @@ function ManageWalletMenu() {
|
|
|
10177
10199
|
}
|
|
10178
10200
|
|
|
10179
10201
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
10180
|
-
import { useMutation as useMutation14, useQueryClient as
|
|
10202
|
+
import { useMutation as useMutation14, useQueryClient as useQueryClient13 } from "@tanstack/react-query";
|
|
10181
10203
|
import { Key as Key5, Loader as Loader14 } from "lucide-react";
|
|
10182
|
-
import { useState as
|
|
10204
|
+
import { useState as useState10 } from "react";
|
|
10183
10205
|
init_auth();
|
|
10184
10206
|
import { jsx as jsx51, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10185
10207
|
function UnlinkProviderMenu() {
|
|
10186
|
-
const qc =
|
|
10208
|
+
const qc = useQueryClient13();
|
|
10187
10209
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10188
10210
|
const { callbacks } = useLumiaPassportConfig();
|
|
10189
10211
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10190
10212
|
const { confirmUnlink, setConfirmUnlink, setAlert } = useManageWalletStore();
|
|
10191
|
-
const [confirmInput, setConfirmInput] =
|
|
10213
|
+
const [confirmInput, setConfirmInput] = useState10("");
|
|
10192
10214
|
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = useMutation14({
|
|
10193
10215
|
mutationFn: async () => {
|
|
10194
10216
|
if (!confirmUnlink) {
|
|
@@ -10262,7 +10284,7 @@ function UnlinkProviderMenu() {
|
|
|
10262
10284
|
}
|
|
10263
10285
|
|
|
10264
10286
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10265
|
-
import { useQueryClient as
|
|
10287
|
+
import { useQueryClient as useQueryClient15 } from "@tanstack/react-query";
|
|
10266
10288
|
import { AlertCircle as AlertCircle4, ArrowLeft as ArrowLeft11, Gem, Loader as Loader16, RefreshCw } from "lucide-react";
|
|
10267
10289
|
import { useCallback as useCallback13 } from "react";
|
|
10268
10290
|
|
|
@@ -10578,9 +10600,9 @@ function useBlockscoutAssets(options) {
|
|
|
10578
10600
|
|
|
10579
10601
|
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
10580
10602
|
init_base();
|
|
10581
|
-
import { useQuery as useQuery12, useQueryClient as
|
|
10603
|
+
import { useQuery as useQuery12, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
|
|
10582
10604
|
import { Image as ImageIcon, Loader as Loader15, Shield, Sparkles } from "lucide-react";
|
|
10583
|
-
import { useState as
|
|
10605
|
+
import { useState as useState11 } from "react";
|
|
10584
10606
|
import { Fragment as Fragment15, jsx as jsx52, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
10585
10607
|
var price16 = Intl.NumberFormat("en-US", { minimumFractionDigits: 16, maximumFractionDigits: 16 });
|
|
10586
10608
|
function formatValue(price) {
|
|
@@ -10620,10 +10642,10 @@ async function getAssetRate2(symbol) {
|
|
|
10620
10642
|
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
10621
10643
|
function PortfolioItem(props) {
|
|
10622
10644
|
const { address, asset, isProjectAsset } = props;
|
|
10623
|
-
const [nftImageError, setNftImageError] =
|
|
10624
|
-
const [logoError, setLogoError] =
|
|
10645
|
+
const [nftImageError, setNftImageError] = useState11(false);
|
|
10646
|
+
const [logoError, setLogoError] = useState11(false);
|
|
10625
10647
|
const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
|
|
10626
|
-
const qc =
|
|
10648
|
+
const qc = useQueryClient14();
|
|
10627
10649
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
10628
10650
|
const projectAssetBalance = !!balanceQueryKey ? qc.getQueryData(balanceQueryKey) : null;
|
|
10629
10651
|
const isNft = isNftAsset(asset);
|
|
@@ -10655,7 +10677,7 @@ function PortfolioItem(props) {
|
|
|
10655
10677
|
"flex-none flex items-center justify-center overflow-hidden relative",
|
|
10656
10678
|
"group-hover:opacity-60 transition-opacity",
|
|
10657
10679
|
// NFTs get rounded corners, tokens get circular
|
|
10658
|
-
isNft ? "w-12 h-12 rounded-
|
|
10680
|
+
isNft ? "w-12 h-12 rounded-[var(--l-pass-el-bdrs)]" : "w-12 h-12 rounded-full",
|
|
10659
10681
|
(!asset.logo || logoError) && !nftImage && "bg-[var(--l-pass-fg)]"
|
|
10660
10682
|
),
|
|
10661
10683
|
children: [
|
|
@@ -10693,7 +10715,14 @@ function PortfolioItem(props) {
|
|
|
10693
10715
|
),
|
|
10694
10716
|
/* @__PURE__ */ jsxs43("div", { className: "w-full flex-1", children: [
|
|
10695
10717
|
/* @__PURE__ */ jsxs43("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
10696
|
-
/* @__PURE__ */ jsx52(
|
|
10718
|
+
/* @__PURE__ */ jsx52(
|
|
10719
|
+
"span",
|
|
10720
|
+
{
|
|
10721
|
+
className: "truncate max-w-[150px]",
|
|
10722
|
+
title: isNft ? asset.nftMetadata?.collectionName || asset.name : asset.name,
|
|
10723
|
+
children: isNft ? asset.nftMetadata?.collectionName || asset.name || (asset.address ? `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` : "Unknown") : asset.name || (asset.address ? `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` : "Unknown")
|
|
10724
|
+
}
|
|
10725
|
+
),
|
|
10697
10726
|
!isProjectAsset && !isNft && !isSecurity && /* @__PURE__ */ jsx52("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" }),
|
|
10698
10727
|
isNft && "type" in asset && /* @__PURE__ */ jsx52("span", { className: "text-[var(--l-pass-fg-muted)] uppercase text-[10px]", children: asset.type === "erc721" ? "ERC-721" : "ERC-1155" }),
|
|
10699
10728
|
isSecurity && /* @__PURE__ */ jsx52("span", { className: "text-amber-500 uppercase text-[10px] font-medium", children: "Security Token" })
|
|
@@ -10729,7 +10758,7 @@ function PortfolioItem(props) {
|
|
|
10729
10758
|
import { jsx as jsx53, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
10730
10759
|
function PortfolioMenu() {
|
|
10731
10760
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10732
|
-
const qc =
|
|
10761
|
+
const qc = useQueryClient15();
|
|
10733
10762
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10734
10763
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10735
10764
|
const address = useLumiaPassportSession((st) => st.address);
|
|
@@ -10740,15 +10769,15 @@ function PortfolioMenu() {
|
|
|
10740
10769
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10741
10770
|
refreshBalances();
|
|
10742
10771
|
}, [qc, projectAssets, refreshBalances]);
|
|
10743
|
-
return /* @__PURE__ */
|
|
10772
|
+
return /* @__PURE__ */ jsx53(
|
|
10744
10773
|
"div",
|
|
10745
10774
|
{
|
|
10746
10775
|
style: {
|
|
10747
10776
|
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10748
10777
|
"--l-pass-list-scrollbar-pd-r": "calc(var(--l-pass-pd) - 4px)"
|
|
10749
10778
|
},
|
|
10750
|
-
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]
|
|
10751
|
-
children: [
|
|
10779
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
10780
|
+
children: /* @__PURE__ */ jsxs44(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10752
10781
|
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10753
10782
|
/* @__PURE__ */ jsx53(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx53(ArrowLeft11, { className: "h-4 w-4" }) }),
|
|
10754
10783
|
/* @__PURE__ */ jsx53("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
@@ -10764,32 +10793,30 @@ function PortfolioMenu() {
|
|
|
10764
10793
|
}
|
|
10765
10794
|
)
|
|
10766
10795
|
] }),
|
|
10767
|
-
/* @__PURE__ */ jsxs44("div", { className: "w-full flex
|
|
10768
|
-
|
|
10769
|
-
|
|
10770
|
-
|
|
10771
|
-
|
|
10772
|
-
|
|
10773
|
-
|
|
10774
|
-
|
|
10775
|
-
|
|
10776
|
-
|
|
10777
|
-
|
|
10778
|
-
|
|
10779
|
-
|
|
10780
|
-
|
|
10781
|
-
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
))
|
|
10790
|
-
] })
|
|
10796
|
+
error && !isBlockscoutAvailable && /* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center gap-2 p-3 rounded-lg bg-[var(--l-pass-warning-bg)] text-[var(--l-pass-warning)]", children: [
|
|
10797
|
+
/* @__PURE__ */ jsx53(AlertCircle4, { className: "h-4 w-4 flex-shrink-0" }),
|
|
10798
|
+
/* @__PURE__ */ jsx53("span", { className: "text-sm", children: error.message })
|
|
10799
|
+
] }),
|
|
10800
|
+
isLoading && /* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
10801
|
+
/* @__PURE__ */ jsx53(Loader16, { className: "h-5 w-5 animate-spin" }),
|
|
10802
|
+
/* @__PURE__ */ jsx53("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
10803
|
+
] }),
|
|
10804
|
+
!isLoading && assets.length === 0 && /* @__PURE__ */ jsxs44("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
10805
|
+
/* @__PURE__ */ jsx53(Gem, { className: "w-12 h-12 mb-2" }),
|
|
10806
|
+
/* @__PURE__ */ jsx53("p", { children: "No assets found" })
|
|
10807
|
+
] }),
|
|
10808
|
+
!isLoading && assets.length > 0 && /* @__PURE__ */ jsxs44("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: [
|
|
10809
|
+
projectAssets.map((asset, index) => /* @__PURE__ */ jsx53(PortfolioItem, { isProjectAsset: true, address, asset }, `project-${asset.symbol}-${index}`)),
|
|
10810
|
+
assets.map((asset, index) => /* @__PURE__ */ jsx53(
|
|
10811
|
+
PortfolioItem,
|
|
10812
|
+
{
|
|
10813
|
+
address,
|
|
10814
|
+
asset
|
|
10815
|
+
},
|
|
10816
|
+
`${asset.type}-${asset.address || "native"}-${asset.tokenId || index}`
|
|
10817
|
+
))
|
|
10791
10818
|
] })
|
|
10792
|
-
]
|
|
10819
|
+
] })
|
|
10793
10820
|
}
|
|
10794
10821
|
);
|
|
10795
10822
|
}
|
|
@@ -10797,25 +10824,71 @@ function PortfolioMenu() {
|
|
|
10797
10824
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10798
10825
|
init_auth();
|
|
10799
10826
|
init_keyshare();
|
|
10800
|
-
import { useQuery as useQuery13, useQueryClient as
|
|
10801
|
-
import {
|
|
10802
|
-
|
|
10803
|
-
ArrowLeft as ArrowLeft12,
|
|
10804
|
-
CheckCircle2 as CheckCircle23,
|
|
10805
|
-
Cloud as Cloud3,
|
|
10806
|
-
HardDrive,
|
|
10807
|
-
Laptop,
|
|
10808
|
-
Loader as Loader17,
|
|
10809
|
-
RefreshCw as RefreshCw2,
|
|
10810
|
-
Server as Server2,
|
|
10811
|
-
Shield as Shield2,
|
|
10812
|
-
Trash2 as Trash22
|
|
10813
|
-
} from "lucide-react";
|
|
10814
|
-
import { useEffect as useEffect24, useState as useState11 } from "react";
|
|
10827
|
+
import { useQuery as useQuery13, useQueryClient as useQueryClient16 } from "@tanstack/react-query";
|
|
10828
|
+
import { ArrowLeft as ArrowLeft12, Loader as Loader19, Trash2 as Trash22 } from "lucide-react";
|
|
10829
|
+
import { useState as useState12 } from "react";
|
|
10815
10830
|
init_iframe_manager();
|
|
10816
10831
|
init_vaultClient();
|
|
10817
|
-
|
|
10832
|
+
|
|
10833
|
+
// src/internal/components/SecurityMenu/constants.ts
|
|
10818
10834
|
var KEYSHARE_RECOVERY_STATS_QUERY = "keyshare-recovery-stats-query";
|
|
10835
|
+
|
|
10836
|
+
// src/internal/components/SecurityMenu/Keyshare/Keyshare.tsx
|
|
10837
|
+
import { Cloud as Cloud4, Laptop, Loader as Loader18, RefreshCw as RefreshCw2, Server as Server3 } from "lucide-react";
|
|
10838
|
+
|
|
10839
|
+
// src/internal/assets/NegativeIcon.tsx
|
|
10840
|
+
import { jsx as jsx54, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
10841
|
+
function NegativeIcon(props) {
|
|
10842
|
+
const { width = "16", height = "16", ...rest } = props;
|
|
10843
|
+
return /* @__PURE__ */ jsxs45("svg", { ...rest, width, height, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
10844
|
+
/* @__PURE__ */ jsx54("rect", { width: "16", height: "16", rx: "8", fill: "var(--l-pass-bg-error)" }),
|
|
10845
|
+
/* @__PURE__ */ jsx54("path", { d: "M10.8048 5.19482L5.19434 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" }),
|
|
10846
|
+
/* @__PURE__ */ jsx54("path", { d: "M5.19421 5.19482L10.8047 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" })
|
|
10847
|
+
] });
|
|
10848
|
+
}
|
|
10849
|
+
|
|
10850
|
+
// src/internal/components/SecurityMenu/Keyshare/Keyshare.tsx
|
|
10851
|
+
init_vaultClient();
|
|
10852
|
+
|
|
10853
|
+
// src/internal/components/SecurityMenu/Keyshare/KeyshareStatus.tsx
|
|
10854
|
+
import { Loader as Loader17 } from "lucide-react";
|
|
10855
|
+
import { jsx as jsx55, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
10856
|
+
function KeyshareStatus(props) {
|
|
10857
|
+
const { isLoading, content, icon: Icon, children } = props;
|
|
10858
|
+
if (isLoading) return /* @__PURE__ */ jsx55(Loader17, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" });
|
|
10859
|
+
return /* @__PURE__ */ jsxs46("div", { className: "group relative w-full h-full", children: [
|
|
10860
|
+
children,
|
|
10861
|
+
/* @__PURE__ */ jsx55(
|
|
10862
|
+
"div",
|
|
10863
|
+
{
|
|
10864
|
+
className: cn(
|
|
10865
|
+
"absolute -top-2 -right-2 w-6 h-6 flex items-center justify-center",
|
|
10866
|
+
"rounded-full bg-[var(--l-pass-bg)]"
|
|
10867
|
+
// 'border border-[var(--l-pass-bd)]'
|
|
10868
|
+
),
|
|
10869
|
+
children: /* @__PURE__ */ jsx55(Icon, { className: "w-4 h-4" })
|
|
10870
|
+
}
|
|
10871
|
+
),
|
|
10872
|
+
/* @__PURE__ */ jsx55(
|
|
10873
|
+
"div",
|
|
10874
|
+
{
|
|
10875
|
+
style: { transform: "translateY(calc(var(--l-pass-gap) * -4))" },
|
|
10876
|
+
className: cn(
|
|
10877
|
+
"transition-opacity pointer-events-none z-50",
|
|
10878
|
+
"absolute top-0 right-0 max-w-full",
|
|
10879
|
+
"px-2 py-1 bg-[var(--l-pass-bg)] text-[var(--l-pass-fg)] text-[10px] rounded-[var(--l-pass-el-bdrs)]",
|
|
10880
|
+
"border border-[var(--l-pass-bd)]",
|
|
10881
|
+
"opacity-0 group-hover:opacity-100"
|
|
10882
|
+
),
|
|
10883
|
+
children: content
|
|
10884
|
+
}
|
|
10885
|
+
)
|
|
10886
|
+
] });
|
|
10887
|
+
}
|
|
10888
|
+
|
|
10889
|
+
// src/internal/components/SecurityMenu/Keyshare/LastBackup.tsx
|
|
10890
|
+
import { Cloud as Cloud3, HardDrive, Server as Server2 } from "lucide-react";
|
|
10891
|
+
import { Fragment as Fragment16, jsx as jsx56, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
10819
10892
|
function parseOS(ua) {
|
|
10820
10893
|
if (!ua) return null;
|
|
10821
10894
|
if (ua.includes("Mac OS X")) return "macOS";
|
|
@@ -10825,29 +10898,128 @@ function parseOS(ua) {
|
|
|
10825
10898
|
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
10826
10899
|
return null;
|
|
10827
10900
|
}
|
|
10901
|
+
function LastBackup(props) {
|
|
10902
|
+
const { backup, createdRecoveryStats } = props;
|
|
10903
|
+
const {
|
|
10904
|
+
at: recoveryCreatedAt,
|
|
10905
|
+
browser: recoveryBrowser,
|
|
10906
|
+
ua: recoveryUa,
|
|
10907
|
+
deviceId: recoveryDeviceId,
|
|
10908
|
+
deviceName: recoveryDeviceName
|
|
10909
|
+
// country: recoveryCountry
|
|
10910
|
+
} = createdRecoveryStats || {};
|
|
10911
|
+
const hasBackupData = backup?.server?.enabled && backup.server.lastBackup || !backup.server.lastBackup && recoveryCreatedAt || backup.cloud.enabled && backup.cloud?.lastBackup || backup.local.enabled && backup.local.lastBackup;
|
|
10912
|
+
if (!hasBackupData) return null;
|
|
10913
|
+
return /* @__PURE__ */ jsxs47(Highlight, { type: "info", className: "flex flex-col gap-[var(--l-pass-gap)] text-[10px] leading-tight", children: [
|
|
10914
|
+
/* @__PURE__ */ jsxs47("span", { className: "block font-bold text-xs", children: [
|
|
10915
|
+
/* @__PURE__ */ jsx56(Server2, { className: "w-4 h-4 inline" }),
|
|
10916
|
+
" Last Keyshare Vault Backup"
|
|
10917
|
+
] }),
|
|
10918
|
+
recoveryCreatedAt && /* @__PURE__ */ jsxs47(Fragment16, { children: [
|
|
10919
|
+
/* @__PURE__ */ jsx56("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Created At:" }),
|
|
10920
|
+
/* @__PURE__ */ jsx56("span", { children: new Date(recoveryCreatedAt).toLocaleString() }),
|
|
10921
|
+
/* @__PURE__ */ jsx56("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Via:" }),
|
|
10922
|
+
/* @__PURE__ */ jsx56("span", { children: `${recoveryBrowser || "UNKNOWN"} browser at ${recoveryDeviceName || "UNKNOWN"} device under ${parseOS(recoveryUa) || "UNKNOWN"} OS` })
|
|
10923
|
+
] }),
|
|
10924
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs47("div", { className: "flex items-center gap-1", children: [
|
|
10925
|
+
/* @__PURE__ */ jsx56(Cloud3, { className: "h-3 w-3" }),
|
|
10926
|
+
/* @__PURE__ */ jsxs47("span", { children: [
|
|
10927
|
+
"Cloud: ",
|
|
10928
|
+
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
10929
|
+
] })
|
|
10930
|
+
] }),
|
|
10931
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs47("div", { className: "flex items-center gap-1", children: [
|
|
10932
|
+
/* @__PURE__ */ jsx56(HardDrive, { className: "h-3 w-3" }),
|
|
10933
|
+
/* @__PURE__ */ jsxs47("span", { children: [
|
|
10934
|
+
"Local: ",
|
|
10935
|
+
new Date(backup.local.lastBackup).toLocaleString()
|
|
10936
|
+
] })
|
|
10937
|
+
] })
|
|
10938
|
+
] });
|
|
10939
|
+
}
|
|
10940
|
+
|
|
10941
|
+
// src/internal/components/SecurityMenu/Keyshare/Keyshare.tsx
|
|
10942
|
+
import { Fragment as Fragment17, jsx as jsx57, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
10943
|
+
function Keyshare(props) {
|
|
10944
|
+
const { userId, serverHasKeyshare, localInfo, hasServerBackup, createdRecoveryStats, isLoading, refresh } = props;
|
|
10945
|
+
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10946
|
+
return /* @__PURE__ */ jsxs48(Fragment17, { children: [
|
|
10947
|
+
/* @__PURE__ */ jsxs48("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
10948
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Keyshare Status" }),
|
|
10949
|
+
/* @__PURE__ */ jsx57(Button, { variant: "ghost", size: "icon", title: "Refresh", disabled: isLoading, onClick: refresh, children: isLoading ? /* @__PURE__ */ jsx57(Loader18, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx57(RefreshCw2, { className: "h-4 w-4" }) })
|
|
10950
|
+
] }),
|
|
10951
|
+
/* @__PURE__ */ jsxs48("div", { className: "grid grid-cols-3 gap-[var(--l-pass-gap)] px-[var(--l-pass-gap)]", children: [
|
|
10952
|
+
/* @__PURE__ */ jsx57(
|
|
10953
|
+
KeyshareStatus,
|
|
10954
|
+
{
|
|
10955
|
+
content: serverHasKeyshare ? "Your Server Security Key Share is safe and ready" : "Server Security Key Share is missing",
|
|
10956
|
+
icon: serverHasKeyshare ? PositiveIcon : NegativeIcon,
|
|
10957
|
+
children: /* @__PURE__ */ jsxs48(
|
|
10958
|
+
Highlight,
|
|
10959
|
+
{
|
|
10960
|
+
type: serverHasKeyshare ? "success" : "warning",
|
|
10961
|
+
className: "w-full h-full flex flex-col items-center gap-0",
|
|
10962
|
+
children: [
|
|
10963
|
+
/* @__PURE__ */ jsx57(Cloud4, { className: "h-6 w-6" }),
|
|
10964
|
+
/* @__PURE__ */ jsx57("span", { className: "text-[10px] font-medium leading-4", children: "Server Share" })
|
|
10965
|
+
]
|
|
10966
|
+
}
|
|
10967
|
+
)
|
|
10968
|
+
}
|
|
10969
|
+
),
|
|
10970
|
+
/* @__PURE__ */ jsx57(
|
|
10971
|
+
KeyshareStatus,
|
|
10972
|
+
{
|
|
10973
|
+
content: localInfo?.hasKeyshare ? "Your Private Local Security Key Share is safe and ready" : "Private Local Security Key Share is missing",
|
|
10974
|
+
icon: localInfo?.hasKeyshare ? PositiveIcon : NegativeIcon,
|
|
10975
|
+
children: /* @__PURE__ */ jsxs48(
|
|
10976
|
+
Highlight,
|
|
10977
|
+
{
|
|
10978
|
+
type: localInfo?.hasKeyshare ? "success" : "warning",
|
|
10979
|
+
className: "w-full h-full flex flex-col items-center gap-0",
|
|
10980
|
+
children: [
|
|
10981
|
+
/* @__PURE__ */ jsx57(Laptop, { className: "h-6 w-6" }),
|
|
10982
|
+
/* @__PURE__ */ jsx57("span", { className: "text-[10px] font-medium leading-4", children: "Local Share" })
|
|
10983
|
+
]
|
|
10984
|
+
}
|
|
10985
|
+
)
|
|
10986
|
+
}
|
|
10987
|
+
),
|
|
10988
|
+
/* @__PURE__ */ jsx57(
|
|
10989
|
+
KeyshareStatus,
|
|
10990
|
+
{
|
|
10991
|
+
content: hasServerBackup ? "Security Key Share Vault Backup exists and ready" : "Security Key Share Vault Backup Missing. Create one to ensure your data is safe.",
|
|
10992
|
+
icon: hasServerBackup ? PositiveIcon : NegativeIcon,
|
|
10993
|
+
children: /* @__PURE__ */ jsxs48(
|
|
10994
|
+
Highlight,
|
|
10995
|
+
{
|
|
10996
|
+
type: hasServerBackup ? "success" : "warning",
|
|
10997
|
+
className: "w-full h-full flex flex-col items-center gap-0",
|
|
10998
|
+
children: [
|
|
10999
|
+
/* @__PURE__ */ jsx57(Server3, { className: "h-6 w-6" }),
|
|
11000
|
+
/* @__PURE__ */ jsx57("span", { className: "text-[10px] font-medium leading-4", children: "Backup Vault" })
|
|
11001
|
+
]
|
|
11002
|
+
}
|
|
11003
|
+
)
|
|
11004
|
+
}
|
|
11005
|
+
)
|
|
11006
|
+
] }),
|
|
11007
|
+
/* @__PURE__ */ jsx57(LastBackup, { backup, createdRecoveryStats }),
|
|
11008
|
+
/* @__PURE__ */ jsx57("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } })
|
|
11009
|
+
] });
|
|
11010
|
+
}
|
|
11011
|
+
|
|
11012
|
+
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
11013
|
+
import { Fragment as Fragment18, jsx as jsx58, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
10828
11014
|
function SecurityMenu() {
|
|
10829
|
-
const qc =
|
|
11015
|
+
const qc = useQueryClient16();
|
|
10830
11016
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10831
11017
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10832
11018
|
const userId = jwtTokenManager2.getUserId();
|
|
10833
|
-
|
|
10834
|
-
|
|
10835
|
-
|
|
10836
|
-
const
|
|
10837
|
-
const [recoveryCreatedAt, setRecoveryCreatedAt] = useState11(null);
|
|
10838
|
-
const [recoveryBrowser, setRecoveryBrowser] = useState11(null);
|
|
10839
|
-
const [recoveryUa, setRecoveryUa] = useState11(null);
|
|
10840
|
-
const [recoveryDeviceId, setRecoveryDeviceId] = useState11(null);
|
|
10841
|
-
const [recoveryDeviceName, setRecoveryDeviceName] = useState11(null);
|
|
10842
|
-
const [recoveryCountry, setRecoveryCountry] = useState11(null);
|
|
10843
|
-
const [hasServerBackup, setHasServerBackup] = useState11(false);
|
|
10844
|
-
const [trustedApps, setTrustedApps] = useState11([]);
|
|
10845
|
-
const [appToRemove, setAppToRemove] = useState11(null);
|
|
10846
|
-
const {
|
|
10847
|
-
data: recoveryData,
|
|
10848
|
-
isFetching: isRecoveryRefreshing
|
|
10849
|
-
// error: recoveryError
|
|
10850
|
-
} = useQuery13({
|
|
11019
|
+
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
11020
|
+
const [isRemoving, setIsRemoving] = useState12(false);
|
|
11021
|
+
const [appToRemove, setAppToRemove] = useState12(null);
|
|
11022
|
+
const { data: recoveryData, isFetching: isRecoveryLoading } = useQuery13({
|
|
10851
11023
|
enabled: !!userId,
|
|
10852
11024
|
queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
|
|
10853
11025
|
queryFn: async () => {
|
|
@@ -10861,252 +11033,176 @@ function SecurityMenu() {
|
|
|
10861
11033
|
return { trustedApps: trustedApps2, keyshareInfo, shareRecoveryStats };
|
|
10862
11034
|
}
|
|
10863
11035
|
});
|
|
10864
|
-
|
|
10865
|
-
|
|
10866
|
-
|
|
10867
|
-
setLocalInfo(keyshareInfo);
|
|
10868
|
-
setTrustedApps(trustedApps2);
|
|
10869
|
-
const hasRecoveryData = shareRecoveryStats && (shareRecoveryStats.created || shareRecoveryStats.devices && shareRecoveryStats.devices.length > 0);
|
|
10870
|
-
const created = shareRecoveryStats?.created;
|
|
10871
|
-
setHasServerBackup(!!hasRecoveryData);
|
|
10872
|
-
setRecoveryCreatedAt(created?.at || null);
|
|
10873
|
-
setRecoveryBrowser(created?.browser || null);
|
|
10874
|
-
setRecoveryUa(created?.ua || null);
|
|
10875
|
-
setRecoveryDeviceId(created?.deviceId || null);
|
|
10876
|
-
setRecoveryDeviceName(created?.deviceName || null);
|
|
10877
|
-
setRecoveryCountry(created?.country || null);
|
|
10878
|
-
}, [recoveryData]);
|
|
10879
|
-
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
11036
|
+
const localInfo = recoveryData?.keyshareInfo || {};
|
|
11037
|
+
const trustedApps = recoveryData?.trustedApps || [];
|
|
11038
|
+
const hasServerBackup = !!recoveryData?.shareRecoveryStats?.created || recoveryData?.shareRecoveryStats?.devices?.length > 0;
|
|
10880
11039
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10881
|
-
|
|
11040
|
+
const handleRemoveTrustedApp = async () => {
|
|
11041
|
+
if (!userId || !appToRemove) return;
|
|
11042
|
+
setIsRemoving(true);
|
|
11043
|
+
try {
|
|
11044
|
+
const iframeManager = getIframeManager();
|
|
11045
|
+
if (!iframeManager) {
|
|
11046
|
+
throw new Error("Iframe manager not available");
|
|
11047
|
+
}
|
|
11048
|
+
const success = await iframeManager.removeTrustedApp(userId, appToRemove.projectId, appToRemove.origin);
|
|
11049
|
+
if (success) {
|
|
11050
|
+
qc.invalidateQueries({ queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId] });
|
|
11051
|
+
setAppToRemove(null);
|
|
11052
|
+
} else {
|
|
11053
|
+
console.error("[SecurityMenu] Failed to remove trusted app");
|
|
11054
|
+
}
|
|
11055
|
+
} catch (error) {
|
|
11056
|
+
console.error("[SecurityMenu] Error removing trusted app:", error);
|
|
11057
|
+
} finally {
|
|
11058
|
+
setIsRemoving(false);
|
|
11059
|
+
}
|
|
11060
|
+
};
|
|
11061
|
+
return /* @__PURE__ */ jsx58(
|
|
10882
11062
|
"div",
|
|
10883
11063
|
{
|
|
10884
11064
|
style: {
|
|
10885
11065
|
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10886
11066
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
10887
11067
|
},
|
|
10888
|
-
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]
|
|
10889
|
-
children: [
|
|
10890
|
-
/* @__PURE__ */
|
|
10891
|
-
/* @__PURE__ */
|
|
10892
|
-
/* @__PURE__ */ jsx54("span", { className: "text-xl font-semibold", children: "Security" })
|
|
10893
|
-
] }),
|
|
10894
|
-
/* @__PURE__ */ jsxs45("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
10895
|
-
/* @__PURE__ */ jsx54("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Keyshare Status" }),
|
|
10896
|
-
/* @__PURE__ */ jsx54(
|
|
11068
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
11069
|
+
children: /* @__PURE__ */ jsxs49(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11070
|
+
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11071
|
+
/* @__PURE__ */ jsx58(
|
|
10897
11072
|
Button,
|
|
10898
11073
|
{
|
|
10899
11074
|
variant: "ghost",
|
|
10900
11075
|
size: "icon",
|
|
10901
|
-
title: "
|
|
10902
|
-
|
|
10903
|
-
|
|
10904
|
-
|
|
11076
|
+
title: "Back",
|
|
11077
|
+
onClick: () => {
|
|
11078
|
+
if (!!appToRemove) setAppToRemove(null);
|
|
11079
|
+
else setPage("settings" /* SETTINGS */);
|
|
11080
|
+
},
|
|
11081
|
+
children: /* @__PURE__ */ jsx58(ArrowLeft12, { className: "h-4 w-4" })
|
|
10905
11082
|
}
|
|
10906
|
-
)
|
|
11083
|
+
),
|
|
11084
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xl font-semibold", children: "Security" })
|
|
10907
11085
|
] }),
|
|
10908
|
-
/* @__PURE__ */
|
|
10909
|
-
/* @__PURE__ */
|
|
10910
|
-
|
|
10911
|
-
|
|
10912
|
-
|
|
10913
|
-
|
|
10914
|
-
|
|
10915
|
-
|
|
10916
|
-
|
|
10917
|
-
|
|
10918
|
-
|
|
10919
|
-
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10924
|
-
|
|
10925
|
-
|
|
10926
|
-
|
|
10927
|
-
|
|
10928
|
-
|
|
10929
|
-
|
|
10930
|
-
|
|
10931
|
-
|
|
11086
|
+
!appToRemove && /* @__PURE__ */ jsxs49(Fragment18, { children: [
|
|
11087
|
+
/* @__PURE__ */ jsx58(
|
|
11088
|
+
Keyshare,
|
|
11089
|
+
{
|
|
11090
|
+
userId,
|
|
11091
|
+
serverHasKeyshare,
|
|
11092
|
+
localInfo,
|
|
11093
|
+
hasServerBackup,
|
|
11094
|
+
isLoading: isRecoveryLoading,
|
|
11095
|
+
createdRecoveryStats: recoveryData?.shareRecoveryStats?.created,
|
|
11096
|
+
refresh: () => qc.invalidateQueries({ queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId] })
|
|
11097
|
+
}
|
|
11098
|
+
),
|
|
11099
|
+
trustedApps.length > 0 && /* @__PURE__ */ jsxs49(Fragment18, { children: [
|
|
11100
|
+
/* @__PURE__ */ jsxs49("div", { className: "w-full space-y-2", children: [
|
|
11101
|
+
/* @__PURE__ */ jsx58("div", { className: "font-medium text-xs text-[var(--l-pass-fg)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
11102
|
+
/* @__PURE__ */ jsx58("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs49(
|
|
11103
|
+
"div",
|
|
11104
|
+
{
|
|
11105
|
+
className: "text-[10px] leading-tight p-2 rounded flex items-center gap-2 bg-[var(--l-pass-secondary)]",
|
|
11106
|
+
children: [
|
|
11107
|
+
app.appLogo ? /* @__PURE__ */ jsx58("img", { src: app.appLogo, alt: "", className: "w-8 h-8 rounded-md object-cover flex-shrink-0" }) : /* @__PURE__ */ jsx58("div", { className: "w-8 h-8 rounded-md bg-[var(--l-pass-bg-muted)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx58("span", { className: "text-sm", children: "\u{1F517}" }) }),
|
|
11108
|
+
/* @__PURE__ */ jsxs49("div", { className: "flex-1 min-w-0", children: [
|
|
11109
|
+
/* @__PURE__ */ jsx58("div", { className: "font-medium truncate", children: app.appName || new URL(app.origin).hostname }),
|
|
11110
|
+
/* @__PURE__ */ jsx58("div", { className: "text-[var(--l-pass-fg-muted)] truncate", children: new URL(app.origin).hostname }),
|
|
11111
|
+
/* @__PURE__ */ jsxs49("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
11112
|
+
"Trusted: ",
|
|
11113
|
+
new Date(app.trustedAt).toLocaleDateString()
|
|
11114
|
+
] })
|
|
11115
|
+
] }),
|
|
11116
|
+
/* @__PURE__ */ jsx58(
|
|
11117
|
+
Button,
|
|
11118
|
+
{
|
|
11119
|
+
variant: "ghost",
|
|
11120
|
+
size: "icon",
|
|
11121
|
+
title: "Remove from trusted",
|
|
11122
|
+
className: "text-[var(--l-pass-error)] flex-shrink-0",
|
|
11123
|
+
onClick: () => setAppToRemove({
|
|
11124
|
+
projectId: app.projectId,
|
|
11125
|
+
origin: app.origin,
|
|
11126
|
+
hostname: new URL(app.origin).hostname,
|
|
11127
|
+
appName: app.appName,
|
|
11128
|
+
appLogo: app.appLogo
|
|
11129
|
+
}),
|
|
11130
|
+
children: /* @__PURE__ */ jsx58(Trash22, { className: "h-3 w-3" })
|
|
11131
|
+
}
|
|
11132
|
+
)
|
|
11133
|
+
]
|
|
11134
|
+
},
|
|
11135
|
+
index
|
|
11136
|
+
)) })
|
|
10932
11137
|
] }),
|
|
10933
|
-
/* @__PURE__ */
|
|
10934
|
-
"span",
|
|
10935
|
-
{
|
|
10936
|
-
className: cn(
|
|
10937
|
-
"inline-flex gap-[var(--l-pass-gap)] items-center text-xs px-2 py-1 rounded-full text-black leading-4",
|
|
10938
|
-
localInfo?.hasKeyshare ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-warning)]"
|
|
10939
|
-
),
|
|
10940
|
-
children: [
|
|
10941
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */ jsx54(CheckCircle23, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx54(AlertTriangle4, { className: "h-4 w-4" }),
|
|
10942
|
-
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
10943
|
-
]
|
|
10944
|
-
}
|
|
10945
|
-
)
|
|
11138
|
+
/* @__PURE__ */ jsx58("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } })
|
|
10946
11139
|
] }),
|
|
10947
|
-
/* @__PURE__ */
|
|
10948
|
-
/* @__PURE__ */
|
|
10949
|
-
/* @__PURE__ */
|
|
10950
|
-
|
|
11140
|
+
/* @__PURE__ */ jsxs49(Highlight, { className: "flex flex-col gap-[var(--l-pass-gap)] user-select-none", type: "warning", children: [
|
|
11141
|
+
/* @__PURE__ */ jsxs49("label", { className: "cursor-pointer flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11142
|
+
/* @__PURE__ */ jsx58(
|
|
11143
|
+
Checkbox,
|
|
11144
|
+
{
|
|
11145
|
+
name: "paranoia-mode-checkbox"
|
|
11146
|
+
}
|
|
11147
|
+
),
|
|
11148
|
+
/* @__PURE__ */ jsx58("span", { className: "text-sm font-semibold", children: "Paranoia MODE (not implemented)" })
|
|
10951
11149
|
] }),
|
|
10952
|
-
/* @__PURE__ */
|
|
10953
|
-
"span",
|
|
10954
|
-
{
|
|
10955
|
-
className: cn(
|
|
10956
|
-
"inline-flex gap-[var(--l-pass-gap)] items-center text-xs px-2 py-1 rounded-full text-black leading-4",
|
|
10957
|
-
hasServerBackup ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-warning)]"
|
|
10958
|
-
),
|
|
10959
|
-
children: [
|
|
10960
|
-
hasServerBackup ? /* @__PURE__ */ jsx54(CheckCircle23, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx54(AlertTriangle4, { className: "h-4 w-4" }),
|
|
10961
|
-
hasServerBackup ? "Ready" : "None"
|
|
10962
|
-
]
|
|
10963
|
-
}
|
|
10964
|
-
)
|
|
11150
|
+
/* @__PURE__ */ jsx58("span", { children: "Paranoia mode description... (wip)" })
|
|
10965
11151
|
] })
|
|
10966
11152
|
] }),
|
|
10967
|
-
/* @__PURE__ */
|
|
10968
|
-
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
/* @__PURE__ */
|
|
10972
|
-
/* @__PURE__ */
|
|
10973
|
-
|
|
10974
|
-
|
|
10975
|
-
/* @__PURE__ */ jsx54("span", { children: "Size: " }),
|
|
10976
|
-
/* @__PURE__ */ jsx54("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
10977
|
-
] }),
|
|
10978
|
-
localInfo.sessionId && /* @__PURE__ */ jsxs45("div", { children: [
|
|
10979
|
-
/* @__PURE__ */ jsx54("span", { children: "Session: " }),
|
|
10980
|
-
/* @__PURE__ */ jsx54("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
10981
|
-
] })
|
|
10982
|
-
] }),
|
|
10983
|
-
/* @__PURE__ */ jsxs45("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10984
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-1", children: [
|
|
10985
|
-
/* @__PURE__ */ jsx54(Server2, { className: "h-2.5 w-2.5" }),
|
|
10986
|
-
/* @__PURE__ */ jsxs45("span", { children: [
|
|
10987
|
-
"Server: ",
|
|
10988
|
-
new Date(backup.server.lastBackup).toLocaleString()
|
|
10989
|
-
] })
|
|
10990
|
-
] }),
|
|
10991
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-1", children: [
|
|
10992
|
-
/* @__PURE__ */ jsx54(Server2, { className: "h-2.5 w-2.5" }),
|
|
10993
|
-
/* @__PURE__ */ jsxs45("span", { children: [
|
|
10994
|
-
"Server: ",
|
|
10995
|
-
new Date(recoveryCreatedAt).toLocaleString()
|
|
11153
|
+
!!appToRemove && /* @__PURE__ */ jsxs49("div", { className: "w-full", children: [
|
|
11154
|
+
/* @__PURE__ */ jsxs49("div", { className: "text-center", children: [
|
|
11155
|
+
/* @__PURE__ */ jsx58("div", { className: "text-lg font-semibold mb-2", children: "Remove Trusted App?" }),
|
|
11156
|
+
/* @__PURE__ */ jsxs49("div", { className: "flex items-center justify-center gap-2 mb-3", children: [
|
|
11157
|
+
appToRemove.appLogo ? /* @__PURE__ */ jsx58("img", { src: appToRemove.appLogo, alt: "", className: "w-10 h-10 rounded-md object-cover" }) : /* @__PURE__ */ jsx58("div", { className: "w-10 h-10 rounded-md bg-[var(--l-pass-bg-muted)] flex items-center justify-center", children: /* @__PURE__ */ jsx58("span", { className: "text-lg", children: "\u{1F517}" }) }),
|
|
11158
|
+
/* @__PURE__ */ jsxs49("div", { className: "text-left", children: [
|
|
11159
|
+
/* @__PURE__ */ jsx58("div", { className: "font-medium", children: appToRemove.appName || appToRemove.hostname }),
|
|
11160
|
+
/* @__PURE__ */ jsx58("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: appToRemove.hostname })
|
|
10996
11161
|
] })
|
|
10997
11162
|
] }),
|
|
10998
|
-
|
|
10999
|
-
/* @__PURE__ */
|
|
11000
|
-
/* @__PURE__ */
|
|
11001
|
-
"
|
|
11002
|
-
|
|
11003
|
-
] })
|
|
11004
|
-
] }),
|
|
11005
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-1", children: [
|
|
11006
|
-
/* @__PURE__ */ jsx54(HardDrive, { className: "h-2.5 w-2.5" }),
|
|
11007
|
-
/* @__PURE__ */ jsxs45("span", { children: [
|
|
11008
|
-
"Local: ",
|
|
11009
|
-
new Date(backup.local.lastBackup).toLocaleString()
|
|
11163
|
+
/* @__PURE__ */ jsxs49("div", { className: "text-xs text-[var(--l-pass-fg-muted)] text-left space-y-1 mb-4", children: [
|
|
11164
|
+
/* @__PURE__ */ jsx58("p", { children: "After removing this application:" }),
|
|
11165
|
+
/* @__PURE__ */ jsxs49("ul", { className: "list-disc list-inside ml-2 space-y-0.5", children: [
|
|
11166
|
+
/* @__PURE__ */ jsx58("li", { children: "All transactions will require confirmation" }),
|
|
11167
|
+
/* @__PURE__ */ jsx58("li", { children: 'You can re-add it anytime by checking "Trust this app"' })
|
|
11010
11168
|
] })
|
|
11011
11169
|
] })
|
|
11012
11170
|
] }),
|
|
11013
|
-
|
|
11014
|
-
/* @__PURE__ */
|
|
11015
|
-
|
|
11016
|
-
|
|
11017
|
-
new Date(recoveryCreatedAt).toLocaleString(),
|
|
11018
|
-
" "
|
|
11019
|
-
] }),
|
|
11020
|
-
recoveryCountry && /* @__PURE__ */ jsxs45("div", { children: [
|
|
11021
|
-
"Country: ",
|
|
11022
|
-
recoveryCountry
|
|
11023
|
-
] }),
|
|
11024
|
-
recoveryBrowser && /* @__PURE__ */ jsxs45("div", { children: [
|
|
11025
|
-
"Browser: ",
|
|
11026
|
-
recoveryBrowser
|
|
11027
|
-
] }),
|
|
11028
|
-
parseOS(recoveryUa) && /* @__PURE__ */ jsxs45("div", { children: [
|
|
11029
|
-
"OS: ",
|
|
11030
|
-
parseOS(recoveryUa)
|
|
11031
|
-
] }),
|
|
11032
|
-
recoveryDeviceName && /* @__PURE__ */ jsxs45("div", { children: [
|
|
11033
|
-
"Device: ",
|
|
11034
|
-
recoveryDeviceName
|
|
11035
|
-
] }),
|
|
11036
|
-
recoveryDeviceId && /* @__PURE__ */ jsxs45("div", { children: [
|
|
11037
|
-
"Device ID: ",
|
|
11038
|
-
/* @__PURE__ */ jsx54("span", { className: "break-all", children: recoveryDeviceId })
|
|
11039
|
-
] })
|
|
11040
|
-
] }),
|
|
11041
|
-
trustedApps.length > 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full space-y-2", children: [
|
|
11042
|
-
/* @__PURE__ */ jsx54("div", { className: "font-medium text-xs text-[var(--l-pass-fg)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
11043
|
-
/* @__PURE__ */ jsx54("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs45(
|
|
11044
|
-
"div",
|
|
11045
|
-
{
|
|
11046
|
-
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
11047
|
-
children: [
|
|
11048
|
-
/* @__PURE__ */ jsxs45("div", { className: "flex-1 min-w-0", children: [
|
|
11049
|
-
/* @__PURE__ */ jsx54("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
11050
|
-
/* @__PURE__ */ jsxs45("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
11051
|
-
"Trusted: ",
|
|
11052
|
-
new Date(app.trustedAt).toLocaleDateString()
|
|
11053
|
-
] })
|
|
11054
|
-
] }),
|
|
11055
|
-
/* @__PURE__ */ jsx54(
|
|
11056
|
-
Button,
|
|
11057
|
-
{
|
|
11058
|
-
variant: "ghost",
|
|
11059
|
-
size: "icon",
|
|
11060
|
-
title: "Remove from trusted",
|
|
11061
|
-
className: "text-[var(--l-pass-error)]",
|
|
11062
|
-
onClick: () => setAppToRemove({
|
|
11063
|
-
projectId: app.projectId,
|
|
11064
|
-
origin: app.origin,
|
|
11065
|
-
hostname: new URL(app.origin).hostname
|
|
11066
|
-
}),
|
|
11067
|
-
children: /* @__PURE__ */ jsx54(Trash22, { className: "h-3 w-3" })
|
|
11068
|
-
}
|
|
11069
|
-
)
|
|
11070
|
-
]
|
|
11071
|
-
},
|
|
11072
|
-
index
|
|
11073
|
-
)) })
|
|
11074
|
-
] })
|
|
11075
|
-
] }),
|
|
11076
|
-
/* @__PURE__ */ jsx54("div", { className: "w-full", style: { borderTop: "1px solid var(--l-pass-bd)" } }),
|
|
11077
|
-
/* @__PURE__ */ jsxs45(Highlight, { className: "flex flex-col gap-[var(--l-pass-gap)] user-select-none", type: "warning", children: [
|
|
11078
|
-
/* @__PURE__ */ jsxs45("label", { className: "cursor-pointer flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11079
|
-
/* @__PURE__ */ jsx54(
|
|
11080
|
-
Checkbox,
|
|
11171
|
+
/* @__PURE__ */ jsxs49("div", { className: "flex gap-2", children: [
|
|
11172
|
+
/* @__PURE__ */ jsx58(Button, { variant: "outline", className: "flex-1", onClick: () => setAppToRemove(null), disabled: isRemoving, children: "Cancel" }),
|
|
11173
|
+
/* @__PURE__ */ jsx58(
|
|
11174
|
+
Button,
|
|
11081
11175
|
{
|
|
11082
|
-
|
|
11176
|
+
variant: "default",
|
|
11177
|
+
className: "flex-1 bg-[var(--l-pass-error)] hover:bg-[var(--l-pass-error)]/60 active:bg-[var(--l-pass-error)]/40",
|
|
11178
|
+
onClick: handleRemoveTrustedApp,
|
|
11179
|
+
disabled: isRemoving,
|
|
11180
|
+
children: isRemoving ? /* @__PURE__ */ jsx58(Loader19, { className: "h-4 w-4 animate-spin" }) : "Remove"
|
|
11083
11181
|
}
|
|
11084
|
-
)
|
|
11085
|
-
|
|
11086
|
-
] }),
|
|
11087
|
-
/* @__PURE__ */ jsx54("span", { children: "Paranoia mode description (not implemented)" })
|
|
11182
|
+
)
|
|
11183
|
+
] })
|
|
11088
11184
|
] })
|
|
11089
|
-
]
|
|
11185
|
+
] })
|
|
11090
11186
|
}
|
|
11091
11187
|
);
|
|
11092
11188
|
}
|
|
11093
11189
|
|
|
11094
11190
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
11095
|
-
import { AlertCircle as AlertCircle5, ArrowLeft as ArrowLeft13, CheckCircle2 as
|
|
11096
|
-
import { useEffect as
|
|
11191
|
+
import { AlertCircle as AlertCircle5, ArrowLeft as ArrowLeft13, CheckCircle2 as CheckCircle23, Loader as Loader20, Wallet as Wallet3 } from "lucide-react";
|
|
11192
|
+
import { useEffect as useEffect24, useState as useState14 } from "react";
|
|
11097
11193
|
import { isAddress as isAddress2 } from "viem";
|
|
11098
11194
|
import { useBalance as useBalance4 } from "wagmi";
|
|
11099
11195
|
|
|
11100
11196
|
// src/hooks/useSendTransaction.ts
|
|
11101
|
-
import { useCallback as useCallback14, useState as
|
|
11197
|
+
import { useCallback as useCallback14, useState as useState13 } from "react";
|
|
11102
11198
|
import { isAddress, parseEther as parseEther2 } from "viem";
|
|
11103
11199
|
init_account();
|
|
11104
11200
|
function useSendTransaction() {
|
|
11105
11201
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11106
11202
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11107
|
-
const [isLoading, setIsLoading] =
|
|
11108
|
-
const [error, setError] =
|
|
11109
|
-
const [userOpHash, setUserOpHash] =
|
|
11203
|
+
const [isLoading, setIsLoading] = useState13(false);
|
|
11204
|
+
const [error, setError] = useState13(null);
|
|
11205
|
+
const [userOpHash, setUserOpHash] = useState13(null);
|
|
11110
11206
|
const sendTransaction = useCallback14(
|
|
11111
11207
|
async (params) => {
|
|
11112
11208
|
if (!session || !address) {
|
|
@@ -11324,7 +11420,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
11324
11420
|
|
|
11325
11421
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
11326
11422
|
init_base();
|
|
11327
|
-
import { Fragment as
|
|
11423
|
+
import { Fragment as Fragment19, jsx as jsx59, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
11328
11424
|
function SendLumiaMenu() {
|
|
11329
11425
|
const page = useLayoutDataStore((st) => st.page);
|
|
11330
11426
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -11336,13 +11432,13 @@ function SendLumiaMenu() {
|
|
|
11336
11432
|
address,
|
|
11337
11433
|
chainId: lumiaBeam.id
|
|
11338
11434
|
});
|
|
11339
|
-
const [recipient, setRecipient] =
|
|
11340
|
-
const [amount, setAmount] =
|
|
11341
|
-
const [txStep, setTxStep] =
|
|
11342
|
-
const [validationError, setValidationError] =
|
|
11435
|
+
const [recipient, setRecipient] = useState14("");
|
|
11436
|
+
const [amount, setAmount] = useState14("");
|
|
11437
|
+
const [txStep, setTxStep] = useState14("input");
|
|
11438
|
+
const [validationError, setValidationError] = useState14(null);
|
|
11343
11439
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
11344
11440
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
11345
|
-
|
|
11441
|
+
useEffect24(() => {
|
|
11346
11442
|
if (open) {
|
|
11347
11443
|
setTxStep("input");
|
|
11348
11444
|
setValidationError(null);
|
|
@@ -11397,15 +11493,15 @@ function SendLumiaMenu() {
|
|
|
11397
11493
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
11398
11494
|
setAmount(maxAmount.toFixed(6));
|
|
11399
11495
|
};
|
|
11400
|
-
return /* @__PURE__ */
|
|
11401
|
-
/* @__PURE__ */
|
|
11402
|
-
txStep === "input" && /* @__PURE__ */
|
|
11403
|
-
/* @__PURE__ */
|
|
11496
|
+
return /* @__PURE__ */ jsxs50("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11497
|
+
/* @__PURE__ */ jsxs50("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11498
|
+
txStep === "input" && /* @__PURE__ */ jsx59(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx59(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
11499
|
+
/* @__PURE__ */ jsx59("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
11404
11500
|
] }),
|
|
11405
|
-
txStep === "input" && /* @__PURE__ */
|
|
11406
|
-
/* @__PURE__ */
|
|
11407
|
-
/* @__PURE__ */
|
|
11408
|
-
/* @__PURE__ */
|
|
11501
|
+
txStep === "input" && /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
11502
|
+
/* @__PURE__ */ jsxs50("div", { className: "w-full flex flex-col gap-2", children: [
|
|
11503
|
+
/* @__PURE__ */ jsx59("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient Address" }),
|
|
11504
|
+
/* @__PURE__ */ jsx59(
|
|
11409
11505
|
Input,
|
|
11410
11506
|
{
|
|
11411
11507
|
Icon: Wallet3,
|
|
@@ -11416,17 +11512,17 @@ function SendLumiaMenu() {
|
|
|
11416
11512
|
}
|
|
11417
11513
|
)
|
|
11418
11514
|
] }),
|
|
11419
|
-
/* @__PURE__ */
|
|
11420
|
-
/* @__PURE__ */
|
|
11421
|
-
/* @__PURE__ */
|
|
11422
|
-
/* @__PURE__ */
|
|
11515
|
+
/* @__PURE__ */ jsxs50("div", { className: "w-full flex flex-col gap-2", children: [
|
|
11516
|
+
/* @__PURE__ */ jsxs50("div", { className: "flex justify-between items-center", children: [
|
|
11517
|
+
/* @__PURE__ */ jsx59("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: "Amount" }),
|
|
11518
|
+
/* @__PURE__ */ jsxs50("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
11423
11519
|
"Balance: ",
|
|
11424
11520
|
balance.toFixed(4),
|
|
11425
11521
|
" LUMIA"
|
|
11426
11522
|
] })
|
|
11427
11523
|
] }),
|
|
11428
|
-
/* @__PURE__ */
|
|
11429
|
-
/* @__PURE__ */
|
|
11524
|
+
/* @__PURE__ */ jsxs50("div", { className: "w-full relative", children: [
|
|
11525
|
+
/* @__PURE__ */ jsx59(
|
|
11430
11526
|
Input,
|
|
11431
11527
|
{
|
|
11432
11528
|
Icon: LumiaIcon,
|
|
@@ -11437,7 +11533,7 @@ function SendLumiaMenu() {
|
|
|
11437
11533
|
step: "0.000001"
|
|
11438
11534
|
}
|
|
11439
11535
|
),
|
|
11440
|
-
/* @__PURE__ */
|
|
11536
|
+
/* @__PURE__ */ jsx59(
|
|
11441
11537
|
Button,
|
|
11442
11538
|
{
|
|
11443
11539
|
onClick: handleMaxAmount,
|
|
@@ -11450,74 +11546,74 @@ function SendLumiaMenu() {
|
|
|
11450
11546
|
)
|
|
11451
11547
|
] })
|
|
11452
11548
|
] }),
|
|
11453
|
-
(validationError || error) && /* @__PURE__ */
|
|
11454
|
-
/* @__PURE__ */
|
|
11455
|
-
/* @__PURE__ */
|
|
11549
|
+
(validationError || error) && /* @__PURE__ */ jsxs50("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: [
|
|
11550
|
+
/* @__PURE__ */ jsx59(AlertCircle5, { className: "h-4 w-4" }),
|
|
11551
|
+
/* @__PURE__ */ jsx59("span", { className: "text-sm", children: validationError || error })
|
|
11456
11552
|
] }),
|
|
11457
|
-
/* @__PURE__ */
|
|
11553
|
+
/* @__PURE__ */ jsx59(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
11458
11554
|
] }),
|
|
11459
|
-
txStep === "confirm" && /* @__PURE__ */
|
|
11460
|
-
/* @__PURE__ */
|
|
11461
|
-
/* @__PURE__ */
|
|
11462
|
-
/* @__PURE__ */
|
|
11463
|
-
/* @__PURE__ */
|
|
11464
|
-
/* @__PURE__ */
|
|
11465
|
-
/* @__PURE__ */
|
|
11555
|
+
txStep === "confirm" && /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
11556
|
+
/* @__PURE__ */ jsxs50("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
11557
|
+
/* @__PURE__ */ jsx59("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
11558
|
+
/* @__PURE__ */ jsxs50("div", { className: "space-y-2 text-sm", children: [
|
|
11559
|
+
/* @__PURE__ */ jsxs50("div", { className: "flex justify-between", children: [
|
|
11560
|
+
/* @__PURE__ */ jsx59("span", { children: "To:" }),
|
|
11561
|
+
/* @__PURE__ */ jsx59("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
11466
11562
|
] }),
|
|
11467
|
-
/* @__PURE__ */
|
|
11468
|
-
/* @__PURE__ */
|
|
11469
|
-
/* @__PURE__ */
|
|
11563
|
+
/* @__PURE__ */ jsxs50("div", { className: "flex justify-between", children: [
|
|
11564
|
+
/* @__PURE__ */ jsx59("span", { children: "Amount:" }),
|
|
11565
|
+
/* @__PURE__ */ jsxs50("span", { className: `font-semibold`, children: [
|
|
11470
11566
|
amount,
|
|
11471
11567
|
" LUMIA"
|
|
11472
11568
|
] })
|
|
11473
11569
|
] }),
|
|
11474
|
-
/* @__PURE__ */
|
|
11475
|
-
/* @__PURE__ */
|
|
11476
|
-
/* @__PURE__ */
|
|
11570
|
+
/* @__PURE__ */ jsxs50("div", { className: "flex justify-between", children: [
|
|
11571
|
+
/* @__PURE__ */ jsx59("span", { children: "Network:" }),
|
|
11572
|
+
/* @__PURE__ */ jsx59("span", { children: "Lumia Beam" })
|
|
11477
11573
|
] })
|
|
11478
11574
|
] })
|
|
11479
11575
|
] }),
|
|
11480
|
-
/* @__PURE__ */
|
|
11481
|
-
/* @__PURE__ */
|
|
11482
|
-
/* @__PURE__ */
|
|
11483
|
-
isLoading && /* @__PURE__ */
|
|
11576
|
+
/* @__PURE__ */ jsxs50("div", { className: "flex gap-2", children: [
|
|
11577
|
+
/* @__PURE__ */ jsx59(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
11578
|
+
/* @__PURE__ */ jsxs50(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
11579
|
+
isLoading && /* @__PURE__ */ jsx59(Loader20, { className: "h-4 w-4 animate-spin" }),
|
|
11484
11580
|
"Confirm"
|
|
11485
11581
|
] })
|
|
11486
11582
|
] })
|
|
11487
11583
|
] }),
|
|
11488
|
-
txStep === "pending" && /* @__PURE__ */
|
|
11489
|
-
/* @__PURE__ */
|
|
11490
|
-
/* @__PURE__ */
|
|
11491
|
-
/* @__PURE__ */
|
|
11492
|
-
/* @__PURE__ */
|
|
11584
|
+
txStep === "pending" && /* @__PURE__ */ jsxs50("div", { className: "py-8 text-center space-y-4", children: [
|
|
11585
|
+
/* @__PURE__ */ jsx59(Loader20, { className: "h-5 w-5 animate-spin mx-auto" }),
|
|
11586
|
+
/* @__PURE__ */ jsxs50("div", { children: [
|
|
11587
|
+
/* @__PURE__ */ jsx59("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
11588
|
+
/* @__PURE__ */ jsx59("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
11493
11589
|
] })
|
|
11494
11590
|
] }),
|
|
11495
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
11496
|
-
/* @__PURE__ */
|
|
11497
|
-
/* @__PURE__ */
|
|
11498
|
-
/* @__PURE__ */
|
|
11499
|
-
/* @__PURE__ */
|
|
11591
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs50(Fragment19, { children: [
|
|
11592
|
+
/* @__PURE__ */ jsxs50("div", { className: "text-center py-4", children: [
|
|
11593
|
+
/* @__PURE__ */ jsx59(CheckCircle23, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
11594
|
+
/* @__PURE__ */ jsx59("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
11595
|
+
/* @__PURE__ */ jsx59("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
11500
11596
|
] }),
|
|
11501
|
-
/* @__PURE__ */
|
|
11597
|
+
/* @__PURE__ */ jsx59(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
11502
11598
|
] })
|
|
11503
11599
|
] });
|
|
11504
11600
|
}
|
|
11505
11601
|
|
|
11506
11602
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
11507
11603
|
init_clients();
|
|
11508
|
-
import { ArrowLeft as ArrowLeft14, CheckCircle2 as
|
|
11604
|
+
import { ArrowLeft as ArrowLeft14, CheckCircle2 as CheckCircle24, Copy as Copy2, Loader as Loader21 } from "lucide-react";
|
|
11509
11605
|
import QRCode from "qrcode";
|
|
11510
|
-
import { useCallback as useCallback15, useEffect as
|
|
11511
|
-
import { Fragment as
|
|
11606
|
+
import { useCallback as useCallback15, useEffect as useEffect25, useState as useState15 } from "react";
|
|
11607
|
+
import { Fragment as Fragment20, jsx as jsx60, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
11512
11608
|
function ReceiveLumiaMenu() {
|
|
11513
11609
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11514
11610
|
const page = useLayoutDataStore((st) => st.page);
|
|
11515
11611
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11516
11612
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11517
11613
|
const open = page === "receive";
|
|
11518
|
-
const [qrCodeUrl, setQrCodeUrl] =
|
|
11519
|
-
const [copied, setCopied] =
|
|
11520
|
-
|
|
11614
|
+
const [qrCodeUrl, setQrCodeUrl] = useState15("");
|
|
11615
|
+
const [copied, setCopied] = useState15(false);
|
|
11616
|
+
useEffect25(() => {
|
|
11521
11617
|
if (open && address) {
|
|
11522
11618
|
QRCode.toDataURL(address, {
|
|
11523
11619
|
width: 200,
|
|
@@ -11540,7 +11636,7 @@ function ReceiveLumiaMenu() {
|
|
|
11540
11636
|
console.error("Failed to copy address:", error);
|
|
11541
11637
|
}
|
|
11542
11638
|
}, [address]);
|
|
11543
|
-
return /* @__PURE__ */
|
|
11639
|
+
return /* @__PURE__ */ jsxs51(
|
|
11544
11640
|
"div",
|
|
11545
11641
|
{
|
|
11546
11642
|
style: {
|
|
@@ -11549,26 +11645,26 @@ function ReceiveLumiaMenu() {
|
|
|
11549
11645
|
},
|
|
11550
11646
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
11551
11647
|
children: [
|
|
11552
|
-
/* @__PURE__ */
|
|
11553
|
-
/* @__PURE__ */
|
|
11554
|
-
/* @__PURE__ */
|
|
11648
|
+
/* @__PURE__ */ jsxs51("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11649
|
+
/* @__PURE__ */ jsx60(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx60(ArrowLeft14, { className: "h-4 w-4" }) }),
|
|
11650
|
+
/* @__PURE__ */ jsx60("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
11555
11651
|
] }),
|
|
11556
|
-
/* @__PURE__ */
|
|
11557
|
-
/* @__PURE__ */
|
|
11558
|
-
/* @__PURE__ */
|
|
11652
|
+
/* @__PURE__ */ jsxs51(Highlight, { className: "text-center", type: "warning", children: [
|
|
11653
|
+
/* @__PURE__ */ jsx60("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
11654
|
+
/* @__PURE__ */ jsx60("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
11559
11655
|
] }),
|
|
11560
|
-
/* @__PURE__ */
|
|
11561
|
-
/* @__PURE__ */
|
|
11562
|
-
/* @__PURE__ */
|
|
11563
|
-
/* @__PURE__ */
|
|
11564
|
-
/* @__PURE__ */
|
|
11565
|
-
/* @__PURE__ */
|
|
11566
|
-
] }) : /* @__PURE__ */
|
|
11567
|
-
/* @__PURE__ */
|
|
11568
|
-
/* @__PURE__ */
|
|
11656
|
+
/* @__PURE__ */ jsx60("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx60("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx60(Loader21, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
11657
|
+
/* @__PURE__ */ jsxs51(Highlight, { type: "info", children: [
|
|
11658
|
+
/* @__PURE__ */ jsx60("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
11659
|
+
/* @__PURE__ */ jsx60(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ jsxs51(Fragment20, { children: [
|
|
11660
|
+
/* @__PURE__ */ jsx60(CheckCircle24, { className: "h-4 w-4" }),
|
|
11661
|
+
/* @__PURE__ */ jsx60("span", { children: "Copied!" })
|
|
11662
|
+
] }) : /* @__PURE__ */ jsxs51(Fragment20, { children: [
|
|
11663
|
+
/* @__PURE__ */ jsx60(Copy2, { className: "h-4 w-4" }),
|
|
11664
|
+
/* @__PURE__ */ jsx60("span", { children: "Copy Address" })
|
|
11569
11665
|
] }) })
|
|
11570
11666
|
] }),
|
|
11571
|
-
/* @__PURE__ */
|
|
11667
|
+
/* @__PURE__ */ jsx60("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx60("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
11572
11668
|
]
|
|
11573
11669
|
}
|
|
11574
11670
|
);
|
|
@@ -11576,16 +11672,16 @@ function ReceiveLumiaMenu() {
|
|
|
11576
11672
|
|
|
11577
11673
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
11578
11674
|
import { ArrowLeft as ArrowLeft15 } from "lucide-react";
|
|
11579
|
-
import { useEffect as
|
|
11675
|
+
import { useEffect as useEffect26 } from "react";
|
|
11580
11676
|
|
|
11581
11677
|
// src/internal/components/SettingsMenu/constants.ts
|
|
11582
11678
|
import { ArrowLeftRight, DatabaseBackup, LockKeyhole, UsersRound } from "lucide-react";
|
|
11583
11679
|
|
|
11584
11680
|
// src/internal/assets/KycIcon.tsx
|
|
11585
|
-
import { jsx as
|
|
11681
|
+
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
11586
11682
|
function KycIcon(props) {
|
|
11587
11683
|
const { width = "24", height = "24", ...rest } = props;
|
|
11588
|
-
return /* @__PURE__ */
|
|
11684
|
+
return /* @__PURE__ */ jsx61("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx61(
|
|
11589
11685
|
"path",
|
|
11590
11686
|
{
|
|
11591
11687
|
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",
|
|
@@ -11604,22 +11700,22 @@ var NAV_BUTTONS = [
|
|
|
11604
11700
|
];
|
|
11605
11701
|
|
|
11606
11702
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
11607
|
-
import { jsx as
|
|
11703
|
+
import { jsx as jsx62, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
11608
11704
|
function SettingsMenu() {
|
|
11609
11705
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11610
11706
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11611
11707
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
11612
11708
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
11613
|
-
|
|
11709
|
+
useEffect26(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
11614
11710
|
useProvidersList();
|
|
11615
11711
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
11616
11712
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
11617
|
-
return /* @__PURE__ */
|
|
11618
|
-
/* @__PURE__ */
|
|
11619
|
-
/* @__PURE__ */
|
|
11620
|
-
/* @__PURE__ */
|
|
11713
|
+
return /* @__PURE__ */ jsxs52("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11714
|
+
/* @__PURE__ */ jsxs52("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11715
|
+
/* @__PURE__ */ jsx62(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx62(ArrowLeft15, { className: "h-4 w-4" }) }),
|
|
11716
|
+
/* @__PURE__ */ jsx62("span", { className: "text-xl font-semibold", children: "Settings" })
|
|
11621
11717
|
] }),
|
|
11622
|
-
/* @__PURE__ */
|
|
11718
|
+
/* @__PURE__ */ jsx62("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon, onClick }) => /* @__PURE__ */ jsxs52(
|
|
11623
11719
|
Button,
|
|
11624
11720
|
{
|
|
11625
11721
|
variant: "outline",
|
|
@@ -11632,8 +11728,8 @@ function SettingsMenu() {
|
|
|
11632
11728
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
11633
11729
|
),
|
|
11634
11730
|
children: [
|
|
11635
|
-
/* @__PURE__ */
|
|
11636
|
-
/* @__PURE__ */
|
|
11731
|
+
/* @__PURE__ */ jsx62(Icon, { className: "w-4 h-4" }),
|
|
11732
|
+
/* @__PURE__ */ jsx62("span", { children: name })
|
|
11637
11733
|
]
|
|
11638
11734
|
},
|
|
11639
11735
|
id
|
|
@@ -11643,35 +11739,35 @@ function SettingsMenu() {
|
|
|
11643
11739
|
|
|
11644
11740
|
// src/internal/components/TermsOfService.tsx
|
|
11645
11741
|
import { ArrowLeft as ArrowLeft16 } from "lucide-react";
|
|
11646
|
-
import { jsx as
|
|
11742
|
+
import { jsx as jsx63, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
11647
11743
|
function TermsOfService() {
|
|
11648
11744
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11649
11745
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11650
|
-
return /* @__PURE__ */
|
|
11651
|
-
/* @__PURE__ */
|
|
11652
|
-
/* @__PURE__ */
|
|
11746
|
+
return /* @__PURE__ */ jsxs53("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11747
|
+
/* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
11748
|
+
/* @__PURE__ */ jsx63(
|
|
11653
11749
|
Button,
|
|
11654
11750
|
{
|
|
11655
11751
|
variant: "ghost",
|
|
11656
11752
|
size: "icon",
|
|
11657
11753
|
title: "Back",
|
|
11658
11754
|
onClick: () => setPage(!!address ? "settings" /* SETTINGS */ : "auth" /* AUTH */),
|
|
11659
|
-
children: /* @__PURE__ */
|
|
11755
|
+
children: /* @__PURE__ */ jsx63(ArrowLeft16, { className: "h-4 w-4" })
|
|
11660
11756
|
}
|
|
11661
11757
|
),
|
|
11662
|
-
/* @__PURE__ */
|
|
11758
|
+
/* @__PURE__ */ jsx63("span", { className: "text-xl font-semibold", children: "Terms of Service" })
|
|
11663
11759
|
] }),
|
|
11664
|
-
/* @__PURE__ */
|
|
11665
|
-
/* @__PURE__ */
|
|
11666
|
-
/* @__PURE__ */
|
|
11760
|
+
/* @__PURE__ */ jsxs53(Highlight, { type: "warning", className: "text-center", children: [
|
|
11761
|
+
/* @__PURE__ */ jsx63("span", { className: "block text-xs", children: "By using Lumia Passport you agree to our terms." }),
|
|
11762
|
+
/* @__PURE__ */ jsx63("span", { className: "block text-xs", children: "To be updated..." })
|
|
11667
11763
|
] })
|
|
11668
11764
|
] });
|
|
11669
11765
|
}
|
|
11670
11766
|
|
|
11671
11767
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
11672
|
-
import { useQuery as useQuery14, useQueryClient as
|
|
11673
|
-
import { ArrowLeft as ArrowLeft17, Loader as
|
|
11674
|
-
import { useCallback as useCallback16, useState as
|
|
11768
|
+
import { useQuery as useQuery14, useQueryClient as useQueryClient17 } from "@tanstack/react-query";
|
|
11769
|
+
import { ArrowLeft as ArrowLeft17, Loader as Loader22, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
11770
|
+
import { useCallback as useCallback16, useState as useState16 } from "react";
|
|
11675
11771
|
|
|
11676
11772
|
// src/internal/components/TransactionsMenu/api.ts
|
|
11677
11773
|
init_base();
|
|
@@ -11962,18 +12058,7 @@ async function getTransactionsListQuery(address) {
|
|
|
11962
12058
|
}
|
|
11963
12059
|
|
|
11964
12060
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
11965
|
-
import { ChevronLeft as ChevronLeft2, ChevronRight as
|
|
11966
|
-
|
|
11967
|
-
// src/internal/assets/NegativeIcon.tsx
|
|
11968
|
-
import { jsx as jsx60, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
11969
|
-
function NegativeIcon(props) {
|
|
11970
|
-
const { width = "16", height = "16", ...rest } = props;
|
|
11971
|
-
return /* @__PURE__ */ jsxs50("svg", { ...rest, width, height, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
11972
|
-
/* @__PURE__ */ jsx60("rect", { width: "16", height: "16", rx: "8", fill: "var(--l-pass-bg-error)" }),
|
|
11973
|
-
/* @__PURE__ */ jsx60("path", { d: "M10.8048 5.19482L5.19434 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" }),
|
|
11974
|
-
/* @__PURE__ */ jsx60("path", { d: "M5.19421 5.19482L10.8047 10.8055", stroke: "var(--l-pass-fg)", strokeLinecap: "round" })
|
|
11975
|
-
] });
|
|
11976
|
-
}
|
|
12061
|
+
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight5, Copy as Copy3 } from "lucide-react";
|
|
11977
12062
|
|
|
11978
12063
|
// src/internal/components/TransactionsMenu/utils.ts
|
|
11979
12064
|
init_base();
|
|
@@ -12020,22 +12105,22 @@ var formatTimestamp = (timestampMs) => {
|
|
|
12020
12105
|
};
|
|
12021
12106
|
|
|
12022
12107
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
12023
|
-
import { Fragment as
|
|
12108
|
+
import { Fragment as Fragment21, jsx as jsx64, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
12024
12109
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
12025
12110
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
12026
12111
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
12027
|
-
return /* @__PURE__ */
|
|
12028
|
-
/* @__PURE__ */
|
|
12029
|
-
/* @__PURE__ */
|
|
12030
|
-
/* @__PURE__ */
|
|
12112
|
+
return /* @__PURE__ */ jsxs54("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
12113
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
12114
|
+
/* @__PURE__ */ jsx64("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
12115
|
+
/* @__PURE__ */ jsxs54("span", { children: [
|
|
12031
12116
|
formatValue2(internal.value, internalDecimals),
|
|
12032
12117
|
" ",
|
|
12033
12118
|
internalSymbol
|
|
12034
12119
|
] })
|
|
12035
12120
|
] }),
|
|
12036
|
-
/* @__PURE__ */
|
|
12037
|
-
/* @__PURE__ */
|
|
12038
|
-
/* @__PURE__ */
|
|
12121
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
12122
|
+
/* @__PURE__ */ jsx64("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
12123
|
+
/* @__PURE__ */ jsx64("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
12039
12124
|
] })
|
|
12040
12125
|
] });
|
|
12041
12126
|
}
|
|
@@ -12046,7 +12131,7 @@ function TransactionsGroup(props) {
|
|
|
12046
12131
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
12047
12132
|
const assetDecimals = parent.decimals ?? 18;
|
|
12048
12133
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
12049
|
-
return /* @__PURE__ */
|
|
12134
|
+
return /* @__PURE__ */ jsxs54(
|
|
12050
12135
|
"div",
|
|
12051
12136
|
{
|
|
12052
12137
|
onClick: () => openInExplorer2(parent.parentHash),
|
|
@@ -12056,22 +12141,22 @@ function TransactionsGroup(props) {
|
|
|
12056
12141
|
"bg-transparent hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
12057
12142
|
),
|
|
12058
12143
|
children: [
|
|
12059
|
-
/* @__PURE__ */
|
|
12060
|
-
/* @__PURE__ */
|
|
12061
|
-
parent.direction === "in" ? /* @__PURE__ */
|
|
12062
|
-
/* @__PURE__ */
|
|
12063
|
-
parent.status === "ok" ? /* @__PURE__ */
|
|
12144
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
12145
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex items-center gap-1 flex-0 w-fit", children: [
|
|
12146
|
+
parent.direction === "in" ? /* @__PURE__ */ jsx64(ChevronLeft2, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx64(ChevronRight5, { className: "w-4 h-4" }),
|
|
12147
|
+
/* @__PURE__ */ jsx64("span", { className: "text-[10px]", children: isIncoming ? "RECEIVED" : "SENT" }),
|
|
12148
|
+
parent.status === "ok" ? /* @__PURE__ */ jsx64(PositiveIcon, {}) : /* @__PURE__ */ jsx64(NegativeIcon, {})
|
|
12064
12149
|
] }),
|
|
12065
|
-
/* @__PURE__ */
|
|
12150
|
+
/* @__PURE__ */ jsx64("span", { className: "block flex-0 font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) })
|
|
12066
12151
|
] }),
|
|
12067
|
-
/* @__PURE__ */
|
|
12068
|
-
/* @__PURE__ */
|
|
12152
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
12153
|
+
/* @__PURE__ */ jsxs54("span", { className: "font-bold", children: [
|
|
12069
12154
|
formatValue2(parent.value, assetDecimals),
|
|
12070
12155
|
" ",
|
|
12071
12156
|
assetSymbol
|
|
12072
12157
|
] }),
|
|
12073
|
-
/* @__PURE__ */
|
|
12074
|
-
/* @__PURE__ */
|
|
12158
|
+
/* @__PURE__ */ jsxs54("div", { className: "flex items-center gap-0", children: [
|
|
12159
|
+
/* @__PURE__ */ jsx64(
|
|
12075
12160
|
Button,
|
|
12076
12161
|
{
|
|
12077
12162
|
variant: "ghost",
|
|
@@ -12080,10 +12165,10 @@ function TransactionsGroup(props) {
|
|
|
12080
12165
|
onClick: (e) => {
|
|
12081
12166
|
e.stopPropagation();
|
|
12082
12167
|
},
|
|
12083
|
-
children: /* @__PURE__ */
|
|
12168
|
+
children: /* @__PURE__ */ jsx64(Copy3, { className: "w-4 h-4" })
|
|
12084
12169
|
}
|
|
12085
12170
|
),
|
|
12086
|
-
/* @__PURE__ */
|
|
12171
|
+
/* @__PURE__ */ jsx64(
|
|
12087
12172
|
Button,
|
|
12088
12173
|
{
|
|
12089
12174
|
variant: "ghost",
|
|
@@ -12092,24 +12177,24 @@ function TransactionsGroup(props) {
|
|
|
12092
12177
|
onClick: (e) => {
|
|
12093
12178
|
e.stopPropagation();
|
|
12094
12179
|
},
|
|
12095
|
-
children: /* @__PURE__ */
|
|
12180
|
+
children: /* @__PURE__ */ jsx64(LumiaIcon, { className: "w-4 h-4" })
|
|
12096
12181
|
}
|
|
12097
12182
|
)
|
|
12098
12183
|
] })
|
|
12099
12184
|
] }),
|
|
12100
|
-
internalsToRender.length > 0 && /* @__PURE__ */
|
|
12101
|
-
/* @__PURE__ */
|
|
12102
|
-
/* @__PURE__ */
|
|
12103
|
-
/* @__PURE__ */
|
|
12104
|
-
/* @__PURE__ */
|
|
12185
|
+
internalsToRender.length > 0 && /* @__PURE__ */ jsxs54(Fragment21, { children: [
|
|
12186
|
+
/* @__PURE__ */ jsxs54("div", { className: "w-full flex items-center", children: [
|
|
12187
|
+
/* @__PURE__ */ jsx64("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
12188
|
+
/* @__PURE__ */ jsx64("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Internals" }),
|
|
12189
|
+
/* @__PURE__ */ jsx64("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
12105
12190
|
] }),
|
|
12106
|
-
/* @__PURE__ */
|
|
12191
|
+
/* @__PURE__ */ jsxs54(
|
|
12107
12192
|
"div",
|
|
12108
12193
|
{
|
|
12109
12194
|
className: "w-full rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
12110
12195
|
onClick: (event) => event.stopPropagation(),
|
|
12111
12196
|
children: [
|
|
12112
|
-
/* @__PURE__ */
|
|
12197
|
+
/* @__PURE__ */ jsxs54(
|
|
12113
12198
|
Button,
|
|
12114
12199
|
{
|
|
12115
12200
|
variant: "ghost",
|
|
@@ -12117,16 +12202,16 @@ function TransactionsGroup(props) {
|
|
|
12117
12202
|
className: "w-full justify-between",
|
|
12118
12203
|
onClick: () => onToggleExpanded(group.id),
|
|
12119
12204
|
children: [
|
|
12120
|
-
/* @__PURE__ */
|
|
12205
|
+
/* @__PURE__ */ jsxs54("span", { children: [
|
|
12121
12206
|
"View internal calls (",
|
|
12122
12207
|
internalsToRender.length,
|
|
12123
12208
|
")"
|
|
12124
12209
|
] }),
|
|
12125
|
-
/* @__PURE__ */
|
|
12210
|
+
/* @__PURE__ */ jsx64("span", { children: expanded ? "Hide" : "Show" })
|
|
12126
12211
|
]
|
|
12127
12212
|
}
|
|
12128
12213
|
),
|
|
12129
|
-
expanded && /* @__PURE__ */
|
|
12214
|
+
expanded && /* @__PURE__ */ jsx64("div", { className: "px-2 pb-2 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ jsx64(
|
|
12130
12215
|
InternalTransaction,
|
|
12131
12216
|
{
|
|
12132
12217
|
internal,
|
|
@@ -12145,14 +12230,14 @@ function TransactionsGroup(props) {
|
|
|
12145
12230
|
}
|
|
12146
12231
|
|
|
12147
12232
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
12148
|
-
import { jsx as
|
|
12233
|
+
import { jsx as jsx65, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
12149
12234
|
function TransactionsMenu() {
|
|
12150
|
-
const qc =
|
|
12235
|
+
const qc = useQueryClient17();
|
|
12151
12236
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12152
12237
|
const page = useLayoutDataStore((st) => st.page);
|
|
12153
12238
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12154
12239
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
12155
|
-
const [expandedGroups, setExpandedGroups] =
|
|
12240
|
+
const [expandedGroups, setExpandedGroups] = useState16({});
|
|
12156
12241
|
const {
|
|
12157
12242
|
data: txHistoryGroups = [],
|
|
12158
12243
|
isLoading: isTxHistoryLoading,
|
|
@@ -12169,19 +12254,19 @@ function TransactionsMenu() {
|
|
|
12169
12254
|
[qc, address]
|
|
12170
12255
|
);
|
|
12171
12256
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
12172
|
-
return /* @__PURE__ */
|
|
12257
|
+
return /* @__PURE__ */ jsx65(
|
|
12173
12258
|
"div",
|
|
12174
12259
|
{
|
|
12175
12260
|
style: {
|
|
12176
12261
|
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
12177
12262
|
"--l-pass-list-scrollbar-pd-r": "calc(var(--l-pass-pd) - 4px)"
|
|
12178
12263
|
},
|
|
12179
|
-
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]
|
|
12180
|
-
children: [
|
|
12181
|
-
/* @__PURE__ */
|
|
12182
|
-
/* @__PURE__ */
|
|
12183
|
-
/* @__PURE__ */
|
|
12184
|
-
/* @__PURE__ */
|
|
12264
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
12265
|
+
children: /* @__PURE__ */ jsxs55(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12266
|
+
/* @__PURE__ */ jsxs55("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12267
|
+
/* @__PURE__ */ jsx65(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx65(ArrowLeft17, { className: "h-4 w-4" }) }),
|
|
12268
|
+
/* @__PURE__ */ jsx65("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
12269
|
+
/* @__PURE__ */ jsx65(
|
|
12185
12270
|
Button,
|
|
12186
12271
|
{
|
|
12187
12272
|
variant: "ghost",
|
|
@@ -12189,18 +12274,18 @@ function TransactionsMenu() {
|
|
|
12189
12274
|
onClick: refreshTxHistory,
|
|
12190
12275
|
disabled: isTxHistoryFetching,
|
|
12191
12276
|
title: "Refresh transactions",
|
|
12192
|
-
children: isTxHistoryFetching ? /* @__PURE__ */
|
|
12277
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ jsx65(Loader22, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx65(RefreshCw3, { className: "h-4 w-4" })
|
|
12193
12278
|
}
|
|
12194
12279
|
)
|
|
12195
12280
|
] }),
|
|
12196
|
-
/* @__PURE__ */
|
|
12197
|
-
isTxHistoryLoading && /* @__PURE__ */
|
|
12198
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */
|
|
12199
|
-
/* @__PURE__ */
|
|
12200
|
-
/* @__PURE__ */
|
|
12281
|
+
/* @__PURE__ */ jsxs55("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12282
|
+
isTxHistoryLoading && /* @__PURE__ */ jsx65("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx65(Loader22, { className: "h-5 w-5 animate-spin" }) }),
|
|
12283
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs55(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
12284
|
+
/* @__PURE__ */ jsx65(XCircle2, { className: "w-4 h-4 flex-none" }),
|
|
12285
|
+
/* @__PURE__ */ jsx65("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
12201
12286
|
] }),
|
|
12202
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */
|
|
12203
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */
|
|
12287
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsx65(Highlight, { type: "warning", children: /* @__PURE__ */ jsx65("span", { children: "No transactions found. Smart account transactions will appear here" }) }),
|
|
12288
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ jsx65("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx65(
|
|
12204
12289
|
TransactionsGroup,
|
|
12205
12290
|
{
|
|
12206
12291
|
group,
|
|
@@ -12210,7 +12295,7 @@ function TransactionsMenu() {
|
|
|
12210
12295
|
group.id
|
|
12211
12296
|
)) })
|
|
12212
12297
|
] })
|
|
12213
|
-
]
|
|
12298
|
+
] })
|
|
12214
12299
|
}
|
|
12215
12300
|
);
|
|
12216
12301
|
}
|
|
@@ -12310,7 +12395,7 @@ var PAGE_MAP = {
|
|
|
12310
12395
|
};
|
|
12311
12396
|
|
|
12312
12397
|
// src/internal/hooks/usePageMapper.tsx
|
|
12313
|
-
import { jsx as
|
|
12398
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
12314
12399
|
var CLEAR_DIALOG_TIMEOUT = MAIN_DIALOG_ANIMATION_SPEED + 5;
|
|
12315
12400
|
function usePageMapper() {
|
|
12316
12401
|
const page = useLayoutDataStore((st) => st.page);
|
|
@@ -12340,12 +12425,12 @@ function usePageMapper() {
|
|
|
12340
12425
|
const PageContentComponent = pageItem.component;
|
|
12341
12426
|
setDialogTitle(pageItem.title);
|
|
12342
12427
|
setDialogDescription(pageItem.description);
|
|
12343
|
-
setDialogContent(/* @__PURE__ */
|
|
12428
|
+
setDialogContent(/* @__PURE__ */ jsx66(PageContentComponent, {}));
|
|
12344
12429
|
setIsDialogOpen(true);
|
|
12345
12430
|
},
|
|
12346
12431
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
12347
12432
|
);
|
|
12348
|
-
|
|
12433
|
+
useEffect27(() => {
|
|
12349
12434
|
if (page === null) return closeDialog();
|
|
12350
12435
|
const pageItem = protectedRoutes[page];
|
|
12351
12436
|
if (!pageItem) {
|
|
@@ -12359,7 +12444,7 @@ function usePageMapper() {
|
|
|
12359
12444
|
|
|
12360
12445
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
12361
12446
|
init_auth();
|
|
12362
|
-
import { useEffect as
|
|
12447
|
+
import { useEffect as useEffect28 } from "react";
|
|
12363
12448
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
12364
12449
|
id: "email-not-connected",
|
|
12365
12450
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -12375,13 +12460,13 @@ function useSettingsNotifications() {
|
|
|
12375
12460
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
12376
12461
|
const providers = jwtTokenManager2.getProviders();
|
|
12377
12462
|
const hasEmail = providers.includes("email");
|
|
12378
|
-
|
|
12463
|
+
useEffect28(() => {
|
|
12379
12464
|
setSettingsNotifications({
|
|
12380
12465
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
12381
12466
|
status: hasServerVault ? "resolved" : "active"
|
|
12382
12467
|
});
|
|
12383
12468
|
}, [hasServerVault, setSettingsNotifications]);
|
|
12384
|
-
|
|
12469
|
+
useEffect28(() => {
|
|
12385
12470
|
setSettingsNotifications({
|
|
12386
12471
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
12387
12472
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -12390,7 +12475,7 @@ function useSettingsNotifications() {
|
|
|
12390
12475
|
}
|
|
12391
12476
|
|
|
12392
12477
|
// src/internal/hooks/useWalletStatus.ts
|
|
12393
|
-
import { useEffect as
|
|
12478
|
+
import { useEffect as useEffect29 } from "react";
|
|
12394
12479
|
init_auth();
|
|
12395
12480
|
function useWalletStatus() {
|
|
12396
12481
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -12400,7 +12485,7 @@ function useWalletStatus() {
|
|
|
12400
12485
|
config: { current: config },
|
|
12401
12486
|
callbacks
|
|
12402
12487
|
} = useLumiaPassportConfig();
|
|
12403
|
-
|
|
12488
|
+
useEffect29(() => {
|
|
12404
12489
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
12405
12490
|
const userId = jwtTokenManager2.getUserId();
|
|
12406
12491
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -12420,7 +12505,7 @@ function useWalletStatus() {
|
|
|
12420
12505
|
}
|
|
12421
12506
|
|
|
12422
12507
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
12423
|
-
import { jsx as
|
|
12508
|
+
import { jsx as jsx67, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
12424
12509
|
function LumiaPassportDialog() {
|
|
12425
12510
|
const config = useLumiaPassportConfig().config;
|
|
12426
12511
|
const className = config.current?.ui?.dialogClassName;
|
|
@@ -12429,7 +12514,7 @@ function LumiaPassportDialog() {
|
|
|
12429
12514
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
12430
12515
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12431
12516
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
12432
|
-
|
|
12517
|
+
useEffect30(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
12433
12518
|
usePageMapper();
|
|
12434
12519
|
useAutoConnect();
|
|
12435
12520
|
useCheckVaultStatus();
|
|
@@ -12439,7 +12524,7 @@ function LumiaPassportDialog() {
|
|
|
12439
12524
|
useListenIframeAuthEvents();
|
|
12440
12525
|
useBackupWarning();
|
|
12441
12526
|
useWalletStatus();
|
|
12442
|
-
return /* @__PURE__ */
|
|
12527
|
+
return /* @__PURE__ */ jsx67(
|
|
12443
12528
|
Dialog,
|
|
12444
12529
|
{
|
|
12445
12530
|
open: isDialogOpen,
|
|
@@ -12447,11 +12532,11 @@ function LumiaPassportDialog() {
|
|
|
12447
12532
|
if (isDialogForced) return;
|
|
12448
12533
|
if (!open) setPage(null);
|
|
12449
12534
|
},
|
|
12450
|
-
children: /* @__PURE__ */
|
|
12451
|
-
/* @__PURE__ */
|
|
12452
|
-
/* @__PURE__ */
|
|
12453
|
-
!!session && /* @__PURE__ */
|
|
12454
|
-
/* @__PURE__ */
|
|
12535
|
+
children: /* @__PURE__ */ jsxs56(DialogContent, { colorMode, hideClose: isDialogForced, className, children: [
|
|
12536
|
+
/* @__PURE__ */ jsx67(VisuallyHidden, { children: /* @__PURE__ */ jsx67(DialogTitle, { children: dialogTitle }) }),
|
|
12537
|
+
/* @__PURE__ */ jsx67(DialogDescription, { className: "sr-only", children: dialogDescription }),
|
|
12538
|
+
!!session && /* @__PURE__ */ jsx67(Header, {}),
|
|
12539
|
+
/* @__PURE__ */ jsx67(AnimatePresence3, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx67(
|
|
12455
12540
|
motion3.div,
|
|
12456
12541
|
{
|
|
12457
12542
|
initial: { opacity: 0, height: mainPageHeight },
|
|
@@ -12463,7 +12548,7 @@ function LumiaPassportDialog() {
|
|
|
12463
12548
|
},
|
|
12464
12549
|
page || "empty"
|
|
12465
12550
|
) }),
|
|
12466
|
-
/* @__PURE__ */
|
|
12551
|
+
/* @__PURE__ */ jsx67(Footer, {})
|
|
12467
12552
|
] })
|
|
12468
12553
|
}
|
|
12469
12554
|
);
|
|
@@ -12514,11 +12599,11 @@ var TssManagerWithRef = React10.forwardRef((props, ref) => {
|
|
|
12514
12599
|
// src/internal/components/WalletConnectHandler.tsx
|
|
12515
12600
|
init_wallet();
|
|
12516
12601
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
12517
|
-
import { useMutation as useMutation15, useQueryClient as
|
|
12518
|
-
import React11, { useCallback as useCallback19, useEffect as
|
|
12602
|
+
import { useMutation as useMutation15, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
|
|
12603
|
+
import React11, { useCallback as useCallback19, useEffect as useEffect31 } from "react";
|
|
12519
12604
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
12520
12605
|
function WalletConnectHandler() {
|
|
12521
|
-
const qc =
|
|
12606
|
+
const qc = useQueryClient18();
|
|
12522
12607
|
const callbacks = useLumiaPassportConfig().callbacks;
|
|
12523
12608
|
const passportWalletAddress = useLumiaPassportSession((st) => st.address);
|
|
12524
12609
|
const { address: walletAddress, isConnected, chain, connector } = useAccount();
|
|
@@ -12560,7 +12645,7 @@ function WalletConnectHandler() {
|
|
|
12560
12645
|
[qc, passportWalletAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
12561
12646
|
);
|
|
12562
12647
|
const [hasStartedLinking, setHasStartedLinking] = React11.useState(false);
|
|
12563
|
-
|
|
12648
|
+
useEffect31(() => {
|
|
12564
12649
|
if (isWalletLinking && !hasStartedLinking) {
|
|
12565
12650
|
setHasStartedLinking(true);
|
|
12566
12651
|
setProviderType(null);
|
|
@@ -12580,7 +12665,7 @@ function WalletConnectHandler() {
|
|
|
12580
12665
|
if (isConnected) disconnect();
|
|
12581
12666
|
}
|
|
12582
12667
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
12583
|
-
|
|
12668
|
+
useEffect31(() => {
|
|
12584
12669
|
if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
|
|
12585
12670
|
console.log("[WalletConnectHandler] Modal closed without connecting");
|
|
12586
12671
|
onLinkingComplete(false);
|
|
@@ -12656,7 +12741,7 @@ function WalletConnectHandler() {
|
|
|
12656
12741
|
setPage(passportWalletAddress ? "manage-wallet" /* MANAGE_WALLET */ : "auth" /* AUTH */);
|
|
12657
12742
|
}
|
|
12658
12743
|
});
|
|
12659
|
-
|
|
12744
|
+
useEffect31(() => {
|
|
12660
12745
|
if (!!chain?.id && isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
12661
12746
|
console.log("[WalletConnectHandler] handleWalletSign triggered");
|
|
12662
12747
|
handleWalletSign({ chainId: chain.id, signingWalletAddress: walletAddress });
|
|
@@ -12666,7 +12751,7 @@ function WalletConnectHandler() {
|
|
|
12666
12751
|
}
|
|
12667
12752
|
|
|
12668
12753
|
// src/context/LumiaPassportSessionContext.tsx
|
|
12669
|
-
import { jsx as
|
|
12754
|
+
import { jsx as jsx68, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
12670
12755
|
var useLumiaPassportSession = create6((set) => ({
|
|
12671
12756
|
isLoading: false,
|
|
12672
12757
|
usePaymaster: true,
|
|
@@ -12692,17 +12777,17 @@ var useLumiaPassportSession = create6((set) => ({
|
|
|
12692
12777
|
}));
|
|
12693
12778
|
function LumiaPassportSessionProvider({ children }) {
|
|
12694
12779
|
const config = useLumiaPassportConfig().config;
|
|
12695
|
-
return /* @__PURE__ */
|
|
12780
|
+
return /* @__PURE__ */ jsxs57(Fragment22, { children: [
|
|
12696
12781
|
children,
|
|
12697
|
-
config.current?.wallet?.enabled && /* @__PURE__ */
|
|
12698
|
-
/* @__PURE__ */
|
|
12699
|
-
/* @__PURE__ */
|
|
12782
|
+
config.current?.wallet?.enabled && /* @__PURE__ */ jsx68(WalletConnectHandler, {}),
|
|
12783
|
+
/* @__PURE__ */ jsx68(BalanceFeedProvider, {}),
|
|
12784
|
+
/* @__PURE__ */ jsx68(
|
|
12700
12785
|
TssManagerWithRef,
|
|
12701
12786
|
{
|
|
12702
12787
|
mpcPin: void 0
|
|
12703
12788
|
}
|
|
12704
12789
|
),
|
|
12705
|
-
/* @__PURE__ */
|
|
12790
|
+
/* @__PURE__ */ jsx68(LumiaPassportDialog, {})
|
|
12706
12791
|
] });
|
|
12707
12792
|
}
|
|
12708
12793
|
|
|
@@ -12737,19 +12822,19 @@ var wagmiConfig = createConfig({
|
|
|
12737
12822
|
});
|
|
12738
12823
|
|
|
12739
12824
|
// src/context/WagmiContext.tsx
|
|
12740
|
-
import { jsx as
|
|
12825
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
12741
12826
|
var LumiaWagmiProvider = ({ children }) => {
|
|
12742
|
-
return /* @__PURE__ */
|
|
12827
|
+
return /* @__PURE__ */ jsx69(WagmiProvider, { config: wagmiConfig, children });
|
|
12743
12828
|
};
|
|
12744
12829
|
|
|
12745
12830
|
// src/context/LumiaPassportContext.tsx
|
|
12746
|
-
import { jsx as
|
|
12831
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
12747
12832
|
var LumiaPassportContext = createContext(void 0);
|
|
12748
12833
|
function LumiaPassportProvider(props) {
|
|
12749
12834
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
12750
12835
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
12751
12836
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
12752
|
-
|
|
12837
|
+
useEffect32(() => notifyNoProjetctId(projectId), [projectId]);
|
|
12753
12838
|
const config = useRef13({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
12754
12839
|
const updateConfig = useCallback20((updates) => {
|
|
12755
12840
|
const prev = config.current;
|
|
@@ -12786,7 +12871,7 @@ function LumiaPassportProvider(props) {
|
|
|
12786
12871
|
}
|
|
12787
12872
|
config.current = next;
|
|
12788
12873
|
}, []);
|
|
12789
|
-
|
|
12874
|
+
useEffect32(() => {
|
|
12790
12875
|
if (typeof window === "undefined" || !projectId) return;
|
|
12791
12876
|
const mergedConfig = merge2(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12792
12877
|
updateConfig(mergedConfig);
|
|
@@ -12832,7 +12917,7 @@ function LumiaPassportProvider(props) {
|
|
|
12832
12917
|
}
|
|
12833
12918
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12834
12919
|
const contextValue = useMemo5(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12835
|
-
return /* @__PURE__ */
|
|
12920
|
+
return /* @__PURE__ */ jsx70(LumiaWagmiProvider, { children: /* @__PURE__ */ jsx70(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
12836
12921
|
}
|
|
12837
12922
|
var useLumiaPassportConfig = () => {
|
|
12838
12923
|
const ctx = useContext(LumiaPassportContext);
|
|
@@ -12841,10 +12926,10 @@ var useLumiaPassportConfig = () => {
|
|
|
12841
12926
|
};
|
|
12842
12927
|
|
|
12843
12928
|
// src/components/ConnectWalletButton.tsx
|
|
12844
|
-
import { Cloud as
|
|
12845
|
-
import { useEffect as
|
|
12929
|
+
import { Cloud as Cloud5, Laptop as Laptop2, Loader as Loader23, Shield as Shield2 } from "lucide-react";
|
|
12930
|
+
import { useEffect as useEffect33, useMemo as useMemo6 } from "react";
|
|
12846
12931
|
init_auth();
|
|
12847
|
-
import { Fragment as
|
|
12932
|
+
import { Fragment as Fragment23, jsx as jsx71, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
12848
12933
|
function getFormattedStatus(label, status, showStatus) {
|
|
12849
12934
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
12850
12935
|
if (!isStatus) return label;
|
|
@@ -12863,7 +12948,7 @@ function ConnectWalletButton(props) {
|
|
|
12863
12948
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12864
12949
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12865
12950
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12866
|
-
|
|
12951
|
+
useEffect33(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12867
12952
|
const avatar = jwtTokenManager2.getAvatar();
|
|
12868
12953
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
12869
12954
|
const indicators = useMemo6(() => {
|
|
@@ -12874,20 +12959,20 @@ function ConnectWalletButton(props) {
|
|
|
12874
12959
|
return { server, local, backup: hasServerVault };
|
|
12875
12960
|
}, [session, address, hasServerVault]);
|
|
12876
12961
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
12877
|
-
return /* @__PURE__ */
|
|
12962
|
+
return /* @__PURE__ */ jsx71("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
12878
12963
|
/** external Buttons can be provided */
|
|
12879
|
-
/* @__PURE__ */
|
|
12964
|
+
/* @__PURE__ */ jsx71(Fragment23, { children: ConnectButton ? /* @__PURE__ */ jsxs58(
|
|
12880
12965
|
ConnectButton,
|
|
12881
12966
|
{
|
|
12882
12967
|
type: "button",
|
|
12883
12968
|
disabled: isConnecting,
|
|
12884
12969
|
onClick: () => setPage("auth" /* AUTH */),
|
|
12885
12970
|
children: [
|
|
12886
|
-
isConnecting && /* @__PURE__ */
|
|
12971
|
+
isConnecting && /* @__PURE__ */ jsx71(Loader23, { className: "w-4 h-4 animate-spin" }),
|
|
12887
12972
|
connectButtonLabel
|
|
12888
12973
|
]
|
|
12889
12974
|
}
|
|
12890
|
-
) : /* @__PURE__ */
|
|
12975
|
+
) : /* @__PURE__ */ jsxs58(
|
|
12891
12976
|
Button,
|
|
12892
12977
|
{
|
|
12893
12978
|
type: "button",
|
|
@@ -12897,18 +12982,18 @@ function ConnectWalletButton(props) {
|
|
|
12897
12982
|
onClick: () => setPage("auth" /* AUTH */),
|
|
12898
12983
|
className: cn(
|
|
12899
12984
|
"lumia-passport-button w-fit h-16 px-8",
|
|
12900
|
-
"border border-transparent",
|
|
12985
|
+
"border-0 border-transparent",
|
|
12901
12986
|
// to override button appearance bd, which case to case might drop black border
|
|
12902
12987
|
"bg-[var(--l-pass-bg)] hover:bg-[var(--l-pass-bg)] active:bg-[var(--l-pass-bg)] text-[var(--l-pass-fg)]",
|
|
12903
12988
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
12904
12989
|
),
|
|
12905
12990
|
children: [
|
|
12906
|
-
isConnecting && /* @__PURE__ */
|
|
12991
|
+
isConnecting && /* @__PURE__ */ jsx71(Loader23, { className: "w-4 h-4 animate-spin" }),
|
|
12907
12992
|
connectButtonLabel.toUpperCase()
|
|
12908
12993
|
]
|
|
12909
12994
|
}
|
|
12910
12995
|
) })
|
|
12911
|
-
) : /* @__PURE__ */
|
|
12996
|
+
) : /* @__PURE__ */ jsxs58(
|
|
12912
12997
|
"button",
|
|
12913
12998
|
{
|
|
12914
12999
|
type: "button",
|
|
@@ -12921,23 +13006,23 @@ function ConnectWalletButton(props) {
|
|
|
12921
13006
|
"rounded-[var(--l-pass-el-bdrs)] p-2 max-w-sm min-w-[256px]"
|
|
12922
13007
|
),
|
|
12923
13008
|
children: [
|
|
12924
|
-
/* @__PURE__ */
|
|
12925
|
-
/* @__PURE__ */
|
|
12926
|
-
/* @__PURE__ */
|
|
12927
|
-
/* @__PURE__ */
|
|
12928
|
-
/* @__PURE__ */
|
|
13009
|
+
/* @__PURE__ */ jsx71("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx71("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx71(LumiaIcon, { width: 48, height: 48 }) }),
|
|
13010
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
13011
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13012
|
+
/* @__PURE__ */ jsx71("span", { className: "w-fit font-semibold text-base truncate max-w-[144px]", children: displayName }),
|
|
13013
|
+
/* @__PURE__ */ jsx71(KYCStatus, {})
|
|
12929
13014
|
] }),
|
|
12930
|
-
/* @__PURE__ */
|
|
13015
|
+
/* @__PURE__ */ jsx71(BalanceView, { className: "font-semibold text-base text-[var(--l-pass-fg-muted)]" })
|
|
12931
13016
|
] }),
|
|
12932
|
-
/* @__PURE__ */
|
|
12933
|
-
/* @__PURE__ */
|
|
12934
|
-
/* @__PURE__ */
|
|
12935
|
-
|
|
13017
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center space-x-1", children: [
|
|
13018
|
+
/* @__PURE__ */ jsxs58("div", { className: "group relative", children: [
|
|
13019
|
+
/* @__PURE__ */ jsx71(
|
|
13020
|
+
Cloud5,
|
|
12936
13021
|
{
|
|
12937
13022
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
12938
13023
|
}
|
|
12939
13024
|
),
|
|
12940
|
-
/* @__PURE__ */
|
|
13025
|
+
/* @__PURE__ */ jsxs58(
|
|
12941
13026
|
"div",
|
|
12942
13027
|
{
|
|
12943
13028
|
className: cn(
|
|
@@ -12952,14 +13037,14 @@ function ConnectWalletButton(props) {
|
|
|
12952
13037
|
}
|
|
12953
13038
|
)
|
|
12954
13039
|
] }),
|
|
12955
|
-
/* @__PURE__ */
|
|
12956
|
-
/* @__PURE__ */
|
|
13040
|
+
/* @__PURE__ */ jsxs58("div", { className: "group relative", children: [
|
|
13041
|
+
/* @__PURE__ */ jsx71(
|
|
12957
13042
|
Laptop2,
|
|
12958
13043
|
{
|
|
12959
13044
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
12960
13045
|
}
|
|
12961
13046
|
),
|
|
12962
|
-
/* @__PURE__ */
|
|
13047
|
+
/* @__PURE__ */ jsxs58(
|
|
12963
13048
|
"div",
|
|
12964
13049
|
{
|
|
12965
13050
|
className: cn(
|
|
@@ -12974,14 +13059,14 @@ function ConnectWalletButton(props) {
|
|
|
12974
13059
|
}
|
|
12975
13060
|
)
|
|
12976
13061
|
] }),
|
|
12977
|
-
/* @__PURE__ */
|
|
12978
|
-
/* @__PURE__ */
|
|
12979
|
-
|
|
13062
|
+
/* @__PURE__ */ jsxs58("div", { className: "group relative", children: [
|
|
13063
|
+
/* @__PURE__ */ jsx71(
|
|
13064
|
+
Shield2,
|
|
12980
13065
|
{
|
|
12981
13066
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
12982
13067
|
}
|
|
12983
13068
|
),
|
|
12984
|
-
/* @__PURE__ */
|
|
13069
|
+
/* @__PURE__ */ jsxs58(
|
|
12985
13070
|
"div",
|
|
12986
13071
|
{
|
|
12987
13072
|
className: cn(
|
|
@@ -12997,7 +13082,7 @@ function ConnectWalletButton(props) {
|
|
|
12997
13082
|
)
|
|
12998
13083
|
] })
|
|
12999
13084
|
] }),
|
|
13000
|
-
!!settingsNotifications.length && /* @__PURE__ */
|
|
13085
|
+
!!settingsNotifications.length && /* @__PURE__ */ jsx71(
|
|
13001
13086
|
"div",
|
|
13002
13087
|
{
|
|
13003
13088
|
className: cn(
|
|
@@ -13058,7 +13143,7 @@ function useLumiaPassportOpen() {
|
|
|
13058
13143
|
}
|
|
13059
13144
|
|
|
13060
13145
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
13061
|
-
import { useCallback as useCallback22, useEffect as
|
|
13146
|
+
import { useCallback as useCallback22, useEffect as useEffect34 } from "react";
|
|
13062
13147
|
function useLumiaPassportColorMode() {
|
|
13063
13148
|
const {
|
|
13064
13149
|
config: { current: config }
|
|
@@ -13073,7 +13158,7 @@ function useLumiaPassportColorMode() {
|
|
|
13073
13158
|
},
|
|
13074
13159
|
[handleStoreColorMode]
|
|
13075
13160
|
);
|
|
13076
|
-
|
|
13161
|
+
useEffect34(() => {
|
|
13077
13162
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
13078
13163
|
if (!targetColorMode && !preferedColorMode) {
|
|
13079
13164
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -13091,23 +13176,23 @@ function useLumiaPassportColorMode() {
|
|
|
13091
13176
|
|
|
13092
13177
|
// src/components/ThemeToggle.tsx
|
|
13093
13178
|
import { Moon, Sun } from "lucide-react";
|
|
13094
|
-
import { jsx as
|
|
13179
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
13095
13180
|
function ThemeToggle(props) {
|
|
13096
13181
|
const { colorMode, setColorMode } = useLumiaPassportColorMode();
|
|
13097
|
-
return /* @__PURE__ */
|
|
13182
|
+
return /* @__PURE__ */ jsx72(
|
|
13098
13183
|
"div",
|
|
13099
13184
|
{
|
|
13100
13185
|
className: "lumia-scope",
|
|
13101
13186
|
"data-lumia-passport-mode": colorMode,
|
|
13102
13187
|
style: { width: "fit-content", height: "fit-content" },
|
|
13103
|
-
children: /* @__PURE__ */
|
|
13188
|
+
children: /* @__PURE__ */ jsx72(
|
|
13104
13189
|
Button,
|
|
13105
13190
|
{
|
|
13106
13191
|
...props,
|
|
13107
13192
|
variant: "ghost",
|
|
13108
13193
|
onClick: () => setColorMode(colorMode === "light" ? "dark" : "light"),
|
|
13109
13194
|
title: `Current theme: ${colorMode}. Click to switch.`,
|
|
13110
|
-
children: colorMode === "dark" ? /* @__PURE__ */
|
|
13195
|
+
children: colorMode === "dark" ? /* @__PURE__ */ jsx72(Sun, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx72(Moon, { className: "w-4 h-4" })
|
|
13111
13196
|
}
|
|
13112
13197
|
)
|
|
13113
13198
|
}
|
|
@@ -13344,7 +13429,7 @@ var rainbowTheme = {
|
|
|
13344
13429
|
|
|
13345
13430
|
// src/context/RainbowKitContext.tsx
|
|
13346
13431
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
13347
|
-
import { Fragment as
|
|
13432
|
+
import { Fragment as Fragment24, jsx as jsx73 } from "react/jsx-runtime";
|
|
13348
13433
|
function LumiaRainbowKitProvider({ children }) {
|
|
13349
13434
|
const config = useLumiaPassportConfig().config;
|
|
13350
13435
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
@@ -13363,13 +13448,13 @@ function LumiaRainbowKitProvider({ children }) {
|
|
|
13363
13448
|
},
|
|
13364
13449
|
[colorMode]
|
|
13365
13450
|
);
|
|
13366
|
-
if (!config.current?.wallet?.enabled) return /* @__PURE__ */
|
|
13367
|
-
return /* @__PURE__ */
|
|
13451
|
+
if (!config.current?.wallet?.enabled) return /* @__PURE__ */ jsx73(Fragment24, { children });
|
|
13452
|
+
return /* @__PURE__ */ jsx73(WagmiProvider2, { config: rainbowConfig2, children: /* @__PURE__ */ jsx73(RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
13368
13453
|
}
|
|
13369
13454
|
|
|
13370
13455
|
// src/internal/components/UserOpStatus.tsx
|
|
13371
13456
|
init_base();
|
|
13372
|
-
import { AlertCircle as AlertCircle6, CheckCircle2 as
|
|
13457
|
+
import { AlertCircle as AlertCircle6, CheckCircle2 as CheckCircle26, Clock as Clock2, Copy as Copy5, ExternalLink as ExternalLink2, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
13373
13458
|
import * as React13 from "react";
|
|
13374
13459
|
|
|
13375
13460
|
// src/internal/utils/cn.ts
|
|
@@ -13382,7 +13467,7 @@ function cn2(...inputs) {
|
|
|
13382
13467
|
// src/internal/components/Address.tsx
|
|
13383
13468
|
import { Copy as Copy4, ExternalLink } from "lucide-react";
|
|
13384
13469
|
import * as React12 from "react";
|
|
13385
|
-
import { jsx as
|
|
13470
|
+
import { jsx as jsx74, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
13386
13471
|
function toExplorerAddressUrl(address, chain) {
|
|
13387
13472
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
13388
13473
|
if (!base2) return null;
|
|
@@ -13404,11 +13489,11 @@ var Address = ({
|
|
|
13404
13489
|
const addr = address || "";
|
|
13405
13490
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
13406
13491
|
const [copied, setCopied] = React12.useState(false);
|
|
13407
|
-
if (!addr) return /* @__PURE__ */
|
|
13408
|
-
return /* @__PURE__ */
|
|
13409
|
-
label && /* @__PURE__ */
|
|
13410
|
-
/* @__PURE__ */
|
|
13411
|
-
showCopy && /* @__PURE__ */
|
|
13492
|
+
if (!addr) return /* @__PURE__ */ jsx74("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
13493
|
+
return /* @__PURE__ */ jsxs59("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
13494
|
+
label && /* @__PURE__ */ jsx74("span", { className: "text-sm font-medium", children: label }),
|
|
13495
|
+
/* @__PURE__ */ jsx74("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
13496
|
+
showCopy && /* @__PURE__ */ jsx74(
|
|
13412
13497
|
Button,
|
|
13413
13498
|
{
|
|
13414
13499
|
variant: "ghost",
|
|
@@ -13422,10 +13507,10 @@ var Address = ({
|
|
|
13422
13507
|
} catch {
|
|
13423
13508
|
}
|
|
13424
13509
|
},
|
|
13425
|
-
children: /* @__PURE__ */
|
|
13510
|
+
children: /* @__PURE__ */ jsx74(Copy4, { className: "h-4 w-4" })
|
|
13426
13511
|
}
|
|
13427
13512
|
),
|
|
13428
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
13513
|
+
showExplorer && explorer && /* @__PURE__ */ jsx74(
|
|
13429
13514
|
"a",
|
|
13430
13515
|
{
|
|
13431
13516
|
href: explorer,
|
|
@@ -13433,7 +13518,7 @@ var Address = ({
|
|
|
13433
13518
|
rel: "noreferrer noopener",
|
|
13434
13519
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
13435
13520
|
title: "Open in explorer",
|
|
13436
|
-
children: /* @__PURE__ */
|
|
13521
|
+
children: /* @__PURE__ */ jsx74(ExternalLink, { className: "h-4 w-4" })
|
|
13437
13522
|
}
|
|
13438
13523
|
)
|
|
13439
13524
|
] });
|
|
@@ -13441,7 +13526,7 @@ var Address = ({
|
|
|
13441
13526
|
|
|
13442
13527
|
// src/internal/components/ui/badge.tsx
|
|
13443
13528
|
import { cva as cva2 } from "class-variance-authority";
|
|
13444
|
-
import { jsx as
|
|
13529
|
+
import { jsx as jsx75 } from "react/jsx-runtime";
|
|
13445
13530
|
var badgeVariants = cva2(
|
|
13446
13531
|
"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",
|
|
13447
13532
|
{
|
|
@@ -13461,11 +13546,11 @@ var badgeVariants = cva2(
|
|
|
13461
13546
|
}
|
|
13462
13547
|
);
|
|
13463
13548
|
function Badge({ className, variant, ...props }) {
|
|
13464
|
-
return /* @__PURE__ */
|
|
13549
|
+
return /* @__PURE__ */ jsx75("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
13465
13550
|
}
|
|
13466
13551
|
|
|
13467
13552
|
// src/internal/components/UserOpStatus.tsx
|
|
13468
|
-
import { jsx as
|
|
13553
|
+
import { jsx as jsx76, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
13469
13554
|
var UserOpStatus = ({
|
|
13470
13555
|
userOpHash,
|
|
13471
13556
|
chain,
|
|
@@ -13598,35 +13683,35 @@ var UserOpStatus = ({
|
|
|
13598
13683
|
const stateBadge = () => {
|
|
13599
13684
|
if (receipt) {
|
|
13600
13685
|
const ok = !!receipt.success;
|
|
13601
|
-
return /* @__PURE__ */
|
|
13602
|
-
ok ? /* @__PURE__ */
|
|
13686
|
+
return /* @__PURE__ */ jsxs60(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
13687
|
+
ok ? /* @__PURE__ */ jsx76(CheckCircle26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx76(AlertCircle6, { className: "h-3 w-3" }),
|
|
13603
13688
|
ok ? "Included" : "Failed"
|
|
13604
13689
|
] });
|
|
13605
13690
|
}
|
|
13606
13691
|
if (rejected) {
|
|
13607
|
-
return /* @__PURE__ */
|
|
13608
|
-
/* @__PURE__ */
|
|
13692
|
+
return /* @__PURE__ */ jsxs60(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
13693
|
+
/* @__PURE__ */ jsx76(AlertCircle6, { className: "h-3 w-3" }),
|
|
13609
13694
|
" Rejected by bundler"
|
|
13610
13695
|
] });
|
|
13611
13696
|
}
|
|
13612
13697
|
if (timedOut) {
|
|
13613
|
-
return /* @__PURE__ */
|
|
13614
|
-
/* @__PURE__ */
|
|
13698
|
+
return /* @__PURE__ */ jsxs60(Badge, { variant: "warning", className: "gap-1", children: [
|
|
13699
|
+
/* @__PURE__ */ jsx76(AlertCircle6, { className: "h-3 w-3" }),
|
|
13615
13700
|
" Timeout - may be rejected"
|
|
13616
13701
|
] });
|
|
13617
13702
|
}
|
|
13618
13703
|
if (mempool) {
|
|
13619
|
-
return /* @__PURE__ */
|
|
13620
|
-
/* @__PURE__ */
|
|
13704
|
+
return /* @__PURE__ */ jsxs60(Badge, { variant: "outline", className: "gap-1", children: [
|
|
13705
|
+
/* @__PURE__ */ jsx76(Clock2, { className: "h-3 w-3" }),
|
|
13621
13706
|
" Pending in bundler"
|
|
13622
13707
|
] });
|
|
13623
13708
|
}
|
|
13624
|
-
return /* @__PURE__ */
|
|
13625
|
-
/* @__PURE__ */
|
|
13709
|
+
return /* @__PURE__ */ jsxs60(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
13710
|
+
/* @__PURE__ */ jsx76(Clock2, { className: "h-3 w-3" }),
|
|
13626
13711
|
" Waiting"
|
|
13627
13712
|
] });
|
|
13628
13713
|
};
|
|
13629
|
-
return /* @__PURE__ */
|
|
13714
|
+
return /* @__PURE__ */ jsxs60(
|
|
13630
13715
|
"div",
|
|
13631
13716
|
{
|
|
13632
13717
|
className: cn2(
|
|
@@ -13635,20 +13720,20 @@ var UserOpStatus = ({
|
|
|
13635
13720
|
),
|
|
13636
13721
|
style: { textAlign: "left", listStyle: "none" },
|
|
13637
13722
|
children: [
|
|
13638
|
-
/* @__PURE__ */
|
|
13639
|
-
/* @__PURE__ */
|
|
13723
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex items-center justify-between mb-3", children: [
|
|
13724
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex items-center gap-2", children: [
|
|
13640
13725
|
stateBadge(),
|
|
13641
|
-
/* @__PURE__ */
|
|
13726
|
+
/* @__PURE__ */ jsx76("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
13642
13727
|
] }),
|
|
13643
|
-
/* @__PURE__ */
|
|
13644
|
-
/* @__PURE__ */
|
|
13645
|
-
/* @__PURE__ */
|
|
13728
|
+
/* @__PURE__ */ jsxs60(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
13729
|
+
/* @__PURE__ */ jsx76(RefreshCw4, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
13730
|
+
/* @__PURE__ */ jsx76("span", { className: "text-xs", children: "Refresh" })
|
|
13646
13731
|
] })
|
|
13647
13732
|
] }),
|
|
13648
|
-
/* @__PURE__ */
|
|
13649
|
-
/* @__PURE__ */
|
|
13650
|
-
/* @__PURE__ */
|
|
13651
|
-
/* @__PURE__ */
|
|
13733
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
13734
|
+
/* @__PURE__ */ jsx76("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
13735
|
+
/* @__PURE__ */ jsx76("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
13736
|
+
/* @__PURE__ */ jsx76(
|
|
13652
13737
|
Button,
|
|
13653
13738
|
{
|
|
13654
13739
|
variant: "ghost",
|
|
@@ -13660,14 +13745,14 @@ var UserOpStatus = ({
|
|
|
13660
13745
|
} catch {
|
|
13661
13746
|
}
|
|
13662
13747
|
},
|
|
13663
|
-
children: /* @__PURE__ */
|
|
13748
|
+
children: /* @__PURE__ */ jsx76(Copy5, { className: "h-3.5 w-3.5" })
|
|
13664
13749
|
}
|
|
13665
13750
|
)
|
|
13666
13751
|
] }),
|
|
13667
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */
|
|
13668
|
-
/* @__PURE__ */
|
|
13669
|
-
/* @__PURE__ */
|
|
13670
|
-
/* @__PURE__ */
|
|
13752
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs60("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
13753
|
+
/* @__PURE__ */ jsx76("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
13754
|
+
/* @__PURE__ */ jsx76("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
13755
|
+
/* @__PURE__ */ jsx76(
|
|
13671
13756
|
Button,
|
|
13672
13757
|
{
|
|
13673
13758
|
variant: "ghost",
|
|
@@ -13679,10 +13764,10 @@ var UserOpStatus = ({
|
|
|
13679
13764
|
} catch {
|
|
13680
13765
|
}
|
|
13681
13766
|
},
|
|
13682
|
-
children: /* @__PURE__ */
|
|
13767
|
+
children: /* @__PURE__ */ jsx76(Copy5, { className: "h-3.5 w-3.5" })
|
|
13683
13768
|
}
|
|
13684
13769
|
),
|
|
13685
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */
|
|
13770
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx76(
|
|
13686
13771
|
"a",
|
|
13687
13772
|
{
|
|
13688
13773
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -13690,11 +13775,11 @@ var UserOpStatus = ({
|
|
|
13690
13775
|
rel: "noreferrer noopener",
|
|
13691
13776
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
13692
13777
|
title: "Open in explorer",
|
|
13693
|
-
children: /* @__PURE__ */
|
|
13778
|
+
children: /* @__PURE__ */ jsx76(ExternalLink2, { className: "h-3.5 w-3.5" })
|
|
13694
13779
|
}
|
|
13695
13780
|
)
|
|
13696
13781
|
] }),
|
|
13697
|
-
receipt && /* @__PURE__ */
|
|
13782
|
+
receipt && /* @__PURE__ */ jsxs60("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
13698
13783
|
"Block ",
|
|
13699
13784
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
13700
13785
|
" \u2022 Gas Used",
|
|
@@ -13703,32 +13788,32 @@ var UserOpStatus = ({
|
|
|
13703
13788
|
" \u2022 Success ",
|
|
13704
13789
|
String(!!receipt.success)
|
|
13705
13790
|
] }),
|
|
13706
|
-
/* @__PURE__ */
|
|
13791
|
+
/* @__PURE__ */ jsx76("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs60("span", { className: "ml-2", children: [
|
|
13707
13792
|
"\u2022 Polling for ",
|
|
13708
13793
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
13709
13794
|
"s"
|
|
13710
13795
|
] }) }),
|
|
13711
|
-
mempool && /* @__PURE__ */
|
|
13712
|
-
/* @__PURE__ */
|
|
13796
|
+
mempool && /* @__PURE__ */ jsxs60("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
13797
|
+
/* @__PURE__ */ jsxs60("div", { children: [
|
|
13713
13798
|
"Seen by bundler at ",
|
|
13714
|
-
/* @__PURE__ */
|
|
13799
|
+
/* @__PURE__ */ jsx76(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
13715
13800
|
] }),
|
|
13716
|
-
/* @__PURE__ */
|
|
13801
|
+
/* @__PURE__ */ jsxs60("div", { children: [
|
|
13717
13802
|
"sender ",
|
|
13718
|
-
/* @__PURE__ */
|
|
13803
|
+
/* @__PURE__ */ jsx76(Address, { address: mempool.sender, chain, truncate: false })
|
|
13719
13804
|
] })
|
|
13720
13805
|
] }),
|
|
13721
|
-
error && /* @__PURE__ */
|
|
13722
|
-
/* @__PURE__ */
|
|
13806
|
+
error && /* @__PURE__ */ jsxs60("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
13807
|
+
/* @__PURE__ */ jsx76(AlertCircle6, { className: "h-4 w-4" }),
|
|
13723
13808
|
" ",
|
|
13724
13809
|
error
|
|
13725
13810
|
] }),
|
|
13726
|
-
rejected && /* @__PURE__ */
|
|
13727
|
-
/* @__PURE__ */
|
|
13811
|
+
rejected && /* @__PURE__ */ jsxs60("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
13812
|
+
/* @__PURE__ */ jsx76(AlertCircle6, { className: "h-4 w-4" }),
|
|
13728
13813
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
13729
13814
|
] }),
|
|
13730
|
-
timedOut && /* @__PURE__ */
|
|
13731
|
-
/* @__PURE__ */
|
|
13815
|
+
timedOut && /* @__PURE__ */ jsxs60("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
13816
|
+
/* @__PURE__ */ jsx76(AlertCircle6, { className: "h-4 w-4" }),
|
|
13732
13817
|
"Stopped polling after ",
|
|
13733
13818
|
Math.round(maxPollTimeMs / 1e3),
|
|
13734
13819
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -13741,7 +13826,7 @@ var UserOpStatus = ({
|
|
|
13741
13826
|
// src/internal/components/Hash.tsx
|
|
13742
13827
|
import { Copy as Copy6, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
13743
13828
|
import * as React14 from "react";
|
|
13744
|
-
import { jsx as
|
|
13829
|
+
import { jsx as jsx77, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
13745
13830
|
function toExplorerUrl(kind, value, chain) {
|
|
13746
13831
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
13747
13832
|
if (!base2) return null;
|
|
@@ -13765,11 +13850,11 @@ var Hash = ({
|
|
|
13765
13850
|
const value = hash || "";
|
|
13766
13851
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
13767
13852
|
const [copied, setCopied] = React14.useState(false);
|
|
13768
|
-
if (!value) return /* @__PURE__ */
|
|
13769
|
-
return /* @__PURE__ */
|
|
13770
|
-
label && /* @__PURE__ */
|
|
13771
|
-
/* @__PURE__ */
|
|
13772
|
-
showCopy && /* @__PURE__ */
|
|
13853
|
+
if (!value) return /* @__PURE__ */ jsx77("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
13854
|
+
return /* @__PURE__ */ jsxs61("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
13855
|
+
label && /* @__PURE__ */ jsx77("span", { className: "text-sm font-medium", children: label }),
|
|
13856
|
+
/* @__PURE__ */ jsx77("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
13857
|
+
showCopy && /* @__PURE__ */ jsx77(
|
|
13773
13858
|
Button,
|
|
13774
13859
|
{
|
|
13775
13860
|
variant: "ghost",
|
|
@@ -13783,10 +13868,10 @@ var Hash = ({
|
|
|
13783
13868
|
} catch {
|
|
13784
13869
|
}
|
|
13785
13870
|
},
|
|
13786
|
-
children: /* @__PURE__ */
|
|
13871
|
+
children: /* @__PURE__ */ jsx77(Copy6, { className: "h-4 w-4" })
|
|
13787
13872
|
}
|
|
13788
13873
|
),
|
|
13789
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
13874
|
+
showExplorer && explorer && /* @__PURE__ */ jsx77(
|
|
13790
13875
|
"a",
|
|
13791
13876
|
{
|
|
13792
13877
|
href: explorer,
|
|
@@ -13794,7 +13879,7 @@ var Hash = ({
|
|
|
13794
13879
|
rel: "noreferrer noopener",
|
|
13795
13880
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
13796
13881
|
title: "Open in explorer",
|
|
13797
|
-
children: /* @__PURE__ */
|
|
13882
|
+
children: /* @__PURE__ */ jsx77(ExternalLink3, { className: "h-4 w-4" })
|
|
13798
13883
|
}
|
|
13799
13884
|
)
|
|
13800
13885
|
] });
|
|
@@ -13802,13 +13887,13 @@ var Hash = ({
|
|
|
13802
13887
|
|
|
13803
13888
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
13804
13889
|
init_base();
|
|
13805
|
-
import { useEffect as
|
|
13806
|
-
import { jsx as
|
|
13890
|
+
import { useEffect as useEffect36, useState as useState20 } from "react";
|
|
13891
|
+
import { jsx as jsx78, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
13807
13892
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
13808
|
-
const [transactions, setTransactions] =
|
|
13809
|
-
const [loading, setLoading] =
|
|
13810
|
-
const [error, setError] =
|
|
13811
|
-
|
|
13893
|
+
const [transactions, setTransactions] = useState20([]);
|
|
13894
|
+
const [loading, setLoading] = useState20(true);
|
|
13895
|
+
const [error, setError] = useState20(null);
|
|
13896
|
+
useEffect36(() => {
|
|
13812
13897
|
const fetchTransactions = async () => {
|
|
13813
13898
|
try {
|
|
13814
13899
|
setLoading(true);
|
|
@@ -13854,31 +13939,31 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
13854
13939
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
13855
13940
|
};
|
|
13856
13941
|
if (loading) {
|
|
13857
|
-
return /* @__PURE__ */
|
|
13858
|
-
/* @__PURE__ */
|
|
13859
|
-
/* @__PURE__ */
|
|
13942
|
+
return /* @__PURE__ */ jsxs62("div", { className: "p-4 text-center", children: [
|
|
13943
|
+
/* @__PURE__ */ jsx78("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
13944
|
+
/* @__PURE__ */ jsx78("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
13860
13945
|
] });
|
|
13861
13946
|
}
|
|
13862
13947
|
if (error) {
|
|
13863
|
-
return /* @__PURE__ */
|
|
13864
|
-
/* @__PURE__ */
|
|
13865
|
-
/* @__PURE__ */
|
|
13948
|
+
return /* @__PURE__ */ jsxs62("div", { className: "p-4 text-center", children: [
|
|
13949
|
+
/* @__PURE__ */ jsx78("p", { className: "text-red-600 text-sm", children: error }),
|
|
13950
|
+
/* @__PURE__ */ jsx78("button", { onClick: () => window.location.reload(), className: "mt-2 text-blue-600 text-sm hover:underline", children: "Retry" })
|
|
13866
13951
|
] });
|
|
13867
13952
|
}
|
|
13868
13953
|
if (transactions.length === 0) {
|
|
13869
|
-
return /* @__PURE__ */
|
|
13954
|
+
return /* @__PURE__ */ jsx78("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx78("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
13870
13955
|
}
|
|
13871
|
-
return /* @__PURE__ */
|
|
13956
|
+
return /* @__PURE__ */ jsx78("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx78("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs62(
|
|
13872
13957
|
"div",
|
|
13873
13958
|
{
|
|
13874
13959
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
13875
13960
|
onClick: () => openTransaction(tx.hash),
|
|
13876
13961
|
children: [
|
|
13877
|
-
/* @__PURE__ */
|
|
13878
|
-
/* @__PURE__ */
|
|
13879
|
-
/* @__PURE__ */
|
|
13880
|
-
/* @__PURE__ */
|
|
13881
|
-
/* @__PURE__ */
|
|
13962
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex justify-between items-start mb-2", children: [
|
|
13963
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex-1", children: [
|
|
13964
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
13965
|
+
/* @__PURE__ */ jsx78("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress3(tx.hash) }),
|
|
13966
|
+
/* @__PURE__ */ jsx78(
|
|
13882
13967
|
"span",
|
|
13883
13968
|
{
|
|
13884
13969
|
className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`,
|
|
@@ -13886,40 +13971,40 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
13886
13971
|
}
|
|
13887
13972
|
)
|
|
13888
13973
|
] }),
|
|
13889
|
-
/* @__PURE__ */
|
|
13890
|
-
/* @__PURE__ */
|
|
13891
|
-
/* @__PURE__ */
|
|
13892
|
-
/* @__PURE__ */
|
|
13974
|
+
/* @__PURE__ */ jsxs62("div", { className: "text-sm space-y-1", children: [
|
|
13975
|
+
/* @__PURE__ */ jsxs62("div", { children: [
|
|
13976
|
+
/* @__PURE__ */ jsx78("span", { className: "text-gray-600", children: "From:" }),
|
|
13977
|
+
/* @__PURE__ */ jsxs62("span", { className: "font-mono ml-1", children: [
|
|
13893
13978
|
formatAddress3(tx.from.hash),
|
|
13894
|
-
tx.from.is_contract && /* @__PURE__ */
|
|
13979
|
+
tx.from.is_contract && /* @__PURE__ */ jsx78("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
13895
13980
|
] })
|
|
13896
13981
|
] }),
|
|
13897
|
-
/* @__PURE__ */
|
|
13898
|
-
/* @__PURE__ */
|
|
13899
|
-
/* @__PURE__ */
|
|
13982
|
+
/* @__PURE__ */ jsxs62("div", { children: [
|
|
13983
|
+
/* @__PURE__ */ jsx78("span", { className: "text-gray-600", children: "To:" }),
|
|
13984
|
+
/* @__PURE__ */ jsxs62("span", { className: "font-mono ml-1", children: [
|
|
13900
13985
|
formatAddress3(tx.to.hash),
|
|
13901
|
-
tx.to.is_contract && /* @__PURE__ */
|
|
13986
|
+
tx.to.is_contract && /* @__PURE__ */ jsx78("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
13902
13987
|
] })
|
|
13903
13988
|
] }),
|
|
13904
|
-
/* @__PURE__ */
|
|
13905
|
-
/* @__PURE__ */
|
|
13906
|
-
/* @__PURE__ */
|
|
13989
|
+
/* @__PURE__ */ jsxs62("div", { children: [
|
|
13990
|
+
/* @__PURE__ */ jsx78("span", { className: "text-gray-600", children: "Value:" }),
|
|
13991
|
+
/* @__PURE__ */ jsxs62("span", { className: "font-semibold ml-1", children: [
|
|
13907
13992
|
formatValue3(tx.value),
|
|
13908
13993
|
" LUMIA"
|
|
13909
13994
|
] })
|
|
13910
13995
|
] })
|
|
13911
13996
|
] })
|
|
13912
13997
|
] }),
|
|
13913
|
-
/* @__PURE__ */
|
|
13914
|
-
/* @__PURE__ */
|
|
13915
|
-
/* @__PURE__ */
|
|
13998
|
+
/* @__PURE__ */ jsxs62("div", { className: "text-right text-xs text-gray-500", children: [
|
|
13999
|
+
/* @__PURE__ */ jsx78("div", { children: formatDate3(tx.timestamp) }),
|
|
14000
|
+
/* @__PURE__ */ jsxs62("div", { className: "mt-1", children: [
|
|
13916
14001
|
"Gas: ",
|
|
13917
14002
|
parseInt(tx.gas_used).toLocaleString()
|
|
13918
14003
|
] }),
|
|
13919
|
-
tx.method && /* @__PURE__ */
|
|
14004
|
+
tx.method && /* @__PURE__ */ jsx78("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
13920
14005
|
] })
|
|
13921
14006
|
] }),
|
|
13922
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
14007
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ jsx78("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx78("span", { className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full", children: type.replace("_", " ") }, idx)) })
|
|
13923
14008
|
]
|
|
13924
14009
|
},
|
|
13925
14010
|
tx.hash
|