@lumiapassport/ui-kit 1.13.11 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -37
- package/dist/iframe/index.html +2 -3
- package/dist/iframe/main.js +54 -106
- package/dist/iframe/main.js.map +1 -1
- package/dist/index.cjs +1036 -881
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -42
- package/dist/index.d.ts +2 -42
- package/dist/index.js +885 -739
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -163,15 +163,10 @@ var init_lumiaPassport = __esm({
|
|
|
163
163
|
title: "Sign in",
|
|
164
164
|
subtitle: void 0,
|
|
165
165
|
authOrder: ["passkey", "email", "social"],
|
|
166
|
-
// fonts: {
|
|
167
|
-
// base: 'system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif',
|
|
168
|
-
// heading: 'system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif'
|
|
169
|
-
// },
|
|
170
166
|
branding: {
|
|
171
167
|
tagline: "Lumia Passport MPC",
|
|
172
168
|
link: { text: "Lumia Passport MPC", url: "/mpc-security" }
|
|
173
169
|
}
|
|
174
|
-
// modal: { width: '400px', borderRadius: '24px' }
|
|
175
170
|
},
|
|
176
171
|
network: {
|
|
177
172
|
name: "Lumia Beam",
|
|
@@ -2455,7 +2450,6 @@ var init_iframe_manager = __esm({
|
|
|
2455
2450
|
this.iframe = null;
|
|
2456
2451
|
this.sessionToken = null;
|
|
2457
2452
|
this.isReady = false;
|
|
2458
|
-
// private themeColors?: IframeManagerConfig['themeColors']
|
|
2459
2453
|
// Message handling
|
|
2460
2454
|
this.pendingRequests = /* @__PURE__ */ new Map();
|
|
2461
2455
|
this.usedNonces = /* @__PURE__ */ new Set();
|
|
@@ -2481,7 +2475,6 @@ var init_iframe_manager = __esm({
|
|
|
2481
2475
|
this.log("[IframeManager] Initialized with:", {
|
|
2482
2476
|
iframeUrl: this.iframeUrl,
|
|
2483
2477
|
projectId: this.projectId
|
|
2484
|
-
// hasThemeColors: !!this.themeColors
|
|
2485
2478
|
});
|
|
2486
2479
|
}
|
|
2487
2480
|
/**
|
|
@@ -4288,17 +4281,17 @@ __export(index_exports, {
|
|
|
4288
4281
|
module.exports = __toCommonJS(index_exports);
|
|
4289
4282
|
|
|
4290
4283
|
// src/styles/built.css
|
|
4291
|
-
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-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-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 .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-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-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#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-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .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-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.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}.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-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 .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .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 .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .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-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :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 (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\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4284
|
+
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-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[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 .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-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 .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[100dvh\\]{height:100dvh}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-\\[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-\\[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-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-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-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-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-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-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-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-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,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.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 .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .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\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4292
4285
|
|
|
4293
4286
|
// src/context/LumiaPassportContext.tsx
|
|
4294
4287
|
var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
|
|
4295
4288
|
var import_lodash_es4 = require("lodash-es");
|
|
4296
|
-
var
|
|
4289
|
+
var import_react50 = require("react");
|
|
4297
4290
|
init_lumiaPassport();
|
|
4298
4291
|
init_iframe_manager();
|
|
4299
4292
|
|
|
4300
4293
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4301
|
-
var
|
|
4294
|
+
var import_react49 = require("react");
|
|
4302
4295
|
var import_zustand5 = require("zustand");
|
|
4303
4296
|
|
|
4304
4297
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
@@ -4467,12 +4460,12 @@ function BalanceFeedProvider() {
|
|
|
4467
4460
|
|
|
4468
4461
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4469
4462
|
var import_framer_motion4 = require("framer-motion");
|
|
4470
|
-
var
|
|
4463
|
+
var import_react46 = require("react");
|
|
4471
4464
|
|
|
4472
4465
|
// package.json
|
|
4473
4466
|
var package_default = {
|
|
4474
4467
|
name: "@lumiapassport/ui-kit",
|
|
4475
|
-
version: "1.
|
|
4468
|
+
version: "1.14.1",
|
|
4476
4469
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4477
4470
|
type: "module",
|
|
4478
4471
|
main: "./dist/index.cjs",
|
|
@@ -4624,6 +4617,21 @@ var import_tailwind_merge = require("tailwind-merge");
|
|
|
4624
4617
|
function cn(...inputs) {
|
|
4625
4618
|
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
4626
4619
|
}
|
|
4620
|
+
var LP_JWT_TOKENS_LS_KEY = "lumia-passport-jwt-tokens";
|
|
4621
|
+
function getAccessToken() {
|
|
4622
|
+
try {
|
|
4623
|
+
const sessionString = localStorage.getItem(LP_JWT_TOKENS_LS_KEY);
|
|
4624
|
+
if (!sessionString) return null;
|
|
4625
|
+
const session = JSON.parse(sessionString);
|
|
4626
|
+
if (session && typeof session.accessToken === "string" && typeof session.userId === "string") {
|
|
4627
|
+
return session.accessToken;
|
|
4628
|
+
}
|
|
4629
|
+
return null;
|
|
4630
|
+
} catch (error) {
|
|
4631
|
+
console.error("Failed to parse Lumia Passport session:", error);
|
|
4632
|
+
return null;
|
|
4633
|
+
}
|
|
4634
|
+
}
|
|
4627
4635
|
|
|
4628
4636
|
// src/internal/components/ui/button.tsx
|
|
4629
4637
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
@@ -5043,6 +5051,7 @@ var DialogOverlay = (0, import_react4.forwardRef)(
|
|
|
5043
5051
|
ref,
|
|
5044
5052
|
style: { backdropFilter: "blur(var(--l-pass-backdrop-blur))" },
|
|
5045
5053
|
className: cn(
|
|
5054
|
+
"w-[100dvw] h-[100dvh]",
|
|
5046
5055
|
"fixed inset-0 z-[9998] bg-[var(--l-pass-overlay)]",
|
|
5047
5056
|
closing ? "animate-dialog-out" : "animate-dialog-in",
|
|
5048
5057
|
className
|
|
@@ -5055,7 +5064,7 @@ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
|
5055
5064
|
function useDecideContentStyles() {
|
|
5056
5065
|
const isMobileView = useLayoutStore((st) => st.isMobileView);
|
|
5057
5066
|
const isClosing = useLayoutStore((st) => !!st.isDialogOpen && !!st.isDialogClosing);
|
|
5058
|
-
const mobileStyles = isMobileView ? { "--l-pass-
|
|
5067
|
+
const mobileStyles = isMobileView ? { "--l-pass-bdrs": "20px 20px 0px 0px" } : {};
|
|
5059
5068
|
return {
|
|
5060
5069
|
isClosing,
|
|
5061
5070
|
isMobileView,
|
|
@@ -5073,15 +5082,17 @@ var DialogContent = (0, import_react4.forwardRef)(
|
|
|
5073
5082
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5074
5083
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
5075
5084
|
const { isMobileView, isClosing, style } = useDecideContentStyles();
|
|
5076
|
-
|
|
5085
|
+
const animationCnPrefix = isMobileView ? "animate-mobile-dialog" : "animate-dialog";
|
|
5086
|
+
const dialogAnimationCn = isClosing ? `${animationCnPrefix}-out` : `${animationCnPrefix}-in`;
|
|
5087
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lumia-scope", "data-lumia-passport-mode": colorMode, style: { ...style, outline: "none" }, children: [
|
|
5077
5088
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, { closing: isClosing }),
|
|
5078
5089
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5079
5090
|
"div",
|
|
5080
5091
|
{
|
|
5081
5092
|
className: cn(
|
|
5082
|
-
"fixed inset-0 z-[9999] flex items-center justify-center pointer-events-none",
|
|
5083
|
-
|
|
5084
|
-
isMobileView ? "items-end" : "items-center"
|
|
5093
|
+
"fixed inset-0 z-[9999] flex items-center justify-center pointer-events-none outline-none",
|
|
5094
|
+
dialogAnimationCn,
|
|
5095
|
+
isMobileView ? "items-end w-[100dvw] h-[100dvh]" : "items-center w-[var(--l-pass-maw)] mx-auto"
|
|
5085
5096
|
),
|
|
5086
5097
|
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
5087
5098
|
DialogPrimitive.Content,
|
|
@@ -5089,10 +5100,10 @@ var DialogContent = (0, import_react4.forwardRef)(
|
|
|
5089
5100
|
ref,
|
|
5090
5101
|
style: !!className ? void 0 : CONTENT_BG_SETUP,
|
|
5091
5102
|
className: cn(
|
|
5092
|
-
"relative pointer-events-auto
|
|
5093
|
-
"
|
|
5094
|
-
"text-[var(--l-pass-fg)]",
|
|
5103
|
+
"relative pointer-events-auto max-h-[95dvh] outline-none",
|
|
5104
|
+
"p-0 gap-0 text-[var(--l-pass-fg)]",
|
|
5095
5105
|
"rounded-[var(--l-pass-bdrs)] overflow-hidden",
|
|
5106
|
+
isMobileView ? "w-[100dvw]" : "w-[var(--l-pass-maw)]",
|
|
5096
5107
|
className
|
|
5097
5108
|
),
|
|
5098
5109
|
...props,
|
|
@@ -5212,7 +5223,7 @@ function useAutoConnect() {
|
|
|
5212
5223
|
}
|
|
5213
5224
|
return { session: sess, address: addr };
|
|
5214
5225
|
} catch (error) {
|
|
5215
|
-
if (error?.code
|
|
5226
|
+
if (error?.code === "KEYSHARE_RECOVERY_NEEDED") {
|
|
5216
5227
|
setStatus("idle");
|
|
5217
5228
|
setPage("keyshare-restore" /* KEYSHARE_RESTORE */);
|
|
5218
5229
|
}
|
|
@@ -5327,7 +5338,9 @@ function useAutoConnect() {
|
|
|
5327
5338
|
setError(null);
|
|
5328
5339
|
setStatus("recovery_needed");
|
|
5329
5340
|
setIsLoading(false);
|
|
5330
|
-
|
|
5341
|
+
setTimeout(() => {
|
|
5342
|
+
setPage("keyshare-restore" /* KEYSHARE_RESTORE */);
|
|
5343
|
+
}, 500);
|
|
5331
5344
|
} else {
|
|
5332
5345
|
console.warn("[UI-KIT][AutoConnect] Unexpected error during auto-connect:", e);
|
|
5333
5346
|
setIsLoading(false);
|
|
@@ -5341,43 +5354,56 @@ function useAutoConnect() {
|
|
|
5341
5354
|
}
|
|
5342
5355
|
|
|
5343
5356
|
// src/internal/hooks/useBackupStatusChanges.ts
|
|
5357
|
+
var import_react_query4 = require("@tanstack/react-query");
|
|
5344
5358
|
var import_react6 = require("react");
|
|
5345
5359
|
init_vaultClient();
|
|
5360
|
+
var NO_BACKUP_WARN_DELAY_MS = 5e3;
|
|
5346
5361
|
function useBackupStatusChanges() {
|
|
5347
5362
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5348
|
-
(0, import_react6.
|
|
5349
|
-
|
|
5363
|
+
const noBackupWarnTimeout = (0, import_react6.useRef)(null);
|
|
5364
|
+
const { mutate: handleBackupStatusChanged } = (0, import_react_query4.useMutation)({
|
|
5365
|
+
mutationFn: async (event) => {
|
|
5350
5366
|
const customEvent = event;
|
|
5351
|
-
|
|
5352
|
-
|
|
5353
|
-
|
|
5354
|
-
|
|
5355
|
-
|
|
5356
|
-
if (
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
5360
|
-
setHasServerVault(!!hasRecoveryData);
|
|
5361
|
-
} catch (e) {
|
|
5362
|
-
console.warn("[UI-KIT] Failed to refresh vault status after backup:", e);
|
|
5363
|
-
}
|
|
5367
|
+
console.log("[BACKUP STATUS] changed:", customEvent.detail);
|
|
5368
|
+
const stats = await getShareRecoveryStats();
|
|
5369
|
+
return stats && (!!stats.created || !!stats?.devices?.length);
|
|
5370
|
+
},
|
|
5371
|
+
onSuccess: (hasRecoveryData) => {
|
|
5372
|
+
if (!!noBackupWarnTimeout.current) {
|
|
5373
|
+
clearTimeout(noBackupWarnTimeout.current);
|
|
5374
|
+
noBackupWarnTimeout.current = null;
|
|
5364
5375
|
}
|
|
5365
|
-
|
|
5376
|
+
if (!!hasRecoveryData) {
|
|
5377
|
+
setHasServerVault(true);
|
|
5378
|
+
} else {
|
|
5379
|
+
noBackupWarnTimeout.current = setTimeout(() => {
|
|
5380
|
+
setHasServerVault(false);
|
|
5381
|
+
console.warn("[BACKUP STATUS] No recovery data found in vault, marking as no-server-vault");
|
|
5382
|
+
noBackupWarnTimeout.current = null;
|
|
5383
|
+
}, NO_BACKUP_WARN_DELAY_MS);
|
|
5384
|
+
}
|
|
5385
|
+
},
|
|
5386
|
+
onError: (error) => {
|
|
5387
|
+
setHasServerVault(false);
|
|
5388
|
+
console.warn("[BACKUP STATUS] Failed to fetch initial vault status:", error);
|
|
5389
|
+
}
|
|
5390
|
+
});
|
|
5391
|
+
(0, import_react6.useEffect)(() => {
|
|
5366
5392
|
window.addEventListener("lumia-passport-backup-status-changed", handleBackupStatusChanged);
|
|
5367
5393
|
return () => {
|
|
5368
5394
|
window.removeEventListener("lumia-passport-backup-status-changed", handleBackupStatusChanged);
|
|
5369
5395
|
};
|
|
5370
|
-
}, [
|
|
5396
|
+
}, []);
|
|
5371
5397
|
}
|
|
5372
5398
|
|
|
5373
5399
|
// src/internal/hooks/useCheckVaultStatus.ts
|
|
5374
|
-
var
|
|
5400
|
+
var import_react_query5 = require("@tanstack/react-query");
|
|
5375
5401
|
var import_react7 = require("react");
|
|
5376
5402
|
init_vaultClient();
|
|
5377
5403
|
function useCheckVaultStatus() {
|
|
5378
5404
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5379
5405
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5380
|
-
const { mutate: checkVaultStatus } = (0,
|
|
5406
|
+
const { mutate: checkVaultStatus } = (0, import_react_query5.useMutation)({
|
|
5381
5407
|
mutationFn: async () => {
|
|
5382
5408
|
const stats = await getShareRecoveryStats();
|
|
5383
5409
|
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
@@ -5421,12 +5447,12 @@ function useDetectMaxScrollHeight() {
|
|
|
5421
5447
|
}
|
|
5422
5448
|
|
|
5423
5449
|
// src/internal/hooks/usePageMapper.tsx
|
|
5424
|
-
var
|
|
5450
|
+
var import_react43 = require("react");
|
|
5425
5451
|
|
|
5426
5452
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5427
5453
|
var import_framer_motion = require("framer-motion");
|
|
5428
5454
|
var import_lucide_react14 = require("lucide-react");
|
|
5429
|
-
var
|
|
5455
|
+
var import_react19 = require("react");
|
|
5430
5456
|
|
|
5431
5457
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5432
5458
|
var import_lucide_react6 = require("lucide-react");
|
|
@@ -5986,12 +6012,13 @@ function PassKeyStep(props) {
|
|
|
5986
6012
|
|
|
5987
6013
|
// src/internal/components/AuthMenu/SignInStep/SignInStep.tsx
|
|
5988
6014
|
var import_lucide_react12 = require("lucide-react");
|
|
5989
|
-
var
|
|
6015
|
+
var import_react15 = require("react");
|
|
5990
6016
|
|
|
5991
6017
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
5992
6018
|
init_lumiaPassport();
|
|
5993
|
-
var
|
|
6019
|
+
var import_react_query6 = require("@tanstack/react-query");
|
|
5994
6020
|
var import_lucide_react9 = require("lucide-react");
|
|
6021
|
+
var import_react13 = require("react");
|
|
5995
6022
|
init_projectId();
|
|
5996
6023
|
|
|
5997
6024
|
// src/internal/components/ui/highlight.tsx
|
|
@@ -6008,7 +6035,7 @@ function Highlight(props) {
|
|
|
6008
6035
|
"div",
|
|
6009
6036
|
{
|
|
6010
6037
|
className: cn(
|
|
6011
|
-
"w-full text-xs rounded-[var(--l-pass-el-bdrs)] p-[var(--l-pass-pd)]",
|
|
6038
|
+
"w-full text-xs rounded-[var(--l-pass-el-bdrs)] p-[var(--l-pass-pd)] whitespace-pre-wrap break-all",
|
|
6012
6039
|
CARD_STYLES[type],
|
|
6013
6040
|
className
|
|
6014
6041
|
),
|
|
@@ -6020,14 +6047,12 @@ function Highlight(props) {
|
|
|
6020
6047
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
6021
6048
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
6022
6049
|
function Email() {
|
|
6023
|
-
const {
|
|
6024
|
-
|
|
6025
|
-
callbacks
|
|
6026
|
-
} = useLumiaPassportConfig();
|
|
6050
|
+
const { config, callbacks } = useLumiaPassportConfig();
|
|
6051
|
+
const buttonRef = (0, import_react13.useRef)(null);
|
|
6027
6052
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6028
6053
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6029
6054
|
const { email, codeSendError, alert: alert2, setEmail, setCodeSendError, setExpiresIn, setStep, setAlert } = useAuthStore();
|
|
6030
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
6055
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query6.useMutation)({
|
|
6031
6056
|
mutationFn: async (mail) => {
|
|
6032
6057
|
const isEmailValid = mail.length !== 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail);
|
|
6033
6058
|
if (!isEmailValid) {
|
|
@@ -6067,35 +6092,48 @@ function Email() {
|
|
|
6067
6092
|
}
|
|
6068
6093
|
});
|
|
6069
6094
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6070
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
6071
|
-
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6077
|
-
autoComplete: "off",
|
|
6078
|
-
placeholder: config.email.placeholder,
|
|
6079
|
-
value: email,
|
|
6080
|
-
className: "flex-1 w-full",
|
|
6081
|
-
onChange: (e) => {
|
|
6082
|
-
if (alert2) setAlert(null);
|
|
6083
|
-
setEmail(e.target.value);
|
|
6095
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
6096
|
+
"div",
|
|
6097
|
+
{
|
|
6098
|
+
className: "w-full flex gap-[10px] items-center",
|
|
6099
|
+
onKeyDown: (e) => {
|
|
6100
|
+
if (e.key === "Enter" && !isLoading && email) {
|
|
6101
|
+
buttonRef.current?.click();
|
|
6084
6102
|
}
|
|
6085
|
-
}
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
|
|
6093
|
-
|
|
6094
|
-
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
|
|
6098
|
-
|
|
6103
|
+
},
|
|
6104
|
+
children: [
|
|
6105
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
6106
|
+
Input,
|
|
6107
|
+
{
|
|
6108
|
+
name: "signin-email",
|
|
6109
|
+
Icon: import_lucide_react9.Mail,
|
|
6110
|
+
type: "email",
|
|
6111
|
+
autoComplete: "off",
|
|
6112
|
+
placeholder: config.current?.email?.placeholder || "Enter your email",
|
|
6113
|
+
value: email,
|
|
6114
|
+
disabled: isLoading,
|
|
6115
|
+
className: "flex-1 w-full",
|
|
6116
|
+
onChange: (e) => {
|
|
6117
|
+
if (alert2) setAlert(null);
|
|
6118
|
+
setEmail(e.target.value);
|
|
6119
|
+
}
|
|
6120
|
+
}
|
|
6121
|
+
),
|
|
6122
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
6123
|
+
Button,
|
|
6124
|
+
{
|
|
6125
|
+
ref: buttonRef,
|
|
6126
|
+
className: "w-12 h-12 flex-none",
|
|
6127
|
+
variant: "default",
|
|
6128
|
+
size: "large",
|
|
6129
|
+
disabled: !email || isLoading,
|
|
6130
|
+
onClick: () => onSendVerificationCode(email),
|
|
6131
|
+
children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.ChevronRight, { className: "w-4 h-4" })
|
|
6132
|
+
}
|
|
6133
|
+
)
|
|
6134
|
+
]
|
|
6135
|
+
}
|
|
6136
|
+
),
|
|
6099
6137
|
!!codeSendError && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
6100
6138
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Mail, { className: "w-4 h-4" }),
|
|
6101
6139
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: codeSendError })
|
|
@@ -6119,7 +6157,7 @@ function ErrorAlert(props) {
|
|
|
6119
6157
|
|
|
6120
6158
|
// src/internal/components/AuthMenu/SignInStep/Social.tsx
|
|
6121
6159
|
var import_lucide_react11 = require("lucide-react");
|
|
6122
|
-
var
|
|
6160
|
+
var import_react14 = require("react");
|
|
6123
6161
|
init_assets();
|
|
6124
6162
|
init_lumiaPassport();
|
|
6125
6163
|
init_auth();
|
|
@@ -6210,7 +6248,7 @@ function Social(props) {
|
|
|
6210
6248
|
setPasskeyError,
|
|
6211
6249
|
setPasskeyStatus
|
|
6212
6250
|
} = useAuthStore();
|
|
6213
|
-
const onSocialAuth = (0,
|
|
6251
|
+
const onSocialAuth = (0, import_react14.useCallback)(
|
|
6214
6252
|
async (providerId) => {
|
|
6215
6253
|
const normalizedProviderId = providerId.toLowerCase();
|
|
6216
6254
|
const provider = config.current?.social?.providers?.find(
|
|
@@ -6621,7 +6659,7 @@ function SignInStep(props) {
|
|
|
6621
6659
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "font-bold text-xl leading-6", children: "Sign In" })
|
|
6622
6660
|
] }),
|
|
6623
6661
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6624
|
-
enabledWoPasskey.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
6662
|
+
enabledWoPasskey.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react15.Fragment, { children: [
|
|
6625
6663
|
idx > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center", children: [
|
|
6626
6664
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
6627
6665
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex-none px-2 text-xs leading-4", children: "Or sign in using" }),
|
|
@@ -6648,19 +6686,19 @@ function SignInStep(props) {
|
|
|
6648
6686
|
}
|
|
6649
6687
|
|
|
6650
6688
|
// src/internal/components/AuthMenu/useAuthMenuHanders.ts
|
|
6651
|
-
var
|
|
6689
|
+
var import_react16 = require("react");
|
|
6652
6690
|
init_auth();
|
|
6653
6691
|
function useAuthMenuHandlers() {
|
|
6654
6692
|
const {
|
|
6655
6693
|
config: { current: config },
|
|
6656
6694
|
callbacks
|
|
6657
6695
|
} = useLumiaPassportConfig();
|
|
6658
|
-
const pendingLoginResponseRef = (0,
|
|
6696
|
+
const pendingLoginResponseRef = (0, import_react16.useRef)(null);
|
|
6659
6697
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6660
|
-
const [telegramCleanup, setTelegramCleanup] = (0,
|
|
6698
|
+
const [telegramCleanup, setTelegramCleanup] = (0, import_react16.useState)(null);
|
|
6661
6699
|
const { usePaymaster, setError, setStatus, setSession, setAddress, setRecoveryUserId, setHasServerVault } = useLumiaPassportSession();
|
|
6662
6700
|
const { setStep, setVerificationError, setCodeSendError, setFailedMessage } = useAuthStore();
|
|
6663
|
-
const createSessionWithKeyshare = (0,
|
|
6701
|
+
const createSessionWithKeyshare = (0, import_react16.useCallback)(
|
|
6664
6702
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
6665
6703
|
try {
|
|
6666
6704
|
try {
|
|
@@ -6694,7 +6732,7 @@ function useAuthMenuHandlers() {
|
|
|
6694
6732
|
},
|
|
6695
6733
|
[setStatus, callbacks, usePaymaster]
|
|
6696
6734
|
);
|
|
6697
|
-
const onAuthSuccess = (0,
|
|
6735
|
+
const onAuthSuccess = (0, import_react16.useCallback)(async () => {
|
|
6698
6736
|
console.log("[ConnectWalletButton] handleAuthModalSuccess called");
|
|
6699
6737
|
const loginResponse = pendingLoginResponseRef.current;
|
|
6700
6738
|
console.log("[ConnectWalletButton] loginResponse:", loginResponse);
|
|
@@ -6767,7 +6805,9 @@ function useAuthMenuHandlers() {
|
|
|
6767
6805
|
setError(null);
|
|
6768
6806
|
setRecoveryUserId(userId);
|
|
6769
6807
|
setStatus("recovery_needed");
|
|
6770
|
-
|
|
6808
|
+
setTimeout(() => {
|
|
6809
|
+
setPage("keyshare-restore" /* KEYSHARE_RESTORE */);
|
|
6810
|
+
}, 500);
|
|
6771
6811
|
} else {
|
|
6772
6812
|
pendingLoginResponseRef.current = null;
|
|
6773
6813
|
await import_auth3.jwtTokenManager.clearTokens();
|
|
@@ -6789,7 +6829,7 @@ function useAuthMenuHandlers() {
|
|
|
6789
6829
|
setHasServerVault,
|
|
6790
6830
|
createSessionWithKeyshare
|
|
6791
6831
|
]);
|
|
6792
|
-
const checkDisplayNameRequired = (0,
|
|
6832
|
+
const checkDisplayNameRequired = (0, import_react16.useCallback)(
|
|
6793
6833
|
async (loginResponse) => {
|
|
6794
6834
|
if (!config.features.displayNameNeeded) {
|
|
6795
6835
|
return false;
|
|
@@ -6816,7 +6856,7 @@ function useAuthMenuHandlers() {
|
|
|
6816
6856
|
},
|
|
6817
6857
|
[config.features.displayNameNeeded]
|
|
6818
6858
|
);
|
|
6819
|
-
const goBackToSignIn = (0,
|
|
6859
|
+
const goBackToSignIn = (0, import_react16.useCallback)(() => {
|
|
6820
6860
|
setStep("signin");
|
|
6821
6861
|
setVerificationError("");
|
|
6822
6862
|
setCodeSendError("");
|
|
@@ -6834,11 +6874,11 @@ function useAuthMenuHandlers() {
|
|
|
6834
6874
|
}
|
|
6835
6875
|
|
|
6836
6876
|
// src/internal/components/AuthMenu/useListenIframeAuthEvents.ts
|
|
6837
|
-
var
|
|
6877
|
+
var import_react17 = require("react");
|
|
6838
6878
|
function useListenIframeAuthEvents() {
|
|
6839
6879
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
6840
6880
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
6841
|
-
const handleIframeMessage = (0,
|
|
6881
|
+
const handleIframeMessage = (0, import_react17.useCallback)(
|
|
6842
6882
|
(event) => {
|
|
6843
6883
|
console.log("[AuthMenu] Received iframe message:", event.data);
|
|
6844
6884
|
if (event.data?.type === "LUMIA_PASSPORT_IFRAME_READY") {
|
|
@@ -6856,7 +6896,7 @@ function useListenIframeAuthEvents() {
|
|
|
6856
6896
|
},
|
|
6857
6897
|
[setPage, setIsIframeReady]
|
|
6858
6898
|
);
|
|
6859
|
-
(0,
|
|
6899
|
+
(0, import_react17.useEffect)(() => {
|
|
6860
6900
|
window.addEventListener("message", handleIframeMessage);
|
|
6861
6901
|
return () => window.removeEventListener("message", handleIframeMessage);
|
|
6862
6902
|
}, [handleIframeMessage]);
|
|
@@ -6864,7 +6904,7 @@ function useListenIframeAuthEvents() {
|
|
|
6864
6904
|
|
|
6865
6905
|
// src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
|
|
6866
6906
|
init_lumiaPassport();
|
|
6867
|
-
var
|
|
6907
|
+
var import_react_query7 = require("@tanstack/react-query");
|
|
6868
6908
|
var import_lucide_react13 = require("lucide-react");
|
|
6869
6909
|
|
|
6870
6910
|
// src/internal/assets/OtpIcon.tsx
|
|
@@ -6885,21 +6925,21 @@ init_auth();
|
|
|
6885
6925
|
init_projectId();
|
|
6886
6926
|
|
|
6887
6927
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
6888
|
-
var
|
|
6928
|
+
var import_react18 = require("react");
|
|
6889
6929
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
6890
6930
|
var VerificationCodeInput = (props) => {
|
|
6891
6931
|
const { onVerifyCode, onResendCode, isLoading, expiresIn, error } = props;
|
|
6892
6932
|
const setVerificationError = useAuthStore((st) => st.setVerificationError);
|
|
6893
|
-
const [timeLeft, setTimeLeft] = (0,
|
|
6894
|
-
(0,
|
|
6895
|
-
(0,
|
|
6933
|
+
const [timeLeft, setTimeLeft] = (0, import_react18.useState)(expiresIn);
|
|
6934
|
+
(0, import_react18.useEffect)(() => setTimeLeft(expiresIn), [expiresIn]);
|
|
6935
|
+
(0, import_react18.useEffect)(() => {
|
|
6896
6936
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
6897
6937
|
return () => clearInterval(t);
|
|
6898
6938
|
}, []);
|
|
6899
|
-
const lastSubmittedRef = (0,
|
|
6900
|
-
const inputsRef = (0,
|
|
6901
|
-
const [digits, setDigits] = (0,
|
|
6902
|
-
(0,
|
|
6939
|
+
const lastSubmittedRef = (0, import_react18.useRef)(null);
|
|
6940
|
+
const inputsRef = (0, import_react18.useRef)([]);
|
|
6941
|
+
const [digits, setDigits] = (0, import_react18.useState)(["", "", "", "", "", ""]);
|
|
6942
|
+
(0, import_react18.useEffect)(() => {
|
|
6903
6943
|
const code = digits.join("");
|
|
6904
6944
|
if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
|
|
6905
6945
|
if (lastSubmittedRef.current !== code) {
|
|
@@ -6908,7 +6948,7 @@ var VerificationCodeInput = (props) => {
|
|
|
6908
6948
|
}
|
|
6909
6949
|
}
|
|
6910
6950
|
}, [digits, isLoading, onVerifyCode]);
|
|
6911
|
-
(0,
|
|
6951
|
+
(0, import_react18.useEffect)(() => {
|
|
6912
6952
|
const t = setTimeout(() => {
|
|
6913
6953
|
inputsRef.current[0]?.focus();
|
|
6914
6954
|
}, 0);
|
|
@@ -7033,7 +7073,7 @@ function VerifyStep(props) {
|
|
|
7033
7073
|
setEmail,
|
|
7034
7074
|
setExpiresIn
|
|
7035
7075
|
} = useAuthStore();
|
|
7036
|
-
const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0,
|
|
7076
|
+
const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0, import_react_query7.useMutation)({
|
|
7037
7077
|
mutationFn: async (code) => {
|
|
7038
7078
|
setIsLoading(true);
|
|
7039
7079
|
setVerificationError("");
|
|
@@ -7106,7 +7146,7 @@ function VerifyStep(props) {
|
|
|
7106
7146
|
setIsLoading(false);
|
|
7107
7147
|
}
|
|
7108
7148
|
});
|
|
7109
|
-
const { mutate: onResendCode, isPending: isCodeResending } = (0,
|
|
7149
|
+
const { mutate: onResendCode, isPending: isCodeResending } = (0, import_react_query7.useMutation)({
|
|
7110
7150
|
mutationFn: async () => {
|
|
7111
7151
|
setVerificationError("");
|
|
7112
7152
|
setIsLoading(true);
|
|
@@ -7184,7 +7224,7 @@ var AuthMenu = () => {
|
|
|
7184
7224
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7185
7225
|
const page = useLayoutDataStore((st) => st.page);
|
|
7186
7226
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7187
|
-
(0,
|
|
7227
|
+
(0, import_react19.useEffect)(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
7188
7228
|
const {
|
|
7189
7229
|
step,
|
|
7190
7230
|
setStep,
|
|
@@ -7195,7 +7235,7 @@ var AuthMenu = () => {
|
|
|
7195
7235
|
setFailedMessage,
|
|
7196
7236
|
setCodeSendError
|
|
7197
7237
|
} = useAuthStore();
|
|
7198
|
-
(0,
|
|
7238
|
+
(0, import_react19.useEffect)(() => {
|
|
7199
7239
|
if (page !== "auth" /* AUTH */) {
|
|
7200
7240
|
setStep("signin");
|
|
7201
7241
|
setEmail("");
|
|
@@ -7214,7 +7254,7 @@ var AuthMenu = () => {
|
|
|
7214
7254
|
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Initializing wallet..." })
|
|
7215
7255
|
] });
|
|
7216
7256
|
}
|
|
7217
|
-
const stepContent = (0,
|
|
7257
|
+
const stepContent = (0, import_react19.useMemo)(
|
|
7218
7258
|
() => ({
|
|
7219
7259
|
"failed": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(AuthFailedStep, {}),
|
|
7220
7260
|
"display-name": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DisplayNameStep, { onAuthSuccess }),
|
|
@@ -7360,9 +7400,9 @@ function RampnowIcon() {
|
|
|
7360
7400
|
}
|
|
7361
7401
|
|
|
7362
7402
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7363
|
-
var
|
|
7403
|
+
var import_react_query8 = require("@tanstack/react-query");
|
|
7364
7404
|
var import_lucide_react15 = require("lucide-react");
|
|
7365
|
-
var
|
|
7405
|
+
var import_react21 = require("react");
|
|
7366
7406
|
|
|
7367
7407
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7368
7408
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
@@ -7405,36 +7445,61 @@ var QUERY_KEYS2 = {
|
|
|
7405
7445
|
// src/internal/components/BuyMenu/binance/api.ts
|
|
7406
7446
|
init_iframe_manager();
|
|
7407
7447
|
async function getLumiaNetworkQuery() {
|
|
7448
|
+
const accessToken = getAccessToken();
|
|
7449
|
+
if (!accessToken) {
|
|
7450
|
+
throw new Error("Access token is not available");
|
|
7451
|
+
}
|
|
7408
7452
|
const iframeManager = getIframeManager();
|
|
7409
7453
|
if (!iframeManager) {
|
|
7410
7454
|
throw new Error("Iframe manager is not initialized");
|
|
7411
7455
|
}
|
|
7412
|
-
return await iframeManager.sendMessage("BINANCE_GET_LUMIA_NETWORK_QUERY", {});
|
|
7456
|
+
return await iframeManager.sendMessage("BINANCE_GET_LUMIA_NETWORK_QUERY", { accessToken });
|
|
7413
7457
|
}
|
|
7414
7458
|
async function getPaymentMethodsQuery(payload) {
|
|
7459
|
+
const accessToken = getAccessToken();
|
|
7460
|
+
if (!accessToken) {
|
|
7461
|
+
throw new Error("Access token is not available");
|
|
7462
|
+
}
|
|
7415
7463
|
const iframeManager = getIframeManager();
|
|
7416
7464
|
if (!iframeManager) {
|
|
7417
7465
|
throw new Error("Iframe manager is not initialized");
|
|
7418
7466
|
}
|
|
7419
|
-
return await iframeManager.sendMessage("BINANCE_GET_PAYMENT_METHODS_QUERY",
|
|
7467
|
+
return await iframeManager.sendMessage("BINANCE_GET_PAYMENT_METHODS_QUERY", {
|
|
7468
|
+
...payload,
|
|
7469
|
+
accessToken
|
|
7470
|
+
});
|
|
7420
7471
|
}
|
|
7421
7472
|
async function getQuoteQuery(payload) {
|
|
7473
|
+
const accessToken = getAccessToken();
|
|
7474
|
+
if (!accessToken) {
|
|
7475
|
+
throw new Error("Access token is not available");
|
|
7476
|
+
}
|
|
7422
7477
|
const iframeManager = getIframeManager();
|
|
7423
7478
|
if (!iframeManager) {
|
|
7424
7479
|
throw new Error("Iframe manager is not initialized");
|
|
7425
7480
|
}
|
|
7426
|
-
return await iframeManager.sendMessage("BINANCE_GET_QUOTE_QUERY",
|
|
7481
|
+
return await iframeManager.sendMessage("BINANCE_GET_QUOTE_QUERY", {
|
|
7482
|
+
...payload,
|
|
7483
|
+
accessToken
|
|
7484
|
+
});
|
|
7427
7485
|
}
|
|
7428
7486
|
async function createPreorderMutation(payload) {
|
|
7487
|
+
const accessToken = getAccessToken();
|
|
7488
|
+
if (!accessToken) {
|
|
7489
|
+
throw new Error("Access token is not available");
|
|
7490
|
+
}
|
|
7429
7491
|
const iframeManager = getIframeManager();
|
|
7430
7492
|
if (!iframeManager) {
|
|
7431
7493
|
throw new Error("Iframe manager is not initialized");
|
|
7432
7494
|
}
|
|
7433
|
-
return await iframeManager.sendMessage("BINANCE_CREATE_PREORDER_MUTATION",
|
|
7495
|
+
return await iframeManager.sendMessage("BINANCE_CREATE_PREORDER_MUTATION", {
|
|
7496
|
+
...payload,
|
|
7497
|
+
accessToken
|
|
7498
|
+
});
|
|
7434
7499
|
}
|
|
7435
7500
|
|
|
7436
7501
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7437
|
-
var
|
|
7502
|
+
var import_react20 = require("react");
|
|
7438
7503
|
|
|
7439
7504
|
// src/internal/components/BuyMenu/binance/utils.ts
|
|
7440
7505
|
function getPayMethodID(pm) {
|
|
@@ -7454,7 +7519,7 @@ function handleErrors(errors) {
|
|
|
7454
7519
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7455
7520
|
var useQueriesErrorHandler = (errors, stateUpdater) => {
|
|
7456
7521
|
const { error: errorTitle, message: errorMessage } = handleErrors(errors);
|
|
7457
|
-
(0,
|
|
7522
|
+
(0, import_react20.useEffect)(() => {
|
|
7458
7523
|
if (!errorTitle && !errorMessage) return;
|
|
7459
7524
|
console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
|
|
7460
7525
|
stateUpdater(1);
|
|
@@ -7479,12 +7544,12 @@ function Binance(props) {
|
|
|
7479
7544
|
setMinAmount,
|
|
7480
7545
|
setSrcInputAmount
|
|
7481
7546
|
} = control;
|
|
7482
|
-
const qc = (0,
|
|
7547
|
+
const qc = (0, import_react_query8.useQueryClient)();
|
|
7483
7548
|
const {
|
|
7484
7549
|
data: lumiaNetwork,
|
|
7485
7550
|
isLoading: isLumiaNetworkLoading,
|
|
7486
7551
|
error: lumiaNetworkError
|
|
7487
|
-
} = (0,
|
|
7552
|
+
} = (0, import_react_query8.useQuery)({
|
|
7488
7553
|
retry: false,
|
|
7489
7554
|
enabled: !!walletAddress,
|
|
7490
7555
|
queryKey: [QUERY_KEYS2.binanceNetworksQuery, walletAddress],
|
|
@@ -7495,27 +7560,27 @@ function Binance(props) {
|
|
|
7495
7560
|
data: paymentModes = null,
|
|
7496
7561
|
isLoading: isPaymentModesLoading,
|
|
7497
7562
|
error: paymentMethodsError
|
|
7498
|
-
} = (0,
|
|
7563
|
+
} = (0, import_react_query8.useQuery)({
|
|
7499
7564
|
retry: false,
|
|
7500
7565
|
enabled: !!isLumiaAvailable && !!walletAddress,
|
|
7501
7566
|
// && srcQueryAmount > 0,
|
|
7502
7567
|
queryKey: [QUERY_KEYS2.binancePaymentModes, walletAddress, isLumiaAvailable, srcQueryAmount],
|
|
7503
7568
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7504
7569
|
});
|
|
7505
|
-
const lastLoadedPaymentModes = (0,
|
|
7506
|
-
(0,
|
|
7570
|
+
const lastLoadedPaymentModes = (0, import_react21.useRef)([]);
|
|
7571
|
+
(0, import_react21.useEffect)(() => {
|
|
7507
7572
|
if (!paymentModes?.length) return;
|
|
7508
7573
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
7509
7574
|
lastLoadedPaymentModes.current = paymentModes;
|
|
7510
7575
|
}, [paymentModes]);
|
|
7511
7576
|
const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
|
|
7512
7577
|
const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
|
|
7513
|
-
(0,
|
|
7578
|
+
(0, import_react21.useEffect)(() => setMinAmount(minimum), [minimum]);
|
|
7514
7579
|
const {
|
|
7515
7580
|
data: quoteData = null,
|
|
7516
7581
|
isLoading: isQuoteDataLoading,
|
|
7517
7582
|
error: quoteError
|
|
7518
|
-
} = (0,
|
|
7583
|
+
} = (0, import_react_query8.useQuery)({
|
|
7519
7584
|
retry: false,
|
|
7520
7585
|
enabled: !!walletAddress && srcQueryAmount > 0 && minimum > 0 && srcQueryAmount >= minimum,
|
|
7521
7586
|
queryKey: [QUERY_KEYS2.binanceQuote, walletAddress, selectedPaymentMode, srcQueryAmount],
|
|
@@ -7531,7 +7596,7 @@ function Binance(props) {
|
|
|
7531
7596
|
[lumiaNetworkError, paymentMethodsError, quoteError],
|
|
7532
7597
|
setSrcInputAmount
|
|
7533
7598
|
);
|
|
7534
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0,
|
|
7599
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query8.useMutation)({
|
|
7535
7600
|
mutationFn: async () => {
|
|
7536
7601
|
setRedirecting(true);
|
|
7537
7602
|
const returnUrl = window.location.href.split("?")[0];
|
|
@@ -7555,7 +7620,7 @@ function Binance(props) {
|
|
|
7555
7620
|
setRedirecting(false);
|
|
7556
7621
|
}
|
|
7557
7622
|
});
|
|
7558
|
-
(0,
|
|
7623
|
+
(0, import_react21.useEffect)(() => {
|
|
7559
7624
|
return () => {
|
|
7560
7625
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceNetworksQuery] });
|
|
7561
7626
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binancePaymentModes] });
|
|
@@ -7604,7 +7669,7 @@ function Binance(props) {
|
|
|
7604
7669
|
{
|
|
7605
7670
|
size: "large",
|
|
7606
7671
|
disabled: isContinueDisabled,
|
|
7607
|
-
className: cn("w-full h-12", { "cursor-pointer": !isContinueDisabled }),
|
|
7672
|
+
className: cn("w-full h-12 flex-none", { "cursor-pointer": !isContinueDisabled }),
|
|
7608
7673
|
variant: "default",
|
|
7609
7674
|
onClick: () => checkoutFundWalletOrder(),
|
|
7610
7675
|
children: [
|
|
@@ -7617,25 +7682,36 @@ function Binance(props) {
|
|
|
7617
7682
|
}
|
|
7618
7683
|
|
|
7619
7684
|
// src/internal/components/BuyMenu/rampnow/Rampnow.tsx
|
|
7620
|
-
var
|
|
7685
|
+
var import_react_query9 = require("@tanstack/react-query");
|
|
7621
7686
|
var import_lucide_react16 = require("lucide-react");
|
|
7622
|
-
var
|
|
7687
|
+
var import_react22 = require("react");
|
|
7623
7688
|
|
|
7624
7689
|
// src/internal/components/BuyMenu/rampnow/api.ts
|
|
7625
7690
|
init_iframe_manager();
|
|
7626
7691
|
async function getRampnowConfigQuery() {
|
|
7692
|
+
const accessToken = getAccessToken();
|
|
7693
|
+
if (!accessToken) {
|
|
7694
|
+
throw new Error("Access token is not available");
|
|
7695
|
+
}
|
|
7627
7696
|
const iframeManager = getIframeManager();
|
|
7628
7697
|
if (!iframeManager) {
|
|
7629
7698
|
throw new Error("Iframe manager is not initialized");
|
|
7630
7699
|
}
|
|
7631
|
-
return await iframeManager.sendMessage("RAMPNOW_GET_CONFIG", {});
|
|
7700
|
+
return await iframeManager.sendMessage("RAMPNOW_GET_CONFIG", { accessToken });
|
|
7632
7701
|
}
|
|
7633
7702
|
async function getRampOrderQuoteQuery(payload) {
|
|
7703
|
+
const accessToken = getAccessToken();
|
|
7704
|
+
if (!accessToken) {
|
|
7705
|
+
throw new Error("Access token is not available");
|
|
7706
|
+
}
|
|
7634
7707
|
const iframeManager = getIframeManager();
|
|
7635
7708
|
if (!iframeManager) {
|
|
7636
7709
|
throw new Error("Iframe manager is not initialized");
|
|
7637
7710
|
}
|
|
7638
|
-
return await iframeManager.sendMessage("RAMPNOW_GET_ORDER_QUOTE",
|
|
7711
|
+
return await iframeManager.sendMessage("RAMPNOW_GET_ORDER_QUOTE", {
|
|
7712
|
+
...payload,
|
|
7713
|
+
accessToken
|
|
7714
|
+
});
|
|
7639
7715
|
}
|
|
7640
7716
|
|
|
7641
7717
|
// src/internal/components/BuyMenu/rampnow/constants.ts
|
|
@@ -7672,8 +7748,8 @@ function Rampnow(props) {
|
|
|
7672
7748
|
setSrcInputAmount,
|
|
7673
7749
|
setMinAmount
|
|
7674
7750
|
} = control;
|
|
7675
|
-
const qc = (0,
|
|
7676
|
-
(0,
|
|
7751
|
+
const qc = (0, import_react_query9.useQueryClient)();
|
|
7752
|
+
(0, import_react22.useEffect)(() => {
|
|
7677
7753
|
setMinAmount(MINIMUM_RAMP_AMOUNT);
|
|
7678
7754
|
setPaymentMode(PAYMENT_MODES[0].id);
|
|
7679
7755
|
}, []);
|
|
@@ -7681,7 +7757,7 @@ function Rampnow(props) {
|
|
|
7681
7757
|
data: configData,
|
|
7682
7758
|
isLoading: isConfigLoading,
|
|
7683
7759
|
error: configError
|
|
7684
|
-
} = (0,
|
|
7760
|
+
} = (0, import_react_query9.useQuery)({
|
|
7685
7761
|
retry: false,
|
|
7686
7762
|
enabled: !!walletAddress,
|
|
7687
7763
|
queryKey: [QUERY_KEYS2.getRampNowConfig, walletAddress],
|
|
@@ -7691,7 +7767,7 @@ function Rampnow(props) {
|
|
|
7691
7767
|
data: quoteData,
|
|
7692
7768
|
isLoading: isQuoteDataLoading,
|
|
7693
7769
|
error: quoteError
|
|
7694
|
-
} = (0,
|
|
7770
|
+
} = (0, import_react_query9.useQuery)({
|
|
7695
7771
|
retry: false,
|
|
7696
7772
|
enabled: !!configData && !!walletAddress && !!paymentMode && srcQueryAmount >= MINIMUM_RAMP_AMOUNT,
|
|
7697
7773
|
queryKey: [QUERY_KEYS2.getRampNowQuote, walletAddress, srcQueryAmount, paymentMode],
|
|
@@ -7701,7 +7777,7 @@ function Rampnow(props) {
|
|
|
7701
7777
|
paymentMode
|
|
7702
7778
|
})
|
|
7703
7779
|
});
|
|
7704
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0,
|
|
7780
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query9.useMutation)({
|
|
7705
7781
|
mutationFn: async () => {
|
|
7706
7782
|
if (!configData?.apiKey?.length || !configData?.orderUrl?.length) {
|
|
7707
7783
|
throw new Error("RampNow order service is not available");
|
|
@@ -7730,7 +7806,7 @@ function Rampnow(props) {
|
|
|
7730
7806
|
console.error("Create CheckoutOrder failed:", err);
|
|
7731
7807
|
}
|
|
7732
7808
|
});
|
|
7733
|
-
(0,
|
|
7809
|
+
(0, import_react22.useEffect)(() => {
|
|
7734
7810
|
return () => {
|
|
7735
7811
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowConfig] });
|
|
7736
7812
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowQuote] });
|
|
@@ -7776,7 +7852,7 @@ function Rampnow(props) {
|
|
|
7776
7852
|
{
|
|
7777
7853
|
size: "large",
|
|
7778
7854
|
disabled: isContinueDisabled,
|
|
7779
|
-
className: cn("w-full h-12", { "cursor-pointer": !isContinueDisabled }),
|
|
7855
|
+
className: cn("w-full h-12 flex-none", { "cursor-pointer": !isContinueDisabled }),
|
|
7780
7856
|
variant: "default",
|
|
7781
7857
|
onClick: () => checkoutFundWalletOrder(),
|
|
7782
7858
|
children: [
|
|
@@ -7812,7 +7888,7 @@ var RAMP_PROVIDERS = {
|
|
|
7812
7888
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
7813
7889
|
|
|
7814
7890
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7815
|
-
var
|
|
7891
|
+
var import_react23 = require("react");
|
|
7816
7892
|
|
|
7817
7893
|
// src/internal/utils/debounce.ts
|
|
7818
7894
|
function debounce2(func, waitFor) {
|
|
@@ -7826,14 +7902,14 @@ function debounce2(func, waitFor) {
|
|
|
7826
7902
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7827
7903
|
var ON_INPUT_QUERY_DELAY = 2e3;
|
|
7828
7904
|
var useSelectables = () => {
|
|
7829
|
-
const [redirecting, setRedirecting] = (0,
|
|
7830
|
-
const [rampProvider, setrRampProvider] = (0,
|
|
7831
|
-
const [minAmount, setMinAmount] = (0,
|
|
7832
|
-
const inputRef = (0,
|
|
7833
|
-
const [srcQueryAmount, setSrcQueryAmount] = (0,
|
|
7834
|
-
const [srcInputAmount, setSrcInputAmount] = (0,
|
|
7835
|
-
const [paymentMode, setPaymentMode] = (0,
|
|
7836
|
-
const setQueryAmountDebounced = (0,
|
|
7905
|
+
const [redirecting, setRedirecting] = (0, import_react23.useState)(false);
|
|
7906
|
+
const [rampProvider, setrRampProvider] = (0, import_react23.useState)("binance");
|
|
7907
|
+
const [minAmount, setMinAmount] = (0, import_react23.useState)(0);
|
|
7908
|
+
const inputRef = (0, import_react23.useRef)(null);
|
|
7909
|
+
const [srcQueryAmount, setSrcQueryAmount] = (0, import_react23.useState)(0);
|
|
7910
|
+
const [srcInputAmount, setSrcInputAmount] = (0, import_react23.useState)(0);
|
|
7911
|
+
const [paymentMode, setPaymentMode] = (0, import_react23.useState)(null);
|
|
7912
|
+
const setQueryAmountDebounced = (0, import_react23.useCallback)(
|
|
7837
7913
|
debounce2((inputAmount) => {
|
|
7838
7914
|
const checkedValue = Math.max(inputAmount, minAmount);
|
|
7839
7915
|
setSrcInputAmount(checkedValue);
|
|
@@ -7841,7 +7917,7 @@ var useSelectables = () => {
|
|
|
7841
7917
|
}, ON_INPUT_QUERY_DELAY),
|
|
7842
7918
|
[minAmount]
|
|
7843
7919
|
);
|
|
7844
|
-
(0,
|
|
7920
|
+
(0, import_react23.useEffect)(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
|
|
7845
7921
|
return {
|
|
7846
7922
|
inputRef,
|
|
7847
7923
|
redirecting,
|
|
@@ -7862,6 +7938,7 @@ var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
|
7862
7938
|
function BuyMenu() {
|
|
7863
7939
|
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
7864
7940
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7941
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
7865
7942
|
const control = useSelectables();
|
|
7866
7943
|
const { rampProvider, setrRampProvider } = control;
|
|
7867
7944
|
const ProviderComponent = RAMP_PROVIDERS[rampProvider];
|
|
@@ -7870,30 +7947,40 @@ function BuyMenu() {
|
|
|
7870
7947
|
simplex: "bg-[#081f2c]",
|
|
7871
7948
|
binance: "bg-[#f3ba2f]"
|
|
7872
7949
|
};
|
|
7873
|
-
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
7874
|
-
|
|
7875
|
-
|
|
7876
|
-
|
|
7877
|
-
|
|
7878
|
-
|
|
7879
|
-
Button,
|
|
7880
|
-
{
|
|
7881
|
-
type: "button",
|
|
7882
|
-
variant: "ghost",
|
|
7883
|
-
size: "large",
|
|
7884
|
-
onClick: () => setrRampProvider(id),
|
|
7885
|
-
className: cn("w-full flex-1", { [activeServiceButtonsStyles[id]]: rampProvider === id }),
|
|
7886
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, {})
|
|
7950
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
7951
|
+
"div",
|
|
7952
|
+
{
|
|
7953
|
+
style: {
|
|
7954
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
7955
|
+
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
7887
7956
|
},
|
|
7888
|
-
|
|
7889
|
-
|
|
7890
|
-
|
|
7891
|
-
|
|
7957
|
+
className: "list-scrollbar-y w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]",
|
|
7958
|
+
children: [
|
|
7959
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
7960
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react17.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
7961
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-xl font-semibold", children: "Buy LUMIA" })
|
|
7962
|
+
] }),
|
|
7963
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: AVAILABLE_RAMP_PROVIDERS.map(({ id, icon: Icon }) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
7964
|
+
Button,
|
|
7965
|
+
{
|
|
7966
|
+
type: "button",
|
|
7967
|
+
variant: "ghost",
|
|
7968
|
+
size: "large",
|
|
7969
|
+
onClick: () => setrRampProvider(id),
|
|
7970
|
+
className: cn("w-full flex-1", { [activeServiceButtonsStyles[id]]: rampProvider === id }),
|
|
7971
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, {})
|
|
7972
|
+
},
|
|
7973
|
+
id
|
|
7974
|
+
)) }),
|
|
7975
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ProviderComponent, { control, walletAddress })
|
|
7976
|
+
]
|
|
7977
|
+
}
|
|
7978
|
+
);
|
|
7892
7979
|
}
|
|
7893
7980
|
|
|
7894
7981
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7895
7982
|
var import_lucide_react19 = require("lucide-react");
|
|
7896
|
-
var
|
|
7983
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
7897
7984
|
init_iframe_manager();
|
|
7898
7985
|
|
|
7899
7986
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -7929,30 +8016,30 @@ function KeyshareBackupMenu() {
|
|
|
7929
8016
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
7930
8017
|
const userId = session?.mpcUserId || "";
|
|
7931
8018
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
7932
|
-
(0,
|
|
8019
|
+
(0, import_react24.useEffect)(() => {
|
|
7933
8020
|
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
7934
8021
|
}, [userId, setPage]);
|
|
7935
|
-
const [backupStatus, setBackupStatus] =
|
|
8022
|
+
const [backupStatus, setBackupStatus] = import_react24.default.useState({
|
|
7936
8023
|
server: {},
|
|
7937
8024
|
cloud: {},
|
|
7938
8025
|
local: {}
|
|
7939
8026
|
});
|
|
7940
|
-
const [loading, setLoading] =
|
|
8027
|
+
const [loading, setLoading] = import_react24.default.useState({
|
|
7941
8028
|
server: false,
|
|
7942
8029
|
cloud: false,
|
|
7943
8030
|
local: false
|
|
7944
8031
|
});
|
|
7945
|
-
const [error, setError] =
|
|
7946
|
-
const [success, setSuccess] =
|
|
7947
|
-
const [showPassword, setShowPassword] =
|
|
7948
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
7949
|
-
const [customPassword, setCustomPassword] =
|
|
7950
|
-
const [cloudProviders, setCloudProviders] =
|
|
8032
|
+
const [error, setError] = import_react24.default.useState(null);
|
|
8033
|
+
const [success, setSuccess] = import_react24.default.useState(null);
|
|
8034
|
+
const [showPassword, setShowPassword] = import_react24.default.useState(false);
|
|
8035
|
+
const [useCustomPassword, setUseCustomPassword] = import_react24.default.useState(false);
|
|
8036
|
+
const [customPassword, setCustomPassword] = import_react24.default.useState("");
|
|
8037
|
+
const [cloudProviders, setCloudProviders] = import_react24.default.useState(
|
|
7951
8038
|
[]
|
|
7952
8039
|
);
|
|
7953
|
-
const [selectedCloudProvider, setSelectedCloudProvider] =
|
|
7954
|
-
const [hasKeyshareData, setHasKeyshareData] =
|
|
7955
|
-
const iframeManager =
|
|
8040
|
+
const [selectedCloudProvider, setSelectedCloudProvider] = import_react24.default.useState(null);
|
|
8041
|
+
const [hasKeyshareData, setHasKeyshareData] = import_react24.default.useState(true);
|
|
8042
|
+
const iframeManager = import_react24.default.useMemo(() => {
|
|
7956
8043
|
try {
|
|
7957
8044
|
return getIframeManager();
|
|
7958
8045
|
} catch (e) {
|
|
@@ -7960,7 +8047,7 @@ function KeyshareBackupMenu() {
|
|
|
7960
8047
|
return null;
|
|
7961
8048
|
}
|
|
7962
8049
|
}, []);
|
|
7963
|
-
(0,
|
|
8050
|
+
(0, import_react24.useEffect)(() => {
|
|
7964
8051
|
const loadCloudProviders = async () => {
|
|
7965
8052
|
try {
|
|
7966
8053
|
const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
|
|
@@ -7980,7 +8067,7 @@ function KeyshareBackupMenu() {
|
|
|
7980
8067
|
};
|
|
7981
8068
|
loadCloudProviders();
|
|
7982
8069
|
}, [selectedCloudProvider]);
|
|
7983
|
-
const refreshStatus =
|
|
8070
|
+
const refreshStatus = import_react24.default.useCallback(async () => {
|
|
7984
8071
|
if (!iframeManager) return;
|
|
7985
8072
|
try {
|
|
7986
8073
|
const status = await iframeManager.getBackupStatus(userId);
|
|
@@ -7989,7 +8076,7 @@ function KeyshareBackupMenu() {
|
|
|
7989
8076
|
console.error("[KeyshareBackup] Failed to get backup status:", error2);
|
|
7990
8077
|
}
|
|
7991
8078
|
}, [iframeManager, userId]);
|
|
7992
|
-
(0,
|
|
8079
|
+
(0, import_react24.useEffect)(() => {
|
|
7993
8080
|
refreshStatus();
|
|
7994
8081
|
}, [refreshStatus]);
|
|
7995
8082
|
const handleBackup = async (method) => {
|
|
@@ -8218,21 +8305,21 @@ function KeyshareBackupMenu() {
|
|
|
8218
8305
|
}
|
|
8219
8306
|
|
|
8220
8307
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8221
|
-
var
|
|
8308
|
+
var import_react_query10 = require("@tanstack/react-query");
|
|
8222
8309
|
var import_lucide_react22 = require("lucide-react");
|
|
8223
|
-
var
|
|
8310
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
8224
8311
|
init_vaultClient();
|
|
8225
8312
|
|
|
8226
8313
|
// src/internal/components/KeyshareRestoreMenu/NoBackupFound.tsx
|
|
8227
8314
|
var import_lucide_react20 = require("lucide-react");
|
|
8228
|
-
var
|
|
8315
|
+
var import_react25 = require("react");
|
|
8229
8316
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
8230
8317
|
var ACCOUNT_RECOVERY_TEXT = `This device doesn't have access to your wallet keyshare, and no backup was found in the Vault. To access your wallet: use the original device where you created the account, create a backup from that device first, then try restoring on this device.`;
|
|
8231
8318
|
var ACCOUNT_FILE_RECOVERY_TEXT = `Try uploading a backup file if you have one saved locally, or create a different new account`;
|
|
8232
8319
|
function NoBackupFound(props) {
|
|
8233
8320
|
const { isLoading, restoreFromFile } = props;
|
|
8234
|
-
const [restoreFile, setRestoreFile] = (0,
|
|
8235
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
8321
|
+
const [restoreFile, setRestoreFile] = (0, import_react25.useState)(null);
|
|
8322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_react25.Fragment, { children: [
|
|
8236
8323
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Highlight, { type: "error", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
8237
8324
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react20.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8238
8325
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
|
|
@@ -8273,7 +8360,7 @@ function NoBackupFound(props) {
|
|
|
8273
8360
|
|
|
8274
8361
|
// src/internal/components/KeyshareRestoreMenu/ServerBackupFound.tsx
|
|
8275
8362
|
var import_lucide_react21 = require("lucide-react");
|
|
8276
|
-
var
|
|
8363
|
+
var import_react26 = require("react");
|
|
8277
8364
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
8278
8365
|
function ServerBackupFound(props) {
|
|
8279
8366
|
const {
|
|
@@ -8289,7 +8376,7 @@ function ServerBackupFound(props) {
|
|
|
8289
8376
|
setRestorePassword,
|
|
8290
8377
|
setUseCustomPassword
|
|
8291
8378
|
} = props;
|
|
8292
|
-
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
8379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react26.Fragment, { children: [
|
|
8293
8380
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Highlight, { type: "success", className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
8294
8381
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react21.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8295
8382
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-full flex-1", children: [
|
|
@@ -8405,17 +8492,17 @@ var KeyshareRestoreMenu = () => {
|
|
|
8405
8492
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8406
8493
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8407
8494
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8408
|
-
(0,
|
|
8495
|
+
(0, import_react27.useEffect)(() => setIsDialogForced(true), []);
|
|
8409
8496
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
8410
|
-
const [error, setError] =
|
|
8411
|
-
const [success, setSuccess] =
|
|
8412
|
-
const [showPassword, setShowPassword] =
|
|
8413
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8414
|
-
const [restoreFile, setRestoreFile] =
|
|
8415
|
-
const [restorePassword, setRestorePassword] =
|
|
8416
|
-
const [hasServerBackup, setHasServerBackup] =
|
|
8417
|
-
const [checkingBackup, setCheckingBackup] =
|
|
8418
|
-
const createSessionWithKeyshare = (0,
|
|
8497
|
+
const [error, setError] = import_react27.default.useState(null);
|
|
8498
|
+
const [success, setSuccess] = import_react27.default.useState(null);
|
|
8499
|
+
const [showPassword, setShowPassword] = import_react27.default.useState(false);
|
|
8500
|
+
const [useCustomPassword, setUseCustomPassword] = import_react27.default.useState(false);
|
|
8501
|
+
const [restoreFile, setRestoreFile] = import_react27.default.useState(null);
|
|
8502
|
+
const [restorePassword, setRestorePassword] = import_react27.default.useState("");
|
|
8503
|
+
const [hasServerBackup, setHasServerBackup] = import_react27.default.useState(null);
|
|
8504
|
+
const [checkingBackup, setCheckingBackup] = import_react27.default.useState(true);
|
|
8505
|
+
const createSessionWithKeyshare = (0, import_react27.useCallback)(
|
|
8419
8506
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
8420
8507
|
try {
|
|
8421
8508
|
try {
|
|
@@ -8449,7 +8536,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8449
8536
|
},
|
|
8450
8537
|
[setStatus, callbacks, usePaymaster]
|
|
8451
8538
|
);
|
|
8452
|
-
const onRestoreSuccess = (0,
|
|
8539
|
+
const onRestoreSuccess = (0, import_react27.useCallback)(async () => {
|
|
8453
8540
|
const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
8454
8541
|
const verify = await verifyToken2();
|
|
8455
8542
|
const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
|
|
@@ -8514,7 +8601,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8514
8601
|
callbacks,
|
|
8515
8602
|
config.projectId
|
|
8516
8603
|
]);
|
|
8517
|
-
(0,
|
|
8604
|
+
(0, import_react27.useEffect)(() => {
|
|
8518
8605
|
const checkBackupAvailability = async () => {
|
|
8519
8606
|
try {
|
|
8520
8607
|
setCheckingBackup(true);
|
|
@@ -8532,7 +8619,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8532
8619
|
};
|
|
8533
8620
|
checkBackupAvailability();
|
|
8534
8621
|
}, [recoveryUserId]);
|
|
8535
|
-
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0,
|
|
8622
|
+
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0, import_react_query10.useMutation)({
|
|
8536
8623
|
mutationFn: async () => {
|
|
8537
8624
|
setError(null);
|
|
8538
8625
|
setSuccess(null);
|
|
@@ -8567,7 +8654,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8567
8654
|
setError(errorMsg);
|
|
8568
8655
|
}
|
|
8569
8656
|
});
|
|
8570
|
-
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0,
|
|
8657
|
+
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0, import_react_query10.useMutation)({
|
|
8571
8658
|
mutationFn: async () => {
|
|
8572
8659
|
if (!restoreFile) {
|
|
8573
8660
|
throw new Error("Please select a backup file");
|
|
@@ -8601,7 +8688,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8601
8688
|
setError(errorMsg);
|
|
8602
8689
|
}
|
|
8603
8690
|
});
|
|
8604
|
-
const { mutate: disconnect, isPending: isDisconnecting } = (0,
|
|
8691
|
+
const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query10.useMutation)({
|
|
8605
8692
|
mutationFn: async () => {
|
|
8606
8693
|
setError(null);
|
|
8607
8694
|
setStatus("disconnecting");
|
|
@@ -8693,14 +8780,14 @@ var import_lucide_react24 = require("lucide-react");
|
|
|
8693
8780
|
var import_lucide_react23 = require("lucide-react");
|
|
8694
8781
|
|
|
8695
8782
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8696
|
-
var
|
|
8783
|
+
var import_react28 = require("react");
|
|
8697
8784
|
|
|
8698
8785
|
// src/internal/components/KYC/api/sumsub.ts
|
|
8699
8786
|
init_httpClient();
|
|
8700
8787
|
|
|
8701
8788
|
// src/config/queryClient.ts
|
|
8702
|
-
var
|
|
8703
|
-
var queryClient = new
|
|
8789
|
+
var import_react_query11 = require("@tanstack/react-query");
|
|
8790
|
+
var queryClient = new import_react_query11.QueryClient({
|
|
8704
8791
|
defaultOptions: {
|
|
8705
8792
|
queries: {
|
|
8706
8793
|
staleTime: 1e3 * 60 * 6,
|
|
@@ -8816,13 +8903,13 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8816
8903
|
config: { current: config }
|
|
8817
8904
|
} = useLumiaPassportConfig();
|
|
8818
8905
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8819
|
-
const iframeRef = (0,
|
|
8820
|
-
const [isLoading, setIsLoading] = (0,
|
|
8821
|
-
const [error, setError] = (0,
|
|
8822
|
-
const [height, setHeight] = (0,
|
|
8823
|
-
const [status, setStatus] = (0,
|
|
8906
|
+
const iframeRef = (0, import_react28.useRef)(null);
|
|
8907
|
+
const [isLoading, setIsLoading] = (0, import_react28.useState)(true);
|
|
8908
|
+
const [error, setError] = (0, import_react28.useState)(null);
|
|
8909
|
+
const [height, setHeight] = (0, import_react28.useState)(0);
|
|
8910
|
+
const [status, setStatus] = (0, import_react28.useState)("");
|
|
8824
8911
|
const levelName = config.kyc?.options?.levelName;
|
|
8825
|
-
(0,
|
|
8912
|
+
(0, import_react28.useEffect)(() => {
|
|
8826
8913
|
setError(null);
|
|
8827
8914
|
setIsLoading(true);
|
|
8828
8915
|
setStatus("Preparing verification...");
|
|
@@ -8930,7 +9017,22 @@ function KycMenu() {
|
|
|
8930
9017
|
|
|
8931
9018
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
8932
9019
|
var import_lucide_react26 = require("lucide-react");
|
|
8933
|
-
var
|
|
9020
|
+
var import_react29 = require("react");
|
|
9021
|
+
|
|
9022
|
+
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9023
|
+
var import_react_query12 = require("@tanstack/react-query");
|
|
9024
|
+
init_common();
|
|
9025
|
+
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9026
|
+
function useProvidersList() {
|
|
9027
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9028
|
+
const page = useLayoutDataStore((st) => st.page);
|
|
9029
|
+
return (0, import_react_query12.useQuery)({
|
|
9030
|
+
retry: false,
|
|
9031
|
+
enabled: !!address && page === "manage-wallet" /* MANAGE_WALLET */,
|
|
9032
|
+
queryKey: [PROVIDERS_QUERY_KEY, address],
|
|
9033
|
+
queryFn: async () => getLinkedProviders()
|
|
9034
|
+
});
|
|
9035
|
+
}
|
|
8934
9036
|
|
|
8935
9037
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
8936
9038
|
var import_framer_motion2 = require("framer-motion");
|
|
@@ -8986,18 +9088,19 @@ function MainMenu() {
|
|
|
8986
9088
|
const address = useLumiaPassportSession((st) => st.address);
|
|
8987
9089
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8988
9090
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
8989
|
-
(
|
|
9091
|
+
useProvidersList();
|
|
9092
|
+
(0, import_react29.useEffect)(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
8990
9093
|
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
8991
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "grid grid-cols-4 gap-[var(--l-pass-gap)]", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
9094
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "w-full grid grid-cols-4 gap-0 md:gap-[var(--l-pass-gap)] py-[10px] md:py-1", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
8992
9095
|
Button,
|
|
8993
9096
|
{
|
|
8994
9097
|
size: "large",
|
|
8995
9098
|
variant: "ghost",
|
|
8996
9099
|
disabled: !address,
|
|
8997
|
-
className: "flex-col h-fit
|
|
9100
|
+
className: "flex-col w-full h-fit p-0",
|
|
8998
9101
|
onClick: () => setPage(id),
|
|
8999
9102
|
children: [
|
|
9000
|
-
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Icon, { className: "w-8 h-8" }),
|
|
9103
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Icon, { className: "w-5 h-5 md:w-8 md:h-8" }),
|
|
9001
9104
|
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-xs font-semibold", children: label })
|
|
9002
9105
|
]
|
|
9003
9106
|
},
|
|
@@ -9010,11 +9113,11 @@ function MainMenu() {
|
|
|
9010
9113
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
9011
9114
|
var import_lodash_es3 = require("lodash-es");
|
|
9012
9115
|
var import_lucide_react30 = require("lucide-react");
|
|
9013
|
-
var
|
|
9116
|
+
var import_react33 = require("react");
|
|
9014
9117
|
|
|
9015
9118
|
// src/modules/linkedProfiles.ts
|
|
9016
|
-
var
|
|
9017
|
-
var
|
|
9119
|
+
var import_react_query13 = require("@tanstack/react-query");
|
|
9120
|
+
var import_react30 = require("react");
|
|
9018
9121
|
init_auth();
|
|
9019
9122
|
init_common();
|
|
9020
9123
|
init_types();
|
|
@@ -9034,32 +9137,32 @@ async function getLinkProfilesData() {
|
|
|
9034
9137
|
return { profiles: loadedProfiles, avatar };
|
|
9035
9138
|
}
|
|
9036
9139
|
function useLumiaPassportLinkedProfiles() {
|
|
9037
|
-
const qc = (0,
|
|
9140
|
+
const qc = (0, import_react_query13.useQueryClient)();
|
|
9038
9141
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9039
9142
|
const {
|
|
9040
9143
|
data,
|
|
9041
9144
|
isFetching: isLoading,
|
|
9042
9145
|
error
|
|
9043
|
-
} = (0,
|
|
9146
|
+
} = (0, import_react_query13.useQuery)({
|
|
9044
9147
|
retry: false,
|
|
9045
9148
|
enabled: !!address,
|
|
9046
9149
|
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
9047
9150
|
queryFn: getLinkProfilesData
|
|
9048
9151
|
});
|
|
9049
9152
|
const { profiles = [], avatar = null } = data || {};
|
|
9050
|
-
const refresh = (0,
|
|
9153
|
+
const refresh = (0, import_react30.useCallback)(async () => {
|
|
9051
9154
|
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9052
9155
|
}, [qc, address]);
|
|
9053
9156
|
return { profiles, avatar, isLoading, error, refresh };
|
|
9054
9157
|
}
|
|
9055
9158
|
|
|
9056
9159
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
9057
|
-
var
|
|
9160
|
+
var import_react_query17 = require("@tanstack/react-query");
|
|
9058
9161
|
init_passkey2();
|
|
9059
9162
|
|
|
9060
9163
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9061
9164
|
init_lumiaPassport();
|
|
9062
|
-
var
|
|
9165
|
+
var import_react_query14 = require("@tanstack/react-query");
|
|
9063
9166
|
var import_lucide_react27 = require("lucide-react");
|
|
9064
9167
|
init_projectId();
|
|
9065
9168
|
|
|
@@ -9102,7 +9205,7 @@ function EmailForm() {
|
|
|
9102
9205
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
9103
9206
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9104
9207
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
9105
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
9208
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query14.useMutation)({
|
|
9106
9209
|
mutationFn: async () => {
|
|
9107
9210
|
if (!email) return;
|
|
9108
9211
|
setIsLoading(true);
|
|
@@ -9178,27 +9281,12 @@ function EmailForm() {
|
|
|
9178
9281
|
] });
|
|
9179
9282
|
}
|
|
9180
9283
|
|
|
9181
|
-
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9182
|
-
var import_react_query13 = require("@tanstack/react-query");
|
|
9183
|
-
init_common();
|
|
9184
|
-
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9185
|
-
function useProvidersList() {
|
|
9186
|
-
const address = useLumiaPassportSession((st) => st.address);
|
|
9187
|
-
const page = useLayoutDataStore((st) => st.page);
|
|
9188
|
-
return (0, import_react_query13.useQuery)({
|
|
9189
|
-
retry: false,
|
|
9190
|
-
enabled: !!address && page === "manage-wallet" /* MANAGE_WALLET */,
|
|
9191
|
-
queryKey: [PROVIDERS_QUERY_KEY, address],
|
|
9192
|
-
queryFn: async () => getLinkedProviders()
|
|
9193
|
-
});
|
|
9194
|
-
}
|
|
9195
|
-
|
|
9196
9284
|
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9197
|
-
var
|
|
9285
|
+
var import_react_query15 = require("@tanstack/react-query");
|
|
9198
9286
|
init_email();
|
|
9199
9287
|
function useSendVerificationCode() {
|
|
9200
9288
|
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9201
|
-
return (0,
|
|
9289
|
+
return (0, import_react_query15.useMutation)({
|
|
9202
9290
|
mutationFn: async (email) => {
|
|
9203
9291
|
if (!email) {
|
|
9204
9292
|
throw new Error("Email is required");
|
|
@@ -9221,11 +9309,11 @@ function useSendVerificationCode() {
|
|
|
9221
9309
|
}
|
|
9222
9310
|
|
|
9223
9311
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9224
|
-
var
|
|
9312
|
+
var import_react_query16 = require("@tanstack/react-query");
|
|
9225
9313
|
init_email();
|
|
9226
9314
|
function useVerifyCode() {
|
|
9227
9315
|
const { callbacks } = useLumiaPassportConfig();
|
|
9228
|
-
const qc = (0,
|
|
9316
|
+
const qc = (0, import_react_query16.useQueryClient)();
|
|
9229
9317
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9230
9318
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9231
9319
|
const {
|
|
@@ -9239,7 +9327,7 @@ function useVerifyCode() {
|
|
|
9239
9327
|
setVerificationError,
|
|
9240
9328
|
setEmailCodeSentError
|
|
9241
9329
|
} = useManageWalletStore();
|
|
9242
|
-
return (0,
|
|
9330
|
+
return (0, import_react_query16.useMutation)({
|
|
9243
9331
|
mutationFn: async (codeToVerify) => {
|
|
9244
9332
|
const code = codeToVerify ?? emailCode;
|
|
9245
9333
|
if (!code) {
|
|
@@ -9289,7 +9377,7 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9289
9377
|
return msg;
|
|
9290
9378
|
}
|
|
9291
9379
|
function AddProvider() {
|
|
9292
|
-
const qc = (0,
|
|
9380
|
+
const qc = (0, import_react_query17.useQueryClient)();
|
|
9293
9381
|
const { callbacks } = useLumiaPassportConfig();
|
|
9294
9382
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9295
9383
|
const {
|
|
@@ -9449,11 +9537,11 @@ function EmailNotConnectedWarning() {
|
|
|
9449
9537
|
}
|
|
9450
9538
|
|
|
9451
9539
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9452
|
-
var
|
|
9453
|
-
var
|
|
9540
|
+
var import_react_query18 = require("@tanstack/react-query");
|
|
9541
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
9454
9542
|
init_auth();
|
|
9455
9543
|
function useLinkSocial() {
|
|
9456
|
-
const qc = (0,
|
|
9544
|
+
const qc = (0, import_react_query18.useQueryClient)();
|
|
9457
9545
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9458
9546
|
const {
|
|
9459
9547
|
config: { current: config },
|
|
@@ -9461,7 +9549,7 @@ function useLinkSocial() {
|
|
|
9461
9549
|
} = useLumiaPassportConfig();
|
|
9462
9550
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9463
9551
|
const { providerType, linkIsLoading, isWalletLinking, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9464
|
-
const handleLinkSocialProvider =
|
|
9552
|
+
const handleLinkSocialProvider = import_react31.default.useCallback(
|
|
9465
9553
|
async (providerIdRaw) => {
|
|
9466
9554
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9467
9555
|
const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
|
|
@@ -9513,8 +9601,8 @@ function useLinkSocial() {
|
|
|
9513
9601
|
},
|
|
9514
9602
|
[config.social?.providers, callbacks]
|
|
9515
9603
|
);
|
|
9516
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9517
|
-
(0,
|
|
9604
|
+
const [socialLinkStarted, setSocialLinkStarted] = import_react31.default.useState(false);
|
|
9605
|
+
(0, import_react31.useEffect)(() => {
|
|
9518
9606
|
const key = providerType?.toLowerCase();
|
|
9519
9607
|
console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
|
|
9520
9608
|
if (isWalletLinking) {
|
|
@@ -9534,19 +9622,19 @@ function useLinkSocial() {
|
|
|
9534
9622
|
}
|
|
9535
9623
|
|
|
9536
9624
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9537
|
-
var
|
|
9538
|
-
var
|
|
9625
|
+
var import_react_query19 = require("@tanstack/react-query");
|
|
9626
|
+
var import_react32 = require("react");
|
|
9539
9627
|
init_telegram2();
|
|
9540
9628
|
function useLinkTelegram() {
|
|
9541
9629
|
const {
|
|
9542
9630
|
config: { current: config },
|
|
9543
9631
|
callbacks
|
|
9544
9632
|
} = useLumiaPassportConfig();
|
|
9545
|
-
const qc = (0,
|
|
9633
|
+
const qc = (0, import_react_query19.useQueryClient)();
|
|
9546
9634
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9547
9635
|
const { providerType, linkIsLoading, isWalletLinking, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9548
9636
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9549
|
-
const handleLinkTelegram = (0,
|
|
9637
|
+
const handleLinkTelegram = (0, import_react32.useCallback)(async () => {
|
|
9550
9638
|
try {
|
|
9551
9639
|
setLinkIsLoading(true);
|
|
9552
9640
|
setLinkError("");
|
|
@@ -9588,8 +9676,8 @@ function useLinkTelegram() {
|
|
|
9588
9676
|
setLinkIsLoading(false);
|
|
9589
9677
|
}
|
|
9590
9678
|
}, [config.social?.providers, callbacks]);
|
|
9591
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = (0,
|
|
9592
|
-
(0,
|
|
9679
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react32.useState)(false);
|
|
9680
|
+
(0, import_react32.useEffect)(() => {
|
|
9593
9681
|
console.log("[useLinkTelegram] Effect triggered:", { providerType, linkIsLoading, telegramLinkStarted, isWalletLinking });
|
|
9594
9682
|
if (isWalletLinking) {
|
|
9595
9683
|
console.log("[useLinkTelegram] Skipping - wallet linking in progress");
|
|
@@ -9601,7 +9689,7 @@ function useLinkTelegram() {
|
|
|
9601
9689
|
handleLinkTelegram();
|
|
9602
9690
|
}
|
|
9603
9691
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
|
|
9604
|
-
(0,
|
|
9692
|
+
(0, import_react32.useEffect)(() => {
|
|
9605
9693
|
if (providerType !== "telegram") {
|
|
9606
9694
|
setTelegramLinkStarted(false);
|
|
9607
9695
|
}
|
|
@@ -9691,6 +9779,7 @@ function ManageWalletMenu() {
|
|
|
9691
9779
|
config: { current: config }
|
|
9692
9780
|
} = useLumiaPassportConfig();
|
|
9693
9781
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9782
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9694
9783
|
const {
|
|
9695
9784
|
providerType,
|
|
9696
9785
|
isWalletLinking,
|
|
@@ -9709,7 +9798,7 @@ function ManageWalletMenu() {
|
|
|
9709
9798
|
} = useManageWalletStore();
|
|
9710
9799
|
const configuredProviders = getConfiguredProviders(config);
|
|
9711
9800
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9712
|
-
const renderProviders = (0,
|
|
9801
|
+
const renderProviders = (0, import_react33.useMemo)(() => {
|
|
9713
9802
|
const usedProviders = (0, import_lodash_es3.fromPairs)(providers.map((p) => [p.provider, true]));
|
|
9714
9803
|
const used = [];
|
|
9715
9804
|
const unused = [];
|
|
@@ -9770,60 +9859,70 @@ function ManageWalletMenu() {
|
|
|
9770
9859
|
const showCurrentProviders = !isProvidersLoading && !providersError && (providerType !== "email" && providerType !== "passkey" || providerType === null);
|
|
9771
9860
|
const showExtraProvidersUi = !isProvidersLoading && !providersError && (providerType === "email" || providerType === "passkey");
|
|
9772
9861
|
const combinedError = emailCodeSentError || linkError || verificationError || null;
|
|
9773
|
-
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
{
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
|
|
9783
|
-
|
|
9784
|
-
|
|
9785
|
-
|
|
9786
|
-
|
|
9787
|
-
|
|
9788
|
-
|
|
9789
|
-
|
|
9790
|
-
|
|
9791
|
-
|
|
9792
|
-
|
|
9793
|
-
|
|
9794
|
-
|
|
9795
|
-
|
|
9796
|
-
|
|
9797
|
-
|
|
9798
|
-
|
|
9799
|
-
|
|
9800
|
-
|
|
9801
|
-
|
|
9802
|
-
|
|
9803
|
-
|
|
9804
|
-
|
|
9805
|
-
|
|
9806
|
-
|
|
9807
|
-
|
|
9808
|
-
|
|
9809
|
-
|
|
9810
|
-
|
|
9811
|
-
}
|
|
9812
|
-
|
|
9813
|
-
|
|
9814
|
-
|
|
9862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
9863
|
+
"div",
|
|
9864
|
+
{
|
|
9865
|
+
style: {
|
|
9866
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
9867
|
+
"--l-pass-list-scrollbar-pd-r": "calc(var(--l-pass-pd) - 4px)"
|
|
9868
|
+
},
|
|
9869
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
9870
|
+
children: [
|
|
9871
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9872
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
9873
|
+
Button,
|
|
9874
|
+
{
|
|
9875
|
+
variant: "ghost",
|
|
9876
|
+
size: "icon",
|
|
9877
|
+
title: "Back",
|
|
9878
|
+
onClick: () => {
|
|
9879
|
+
if (providerType === "email") {
|
|
9880
|
+
setEmail("");
|
|
9881
|
+
setEmailCode("");
|
|
9882
|
+
setEmailStep("input");
|
|
9883
|
+
setEmailCodeSentError("");
|
|
9884
|
+
setEmailCodeExpiresIn(0);
|
|
9885
|
+
setVerificationError("");
|
|
9886
|
+
}
|
|
9887
|
+
setLinkError("");
|
|
9888
|
+
if (!providerType) setPage("settings" /* SETTINGS */);
|
|
9889
|
+
setProviderType(null);
|
|
9890
|
+
},
|
|
9891
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react30.ArrowLeft, { className: "h-4 w-4" })
|
|
9892
|
+
}
|
|
9893
|
+
),
|
|
9894
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "text-xl font-semibold", children: "Profiles" })
|
|
9895
|
+
] }),
|
|
9896
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9897
|
+
providersError && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(Highlight, { type: "error", className: "flex items-start gap-[var(--l-pass-gap)] break-words whitespace-pre-wrap", children: [
|
|
9898
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react30.AlertTriangle, { className: "w-4 h-4 shrink-0" }),
|
|
9899
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "block", children: providersError.message })
|
|
9900
|
+
] }),
|
|
9901
|
+
isProvidersLoading && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react30.Loader, { className: "w-5 h-5 animate-spin" }) }),
|
|
9902
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(EmailNotConnectedWarning, {}),
|
|
9903
|
+
showCurrentProviders && renderProviders.map((node) => node),
|
|
9904
|
+
showExtraProvidersUi && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(AddProvider, {}),
|
|
9905
|
+
combinedError && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Highlight, { type: "error", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: combinedError }) })
|
|
9906
|
+
] })
|
|
9907
|
+
]
|
|
9908
|
+
}
|
|
9909
|
+
);
|
|
9910
|
+
}
|
|
9911
|
+
|
|
9912
|
+
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9913
|
+
var import_react_query20 = require("@tanstack/react-query");
|
|
9815
9914
|
var import_lucide_react31 = require("lucide-react");
|
|
9816
|
-
var
|
|
9915
|
+
var import_react34 = require("react");
|
|
9817
9916
|
init_auth();
|
|
9818
9917
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
9819
9918
|
function UnlinkProviderMenu() {
|
|
9820
|
-
const qc = (0,
|
|
9919
|
+
const qc = (0, import_react_query20.useQueryClient)();
|
|
9821
9920
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9822
9921
|
const { callbacks } = useLumiaPassportConfig();
|
|
9823
9922
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9824
9923
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9825
|
-
const [confirmInput, setConfirmInput] = (0,
|
|
9826
|
-
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0,
|
|
9924
|
+
const [confirmInput, setConfirmInput] = (0, import_react34.useState)("");
|
|
9925
|
+
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query20.useMutation)({
|
|
9827
9926
|
mutationFn: async () => {
|
|
9828
9927
|
if (!confirmUnlink) {
|
|
9829
9928
|
throw new Error("No provider to unlink");
|
|
@@ -9896,12 +9995,12 @@ function UnlinkProviderMenu() {
|
|
|
9896
9995
|
}
|
|
9897
9996
|
|
|
9898
9997
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9899
|
-
var
|
|
9998
|
+
var import_react_query22 = require("@tanstack/react-query");
|
|
9900
9999
|
var import_lucide_react33 = require("lucide-react");
|
|
9901
|
-
var
|
|
10000
|
+
var import_react36 = require("react");
|
|
9902
10001
|
|
|
9903
10002
|
// src/modules/assets.ts
|
|
9904
|
-
var
|
|
10003
|
+
var import_react35 = __toESM(require("react"), 1);
|
|
9905
10004
|
var import_wagmi2 = require("wagmi");
|
|
9906
10005
|
var import_viem4 = require("viem");
|
|
9907
10006
|
init_base();
|
|
@@ -10048,7 +10147,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10048
10147
|
}
|
|
10049
10148
|
});
|
|
10050
10149
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
10051
|
-
const formattedBalance =
|
|
10150
|
+
const formattedBalance = import_react35.default.useMemo(() => {
|
|
10052
10151
|
if (!balance || !tokenInfo) return "0";
|
|
10053
10152
|
return (0, import_viem4.formatUnits)(balance, tokenInfo.decimals);
|
|
10054
10153
|
}, [balance, tokenInfo]);
|
|
@@ -10062,7 +10161,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10062
10161
|
}
|
|
10063
10162
|
|
|
10064
10163
|
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
10065
|
-
var
|
|
10164
|
+
var import_react_query21 = require("@tanstack/react-query");
|
|
10066
10165
|
var import_lucide_react32 = require("lucide-react");
|
|
10067
10166
|
init_base();
|
|
10068
10167
|
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
@@ -10093,10 +10192,10 @@ var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
|
10093
10192
|
function PortfolioItem(props) {
|
|
10094
10193
|
const { address, asset, isProjectAsset } = props;
|
|
10095
10194
|
const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
|
|
10096
|
-
const qc = (0,
|
|
10195
|
+
const qc = (0, import_react_query21.useQueryClient)();
|
|
10097
10196
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
10098
10197
|
const projectAssetBalance = !!balanceQueryKey ? qc.getQueryData(balanceQueryKey) : null;
|
|
10099
|
-
const { data: assetRate, isLoading: isRateLoading } = (0,
|
|
10198
|
+
const { data: assetRate, isLoading: isRateLoading } = (0, import_react_query21.useQuery)({
|
|
10100
10199
|
retry: false,
|
|
10101
10200
|
staleTime: 4 * 60 * 1e3,
|
|
10102
10201
|
enabled: !!address && !!asset.symbol && !isProjectAsset,
|
|
@@ -10155,73 +10254,50 @@ function PortfolioItem(props) {
|
|
|
10155
10254
|
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
10156
10255
|
function PortfolioMenu() {
|
|
10157
10256
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10158
|
-
const qc = (0,
|
|
10257
|
+
const qc = (0, import_react_query22.useQueryClient)();
|
|
10159
10258
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10160
10259
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10161
|
-
const assetsContainerListRef = (0, import_react35.useRef)(null);
|
|
10162
|
-
const assetsListRef = (0, import_react35.useRef)(null);
|
|
10163
10260
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10164
10261
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10165
|
-
const refreshAllAssetsBalances = (0,
|
|
10262
|
+
const refreshAllAssetsBalances = (0, import_react36.useCallback)(() => {
|
|
10166
10263
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10167
10264
|
refreshBalances();
|
|
10168
10265
|
}, [qc, projectAssets, refreshBalances]);
|
|
10169
|
-
(0,
|
|
10170
|
-
|
|
10171
|
-
|
|
10172
|
-
|
|
10173
|
-
|
|
10174
|
-
|
|
10175
|
-
|
|
10176
|
-
|
|
10177
|
-
|
|
10178
|
-
|
|
10179
|
-
|
|
10180
|
-
|
|
10181
|
-
|
|
10182
|
-
|
|
10183
|
-
|
|
10184
|
-
|
|
10185
|
-
|
|
10186
|
-
|
|
10187
|
-
|
|
10188
|
-
|
|
10189
|
-
|
|
10190
|
-
|
|
10191
|
-
|
|
10192
|
-
|
|
10193
|
-
|
|
10194
|
-
|
|
10195
|
-
|
|
10196
|
-
|
|
10197
|
-
|
|
10198
|
-
|
|
10199
|
-
|
|
10200
|
-
|
|
10201
|
-
|
|
10202
|
-
|
|
10203
|
-
|
|
10204
|
-
] }),
|
|
10205
|
-
!isLoading && assets.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
10206
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.Gem, { className: "w-12 h-12 mb-2" }),
|
|
10207
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "No assets found" })
|
|
10208
|
-
] }),
|
|
10209
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10210
|
-
"div",
|
|
10211
|
-
{
|
|
10212
|
-
ref: assetsContainerListRef,
|
|
10213
|
-
style: { borderTop: "1px solid var(--l-pass-list-bd)", borderBottom: "1px solid var(--l-pass-list-bd)" },
|
|
10214
|
-
className: "list-scrollbar-y relative",
|
|
10215
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { ref: assetsListRef, className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: [
|
|
10216
|
-
projectAssets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10217
|
-
PortfolioItem,
|
|
10218
|
-
{
|
|
10219
|
-
isProjectAsset: true,
|
|
10220
|
-
address,
|
|
10221
|
-
asset
|
|
10222
|
-
},
|
|
10223
|
-
`project-${asset.symbol}-${index}`
|
|
10224
|
-
)),
|
|
10266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
10267
|
+
"div",
|
|
10268
|
+
{
|
|
10269
|
+
style: {
|
|
10270
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10271
|
+
"--l-pass-list-scrollbar-pd-r": "calc(var(--l-pass-pd) - 4px)"
|
|
10272
|
+
},
|
|
10273
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
10274
|
+
children: [
|
|
10275
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10276
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10277
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
10278
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10279
|
+
Button,
|
|
10280
|
+
{
|
|
10281
|
+
title: "Refresh balances",
|
|
10282
|
+
variant: "ghost",
|
|
10283
|
+
size: "icon",
|
|
10284
|
+
onClick: refreshAllAssetsBalances,
|
|
10285
|
+
disabled: isLoading,
|
|
10286
|
+
children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.RefreshCw, { className: "h-4 w-4" })
|
|
10287
|
+
}
|
|
10288
|
+
)
|
|
10289
|
+
] }),
|
|
10290
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10291
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
10292
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.Loader, { className: "h-5 w-5 animate-spin" }),
|
|
10293
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
10294
|
+
] }),
|
|
10295
|
+
!isLoading && assets.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
10296
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.Gem, { className: "w-12 h-12 mb-2" }),
|
|
10297
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "No assets found" })
|
|
10298
|
+
] }),
|
|
10299
|
+
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: [
|
|
10300
|
+
projectAssets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PortfolioItem, { isProjectAsset: true, address, asset }, `project-${asset.symbol}-${index}`)),
|
|
10225
10301
|
assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10226
10302
|
PortfolioItem,
|
|
10227
10303
|
{
|
|
@@ -10231,277 +10307,298 @@ function PortfolioMenu() {
|
|
|
10231
10307
|
`${asset.type}-${asset.address || "native"}-${index}`
|
|
10232
10308
|
))
|
|
10233
10309
|
] })
|
|
10234
|
-
}
|
|
10235
|
-
|
|
10236
|
-
|
|
10237
|
-
|
|
10310
|
+
] })
|
|
10311
|
+
]
|
|
10312
|
+
}
|
|
10313
|
+
);
|
|
10238
10314
|
}
|
|
10239
10315
|
|
|
10240
10316
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10317
|
+
var import_react_query23 = require("@tanstack/react-query");
|
|
10241
10318
|
var import_lucide_react34 = require("lucide-react");
|
|
10242
|
-
var
|
|
10319
|
+
var import_react37 = require("react");
|
|
10243
10320
|
init_auth();
|
|
10244
10321
|
init_keyshare();
|
|
10322
|
+
init_iframe_manager();
|
|
10245
10323
|
init_vaultClient();
|
|
10246
10324
|
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
10325
|
+
var KEYSHARE_RECOVERY_STATS_QUERY = "keyshare-recovery-stats-query";
|
|
10326
|
+
function parseOS(ua) {
|
|
10327
|
+
if (!ua) return null;
|
|
10328
|
+
if (ua.includes("Mac OS X")) return "macOS";
|
|
10329
|
+
if (ua.includes("Windows")) return "Windows";
|
|
10330
|
+
if (ua.includes("Android")) return "Android";
|
|
10331
|
+
if (ua.includes("Linux")) return "Linux";
|
|
10332
|
+
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
10333
|
+
return null;
|
|
10334
|
+
}
|
|
10247
10335
|
function SecurityMenu() {
|
|
10248
|
-
const
|
|
10336
|
+
const qc = (0, import_react_query23.useQueryClient)();
|
|
10337
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10249
10338
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10250
|
-
const open = page === "security";
|
|
10251
10339
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
10340
|
+
(0, import_react37.useEffect)(() => {
|
|
10341
|
+
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
10342
|
+
}, [userId, setPage]);
|
|
10343
|
+
const [localInfo, setLocalInfo] = (0, import_react37.useState)(null);
|
|
10344
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = (0, import_react37.useState)(null);
|
|
10345
|
+
const [recoveryBrowser, setRecoveryBrowser] = (0, import_react37.useState)(null);
|
|
10346
|
+
const [recoveryUa, setRecoveryUa] = (0, import_react37.useState)(null);
|
|
10347
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = (0, import_react37.useState)(null);
|
|
10348
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = (0, import_react37.useState)(null);
|
|
10349
|
+
const [recoveryCountry, setRecoveryCountry] = (0, import_react37.useState)(null);
|
|
10350
|
+
const [hasServerBackup, setHasServerBackup] = (0, import_react37.useState)(false);
|
|
10351
|
+
const [trustedApps, setTrustedApps] = (0, import_react37.useState)([]);
|
|
10352
|
+
const [appToRemove, setAppToRemove] = (0, import_react37.useState)(null);
|
|
10353
|
+
const {
|
|
10354
|
+
data: recoveryData,
|
|
10355
|
+
isFetching: isRecoveryRefreshing
|
|
10356
|
+
// error: recoveryError
|
|
10357
|
+
} = (0, import_react_query23.useQuery)({
|
|
10358
|
+
enabled: !!userId,
|
|
10359
|
+
queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
|
|
10360
|
+
queryFn: async () => {
|
|
10361
|
+
const iframeManager = getIframeManager();
|
|
10362
|
+
if (!iframeManager) {
|
|
10363
|
+
throw new Error("Iframe manager not available");
|
|
10364
|
+
}
|
|
10365
|
+
const trustedApps2 = await iframeManager.getTrustedApps(userId);
|
|
10366
|
+
const keyshareInfo = await getKeyshareInfo(userId);
|
|
10367
|
+
const shareRecoveryStats = await getShareRecoveryStats();
|
|
10368
|
+
return { trustedApps: trustedApps2, keyshareInfo, shareRecoveryStats };
|
|
10369
|
+
}
|
|
10370
|
+
});
|
|
10371
|
+
(0, import_react37.useEffect)(() => {
|
|
10372
|
+
if (!recoveryData) return;
|
|
10373
|
+
const { trustedApps: trustedApps2, keyshareInfo, shareRecoveryStats } = recoveryData;
|
|
10374
|
+
setLocalInfo(keyshareInfo);
|
|
10375
|
+
setTrustedApps(trustedApps2);
|
|
10376
|
+
const hasRecoveryData = shareRecoveryStats && (shareRecoveryStats.created || shareRecoveryStats.devices && shareRecoveryStats.devices.length > 0);
|
|
10377
|
+
const created = shareRecoveryStats?.created;
|
|
10378
|
+
setHasServerBackup(!!hasRecoveryData);
|
|
10379
|
+
setRecoveryCreatedAt(created?.at || null);
|
|
10380
|
+
setRecoveryBrowser(created?.browser || null);
|
|
10381
|
+
setRecoveryUa(created?.ua || null);
|
|
10382
|
+
setRecoveryDeviceId(created?.deviceId || null);
|
|
10383
|
+
setRecoveryDeviceName(created?.deviceName || null);
|
|
10384
|
+
setRecoveryCountry(created?.country || null);
|
|
10385
|
+
}, [recoveryData]);
|
|
10252
10386
|
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
10253
10387
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10254
|
-
|
|
10255
|
-
|
|
10256
|
-
|
|
10257
|
-
|
|
10258
|
-
|
|
10259
|
-
|
|
10260
|
-
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
|
|
10267
|
-
|
|
10268
|
-
|
|
10269
|
-
|
|
10270
|
-
|
|
10271
|
-
|
|
10272
|
-
|
|
10273
|
-
|
|
10274
|
-
|
|
10275
|
-
|
|
10276
|
-
|
|
10277
|
-
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
10278
|
-
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
10279
|
-
setTrustedApps(apps);
|
|
10280
|
-
} catch (error) {
|
|
10281
|
-
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
10282
|
-
setTrustedApps([]);
|
|
10283
|
-
}
|
|
10284
|
-
const stats = await getShareRecoveryStats();
|
|
10285
|
-
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
10286
|
-
setHasServerBackup(!!hasRecoveryData);
|
|
10287
|
-
const created = stats?.created;
|
|
10288
|
-
setRecoveryCreatedAt(created?.at || null);
|
|
10289
|
-
setRecoveryBrowser(created?.browser || null);
|
|
10290
|
-
setRecoveryUa(created?.ua || null);
|
|
10291
|
-
setRecoveryDeviceId(created?.deviceId || null);
|
|
10292
|
-
setRecoveryDeviceName(created?.deviceName || null);
|
|
10293
|
-
setRecoveryCountry(created?.country || null);
|
|
10294
|
-
} finally {
|
|
10295
|
-
setIsRefreshing(false);
|
|
10296
|
-
}
|
|
10297
|
-
}, [userId]);
|
|
10298
|
-
(0, import_react36.useEffect)(() => {
|
|
10299
|
-
if (open) fetchRecovery();
|
|
10300
|
-
}, [open, fetchRecovery]);
|
|
10301
|
-
const parseOS = (ua) => {
|
|
10302
|
-
if (!ua) return null;
|
|
10303
|
-
if (ua.includes("Mac OS X")) return "macOS";
|
|
10304
|
-
if (ua.includes("Windows")) return "Windows";
|
|
10305
|
-
if (ua.includes("Android")) return "Android";
|
|
10306
|
-
if (ua.includes("Linux")) return "Linux";
|
|
10307
|
-
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
10308
|
-
return null;
|
|
10309
|
-
};
|
|
10310
|
-
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10311
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
10312
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10313
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
10314
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
10315
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { variant: "ghost", size: "icon", title: "Refresh", onClick: fetchRecovery, children: isRefreshing ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.RefreshCw, { className: "h-4 w-4" }) })
|
|
10316
|
-
] })
|
|
10317
|
-
] }) }),
|
|
10318
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
10319
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10320
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10321
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Cloud, { className: "h-4 w-4" }),
|
|
10322
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Server" })
|
|
10323
|
-
] }),
|
|
10324
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10325
|
-
"span",
|
|
10326
|
-
{
|
|
10327
|
-
className: cn(
|
|
10328
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10329
|
-
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10330
|
-
),
|
|
10331
|
-
children: [
|
|
10332
|
-
serverHasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
10333
|
-
serverHasKeyshare ? "Ready" : "Missing"
|
|
10334
|
-
]
|
|
10335
|
-
}
|
|
10336
|
-
)
|
|
10337
|
-
] }),
|
|
10338
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10339
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10340
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Laptop, { className: "h-4 w-4" }),
|
|
10341
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Local" })
|
|
10342
|
-
] }),
|
|
10343
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10344
|
-
"span",
|
|
10345
|
-
{
|
|
10346
|
-
className: cn(
|
|
10347
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10348
|
-
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10349
|
-
),
|
|
10350
|
-
children: [
|
|
10351
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
10352
|
-
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
10353
|
-
]
|
|
10354
|
-
}
|
|
10355
|
-
)
|
|
10356
|
-
] }),
|
|
10357
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10358
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10359
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Shield, { className: "h-4 w-4" }),
|
|
10360
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Vault" })
|
|
10361
|
-
] }),
|
|
10362
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10363
|
-
"span",
|
|
10364
|
-
{
|
|
10365
|
-
className: cn(
|
|
10366
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10367
|
-
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10368
|
-
),
|
|
10369
|
-
children: [
|
|
10370
|
-
hasServerBackup ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
10371
|
-
hasServerBackup ? "Ready" : "None"
|
|
10372
|
-
]
|
|
10373
|
-
}
|
|
10374
|
-
)
|
|
10375
|
-
] })
|
|
10376
|
-
] }),
|
|
10377
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
10378
|
-
localInfo?.hasKeyshare && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10379
|
-
localInfo.ownerAddress && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10380
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Owner: " }),
|
|
10381
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
10382
|
-
] }),
|
|
10383
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10384
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Size: " }),
|
|
10385
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
10386
|
-
] }),
|
|
10387
|
-
localInfo.sessionId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10388
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Session: " }),
|
|
10389
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
10390
|
-
] })
|
|
10391
|
-
] }),
|
|
10392
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10393
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10394
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Server, { className: "h-2.5 w-2.5" }),
|
|
10395
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10396
|
-
"Server: ",
|
|
10397
|
-
new Date(backup.server.lastBackup).toLocaleString()
|
|
10398
|
-
] })
|
|
10399
|
-
] }),
|
|
10400
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10401
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Server, { className: "h-2.5 w-2.5" }),
|
|
10402
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10403
|
-
"Server: ",
|
|
10404
|
-
new Date(recoveryCreatedAt).toLocaleString()
|
|
10388
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10389
|
+
"div",
|
|
10390
|
+
{
|
|
10391
|
+
style: {
|
|
10392
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10393
|
+
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
10394
|
+
},
|
|
10395
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
10396
|
+
children: [
|
|
10397
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10398
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10399
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)] font-semibold", children: [
|
|
10400
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
10401
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
10402
|
+
Button,
|
|
10403
|
+
{
|
|
10404
|
+
variant: "ghost",
|
|
10405
|
+
size: "icon",
|
|
10406
|
+
title: "Refresh",
|
|
10407
|
+
onClick: () => qc.invalidateQueries({ queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId] }),
|
|
10408
|
+
children: isRecoveryRefreshing ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.RefreshCw, { className: "h-4 w-4" })
|
|
10409
|
+
}
|
|
10410
|
+
)
|
|
10405
10411
|
] })
|
|
10406
10412
|
] }),
|
|
10407
|
-
|
|
10408
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.
|
|
10409
|
-
|
|
10410
|
-
|
|
10411
|
-
|
|
10413
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "grid grid-cols-3 gap-[var(--l-pass-gap)]", children: [
|
|
10414
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10415
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-[var(--l-pass-gap)]", children: [
|
|
10416
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Cloud, { className: "h-4 w-4" }),
|
|
10417
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xs font-medium", children: "Server" })
|
|
10418
|
+
] }),
|
|
10419
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10420
|
+
"span",
|
|
10421
|
+
{
|
|
10422
|
+
className: cn(
|
|
10423
|
+
"inline-flex gap-[var(--l-pass-gap)] items-center text-xs px-2 py-1 rounded-full text-black leading-4",
|
|
10424
|
+
serverHasKeyshare ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-warning)]"
|
|
10425
|
+
),
|
|
10426
|
+
children: [
|
|
10427
|
+
serverHasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.AlertTriangle, { className: "h-4 w-4" }),
|
|
10428
|
+
serverHasKeyshare ? "Ready" : "Missing"
|
|
10429
|
+
]
|
|
10430
|
+
}
|
|
10431
|
+
)
|
|
10432
|
+
] }),
|
|
10433
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10434
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-[var(--l-pass-gap)]", children: [
|
|
10435
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Laptop, { className: "h-4 w-4" }),
|
|
10436
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xs font-medium", children: "Local" })
|
|
10437
|
+
] }),
|
|
10438
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10439
|
+
"span",
|
|
10440
|
+
{
|
|
10441
|
+
className: cn(
|
|
10442
|
+
"inline-flex gap-[var(--l-pass-gap)] items-center text-xs px-2 py-1 rounded-full text-black leading-4",
|
|
10443
|
+
localInfo?.hasKeyshare ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-warning)]"
|
|
10444
|
+
),
|
|
10445
|
+
children: [
|
|
10446
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.AlertTriangle, { className: "h-4 w-4" }),
|
|
10447
|
+
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
10448
|
+
]
|
|
10449
|
+
}
|
|
10450
|
+
)
|
|
10451
|
+
] }),
|
|
10452
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10453
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-[var(--l-pass-gap)]", children: [
|
|
10454
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Shield, { className: "h-4 w-4" }),
|
|
10455
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xs font-medium", children: "Vault" })
|
|
10456
|
+
] }),
|
|
10457
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10458
|
+
"span",
|
|
10459
|
+
{
|
|
10460
|
+
className: cn(
|
|
10461
|
+
"inline-flex gap-[var(--l-pass-gap)] items-center text-xs px-2 py-1 rounded-full text-black leading-4",
|
|
10462
|
+
hasServerBackup ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-warning)]"
|
|
10463
|
+
),
|
|
10464
|
+
children: [
|
|
10465
|
+
hasServerBackup ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.AlertTriangle, { className: "h-4 w-4" }),
|
|
10466
|
+
hasServerBackup ? "Ready" : "None"
|
|
10467
|
+
]
|
|
10468
|
+
}
|
|
10469
|
+
)
|
|
10412
10470
|
] })
|
|
10413
10471
|
] }),
|
|
10414
|
-
|
|
10415
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.
|
|
10416
|
-
|
|
10417
|
-
|
|
10418
|
-
|
|
10472
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
10473
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10474
|
+
localInfo.ownerAddress && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "text-[var(--l-pass-fg)] py-1", children: [
|
|
10475
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Owner: " }),
|
|
10476
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
10477
|
+
] }),
|
|
10478
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10479
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Size: " }),
|
|
10480
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
10481
|
+
] }),
|
|
10482
|
+
localInfo.sessionId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10483
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Session: " }),
|
|
10484
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
10485
|
+
] })
|
|
10486
|
+
] }),
|
|
10487
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10488
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10489
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Server, { className: "h-2.5 w-2.5" }),
|
|
10490
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10491
|
+
"Server: ",
|
|
10492
|
+
new Date(backup.server.lastBackup).toLocaleString()
|
|
10493
|
+
] })
|
|
10494
|
+
] }),
|
|
10495
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10496
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Server, { className: "h-2.5 w-2.5" }),
|
|
10497
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10498
|
+
"Server: ",
|
|
10499
|
+
new Date(recoveryCreatedAt).toLocaleString()
|
|
10500
|
+
] })
|
|
10501
|
+
] }),
|
|
10502
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10503
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Cloud, { className: "h-2.5 w-2.5" }),
|
|
10504
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10505
|
+
"Cloud: ",
|
|
10506
|
+
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
10507
|
+
] })
|
|
10508
|
+
] }),
|
|
10509
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10510
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.HardDrive, { className: "h-2.5 w-2.5" }),
|
|
10511
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10512
|
+
"Local: ",
|
|
10513
|
+
new Date(backup.local.lastBackup).toLocaleString()
|
|
10514
|
+
] })
|
|
10515
|
+
] })
|
|
10516
|
+
] }),
|
|
10517
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Highlight, { type: "info", className: "space-y-0.5 text-[10px] leading-tight", children: [
|
|
10518
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-bold text-sm", children: "Device Information:" }),
|
|
10519
|
+
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10520
|
+
"Created: ",
|
|
10521
|
+
new Date(recoveryCreatedAt).toLocaleString(),
|
|
10522
|
+
" "
|
|
10523
|
+
] }),
|
|
10524
|
+
recoveryCountry && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10525
|
+
"Country: ",
|
|
10526
|
+
recoveryCountry
|
|
10527
|
+
] }),
|
|
10528
|
+
recoveryBrowser && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10529
|
+
"Browser: ",
|
|
10530
|
+
recoveryBrowser
|
|
10531
|
+
] }),
|
|
10532
|
+
parseOS(recoveryUa) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10533
|
+
"OS: ",
|
|
10534
|
+
parseOS(recoveryUa)
|
|
10535
|
+
] }),
|
|
10536
|
+
recoveryDeviceName && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10537
|
+
"Device: ",
|
|
10538
|
+
recoveryDeviceName
|
|
10539
|
+
] }),
|
|
10540
|
+
recoveryDeviceId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10541
|
+
"Device ID: ",
|
|
10542
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "break-all", children: recoveryDeviceId })
|
|
10543
|
+
] })
|
|
10544
|
+
] }),
|
|
10545
|
+
trustedApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full space-y-2", children: [
|
|
10546
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium text-xs text-[var(--l-pass-fg)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
10547
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10548
|
+
"div",
|
|
10549
|
+
{
|
|
10550
|
+
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
10551
|
+
children: [
|
|
10552
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
10553
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
10554
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
10555
|
+
"Trusted: ",
|
|
10556
|
+
new Date(app.trustedAt).toLocaleDateString()
|
|
10557
|
+
] })
|
|
10558
|
+
] }),
|
|
10559
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
10560
|
+
Button,
|
|
10561
|
+
{
|
|
10562
|
+
variant: "ghost",
|
|
10563
|
+
size: "icon",
|
|
10564
|
+
title: "Remove from trusted",
|
|
10565
|
+
className: "text-[var(--l-pass-error)]",
|
|
10566
|
+
onClick: () => setAppToRemove({
|
|
10567
|
+
projectId: app.projectId,
|
|
10568
|
+
origin: app.origin,
|
|
10569
|
+
hostname: new URL(app.origin).hostname
|
|
10570
|
+
}),
|
|
10571
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Trash2, { className: "h-3 w-3" })
|
|
10572
|
+
}
|
|
10573
|
+
)
|
|
10574
|
+
]
|
|
10575
|
+
},
|
|
10576
|
+
index
|
|
10577
|
+
)) })
|
|
10419
10578
|
] })
|
|
10420
10579
|
] })
|
|
10421
|
-
]
|
|
10422
|
-
|
|
10423
|
-
|
|
10424
|
-
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10425
|
-
"Created: ",
|
|
10426
|
-
new Date(recoveryCreatedAt).toLocaleString(),
|
|
10427
|
-
" "
|
|
10428
|
-
] }),
|
|
10429
|
-
recoveryCountry && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10430
|
-
"Country: ",
|
|
10431
|
-
recoveryCountry
|
|
10432
|
-
] }),
|
|
10433
|
-
recoveryBrowser && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10434
|
-
"Browser: ",
|
|
10435
|
-
recoveryBrowser
|
|
10436
|
-
] }),
|
|
10437
|
-
parseOS(recoveryUa) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10438
|
-
"OS: ",
|
|
10439
|
-
parseOS(recoveryUa)
|
|
10440
|
-
] }),
|
|
10441
|
-
recoveryDeviceName && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10442
|
-
"Device: ",
|
|
10443
|
-
recoveryDeviceName
|
|
10444
|
-
] }),
|
|
10445
|
-
recoveryDeviceId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10446
|
-
"Device ID: ",
|
|
10447
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
10448
|
-
] })
|
|
10449
|
-
] }),
|
|
10450
|
-
trustedApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full space-y-2", children: [
|
|
10451
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
10452
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10453
|
-
"div",
|
|
10454
|
-
{
|
|
10455
|
-
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
10456
|
-
children: [
|
|
10457
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
10458
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
10459
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
10460
|
-
"Trusted: ",
|
|
10461
|
-
new Date(app.trustedAt).toLocaleDateString()
|
|
10462
|
-
] })
|
|
10463
|
-
] }),
|
|
10464
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
10465
|
-
Button,
|
|
10466
|
-
{
|
|
10467
|
-
variant: "ghost",
|
|
10468
|
-
size: "icon",
|
|
10469
|
-
title: "Remove from trusted",
|
|
10470
|
-
className: "text-[var(--l-pass-error)]",
|
|
10471
|
-
onClick: () => setAppToRemove({
|
|
10472
|
-
projectId: app.projectId,
|
|
10473
|
-
origin: app.origin,
|
|
10474
|
-
hostname: new URL(app.origin).hostname
|
|
10475
|
-
}),
|
|
10476
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Trash2, { className: "h-3 w-3" })
|
|
10477
|
-
}
|
|
10478
|
-
)
|
|
10479
|
-
]
|
|
10480
|
-
},
|
|
10481
|
-
index
|
|
10482
|
-
)) })
|
|
10483
|
-
] })
|
|
10484
|
-
] })
|
|
10485
|
-
] });
|
|
10580
|
+
]
|
|
10581
|
+
}
|
|
10582
|
+
);
|
|
10486
10583
|
}
|
|
10487
10584
|
|
|
10488
10585
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10489
10586
|
var import_lucide_react35 = require("lucide-react");
|
|
10490
|
-
var
|
|
10587
|
+
var import_react39 = require("react");
|
|
10491
10588
|
var import_viem6 = require("viem");
|
|
10492
10589
|
var import_wagmi3 = require("wagmi");
|
|
10493
10590
|
|
|
10494
10591
|
// src/hooks/useSendTransaction.ts
|
|
10495
|
-
var
|
|
10592
|
+
var import_react38 = require("react");
|
|
10496
10593
|
var import_viem5 = require("viem");
|
|
10497
10594
|
init_account();
|
|
10498
10595
|
function useSendTransaction() {
|
|
10499
10596
|
const session = useLumiaPassportSession((st) => st.session);
|
|
10500
10597
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10501
|
-
const [isLoading, setIsLoading] = (0,
|
|
10502
|
-
const [error, setError] = (0,
|
|
10503
|
-
const [userOpHash, setUserOpHash] = (0,
|
|
10504
|
-
const sendTransaction = (0,
|
|
10598
|
+
const [isLoading, setIsLoading] = (0, import_react38.useState)(false);
|
|
10599
|
+
const [error, setError] = (0, import_react38.useState)(null);
|
|
10600
|
+
const [userOpHash, setUserOpHash] = (0, import_react38.useState)(null);
|
|
10601
|
+
const sendTransaction = (0, import_react38.useCallback)(
|
|
10505
10602
|
async (params) => {
|
|
10506
10603
|
if (!session || !address) {
|
|
10507
10604
|
setError("No active session");
|
|
@@ -10541,7 +10638,7 @@ function useSendTransaction() {
|
|
|
10541
10638
|
},
|
|
10542
10639
|
[session, address]
|
|
10543
10640
|
);
|
|
10544
|
-
const reset = (0,
|
|
10641
|
+
const reset = (0, import_react38.useCallback)(() => {
|
|
10545
10642
|
setError(null);
|
|
10546
10643
|
setUserOpHash(null);
|
|
10547
10644
|
setIsLoading(false);
|
|
@@ -10569,13 +10666,13 @@ function SendLumiaMenu() {
|
|
|
10569
10666
|
address,
|
|
10570
10667
|
chainId: lumiaBeam.id
|
|
10571
10668
|
});
|
|
10572
|
-
const [recipient, setRecipient] = (0,
|
|
10573
|
-
const [amount, setAmount] = (0,
|
|
10574
|
-
const [txStep, setTxStep] = (0,
|
|
10575
|
-
const [validationError, setValidationError] = (0,
|
|
10669
|
+
const [recipient, setRecipient] = (0, import_react39.useState)("");
|
|
10670
|
+
const [amount, setAmount] = (0, import_react39.useState)("");
|
|
10671
|
+
const [txStep, setTxStep] = (0, import_react39.useState)("input");
|
|
10672
|
+
const [validationError, setValidationError] = (0, import_react39.useState)(null);
|
|
10576
10673
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10577
10674
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10578
|
-
(0,
|
|
10675
|
+
(0, import_react39.useEffect)(() => {
|
|
10579
10676
|
if (open) {
|
|
10580
10677
|
setTxStep("input");
|
|
10581
10678
|
setValidationError(null);
|
|
@@ -10739,7 +10836,7 @@ function SendLumiaMenu() {
|
|
|
10739
10836
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10740
10837
|
var import_lucide_react36 = require("lucide-react");
|
|
10741
10838
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
10742
|
-
var
|
|
10839
|
+
var import_react40 = require("react");
|
|
10743
10840
|
init_clients();
|
|
10744
10841
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
10745
10842
|
function ReceiveLumiaMenu() {
|
|
@@ -10748,9 +10845,9 @@ function ReceiveLumiaMenu() {
|
|
|
10748
10845
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10749
10846
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10750
10847
|
const open = page === "receive";
|
|
10751
|
-
const [qrCodeUrl, setQrCodeUrl] = (0,
|
|
10752
|
-
const [copied, setCopied] = (0,
|
|
10753
|
-
(0,
|
|
10848
|
+
const [qrCodeUrl, setQrCodeUrl] = (0, import_react40.useState)("");
|
|
10849
|
+
const [copied, setCopied] = (0, import_react40.useState)(false);
|
|
10850
|
+
(0, import_react40.useEffect)(() => {
|
|
10754
10851
|
if (open && address) {
|
|
10755
10852
|
import_qrcode.default.toDataURL(address, {
|
|
10756
10853
|
width: 200,
|
|
@@ -10763,7 +10860,7 @@ function ReceiveLumiaMenu() {
|
|
|
10763
10860
|
});
|
|
10764
10861
|
}
|
|
10765
10862
|
}, [open, address]);
|
|
10766
|
-
const handleCopy = (0,
|
|
10863
|
+
const handleCopy = (0, import_react40.useCallback)(async () => {
|
|
10767
10864
|
if (!address) return;
|
|
10768
10865
|
try {
|
|
10769
10866
|
await navigator.clipboard.writeText(address);
|
|
@@ -10778,7 +10875,7 @@ function ReceiveLumiaMenu() {
|
|
|
10778
10875
|
{
|
|
10779
10876
|
style: {
|
|
10780
10877
|
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10781
|
-
"--l-pass-list-scrollbar-pd-r": "
|
|
10878
|
+
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
10782
10879
|
},
|
|
10783
10880
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
10784
10881
|
children: [
|
|
@@ -10809,7 +10906,7 @@ function ReceiveLumiaMenu() {
|
|
|
10809
10906
|
|
|
10810
10907
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10811
10908
|
var import_lucide_react38 = require("lucide-react");
|
|
10812
|
-
var
|
|
10909
|
+
var import_react41 = require("react");
|
|
10813
10910
|
|
|
10814
10911
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10815
10912
|
var import_lucide_react37 = require("lucide-react");
|
|
@@ -10843,13 +10940,13 @@ function SettingsMenu() {
|
|
|
10843
10940
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10844
10941
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10845
10942
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10846
|
-
(0,
|
|
10943
|
+
(0, import_react41.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10847
10944
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10848
10945
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10849
10946
|
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10850
10947
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10851
10948
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react38.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10852
|
-
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xl font-semibold", children: "
|
|
10949
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xl font-semibold", children: "Settings" })
|
|
10853
10950
|
] }),
|
|
10854
10951
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
10855
10952
|
Button,
|
|
@@ -10901,9 +10998,9 @@ function TermsOfService() {
|
|
|
10901
10998
|
}
|
|
10902
10999
|
|
|
10903
11000
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10904
|
-
var
|
|
11001
|
+
var import_react_query24 = require("@tanstack/react-query");
|
|
10905
11002
|
var import_lucide_react41 = require("lucide-react");
|
|
10906
|
-
var
|
|
11003
|
+
var import_react42 = require("react");
|
|
10907
11004
|
|
|
10908
11005
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10909
11006
|
init_base();
|
|
@@ -11379,78 +11476,60 @@ function TransactionsGroup(props) {
|
|
|
11379
11476
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
11380
11477
|
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
11381
11478
|
function TransactionsMenu() {
|
|
11382
|
-
const qc = (0,
|
|
11479
|
+
const qc = (0, import_react_query24.useQueryClient)();
|
|
11383
11480
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11384
11481
|
const page = useLayoutDataStore((st) => st.page);
|
|
11385
11482
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11386
11483
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11387
|
-
const
|
|
11388
|
-
const txListRef = (0, import_react41.useRef)(null);
|
|
11389
|
-
const [expandedGroups, setExpandedGroups] = (0, import_react41.useState)({});
|
|
11484
|
+
const [expandedGroups, setExpandedGroups] = (0, import_react42.useState)({});
|
|
11390
11485
|
const {
|
|
11391
11486
|
data: txHistoryGroups = [],
|
|
11392
11487
|
isLoading: isTxHistoryLoading,
|
|
11393
11488
|
isFetching: isTxHistoryFetching,
|
|
11394
11489
|
error: txHistoryError
|
|
11395
|
-
} = (0,
|
|
11490
|
+
} = (0, import_react_query24.useQuery)({
|
|
11396
11491
|
retry: false,
|
|
11397
11492
|
enabled: !!address && page === "transactions",
|
|
11398
11493
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
11399
11494
|
queryFn: () => getTransactionsListQuery(address)
|
|
11400
11495
|
});
|
|
11401
|
-
const refreshTxHistory = (0,
|
|
11496
|
+
const refreshTxHistory = (0, import_react42.useCallback)(
|
|
11402
11497
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
11403
11498
|
[qc, address]
|
|
11404
11499
|
);
|
|
11405
11500
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11406
|
-
(0,
|
|
11407
|
-
|
|
11408
|
-
|
|
11409
|
-
|
|
11410
|
-
|
|
11411
|
-
|
|
11412
|
-
|
|
11413
|
-
|
|
11414
|
-
|
|
11415
|
-
|
|
11416
|
-
|
|
11417
|
-
|
|
11418
|
-
|
|
11419
|
-
|
|
11420
|
-
|
|
11421
|
-
|
|
11422
|
-
|
|
11423
|
-
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
|
|
11427
|
-
|
|
11428
|
-
|
|
11429
|
-
|
|
11430
|
-
|
|
11431
|
-
|
|
11432
|
-
|
|
11433
|
-
|
|
11434
|
-
|
|
11435
|
-
|
|
11436
|
-
|
|
11437
|
-
|
|
11438
|
-
isTxHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
11439
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11440
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.XCircle, { className: "w-4 h-4 flex-none" }),
|
|
11441
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
11442
|
-
] }),
|
|
11443
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Highlight, { type: "warning", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children: "No transactions found. Smart account transactions will appear here" }) }),
|
|
11444
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11445
|
-
"div",
|
|
11446
|
-
{
|
|
11447
|
-
ref: txContainerListRef,
|
|
11448
|
-
style: {
|
|
11449
|
-
borderTop: "1px solid var(--l-pass-list-bd)",
|
|
11450
|
-
borderBottom: "1px solid var(--l-pass-list-bd)"
|
|
11451
|
-
},
|
|
11452
|
-
className: "list-scrollbar-y relative",
|
|
11453
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { ref: txListRef, className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11501
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
|
|
11502
|
+
"div",
|
|
11503
|
+
{
|
|
11504
|
+
style: {
|
|
11505
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
11506
|
+
"--l-pass-list-scrollbar-pd-r": "calc(var(--l-pass-pd) - 4px)"
|
|
11507
|
+
},
|
|
11508
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
11509
|
+
children: [
|
|
11510
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11511
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11512
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
11513
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11514
|
+
Button,
|
|
11515
|
+
{
|
|
11516
|
+
variant: "ghost",
|
|
11517
|
+
size: "icon",
|
|
11518
|
+
onClick: refreshTxHistory,
|
|
11519
|
+
disabled: isTxHistoryFetching,
|
|
11520
|
+
title: "Refresh transactions",
|
|
11521
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.RefreshCw, { className: "h-4 w-4" })
|
|
11522
|
+
}
|
|
11523
|
+
)
|
|
11524
|
+
] }),
|
|
11525
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11526
|
+
isTxHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
11527
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11528
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.XCircle, { className: "w-4 h-4 flex-none" }),
|
|
11529
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
11530
|
+
] }),
|
|
11531
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Highlight, { type: "warning", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { children: "No transactions found. Smart account transactions will appear here" }) }),
|
|
11532
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11454
11533
|
TransactionsGroup,
|
|
11455
11534
|
{
|
|
11456
11535
|
group,
|
|
@@ -11459,10 +11538,10 @@ function TransactionsMenu() {
|
|
|
11459
11538
|
},
|
|
11460
11539
|
group.id
|
|
11461
11540
|
)) })
|
|
11462
|
-
}
|
|
11463
|
-
|
|
11464
|
-
|
|
11465
|
-
|
|
11541
|
+
] })
|
|
11542
|
+
]
|
|
11543
|
+
}
|
|
11544
|
+
);
|
|
11466
11545
|
}
|
|
11467
11546
|
|
|
11468
11547
|
// src/internal/components/PageMap.tsx
|
|
@@ -11574,7 +11653,7 @@ function usePageMapper() {
|
|
|
11574
11653
|
setIsDialogOpen,
|
|
11575
11654
|
setIsDialogClosing
|
|
11576
11655
|
} = useLayoutStore();
|
|
11577
|
-
const closeDialog = (0,
|
|
11656
|
+
const closeDialog = (0, import_react43.useCallback)(() => {
|
|
11578
11657
|
setIsDialogClosing(true);
|
|
11579
11658
|
setTimeout(() => {
|
|
11580
11659
|
setDialogContent(null);
|
|
@@ -11585,7 +11664,7 @@ function usePageMapper() {
|
|
|
11585
11664
|
setIsDialogOpen(false);
|
|
11586
11665
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11587
11666
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11588
|
-
const openDialog = (0,
|
|
11667
|
+
const openDialog = (0, import_react43.useCallback)(
|
|
11589
11668
|
(pageItem) => {
|
|
11590
11669
|
const PageContentComponent = pageItem.component;
|
|
11591
11670
|
setDialogTitle(pageItem.title);
|
|
@@ -11595,7 +11674,7 @@ function usePageMapper() {
|
|
|
11595
11674
|
},
|
|
11596
11675
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11597
11676
|
);
|
|
11598
|
-
(0,
|
|
11677
|
+
(0, import_react43.useEffect)(() => {
|
|
11599
11678
|
if (page === null) return closeDialog();
|
|
11600
11679
|
const pageItem = protectedRoutes[page];
|
|
11601
11680
|
if (!pageItem) {
|
|
@@ -11608,7 +11687,7 @@ function usePageMapper() {
|
|
|
11608
11687
|
}
|
|
11609
11688
|
|
|
11610
11689
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11611
|
-
var
|
|
11690
|
+
var import_react44 = require("react");
|
|
11612
11691
|
init_auth();
|
|
11613
11692
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11614
11693
|
id: "email-not-connected",
|
|
@@ -11625,13 +11704,13 @@ function useSettingsNotifications() {
|
|
|
11625
11704
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11626
11705
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
11627
11706
|
const hasEmail = providers.includes("email");
|
|
11628
|
-
(0,
|
|
11707
|
+
(0, import_react44.useEffect)(() => {
|
|
11629
11708
|
setSettingsNotifications({
|
|
11630
11709
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11631
11710
|
status: hasServerVault ? "resolved" : "active"
|
|
11632
11711
|
});
|
|
11633
11712
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11634
|
-
(0,
|
|
11713
|
+
(0, import_react44.useEffect)(() => {
|
|
11635
11714
|
setSettingsNotifications({
|
|
11636
11715
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11637
11716
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11640,7 +11719,7 @@ function useSettingsNotifications() {
|
|
|
11640
11719
|
}
|
|
11641
11720
|
|
|
11642
11721
|
// src/internal/hooks/useWalletStatus.ts
|
|
11643
|
-
var
|
|
11722
|
+
var import_react45 = require("react");
|
|
11644
11723
|
init_auth();
|
|
11645
11724
|
function useWalletStatus() {
|
|
11646
11725
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -11650,7 +11729,7 @@ function useWalletStatus() {
|
|
|
11650
11729
|
config: { current: config },
|
|
11651
11730
|
callbacks
|
|
11652
11731
|
} = useLumiaPassportConfig();
|
|
11653
|
-
(0,
|
|
11732
|
+
(0, import_react45.useEffect)(() => {
|
|
11654
11733
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11655
11734
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
11656
11735
|
const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
|
|
@@ -11679,7 +11758,7 @@ function LumiaPassportDialog() {
|
|
|
11679
11758
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11680
11759
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11681
11760
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11682
|
-
(0,
|
|
11761
|
+
(0, import_react46.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11683
11762
|
usePageMapper();
|
|
11684
11763
|
useAutoConnect();
|
|
11685
11764
|
useCheckVaultStatus();
|
|
@@ -11718,23 +11797,23 @@ function LumiaPassportDialog() {
|
|
|
11718
11797
|
}
|
|
11719
11798
|
|
|
11720
11799
|
// src/internal/components/TssManager.tsx
|
|
11721
|
-
var
|
|
11800
|
+
var import_react47 = __toESM(require("react"), 1);
|
|
11722
11801
|
init_auth();
|
|
11723
11802
|
init_clients();
|
|
11724
|
-
var TssManagerWithRef =
|
|
11803
|
+
var TssManagerWithRef = import_react47.default.forwardRef((props, ref) => {
|
|
11725
11804
|
const { mpcPin } = props;
|
|
11726
11805
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11727
11806
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11728
11807
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11729
11808
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11730
|
-
const onSessionCreated = (0,
|
|
11809
|
+
const onSessionCreated = (0, import_react47.useCallback)(
|
|
11731
11810
|
(session, address) => {
|
|
11732
11811
|
setSession(session);
|
|
11733
11812
|
setAddress(address);
|
|
11734
11813
|
},
|
|
11735
11814
|
[setSession, setAddress]
|
|
11736
11815
|
);
|
|
11737
|
-
const createSessionWithKeyshare =
|
|
11816
|
+
const createSessionWithKeyshare = import_react47.default.useCallback(
|
|
11738
11817
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11739
11818
|
setStatus("checking key management setup...");
|
|
11740
11819
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11755,18 +11834,18 @@ var TssManagerWithRef = import_react46.default.forwardRef((props, ref) => {
|
|
|
11755
11834
|
},
|
|
11756
11835
|
[setStatus, usePaymaster, mpcPin]
|
|
11757
11836
|
);
|
|
11758
|
-
|
|
11837
|
+
import_react47.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11759
11838
|
return null;
|
|
11760
11839
|
});
|
|
11761
11840
|
|
|
11762
11841
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11763
11842
|
var import_rainbowkit = require("@rainbow-me/rainbowkit");
|
|
11764
|
-
var
|
|
11765
|
-
var
|
|
11843
|
+
var import_react_query25 = require("@tanstack/react-query");
|
|
11844
|
+
var import_react48 = __toESM(require("react"), 1);
|
|
11766
11845
|
var import_wagmi4 = require("wagmi");
|
|
11767
11846
|
init_wallet();
|
|
11768
11847
|
function WalletConnectHandler() {
|
|
11769
|
-
const qc = (0,
|
|
11848
|
+
const qc = (0, import_react_query25.useQueryClient)();
|
|
11770
11849
|
const { callbacks } = useLumiaPassportConfig();
|
|
11771
11850
|
const userAddress = useLumiaPassportSession((st) => st.address);
|
|
11772
11851
|
const { address: walletAddress, isConnected, chain, connector } = (0, import_wagmi4.useAccount)();
|
|
@@ -11774,12 +11853,12 @@ function WalletConnectHandler() {
|
|
|
11774
11853
|
const { signMessageAsync } = (0, import_wagmi4.useSignMessage)();
|
|
11775
11854
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11776
11855
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11777
|
-
const onError = (0,
|
|
11856
|
+
const onError = (0, import_react48.useCallback)((error) => {
|
|
11778
11857
|
setLinkError(error);
|
|
11779
11858
|
setIsWalletLinking(false);
|
|
11780
11859
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11781
11860
|
}, []);
|
|
11782
|
-
const onLinkingComplete = (0,
|
|
11861
|
+
const onLinkingComplete = (0, import_react48.useCallback)(
|
|
11783
11862
|
async (success) => {
|
|
11784
11863
|
console.log("[WalletConnectHandler] onLinkingComplete called:", { success, userAddress });
|
|
11785
11864
|
setIsWalletLinking(false);
|
|
@@ -11802,9 +11881,9 @@ function WalletConnectHandler() {
|
|
|
11802
11881
|
[qc, userAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
11803
11882
|
);
|
|
11804
11883
|
const { openConnectModal, connectModalOpen } = (0, import_rainbowkit.useConnectModal)();
|
|
11805
|
-
const [hasStartedLinking, setHasStartedLinking] =
|
|
11806
|
-
const timeoutRef =
|
|
11807
|
-
(0,
|
|
11884
|
+
const [hasStartedLinking, setHasStartedLinking] = import_react48.default.useState(false);
|
|
11885
|
+
const timeoutRef = import_react48.default.useRef();
|
|
11886
|
+
(0, import_react48.useEffect)(() => {
|
|
11808
11887
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11809
11888
|
setHasStartedLinking(true);
|
|
11810
11889
|
setProviderType(null);
|
|
@@ -11829,7 +11908,7 @@ function WalletConnectHandler() {
|
|
|
11829
11908
|
if (isConnected) disconnect();
|
|
11830
11909
|
}
|
|
11831
11910
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
11832
|
-
(0,
|
|
11911
|
+
(0, import_react48.useEffect)(() => {
|
|
11833
11912
|
console.log("[WalletConnectHandler] Modal state check:", {
|
|
11834
11913
|
hasStartedLinking,
|
|
11835
11914
|
connectModalOpen,
|
|
@@ -11842,7 +11921,7 @@ function WalletConnectHandler() {
|
|
|
11842
11921
|
setHasStartedLinking(false);
|
|
11843
11922
|
}
|
|
11844
11923
|
}, [connectModalOpen, hasStartedLinking, isConnected, isWalletLinking]);
|
|
11845
|
-
(0,
|
|
11924
|
+
(0, import_react48.useEffect)(() => {
|
|
11846
11925
|
if (isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
11847
11926
|
handleWalletSign();
|
|
11848
11927
|
}
|
|
@@ -11913,7 +11992,8 @@ var useLumiaPassportSession = (0, import_zustand5.create)((set) => ({
|
|
|
11913
11992
|
error: null,
|
|
11914
11993
|
recoveryUserId: null,
|
|
11915
11994
|
isIframeReady: false,
|
|
11916
|
-
hasServerVault:
|
|
11995
|
+
hasServerVault: true,
|
|
11996
|
+
// assume true until proven otherwise to not throw red warnings before checking
|
|
11917
11997
|
walletReadyStatus: null,
|
|
11918
11998
|
setIsLoading: (isLoading) => set({ isLoading }),
|
|
11919
11999
|
setUsePaymaster: (usePaymaster) => set({ usePaymaster }),
|
|
@@ -11928,7 +12008,7 @@ var useLumiaPassportSession = (0, import_zustand5.create)((set) => ({
|
|
|
11928
12008
|
}));
|
|
11929
12009
|
function LumiaPassportSessionProvider({ children }) {
|
|
11930
12010
|
const config = useLumiaPassportConfig().config;
|
|
11931
|
-
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
12011
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react49.Fragment, { children: [
|
|
11932
12012
|
children,
|
|
11933
12013
|
config.current?.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(WalletConnectHandler, {}),
|
|
11934
12014
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BalanceFeedProvider, {}),
|
|
@@ -11980,14 +12060,14 @@ var LumiaWagmiProvider = ({ children }) => {
|
|
|
11980
12060
|
|
|
11981
12061
|
// src/context/LumiaPassportContext.tsx
|
|
11982
12062
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
11983
|
-
var LumiaPassportContext = (0,
|
|
12063
|
+
var LumiaPassportContext = (0, import_react50.createContext)(void 0);
|
|
11984
12064
|
function LumiaPassportProvider(props) {
|
|
11985
12065
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
11986
12066
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
11987
12067
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
11988
|
-
(0,
|
|
11989
|
-
const config = (0,
|
|
11990
|
-
const updateConfig = (0,
|
|
12068
|
+
(0, import_react50.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
|
|
12069
|
+
const config = (0, import_react50.useRef)({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
12070
|
+
const updateConfig = (0, import_react50.useCallback)((updates) => {
|
|
11991
12071
|
const prev = config.current;
|
|
11992
12072
|
const next = { ...prev };
|
|
11993
12073
|
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
@@ -12022,7 +12102,7 @@ function LumiaPassportProvider(props) {
|
|
|
12022
12102
|
}
|
|
12023
12103
|
config.current = next;
|
|
12024
12104
|
}, []);
|
|
12025
|
-
(0,
|
|
12105
|
+
(0, import_react50.useEffect)(() => {
|
|
12026
12106
|
if (typeof window === "undefined" || !projectId) return;
|
|
12027
12107
|
const mergedConfig = (0, import_lodash_es4.merge)(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12028
12108
|
updateConfig(mergedConfig);
|
|
@@ -12067,18 +12147,18 @@ function LumiaPassportProvider(props) {
|
|
|
12067
12147
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
12068
12148
|
}
|
|
12069
12149
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12070
|
-
const contextValue = (0,
|
|
12150
|
+
const contextValue = (0, import_react50.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12071
12151
|
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
12072
12152
|
}
|
|
12073
12153
|
var useLumiaPassportConfig = () => {
|
|
12074
|
-
const ctx = (0,
|
|
12154
|
+
const ctx = (0, import_react50.useContext)(LumiaPassportContext);
|
|
12075
12155
|
if (!ctx) throw new Error("useLumiaPassportConfig must be used within a LumiaPassportProvider");
|
|
12076
12156
|
return ctx;
|
|
12077
12157
|
};
|
|
12078
12158
|
|
|
12079
12159
|
// src/components/ConnectWalletButton.tsx
|
|
12080
12160
|
var import_lucide_react42 = require("lucide-react");
|
|
12081
|
-
var
|
|
12161
|
+
var import_react51 = require("react");
|
|
12082
12162
|
init_auth();
|
|
12083
12163
|
var import_jsx_runtime65 = (
|
|
12084
12164
|
/** external Buttons can be provided */
|
|
@@ -12101,10 +12181,10 @@ function ConnectWalletButton(props) {
|
|
|
12101
12181
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12102
12182
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12103
12183
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12104
|
-
(0,
|
|
12184
|
+
(0, import_react51.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12105
12185
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
12106
12186
|
const displayName = import_auth3.jwtTokenManager.getDisplayName();
|
|
12107
|
-
const indicators = (0,
|
|
12187
|
+
const indicators = (0, import_react51.useMemo)(() => {
|
|
12108
12188
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
12109
12189
|
if (!userId) return { server: false, local: false, backup: false };
|
|
12110
12190
|
const server = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -12259,13 +12339,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12259
12339
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12260
12340
|
|
|
12261
12341
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12262
|
-
var
|
|
12342
|
+
var import_react52 = require("react");
|
|
12263
12343
|
function useLumiaPassportOpen() {
|
|
12264
12344
|
const page = useLayoutDataStore((st) => st.page);
|
|
12265
12345
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12266
12346
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12267
12347
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12268
|
-
const open = (0,
|
|
12348
|
+
const open = (0, import_react52.useCallback)(
|
|
12269
12349
|
(passportPage, params) => {
|
|
12270
12350
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12271
12351
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12274,12 +12354,12 @@ function useLumiaPassportOpen() {
|
|
|
12274
12354
|
},
|
|
12275
12355
|
[setPage, setPageParams, address]
|
|
12276
12356
|
);
|
|
12277
|
-
const close = (0,
|
|
12357
|
+
const close = (0, import_react52.useCallback)(() => setPage(null), [setPage]);
|
|
12278
12358
|
return { open, close, isOpen: page !== null };
|
|
12279
12359
|
}
|
|
12280
12360
|
|
|
12281
12361
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12282
|
-
var
|
|
12362
|
+
var import_react53 = require("react");
|
|
12283
12363
|
function useLumiaPassportColorMode() {
|
|
12284
12364
|
const {
|
|
12285
12365
|
config: { current: config }
|
|
@@ -12287,14 +12367,14 @@ function useLumiaPassportColorMode() {
|
|
|
12287
12367
|
const preferedColorMode = config?.preferedColorMode;
|
|
12288
12368
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12289
12369
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12290
|
-
const setColorMode = (0,
|
|
12370
|
+
const setColorMode = (0, import_react53.useCallback)(
|
|
12291
12371
|
(mode) => {
|
|
12292
12372
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12293
12373
|
handleStoreColorMode(mode);
|
|
12294
12374
|
},
|
|
12295
12375
|
[handleStoreColorMode]
|
|
12296
12376
|
);
|
|
12297
|
-
(0,
|
|
12377
|
+
(0, import_react53.useEffect)(() => {
|
|
12298
12378
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12299
12379
|
if (!targetColorMode && !preferedColorMode) {
|
|
12300
12380
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12336,9 +12416,8 @@ function ThemeToggle(props) {
|
|
|
12336
12416
|
}
|
|
12337
12417
|
|
|
12338
12418
|
// src/context/RainbowKitContext.tsx
|
|
12339
|
-
var import_react53 = __toESM(require("react"), 1);
|
|
12340
|
-
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
12341
12419
|
var import_rainbowkit3 = require("@rainbow-me/rainbowkit");
|
|
12420
|
+
var import_react54 = require("react");
|
|
12342
12421
|
var import_wagmi8 = require("wagmi");
|
|
12343
12422
|
|
|
12344
12423
|
// src/config/rainbowkit.ts
|
|
@@ -12378,144 +12457,220 @@ var rainbowConfig = createRainbowConfig();
|
|
|
12378
12457
|
var rainbowTheme = {
|
|
12379
12458
|
lightMode: {
|
|
12380
12459
|
colors: {
|
|
12381
|
-
|
|
12382
|
-
|
|
12383
|
-
|
|
12384
|
-
|
|
12385
|
-
|
|
12386
|
-
|
|
12387
|
-
|
|
12388
|
-
|
|
12389
|
-
|
|
12390
|
-
|
|
12391
|
-
|
|
12392
|
-
|
|
12393
|
-
|
|
12394
|
-
|
|
12395
|
-
|
|
12396
|
-
|
|
12397
|
-
|
|
12398
|
-
|
|
12399
|
-
|
|
12400
|
-
|
|
12401
|
-
|
|
12402
|
-
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
|
|
12406
|
-
|
|
12407
|
-
|
|
12408
|
-
|
|
12409
|
-
|
|
12410
|
-
|
|
12460
|
+
// Primary accent - using --l-pass-primary
|
|
12461
|
+
accentColor: "#000000",
|
|
12462
|
+
// --l-pass-primary
|
|
12463
|
+
accentColorForeground: "#ffffff",
|
|
12464
|
+
// --l-pass-fg-inverted
|
|
12465
|
+
// Borders
|
|
12466
|
+
actionButtonBorder: "rgb(201, 201, 201)",
|
|
12467
|
+
// --l-pass-bd
|
|
12468
|
+
actionButtonBorderMobile: "rgb(169, 169, 169)",
|
|
12469
|
+
// --l-pass-bd-intense
|
|
12470
|
+
// Secondary backgrounds
|
|
12471
|
+
actionButtonSecondaryBackground: "#e4e4e4",
|
|
12472
|
+
// --l-pass-secondary
|
|
12473
|
+
// Close button
|
|
12474
|
+
closeButton: "rgba(0, 0, 0, 0.6)",
|
|
12475
|
+
// --l-pass-fg-h
|
|
12476
|
+
closeButtonBackground: "#e4e4e4",
|
|
12477
|
+
// --l-pass-secondary
|
|
12478
|
+
// Connect button
|
|
12479
|
+
connectButtonBackground: "#ffffff",
|
|
12480
|
+
// --l-pass-bg
|
|
12481
|
+
connectButtonBackgroundError: "#d6204e",
|
|
12482
|
+
// --l-pass-bg-error
|
|
12483
|
+
connectButtonInnerBackground: "linear-gradient(0deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.02))",
|
|
12484
|
+
connectButtonText: "#000000",
|
|
12485
|
+
// --l-pass-fg
|
|
12486
|
+
connectButtonTextError: "#ffffff",
|
|
12487
|
+
// --l-pass-error
|
|
12488
|
+
// Status indicators
|
|
12489
|
+
connectionIndicator: "#21ff51",
|
|
12490
|
+
// --l-pass-bg-success
|
|
12491
|
+
standby: "#e9fa00",
|
|
12492
|
+
// --l-pass-bg-warning
|
|
12493
|
+
error: "#d6204e",
|
|
12494
|
+
// --l-pass-bg-error
|
|
12495
|
+
// Card backgrounds
|
|
12496
|
+
downloadBottomCardBackground: "linear-gradient(126deg, rgba(0, 0, 0, 0) 9.49%, rgba(0, 0, 0, 0.05) 71.04%), #ffffff",
|
|
12497
|
+
downloadTopCardBackground: "linear-gradient(126deg, rgba(0, 0, 0, 0.05) 9.49%, rgba(0, 0, 0, 0) 71.04%), #ffffff",
|
|
12498
|
+
// Borders
|
|
12499
|
+
generalBorder: "rgb(201, 201, 201)",
|
|
12500
|
+
// --l-pass-bd
|
|
12501
|
+
generalBorderDim: "rgba(201, 201, 201, 0.5)",
|
|
12502
|
+
// Menu items
|
|
12503
|
+
menuItemBackground: "#e4e4e4",
|
|
12504
|
+
// --l-pass-secondary
|
|
12505
|
+
// Modal
|
|
12506
|
+
modalBackdrop: "rgba(255, 255, 255, 0.8)",
|
|
12507
|
+
// --l-pass-overlay
|
|
12508
|
+
modalBackground: "#ffffff",
|
|
12509
|
+
// --l-pass-bg
|
|
12510
|
+
modalBorder: "rgb(201, 201, 201)",
|
|
12511
|
+
// --l-pass-bd
|
|
12512
|
+
modalText: "#000000",
|
|
12513
|
+
// --l-pass-fg
|
|
12514
|
+
modalTextDim: "rgba(0, 0, 0, 0.4)",
|
|
12515
|
+
// --l-pass-fg-a
|
|
12516
|
+
modalTextSecondary: "rgba(0, 0, 0, 0.6)",
|
|
12517
|
+
// --l-pass-fg-h
|
|
12518
|
+
// Profile
|
|
12519
|
+
profileAction: "#ffffff",
|
|
12520
|
+
// --l-pass-bg
|
|
12521
|
+
profileActionHover: "#e4e4e4",
|
|
12522
|
+
// --l-pass-secondary
|
|
12523
|
+
profileForeground: "#e4e4e4",
|
|
12524
|
+
// --l-pass-secondary
|
|
12525
|
+
// Selection
|
|
12526
|
+
selectedOptionBorder: "rgb(169, 169, 169)"
|
|
12527
|
+
// --l-pass-bd-intense
|
|
12411
12528
|
},
|
|
12412
12529
|
shadows: {
|
|
12413
|
-
connectButton: "0px 4px
|
|
12414
|
-
|
|
12415
|
-
|
|
12416
|
-
|
|
12417
|
-
|
|
12418
|
-
|
|
12530
|
+
connectButton: "0px 4px 10px rgba(0, 0, 0, 0.1)",
|
|
12531
|
+
// matches --l-pass-shadow-c
|
|
12532
|
+
dialog: "0px 8px 32px rgba(0, 0, 0, 0.1)",
|
|
12533
|
+
profileDetailsAction: "0px 2px 6px rgba(0, 0, 0, 0.1)",
|
|
12534
|
+
selectedOption: "0px 2px 6px rgba(0, 0, 0, 0.1)",
|
|
12535
|
+
selectedWallet: "0px 2px 6px rgba(0, 0, 0, 0.1)",
|
|
12536
|
+
walletLogo: "0px 2px 16px rgba(0, 0, 0, 0.1)"
|
|
12419
12537
|
},
|
|
12420
12538
|
radii: {
|
|
12421
|
-
actionButton: "
|
|
12422
|
-
|
|
12423
|
-
|
|
12424
|
-
|
|
12425
|
-
|
|
12539
|
+
actionButton: "10px",
|
|
12540
|
+
// --l-pass-el-bdrs
|
|
12541
|
+
connectButton: "20px",
|
|
12542
|
+
// --l-pass-bdrs
|
|
12543
|
+
menuButton: "10px",
|
|
12544
|
+
// --l-pass-el-bdrs
|
|
12545
|
+
modal: "20px",
|
|
12546
|
+
// --l-pass-bdrs
|
|
12547
|
+
modalMobile: "20px"
|
|
12548
|
+
// --l-pass-bdrs
|
|
12426
12549
|
}
|
|
12427
12550
|
},
|
|
12428
12551
|
darkMode: {
|
|
12429
12552
|
colors: {
|
|
12430
|
-
|
|
12431
|
-
|
|
12432
|
-
|
|
12433
|
-
|
|
12434
|
-
|
|
12435
|
-
|
|
12436
|
-
|
|
12437
|
-
|
|
12438
|
-
|
|
12439
|
-
|
|
12440
|
-
|
|
12441
|
-
|
|
12442
|
-
|
|
12443
|
-
|
|
12444
|
-
|
|
12445
|
-
|
|
12446
|
-
|
|
12447
|
-
|
|
12448
|
-
|
|
12449
|
-
|
|
12450
|
-
|
|
12451
|
-
|
|
12452
|
-
|
|
12453
|
-
|
|
12454
|
-
|
|
12455
|
-
|
|
12456
|
-
|
|
12457
|
-
|
|
12458
|
-
|
|
12459
|
-
|
|
12553
|
+
// Primary accent - using --l-pass-primary
|
|
12554
|
+
accentColor: "#ffffff",
|
|
12555
|
+
// --l-pass-primary
|
|
12556
|
+
accentColorForeground: "#000000",
|
|
12557
|
+
// --l-pass-fg-inverted
|
|
12558
|
+
// Borders
|
|
12559
|
+
actionButtonBorder: "#3a3a3a",
|
|
12560
|
+
// --l-pass-bd
|
|
12561
|
+
actionButtonBorderMobile: "#4a4a4a",
|
|
12562
|
+
// --l-pass-bd-intense
|
|
12563
|
+
// Secondary backgrounds
|
|
12564
|
+
actionButtonSecondaryBackground: "#2a2a2a",
|
|
12565
|
+
// --l-pass-secondary
|
|
12566
|
+
// Close button
|
|
12567
|
+
closeButton: "rgba(255, 255, 255, 0.6)",
|
|
12568
|
+
// --l-pass-fg-h
|
|
12569
|
+
closeButtonBackground: "#2a2a2a",
|
|
12570
|
+
// --l-pass-secondary
|
|
12571
|
+
// Connect button
|
|
12572
|
+
connectButtonBackground: "#1a1a1a",
|
|
12573
|
+
// --l-pass-bg
|
|
12574
|
+
connectButtonBackgroundError: "#d6204e",
|
|
12575
|
+
// --l-pass-bg-error
|
|
12576
|
+
connectButtonInnerBackground: "linear-gradient(0deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02))",
|
|
12577
|
+
connectButtonText: "#ffffff",
|
|
12578
|
+
// --l-pass-fg
|
|
12579
|
+
connectButtonTextError: "#ffffff",
|
|
12580
|
+
// --l-pass-error
|
|
12581
|
+
// Status indicators
|
|
12582
|
+
connectionIndicator: "#21ff51",
|
|
12583
|
+
// --l-pass-bg-success
|
|
12584
|
+
standby: "#e9fa00",
|
|
12585
|
+
// --l-pass-bg-warning
|
|
12586
|
+
error: "#d6204e",
|
|
12587
|
+
// --l-pass-bg-error
|
|
12588
|
+
// Card backgrounds
|
|
12589
|
+
downloadBottomCardBackground: "linear-gradient(126deg, rgba(255, 255, 255, 0) 9.49%, rgba(255, 255, 255, 0.05) 71.04%), #1a1a1a",
|
|
12590
|
+
downloadTopCardBackground: "linear-gradient(126deg, rgba(255, 255, 255, 0.05) 9.49%, rgba(255, 255, 255, 0) 71.04%), #1a1a1a",
|
|
12591
|
+
// Borders
|
|
12592
|
+
generalBorder: "#3a3a3a",
|
|
12593
|
+
// --l-pass-bd
|
|
12594
|
+
generalBorderDim: "rgba(58, 58, 58, 0.5)",
|
|
12595
|
+
// Menu items
|
|
12596
|
+
menuItemBackground: "#2a2a2a",
|
|
12597
|
+
// --l-pass-secondary
|
|
12598
|
+
// Modal
|
|
12599
|
+
modalBackdrop: "rgba(0, 0, 0, 0.8)",
|
|
12600
|
+
// --l-pass-overlay
|
|
12601
|
+
modalBackground: "#1a1a1a",
|
|
12602
|
+
// --l-pass-bg
|
|
12603
|
+
modalBorder: "#3a3a3a",
|
|
12604
|
+
// --l-pass-bd
|
|
12605
|
+
modalText: "#ffffff",
|
|
12606
|
+
// --l-pass-fg
|
|
12607
|
+
modalTextDim: "rgba(255, 255, 255, 0.4)",
|
|
12608
|
+
// --l-pass-fg-a
|
|
12609
|
+
modalTextSecondary: "rgba(255, 255, 255, 0.6)",
|
|
12610
|
+
// --l-pass-fg-h
|
|
12611
|
+
// Profile
|
|
12612
|
+
profileAction: "#1a1a1a",
|
|
12613
|
+
// --l-pass-bg
|
|
12614
|
+
profileActionHover: "#2a2a2a",
|
|
12615
|
+
// --l-pass-secondary
|
|
12616
|
+
profileForeground: "#2a2a2a",
|
|
12617
|
+
// --l-pass-secondary
|
|
12618
|
+
// Selection
|
|
12619
|
+
selectedOptionBorder: "#4a4a4a"
|
|
12620
|
+
// --l-pass-bd-intense
|
|
12460
12621
|
},
|
|
12461
12622
|
shadows: {
|
|
12462
|
-
connectButton: "0px 4px
|
|
12463
|
-
|
|
12464
|
-
|
|
12465
|
-
|
|
12466
|
-
|
|
12467
|
-
|
|
12623
|
+
connectButton: "0px 4px 10px rgba(0, 0, 0, 0.5)",
|
|
12624
|
+
// matches --l-pass-shadow-c
|
|
12625
|
+
dialog: "0px 8px 32px rgba(0, 0, 0, 0.5)",
|
|
12626
|
+
profileDetailsAction: "0px 2px 6px rgba(0, 0, 0, 0.5)",
|
|
12627
|
+
selectedOption: "0px 2px 6px rgba(0, 0, 0, 0.5)",
|
|
12628
|
+
selectedWallet: "0px 2px 6px rgba(0, 0, 0, 0.5)",
|
|
12629
|
+
walletLogo: "0px 2px 16px rgba(0, 0, 0, 0.5)"
|
|
12468
12630
|
},
|
|
12469
12631
|
radii: {
|
|
12470
|
-
actionButton: "
|
|
12471
|
-
|
|
12472
|
-
|
|
12473
|
-
|
|
12474
|
-
|
|
12632
|
+
actionButton: "10px",
|
|
12633
|
+
// --l-pass-el-bdrs
|
|
12634
|
+
connectButton: "20px",
|
|
12635
|
+
// --l-pass-bdrs
|
|
12636
|
+
menuButton: "10px",
|
|
12637
|
+
// --l-pass-el-bdrs
|
|
12638
|
+
modal: "20px",
|
|
12639
|
+
// --l-pass-bdrs
|
|
12640
|
+
modalMobile: "20px"
|
|
12641
|
+
// --l-pass-bdrs
|
|
12475
12642
|
}
|
|
12476
12643
|
}
|
|
12477
12644
|
};
|
|
12478
12645
|
|
|
12479
12646
|
// src/context/RainbowKitContext.tsx
|
|
12647
|
+
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
12480
12648
|
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
12481
|
-
|
|
12482
|
-
const
|
|
12483
|
-
|
|
12484
|
-
|
|
12485
|
-
const
|
|
12486
|
-
|
|
12487
|
-
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12488
|
-
}, [config.wallet?.walletConnectProjectId]);
|
|
12489
|
-
const customTheme = import_react53.default.useMemo(
|
|
12490
|
-
() => isDark ? {
|
|
12649
|
+
function LumiaRainbowKitProvider({ children }) {
|
|
12650
|
+
const config = useLumiaPassportConfig().config;
|
|
12651
|
+
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12652
|
+
const rainbowConfig2 = (0, import_react54.useMemo)(() => createRainbowConfig(config.current?.wallet?.walletConnectProjectId), [config]);
|
|
12653
|
+
const customTheme = (0, import_react54.useMemo)(
|
|
12654
|
+
() => colorMode === "dark" ? {
|
|
12491
12655
|
...(0, import_rainbowkit3.darkTheme)(),
|
|
12492
|
-
colors: {
|
|
12493
|
-
...(0, import_rainbowkit3.darkTheme)().colors,
|
|
12494
|
-
...rainbowTheme.darkMode.colors
|
|
12495
|
-
},
|
|
12656
|
+
colors: { ...(0, import_rainbowkit3.darkTheme)().colors, ...rainbowTheme.darkMode.colors },
|
|
12496
12657
|
shadows: rainbowTheme.darkMode.shadows,
|
|
12497
12658
|
radii: rainbowTheme.darkMode.radii
|
|
12498
12659
|
} : {
|
|
12499
12660
|
...(0, import_rainbowkit3.lightTheme)(),
|
|
12500
|
-
colors: {
|
|
12501
|
-
...(0, import_rainbowkit3.lightTheme)().colors,
|
|
12502
|
-
...rainbowTheme.lightMode.colors
|
|
12503
|
-
},
|
|
12661
|
+
colors: { ...(0, import_rainbowkit3.lightTheme)().colors, ...rainbowTheme.lightMode.colors },
|
|
12504
12662
|
shadows: rainbowTheme.lightMode.shadows,
|
|
12505
12663
|
radii: rainbowTheme.lightMode.radii
|
|
12506
12664
|
},
|
|
12507
|
-
[
|
|
12665
|
+
[colorMode]
|
|
12508
12666
|
);
|
|
12509
|
-
|
|
12510
|
-
if (!isWalletEnabled) {
|
|
12511
|
-
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_jsx_runtime67.Fragment, { children });
|
|
12512
|
-
}
|
|
12667
|
+
if (!config.current?.wallet?.enabled) return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_jsx_runtime67.Fragment, { children });
|
|
12513
12668
|
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_wagmi8.WagmiProvider, { config: rainbowConfig2, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_rainbowkit3.RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
12514
|
-
}
|
|
12669
|
+
}
|
|
12515
12670
|
|
|
12516
12671
|
// src/internal/components/UserOpStatus.tsx
|
|
12517
12672
|
var import_lucide_react45 = require("lucide-react");
|
|
12518
|
-
var
|
|
12673
|
+
var React15 = __toESM(require("react"), 1);
|
|
12519
12674
|
init_base();
|
|
12520
12675
|
|
|
12521
12676
|
// src/internal/utils/cn.ts
|
|
@@ -12527,7 +12682,7 @@ function cn2(...inputs) {
|
|
|
12527
12682
|
|
|
12528
12683
|
// src/internal/components/Address.tsx
|
|
12529
12684
|
var import_lucide_react44 = require("lucide-react");
|
|
12530
|
-
var
|
|
12685
|
+
var React14 = __toESM(require("react"), 1);
|
|
12531
12686
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
12532
12687
|
function toExplorerAddressUrl(address, chain) {
|
|
12533
12688
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12549,7 +12704,7 @@ var Address = ({
|
|
|
12549
12704
|
}) => {
|
|
12550
12705
|
const addr = address || "";
|
|
12551
12706
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12552
|
-
const [copied, setCopied] =
|
|
12707
|
+
const [copied, setCopied] = React14.useState(false);
|
|
12553
12708
|
if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12554
12709
|
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12555
12710
|
label && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12622,20 +12777,20 @@ var UserOpStatus = ({
|
|
|
12622
12777
|
externalState
|
|
12623
12778
|
}) => {
|
|
12624
12779
|
const useExternalState = !!externalState;
|
|
12625
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12626
|
-
const [internalMempool, setInternalMempool] =
|
|
12627
|
-
const [internalError, setInternalError] =
|
|
12628
|
-
const [attempt, setAttempt] =
|
|
12629
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12630
|
-
const [timedOut, setTimedOut] =
|
|
12631
|
-
const [rejected, setRejected] =
|
|
12632
|
-
const intervalRef =
|
|
12633
|
-
const startTimeRef =
|
|
12780
|
+
const [internalReceipt, setInternalReceipt] = React15.useState(null);
|
|
12781
|
+
const [internalMempool, setInternalMempool] = React15.useState(null);
|
|
12782
|
+
const [internalError, setInternalError] = React15.useState(null);
|
|
12783
|
+
const [attempt, setAttempt] = React15.useState(0);
|
|
12784
|
+
const [internalRefreshing, setInternalRefreshing] = React15.useState(false);
|
|
12785
|
+
const [timedOut, setTimedOut] = React15.useState(false);
|
|
12786
|
+
const [rejected, setRejected] = React15.useState(false);
|
|
12787
|
+
const intervalRef = React15.useRef(null);
|
|
12788
|
+
const startTimeRef = React15.useRef(Date.now());
|
|
12634
12789
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12635
12790
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12636
12791
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12637
12792
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12638
|
-
const rpc =
|
|
12793
|
+
const rpc = React15.useCallback(async (method, params) => {
|
|
12639
12794
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12640
12795
|
const res = await fetch(getBundlerUrl(), {
|
|
12641
12796
|
method: "POST",
|
|
@@ -12646,14 +12801,14 @@ var UserOpStatus = ({
|
|
|
12646
12801
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12647
12802
|
return json.result;
|
|
12648
12803
|
}, []);
|
|
12649
|
-
const extractMempoolInfo =
|
|
12804
|
+
const extractMempoolInfo = React15.useCallback((m) => {
|
|
12650
12805
|
if (!m) return null;
|
|
12651
12806
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12652
12807
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12653
12808
|
if (!entryPoint && !sender) return null;
|
|
12654
12809
|
return { entryPoint, sender };
|
|
12655
12810
|
}, []);
|
|
12656
|
-
const tick =
|
|
12811
|
+
const tick = React15.useCallback(async () => {
|
|
12657
12812
|
if (useExternalState) return;
|
|
12658
12813
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12659
12814
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12697,7 +12852,7 @@ var UserOpStatus = ({
|
|
|
12697
12852
|
setAttempt((x) => x + 1);
|
|
12698
12853
|
}
|
|
12699
12854
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12700
|
-
|
|
12855
|
+
React15.useEffect(() => {
|
|
12701
12856
|
if (useExternalState) return;
|
|
12702
12857
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12703
12858
|
startTimeRef.current = Date.now();
|
|
@@ -12709,7 +12864,7 @@ var UserOpStatus = ({
|
|
|
12709
12864
|
setAttempt(0);
|
|
12710
12865
|
setInternalRefreshing(false);
|
|
12711
12866
|
}, [userOpHash, useExternalState]);
|
|
12712
|
-
|
|
12867
|
+
React15.useEffect(() => {
|
|
12713
12868
|
if (useExternalState) {
|
|
12714
12869
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12715
12870
|
return;
|
|
@@ -12886,7 +13041,7 @@ var UserOpStatus = ({
|
|
|
12886
13041
|
|
|
12887
13042
|
// src/internal/components/Hash.tsx
|
|
12888
13043
|
var import_lucide_react46 = require("lucide-react");
|
|
12889
|
-
var
|
|
13044
|
+
var React16 = __toESM(require("react"), 1);
|
|
12890
13045
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
12891
13046
|
function toExplorerUrl(kind, value, chain) {
|
|
12892
13047
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12910,7 +13065,7 @@ var Hash = ({
|
|
|
12910
13065
|
}) => {
|
|
12911
13066
|
const value = hash || "";
|
|
12912
13067
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12913
|
-
const [copied, setCopied] =
|
|
13068
|
+
const [copied, setCopied] = React16.useState(false);
|
|
12914
13069
|
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12915
13070
|
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12916
13071
|
label && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12947,14 +13102,14 @@ var Hash = ({
|
|
|
12947
13102
|
};
|
|
12948
13103
|
|
|
12949
13104
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
12950
|
-
var
|
|
13105
|
+
var import_react55 = require("react");
|
|
12951
13106
|
init_base();
|
|
12952
13107
|
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
12953
13108
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
12954
|
-
const [transactions, setTransactions] = (0,
|
|
12955
|
-
const [loading, setLoading] = (0,
|
|
12956
|
-
const [error, setError] = (0,
|
|
12957
|
-
(0,
|
|
13109
|
+
const [transactions, setTransactions] = (0, import_react55.useState)([]);
|
|
13110
|
+
const [loading, setLoading] = (0, import_react55.useState)(true);
|
|
13111
|
+
const [error, setError] = (0, import_react55.useState)(null);
|
|
13112
|
+
(0, import_react55.useEffect)(() => {
|
|
12958
13113
|
const fetchTransactions = async () => {
|
|
12959
13114
|
try {
|
|
12960
13115
|
setLoading(true);
|
|
@@ -13073,7 +13228,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
13073
13228
|
};
|
|
13074
13229
|
|
|
13075
13230
|
// src/hooks/useUserOpStatus.ts
|
|
13076
|
-
var
|
|
13231
|
+
var React18 = __toESM(require("react"), 1);
|
|
13077
13232
|
init_base();
|
|
13078
13233
|
function useUserOpStatus(options = {}) {
|
|
13079
13234
|
const {
|
|
@@ -13085,16 +13240,16 @@ function useUserOpStatus(options = {}) {
|
|
|
13085
13240
|
onReceipt,
|
|
13086
13241
|
onTxHash
|
|
13087
13242
|
} = options;
|
|
13088
|
-
const [state, setState] =
|
|
13089
|
-
const [receipt, setReceipt] =
|
|
13090
|
-
const [mempool, setMempool] =
|
|
13091
|
-
const [txHash, setTxHash] =
|
|
13092
|
-
const [error, setError] =
|
|
13093
|
-
const [isPolling, setIsPolling] =
|
|
13094
|
-
const intervalRef =
|
|
13095
|
-
const startTimeRef =
|
|
13096
|
-
const prevStateRef =
|
|
13097
|
-
const rpc =
|
|
13243
|
+
const [state, setState] = React18.useState("waiting");
|
|
13244
|
+
const [receipt, setReceipt] = React18.useState(null);
|
|
13245
|
+
const [mempool, setMempool] = React18.useState(null);
|
|
13246
|
+
const [txHash, setTxHash] = React18.useState(null);
|
|
13247
|
+
const [error, setError] = React18.useState(null);
|
|
13248
|
+
const [isPolling, setIsPolling] = React18.useState(false);
|
|
13249
|
+
const intervalRef = React18.useRef(null);
|
|
13250
|
+
const startTimeRef = React18.useRef(Date.now());
|
|
13251
|
+
const prevStateRef = React18.useRef("waiting");
|
|
13252
|
+
const rpc = React18.useCallback(async (method, params) => {
|
|
13098
13253
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
13099
13254
|
const res = await fetch(getBundlerUrl(), {
|
|
13100
13255
|
method: "POST",
|
|
@@ -13105,21 +13260,21 @@ function useUserOpStatus(options = {}) {
|
|
|
13105
13260
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
13106
13261
|
return json.result;
|
|
13107
13262
|
}, []);
|
|
13108
|
-
const extractMempoolInfo =
|
|
13263
|
+
const extractMempoolInfo = React18.useCallback((m) => {
|
|
13109
13264
|
if (!m) return null;
|
|
13110
13265
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
13111
13266
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
13112
13267
|
if (!entryPoint && !sender) return null;
|
|
13113
13268
|
return { entryPoint, sender };
|
|
13114
13269
|
}, []);
|
|
13115
|
-
const updateState =
|
|
13270
|
+
const updateState = React18.useCallback((newState) => {
|
|
13116
13271
|
setState(newState);
|
|
13117
13272
|
if (prevStateRef.current !== newState) {
|
|
13118
13273
|
prevStateRef.current = newState;
|
|
13119
13274
|
onStateChange?.(newState);
|
|
13120
13275
|
}
|
|
13121
13276
|
}, [onStateChange]);
|
|
13122
|
-
const tick =
|
|
13277
|
+
const tick = React18.useCallback(async () => {
|
|
13123
13278
|
if (!userOpHash || !enabled) return;
|
|
13124
13279
|
if (receipt) {
|
|
13125
13280
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13192,7 +13347,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13192
13347
|
onTxHash,
|
|
13193
13348
|
onReceipt
|
|
13194
13349
|
]);
|
|
13195
|
-
|
|
13350
|
+
React18.useEffect(() => {
|
|
13196
13351
|
if (!userOpHash || !enabled) return;
|
|
13197
13352
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13198
13353
|
startTimeRef.current = Date.now();
|
|
@@ -13204,7 +13359,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13204
13359
|
setError(null);
|
|
13205
13360
|
setIsPolling(false);
|
|
13206
13361
|
}, [userOpHash, enabled]);
|
|
13207
|
-
|
|
13362
|
+
React18.useEffect(() => {
|
|
13208
13363
|
if (!userOpHash || !enabled) {
|
|
13209
13364
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13210
13365
|
return;
|
|
@@ -13240,7 +13395,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13240
13395
|
}
|
|
13241
13396
|
};
|
|
13242
13397
|
}, [userOpHash, enabled, pollMs]);
|
|
13243
|
-
const refresh =
|
|
13398
|
+
const refresh = React18.useCallback(async () => {
|
|
13244
13399
|
await tick();
|
|
13245
13400
|
}, [tick]);
|
|
13246
13401
|
return {
|
|
@@ -13256,11 +13411,11 @@ function useUserOpStatus(options = {}) {
|
|
|
13256
13411
|
|
|
13257
13412
|
// src/hooks/useLogout.ts
|
|
13258
13413
|
var import_auth20 = require("@lumiapassport/core/auth");
|
|
13259
|
-
var
|
|
13414
|
+
var import_react56 = require("react");
|
|
13260
13415
|
function useLogout() {
|
|
13261
13416
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13262
13417
|
const { callbacks } = useLumiaPassportConfig();
|
|
13263
|
-
const logout2 = (0,
|
|
13418
|
+
const logout2 = (0, import_react56.useCallback)(async () => {
|
|
13264
13419
|
const prevAddress = address;
|
|
13265
13420
|
let userId = null;
|
|
13266
13421
|
setIsLoading(true);
|