@lumiapassport/ui-kit 1.14.0 → 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 +14 -36
- package/dist/iframe/main.js.map +1 -1
- package/dist/index.cjs +951 -855
- 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 +804 -717
- 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-\\[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-\\[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 (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-0{padding-top:0;padding-bottom:0}}@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.14.
|
|
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",
|
|
@@ -5058,6 +5051,7 @@ var DialogOverlay = (0, import_react4.forwardRef)(
|
|
|
5058
5051
|
ref,
|
|
5059
5052
|
style: { backdropFilter: "blur(var(--l-pass-backdrop-blur))" },
|
|
5060
5053
|
className: cn(
|
|
5054
|
+
"w-[100dvw] h-[100dvh]",
|
|
5061
5055
|
"fixed inset-0 z-[9998] bg-[var(--l-pass-overlay)]",
|
|
5062
5056
|
closing ? "animate-dialog-out" : "animate-dialog-in",
|
|
5063
5057
|
className
|
|
@@ -5070,7 +5064,7 @@ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
|
5070
5064
|
function useDecideContentStyles() {
|
|
5071
5065
|
const isMobileView = useLayoutStore((st) => st.isMobileView);
|
|
5072
5066
|
const isClosing = useLayoutStore((st) => !!st.isDialogOpen && !!st.isDialogClosing);
|
|
5073
|
-
const mobileStyles = isMobileView ? { "--l-pass-
|
|
5067
|
+
const mobileStyles = isMobileView ? { "--l-pass-bdrs": "20px 20px 0px 0px" } : {};
|
|
5074
5068
|
return {
|
|
5075
5069
|
isClosing,
|
|
5076
5070
|
isMobileView,
|
|
@@ -5088,15 +5082,17 @@ var DialogContent = (0, import_react4.forwardRef)(
|
|
|
5088
5082
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5089
5083
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
5090
5084
|
const { isMobileView, isClosing, style } = useDecideContentStyles();
|
|
5091
|
-
|
|
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: [
|
|
5092
5088
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, { closing: isClosing }),
|
|
5093
5089
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5094
5090
|
"div",
|
|
5095
5091
|
{
|
|
5096
5092
|
className: cn(
|
|
5097
|
-
"fixed inset-0 z-[9999] flex items-center justify-center pointer-events-none",
|
|
5098
|
-
|
|
5099
|
-
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"
|
|
5100
5096
|
),
|
|
5101
5097
|
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
5102
5098
|
DialogPrimitive.Content,
|
|
@@ -5104,10 +5100,10 @@ var DialogContent = (0, import_react4.forwardRef)(
|
|
|
5104
5100
|
ref,
|
|
5105
5101
|
style: !!className ? void 0 : CONTENT_BG_SETUP,
|
|
5106
5102
|
className: cn(
|
|
5107
|
-
"relative pointer-events-auto
|
|
5108
|
-
"
|
|
5109
|
-
"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)]",
|
|
5110
5105
|
"rounded-[var(--l-pass-bdrs)] overflow-hidden",
|
|
5106
|
+
isMobileView ? "w-[100dvw]" : "w-[var(--l-pass-maw)]",
|
|
5111
5107
|
className
|
|
5112
5108
|
),
|
|
5113
5109
|
...props,
|
|
@@ -5227,7 +5223,7 @@ function useAutoConnect() {
|
|
|
5227
5223
|
}
|
|
5228
5224
|
return { session: sess, address: addr };
|
|
5229
5225
|
} catch (error) {
|
|
5230
|
-
if (error?.code
|
|
5226
|
+
if (error?.code === "KEYSHARE_RECOVERY_NEEDED") {
|
|
5231
5227
|
setStatus("idle");
|
|
5232
5228
|
setPage("keyshare-restore" /* KEYSHARE_RESTORE */);
|
|
5233
5229
|
}
|
|
@@ -5342,7 +5338,9 @@ function useAutoConnect() {
|
|
|
5342
5338
|
setError(null);
|
|
5343
5339
|
setStatus("recovery_needed");
|
|
5344
5340
|
setIsLoading(false);
|
|
5345
|
-
|
|
5341
|
+
setTimeout(() => {
|
|
5342
|
+
setPage("keyshare-restore" /* KEYSHARE_RESTORE */);
|
|
5343
|
+
}, 500);
|
|
5346
5344
|
} else {
|
|
5347
5345
|
console.warn("[UI-KIT][AutoConnect] Unexpected error during auto-connect:", e);
|
|
5348
5346
|
setIsLoading(false);
|
|
@@ -5356,43 +5354,56 @@ function useAutoConnect() {
|
|
|
5356
5354
|
}
|
|
5357
5355
|
|
|
5358
5356
|
// src/internal/hooks/useBackupStatusChanges.ts
|
|
5357
|
+
var import_react_query4 = require("@tanstack/react-query");
|
|
5359
5358
|
var import_react6 = require("react");
|
|
5360
5359
|
init_vaultClient();
|
|
5360
|
+
var NO_BACKUP_WARN_DELAY_MS = 5e3;
|
|
5361
5361
|
function useBackupStatusChanges() {
|
|
5362
5362
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5363
|
-
(0, import_react6.
|
|
5364
|
-
|
|
5363
|
+
const noBackupWarnTimeout = (0, import_react6.useRef)(null);
|
|
5364
|
+
const { mutate: handleBackupStatusChanged } = (0, import_react_query4.useMutation)({
|
|
5365
|
+
mutationFn: async (event) => {
|
|
5365
5366
|
const customEvent = event;
|
|
5366
|
-
|
|
5367
|
-
|
|
5368
|
-
|
|
5369
|
-
|
|
5370
|
-
|
|
5371
|
-
if (
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
5375
|
-
setHasServerVault(!!hasRecoveryData);
|
|
5376
|
-
} catch (e) {
|
|
5377
|
-
console.warn("[UI-KIT] Failed to refresh vault status after backup:", e);
|
|
5378
|
-
}
|
|
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;
|
|
5379
5375
|
}
|
|
5380
|
-
|
|
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)(() => {
|
|
5381
5392
|
window.addEventListener("lumia-passport-backup-status-changed", handleBackupStatusChanged);
|
|
5382
5393
|
return () => {
|
|
5383
5394
|
window.removeEventListener("lumia-passport-backup-status-changed", handleBackupStatusChanged);
|
|
5384
5395
|
};
|
|
5385
|
-
}, [
|
|
5396
|
+
}, []);
|
|
5386
5397
|
}
|
|
5387
5398
|
|
|
5388
5399
|
// src/internal/hooks/useCheckVaultStatus.ts
|
|
5389
|
-
var
|
|
5400
|
+
var import_react_query5 = require("@tanstack/react-query");
|
|
5390
5401
|
var import_react7 = require("react");
|
|
5391
5402
|
init_vaultClient();
|
|
5392
5403
|
function useCheckVaultStatus() {
|
|
5393
5404
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5394
5405
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5395
|
-
const { mutate: checkVaultStatus } = (0,
|
|
5406
|
+
const { mutate: checkVaultStatus } = (0, import_react_query5.useMutation)({
|
|
5396
5407
|
mutationFn: async () => {
|
|
5397
5408
|
const stats = await getShareRecoveryStats();
|
|
5398
5409
|
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
@@ -5436,12 +5447,12 @@ function useDetectMaxScrollHeight() {
|
|
|
5436
5447
|
}
|
|
5437
5448
|
|
|
5438
5449
|
// src/internal/hooks/usePageMapper.tsx
|
|
5439
|
-
var
|
|
5450
|
+
var import_react43 = require("react");
|
|
5440
5451
|
|
|
5441
5452
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5442
5453
|
var import_framer_motion = require("framer-motion");
|
|
5443
5454
|
var import_lucide_react14 = require("lucide-react");
|
|
5444
|
-
var
|
|
5455
|
+
var import_react19 = require("react");
|
|
5445
5456
|
|
|
5446
5457
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5447
5458
|
var import_lucide_react6 = require("lucide-react");
|
|
@@ -6001,12 +6012,13 @@ function PassKeyStep(props) {
|
|
|
6001
6012
|
|
|
6002
6013
|
// src/internal/components/AuthMenu/SignInStep/SignInStep.tsx
|
|
6003
6014
|
var import_lucide_react12 = require("lucide-react");
|
|
6004
|
-
var
|
|
6015
|
+
var import_react15 = require("react");
|
|
6005
6016
|
|
|
6006
6017
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
6007
6018
|
init_lumiaPassport();
|
|
6008
|
-
var
|
|
6019
|
+
var import_react_query6 = require("@tanstack/react-query");
|
|
6009
6020
|
var import_lucide_react9 = require("lucide-react");
|
|
6021
|
+
var import_react13 = require("react");
|
|
6010
6022
|
init_projectId();
|
|
6011
6023
|
|
|
6012
6024
|
// src/internal/components/ui/highlight.tsx
|
|
@@ -6023,7 +6035,7 @@ function Highlight(props) {
|
|
|
6023
6035
|
"div",
|
|
6024
6036
|
{
|
|
6025
6037
|
className: cn(
|
|
6026
|
-
"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",
|
|
6027
6039
|
CARD_STYLES[type],
|
|
6028
6040
|
className
|
|
6029
6041
|
),
|
|
@@ -6035,14 +6047,12 @@ function Highlight(props) {
|
|
|
6035
6047
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
6036
6048
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
6037
6049
|
function Email() {
|
|
6038
|
-
const {
|
|
6039
|
-
|
|
6040
|
-
callbacks
|
|
6041
|
-
} = useLumiaPassportConfig();
|
|
6050
|
+
const { config, callbacks } = useLumiaPassportConfig();
|
|
6051
|
+
const buttonRef = (0, import_react13.useRef)(null);
|
|
6042
6052
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6043
6053
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6044
6054
|
const { email, codeSendError, alert: alert2, setEmail, setCodeSendError, setExpiresIn, setStep, setAlert } = useAuthStore();
|
|
6045
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
6055
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query6.useMutation)({
|
|
6046
6056
|
mutationFn: async (mail) => {
|
|
6047
6057
|
const isEmailValid = mail.length !== 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail);
|
|
6048
6058
|
if (!isEmailValid) {
|
|
@@ -6082,35 +6092,48 @@ function Email() {
|
|
|
6082
6092
|
}
|
|
6083
6093
|
});
|
|
6084
6094
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6085
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
autoComplete: "off",
|
|
6093
|
-
placeholder: config.email.placeholder,
|
|
6094
|
-
value: email,
|
|
6095
|
-
className: "flex-1 w-full",
|
|
6096
|
-
onChange: (e) => {
|
|
6097
|
-
if (alert2) setAlert(null);
|
|
6098
|
-
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();
|
|
6099
6102
|
}
|
|
6100
|
-
}
|
|
6101
|
-
|
|
6102
|
-
|
|
6103
|
-
|
|
6104
|
-
|
|
6105
|
-
|
|
6106
|
-
|
|
6107
|
-
|
|
6108
|
-
|
|
6109
|
-
|
|
6110
|
-
|
|
6111
|
-
|
|
6112
|
-
|
|
6113
|
-
|
|
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
|
+
),
|
|
6114
6137
|
!!codeSendError && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
6115
6138
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react9.Mail, { className: "w-4 h-4" }),
|
|
6116
6139
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: codeSendError })
|
|
@@ -6134,7 +6157,7 @@ function ErrorAlert(props) {
|
|
|
6134
6157
|
|
|
6135
6158
|
// src/internal/components/AuthMenu/SignInStep/Social.tsx
|
|
6136
6159
|
var import_lucide_react11 = require("lucide-react");
|
|
6137
|
-
var
|
|
6160
|
+
var import_react14 = require("react");
|
|
6138
6161
|
init_assets();
|
|
6139
6162
|
init_lumiaPassport();
|
|
6140
6163
|
init_auth();
|
|
@@ -6225,7 +6248,7 @@ function Social(props) {
|
|
|
6225
6248
|
setPasskeyError,
|
|
6226
6249
|
setPasskeyStatus
|
|
6227
6250
|
} = useAuthStore();
|
|
6228
|
-
const onSocialAuth = (0,
|
|
6251
|
+
const onSocialAuth = (0, import_react14.useCallback)(
|
|
6229
6252
|
async (providerId) => {
|
|
6230
6253
|
const normalizedProviderId = providerId.toLowerCase();
|
|
6231
6254
|
const provider = config.current?.social?.providers?.find(
|
|
@@ -6636,7 +6659,7 @@ function SignInStep(props) {
|
|
|
6636
6659
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "font-bold text-xl leading-6", children: "Sign In" })
|
|
6637
6660
|
] }),
|
|
6638
6661
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6639
|
-
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: [
|
|
6640
6663
|
idx > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center", children: [
|
|
6641
6664
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
6642
6665
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex-none px-2 text-xs leading-4", children: "Or sign in using" }),
|
|
@@ -6663,19 +6686,19 @@ function SignInStep(props) {
|
|
|
6663
6686
|
}
|
|
6664
6687
|
|
|
6665
6688
|
// src/internal/components/AuthMenu/useAuthMenuHanders.ts
|
|
6666
|
-
var
|
|
6689
|
+
var import_react16 = require("react");
|
|
6667
6690
|
init_auth();
|
|
6668
6691
|
function useAuthMenuHandlers() {
|
|
6669
6692
|
const {
|
|
6670
6693
|
config: { current: config },
|
|
6671
6694
|
callbacks
|
|
6672
6695
|
} = useLumiaPassportConfig();
|
|
6673
|
-
const pendingLoginResponseRef = (0,
|
|
6696
|
+
const pendingLoginResponseRef = (0, import_react16.useRef)(null);
|
|
6674
6697
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6675
|
-
const [telegramCleanup, setTelegramCleanup] = (0,
|
|
6698
|
+
const [telegramCleanup, setTelegramCleanup] = (0, import_react16.useState)(null);
|
|
6676
6699
|
const { usePaymaster, setError, setStatus, setSession, setAddress, setRecoveryUserId, setHasServerVault } = useLumiaPassportSession();
|
|
6677
6700
|
const { setStep, setVerificationError, setCodeSendError, setFailedMessage } = useAuthStore();
|
|
6678
|
-
const createSessionWithKeyshare = (0,
|
|
6701
|
+
const createSessionWithKeyshare = (0, import_react16.useCallback)(
|
|
6679
6702
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
6680
6703
|
try {
|
|
6681
6704
|
try {
|
|
@@ -6709,7 +6732,7 @@ function useAuthMenuHandlers() {
|
|
|
6709
6732
|
},
|
|
6710
6733
|
[setStatus, callbacks, usePaymaster]
|
|
6711
6734
|
);
|
|
6712
|
-
const onAuthSuccess = (0,
|
|
6735
|
+
const onAuthSuccess = (0, import_react16.useCallback)(async () => {
|
|
6713
6736
|
console.log("[ConnectWalletButton] handleAuthModalSuccess called");
|
|
6714
6737
|
const loginResponse = pendingLoginResponseRef.current;
|
|
6715
6738
|
console.log("[ConnectWalletButton] loginResponse:", loginResponse);
|
|
@@ -6782,7 +6805,9 @@ function useAuthMenuHandlers() {
|
|
|
6782
6805
|
setError(null);
|
|
6783
6806
|
setRecoveryUserId(userId);
|
|
6784
6807
|
setStatus("recovery_needed");
|
|
6785
|
-
|
|
6808
|
+
setTimeout(() => {
|
|
6809
|
+
setPage("keyshare-restore" /* KEYSHARE_RESTORE */);
|
|
6810
|
+
}, 500);
|
|
6786
6811
|
} else {
|
|
6787
6812
|
pendingLoginResponseRef.current = null;
|
|
6788
6813
|
await import_auth3.jwtTokenManager.clearTokens();
|
|
@@ -6804,7 +6829,7 @@ function useAuthMenuHandlers() {
|
|
|
6804
6829
|
setHasServerVault,
|
|
6805
6830
|
createSessionWithKeyshare
|
|
6806
6831
|
]);
|
|
6807
|
-
const checkDisplayNameRequired = (0,
|
|
6832
|
+
const checkDisplayNameRequired = (0, import_react16.useCallback)(
|
|
6808
6833
|
async (loginResponse) => {
|
|
6809
6834
|
if (!config.features.displayNameNeeded) {
|
|
6810
6835
|
return false;
|
|
@@ -6831,7 +6856,7 @@ function useAuthMenuHandlers() {
|
|
|
6831
6856
|
},
|
|
6832
6857
|
[config.features.displayNameNeeded]
|
|
6833
6858
|
);
|
|
6834
|
-
const goBackToSignIn = (0,
|
|
6859
|
+
const goBackToSignIn = (0, import_react16.useCallback)(() => {
|
|
6835
6860
|
setStep("signin");
|
|
6836
6861
|
setVerificationError("");
|
|
6837
6862
|
setCodeSendError("");
|
|
@@ -6849,11 +6874,11 @@ function useAuthMenuHandlers() {
|
|
|
6849
6874
|
}
|
|
6850
6875
|
|
|
6851
6876
|
// src/internal/components/AuthMenu/useListenIframeAuthEvents.ts
|
|
6852
|
-
var
|
|
6877
|
+
var import_react17 = require("react");
|
|
6853
6878
|
function useListenIframeAuthEvents() {
|
|
6854
6879
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
6855
6880
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
6856
|
-
const handleIframeMessage = (0,
|
|
6881
|
+
const handleIframeMessage = (0, import_react17.useCallback)(
|
|
6857
6882
|
(event) => {
|
|
6858
6883
|
console.log("[AuthMenu] Received iframe message:", event.data);
|
|
6859
6884
|
if (event.data?.type === "LUMIA_PASSPORT_IFRAME_READY") {
|
|
@@ -6871,7 +6896,7 @@ function useListenIframeAuthEvents() {
|
|
|
6871
6896
|
},
|
|
6872
6897
|
[setPage, setIsIframeReady]
|
|
6873
6898
|
);
|
|
6874
|
-
(0,
|
|
6899
|
+
(0, import_react17.useEffect)(() => {
|
|
6875
6900
|
window.addEventListener("message", handleIframeMessage);
|
|
6876
6901
|
return () => window.removeEventListener("message", handleIframeMessage);
|
|
6877
6902
|
}, [handleIframeMessage]);
|
|
@@ -6879,7 +6904,7 @@ function useListenIframeAuthEvents() {
|
|
|
6879
6904
|
|
|
6880
6905
|
// src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
|
|
6881
6906
|
init_lumiaPassport();
|
|
6882
|
-
var
|
|
6907
|
+
var import_react_query7 = require("@tanstack/react-query");
|
|
6883
6908
|
var import_lucide_react13 = require("lucide-react");
|
|
6884
6909
|
|
|
6885
6910
|
// src/internal/assets/OtpIcon.tsx
|
|
@@ -6900,21 +6925,21 @@ init_auth();
|
|
|
6900
6925
|
init_projectId();
|
|
6901
6926
|
|
|
6902
6927
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
6903
|
-
var
|
|
6928
|
+
var import_react18 = require("react");
|
|
6904
6929
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
6905
6930
|
var VerificationCodeInput = (props) => {
|
|
6906
6931
|
const { onVerifyCode, onResendCode, isLoading, expiresIn, error } = props;
|
|
6907
6932
|
const setVerificationError = useAuthStore((st) => st.setVerificationError);
|
|
6908
|
-
const [timeLeft, setTimeLeft] = (0,
|
|
6909
|
-
(0,
|
|
6910
|
-
(0,
|
|
6933
|
+
const [timeLeft, setTimeLeft] = (0, import_react18.useState)(expiresIn);
|
|
6934
|
+
(0, import_react18.useEffect)(() => setTimeLeft(expiresIn), [expiresIn]);
|
|
6935
|
+
(0, import_react18.useEffect)(() => {
|
|
6911
6936
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
6912
6937
|
return () => clearInterval(t);
|
|
6913
6938
|
}, []);
|
|
6914
|
-
const lastSubmittedRef = (0,
|
|
6915
|
-
const inputsRef = (0,
|
|
6916
|
-
const [digits, setDigits] = (0,
|
|
6917
|
-
(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)(() => {
|
|
6918
6943
|
const code = digits.join("");
|
|
6919
6944
|
if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
|
|
6920
6945
|
if (lastSubmittedRef.current !== code) {
|
|
@@ -6923,7 +6948,7 @@ var VerificationCodeInput = (props) => {
|
|
|
6923
6948
|
}
|
|
6924
6949
|
}
|
|
6925
6950
|
}, [digits, isLoading, onVerifyCode]);
|
|
6926
|
-
(0,
|
|
6951
|
+
(0, import_react18.useEffect)(() => {
|
|
6927
6952
|
const t = setTimeout(() => {
|
|
6928
6953
|
inputsRef.current[0]?.focus();
|
|
6929
6954
|
}, 0);
|
|
@@ -7048,7 +7073,7 @@ function VerifyStep(props) {
|
|
|
7048
7073
|
setEmail,
|
|
7049
7074
|
setExpiresIn
|
|
7050
7075
|
} = useAuthStore();
|
|
7051
|
-
const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0,
|
|
7076
|
+
const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0, import_react_query7.useMutation)({
|
|
7052
7077
|
mutationFn: async (code) => {
|
|
7053
7078
|
setIsLoading(true);
|
|
7054
7079
|
setVerificationError("");
|
|
@@ -7121,7 +7146,7 @@ function VerifyStep(props) {
|
|
|
7121
7146
|
setIsLoading(false);
|
|
7122
7147
|
}
|
|
7123
7148
|
});
|
|
7124
|
-
const { mutate: onResendCode, isPending: isCodeResending } = (0,
|
|
7149
|
+
const { mutate: onResendCode, isPending: isCodeResending } = (0, import_react_query7.useMutation)({
|
|
7125
7150
|
mutationFn: async () => {
|
|
7126
7151
|
setVerificationError("");
|
|
7127
7152
|
setIsLoading(true);
|
|
@@ -7199,7 +7224,7 @@ var AuthMenu = () => {
|
|
|
7199
7224
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7200
7225
|
const page = useLayoutDataStore((st) => st.page);
|
|
7201
7226
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7202
|
-
(0,
|
|
7227
|
+
(0, import_react19.useEffect)(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
7203
7228
|
const {
|
|
7204
7229
|
step,
|
|
7205
7230
|
setStep,
|
|
@@ -7210,7 +7235,7 @@ var AuthMenu = () => {
|
|
|
7210
7235
|
setFailedMessage,
|
|
7211
7236
|
setCodeSendError
|
|
7212
7237
|
} = useAuthStore();
|
|
7213
|
-
(0,
|
|
7238
|
+
(0, import_react19.useEffect)(() => {
|
|
7214
7239
|
if (page !== "auth" /* AUTH */) {
|
|
7215
7240
|
setStep("signin");
|
|
7216
7241
|
setEmail("");
|
|
@@ -7229,7 +7254,7 @@ var AuthMenu = () => {
|
|
|
7229
7254
|
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Initializing wallet..." })
|
|
7230
7255
|
] });
|
|
7231
7256
|
}
|
|
7232
|
-
const stepContent = (0,
|
|
7257
|
+
const stepContent = (0, import_react19.useMemo)(
|
|
7233
7258
|
() => ({
|
|
7234
7259
|
"failed": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(AuthFailedStep, {}),
|
|
7235
7260
|
"display-name": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DisplayNameStep, { onAuthSuccess }),
|
|
@@ -7375,9 +7400,9 @@ function RampnowIcon() {
|
|
|
7375
7400
|
}
|
|
7376
7401
|
|
|
7377
7402
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7378
|
-
var
|
|
7403
|
+
var import_react_query8 = require("@tanstack/react-query");
|
|
7379
7404
|
var import_lucide_react15 = require("lucide-react");
|
|
7380
|
-
var
|
|
7405
|
+
var import_react21 = require("react");
|
|
7381
7406
|
|
|
7382
7407
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7383
7408
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
@@ -7474,7 +7499,7 @@ async function createPreorderMutation(payload) {
|
|
|
7474
7499
|
}
|
|
7475
7500
|
|
|
7476
7501
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7477
|
-
var
|
|
7502
|
+
var import_react20 = require("react");
|
|
7478
7503
|
|
|
7479
7504
|
// src/internal/components/BuyMenu/binance/utils.ts
|
|
7480
7505
|
function getPayMethodID(pm) {
|
|
@@ -7494,7 +7519,7 @@ function handleErrors(errors) {
|
|
|
7494
7519
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7495
7520
|
var useQueriesErrorHandler = (errors, stateUpdater) => {
|
|
7496
7521
|
const { error: errorTitle, message: errorMessage } = handleErrors(errors);
|
|
7497
|
-
(0,
|
|
7522
|
+
(0, import_react20.useEffect)(() => {
|
|
7498
7523
|
if (!errorTitle && !errorMessage) return;
|
|
7499
7524
|
console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
|
|
7500
7525
|
stateUpdater(1);
|
|
@@ -7519,12 +7544,12 @@ function Binance(props) {
|
|
|
7519
7544
|
setMinAmount,
|
|
7520
7545
|
setSrcInputAmount
|
|
7521
7546
|
} = control;
|
|
7522
|
-
const qc = (0,
|
|
7547
|
+
const qc = (0, import_react_query8.useQueryClient)();
|
|
7523
7548
|
const {
|
|
7524
7549
|
data: lumiaNetwork,
|
|
7525
7550
|
isLoading: isLumiaNetworkLoading,
|
|
7526
7551
|
error: lumiaNetworkError
|
|
7527
|
-
} = (0,
|
|
7552
|
+
} = (0, import_react_query8.useQuery)({
|
|
7528
7553
|
retry: false,
|
|
7529
7554
|
enabled: !!walletAddress,
|
|
7530
7555
|
queryKey: [QUERY_KEYS2.binanceNetworksQuery, walletAddress],
|
|
@@ -7535,27 +7560,27 @@ function Binance(props) {
|
|
|
7535
7560
|
data: paymentModes = null,
|
|
7536
7561
|
isLoading: isPaymentModesLoading,
|
|
7537
7562
|
error: paymentMethodsError
|
|
7538
|
-
} = (0,
|
|
7563
|
+
} = (0, import_react_query8.useQuery)({
|
|
7539
7564
|
retry: false,
|
|
7540
7565
|
enabled: !!isLumiaAvailable && !!walletAddress,
|
|
7541
7566
|
// && srcQueryAmount > 0,
|
|
7542
7567
|
queryKey: [QUERY_KEYS2.binancePaymentModes, walletAddress, isLumiaAvailable, srcQueryAmount],
|
|
7543
7568
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7544
7569
|
});
|
|
7545
|
-
const lastLoadedPaymentModes = (0,
|
|
7546
|
-
(0,
|
|
7570
|
+
const lastLoadedPaymentModes = (0, import_react21.useRef)([]);
|
|
7571
|
+
(0, import_react21.useEffect)(() => {
|
|
7547
7572
|
if (!paymentModes?.length) return;
|
|
7548
7573
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
7549
7574
|
lastLoadedPaymentModes.current = paymentModes;
|
|
7550
7575
|
}, [paymentModes]);
|
|
7551
7576
|
const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
|
|
7552
7577
|
const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
|
|
7553
|
-
(0,
|
|
7578
|
+
(0, import_react21.useEffect)(() => setMinAmount(minimum), [minimum]);
|
|
7554
7579
|
const {
|
|
7555
7580
|
data: quoteData = null,
|
|
7556
7581
|
isLoading: isQuoteDataLoading,
|
|
7557
7582
|
error: quoteError
|
|
7558
|
-
} = (0,
|
|
7583
|
+
} = (0, import_react_query8.useQuery)({
|
|
7559
7584
|
retry: false,
|
|
7560
7585
|
enabled: !!walletAddress && srcQueryAmount > 0 && minimum > 0 && srcQueryAmount >= minimum,
|
|
7561
7586
|
queryKey: [QUERY_KEYS2.binanceQuote, walletAddress, selectedPaymentMode, srcQueryAmount],
|
|
@@ -7571,7 +7596,7 @@ function Binance(props) {
|
|
|
7571
7596
|
[lumiaNetworkError, paymentMethodsError, quoteError],
|
|
7572
7597
|
setSrcInputAmount
|
|
7573
7598
|
);
|
|
7574
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0,
|
|
7599
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query8.useMutation)({
|
|
7575
7600
|
mutationFn: async () => {
|
|
7576
7601
|
setRedirecting(true);
|
|
7577
7602
|
const returnUrl = window.location.href.split("?")[0];
|
|
@@ -7595,7 +7620,7 @@ function Binance(props) {
|
|
|
7595
7620
|
setRedirecting(false);
|
|
7596
7621
|
}
|
|
7597
7622
|
});
|
|
7598
|
-
(0,
|
|
7623
|
+
(0, import_react21.useEffect)(() => {
|
|
7599
7624
|
return () => {
|
|
7600
7625
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceNetworksQuery] });
|
|
7601
7626
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binancePaymentModes] });
|
|
@@ -7644,7 +7669,7 @@ function Binance(props) {
|
|
|
7644
7669
|
{
|
|
7645
7670
|
size: "large",
|
|
7646
7671
|
disabled: isContinueDisabled,
|
|
7647
|
-
className: cn("w-full h-12", { "cursor-pointer": !isContinueDisabled }),
|
|
7672
|
+
className: cn("w-full h-12 flex-none", { "cursor-pointer": !isContinueDisabled }),
|
|
7648
7673
|
variant: "default",
|
|
7649
7674
|
onClick: () => checkoutFundWalletOrder(),
|
|
7650
7675
|
children: [
|
|
@@ -7657,9 +7682,9 @@ function Binance(props) {
|
|
|
7657
7682
|
}
|
|
7658
7683
|
|
|
7659
7684
|
// src/internal/components/BuyMenu/rampnow/Rampnow.tsx
|
|
7660
|
-
var
|
|
7685
|
+
var import_react_query9 = require("@tanstack/react-query");
|
|
7661
7686
|
var import_lucide_react16 = require("lucide-react");
|
|
7662
|
-
var
|
|
7687
|
+
var import_react22 = require("react");
|
|
7663
7688
|
|
|
7664
7689
|
// src/internal/components/BuyMenu/rampnow/api.ts
|
|
7665
7690
|
init_iframe_manager();
|
|
@@ -7723,8 +7748,8 @@ function Rampnow(props) {
|
|
|
7723
7748
|
setSrcInputAmount,
|
|
7724
7749
|
setMinAmount
|
|
7725
7750
|
} = control;
|
|
7726
|
-
const qc = (0,
|
|
7727
|
-
(0,
|
|
7751
|
+
const qc = (0, import_react_query9.useQueryClient)();
|
|
7752
|
+
(0, import_react22.useEffect)(() => {
|
|
7728
7753
|
setMinAmount(MINIMUM_RAMP_AMOUNT);
|
|
7729
7754
|
setPaymentMode(PAYMENT_MODES[0].id);
|
|
7730
7755
|
}, []);
|
|
@@ -7732,7 +7757,7 @@ function Rampnow(props) {
|
|
|
7732
7757
|
data: configData,
|
|
7733
7758
|
isLoading: isConfigLoading,
|
|
7734
7759
|
error: configError
|
|
7735
|
-
} = (0,
|
|
7760
|
+
} = (0, import_react_query9.useQuery)({
|
|
7736
7761
|
retry: false,
|
|
7737
7762
|
enabled: !!walletAddress,
|
|
7738
7763
|
queryKey: [QUERY_KEYS2.getRampNowConfig, walletAddress],
|
|
@@ -7742,7 +7767,7 @@ function Rampnow(props) {
|
|
|
7742
7767
|
data: quoteData,
|
|
7743
7768
|
isLoading: isQuoteDataLoading,
|
|
7744
7769
|
error: quoteError
|
|
7745
|
-
} = (0,
|
|
7770
|
+
} = (0, import_react_query9.useQuery)({
|
|
7746
7771
|
retry: false,
|
|
7747
7772
|
enabled: !!configData && !!walletAddress && !!paymentMode && srcQueryAmount >= MINIMUM_RAMP_AMOUNT,
|
|
7748
7773
|
queryKey: [QUERY_KEYS2.getRampNowQuote, walletAddress, srcQueryAmount, paymentMode],
|
|
@@ -7752,7 +7777,7 @@ function Rampnow(props) {
|
|
|
7752
7777
|
paymentMode
|
|
7753
7778
|
})
|
|
7754
7779
|
});
|
|
7755
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0,
|
|
7780
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query9.useMutation)({
|
|
7756
7781
|
mutationFn: async () => {
|
|
7757
7782
|
if (!configData?.apiKey?.length || !configData?.orderUrl?.length) {
|
|
7758
7783
|
throw new Error("RampNow order service is not available");
|
|
@@ -7781,7 +7806,7 @@ function Rampnow(props) {
|
|
|
7781
7806
|
console.error("Create CheckoutOrder failed:", err);
|
|
7782
7807
|
}
|
|
7783
7808
|
});
|
|
7784
|
-
(0,
|
|
7809
|
+
(0, import_react22.useEffect)(() => {
|
|
7785
7810
|
return () => {
|
|
7786
7811
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowConfig] });
|
|
7787
7812
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowQuote] });
|
|
@@ -7827,7 +7852,7 @@ function Rampnow(props) {
|
|
|
7827
7852
|
{
|
|
7828
7853
|
size: "large",
|
|
7829
7854
|
disabled: isContinueDisabled,
|
|
7830
|
-
className: cn("w-full h-12", { "cursor-pointer": !isContinueDisabled }),
|
|
7855
|
+
className: cn("w-full h-12 flex-none", { "cursor-pointer": !isContinueDisabled }),
|
|
7831
7856
|
variant: "default",
|
|
7832
7857
|
onClick: () => checkoutFundWalletOrder(),
|
|
7833
7858
|
children: [
|
|
@@ -7863,7 +7888,7 @@ var RAMP_PROVIDERS = {
|
|
|
7863
7888
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
7864
7889
|
|
|
7865
7890
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7866
|
-
var
|
|
7891
|
+
var import_react23 = require("react");
|
|
7867
7892
|
|
|
7868
7893
|
// src/internal/utils/debounce.ts
|
|
7869
7894
|
function debounce2(func, waitFor) {
|
|
@@ -7877,14 +7902,14 @@ function debounce2(func, waitFor) {
|
|
|
7877
7902
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7878
7903
|
var ON_INPUT_QUERY_DELAY = 2e3;
|
|
7879
7904
|
var useSelectables = () => {
|
|
7880
|
-
const [redirecting, setRedirecting] = (0,
|
|
7881
|
-
const [rampProvider, setrRampProvider] = (0,
|
|
7882
|
-
const [minAmount, setMinAmount] = (0,
|
|
7883
|
-
const inputRef = (0,
|
|
7884
|
-
const [srcQueryAmount, setSrcQueryAmount] = (0,
|
|
7885
|
-
const [srcInputAmount, setSrcInputAmount] = (0,
|
|
7886
|
-
const [paymentMode, setPaymentMode] = (0,
|
|
7887
|
-
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)(
|
|
7888
7913
|
debounce2((inputAmount) => {
|
|
7889
7914
|
const checkedValue = Math.max(inputAmount, minAmount);
|
|
7890
7915
|
setSrcInputAmount(checkedValue);
|
|
@@ -7892,7 +7917,7 @@ var useSelectables = () => {
|
|
|
7892
7917
|
}, ON_INPUT_QUERY_DELAY),
|
|
7893
7918
|
[minAmount]
|
|
7894
7919
|
);
|
|
7895
|
-
(0,
|
|
7920
|
+
(0, import_react23.useEffect)(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
|
|
7896
7921
|
return {
|
|
7897
7922
|
inputRef,
|
|
7898
7923
|
redirecting,
|
|
@@ -7925,14 +7950,17 @@ function BuyMenu() {
|
|
|
7925
7950
|
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
7926
7951
|
"div",
|
|
7927
7952
|
{
|
|
7928
|
-
style: {
|
|
7953
|
+
style: {
|
|
7954
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
7955
|
+
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
7956
|
+
},
|
|
7929
7957
|
className: "list-scrollbar-y w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]",
|
|
7930
7958
|
children: [
|
|
7931
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-
|
|
7959
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
7932
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" }) }),
|
|
7933
7961
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-xl font-semibold", children: "Buy LUMIA" })
|
|
7934
7962
|
] }),
|
|
7935
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "w-full flex items-center gap-
|
|
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)(
|
|
7936
7964
|
Button,
|
|
7937
7965
|
{
|
|
7938
7966
|
type: "button",
|
|
@@ -7944,7 +7972,7 @@ function BuyMenu() {
|
|
|
7944
7972
|
},
|
|
7945
7973
|
id
|
|
7946
7974
|
)) }),
|
|
7947
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
7975
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ProviderComponent, { control, walletAddress })
|
|
7948
7976
|
]
|
|
7949
7977
|
}
|
|
7950
7978
|
);
|
|
@@ -7952,7 +7980,7 @@ function BuyMenu() {
|
|
|
7952
7980
|
|
|
7953
7981
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7954
7982
|
var import_lucide_react19 = require("lucide-react");
|
|
7955
|
-
var
|
|
7983
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
7956
7984
|
init_iframe_manager();
|
|
7957
7985
|
|
|
7958
7986
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -7988,30 +8016,30 @@ function KeyshareBackupMenu() {
|
|
|
7988
8016
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
7989
8017
|
const userId = session?.mpcUserId || "";
|
|
7990
8018
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
7991
|
-
(0,
|
|
8019
|
+
(0, import_react24.useEffect)(() => {
|
|
7992
8020
|
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
7993
8021
|
}, [userId, setPage]);
|
|
7994
|
-
const [backupStatus, setBackupStatus] =
|
|
8022
|
+
const [backupStatus, setBackupStatus] = import_react24.default.useState({
|
|
7995
8023
|
server: {},
|
|
7996
8024
|
cloud: {},
|
|
7997
8025
|
local: {}
|
|
7998
8026
|
});
|
|
7999
|
-
const [loading, setLoading] =
|
|
8027
|
+
const [loading, setLoading] = import_react24.default.useState({
|
|
8000
8028
|
server: false,
|
|
8001
8029
|
cloud: false,
|
|
8002
8030
|
local: false
|
|
8003
8031
|
});
|
|
8004
|
-
const [error, setError] =
|
|
8005
|
-
const [success, setSuccess] =
|
|
8006
|
-
const [showPassword, setShowPassword] =
|
|
8007
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8008
|
-
const [customPassword, setCustomPassword] =
|
|
8009
|
-
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(
|
|
8010
8038
|
[]
|
|
8011
8039
|
);
|
|
8012
|
-
const [selectedCloudProvider, setSelectedCloudProvider] =
|
|
8013
|
-
const [hasKeyshareData, setHasKeyshareData] =
|
|
8014
|
-
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(() => {
|
|
8015
8043
|
try {
|
|
8016
8044
|
return getIframeManager();
|
|
8017
8045
|
} catch (e) {
|
|
@@ -8019,7 +8047,7 @@ function KeyshareBackupMenu() {
|
|
|
8019
8047
|
return null;
|
|
8020
8048
|
}
|
|
8021
8049
|
}, []);
|
|
8022
|
-
(0,
|
|
8050
|
+
(0, import_react24.useEffect)(() => {
|
|
8023
8051
|
const loadCloudProviders = async () => {
|
|
8024
8052
|
try {
|
|
8025
8053
|
const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
|
|
@@ -8039,7 +8067,7 @@ function KeyshareBackupMenu() {
|
|
|
8039
8067
|
};
|
|
8040
8068
|
loadCloudProviders();
|
|
8041
8069
|
}, [selectedCloudProvider]);
|
|
8042
|
-
const refreshStatus =
|
|
8070
|
+
const refreshStatus = import_react24.default.useCallback(async () => {
|
|
8043
8071
|
if (!iframeManager) return;
|
|
8044
8072
|
try {
|
|
8045
8073
|
const status = await iframeManager.getBackupStatus(userId);
|
|
@@ -8048,7 +8076,7 @@ function KeyshareBackupMenu() {
|
|
|
8048
8076
|
console.error("[KeyshareBackup] Failed to get backup status:", error2);
|
|
8049
8077
|
}
|
|
8050
8078
|
}, [iframeManager, userId]);
|
|
8051
|
-
(0,
|
|
8079
|
+
(0, import_react24.useEffect)(() => {
|
|
8052
8080
|
refreshStatus();
|
|
8053
8081
|
}, [refreshStatus]);
|
|
8054
8082
|
const handleBackup = async (method) => {
|
|
@@ -8277,21 +8305,21 @@ function KeyshareBackupMenu() {
|
|
|
8277
8305
|
}
|
|
8278
8306
|
|
|
8279
8307
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8280
|
-
var
|
|
8308
|
+
var import_react_query10 = require("@tanstack/react-query");
|
|
8281
8309
|
var import_lucide_react22 = require("lucide-react");
|
|
8282
|
-
var
|
|
8310
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
8283
8311
|
init_vaultClient();
|
|
8284
8312
|
|
|
8285
8313
|
// src/internal/components/KeyshareRestoreMenu/NoBackupFound.tsx
|
|
8286
8314
|
var import_lucide_react20 = require("lucide-react");
|
|
8287
|
-
var
|
|
8315
|
+
var import_react25 = require("react");
|
|
8288
8316
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
8289
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.`;
|
|
8290
8318
|
var ACCOUNT_FILE_RECOVERY_TEXT = `Try uploading a backup file if you have one saved locally, or create a different new account`;
|
|
8291
8319
|
function NoBackupFound(props) {
|
|
8292
8320
|
const { isLoading, restoreFromFile } = props;
|
|
8293
|
-
const [restoreFile, setRestoreFile] = (0,
|
|
8294
|
-
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: [
|
|
8295
8323
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Highlight, { type: "error", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
8296
8324
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react20.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8297
8325
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
|
|
@@ -8332,7 +8360,7 @@ function NoBackupFound(props) {
|
|
|
8332
8360
|
|
|
8333
8361
|
// src/internal/components/KeyshareRestoreMenu/ServerBackupFound.tsx
|
|
8334
8362
|
var import_lucide_react21 = require("lucide-react");
|
|
8335
|
-
var
|
|
8363
|
+
var import_react26 = require("react");
|
|
8336
8364
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
8337
8365
|
function ServerBackupFound(props) {
|
|
8338
8366
|
const {
|
|
@@ -8348,7 +8376,7 @@ function ServerBackupFound(props) {
|
|
|
8348
8376
|
setRestorePassword,
|
|
8349
8377
|
setUseCustomPassword
|
|
8350
8378
|
} = props;
|
|
8351
|
-
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
8379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react26.Fragment, { children: [
|
|
8352
8380
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Highlight, { type: "success", className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
8353
8381
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react21.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8354
8382
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-full flex-1", children: [
|
|
@@ -8464,17 +8492,17 @@ var KeyshareRestoreMenu = () => {
|
|
|
8464
8492
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8465
8493
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8466
8494
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8467
|
-
(0,
|
|
8495
|
+
(0, import_react27.useEffect)(() => setIsDialogForced(true), []);
|
|
8468
8496
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
8469
|
-
const [error, setError] =
|
|
8470
|
-
const [success, setSuccess] =
|
|
8471
|
-
const [showPassword, setShowPassword] =
|
|
8472
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8473
|
-
const [restoreFile, setRestoreFile] =
|
|
8474
|
-
const [restorePassword, setRestorePassword] =
|
|
8475
|
-
const [hasServerBackup, setHasServerBackup] =
|
|
8476
|
-
const [checkingBackup, setCheckingBackup] =
|
|
8477
|
-
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)(
|
|
8478
8506
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
8479
8507
|
try {
|
|
8480
8508
|
try {
|
|
@@ -8508,7 +8536,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8508
8536
|
},
|
|
8509
8537
|
[setStatus, callbacks, usePaymaster]
|
|
8510
8538
|
);
|
|
8511
|
-
const onRestoreSuccess = (0,
|
|
8539
|
+
const onRestoreSuccess = (0, import_react27.useCallback)(async () => {
|
|
8512
8540
|
const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
8513
8541
|
const verify = await verifyToken2();
|
|
8514
8542
|
const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
|
|
@@ -8573,7 +8601,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8573
8601
|
callbacks,
|
|
8574
8602
|
config.projectId
|
|
8575
8603
|
]);
|
|
8576
|
-
(0,
|
|
8604
|
+
(0, import_react27.useEffect)(() => {
|
|
8577
8605
|
const checkBackupAvailability = async () => {
|
|
8578
8606
|
try {
|
|
8579
8607
|
setCheckingBackup(true);
|
|
@@ -8591,7 +8619,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8591
8619
|
};
|
|
8592
8620
|
checkBackupAvailability();
|
|
8593
8621
|
}, [recoveryUserId]);
|
|
8594
|
-
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0,
|
|
8622
|
+
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0, import_react_query10.useMutation)({
|
|
8595
8623
|
mutationFn: async () => {
|
|
8596
8624
|
setError(null);
|
|
8597
8625
|
setSuccess(null);
|
|
@@ -8626,7 +8654,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8626
8654
|
setError(errorMsg);
|
|
8627
8655
|
}
|
|
8628
8656
|
});
|
|
8629
|
-
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0,
|
|
8657
|
+
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0, import_react_query10.useMutation)({
|
|
8630
8658
|
mutationFn: async () => {
|
|
8631
8659
|
if (!restoreFile) {
|
|
8632
8660
|
throw new Error("Please select a backup file");
|
|
@@ -8660,7 +8688,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8660
8688
|
setError(errorMsg);
|
|
8661
8689
|
}
|
|
8662
8690
|
});
|
|
8663
|
-
const { mutate: disconnect, isPending: isDisconnecting } = (0,
|
|
8691
|
+
const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query10.useMutation)({
|
|
8664
8692
|
mutationFn: async () => {
|
|
8665
8693
|
setError(null);
|
|
8666
8694
|
setStatus("disconnecting");
|
|
@@ -8752,14 +8780,14 @@ var import_lucide_react24 = require("lucide-react");
|
|
|
8752
8780
|
var import_lucide_react23 = require("lucide-react");
|
|
8753
8781
|
|
|
8754
8782
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8755
|
-
var
|
|
8783
|
+
var import_react28 = require("react");
|
|
8756
8784
|
|
|
8757
8785
|
// src/internal/components/KYC/api/sumsub.ts
|
|
8758
8786
|
init_httpClient();
|
|
8759
8787
|
|
|
8760
8788
|
// src/config/queryClient.ts
|
|
8761
|
-
var
|
|
8762
|
-
var queryClient = new
|
|
8789
|
+
var import_react_query11 = require("@tanstack/react-query");
|
|
8790
|
+
var queryClient = new import_react_query11.QueryClient({
|
|
8763
8791
|
defaultOptions: {
|
|
8764
8792
|
queries: {
|
|
8765
8793
|
staleTime: 1e3 * 60 * 6,
|
|
@@ -8875,13 +8903,13 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8875
8903
|
config: { current: config }
|
|
8876
8904
|
} = useLumiaPassportConfig();
|
|
8877
8905
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8878
|
-
const iframeRef = (0,
|
|
8879
|
-
const [isLoading, setIsLoading] = (0,
|
|
8880
|
-
const [error, setError] = (0,
|
|
8881
|
-
const [height, setHeight] = (0,
|
|
8882
|
-
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)("");
|
|
8883
8911
|
const levelName = config.kyc?.options?.levelName;
|
|
8884
|
-
(0,
|
|
8912
|
+
(0, import_react28.useEffect)(() => {
|
|
8885
8913
|
setError(null);
|
|
8886
8914
|
setIsLoading(true);
|
|
8887
8915
|
setStatus("Preparing verification...");
|
|
@@ -8989,7 +9017,22 @@ function KycMenu() {
|
|
|
8989
9017
|
|
|
8990
9018
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
8991
9019
|
var import_lucide_react26 = require("lucide-react");
|
|
8992
|
-
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
|
+
}
|
|
8993
9036
|
|
|
8994
9037
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
8995
9038
|
var import_framer_motion2 = require("framer-motion");
|
|
@@ -9045,9 +9088,10 @@ function MainMenu() {
|
|
|
9045
9088
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9046
9089
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9047
9090
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9048
|
-
(
|
|
9091
|
+
useProvidersList();
|
|
9092
|
+
(0, import_react29.useEffect)(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
9049
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: [
|
|
9050
|
-
/* @__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-
|
|
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)(
|
|
9051
9095
|
Button,
|
|
9052
9096
|
{
|
|
9053
9097
|
size: "large",
|
|
@@ -9069,11 +9113,11 @@ function MainMenu() {
|
|
|
9069
9113
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
9070
9114
|
var import_lodash_es3 = require("lodash-es");
|
|
9071
9115
|
var import_lucide_react30 = require("lucide-react");
|
|
9072
|
-
var
|
|
9116
|
+
var import_react33 = require("react");
|
|
9073
9117
|
|
|
9074
9118
|
// src/modules/linkedProfiles.ts
|
|
9075
|
-
var
|
|
9076
|
-
var
|
|
9119
|
+
var import_react_query13 = require("@tanstack/react-query");
|
|
9120
|
+
var import_react30 = require("react");
|
|
9077
9121
|
init_auth();
|
|
9078
9122
|
init_common();
|
|
9079
9123
|
init_types();
|
|
@@ -9093,32 +9137,32 @@ async function getLinkProfilesData() {
|
|
|
9093
9137
|
return { profiles: loadedProfiles, avatar };
|
|
9094
9138
|
}
|
|
9095
9139
|
function useLumiaPassportLinkedProfiles() {
|
|
9096
|
-
const qc = (0,
|
|
9140
|
+
const qc = (0, import_react_query13.useQueryClient)();
|
|
9097
9141
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9098
9142
|
const {
|
|
9099
9143
|
data,
|
|
9100
9144
|
isFetching: isLoading,
|
|
9101
9145
|
error
|
|
9102
|
-
} = (0,
|
|
9146
|
+
} = (0, import_react_query13.useQuery)({
|
|
9103
9147
|
retry: false,
|
|
9104
9148
|
enabled: !!address,
|
|
9105
9149
|
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
9106
9150
|
queryFn: getLinkProfilesData
|
|
9107
9151
|
});
|
|
9108
9152
|
const { profiles = [], avatar = null } = data || {};
|
|
9109
|
-
const refresh = (0,
|
|
9153
|
+
const refresh = (0, import_react30.useCallback)(async () => {
|
|
9110
9154
|
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9111
9155
|
}, [qc, address]);
|
|
9112
9156
|
return { profiles, avatar, isLoading, error, refresh };
|
|
9113
9157
|
}
|
|
9114
9158
|
|
|
9115
9159
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
9116
|
-
var
|
|
9160
|
+
var import_react_query17 = require("@tanstack/react-query");
|
|
9117
9161
|
init_passkey2();
|
|
9118
9162
|
|
|
9119
9163
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9120
9164
|
init_lumiaPassport();
|
|
9121
|
-
var
|
|
9165
|
+
var import_react_query14 = require("@tanstack/react-query");
|
|
9122
9166
|
var import_lucide_react27 = require("lucide-react");
|
|
9123
9167
|
init_projectId();
|
|
9124
9168
|
|
|
@@ -9161,7 +9205,7 @@ function EmailForm() {
|
|
|
9161
9205
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
9162
9206
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9163
9207
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
9164
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
9208
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query14.useMutation)({
|
|
9165
9209
|
mutationFn: async () => {
|
|
9166
9210
|
if (!email) return;
|
|
9167
9211
|
setIsLoading(true);
|
|
@@ -9237,27 +9281,12 @@ function EmailForm() {
|
|
|
9237
9281
|
] });
|
|
9238
9282
|
}
|
|
9239
9283
|
|
|
9240
|
-
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9241
|
-
var import_react_query13 = require("@tanstack/react-query");
|
|
9242
|
-
init_common();
|
|
9243
|
-
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9244
|
-
function useProvidersList() {
|
|
9245
|
-
const address = useLumiaPassportSession((st) => st.address);
|
|
9246
|
-
const page = useLayoutDataStore((st) => st.page);
|
|
9247
|
-
return (0, import_react_query13.useQuery)({
|
|
9248
|
-
retry: false,
|
|
9249
|
-
enabled: !!address && page === "manage-wallet" /* MANAGE_WALLET */,
|
|
9250
|
-
queryKey: [PROVIDERS_QUERY_KEY, address],
|
|
9251
|
-
queryFn: async () => getLinkedProviders()
|
|
9252
|
-
});
|
|
9253
|
-
}
|
|
9254
|
-
|
|
9255
9284
|
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9256
|
-
var
|
|
9285
|
+
var import_react_query15 = require("@tanstack/react-query");
|
|
9257
9286
|
init_email();
|
|
9258
9287
|
function useSendVerificationCode() {
|
|
9259
9288
|
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9260
|
-
return (0,
|
|
9289
|
+
return (0, import_react_query15.useMutation)({
|
|
9261
9290
|
mutationFn: async (email) => {
|
|
9262
9291
|
if (!email) {
|
|
9263
9292
|
throw new Error("Email is required");
|
|
@@ -9280,11 +9309,11 @@ function useSendVerificationCode() {
|
|
|
9280
9309
|
}
|
|
9281
9310
|
|
|
9282
9311
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9283
|
-
var
|
|
9312
|
+
var import_react_query16 = require("@tanstack/react-query");
|
|
9284
9313
|
init_email();
|
|
9285
9314
|
function useVerifyCode() {
|
|
9286
9315
|
const { callbacks } = useLumiaPassportConfig();
|
|
9287
|
-
const qc = (0,
|
|
9316
|
+
const qc = (0, import_react_query16.useQueryClient)();
|
|
9288
9317
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9289
9318
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9290
9319
|
const {
|
|
@@ -9298,7 +9327,7 @@ function useVerifyCode() {
|
|
|
9298
9327
|
setVerificationError,
|
|
9299
9328
|
setEmailCodeSentError
|
|
9300
9329
|
} = useManageWalletStore();
|
|
9301
|
-
return (0,
|
|
9330
|
+
return (0, import_react_query16.useMutation)({
|
|
9302
9331
|
mutationFn: async (codeToVerify) => {
|
|
9303
9332
|
const code = codeToVerify ?? emailCode;
|
|
9304
9333
|
if (!code) {
|
|
@@ -9348,7 +9377,7 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9348
9377
|
return msg;
|
|
9349
9378
|
}
|
|
9350
9379
|
function AddProvider() {
|
|
9351
|
-
const qc = (0,
|
|
9380
|
+
const qc = (0, import_react_query17.useQueryClient)();
|
|
9352
9381
|
const { callbacks } = useLumiaPassportConfig();
|
|
9353
9382
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9354
9383
|
const {
|
|
@@ -9508,11 +9537,11 @@ function EmailNotConnectedWarning() {
|
|
|
9508
9537
|
}
|
|
9509
9538
|
|
|
9510
9539
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9511
|
-
var
|
|
9512
|
-
var
|
|
9540
|
+
var import_react_query18 = require("@tanstack/react-query");
|
|
9541
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
9513
9542
|
init_auth();
|
|
9514
9543
|
function useLinkSocial() {
|
|
9515
|
-
const qc = (0,
|
|
9544
|
+
const qc = (0, import_react_query18.useQueryClient)();
|
|
9516
9545
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9517
9546
|
const {
|
|
9518
9547
|
config: { current: config },
|
|
@@ -9520,7 +9549,7 @@ function useLinkSocial() {
|
|
|
9520
9549
|
} = useLumiaPassportConfig();
|
|
9521
9550
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9522
9551
|
const { providerType, linkIsLoading, isWalletLinking, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9523
|
-
const handleLinkSocialProvider =
|
|
9552
|
+
const handleLinkSocialProvider = import_react31.default.useCallback(
|
|
9524
9553
|
async (providerIdRaw) => {
|
|
9525
9554
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9526
9555
|
const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
|
|
@@ -9572,8 +9601,8 @@ function useLinkSocial() {
|
|
|
9572
9601
|
},
|
|
9573
9602
|
[config.social?.providers, callbacks]
|
|
9574
9603
|
);
|
|
9575
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9576
|
-
(0,
|
|
9604
|
+
const [socialLinkStarted, setSocialLinkStarted] = import_react31.default.useState(false);
|
|
9605
|
+
(0, import_react31.useEffect)(() => {
|
|
9577
9606
|
const key = providerType?.toLowerCase();
|
|
9578
9607
|
console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
|
|
9579
9608
|
if (isWalletLinking) {
|
|
@@ -9593,19 +9622,19 @@ function useLinkSocial() {
|
|
|
9593
9622
|
}
|
|
9594
9623
|
|
|
9595
9624
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9596
|
-
var
|
|
9597
|
-
var
|
|
9625
|
+
var import_react_query19 = require("@tanstack/react-query");
|
|
9626
|
+
var import_react32 = require("react");
|
|
9598
9627
|
init_telegram2();
|
|
9599
9628
|
function useLinkTelegram() {
|
|
9600
9629
|
const {
|
|
9601
9630
|
config: { current: config },
|
|
9602
9631
|
callbacks
|
|
9603
9632
|
} = useLumiaPassportConfig();
|
|
9604
|
-
const qc = (0,
|
|
9633
|
+
const qc = (0, import_react_query19.useQueryClient)();
|
|
9605
9634
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9606
9635
|
const { providerType, linkIsLoading, isWalletLinking, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9607
9636
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9608
|
-
const handleLinkTelegram = (0,
|
|
9637
|
+
const handleLinkTelegram = (0, import_react32.useCallback)(async () => {
|
|
9609
9638
|
try {
|
|
9610
9639
|
setLinkIsLoading(true);
|
|
9611
9640
|
setLinkError("");
|
|
@@ -9647,8 +9676,8 @@ function useLinkTelegram() {
|
|
|
9647
9676
|
setLinkIsLoading(false);
|
|
9648
9677
|
}
|
|
9649
9678
|
}, [config.social?.providers, callbacks]);
|
|
9650
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = (0,
|
|
9651
|
-
(0,
|
|
9679
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react32.useState)(false);
|
|
9680
|
+
(0, import_react32.useEffect)(() => {
|
|
9652
9681
|
console.log("[useLinkTelegram] Effect triggered:", { providerType, linkIsLoading, telegramLinkStarted, isWalletLinking });
|
|
9653
9682
|
if (isWalletLinking) {
|
|
9654
9683
|
console.log("[useLinkTelegram] Skipping - wallet linking in progress");
|
|
@@ -9660,7 +9689,7 @@ function useLinkTelegram() {
|
|
|
9660
9689
|
handleLinkTelegram();
|
|
9661
9690
|
}
|
|
9662
9691
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
|
|
9663
|
-
(0,
|
|
9692
|
+
(0, import_react32.useEffect)(() => {
|
|
9664
9693
|
if (providerType !== "telegram") {
|
|
9665
9694
|
setTelegramLinkStarted(false);
|
|
9666
9695
|
}
|
|
@@ -9750,6 +9779,7 @@ function ManageWalletMenu() {
|
|
|
9750
9779
|
config: { current: config }
|
|
9751
9780
|
} = useLumiaPassportConfig();
|
|
9752
9781
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9782
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9753
9783
|
const {
|
|
9754
9784
|
providerType,
|
|
9755
9785
|
isWalletLinking,
|
|
@@ -9768,7 +9798,7 @@ function ManageWalletMenu() {
|
|
|
9768
9798
|
} = useManageWalletStore();
|
|
9769
9799
|
const configuredProviders = getConfiguredProviders(config);
|
|
9770
9800
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9771
|
-
const renderProviders = (0,
|
|
9801
|
+
const renderProviders = (0, import_react33.useMemo)(() => {
|
|
9772
9802
|
const usedProviders = (0, import_lodash_es3.fromPairs)(providers.map((p) => [p.provider, true]));
|
|
9773
9803
|
const used = [];
|
|
9774
9804
|
const unused = [];
|
|
@@ -9829,60 +9859,70 @@ function ManageWalletMenu() {
|
|
|
9829
9859
|
const showCurrentProviders = !isProvidersLoading && !providersError && (providerType !== "email" && providerType !== "passkey" || providerType === null);
|
|
9830
9860
|
const showExtraProvidersUi = !isProvidersLoading && !providersError && (providerType === "email" || providerType === "passkey");
|
|
9831
9861
|
const combinedError = emailCodeSentError || linkError || verificationError || null;
|
|
9832
|
-
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
9833
|
-
|
|
9834
|
-
|
|
9835
|
-
|
|
9836
|
-
{
|
|
9837
|
-
|
|
9838
|
-
|
|
9839
|
-
|
|
9840
|
-
|
|
9841
|
-
|
|
9842
|
-
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
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" })
|
|
9848
9892
|
}
|
|
9849
|
-
|
|
9850
|
-
|
|
9851
|
-
|
|
9852
|
-
|
|
9853
|
-
|
|
9854
|
-
|
|
9855
|
-
|
|
9856
|
-
|
|
9857
|
-
|
|
9858
|
-
|
|
9859
|
-
|
|
9860
|
-
|
|
9861
|
-
|
|
9862
|
-
|
|
9863
|
-
|
|
9864
|
-
|
|
9865
|
-
|
|
9866
|
-
showExtraProvidersUi && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(AddProvider, {}),
|
|
9867
|
-
combinedError && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Highlight, { type: "error", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { children: combinedError }) })
|
|
9868
|
-
] })
|
|
9869
|
-
] });
|
|
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
|
+
);
|
|
9870
9910
|
}
|
|
9871
9911
|
|
|
9872
9912
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9873
|
-
var
|
|
9913
|
+
var import_react_query20 = require("@tanstack/react-query");
|
|
9874
9914
|
var import_lucide_react31 = require("lucide-react");
|
|
9875
|
-
var
|
|
9915
|
+
var import_react34 = require("react");
|
|
9876
9916
|
init_auth();
|
|
9877
9917
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
9878
9918
|
function UnlinkProviderMenu() {
|
|
9879
|
-
const qc = (0,
|
|
9919
|
+
const qc = (0, import_react_query20.useQueryClient)();
|
|
9880
9920
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9881
9921
|
const { callbacks } = useLumiaPassportConfig();
|
|
9882
9922
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9883
9923
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9884
|
-
const [confirmInput, setConfirmInput] = (0,
|
|
9885
|
-
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)({
|
|
9886
9926
|
mutationFn: async () => {
|
|
9887
9927
|
if (!confirmUnlink) {
|
|
9888
9928
|
throw new Error("No provider to unlink");
|
|
@@ -9955,12 +9995,12 @@ function UnlinkProviderMenu() {
|
|
|
9955
9995
|
}
|
|
9956
9996
|
|
|
9957
9997
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9958
|
-
var
|
|
9998
|
+
var import_react_query22 = require("@tanstack/react-query");
|
|
9959
9999
|
var import_lucide_react33 = require("lucide-react");
|
|
9960
|
-
var
|
|
10000
|
+
var import_react36 = require("react");
|
|
9961
10001
|
|
|
9962
10002
|
// src/modules/assets.ts
|
|
9963
|
-
var
|
|
10003
|
+
var import_react35 = __toESM(require("react"), 1);
|
|
9964
10004
|
var import_wagmi2 = require("wagmi");
|
|
9965
10005
|
var import_viem4 = require("viem");
|
|
9966
10006
|
init_base();
|
|
@@ -10107,7 +10147,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10107
10147
|
}
|
|
10108
10148
|
});
|
|
10109
10149
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
10110
|
-
const formattedBalance =
|
|
10150
|
+
const formattedBalance = import_react35.default.useMemo(() => {
|
|
10111
10151
|
if (!balance || !tokenInfo) return "0";
|
|
10112
10152
|
return (0, import_viem4.formatUnits)(balance, tokenInfo.decimals);
|
|
10113
10153
|
}, [balance, tokenInfo]);
|
|
@@ -10121,7 +10161,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10121
10161
|
}
|
|
10122
10162
|
|
|
10123
10163
|
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
10124
|
-
var
|
|
10164
|
+
var import_react_query21 = require("@tanstack/react-query");
|
|
10125
10165
|
var import_lucide_react32 = require("lucide-react");
|
|
10126
10166
|
init_base();
|
|
10127
10167
|
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
@@ -10152,10 +10192,10 @@ var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
|
10152
10192
|
function PortfolioItem(props) {
|
|
10153
10193
|
const { address, asset, isProjectAsset } = props;
|
|
10154
10194
|
const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
|
|
10155
|
-
const qc = (0,
|
|
10195
|
+
const qc = (0, import_react_query21.useQueryClient)();
|
|
10156
10196
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
10157
10197
|
const projectAssetBalance = !!balanceQueryKey ? qc.getQueryData(balanceQueryKey) : null;
|
|
10158
|
-
const { data: assetRate, isLoading: isRateLoading } = (0,
|
|
10198
|
+
const { data: assetRate, isLoading: isRateLoading } = (0, import_react_query21.useQuery)({
|
|
10159
10199
|
retry: false,
|
|
10160
10200
|
staleTime: 4 * 60 * 1e3,
|
|
10161
10201
|
enabled: !!address && !!asset.symbol && !isProjectAsset,
|
|
@@ -10214,73 +10254,50 @@ function PortfolioItem(props) {
|
|
|
10214
10254
|
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
10215
10255
|
function PortfolioMenu() {
|
|
10216
10256
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10217
|
-
const qc = (0,
|
|
10257
|
+
const qc = (0, import_react_query22.useQueryClient)();
|
|
10218
10258
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10219
10259
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10220
|
-
const assetsContainerListRef = (0, import_react35.useRef)(null);
|
|
10221
|
-
const assetsListRef = (0, import_react35.useRef)(null);
|
|
10222
10260
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10223
10261
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10224
|
-
const refreshAllAssetsBalances = (0,
|
|
10262
|
+
const refreshAllAssetsBalances = (0, import_react36.useCallback)(() => {
|
|
10225
10263
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10226
10264
|
refreshBalances();
|
|
10227
10265
|
}, [qc, projectAssets, refreshBalances]);
|
|
10228
|
-
(0,
|
|
10229
|
-
|
|
10230
|
-
|
|
10231
|
-
|
|
10232
|
-
|
|
10233
|
-
|
|
10234
|
-
|
|
10235
|
-
|
|
10236
|
-
|
|
10237
|
-
|
|
10238
|
-
|
|
10239
|
-
|
|
10240
|
-
|
|
10241
|
-
|
|
10242
|
-
|
|
10243
|
-
|
|
10244
|
-
|
|
10245
|
-
|
|
10246
|
-
|
|
10247
|
-
|
|
10248
|
-
|
|
10249
|
-
|
|
10250
|
-
|
|
10251
|
-
|
|
10252
|
-
|
|
10253
|
-
|
|
10254
|
-
|
|
10255
|
-
|
|
10256
|
-
|
|
10257
|
-
|
|
10258
|
-
|
|
10259
|
-
|
|
10260
|
-
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
] }),
|
|
10264
|
-
!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: [
|
|
10265
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.Gem, { className: "w-12 h-12 mb-2" }),
|
|
10266
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "No assets found" })
|
|
10267
|
-
] }),
|
|
10268
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10269
|
-
"div",
|
|
10270
|
-
{
|
|
10271
|
-
ref: assetsContainerListRef,
|
|
10272
|
-
style: { borderTop: "1px solid var(--l-pass-list-bd)", borderBottom: "1px solid var(--l-pass-list-bd)" },
|
|
10273
|
-
className: "list-scrollbar-y relative",
|
|
10274
|
-
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: [
|
|
10275
|
-
projectAssets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10276
|
-
PortfolioItem,
|
|
10277
|
-
{
|
|
10278
|
-
isProjectAsset: true,
|
|
10279
|
-
address,
|
|
10280
|
-
asset
|
|
10281
|
-
},
|
|
10282
|
-
`project-${asset.symbol}-${index}`
|
|
10283
|
-
)),
|
|
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}`)),
|
|
10284
10301
|
assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10285
10302
|
PortfolioItem,
|
|
10286
10303
|
{
|
|
@@ -10290,277 +10307,298 @@ function PortfolioMenu() {
|
|
|
10290
10307
|
`${asset.type}-${asset.address || "native"}-${index}`
|
|
10291
10308
|
))
|
|
10292
10309
|
] })
|
|
10293
|
-
}
|
|
10294
|
-
|
|
10295
|
-
|
|
10296
|
-
|
|
10310
|
+
] })
|
|
10311
|
+
]
|
|
10312
|
+
}
|
|
10313
|
+
);
|
|
10297
10314
|
}
|
|
10298
10315
|
|
|
10299
10316
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10317
|
+
var import_react_query23 = require("@tanstack/react-query");
|
|
10300
10318
|
var import_lucide_react34 = require("lucide-react");
|
|
10301
|
-
var
|
|
10319
|
+
var import_react37 = require("react");
|
|
10302
10320
|
init_auth();
|
|
10303
10321
|
init_keyshare();
|
|
10322
|
+
init_iframe_manager();
|
|
10304
10323
|
init_vaultClient();
|
|
10305
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
|
+
}
|
|
10306
10335
|
function SecurityMenu() {
|
|
10307
|
-
const
|
|
10336
|
+
const qc = (0, import_react_query23.useQueryClient)();
|
|
10337
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10308
10338
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10309
|
-
const open = page === "security";
|
|
10310
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]);
|
|
10311
10386
|
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
10312
10387
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10313
|
-
|
|
10314
|
-
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10323
|
-
|
|
10324
|
-
|
|
10325
|
-
|
|
10326
|
-
|
|
10327
|
-
|
|
10328
|
-
|
|
10329
|
-
|
|
10330
|
-
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
|
|
10334
|
-
|
|
10335
|
-
|
|
10336
|
-
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
10337
|
-
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
10338
|
-
setTrustedApps(apps);
|
|
10339
|
-
} catch (error) {
|
|
10340
|
-
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
10341
|
-
setTrustedApps([]);
|
|
10342
|
-
}
|
|
10343
|
-
const stats = await getShareRecoveryStats();
|
|
10344
|
-
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
10345
|
-
setHasServerBackup(!!hasRecoveryData);
|
|
10346
|
-
const created = stats?.created;
|
|
10347
|
-
setRecoveryCreatedAt(created?.at || null);
|
|
10348
|
-
setRecoveryBrowser(created?.browser || null);
|
|
10349
|
-
setRecoveryUa(created?.ua || null);
|
|
10350
|
-
setRecoveryDeviceId(created?.deviceId || null);
|
|
10351
|
-
setRecoveryDeviceName(created?.deviceName || null);
|
|
10352
|
-
setRecoveryCountry(created?.country || null);
|
|
10353
|
-
} finally {
|
|
10354
|
-
setIsRefreshing(false);
|
|
10355
|
-
}
|
|
10356
|
-
}, [userId]);
|
|
10357
|
-
(0, import_react36.useEffect)(() => {
|
|
10358
|
-
if (open) fetchRecovery();
|
|
10359
|
-
}, [open, fetchRecovery]);
|
|
10360
|
-
const parseOS = (ua) => {
|
|
10361
|
-
if (!ua) return null;
|
|
10362
|
-
if (ua.includes("Mac OS X")) return "macOS";
|
|
10363
|
-
if (ua.includes("Windows")) return "Windows";
|
|
10364
|
-
if (ua.includes("Android")) return "Android";
|
|
10365
|
-
if (ua.includes("Linux")) return "Linux";
|
|
10366
|
-
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
10367
|
-
return null;
|
|
10368
|
-
};
|
|
10369
|
-
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10370
|
-
/* @__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: [
|
|
10371
|
-
/* @__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" }) }),
|
|
10372
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
10373
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
10374
|
-
/* @__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" }) })
|
|
10375
|
-
] })
|
|
10376
|
-
] }) }),
|
|
10377
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
10378
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10379
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10380
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Cloud, { className: "h-4 w-4" }),
|
|
10381
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Server" })
|
|
10382
|
-
] }),
|
|
10383
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10384
|
-
"span",
|
|
10385
|
-
{
|
|
10386
|
-
className: cn(
|
|
10387
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10388
|
-
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10389
|
-
),
|
|
10390
|
-
children: [
|
|
10391
|
-
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" }),
|
|
10392
|
-
serverHasKeyshare ? "Ready" : "Missing"
|
|
10393
|
-
]
|
|
10394
|
-
}
|
|
10395
|
-
)
|
|
10396
|
-
] }),
|
|
10397
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10398
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10399
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Laptop, { className: "h-4 w-4" }),
|
|
10400
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Local" })
|
|
10401
|
-
] }),
|
|
10402
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10403
|
-
"span",
|
|
10404
|
-
{
|
|
10405
|
-
className: cn(
|
|
10406
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10407
|
-
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10408
|
-
),
|
|
10409
|
-
children: [
|
|
10410
|
-
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" }),
|
|
10411
|
-
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
10412
|
-
]
|
|
10413
|
-
}
|
|
10414
|
-
)
|
|
10415
|
-
] }),
|
|
10416
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10417
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10418
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Shield, { className: "h-4 w-4" }),
|
|
10419
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Vault" })
|
|
10420
|
-
] }),
|
|
10421
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10422
|
-
"span",
|
|
10423
|
-
{
|
|
10424
|
-
className: cn(
|
|
10425
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10426
|
-
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10427
|
-
),
|
|
10428
|
-
children: [
|
|
10429
|
-
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" }),
|
|
10430
|
-
hasServerBackup ? "Ready" : "None"
|
|
10431
|
-
]
|
|
10432
|
-
}
|
|
10433
|
-
)
|
|
10434
|
-
] })
|
|
10435
|
-
] }),
|
|
10436
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
10437
|
-
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: [
|
|
10438
|
-
localInfo.ownerAddress && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10439
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Owner: " }),
|
|
10440
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
10441
|
-
] }),
|
|
10442
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10443
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Size: " }),
|
|
10444
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
10445
|
-
] }),
|
|
10446
|
-
localInfo.sessionId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10447
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Session: " }),
|
|
10448
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
10449
|
-
] })
|
|
10450
|
-
] }),
|
|
10451
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10452
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10453
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Server, { className: "h-2.5 w-2.5" }),
|
|
10454
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10455
|
-
"Server: ",
|
|
10456
|
-
new Date(backup.server.lastBackup).toLocaleString()
|
|
10457
|
-
] })
|
|
10458
|
-
] }),
|
|
10459
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10460
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Server, { className: "h-2.5 w-2.5" }),
|
|
10461
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
10462
|
-
"Server: ",
|
|
10463
|
-
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
|
+
)
|
|
10464
10411
|
] })
|
|
10465
10412
|
] }),
|
|
10466
|
-
|
|
10467
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.
|
|
10468
|
-
|
|
10469
|
-
|
|
10470
|
-
|
|
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
|
+
)
|
|
10471
10470
|
] })
|
|
10472
10471
|
] }),
|
|
10473
|
-
|
|
10474
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.
|
|
10475
|
-
|
|
10476
|
-
|
|
10477
|
-
|
|
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
|
+
)) })
|
|
10478
10578
|
] })
|
|
10479
10579
|
] })
|
|
10480
|
-
]
|
|
10481
|
-
|
|
10482
|
-
|
|
10483
|
-
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10484
|
-
"Created: ",
|
|
10485
|
-
new Date(recoveryCreatedAt).toLocaleString(),
|
|
10486
|
-
" "
|
|
10487
|
-
] }),
|
|
10488
|
-
recoveryCountry && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10489
|
-
"Country: ",
|
|
10490
|
-
recoveryCountry
|
|
10491
|
-
] }),
|
|
10492
|
-
recoveryBrowser && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10493
|
-
"Browser: ",
|
|
10494
|
-
recoveryBrowser
|
|
10495
|
-
] }),
|
|
10496
|
-
parseOS(recoveryUa) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10497
|
-
"OS: ",
|
|
10498
|
-
parseOS(recoveryUa)
|
|
10499
|
-
] }),
|
|
10500
|
-
recoveryDeviceName && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10501
|
-
"Device: ",
|
|
10502
|
-
recoveryDeviceName
|
|
10503
|
-
] }),
|
|
10504
|
-
recoveryDeviceId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10505
|
-
"Device ID: ",
|
|
10506
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
10507
|
-
] })
|
|
10508
|
-
] }),
|
|
10509
|
-
trustedApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full space-y-2", children: [
|
|
10510
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
10511
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10512
|
-
"div",
|
|
10513
|
-
{
|
|
10514
|
-
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
10515
|
-
children: [
|
|
10516
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
10517
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
10518
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
10519
|
-
"Trusted: ",
|
|
10520
|
-
new Date(app.trustedAt).toLocaleDateString()
|
|
10521
|
-
] })
|
|
10522
|
-
] }),
|
|
10523
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
10524
|
-
Button,
|
|
10525
|
-
{
|
|
10526
|
-
variant: "ghost",
|
|
10527
|
-
size: "icon",
|
|
10528
|
-
title: "Remove from trusted",
|
|
10529
|
-
className: "text-[var(--l-pass-error)]",
|
|
10530
|
-
onClick: () => setAppToRemove({
|
|
10531
|
-
projectId: app.projectId,
|
|
10532
|
-
origin: app.origin,
|
|
10533
|
-
hostname: new URL(app.origin).hostname
|
|
10534
|
-
}),
|
|
10535
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react34.Trash2, { className: "h-3 w-3" })
|
|
10536
|
-
}
|
|
10537
|
-
)
|
|
10538
|
-
]
|
|
10539
|
-
},
|
|
10540
|
-
index
|
|
10541
|
-
)) })
|
|
10542
|
-
] })
|
|
10543
|
-
] })
|
|
10544
|
-
] });
|
|
10580
|
+
]
|
|
10581
|
+
}
|
|
10582
|
+
);
|
|
10545
10583
|
}
|
|
10546
10584
|
|
|
10547
10585
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10548
10586
|
var import_lucide_react35 = require("lucide-react");
|
|
10549
|
-
var
|
|
10587
|
+
var import_react39 = require("react");
|
|
10550
10588
|
var import_viem6 = require("viem");
|
|
10551
10589
|
var import_wagmi3 = require("wagmi");
|
|
10552
10590
|
|
|
10553
10591
|
// src/hooks/useSendTransaction.ts
|
|
10554
|
-
var
|
|
10592
|
+
var import_react38 = require("react");
|
|
10555
10593
|
var import_viem5 = require("viem");
|
|
10556
10594
|
init_account();
|
|
10557
10595
|
function useSendTransaction() {
|
|
10558
10596
|
const session = useLumiaPassportSession((st) => st.session);
|
|
10559
10597
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10560
|
-
const [isLoading, setIsLoading] = (0,
|
|
10561
|
-
const [error, setError] = (0,
|
|
10562
|
-
const [userOpHash, setUserOpHash] = (0,
|
|
10563
|
-
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)(
|
|
10564
10602
|
async (params) => {
|
|
10565
10603
|
if (!session || !address) {
|
|
10566
10604
|
setError("No active session");
|
|
@@ -10600,7 +10638,7 @@ function useSendTransaction() {
|
|
|
10600
10638
|
},
|
|
10601
10639
|
[session, address]
|
|
10602
10640
|
);
|
|
10603
|
-
const reset = (0,
|
|
10641
|
+
const reset = (0, import_react38.useCallback)(() => {
|
|
10604
10642
|
setError(null);
|
|
10605
10643
|
setUserOpHash(null);
|
|
10606
10644
|
setIsLoading(false);
|
|
@@ -10628,13 +10666,13 @@ function SendLumiaMenu() {
|
|
|
10628
10666
|
address,
|
|
10629
10667
|
chainId: lumiaBeam.id
|
|
10630
10668
|
});
|
|
10631
|
-
const [recipient, setRecipient] = (0,
|
|
10632
|
-
const [amount, setAmount] = (0,
|
|
10633
|
-
const [txStep, setTxStep] = (0,
|
|
10634
|
-
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);
|
|
10635
10673
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10636
10674
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10637
|
-
(0,
|
|
10675
|
+
(0, import_react39.useEffect)(() => {
|
|
10638
10676
|
if (open) {
|
|
10639
10677
|
setTxStep("input");
|
|
10640
10678
|
setValidationError(null);
|
|
@@ -10798,7 +10836,7 @@ function SendLumiaMenu() {
|
|
|
10798
10836
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10799
10837
|
var import_lucide_react36 = require("lucide-react");
|
|
10800
10838
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
10801
|
-
var
|
|
10839
|
+
var import_react40 = require("react");
|
|
10802
10840
|
init_clients();
|
|
10803
10841
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
10804
10842
|
function ReceiveLumiaMenu() {
|
|
@@ -10807,9 +10845,9 @@ function ReceiveLumiaMenu() {
|
|
|
10807
10845
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10808
10846
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10809
10847
|
const open = page === "receive";
|
|
10810
|
-
const [qrCodeUrl, setQrCodeUrl] = (0,
|
|
10811
|
-
const [copied, setCopied] = (0,
|
|
10812
|
-
(0,
|
|
10848
|
+
const [qrCodeUrl, setQrCodeUrl] = (0, import_react40.useState)("");
|
|
10849
|
+
const [copied, setCopied] = (0, import_react40.useState)(false);
|
|
10850
|
+
(0, import_react40.useEffect)(() => {
|
|
10813
10851
|
if (open && address) {
|
|
10814
10852
|
import_qrcode.default.toDataURL(address, {
|
|
10815
10853
|
width: 200,
|
|
@@ -10822,7 +10860,7 @@ function ReceiveLumiaMenu() {
|
|
|
10822
10860
|
});
|
|
10823
10861
|
}
|
|
10824
10862
|
}, [open, address]);
|
|
10825
|
-
const handleCopy = (0,
|
|
10863
|
+
const handleCopy = (0, import_react40.useCallback)(async () => {
|
|
10826
10864
|
if (!address) return;
|
|
10827
10865
|
try {
|
|
10828
10866
|
await navigator.clipboard.writeText(address);
|
|
@@ -10837,7 +10875,7 @@ function ReceiveLumiaMenu() {
|
|
|
10837
10875
|
{
|
|
10838
10876
|
style: {
|
|
10839
10877
|
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10840
|
-
"--l-pass-list-scrollbar-pd-r": "
|
|
10878
|
+
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
10841
10879
|
},
|
|
10842
10880
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
10843
10881
|
children: [
|
|
@@ -10868,7 +10906,7 @@ function ReceiveLumiaMenu() {
|
|
|
10868
10906
|
|
|
10869
10907
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10870
10908
|
var import_lucide_react38 = require("lucide-react");
|
|
10871
|
-
var
|
|
10909
|
+
var import_react41 = require("react");
|
|
10872
10910
|
|
|
10873
10911
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10874
10912
|
var import_lucide_react37 = require("lucide-react");
|
|
@@ -10902,13 +10940,13 @@ function SettingsMenu() {
|
|
|
10902
10940
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10903
10941
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10904
10942
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10905
|
-
(0,
|
|
10943
|
+
(0, import_react41.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10906
10944
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10907
10945
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10908
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: [
|
|
10909
10947
|
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10910
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" }) }),
|
|
10911
|
-
/* @__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" })
|
|
10912
10950
|
] }),
|
|
10913
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)(
|
|
10914
10952
|
Button,
|
|
@@ -10960,9 +10998,9 @@ function TermsOfService() {
|
|
|
10960
10998
|
}
|
|
10961
10999
|
|
|
10962
11000
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10963
|
-
var
|
|
11001
|
+
var import_react_query24 = require("@tanstack/react-query");
|
|
10964
11002
|
var import_lucide_react41 = require("lucide-react");
|
|
10965
|
-
var
|
|
11003
|
+
var import_react42 = require("react");
|
|
10966
11004
|
|
|
10967
11005
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10968
11006
|
init_base();
|
|
@@ -11438,78 +11476,60 @@ function TransactionsGroup(props) {
|
|
|
11438
11476
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
11439
11477
|
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
11440
11478
|
function TransactionsMenu() {
|
|
11441
|
-
const qc = (0,
|
|
11479
|
+
const qc = (0, import_react_query24.useQueryClient)();
|
|
11442
11480
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11443
11481
|
const page = useLayoutDataStore((st) => st.page);
|
|
11444
11482
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11445
11483
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11446
|
-
const
|
|
11447
|
-
const txListRef = (0, import_react41.useRef)(null);
|
|
11448
|
-
const [expandedGroups, setExpandedGroups] = (0, import_react41.useState)({});
|
|
11484
|
+
const [expandedGroups, setExpandedGroups] = (0, import_react42.useState)({});
|
|
11449
11485
|
const {
|
|
11450
11486
|
data: txHistoryGroups = [],
|
|
11451
11487
|
isLoading: isTxHistoryLoading,
|
|
11452
11488
|
isFetching: isTxHistoryFetching,
|
|
11453
11489
|
error: txHistoryError
|
|
11454
|
-
} = (0,
|
|
11490
|
+
} = (0, import_react_query24.useQuery)({
|
|
11455
11491
|
retry: false,
|
|
11456
11492
|
enabled: !!address && page === "transactions",
|
|
11457
11493
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
11458
11494
|
queryFn: () => getTransactionsListQuery(address)
|
|
11459
11495
|
});
|
|
11460
|
-
const refreshTxHistory = (0,
|
|
11496
|
+
const refreshTxHistory = (0, import_react42.useCallback)(
|
|
11461
11497
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
11462
11498
|
[qc, address]
|
|
11463
11499
|
);
|
|
11464
11500
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11465
|
-
(0,
|
|
11466
|
-
|
|
11467
|
-
|
|
11468
|
-
|
|
11469
|
-
|
|
11470
|
-
|
|
11471
|
-
|
|
11472
|
-
|
|
11473
|
-
|
|
11474
|
-
|
|
11475
|
-
|
|
11476
|
-
|
|
11477
|
-
|
|
11478
|
-
|
|
11479
|
-
|
|
11480
|
-
|
|
11481
|
-
|
|
11482
|
-
|
|
11483
|
-
|
|
11484
|
-
|
|
11485
|
-
|
|
11486
|
-
|
|
11487
|
-
|
|
11488
|
-
|
|
11489
|
-
|
|
11490
|
-
|
|
11491
|
-
|
|
11492
|
-
|
|
11493
|
-
|
|
11494
|
-
|
|
11495
|
-
|
|
11496
|
-
|
|
11497
|
-
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" }) }),
|
|
11498
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
11499
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.XCircle, { className: "w-4 h-4 flex-none" }),
|
|
11500
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
11501
|
-
] }),
|
|
11502
|
-
!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" }) }),
|
|
11503
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11504
|
-
"div",
|
|
11505
|
-
{
|
|
11506
|
-
ref: txContainerListRef,
|
|
11507
|
-
style: {
|
|
11508
|
-
borderTop: "1px solid var(--l-pass-list-bd)",
|
|
11509
|
-
borderBottom: "1px solid var(--l-pass-list-bd)"
|
|
11510
|
-
},
|
|
11511
|
-
className: "list-scrollbar-y relative",
|
|
11512
|
-
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)(
|
|
11513
11533
|
TransactionsGroup,
|
|
11514
11534
|
{
|
|
11515
11535
|
group,
|
|
@@ -11518,10 +11538,10 @@ function TransactionsMenu() {
|
|
|
11518
11538
|
},
|
|
11519
11539
|
group.id
|
|
11520
11540
|
)) })
|
|
11521
|
-
}
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
|
|
11541
|
+
] })
|
|
11542
|
+
]
|
|
11543
|
+
}
|
|
11544
|
+
);
|
|
11525
11545
|
}
|
|
11526
11546
|
|
|
11527
11547
|
// src/internal/components/PageMap.tsx
|
|
@@ -11633,7 +11653,7 @@ function usePageMapper() {
|
|
|
11633
11653
|
setIsDialogOpen,
|
|
11634
11654
|
setIsDialogClosing
|
|
11635
11655
|
} = useLayoutStore();
|
|
11636
|
-
const closeDialog = (0,
|
|
11656
|
+
const closeDialog = (0, import_react43.useCallback)(() => {
|
|
11637
11657
|
setIsDialogClosing(true);
|
|
11638
11658
|
setTimeout(() => {
|
|
11639
11659
|
setDialogContent(null);
|
|
@@ -11644,7 +11664,7 @@ function usePageMapper() {
|
|
|
11644
11664
|
setIsDialogOpen(false);
|
|
11645
11665
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11646
11666
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11647
|
-
const openDialog = (0,
|
|
11667
|
+
const openDialog = (0, import_react43.useCallback)(
|
|
11648
11668
|
(pageItem) => {
|
|
11649
11669
|
const PageContentComponent = pageItem.component;
|
|
11650
11670
|
setDialogTitle(pageItem.title);
|
|
@@ -11654,7 +11674,7 @@ function usePageMapper() {
|
|
|
11654
11674
|
},
|
|
11655
11675
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11656
11676
|
);
|
|
11657
|
-
(0,
|
|
11677
|
+
(0, import_react43.useEffect)(() => {
|
|
11658
11678
|
if (page === null) return closeDialog();
|
|
11659
11679
|
const pageItem = protectedRoutes[page];
|
|
11660
11680
|
if (!pageItem) {
|
|
@@ -11667,7 +11687,7 @@ function usePageMapper() {
|
|
|
11667
11687
|
}
|
|
11668
11688
|
|
|
11669
11689
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11670
|
-
var
|
|
11690
|
+
var import_react44 = require("react");
|
|
11671
11691
|
init_auth();
|
|
11672
11692
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11673
11693
|
id: "email-not-connected",
|
|
@@ -11684,13 +11704,13 @@ function useSettingsNotifications() {
|
|
|
11684
11704
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11685
11705
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
11686
11706
|
const hasEmail = providers.includes("email");
|
|
11687
|
-
(0,
|
|
11707
|
+
(0, import_react44.useEffect)(() => {
|
|
11688
11708
|
setSettingsNotifications({
|
|
11689
11709
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11690
11710
|
status: hasServerVault ? "resolved" : "active"
|
|
11691
11711
|
});
|
|
11692
11712
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11693
|
-
(0,
|
|
11713
|
+
(0, import_react44.useEffect)(() => {
|
|
11694
11714
|
setSettingsNotifications({
|
|
11695
11715
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11696
11716
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11699,7 +11719,7 @@ function useSettingsNotifications() {
|
|
|
11699
11719
|
}
|
|
11700
11720
|
|
|
11701
11721
|
// src/internal/hooks/useWalletStatus.ts
|
|
11702
|
-
var
|
|
11722
|
+
var import_react45 = require("react");
|
|
11703
11723
|
init_auth();
|
|
11704
11724
|
function useWalletStatus() {
|
|
11705
11725
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -11709,7 +11729,7 @@ function useWalletStatus() {
|
|
|
11709
11729
|
config: { current: config },
|
|
11710
11730
|
callbacks
|
|
11711
11731
|
} = useLumiaPassportConfig();
|
|
11712
|
-
(0,
|
|
11732
|
+
(0, import_react45.useEffect)(() => {
|
|
11713
11733
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11714
11734
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
11715
11735
|
const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
|
|
@@ -11738,7 +11758,7 @@ function LumiaPassportDialog() {
|
|
|
11738
11758
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11739
11759
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11740
11760
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11741
|
-
(0,
|
|
11761
|
+
(0, import_react46.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11742
11762
|
usePageMapper();
|
|
11743
11763
|
useAutoConnect();
|
|
11744
11764
|
useCheckVaultStatus();
|
|
@@ -11777,23 +11797,23 @@ function LumiaPassportDialog() {
|
|
|
11777
11797
|
}
|
|
11778
11798
|
|
|
11779
11799
|
// src/internal/components/TssManager.tsx
|
|
11780
|
-
var
|
|
11800
|
+
var import_react47 = __toESM(require("react"), 1);
|
|
11781
11801
|
init_auth();
|
|
11782
11802
|
init_clients();
|
|
11783
|
-
var TssManagerWithRef =
|
|
11803
|
+
var TssManagerWithRef = import_react47.default.forwardRef((props, ref) => {
|
|
11784
11804
|
const { mpcPin } = props;
|
|
11785
11805
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11786
11806
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11787
11807
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11788
11808
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11789
|
-
const onSessionCreated = (0,
|
|
11809
|
+
const onSessionCreated = (0, import_react47.useCallback)(
|
|
11790
11810
|
(session, address) => {
|
|
11791
11811
|
setSession(session);
|
|
11792
11812
|
setAddress(address);
|
|
11793
11813
|
},
|
|
11794
11814
|
[setSession, setAddress]
|
|
11795
11815
|
);
|
|
11796
|
-
const createSessionWithKeyshare =
|
|
11816
|
+
const createSessionWithKeyshare = import_react47.default.useCallback(
|
|
11797
11817
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11798
11818
|
setStatus("checking key management setup...");
|
|
11799
11819
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11814,18 +11834,18 @@ var TssManagerWithRef = import_react46.default.forwardRef((props, ref) => {
|
|
|
11814
11834
|
},
|
|
11815
11835
|
[setStatus, usePaymaster, mpcPin]
|
|
11816
11836
|
);
|
|
11817
|
-
|
|
11837
|
+
import_react47.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11818
11838
|
return null;
|
|
11819
11839
|
});
|
|
11820
11840
|
|
|
11821
11841
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11822
11842
|
var import_rainbowkit = require("@rainbow-me/rainbowkit");
|
|
11823
|
-
var
|
|
11824
|
-
var
|
|
11843
|
+
var import_react_query25 = require("@tanstack/react-query");
|
|
11844
|
+
var import_react48 = __toESM(require("react"), 1);
|
|
11825
11845
|
var import_wagmi4 = require("wagmi");
|
|
11826
11846
|
init_wallet();
|
|
11827
11847
|
function WalletConnectHandler() {
|
|
11828
|
-
const qc = (0,
|
|
11848
|
+
const qc = (0, import_react_query25.useQueryClient)();
|
|
11829
11849
|
const { callbacks } = useLumiaPassportConfig();
|
|
11830
11850
|
const userAddress = useLumiaPassportSession((st) => st.address);
|
|
11831
11851
|
const { address: walletAddress, isConnected, chain, connector } = (0, import_wagmi4.useAccount)();
|
|
@@ -11833,12 +11853,12 @@ function WalletConnectHandler() {
|
|
|
11833
11853
|
const { signMessageAsync } = (0, import_wagmi4.useSignMessage)();
|
|
11834
11854
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11835
11855
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11836
|
-
const onError = (0,
|
|
11856
|
+
const onError = (0, import_react48.useCallback)((error) => {
|
|
11837
11857
|
setLinkError(error);
|
|
11838
11858
|
setIsWalletLinking(false);
|
|
11839
11859
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11840
11860
|
}, []);
|
|
11841
|
-
const onLinkingComplete = (0,
|
|
11861
|
+
const onLinkingComplete = (0, import_react48.useCallback)(
|
|
11842
11862
|
async (success) => {
|
|
11843
11863
|
console.log("[WalletConnectHandler] onLinkingComplete called:", { success, userAddress });
|
|
11844
11864
|
setIsWalletLinking(false);
|
|
@@ -11861,9 +11881,9 @@ function WalletConnectHandler() {
|
|
|
11861
11881
|
[qc, userAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
11862
11882
|
);
|
|
11863
11883
|
const { openConnectModal, connectModalOpen } = (0, import_rainbowkit.useConnectModal)();
|
|
11864
|
-
const [hasStartedLinking, setHasStartedLinking] =
|
|
11865
|
-
const timeoutRef =
|
|
11866
|
-
(0,
|
|
11884
|
+
const [hasStartedLinking, setHasStartedLinking] = import_react48.default.useState(false);
|
|
11885
|
+
const timeoutRef = import_react48.default.useRef();
|
|
11886
|
+
(0, import_react48.useEffect)(() => {
|
|
11867
11887
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11868
11888
|
setHasStartedLinking(true);
|
|
11869
11889
|
setProviderType(null);
|
|
@@ -11888,7 +11908,7 @@ function WalletConnectHandler() {
|
|
|
11888
11908
|
if (isConnected) disconnect();
|
|
11889
11909
|
}
|
|
11890
11910
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
11891
|
-
(0,
|
|
11911
|
+
(0, import_react48.useEffect)(() => {
|
|
11892
11912
|
console.log("[WalletConnectHandler] Modal state check:", {
|
|
11893
11913
|
hasStartedLinking,
|
|
11894
11914
|
connectModalOpen,
|
|
@@ -11901,7 +11921,7 @@ function WalletConnectHandler() {
|
|
|
11901
11921
|
setHasStartedLinking(false);
|
|
11902
11922
|
}
|
|
11903
11923
|
}, [connectModalOpen, hasStartedLinking, isConnected, isWalletLinking]);
|
|
11904
|
-
(0,
|
|
11924
|
+
(0, import_react48.useEffect)(() => {
|
|
11905
11925
|
if (isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
11906
11926
|
handleWalletSign();
|
|
11907
11927
|
}
|
|
@@ -11972,7 +11992,8 @@ var useLumiaPassportSession = (0, import_zustand5.create)((set) => ({
|
|
|
11972
11992
|
error: null,
|
|
11973
11993
|
recoveryUserId: null,
|
|
11974
11994
|
isIframeReady: false,
|
|
11975
|
-
hasServerVault:
|
|
11995
|
+
hasServerVault: true,
|
|
11996
|
+
// assume true until proven otherwise to not throw red warnings before checking
|
|
11976
11997
|
walletReadyStatus: null,
|
|
11977
11998
|
setIsLoading: (isLoading) => set({ isLoading }),
|
|
11978
11999
|
setUsePaymaster: (usePaymaster) => set({ usePaymaster }),
|
|
@@ -11987,7 +12008,7 @@ var useLumiaPassportSession = (0, import_zustand5.create)((set) => ({
|
|
|
11987
12008
|
}));
|
|
11988
12009
|
function LumiaPassportSessionProvider({ children }) {
|
|
11989
12010
|
const config = useLumiaPassportConfig().config;
|
|
11990
|
-
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
12011
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react49.Fragment, { children: [
|
|
11991
12012
|
children,
|
|
11992
12013
|
config.current?.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(WalletConnectHandler, {}),
|
|
11993
12014
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BalanceFeedProvider, {}),
|
|
@@ -12039,14 +12060,14 @@ var LumiaWagmiProvider = ({ children }) => {
|
|
|
12039
12060
|
|
|
12040
12061
|
// src/context/LumiaPassportContext.tsx
|
|
12041
12062
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
12042
|
-
var LumiaPassportContext = (0,
|
|
12063
|
+
var LumiaPassportContext = (0, import_react50.createContext)(void 0);
|
|
12043
12064
|
function LumiaPassportProvider(props) {
|
|
12044
12065
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
12045
12066
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
12046
12067
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
12047
|
-
(0,
|
|
12048
|
-
const config = (0,
|
|
12049
|
-
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) => {
|
|
12050
12071
|
const prev = config.current;
|
|
12051
12072
|
const next = { ...prev };
|
|
12052
12073
|
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
@@ -12081,7 +12102,7 @@ function LumiaPassportProvider(props) {
|
|
|
12081
12102
|
}
|
|
12082
12103
|
config.current = next;
|
|
12083
12104
|
}, []);
|
|
12084
|
-
(0,
|
|
12105
|
+
(0, import_react50.useEffect)(() => {
|
|
12085
12106
|
if (typeof window === "undefined" || !projectId) return;
|
|
12086
12107
|
const mergedConfig = (0, import_lodash_es4.merge)(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12087
12108
|
updateConfig(mergedConfig);
|
|
@@ -12126,18 +12147,18 @@ function LumiaPassportProvider(props) {
|
|
|
12126
12147
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
12127
12148
|
}
|
|
12128
12149
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12129
|
-
const contextValue = (0,
|
|
12150
|
+
const contextValue = (0, import_react50.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12130
12151
|
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
12131
12152
|
}
|
|
12132
12153
|
var useLumiaPassportConfig = () => {
|
|
12133
|
-
const ctx = (0,
|
|
12154
|
+
const ctx = (0, import_react50.useContext)(LumiaPassportContext);
|
|
12134
12155
|
if (!ctx) throw new Error("useLumiaPassportConfig must be used within a LumiaPassportProvider");
|
|
12135
12156
|
return ctx;
|
|
12136
12157
|
};
|
|
12137
12158
|
|
|
12138
12159
|
// src/components/ConnectWalletButton.tsx
|
|
12139
12160
|
var import_lucide_react42 = require("lucide-react");
|
|
12140
|
-
var
|
|
12161
|
+
var import_react51 = require("react");
|
|
12141
12162
|
init_auth();
|
|
12142
12163
|
var import_jsx_runtime65 = (
|
|
12143
12164
|
/** external Buttons can be provided */
|
|
@@ -12160,10 +12181,10 @@ function ConnectWalletButton(props) {
|
|
|
12160
12181
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12161
12182
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12162
12183
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12163
|
-
(0,
|
|
12184
|
+
(0, import_react51.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12164
12185
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
12165
12186
|
const displayName = import_auth3.jwtTokenManager.getDisplayName();
|
|
12166
|
-
const indicators = (0,
|
|
12187
|
+
const indicators = (0, import_react51.useMemo)(() => {
|
|
12167
12188
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
12168
12189
|
if (!userId) return { server: false, local: false, backup: false };
|
|
12169
12190
|
const server = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -12318,13 +12339,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12318
12339
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12319
12340
|
|
|
12320
12341
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12321
|
-
var
|
|
12342
|
+
var import_react52 = require("react");
|
|
12322
12343
|
function useLumiaPassportOpen() {
|
|
12323
12344
|
const page = useLayoutDataStore((st) => st.page);
|
|
12324
12345
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12325
12346
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12326
12347
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12327
|
-
const open = (0,
|
|
12348
|
+
const open = (0, import_react52.useCallback)(
|
|
12328
12349
|
(passportPage, params) => {
|
|
12329
12350
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12330
12351
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12333,12 +12354,12 @@ function useLumiaPassportOpen() {
|
|
|
12333
12354
|
},
|
|
12334
12355
|
[setPage, setPageParams, address]
|
|
12335
12356
|
);
|
|
12336
|
-
const close = (0,
|
|
12357
|
+
const close = (0, import_react52.useCallback)(() => setPage(null), [setPage]);
|
|
12337
12358
|
return { open, close, isOpen: page !== null };
|
|
12338
12359
|
}
|
|
12339
12360
|
|
|
12340
12361
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12341
|
-
var
|
|
12362
|
+
var import_react53 = require("react");
|
|
12342
12363
|
function useLumiaPassportColorMode() {
|
|
12343
12364
|
const {
|
|
12344
12365
|
config: { current: config }
|
|
@@ -12346,14 +12367,14 @@ function useLumiaPassportColorMode() {
|
|
|
12346
12367
|
const preferedColorMode = config?.preferedColorMode;
|
|
12347
12368
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12348
12369
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12349
|
-
const setColorMode = (0,
|
|
12370
|
+
const setColorMode = (0, import_react53.useCallback)(
|
|
12350
12371
|
(mode) => {
|
|
12351
12372
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12352
12373
|
handleStoreColorMode(mode);
|
|
12353
12374
|
},
|
|
12354
12375
|
[handleStoreColorMode]
|
|
12355
12376
|
);
|
|
12356
|
-
(0,
|
|
12377
|
+
(0, import_react53.useEffect)(() => {
|
|
12357
12378
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12358
12379
|
if (!targetColorMode && !preferedColorMode) {
|
|
12359
12380
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12395,9 +12416,8 @@ function ThemeToggle(props) {
|
|
|
12395
12416
|
}
|
|
12396
12417
|
|
|
12397
12418
|
// src/context/RainbowKitContext.tsx
|
|
12398
|
-
var import_react53 = __toESM(require("react"), 1);
|
|
12399
|
-
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
12400
12419
|
var import_rainbowkit3 = require("@rainbow-me/rainbowkit");
|
|
12420
|
+
var import_react54 = require("react");
|
|
12401
12421
|
var import_wagmi8 = require("wagmi");
|
|
12402
12422
|
|
|
12403
12423
|
// src/config/rainbowkit.ts
|
|
@@ -12437,144 +12457,220 @@ var rainbowConfig = createRainbowConfig();
|
|
|
12437
12457
|
var rainbowTheme = {
|
|
12438
12458
|
lightMode: {
|
|
12439
12459
|
colors: {
|
|
12440
|
-
|
|
12441
|
-
|
|
12442
|
-
|
|
12443
|
-
|
|
12444
|
-
|
|
12445
|
-
|
|
12446
|
-
|
|
12447
|
-
|
|
12448
|
-
|
|
12449
|
-
|
|
12450
|
-
|
|
12451
|
-
|
|
12452
|
-
|
|
12453
|
-
|
|
12454
|
-
|
|
12455
|
-
|
|
12456
|
-
|
|
12457
|
-
|
|
12458
|
-
|
|
12459
|
-
|
|
12460
|
-
|
|
12461
|
-
|
|
12462
|
-
|
|
12463
|
-
|
|
12464
|
-
|
|
12465
|
-
|
|
12466
|
-
|
|
12467
|
-
|
|
12468
|
-
|
|
12469
|
-
|
|
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
|
|
12470
12528
|
},
|
|
12471
12529
|
shadows: {
|
|
12472
|
-
connectButton: "0px 4px
|
|
12473
|
-
|
|
12474
|
-
|
|
12475
|
-
|
|
12476
|
-
|
|
12477
|
-
|
|
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)"
|
|
12478
12537
|
},
|
|
12479
12538
|
radii: {
|
|
12480
|
-
actionButton: "
|
|
12481
|
-
|
|
12482
|
-
|
|
12483
|
-
|
|
12484
|
-
|
|
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
|
|
12485
12549
|
}
|
|
12486
12550
|
},
|
|
12487
12551
|
darkMode: {
|
|
12488
12552
|
colors: {
|
|
12489
|
-
|
|
12490
|
-
|
|
12491
|
-
|
|
12492
|
-
|
|
12493
|
-
|
|
12494
|
-
|
|
12495
|
-
|
|
12496
|
-
|
|
12497
|
-
|
|
12498
|
-
|
|
12499
|
-
|
|
12500
|
-
|
|
12501
|
-
|
|
12502
|
-
|
|
12503
|
-
|
|
12504
|
-
|
|
12505
|
-
|
|
12506
|
-
|
|
12507
|
-
|
|
12508
|
-
|
|
12509
|
-
|
|
12510
|
-
|
|
12511
|
-
|
|
12512
|
-
|
|
12513
|
-
|
|
12514
|
-
|
|
12515
|
-
|
|
12516
|
-
|
|
12517
|
-
|
|
12518
|
-
|
|
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
|
|
12519
12621
|
},
|
|
12520
12622
|
shadows: {
|
|
12521
|
-
connectButton: "0px 4px
|
|
12522
|
-
|
|
12523
|
-
|
|
12524
|
-
|
|
12525
|
-
|
|
12526
|
-
|
|
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)"
|
|
12527
12630
|
},
|
|
12528
12631
|
radii: {
|
|
12529
|
-
actionButton: "
|
|
12530
|
-
|
|
12531
|
-
|
|
12532
|
-
|
|
12533
|
-
|
|
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
|
|
12534
12642
|
}
|
|
12535
12643
|
}
|
|
12536
12644
|
};
|
|
12537
12645
|
|
|
12538
12646
|
// src/context/RainbowKitContext.tsx
|
|
12647
|
+
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
12539
12648
|
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
12540
|
-
|
|
12541
|
-
const
|
|
12542
|
-
|
|
12543
|
-
|
|
12544
|
-
const
|
|
12545
|
-
|
|
12546
|
-
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12547
|
-
}, [config.wallet?.walletConnectProjectId]);
|
|
12548
|
-
const customTheme = import_react53.default.useMemo(
|
|
12549
|
-
() => 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" ? {
|
|
12550
12655
|
...(0, import_rainbowkit3.darkTheme)(),
|
|
12551
|
-
colors: {
|
|
12552
|
-
...(0, import_rainbowkit3.darkTheme)().colors,
|
|
12553
|
-
...rainbowTheme.darkMode.colors
|
|
12554
|
-
},
|
|
12656
|
+
colors: { ...(0, import_rainbowkit3.darkTheme)().colors, ...rainbowTheme.darkMode.colors },
|
|
12555
12657
|
shadows: rainbowTheme.darkMode.shadows,
|
|
12556
12658
|
radii: rainbowTheme.darkMode.radii
|
|
12557
12659
|
} : {
|
|
12558
12660
|
...(0, import_rainbowkit3.lightTheme)(),
|
|
12559
|
-
colors: {
|
|
12560
|
-
...(0, import_rainbowkit3.lightTheme)().colors,
|
|
12561
|
-
...rainbowTheme.lightMode.colors
|
|
12562
|
-
},
|
|
12661
|
+
colors: { ...(0, import_rainbowkit3.lightTheme)().colors, ...rainbowTheme.lightMode.colors },
|
|
12563
12662
|
shadows: rainbowTheme.lightMode.shadows,
|
|
12564
12663
|
radii: rainbowTheme.lightMode.radii
|
|
12565
12664
|
},
|
|
12566
|
-
[
|
|
12665
|
+
[colorMode]
|
|
12567
12666
|
);
|
|
12568
|
-
|
|
12569
|
-
if (!isWalletEnabled) {
|
|
12570
|
-
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_jsx_runtime67.Fragment, { children });
|
|
12571
|
-
}
|
|
12667
|
+
if (!config.current?.wallet?.enabled) return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_jsx_runtime67.Fragment, { children });
|
|
12572
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 }) });
|
|
12573
|
-
}
|
|
12669
|
+
}
|
|
12574
12670
|
|
|
12575
12671
|
// src/internal/components/UserOpStatus.tsx
|
|
12576
12672
|
var import_lucide_react45 = require("lucide-react");
|
|
12577
|
-
var
|
|
12673
|
+
var React15 = __toESM(require("react"), 1);
|
|
12578
12674
|
init_base();
|
|
12579
12675
|
|
|
12580
12676
|
// src/internal/utils/cn.ts
|
|
@@ -12586,7 +12682,7 @@ function cn2(...inputs) {
|
|
|
12586
12682
|
|
|
12587
12683
|
// src/internal/components/Address.tsx
|
|
12588
12684
|
var import_lucide_react44 = require("lucide-react");
|
|
12589
|
-
var
|
|
12685
|
+
var React14 = __toESM(require("react"), 1);
|
|
12590
12686
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
12591
12687
|
function toExplorerAddressUrl(address, chain) {
|
|
12592
12688
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12608,7 +12704,7 @@ var Address = ({
|
|
|
12608
12704
|
}) => {
|
|
12609
12705
|
const addr = address || "";
|
|
12610
12706
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12611
|
-
const [copied, setCopied] =
|
|
12707
|
+
const [copied, setCopied] = React14.useState(false);
|
|
12612
12708
|
if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12613
12709
|
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12614
12710
|
label && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12681,20 +12777,20 @@ var UserOpStatus = ({
|
|
|
12681
12777
|
externalState
|
|
12682
12778
|
}) => {
|
|
12683
12779
|
const useExternalState = !!externalState;
|
|
12684
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12685
|
-
const [internalMempool, setInternalMempool] =
|
|
12686
|
-
const [internalError, setInternalError] =
|
|
12687
|
-
const [attempt, setAttempt] =
|
|
12688
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12689
|
-
const [timedOut, setTimedOut] =
|
|
12690
|
-
const [rejected, setRejected] =
|
|
12691
|
-
const intervalRef =
|
|
12692
|
-
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());
|
|
12693
12789
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12694
12790
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12695
12791
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12696
12792
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12697
|
-
const rpc =
|
|
12793
|
+
const rpc = React15.useCallback(async (method, params) => {
|
|
12698
12794
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12699
12795
|
const res = await fetch(getBundlerUrl(), {
|
|
12700
12796
|
method: "POST",
|
|
@@ -12705,14 +12801,14 @@ var UserOpStatus = ({
|
|
|
12705
12801
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12706
12802
|
return json.result;
|
|
12707
12803
|
}, []);
|
|
12708
|
-
const extractMempoolInfo =
|
|
12804
|
+
const extractMempoolInfo = React15.useCallback((m) => {
|
|
12709
12805
|
if (!m) return null;
|
|
12710
12806
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12711
12807
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12712
12808
|
if (!entryPoint && !sender) return null;
|
|
12713
12809
|
return { entryPoint, sender };
|
|
12714
12810
|
}, []);
|
|
12715
|
-
const tick =
|
|
12811
|
+
const tick = React15.useCallback(async () => {
|
|
12716
12812
|
if (useExternalState) return;
|
|
12717
12813
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12718
12814
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12756,7 +12852,7 @@ var UserOpStatus = ({
|
|
|
12756
12852
|
setAttempt((x) => x + 1);
|
|
12757
12853
|
}
|
|
12758
12854
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12759
|
-
|
|
12855
|
+
React15.useEffect(() => {
|
|
12760
12856
|
if (useExternalState) return;
|
|
12761
12857
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12762
12858
|
startTimeRef.current = Date.now();
|
|
@@ -12768,7 +12864,7 @@ var UserOpStatus = ({
|
|
|
12768
12864
|
setAttempt(0);
|
|
12769
12865
|
setInternalRefreshing(false);
|
|
12770
12866
|
}, [userOpHash, useExternalState]);
|
|
12771
|
-
|
|
12867
|
+
React15.useEffect(() => {
|
|
12772
12868
|
if (useExternalState) {
|
|
12773
12869
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12774
12870
|
return;
|
|
@@ -12945,7 +13041,7 @@ var UserOpStatus = ({
|
|
|
12945
13041
|
|
|
12946
13042
|
// src/internal/components/Hash.tsx
|
|
12947
13043
|
var import_lucide_react46 = require("lucide-react");
|
|
12948
|
-
var
|
|
13044
|
+
var React16 = __toESM(require("react"), 1);
|
|
12949
13045
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
12950
13046
|
function toExplorerUrl(kind, value, chain) {
|
|
12951
13047
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12969,7 +13065,7 @@ var Hash = ({
|
|
|
12969
13065
|
}) => {
|
|
12970
13066
|
const value = hash || "";
|
|
12971
13067
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12972
|
-
const [copied, setCopied] =
|
|
13068
|
+
const [copied, setCopied] = React16.useState(false);
|
|
12973
13069
|
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12974
13070
|
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12975
13071
|
label && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -13006,14 +13102,14 @@ var Hash = ({
|
|
|
13006
13102
|
};
|
|
13007
13103
|
|
|
13008
13104
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
13009
|
-
var
|
|
13105
|
+
var import_react55 = require("react");
|
|
13010
13106
|
init_base();
|
|
13011
13107
|
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
13012
13108
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
13013
|
-
const [transactions, setTransactions] = (0,
|
|
13014
|
-
const [loading, setLoading] = (0,
|
|
13015
|
-
const [error, setError] = (0,
|
|
13016
|
-
(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)(() => {
|
|
13017
13113
|
const fetchTransactions = async () => {
|
|
13018
13114
|
try {
|
|
13019
13115
|
setLoading(true);
|
|
@@ -13132,7 +13228,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
13132
13228
|
};
|
|
13133
13229
|
|
|
13134
13230
|
// src/hooks/useUserOpStatus.ts
|
|
13135
|
-
var
|
|
13231
|
+
var React18 = __toESM(require("react"), 1);
|
|
13136
13232
|
init_base();
|
|
13137
13233
|
function useUserOpStatus(options = {}) {
|
|
13138
13234
|
const {
|
|
@@ -13144,16 +13240,16 @@ function useUserOpStatus(options = {}) {
|
|
|
13144
13240
|
onReceipt,
|
|
13145
13241
|
onTxHash
|
|
13146
13242
|
} = options;
|
|
13147
|
-
const [state, setState] =
|
|
13148
|
-
const [receipt, setReceipt] =
|
|
13149
|
-
const [mempool, setMempool] =
|
|
13150
|
-
const [txHash, setTxHash] =
|
|
13151
|
-
const [error, setError] =
|
|
13152
|
-
const [isPolling, setIsPolling] =
|
|
13153
|
-
const intervalRef =
|
|
13154
|
-
const startTimeRef =
|
|
13155
|
-
const prevStateRef =
|
|
13156
|
-
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) => {
|
|
13157
13253
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
13158
13254
|
const res = await fetch(getBundlerUrl(), {
|
|
13159
13255
|
method: "POST",
|
|
@@ -13164,21 +13260,21 @@ function useUserOpStatus(options = {}) {
|
|
|
13164
13260
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
13165
13261
|
return json.result;
|
|
13166
13262
|
}, []);
|
|
13167
|
-
const extractMempoolInfo =
|
|
13263
|
+
const extractMempoolInfo = React18.useCallback((m) => {
|
|
13168
13264
|
if (!m) return null;
|
|
13169
13265
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
13170
13266
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
13171
13267
|
if (!entryPoint && !sender) return null;
|
|
13172
13268
|
return { entryPoint, sender };
|
|
13173
13269
|
}, []);
|
|
13174
|
-
const updateState =
|
|
13270
|
+
const updateState = React18.useCallback((newState) => {
|
|
13175
13271
|
setState(newState);
|
|
13176
13272
|
if (prevStateRef.current !== newState) {
|
|
13177
13273
|
prevStateRef.current = newState;
|
|
13178
13274
|
onStateChange?.(newState);
|
|
13179
13275
|
}
|
|
13180
13276
|
}, [onStateChange]);
|
|
13181
|
-
const tick =
|
|
13277
|
+
const tick = React18.useCallback(async () => {
|
|
13182
13278
|
if (!userOpHash || !enabled) return;
|
|
13183
13279
|
if (receipt) {
|
|
13184
13280
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13251,7 +13347,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13251
13347
|
onTxHash,
|
|
13252
13348
|
onReceipt
|
|
13253
13349
|
]);
|
|
13254
|
-
|
|
13350
|
+
React18.useEffect(() => {
|
|
13255
13351
|
if (!userOpHash || !enabled) return;
|
|
13256
13352
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13257
13353
|
startTimeRef.current = Date.now();
|
|
@@ -13263,7 +13359,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13263
13359
|
setError(null);
|
|
13264
13360
|
setIsPolling(false);
|
|
13265
13361
|
}, [userOpHash, enabled]);
|
|
13266
|
-
|
|
13362
|
+
React18.useEffect(() => {
|
|
13267
13363
|
if (!userOpHash || !enabled) {
|
|
13268
13364
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13269
13365
|
return;
|
|
@@ -13299,7 +13395,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13299
13395
|
}
|
|
13300
13396
|
};
|
|
13301
13397
|
}, [userOpHash, enabled, pollMs]);
|
|
13302
|
-
const refresh =
|
|
13398
|
+
const refresh = React18.useCallback(async () => {
|
|
13303
13399
|
await tick();
|
|
13304
13400
|
}, [tick]);
|
|
13305
13401
|
return {
|
|
@@ -13315,11 +13411,11 @@ function useUserOpStatus(options = {}) {
|
|
|
13315
13411
|
|
|
13316
13412
|
// src/hooks/useLogout.ts
|
|
13317
13413
|
var import_auth20 = require("@lumiapassport/core/auth");
|
|
13318
|
-
var
|
|
13414
|
+
var import_react56 = require("react");
|
|
13319
13415
|
function useLogout() {
|
|
13320
13416
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13321
13417
|
const { callbacks } = useLumiaPassportConfig();
|
|
13322
|
-
const logout2 = (0,
|
|
13418
|
+
const logout2 = (0, import_react56.useCallback)(async () => {
|
|
13323
13419
|
const prevAddress = address;
|
|
13324
13420
|
let userId = null;
|
|
13325
13421
|
setIsLoading(true);
|