@lumiapassport/ui-kit 1.13.2 → 1.13.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Inter.ttf +0 -0
- package/dist/iframe/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +569 -567
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +477 -475
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +3 -2
package/dist/index.cjs
CHANGED
|
@@ -4297,7 +4297,7 @@ __export(index_exports, {
|
|
|
4297
4297
|
module.exports = __toCommonJS(index_exports);
|
|
4298
4298
|
|
|
4299
4299
|
// src/styles/built.css
|
|
4300
|
-
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-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-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:Inter;src:url(@/src/styles/Inter-VariableFont_opsz,wght.ttf) format("truetype-variations");font-weight:100 900;font-stretch:75% 125%;font-style:normal;font-display:swap}.lumia-scope{--l-pass-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-l,0);overflow-y:auto;max-height:320px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4300
|
+
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-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-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:Inter;src:url(Inter.ttf) format("truetype-variations");font-weight:100 900;font-stretch:75% 125%;font-style:normal;font-display:swap}.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-l,0);overflow-y:auto;max-height:320px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4301
4301
|
|
|
4302
4302
|
// src/context/LumiaPassportContext.tsx
|
|
4303
4303
|
var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
|
|
@@ -4310,14 +4310,307 @@ init_iframe_manager();
|
|
|
4310
4310
|
var import_react47 = require("react");
|
|
4311
4311
|
var import_zustand5 = require("zustand");
|
|
4312
4312
|
|
|
4313
|
+
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
4314
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
4315
|
+
var import_react2 = require("react");
|
|
4316
|
+
var import_wagmi = require("wagmi");
|
|
4317
|
+
init_base();
|
|
4318
|
+
|
|
4319
|
+
// src/internal/hooks/useLayoutDataStore.ts
|
|
4320
|
+
var import_zustand = require("zustand");
|
|
4321
|
+
|
|
4322
|
+
// src/internal/constants.ts
|
|
4323
|
+
var import_lucide_react2 = require("lucide-react");
|
|
4324
|
+
init_assets();
|
|
4325
|
+
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4326
|
+
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4327
|
+
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4328
|
+
var MAX_LIST_HEIGHT = 320;
|
|
4329
|
+
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4330
|
+
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4331
|
+
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
4332
|
+
var PROVIDERS_META2 = {
|
|
4333
|
+
passkey: { name: "Passkey", icon: import_lucide_react2.Key, description: "Biometric authentication" },
|
|
4334
|
+
email: { name: "Email", icon: import_lucide_react2.Mail, description: "Email verification" },
|
|
4335
|
+
telegram: { name: "Telegram", icon: TelegramIcon, description: "Telegram account" },
|
|
4336
|
+
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
4337
|
+
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
4338
|
+
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
4339
|
+
wallet: { name: "Wallet", icon: import_lucide_react2.Wallet2, description: "External wallet (EOA)" }
|
|
4340
|
+
};
|
|
4341
|
+
|
|
4342
|
+
// src/internal/hooks/useLayoutDataStore.ts
|
|
4343
|
+
var PageKey = /* @__PURE__ */ ((PageKey2) => {
|
|
4344
|
+
PageKey2["AUTH"] = "auth";
|
|
4345
|
+
PageKey2["TERMS_OF_SERVICE"] = "terms-of-service";
|
|
4346
|
+
PageKey2["MAIN_MENU"] = "main-menu";
|
|
4347
|
+
PageKey2["SETTINGS"] = "settings";
|
|
4348
|
+
PageKey2["SEND"] = "send";
|
|
4349
|
+
PageKey2["RECEIVE"] = "receive";
|
|
4350
|
+
PageKey2["BUY"] = "buy";
|
|
4351
|
+
PageKey2["KYC"] = "kyc";
|
|
4352
|
+
PageKey2["TRANSACTIONS"] = "transactions";
|
|
4353
|
+
PageKey2["ASSETS"] = "assets";
|
|
4354
|
+
PageKey2["MANAGE_WALLET"] = "manage-wallet";
|
|
4355
|
+
PageKey2["UNLINK_PROVIDER"] = "unlink-provider";
|
|
4356
|
+
PageKey2["SECURITY"] = "security";
|
|
4357
|
+
PageKey2["KEYSARE_BACKUP"] = "keysare-backup";
|
|
4358
|
+
PageKey2["KEYSHARE_RESTORE"] = "keyshare-restore";
|
|
4359
|
+
return PageKey2;
|
|
4360
|
+
})(PageKey || {});
|
|
4361
|
+
var useLayoutDataStore = (0, import_zustand.create)((set) => ({
|
|
4362
|
+
page: null,
|
|
4363
|
+
pageParams: null,
|
|
4364
|
+
cryptoRate: 1,
|
|
4365
|
+
cryptoSymbol: "LUMIA",
|
|
4366
|
+
fiatBalance: 0,
|
|
4367
|
+
fiatSymbol: "USD",
|
|
4368
|
+
balance: { decimals: 18, formatted: "0.0", symbol: "LUMIA", value: BigInt(0) },
|
|
4369
|
+
mainPageHeight: DEFAULT_MAIN_MENU_HEIGHT,
|
|
4370
|
+
settingsNotifications: [],
|
|
4371
|
+
setPage: (page) => set({ page }),
|
|
4372
|
+
setPageParams: (pageOptions) => set({ pageParams: pageOptions }),
|
|
4373
|
+
setCryptoRate: (lumiaRate) => set({ cryptoRate: lumiaRate }),
|
|
4374
|
+
setCryptoSymbol: (cryptoSymbol) => set({ cryptoSymbol }),
|
|
4375
|
+
setFiatBalance: (usdBalance) => set({ fiatBalance: usdBalance }),
|
|
4376
|
+
setFiatSymbol: (fiatSymbol) => set({ fiatSymbol }),
|
|
4377
|
+
setBalance: (balance) => set({ balance }),
|
|
4378
|
+
setMainPageHeight: (height) => set({ mainPageHeight: height }),
|
|
4379
|
+
setSettingsNotifications: (notification) => set((prev) => {
|
|
4380
|
+
const actions = notification.status === "active" ? "add" : "remove";
|
|
4381
|
+
const exists = prev.settingsNotifications.find((n) => n.id === notification.id);
|
|
4382
|
+
if (actions === "add") {
|
|
4383
|
+
if (exists) return prev;
|
|
4384
|
+
return { settingsNotifications: [...prev.settingsNotifications, notification] };
|
|
4385
|
+
}
|
|
4386
|
+
const filtered = prev.settingsNotifications.filter((n) => n.id !== notification.id);
|
|
4387
|
+
return { settingsNotifications: filtered };
|
|
4388
|
+
})
|
|
4389
|
+
}));
|
|
4390
|
+
|
|
4391
|
+
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
4392
|
+
var import_react_query = require("@tanstack/react-query");
|
|
4393
|
+
var import_react = require("react");
|
|
4394
|
+
|
|
4395
|
+
// src/internal/lib/LumiaPriceSSEService.ts
|
|
4396
|
+
var FALLBACK = "https://fallback.lumia.passport.io";
|
|
4397
|
+
var API_DOMAIN = (true ? "" : FALLBACK) || FALLBACK;
|
|
4398
|
+
var LumiaPriceSSEService = class {
|
|
4399
|
+
// private readonly baseUrl: string = API_DOMAIN
|
|
4400
|
+
constructor() {
|
|
4401
|
+
this.eventSource = null;
|
|
4402
|
+
this.listeners = /* @__PURE__ */ new Set();
|
|
4403
|
+
this.currentPrice = null;
|
|
4404
|
+
this.isConnected = false;
|
|
4405
|
+
this.reconnectTimeout = null;
|
|
4406
|
+
}
|
|
4407
|
+
connect() {
|
|
4408
|
+
return new Promise((resolve, reject) => {
|
|
4409
|
+
console.log("[LumiaPriceSSEService]: Connecting to LUMIA Price SSE...");
|
|
4410
|
+
if (this.isConnected) {
|
|
4411
|
+
resolve();
|
|
4412
|
+
return;
|
|
4413
|
+
}
|
|
4414
|
+
try {
|
|
4415
|
+
this.eventSource = new EventSource(`${API_DOMAIN}/api/lumia/sse`);
|
|
4416
|
+
this.eventSource.onopen = () => {
|
|
4417
|
+
console.log("[LumiaPriceSSEService]: LUMIA Price SSE connected");
|
|
4418
|
+
this.isConnected = true;
|
|
4419
|
+
this.clearReconnectTimeout();
|
|
4420
|
+
resolve();
|
|
4421
|
+
};
|
|
4422
|
+
this.eventSource.onmessage = () => {
|
|
4423
|
+
};
|
|
4424
|
+
this.eventSource.addEventListener("rate", (event) => {
|
|
4425
|
+
try {
|
|
4426
|
+
const data = JSON.parse(event.data);
|
|
4427
|
+
if (data.price !== void 0 && data.symbol === "LUMIAUSDT") {
|
|
4428
|
+
this.currentPrice = typeof data.price === "number" ? data.price : parseFloat(data.price);
|
|
4429
|
+
if (this.currentPrice !== null) {
|
|
4430
|
+
const update = {
|
|
4431
|
+
symbol: data.symbol,
|
|
4432
|
+
price: this.currentPrice,
|
|
4433
|
+
ts: data.ts || Date.now()
|
|
4434
|
+
};
|
|
4435
|
+
this.listeners.forEach((listener) => listener(update));
|
|
4436
|
+
}
|
|
4437
|
+
}
|
|
4438
|
+
} catch (error) {
|
|
4439
|
+
console.error("Error parsing price event:", error, event.data);
|
|
4440
|
+
}
|
|
4441
|
+
});
|
|
4442
|
+
this.eventSource.addEventListener("ping", () => {
|
|
4443
|
+
});
|
|
4444
|
+
this.eventSource.onerror = (error) => {
|
|
4445
|
+
console.error("LUMIA Price SSE error:", error);
|
|
4446
|
+
this.isConnected = false;
|
|
4447
|
+
if (this.eventSource?.readyState === EventSource.CLOSED) {
|
|
4448
|
+
console.log("SSE connection closed, attempting to reconnect...");
|
|
4449
|
+
this.scheduleReconnect();
|
|
4450
|
+
reject(error);
|
|
4451
|
+
}
|
|
4452
|
+
};
|
|
4453
|
+
setTimeout(() => {
|
|
4454
|
+
if (!this.isConnected) {
|
|
4455
|
+
reject(new Error("SSE connection timeout"));
|
|
4456
|
+
}
|
|
4457
|
+
}, 1e4);
|
|
4458
|
+
} catch (error) {
|
|
4459
|
+
reject(error);
|
|
4460
|
+
}
|
|
4461
|
+
});
|
|
4462
|
+
}
|
|
4463
|
+
disconnect() {
|
|
4464
|
+
this.clearReconnectTimeout();
|
|
4465
|
+
if (this.eventSource) {
|
|
4466
|
+
this.eventSource.close();
|
|
4467
|
+
this.eventSource = null;
|
|
4468
|
+
}
|
|
4469
|
+
this.isConnected = false;
|
|
4470
|
+
this.currentPrice = null;
|
|
4471
|
+
console.log("[LumiaPriceSSEService]: LUMIA Price SSE disconnected");
|
|
4472
|
+
}
|
|
4473
|
+
addListener(listener) {
|
|
4474
|
+
this.listeners.add(listener);
|
|
4475
|
+
}
|
|
4476
|
+
removeListener(listener) {
|
|
4477
|
+
this.listeners.delete(listener);
|
|
4478
|
+
}
|
|
4479
|
+
clearListeners() {
|
|
4480
|
+
this.listeners.clear();
|
|
4481
|
+
}
|
|
4482
|
+
getCurrentPrice() {
|
|
4483
|
+
return this.currentPrice;
|
|
4484
|
+
}
|
|
4485
|
+
getConnectionStatus() {
|
|
4486
|
+
return this.isConnected;
|
|
4487
|
+
}
|
|
4488
|
+
scheduleReconnect() {
|
|
4489
|
+
this.clearReconnectTimeout();
|
|
4490
|
+
this.reconnectTimeout = window.setTimeout(() => {
|
|
4491
|
+
console.log("Attempting to reconnect to BTC Price SSE...");
|
|
4492
|
+
this.connect().catch((error) => {
|
|
4493
|
+
console.error("Reconnection failed:", error);
|
|
4494
|
+
this.scheduleReconnect();
|
|
4495
|
+
});
|
|
4496
|
+
}, 5e3);
|
|
4497
|
+
}
|
|
4498
|
+
clearReconnectTimeout() {
|
|
4499
|
+
if (this.reconnectTimeout) {
|
|
4500
|
+
clearTimeout(this.reconnectTimeout);
|
|
4501
|
+
this.reconnectTimeout = null;
|
|
4502
|
+
}
|
|
4503
|
+
}
|
|
4504
|
+
};
|
|
4505
|
+
var lumiaPriceSSE = new LumiaPriceSSEService();
|
|
4506
|
+
async function sseConnectMutation() {
|
|
4507
|
+
try {
|
|
4508
|
+
await lumiaPriceSSE.connect();
|
|
4509
|
+
console.info("[LUMIA SSE] price feed connected");
|
|
4510
|
+
return { ok: true };
|
|
4511
|
+
} catch (error) {
|
|
4512
|
+
console.error("[LUMIA SSE] Error connecting to SSE:", error);
|
|
4513
|
+
throw new Error("[LUMIA SSE] Error connecting to SSE");
|
|
4514
|
+
}
|
|
4515
|
+
}
|
|
4516
|
+
|
|
4517
|
+
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
4518
|
+
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
4519
|
+
const { mutate: connectSSE } = (0, import_react_query.useMutation)({
|
|
4520
|
+
mutationFn: sseConnectMutation,
|
|
4521
|
+
onSuccess: () => {
|
|
4522
|
+
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
4523
|
+
},
|
|
4524
|
+
onError: (err) => {
|
|
4525
|
+
console.error("Lumia Price SSE connection error:", err);
|
|
4526
|
+
}
|
|
4527
|
+
});
|
|
4528
|
+
(0, import_react.useEffect)(() => {
|
|
4529
|
+
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
4530
|
+
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
4531
|
+
if (!enabled) {
|
|
4532
|
+
lumiaPriceSSE.clearListeners();
|
|
4533
|
+
lumiaPriceSSE.disconnect();
|
|
4534
|
+
return;
|
|
4535
|
+
}
|
|
4536
|
+
return () => {
|
|
4537
|
+
lumiaPriceSSE.clearListeners();
|
|
4538
|
+
lumiaPriceSSE.disconnect();
|
|
4539
|
+
};
|
|
4540
|
+
}, [enabled, connectSSE]);
|
|
4541
|
+
}
|
|
4542
|
+
|
|
4543
|
+
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
4544
|
+
var BALANCE_POLLING_INTERVAL = 3e4;
|
|
4545
|
+
function BalanceFeedProvider() {
|
|
4546
|
+
const config = useLumiaPassportConfig().config;
|
|
4547
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
4548
|
+
const { cryptoRate, setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore();
|
|
4549
|
+
const [balanceSymbol, setBalanceSymbol] = (0, import_react2.useState)(null);
|
|
4550
|
+
(0, import_react2.useEffect)(() => {
|
|
4551
|
+
const { assets, showBalanceAs: customBalanceSymbol } = config.current?.projectAssets || {};
|
|
4552
|
+
const { balanceQuery, balanceQueryKey } = assets?.find((a) => a.symbol === customBalanceSymbol) || {};
|
|
4553
|
+
const isCustom = !!customBalanceSymbol && !!balanceQuery && !!balanceQueryKey;
|
|
4554
|
+
setBalanceSymbol(isCustom ? customBalanceSymbol : lumiaBeam.nativeCurrency.symbol);
|
|
4555
|
+
}, [config, address]);
|
|
4556
|
+
const isNativeBalanceFeedEnabled = balanceSymbol === lumiaBeam.nativeCurrency.symbol;
|
|
4557
|
+
const { data: balance } = (0, import_wagmi.useBalance)({
|
|
4558
|
+
address,
|
|
4559
|
+
chainId: lumiaBeam.id,
|
|
4560
|
+
query: {
|
|
4561
|
+
enabled: !!address && !!isNativeBalanceFeedEnabled,
|
|
4562
|
+
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
4563
|
+
refetchOnMount: true,
|
|
4564
|
+
refetchOnWindowFocus: true
|
|
4565
|
+
}
|
|
4566
|
+
});
|
|
4567
|
+
useLumiaPriceSSE(isNativeBalanceFeedEnabled, (update) => setCryptoRate(update.price || 1));
|
|
4568
|
+
(0, import_react2.useEffect)(() => {
|
|
4569
|
+
if (!isNativeBalanceFeedEnabled || !balance.value) return;
|
|
4570
|
+
setCryptoSymbol("LUMIA");
|
|
4571
|
+
setFiatSymbol("USD");
|
|
4572
|
+
setFiatBalance(Number(balance?.formatted || 0) * cryptoRate);
|
|
4573
|
+
setBalance(balance);
|
|
4574
|
+
}, [isNativeBalanceFeedEnabled, balance, cryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol]);
|
|
4575
|
+
const {
|
|
4576
|
+
balanceQuery: customBalanceQuery,
|
|
4577
|
+
balanceQueryKey: CUSTOM_BALANCE_QUERY_KEY,
|
|
4578
|
+
symbol: customAssetSymbol
|
|
4579
|
+
} = config.current?.projectAssets?.assets?.find((a) => a.symbol === config.current?.projectAssets?.showBalanceAs) || {};
|
|
4580
|
+
const isCustomBalanceEnabled = balanceSymbol === customAssetSymbol;
|
|
4581
|
+
const { data: customBalance } = (0, import_react_query2.useQuery)({
|
|
4582
|
+
retry: false,
|
|
4583
|
+
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
4584
|
+
enabled: !!address && !!isCustomBalanceEnabled,
|
|
4585
|
+
queryKey: CUSTOM_BALANCE_QUERY_KEY,
|
|
4586
|
+
// should be invalidated by host app via provided queryKey
|
|
4587
|
+
queryFn: async () => await customBalanceQuery?.()
|
|
4588
|
+
});
|
|
4589
|
+
(0, import_react2.useEffect)(() => {
|
|
4590
|
+
if (!isCustomBalanceEnabled || !customBalance) return;
|
|
4591
|
+
const { cryptoFiatRate, fiatFormatted, cryptoFormatted, cryptoSymbol, fiatSymbol } = customBalance;
|
|
4592
|
+
setCryptoSymbol(cryptoSymbol.toUpperCase());
|
|
4593
|
+
setFiatSymbol(fiatSymbol.toUpperCase());
|
|
4594
|
+
setCryptoRate(cryptoFiatRate || 1);
|
|
4595
|
+
setFiatBalance(fiatFormatted || 0);
|
|
4596
|
+
setBalance({
|
|
4597
|
+
decimals: 18,
|
|
4598
|
+
formatted: cryptoFormatted?.toString() || "0",
|
|
4599
|
+
symbol: cryptoSymbol.toUpperCase() || "LUMIA",
|
|
4600
|
+
value: BigInt(Math.floor((cryptoFormatted || 0) * 10 ** 18))
|
|
4601
|
+
});
|
|
4602
|
+
}, [isCustomBalanceEnabled, customBalance, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol, setCryptoRate]);
|
|
4603
|
+
return null;
|
|
4604
|
+
}
|
|
4605
|
+
|
|
4313
4606
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4314
4607
|
var import_framer_motion4 = require("framer-motion");
|
|
4315
|
-
var
|
|
4608
|
+
var import_react44 = require("react");
|
|
4316
4609
|
|
|
4317
4610
|
// package.json
|
|
4318
4611
|
var package_default = {
|
|
4319
4612
|
name: "@lumiapassport/ui-kit",
|
|
4320
|
-
version: "1.13.
|
|
4613
|
+
version: "1.13.4",
|
|
4321
4614
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4322
4615
|
type: "module",
|
|
4323
4616
|
main: "./dist/index.cjs",
|
|
@@ -4333,7 +4626,8 @@ var package_default = {
|
|
|
4333
4626
|
"build:css": "tailwindcss -c tailwind.config.cjs -i src/styles/index.css -o src/styles/built.css --minify",
|
|
4334
4627
|
"build:iframe-html": "node scripts/copy-iframe-html.js",
|
|
4335
4628
|
"build:copy-css": "cp src/styles/built.css dist/styles.css",
|
|
4336
|
-
build:
|
|
4629
|
+
"build:copy-font": "cp src/styles/Inter.ttf dist/Inter.ttf",
|
|
4630
|
+
build: "pnpm build:css && tsup && pnpm build:iframe-html && pnpm build:copy-css && pnpm build:copy-font",
|
|
4337
4631
|
dev: "pnpm build:css && tsup --watch",
|
|
4338
4632
|
"dev:iframe": "vite --config iframe/vite.config.ts"
|
|
4339
4633
|
},
|
|
@@ -4405,13 +4699,13 @@ var package_default = {
|
|
|
4405
4699
|
};
|
|
4406
4700
|
|
|
4407
4701
|
// src/internal/components/Footer/Footer.tsx
|
|
4408
|
-
var
|
|
4702
|
+
var import_react_query3 = require("@tanstack/react-query");
|
|
4409
4703
|
var import_lucide_react3 = require("lucide-react");
|
|
4410
4704
|
|
|
4411
4705
|
// src/internal/assets/LumiaLogo.tsx
|
|
4412
|
-
var
|
|
4706
|
+
var import_react3 = require("react");
|
|
4413
4707
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
4414
|
-
var LumiaLogo = (0,
|
|
4708
|
+
var LumiaLogo = (0, import_react3.forwardRef)(({ size = 24, className = "" }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
4415
4709
|
"svg",
|
|
4416
4710
|
{
|
|
4417
4711
|
ref,
|
|
@@ -4463,78 +4757,6 @@ var LumiaLogo = (0, import_react.forwardRef)(({ size = 24, className = "" }, ref
|
|
|
4463
4757
|
init_auth();
|
|
4464
4758
|
init_base();
|
|
4465
4759
|
|
|
4466
|
-
// src/internal/hooks/useLayoutDataStore.ts
|
|
4467
|
-
var import_zustand = require("zustand");
|
|
4468
|
-
|
|
4469
|
-
// src/internal/constants.ts
|
|
4470
|
-
var import_lucide_react2 = require("lucide-react");
|
|
4471
|
-
init_assets();
|
|
4472
|
-
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4473
|
-
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4474
|
-
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4475
|
-
var MAX_LIST_HEIGHT = 320;
|
|
4476
|
-
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4477
|
-
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4478
|
-
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
4479
|
-
var PROVIDERS_META2 = {
|
|
4480
|
-
passkey: { name: "Passkey", icon: import_lucide_react2.Key, description: "Biometric authentication" },
|
|
4481
|
-
email: { name: "Email", icon: import_lucide_react2.Mail, description: "Email verification" },
|
|
4482
|
-
telegram: { name: "Telegram", icon: TelegramIcon, description: "Telegram account" },
|
|
4483
|
-
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
4484
|
-
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
4485
|
-
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
4486
|
-
wallet: { name: "Wallet", icon: import_lucide_react2.Wallet2, description: "External wallet (EOA)" }
|
|
4487
|
-
};
|
|
4488
|
-
|
|
4489
|
-
// src/internal/hooks/useLayoutDataStore.ts
|
|
4490
|
-
var PageKey = /* @__PURE__ */ ((PageKey2) => {
|
|
4491
|
-
PageKey2["AUTH"] = "auth";
|
|
4492
|
-
PageKey2["TERMS_OF_SERVICE"] = "terms-of-service";
|
|
4493
|
-
PageKey2["MAIN_MENU"] = "main-menu";
|
|
4494
|
-
PageKey2["SETTINGS"] = "settings";
|
|
4495
|
-
PageKey2["SEND"] = "send";
|
|
4496
|
-
PageKey2["RECEIVE"] = "receive";
|
|
4497
|
-
PageKey2["BUY"] = "buy";
|
|
4498
|
-
PageKey2["KYC"] = "kyc";
|
|
4499
|
-
PageKey2["TRANSACTIONS"] = "transactions";
|
|
4500
|
-
PageKey2["ASSETS"] = "assets";
|
|
4501
|
-
PageKey2["MANAGE_WALLET"] = "manage-wallet";
|
|
4502
|
-
PageKey2["UNLINK_PROVIDER"] = "unlink-provider";
|
|
4503
|
-
PageKey2["SECURITY"] = "security";
|
|
4504
|
-
PageKey2["KEYSARE_BACKUP"] = "keysare-backup";
|
|
4505
|
-
PageKey2["KEYSHARE_RESTORE"] = "keyshare-restore";
|
|
4506
|
-
return PageKey2;
|
|
4507
|
-
})(PageKey || {});
|
|
4508
|
-
var useLayoutDataStore = (0, import_zustand.create)((set) => ({
|
|
4509
|
-
page: null,
|
|
4510
|
-
pageParams: null,
|
|
4511
|
-
cryptoRate: 1,
|
|
4512
|
-
cryptoSymbol: "LUMIA",
|
|
4513
|
-
fiatBalance: 0,
|
|
4514
|
-
fiatSymbol: "USD",
|
|
4515
|
-
balance: { decimals: 18, formatted: "0.0", symbol: "LUMIA", value: BigInt(0) },
|
|
4516
|
-
mainPageHeight: DEFAULT_MAIN_MENU_HEIGHT,
|
|
4517
|
-
settingsNotifications: [],
|
|
4518
|
-
setPage: (page) => set({ page }),
|
|
4519
|
-
setPageParams: (pageOptions) => set({ pageParams: pageOptions }),
|
|
4520
|
-
setCryptoRate: (lumiaRate) => set({ cryptoRate: lumiaRate }),
|
|
4521
|
-
setCryptoSymbol: (cryptoSymbol) => set({ cryptoSymbol }),
|
|
4522
|
-
setFiatBalance: (usdBalance) => set({ fiatBalance: usdBalance }),
|
|
4523
|
-
setFiatSymbol: (fiatSymbol) => set({ fiatSymbol }),
|
|
4524
|
-
setBalance: (balance) => set({ balance }),
|
|
4525
|
-
setMainPageHeight: (height) => set({ mainPageHeight: height }),
|
|
4526
|
-
setSettingsNotifications: (notification) => set((prev) => {
|
|
4527
|
-
const actions = notification.status === "active" ? "add" : "remove";
|
|
4528
|
-
const exists = prev.settingsNotifications.find((n) => n.id === notification.id);
|
|
4529
|
-
if (actions === "add") {
|
|
4530
|
-
if (exists) return prev;
|
|
4531
|
-
return { settingsNotifications: [...prev.settingsNotifications, notification] };
|
|
4532
|
-
}
|
|
4533
|
-
const filtered = prev.settingsNotifications.filter((n) => n.id !== notification.id);
|
|
4534
|
-
return { settingsNotifications: filtered };
|
|
4535
|
-
})
|
|
4536
|
-
}));
|
|
4537
|
-
|
|
4538
4760
|
// src/internal/lib/utils.ts
|
|
4539
4761
|
var import_clsx = require("clsx");
|
|
4540
4762
|
var import_tailwind_merge = require("tailwind-merge");
|
|
@@ -4622,7 +4844,7 @@ function Footer() {
|
|
|
4622
4844
|
const { callbacks } = useLumiaPassportConfig();
|
|
4623
4845
|
const { address, setSession, setAddress, setStatus, setError, setIsLoading } = useLumiaPassportSession();
|
|
4624
4846
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
4625
|
-
const { mutate: disconnect, isPending: isDisconnecting } = (0,
|
|
4847
|
+
const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query3.useMutation)({
|
|
4626
4848
|
mutationFn: async (disconnectAddress) => {
|
|
4627
4849
|
if (!disconnectAddress) throw new Error("No address to disconnect");
|
|
4628
4850
|
setError(null);
|
|
@@ -4754,9 +4976,9 @@ function LumiaIcon(props) {
|
|
|
4754
4976
|
}
|
|
4755
4977
|
|
|
4756
4978
|
// src/internal/components/Header/Header.tsx
|
|
4757
|
-
var
|
|
4979
|
+
var import_react_query4 = require("@tanstack/react-query");
|
|
4758
4980
|
var import_lucide_react4 = require("lucide-react");
|
|
4759
|
-
var
|
|
4981
|
+
var import_react4 = require("react");
|
|
4760
4982
|
|
|
4761
4983
|
// src/internal/assets/PositiveIcon.tsx
|
|
4762
4984
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
@@ -4812,10 +5034,10 @@ function Header() {
|
|
|
4812
5034
|
config: { current: config }
|
|
4813
5035
|
} = useLumiaPassportConfig();
|
|
4814
5036
|
const address = useLumiaPassportSession((st) => st.address);
|
|
4815
|
-
const [copied, setCopied] = (0,
|
|
5037
|
+
const [copied, setCopied] = (0, import_react4.useState)(false);
|
|
4816
5038
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
4817
5039
|
const displayName = import_auth3.jwtTokenManager.getDisplayName();
|
|
4818
|
-
const { data: userProfile = null, isLoading: isUserProfileLoading } = (0,
|
|
5040
|
+
const { data: userProfile = null, isLoading: isUserProfileLoading } = (0, import_react_query4.useQuery)({
|
|
4819
5041
|
retry: false,
|
|
4820
5042
|
enabled: !!address,
|
|
4821
5043
|
queryKey: [QUERY_KEYS.userProfile, address],
|
|
@@ -5084,7 +5306,7 @@ var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
|
5084
5306
|
var VisuallyHidden = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "sr-only absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0", children });
|
|
5085
5307
|
|
|
5086
5308
|
// src/internal/hooks/useAutoConnect.ts
|
|
5087
|
-
var
|
|
5309
|
+
var import_react5 = require("react");
|
|
5088
5310
|
function useAutoConnect() {
|
|
5089
5311
|
const {
|
|
5090
5312
|
config: { current: config },
|
|
@@ -5104,7 +5326,7 @@ function useAutoConnect() {
|
|
|
5104
5326
|
setIsIframeReady,
|
|
5105
5327
|
setIsLoading
|
|
5106
5328
|
} = useLumiaPassportSession();
|
|
5107
|
-
const createSessionWithKeyshare = (0,
|
|
5329
|
+
const createSessionWithKeyshare = (0, import_react5.useCallback)(
|
|
5108
5330
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
5109
5331
|
try {
|
|
5110
5332
|
try {
|
|
@@ -5138,8 +5360,8 @@ function useAutoConnect() {
|
|
|
5138
5360
|
},
|
|
5139
5361
|
[usePaymaster, setStatus, callbacks]
|
|
5140
5362
|
);
|
|
5141
|
-
const autoConnectAttemptedRef = (0,
|
|
5142
|
-
(0,
|
|
5363
|
+
const autoConnectAttemptedRef = (0, import_react5.useRef)(false);
|
|
5364
|
+
(0, import_react5.useEffect)(() => {
|
|
5143
5365
|
if (autoConnectAttemptedRef.current) return;
|
|
5144
5366
|
setIsLoading(true);
|
|
5145
5367
|
const tryAutoConnect = async (attempt) => {
|
|
@@ -5258,11 +5480,11 @@ function useAutoConnect() {
|
|
|
5258
5480
|
}
|
|
5259
5481
|
|
|
5260
5482
|
// src/internal/hooks/useBackupStatusChanges.ts
|
|
5261
|
-
var
|
|
5483
|
+
var import_react6 = require("react");
|
|
5262
5484
|
init_vaultClient();
|
|
5263
5485
|
function useBackupStatusChanges() {
|
|
5264
5486
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5265
|
-
(0,
|
|
5487
|
+
(0, import_react6.useEffect)(() => {
|
|
5266
5488
|
const handleBackupStatusChanged = async (event) => {
|
|
5267
5489
|
const customEvent = event;
|
|
5268
5490
|
const { method, success } = customEvent.detail || {};
|
|
@@ -5288,13 +5510,13 @@ function useBackupStatusChanges() {
|
|
|
5288
5510
|
}
|
|
5289
5511
|
|
|
5290
5512
|
// src/internal/hooks/useCheckVaultStatus.ts
|
|
5291
|
-
var
|
|
5292
|
-
var
|
|
5513
|
+
var import_react_query5 = require("@tanstack/react-query");
|
|
5514
|
+
var import_react7 = require("react");
|
|
5293
5515
|
init_vaultClient();
|
|
5294
5516
|
function useCheckVaultStatus() {
|
|
5295
5517
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5296
5518
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5297
|
-
const { mutate: checkVaultStatus } = (0,
|
|
5519
|
+
const { mutate: checkVaultStatus } = (0, import_react_query5.useMutation)({
|
|
5298
5520
|
mutationFn: async () => {
|
|
5299
5521
|
const stats = await getShareRecoveryStats();
|
|
5300
5522
|
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
@@ -5308,19 +5530,19 @@ function useCheckVaultStatus() {
|
|
|
5308
5530
|
setHasServerVault(false);
|
|
5309
5531
|
}
|
|
5310
5532
|
});
|
|
5311
|
-
(0,
|
|
5533
|
+
(0, import_react7.useEffect)(() => {
|
|
5312
5534
|
if (!address) return setHasServerVault(false);
|
|
5313
5535
|
checkVaultStatus();
|
|
5314
5536
|
}, [address, checkVaultStatus]);
|
|
5315
5537
|
}
|
|
5316
5538
|
|
|
5317
5539
|
// src/internal/hooks/usePageMapper.tsx
|
|
5318
|
-
var
|
|
5540
|
+
var import_react41 = require("react");
|
|
5319
5541
|
|
|
5320
5542
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5321
5543
|
var import_framer_motion = require("framer-motion");
|
|
5322
5544
|
var import_lucide_react14 = require("lucide-react");
|
|
5323
|
-
var
|
|
5545
|
+
var import_react17 = require("react");
|
|
5324
5546
|
|
|
5325
5547
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5326
5548
|
var import_lucide_react6 = require("lucide-react");
|
|
@@ -5408,17 +5630,17 @@ function AuthFailedStep() {
|
|
|
5408
5630
|
|
|
5409
5631
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameInput.tsx
|
|
5410
5632
|
var import_lucide_react7 = require("lucide-react");
|
|
5411
|
-
var
|
|
5633
|
+
var import_react9 = require("react");
|
|
5412
5634
|
init_auth();
|
|
5413
5635
|
init_profile();
|
|
5414
5636
|
|
|
5415
5637
|
// src/internal/components/ui/input.tsx
|
|
5416
|
-
var
|
|
5638
|
+
var import_react8 = __toESM(require("react"), 1);
|
|
5417
5639
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
5418
|
-
var Input =
|
|
5640
|
+
var Input = import_react8.default.forwardRef((props, ref) => {
|
|
5419
5641
|
const { className, disabled, error, Icon, element, ...inputProps } = props;
|
|
5420
|
-
const internalRef = (0,
|
|
5421
|
-
(0,
|
|
5642
|
+
const internalRef = (0, import_react8.useRef)(null);
|
|
5643
|
+
(0, import_react8.useImperativeHandle)(ref, () => internalRef.current);
|
|
5422
5644
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cn("w-full flex flex-col gap-1", className), children: [
|
|
5423
5645
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
5424
5646
|
"div",
|
|
@@ -5464,9 +5686,9 @@ Input.displayName = "Input";
|
|
|
5464
5686
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameInput.tsx
|
|
5465
5687
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
5466
5688
|
var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
5467
|
-
const [displayName, setDisplayName] = (0,
|
|
5468
|
-
const [isLoading, setIsLoading] = (0,
|
|
5469
|
-
const [error, setError] = (0,
|
|
5689
|
+
const [displayName, setDisplayName] = (0, import_react9.useState)("");
|
|
5690
|
+
const [isLoading, setIsLoading] = (0, import_react9.useState)(false);
|
|
5691
|
+
const [error, setError] = (0, import_react9.useState)("");
|
|
5470
5692
|
const handleSubmit = async (e) => {
|
|
5471
5693
|
e.preventDefault();
|
|
5472
5694
|
if (!displayName.trim()) {
|
|
@@ -5573,7 +5795,7 @@ function DisplayNameStep(props) {
|
|
|
5573
5795
|
|
|
5574
5796
|
// src/internal/components/AuthMenu/PassKeyStep.tsx
|
|
5575
5797
|
var import_lucide_react8 = require("lucide-react");
|
|
5576
|
-
var
|
|
5798
|
+
var import_react11 = require("react");
|
|
5577
5799
|
|
|
5578
5800
|
// src/internal/assets/PasskeyAddIcon.tsx
|
|
5579
5801
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
@@ -5606,16 +5828,16 @@ function PasskeyAddIcon(props) {
|
|
|
5606
5828
|
init_auth();
|
|
5607
5829
|
|
|
5608
5830
|
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
5609
|
-
var
|
|
5831
|
+
var import_react10 = require("react");
|
|
5610
5832
|
var useExpandable = (props) => {
|
|
5611
5833
|
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
5612
|
-
const expandableRef = (0,
|
|
5613
|
-
const contentRef = (0,
|
|
5614
|
-
(0,
|
|
5834
|
+
const expandableRef = (0, import_react10.useRef)(null);
|
|
5835
|
+
const contentRef = (0, import_react10.useRef)(null);
|
|
5836
|
+
(0, import_react10.useEffect)(() => {
|
|
5615
5837
|
if (!expandableRef.current) return;
|
|
5616
5838
|
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
5617
5839
|
}, []);
|
|
5618
|
-
const setExpandableHeight = (0,
|
|
5840
|
+
const setExpandableHeight = (0, import_react10.useCallback)(
|
|
5619
5841
|
(isExpnd) => {
|
|
5620
5842
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5621
5843
|
expandableRef.current.style.setProperty(
|
|
@@ -5626,7 +5848,7 @@ var useExpandable = (props) => {
|
|
|
5626
5848
|
// ON_RESIZE_DELEAY),
|
|
5627
5849
|
[minHeight]
|
|
5628
5850
|
);
|
|
5629
|
-
(0,
|
|
5851
|
+
(0, import_react10.useEffect)(() => {
|
|
5630
5852
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5631
5853
|
const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
|
|
5632
5854
|
obs.observe(expandableRef.current);
|
|
@@ -5690,7 +5912,7 @@ function PassKeyStep(props) {
|
|
|
5690
5912
|
setFailedMessage,
|
|
5691
5913
|
setFailedType
|
|
5692
5914
|
} = useAuthStore();
|
|
5693
|
-
const onPasskeyRegister = (0,
|
|
5915
|
+
const onPasskeyRegister = (0, import_react11.useCallback)(async () => {
|
|
5694
5916
|
setPasskeyError("");
|
|
5695
5917
|
setPasskeyStatus("registering passkey...");
|
|
5696
5918
|
setIsLoading(true);
|
|
@@ -5758,7 +5980,7 @@ function PassKeyStep(props) {
|
|
|
5758
5980
|
setIsLoading(false);
|
|
5759
5981
|
}
|
|
5760
5982
|
}, [onAuthSuccess, setPage, callbacks]);
|
|
5761
|
-
const onPasskeyAuth = (0,
|
|
5983
|
+
const onPasskeyAuth = (0, import_react11.useCallback)(async () => {
|
|
5762
5984
|
setPasskeyError("");
|
|
5763
5985
|
setPasskeyStatus("checking available passkeys...");
|
|
5764
5986
|
setIsLoading(true);
|
|
@@ -5880,11 +6102,11 @@ function PassKeyStep(props) {
|
|
|
5880
6102
|
|
|
5881
6103
|
// src/internal/components/AuthMenu/SignInStep/SignInStep.tsx
|
|
5882
6104
|
var import_lucide_react12 = require("lucide-react");
|
|
5883
|
-
var
|
|
6105
|
+
var import_react13 = require("react");
|
|
5884
6106
|
|
|
5885
6107
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
5886
6108
|
init_lumiaPassport();
|
|
5887
|
-
var
|
|
6109
|
+
var import_react_query6 = require("@tanstack/react-query");
|
|
5888
6110
|
var import_lucide_react9 = require("lucide-react");
|
|
5889
6111
|
init_projectId();
|
|
5890
6112
|
|
|
@@ -5921,7 +6143,7 @@ function Email() {
|
|
|
5921
6143
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5922
6144
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
5923
6145
|
const { email, codeSendError, setEmail, setCodeSendError, setExpiresIn, setStep } = useAuthStore();
|
|
5924
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
6146
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query6.useMutation)({
|
|
5925
6147
|
mutationFn: async (mail) => {
|
|
5926
6148
|
const isEmailValid = mail.length !== 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail);
|
|
5927
6149
|
if (!isEmailValid) {
|
|
@@ -6019,7 +6241,7 @@ function ErrorAlert(props) {
|
|
|
6019
6241
|
|
|
6020
6242
|
// src/internal/components/AuthMenu/SignInStep/Social.tsx
|
|
6021
6243
|
var import_lucide_react11 = require("lucide-react");
|
|
6022
|
-
var
|
|
6244
|
+
var import_react12 = require("react");
|
|
6023
6245
|
init_assets();
|
|
6024
6246
|
init_lumiaPassport();
|
|
6025
6247
|
init_auth();
|
|
@@ -6112,7 +6334,7 @@ function Social(props) {
|
|
|
6112
6334
|
setPasskeyError,
|
|
6113
6335
|
setPasskeyStatus
|
|
6114
6336
|
} = useAuthStore();
|
|
6115
|
-
const onSocialAuth = (0,
|
|
6337
|
+
const onSocialAuth = (0, import_react12.useCallback)(
|
|
6116
6338
|
async (providerId) => {
|
|
6117
6339
|
const normalizedProviderId = providerId.toLowerCase();
|
|
6118
6340
|
const provider = config?.social?.providers?.find(
|
|
@@ -6517,7 +6739,7 @@ function SignInStep(props) {
|
|
|
6517
6739
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "font-bold text-xl leading-6", children: "Sign In" })
|
|
6518
6740
|
] }),
|
|
6519
6741
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6520
|
-
enabledWoPasskey.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
6742
|
+
enabledWoPasskey.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react13.Fragment, { children: [
|
|
6521
6743
|
idx > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center", children: [
|
|
6522
6744
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
6523
6745
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex-none px-2 text-xs leading-4", children: "Or sign in using" }),
|
|
@@ -6544,19 +6766,19 @@ function SignInStep(props) {
|
|
|
6544
6766
|
}
|
|
6545
6767
|
|
|
6546
6768
|
// src/internal/components/AuthMenu/useAuthMenuHanders.ts
|
|
6547
|
-
var
|
|
6769
|
+
var import_react14 = require("react");
|
|
6548
6770
|
init_auth();
|
|
6549
6771
|
function useAuthMenuHandlers() {
|
|
6550
6772
|
const {
|
|
6551
6773
|
config: { current: config },
|
|
6552
6774
|
callbacks
|
|
6553
6775
|
} = useLumiaPassportConfig();
|
|
6554
|
-
const pendingLoginResponseRef = (0,
|
|
6776
|
+
const pendingLoginResponseRef = (0, import_react14.useRef)(null);
|
|
6555
6777
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6556
|
-
const [telegramCleanup, setTelegramCleanup] = (0,
|
|
6778
|
+
const [telegramCleanup, setTelegramCleanup] = (0, import_react14.useState)(null);
|
|
6557
6779
|
const { usePaymaster, setError, setStatus, setSession, setAddress, setRecoveryUserId, setHasServerVault } = useLumiaPassportSession();
|
|
6558
6780
|
const { setStep, setVerificationError, setCodeSendError, setFailedMessage } = useAuthStore();
|
|
6559
|
-
const createSessionWithKeyshare = (0,
|
|
6781
|
+
const createSessionWithKeyshare = (0, import_react14.useCallback)(
|
|
6560
6782
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
6561
6783
|
try {
|
|
6562
6784
|
try {
|
|
@@ -6590,7 +6812,7 @@ function useAuthMenuHandlers() {
|
|
|
6590
6812
|
},
|
|
6591
6813
|
[setStatus, callbacks, usePaymaster]
|
|
6592
6814
|
);
|
|
6593
|
-
const onAuthSuccess = (0,
|
|
6815
|
+
const onAuthSuccess = (0, import_react14.useCallback)(async () => {
|
|
6594
6816
|
console.log("[ConnectWalletButton] handleAuthModalSuccess called");
|
|
6595
6817
|
const loginResponse = pendingLoginResponseRef.current;
|
|
6596
6818
|
console.log("[ConnectWalletButton] loginResponse:", loginResponse);
|
|
@@ -6685,7 +6907,7 @@ function useAuthMenuHandlers() {
|
|
|
6685
6907
|
setHasServerVault,
|
|
6686
6908
|
createSessionWithKeyshare
|
|
6687
6909
|
]);
|
|
6688
|
-
const checkDisplayNameRequired = (0,
|
|
6910
|
+
const checkDisplayNameRequired = (0, import_react14.useCallback)(
|
|
6689
6911
|
async (loginResponse) => {
|
|
6690
6912
|
if (!config.features.displayNameNeeded) {
|
|
6691
6913
|
return false;
|
|
@@ -6712,7 +6934,7 @@ function useAuthMenuHandlers() {
|
|
|
6712
6934
|
},
|
|
6713
6935
|
[config.features.displayNameNeeded]
|
|
6714
6936
|
);
|
|
6715
|
-
const goBackToSignIn = (0,
|
|
6937
|
+
const goBackToSignIn = (0, import_react14.useCallback)(() => {
|
|
6716
6938
|
setStep("signin");
|
|
6717
6939
|
setVerificationError("");
|
|
6718
6940
|
setCodeSendError("");
|
|
@@ -6730,11 +6952,11 @@ function useAuthMenuHandlers() {
|
|
|
6730
6952
|
}
|
|
6731
6953
|
|
|
6732
6954
|
// src/internal/components/AuthMenu/useListenIframeAuthEvents.ts
|
|
6733
|
-
var
|
|
6955
|
+
var import_react15 = require("react");
|
|
6734
6956
|
function useListenIframeAuthEvents() {
|
|
6735
6957
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
6736
6958
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
6737
|
-
const handleIframeMessage = (0,
|
|
6959
|
+
const handleIframeMessage = (0, import_react15.useCallback)(
|
|
6738
6960
|
(event) => {
|
|
6739
6961
|
console.log("[AuthMenu] Received iframe message:", event.data);
|
|
6740
6962
|
if (event.data?.type === "LUMIA_PASSPORT_IFRAME_READY") {
|
|
@@ -6752,7 +6974,7 @@ function useListenIframeAuthEvents() {
|
|
|
6752
6974
|
},
|
|
6753
6975
|
[setPage, setIsIframeReady]
|
|
6754
6976
|
);
|
|
6755
|
-
(0,
|
|
6977
|
+
(0, import_react15.useEffect)(() => {
|
|
6756
6978
|
window.addEventListener("message", handleIframeMessage);
|
|
6757
6979
|
return () => window.removeEventListener("message", handleIframeMessage);
|
|
6758
6980
|
}, [handleIframeMessage]);
|
|
@@ -6760,7 +6982,7 @@ function useListenIframeAuthEvents() {
|
|
|
6760
6982
|
|
|
6761
6983
|
// src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
|
|
6762
6984
|
init_lumiaPassport();
|
|
6763
|
-
var
|
|
6985
|
+
var import_react_query7 = require("@tanstack/react-query");
|
|
6764
6986
|
var import_lucide_react13 = require("lucide-react");
|
|
6765
6987
|
|
|
6766
6988
|
// src/internal/assets/OtpIcon.tsx
|
|
@@ -6781,21 +7003,21 @@ init_auth();
|
|
|
6781
7003
|
init_projectId();
|
|
6782
7004
|
|
|
6783
7005
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
6784
|
-
var
|
|
7006
|
+
var import_react16 = require("react");
|
|
6785
7007
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
6786
7008
|
var VerificationCodeInput = (props) => {
|
|
6787
7009
|
const { onVerifyCode, onResendCode, isLoading, expiresIn, error } = props;
|
|
6788
7010
|
const setVerificationError = useAuthStore((st) => st.setVerificationError);
|
|
6789
|
-
const [timeLeft, setTimeLeft] = (0,
|
|
6790
|
-
(0,
|
|
6791
|
-
(0,
|
|
7011
|
+
const [timeLeft, setTimeLeft] = (0, import_react16.useState)(expiresIn);
|
|
7012
|
+
(0, import_react16.useEffect)(() => setTimeLeft(expiresIn), [expiresIn]);
|
|
7013
|
+
(0, import_react16.useEffect)(() => {
|
|
6792
7014
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
6793
7015
|
return () => clearInterval(t);
|
|
6794
7016
|
}, []);
|
|
6795
|
-
const lastSubmittedRef = (0,
|
|
6796
|
-
const inputsRef = (0,
|
|
6797
|
-
const [digits, setDigits] = (0,
|
|
6798
|
-
(0,
|
|
7017
|
+
const lastSubmittedRef = (0, import_react16.useRef)(null);
|
|
7018
|
+
const inputsRef = (0, import_react16.useRef)([]);
|
|
7019
|
+
const [digits, setDigits] = (0, import_react16.useState)(["", "", "", "", "", ""]);
|
|
7020
|
+
(0, import_react16.useEffect)(() => {
|
|
6799
7021
|
const code = digits.join("");
|
|
6800
7022
|
if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
|
|
6801
7023
|
if (lastSubmittedRef.current !== code) {
|
|
@@ -6804,7 +7026,7 @@ var VerificationCodeInput = (props) => {
|
|
|
6804
7026
|
}
|
|
6805
7027
|
}
|
|
6806
7028
|
}, [digits, isLoading, onVerifyCode]);
|
|
6807
|
-
(0,
|
|
7029
|
+
(0, import_react16.useEffect)(() => {
|
|
6808
7030
|
const t = setTimeout(() => {
|
|
6809
7031
|
inputsRef.current[0]?.focus();
|
|
6810
7032
|
}, 0);
|
|
@@ -6929,7 +7151,7 @@ function VerifyStep(props) {
|
|
|
6929
7151
|
setEmail,
|
|
6930
7152
|
setExpiresIn
|
|
6931
7153
|
} = useAuthStore();
|
|
6932
|
-
const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0,
|
|
7154
|
+
const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0, import_react_query7.useMutation)({
|
|
6933
7155
|
mutationFn: async (code) => {
|
|
6934
7156
|
setIsLoading(true);
|
|
6935
7157
|
setVerificationError("");
|
|
@@ -7002,7 +7224,7 @@ function VerifyStep(props) {
|
|
|
7002
7224
|
setIsLoading(false);
|
|
7003
7225
|
}
|
|
7004
7226
|
});
|
|
7005
|
-
const { mutate: onResendCode, isPending: isCodeResending } = (0,
|
|
7227
|
+
const { mutate: onResendCode, isPending: isCodeResending } = (0, import_react_query7.useMutation)({
|
|
7006
7228
|
mutationFn: async () => {
|
|
7007
7229
|
setVerificationError("");
|
|
7008
7230
|
setIsLoading(true);
|
|
@@ -7080,7 +7302,7 @@ var AuthMenu = () => {
|
|
|
7080
7302
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7081
7303
|
const page = useLayoutDataStore((st) => st.page);
|
|
7082
7304
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7083
|
-
(0,
|
|
7305
|
+
(0, import_react17.useEffect)(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
7084
7306
|
const {
|
|
7085
7307
|
step,
|
|
7086
7308
|
setStep,
|
|
@@ -7091,7 +7313,7 @@ var AuthMenu = () => {
|
|
|
7091
7313
|
setFailedMessage,
|
|
7092
7314
|
setCodeSendError
|
|
7093
7315
|
} = useAuthStore();
|
|
7094
|
-
(0,
|
|
7316
|
+
(0, import_react17.useEffect)(() => {
|
|
7095
7317
|
if (page !== "auth" /* AUTH */) {
|
|
7096
7318
|
setStep("signin");
|
|
7097
7319
|
setEmail("");
|
|
@@ -7110,7 +7332,7 @@ var AuthMenu = () => {
|
|
|
7110
7332
|
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Initializing wallet..." })
|
|
7111
7333
|
] });
|
|
7112
7334
|
}
|
|
7113
|
-
const stepContent = (0,
|
|
7335
|
+
const stepContent = (0, import_react17.useMemo)(
|
|
7114
7336
|
() => ({
|
|
7115
7337
|
"failed": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(AuthFailedStep, {}),
|
|
7116
7338
|
"display-name": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DisplayNameStep, { onAuthSuccess }),
|
|
@@ -7256,9 +7478,9 @@ function RampnowIcon() {
|
|
|
7256
7478
|
}
|
|
7257
7479
|
|
|
7258
7480
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7259
|
-
var
|
|
7481
|
+
var import_react_query8 = require("@tanstack/react-query");
|
|
7260
7482
|
var import_lucide_react15 = require("lucide-react");
|
|
7261
|
-
var
|
|
7483
|
+
var import_react19 = require("react");
|
|
7262
7484
|
|
|
7263
7485
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7264
7486
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
@@ -7299,11 +7521,10 @@ var QUERY_KEYS2 = {
|
|
|
7299
7521
|
};
|
|
7300
7522
|
|
|
7301
7523
|
// src/internal/components/BuyMenu/binance/api.ts
|
|
7302
|
-
var
|
|
7303
|
-
var API_DOMAIN = (true ? "" : FALLBACK) || FALLBACK;
|
|
7524
|
+
var API_DOMAIN2 = "https://api.lumiapassport.com/on-ramp";
|
|
7304
7525
|
async function getLumiaNetworkQuery() {
|
|
7305
7526
|
const auth = getBearer();
|
|
7306
|
-
const response = await fetch(`${
|
|
7527
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/networks`, {
|
|
7307
7528
|
method: "POST",
|
|
7308
7529
|
headers: {
|
|
7309
7530
|
"Content-Type": "application/json",
|
|
@@ -7323,7 +7544,7 @@ async function getLumiaNetworkQuery() {
|
|
|
7323
7544
|
}
|
|
7324
7545
|
async function getPaymentMethodsQuery(payload) {
|
|
7325
7546
|
const auth = getBearer();
|
|
7326
|
-
const response = await fetch(`${
|
|
7547
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/modes`, {
|
|
7327
7548
|
method: "POST",
|
|
7328
7549
|
headers: {
|
|
7329
7550
|
"Content-Type": "application/json",
|
|
@@ -7342,7 +7563,7 @@ async function getPaymentMethodsQuery(payload) {
|
|
|
7342
7563
|
}
|
|
7343
7564
|
async function getQuoteQuery(payload) {
|
|
7344
7565
|
const auth = getBearer();
|
|
7345
|
-
const response = await fetch(`${
|
|
7566
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/quote`, {
|
|
7346
7567
|
method: "POST",
|
|
7347
7568
|
headers: {
|
|
7348
7569
|
"Content-Type": "application/json",
|
|
@@ -7358,7 +7579,7 @@ async function getQuoteQuery(payload) {
|
|
|
7358
7579
|
}
|
|
7359
7580
|
async function createPreorderMutation(payload) {
|
|
7360
7581
|
const auth = getBearer();
|
|
7361
|
-
const response = await fetch(`${
|
|
7582
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/pre-order`, {
|
|
7362
7583
|
method: "POST",
|
|
7363
7584
|
headers: {
|
|
7364
7585
|
"Content-Type": "application/json",
|
|
@@ -7374,7 +7595,7 @@ async function createPreorderMutation(payload) {
|
|
|
7374
7595
|
}
|
|
7375
7596
|
|
|
7376
7597
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7377
|
-
var
|
|
7598
|
+
var import_react18 = require("react");
|
|
7378
7599
|
|
|
7379
7600
|
// src/internal/components/BuyMenu/binance/utils.ts
|
|
7380
7601
|
function getPayMethodID(pm) {
|
|
@@ -7394,7 +7615,7 @@ function handleErrors(errors) {
|
|
|
7394
7615
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7395
7616
|
var useQueriesErrorHandler = (errors, stateUpdater) => {
|
|
7396
7617
|
const { error: errorTitle, message: errorMessage } = handleErrors(errors);
|
|
7397
|
-
(0,
|
|
7618
|
+
(0, import_react18.useEffect)(() => {
|
|
7398
7619
|
if (!errorTitle && !errorMessage) return;
|
|
7399
7620
|
console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
|
|
7400
7621
|
stateUpdater(1);
|
|
@@ -7419,12 +7640,12 @@ function Binance(props) {
|
|
|
7419
7640
|
setMinAmount,
|
|
7420
7641
|
setSrcInputAmount
|
|
7421
7642
|
} = control;
|
|
7422
|
-
const qc = (0,
|
|
7643
|
+
const qc = (0, import_react_query8.useQueryClient)();
|
|
7423
7644
|
const {
|
|
7424
7645
|
data: lumiaNetwork,
|
|
7425
7646
|
isLoading: isLumiaNetworkLoading,
|
|
7426
7647
|
error: lumiaNetworkError
|
|
7427
|
-
} = (0,
|
|
7648
|
+
} = (0, import_react_query8.useQuery)({
|
|
7428
7649
|
retry: false,
|
|
7429
7650
|
enabled: !!walletAddress,
|
|
7430
7651
|
queryKey: [QUERY_KEYS2.binanceNetworksQuery, walletAddress],
|
|
@@ -7435,27 +7656,27 @@ function Binance(props) {
|
|
|
7435
7656
|
data: paymentModes = null,
|
|
7436
7657
|
isLoading: isPaymentModesLoading,
|
|
7437
7658
|
error: paymentMethodsError
|
|
7438
|
-
} = (0,
|
|
7659
|
+
} = (0, import_react_query8.useQuery)({
|
|
7439
7660
|
retry: false,
|
|
7440
7661
|
enabled: !!isLumiaAvailable && !!walletAddress,
|
|
7441
7662
|
// && srcQueryAmount > 0,
|
|
7442
7663
|
queryKey: [QUERY_KEYS2.binancePaymentModes, walletAddress, isLumiaAvailable, srcQueryAmount],
|
|
7443
7664
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7444
7665
|
});
|
|
7445
|
-
const lastLoadedPaymentModes = (0,
|
|
7446
|
-
(0,
|
|
7666
|
+
const lastLoadedPaymentModes = (0, import_react19.useRef)([]);
|
|
7667
|
+
(0, import_react19.useEffect)(() => {
|
|
7447
7668
|
if (!paymentModes?.length) return;
|
|
7448
7669
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
7449
7670
|
lastLoadedPaymentModes.current = paymentModes;
|
|
7450
7671
|
}, [paymentModes]);
|
|
7451
7672
|
const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
|
|
7452
7673
|
const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
|
|
7453
|
-
(0,
|
|
7674
|
+
(0, import_react19.useEffect)(() => setMinAmount(minimum), [minimum]);
|
|
7454
7675
|
const {
|
|
7455
7676
|
data: quoteData = null,
|
|
7456
7677
|
isLoading: isQuoteDataLoading,
|
|
7457
7678
|
error: quoteError
|
|
7458
|
-
} = (0,
|
|
7679
|
+
} = (0, import_react_query8.useQuery)({
|
|
7459
7680
|
retry: false,
|
|
7460
7681
|
enabled: !!walletAddress && srcQueryAmount > 0 && minimum > 0 && srcQueryAmount >= minimum,
|
|
7461
7682
|
queryKey: [QUERY_KEYS2.binanceQuote, walletAddress, selectedPaymentMode, srcQueryAmount],
|
|
@@ -7471,7 +7692,7 @@ function Binance(props) {
|
|
|
7471
7692
|
[lumiaNetworkError, paymentMethodsError, quoteError],
|
|
7472
7693
|
setSrcInputAmount
|
|
7473
7694
|
);
|
|
7474
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0,
|
|
7695
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query8.useMutation)({
|
|
7475
7696
|
mutationFn: async () => {
|
|
7476
7697
|
setRedirecting(true);
|
|
7477
7698
|
const returnUrl = window.location.href.split("?")[0];
|
|
@@ -7495,7 +7716,7 @@ function Binance(props) {
|
|
|
7495
7716
|
setRedirecting(false);
|
|
7496
7717
|
}
|
|
7497
7718
|
});
|
|
7498
|
-
(0,
|
|
7719
|
+
(0, import_react19.useEffect)(() => {
|
|
7499
7720
|
return () => {
|
|
7500
7721
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceNetworksQuery] });
|
|
7501
7722
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binancePaymentModes] });
|
|
@@ -7557,24 +7778,24 @@ function Binance(props) {
|
|
|
7557
7778
|
}
|
|
7558
7779
|
|
|
7559
7780
|
// src/internal/components/BuyMenu/rampnow/Rampnow.tsx
|
|
7560
|
-
var
|
|
7781
|
+
var import_react_query9 = require("@tanstack/react-query");
|
|
7561
7782
|
var import_lucide_react16 = require("lucide-react");
|
|
7562
|
-
var
|
|
7783
|
+
var import_react20 = require("react");
|
|
7563
7784
|
|
|
7564
7785
|
// src/internal/components/BuyMenu/rampnow/api.ts
|
|
7565
|
-
var
|
|
7566
|
-
var API_DOMAIN2 = (true ? "" : FALLBACK2) || FALLBACK2;
|
|
7786
|
+
var API_DOMAIN3 = "https://api.lumiapassport.com/on-ramp";
|
|
7567
7787
|
async function getRampnowConfigQuery() {
|
|
7568
7788
|
const auth = getBearer();
|
|
7569
|
-
const response = await fetch(`${
|
|
7789
|
+
const response = await fetch(`${API_DOMAIN3}/api/rampnow/cfg`, {
|
|
7570
7790
|
method: "GET",
|
|
7571
7791
|
headers: { ...auth && { Authorization: auth } }
|
|
7572
7792
|
});
|
|
7573
|
-
|
|
7793
|
+
const data = await response.json();
|
|
7794
|
+
return data;
|
|
7574
7795
|
}
|
|
7575
7796
|
async function getRampOrderQuoteQuery(payload) {
|
|
7576
7797
|
const auth = getBearer();
|
|
7577
|
-
const response = await fetch(`${
|
|
7798
|
+
const response = await fetch(`${API_DOMAIN3}/api/rampnow/quote`, {
|
|
7578
7799
|
method: "POST",
|
|
7579
7800
|
headers: {
|
|
7580
7801
|
"Content-Type": "application/json",
|
|
@@ -7623,8 +7844,8 @@ function Rampnow(props) {
|
|
|
7623
7844
|
setSrcInputAmount,
|
|
7624
7845
|
setMinAmount
|
|
7625
7846
|
} = control;
|
|
7626
|
-
const qc = (0,
|
|
7627
|
-
(0,
|
|
7847
|
+
const qc = (0, import_react_query9.useQueryClient)();
|
|
7848
|
+
(0, import_react20.useEffect)(() => {
|
|
7628
7849
|
setMinAmount(MINIMUM_RAMP_AMOUNT);
|
|
7629
7850
|
setPaymentMode(PAYMENT_MODES[0].id);
|
|
7630
7851
|
}, []);
|
|
@@ -7632,7 +7853,7 @@ function Rampnow(props) {
|
|
|
7632
7853
|
data: configData,
|
|
7633
7854
|
isLoading: isConfigLoading,
|
|
7634
7855
|
error: configError
|
|
7635
|
-
} = (0,
|
|
7856
|
+
} = (0, import_react_query9.useQuery)({
|
|
7636
7857
|
retry: false,
|
|
7637
7858
|
enabled: !!walletAddress,
|
|
7638
7859
|
queryKey: [QUERY_KEYS2.getRampNowConfig, walletAddress],
|
|
@@ -7642,7 +7863,7 @@ function Rampnow(props) {
|
|
|
7642
7863
|
data: quoteData,
|
|
7643
7864
|
isLoading: isQuoteDataLoading,
|
|
7644
7865
|
error: quoteError
|
|
7645
|
-
} = (0,
|
|
7866
|
+
} = (0, import_react_query9.useQuery)({
|
|
7646
7867
|
retry: false,
|
|
7647
7868
|
enabled: !!configData && !!walletAddress && !!paymentMode && srcQueryAmount >= MINIMUM_RAMP_AMOUNT,
|
|
7648
7869
|
queryKey: [QUERY_KEYS2.getRampNowQuote, walletAddress, srcQueryAmount, paymentMode],
|
|
@@ -7652,7 +7873,7 @@ function Rampnow(props) {
|
|
|
7652
7873
|
paymentMode
|
|
7653
7874
|
})
|
|
7654
7875
|
});
|
|
7655
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0,
|
|
7876
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query9.useMutation)({
|
|
7656
7877
|
mutationFn: async () => {
|
|
7657
7878
|
if (!configData?.apiKey?.length || !configData?.orderUrl?.length) {
|
|
7658
7879
|
throw new Error("RampNow order service is not available");
|
|
@@ -7681,7 +7902,7 @@ function Rampnow(props) {
|
|
|
7681
7902
|
console.error("Create CheckoutOrder failed:", err);
|
|
7682
7903
|
}
|
|
7683
7904
|
});
|
|
7684
|
-
(0,
|
|
7905
|
+
(0, import_react20.useEffect)(() => {
|
|
7685
7906
|
return () => {
|
|
7686
7907
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowConfig] });
|
|
7687
7908
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowQuote] });
|
|
@@ -7763,7 +7984,7 @@ var RAMP_PROVIDERS = {
|
|
|
7763
7984
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
7764
7985
|
|
|
7765
7986
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7766
|
-
var
|
|
7987
|
+
var import_react21 = require("react");
|
|
7767
7988
|
|
|
7768
7989
|
// src/internal/utils/debounce.ts
|
|
7769
7990
|
function debounce(func, waitFor) {
|
|
@@ -7777,14 +7998,14 @@ function debounce(func, waitFor) {
|
|
|
7777
7998
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7778
7999
|
var ON_INPUT_QUERY_DELAY = 2e3;
|
|
7779
8000
|
var useSelectables = () => {
|
|
7780
|
-
const [redirecting, setRedirecting] = (0,
|
|
7781
|
-
const [rampProvider, setrRampProvider] = (0,
|
|
7782
|
-
const [minAmount, setMinAmount] = (0,
|
|
7783
|
-
const inputRef = (0,
|
|
7784
|
-
const [srcQueryAmount, setSrcQueryAmount] = (0,
|
|
7785
|
-
const [srcInputAmount, setSrcInputAmount] = (0,
|
|
7786
|
-
const [paymentMode, setPaymentMode] = (0,
|
|
7787
|
-
const setQueryAmountDebounced = (0,
|
|
8001
|
+
const [redirecting, setRedirecting] = (0, import_react21.useState)(false);
|
|
8002
|
+
const [rampProvider, setrRampProvider] = (0, import_react21.useState)("binance");
|
|
8003
|
+
const [minAmount, setMinAmount] = (0, import_react21.useState)(0);
|
|
8004
|
+
const inputRef = (0, import_react21.useRef)(null);
|
|
8005
|
+
const [srcQueryAmount, setSrcQueryAmount] = (0, import_react21.useState)(0);
|
|
8006
|
+
const [srcInputAmount, setSrcInputAmount] = (0, import_react21.useState)(0);
|
|
8007
|
+
const [paymentMode, setPaymentMode] = (0, import_react21.useState)(null);
|
|
8008
|
+
const setQueryAmountDebounced = (0, import_react21.useCallback)(
|
|
7788
8009
|
debounce((inputAmount) => {
|
|
7789
8010
|
const checkedValue = Math.max(inputAmount, minAmount);
|
|
7790
8011
|
setSrcInputAmount(checkedValue);
|
|
@@ -7792,7 +8013,7 @@ var useSelectables = () => {
|
|
|
7792
8013
|
}, ON_INPUT_QUERY_DELAY),
|
|
7793
8014
|
[minAmount]
|
|
7794
8015
|
);
|
|
7795
|
-
(0,
|
|
8016
|
+
(0, import_react21.useEffect)(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
|
|
7796
8017
|
return {
|
|
7797
8018
|
inputRef,
|
|
7798
8019
|
redirecting,
|
|
@@ -7844,7 +8065,7 @@ function BuyMenu() {
|
|
|
7844
8065
|
|
|
7845
8066
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7846
8067
|
var import_lucide_react19 = require("lucide-react");
|
|
7847
|
-
var
|
|
8068
|
+
var import_react22 = __toESM(require("react"), 1);
|
|
7848
8069
|
init_iframe_manager();
|
|
7849
8070
|
|
|
7850
8071
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -7879,30 +8100,30 @@ function KeyshareBackupMenu() {
|
|
|
7879
8100
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7880
8101
|
const userId = session?.mpcUserId || "";
|
|
7881
8102
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
7882
|
-
(0,
|
|
8103
|
+
(0, import_react22.useEffect)(() => {
|
|
7883
8104
|
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
7884
8105
|
}, [userId, setPage]);
|
|
7885
|
-
const [backupStatus, setBackupStatus] =
|
|
8106
|
+
const [backupStatus, setBackupStatus] = import_react22.default.useState({
|
|
7886
8107
|
server: {},
|
|
7887
8108
|
cloud: {},
|
|
7888
8109
|
local: {}
|
|
7889
8110
|
});
|
|
7890
|
-
const [loading, setLoading] =
|
|
8111
|
+
const [loading, setLoading] = import_react22.default.useState({
|
|
7891
8112
|
server: false,
|
|
7892
8113
|
cloud: false,
|
|
7893
8114
|
local: false
|
|
7894
8115
|
});
|
|
7895
|
-
const [error, setError] =
|
|
7896
|
-
const [success, setSuccess] =
|
|
7897
|
-
const [showPassword, setShowPassword] =
|
|
7898
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
7899
|
-
const [customPassword, setCustomPassword] =
|
|
7900
|
-
const [cloudProviders, setCloudProviders] =
|
|
8116
|
+
const [error, setError] = import_react22.default.useState(null);
|
|
8117
|
+
const [success, setSuccess] = import_react22.default.useState(null);
|
|
8118
|
+
const [showPassword, setShowPassword] = import_react22.default.useState(false);
|
|
8119
|
+
const [useCustomPassword, setUseCustomPassword] = import_react22.default.useState(false);
|
|
8120
|
+
const [customPassword, setCustomPassword] = import_react22.default.useState("");
|
|
8121
|
+
const [cloudProviders, setCloudProviders] = import_react22.default.useState(
|
|
7901
8122
|
[]
|
|
7902
8123
|
);
|
|
7903
|
-
const [selectedCloudProvider, setSelectedCloudProvider] =
|
|
7904
|
-
const [hasKeyshareData, setHasKeyshareData] =
|
|
7905
|
-
const iframeManager =
|
|
8124
|
+
const [selectedCloudProvider, setSelectedCloudProvider] = import_react22.default.useState(null);
|
|
8125
|
+
const [hasKeyshareData, setHasKeyshareData] = import_react22.default.useState(true);
|
|
8126
|
+
const iframeManager = import_react22.default.useMemo(() => {
|
|
7906
8127
|
try {
|
|
7907
8128
|
return getIframeManager();
|
|
7908
8129
|
} catch (e) {
|
|
@@ -7910,7 +8131,7 @@ function KeyshareBackupMenu() {
|
|
|
7910
8131
|
return null;
|
|
7911
8132
|
}
|
|
7912
8133
|
}, []);
|
|
7913
|
-
(0,
|
|
8134
|
+
(0, import_react22.useEffect)(() => {
|
|
7914
8135
|
const loadCloudProviders = async () => {
|
|
7915
8136
|
try {
|
|
7916
8137
|
const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
|
|
@@ -7930,7 +8151,7 @@ function KeyshareBackupMenu() {
|
|
|
7930
8151
|
};
|
|
7931
8152
|
loadCloudProviders();
|
|
7932
8153
|
}, [selectedCloudProvider]);
|
|
7933
|
-
const refreshStatus =
|
|
8154
|
+
const refreshStatus = import_react22.default.useCallback(async () => {
|
|
7934
8155
|
if (!iframeManager) return;
|
|
7935
8156
|
try {
|
|
7936
8157
|
const status = await iframeManager.getBackupStatus(userId);
|
|
@@ -7939,7 +8160,7 @@ function KeyshareBackupMenu() {
|
|
|
7939
8160
|
console.error("[KeyshareBackup] Failed to get backup status:", error2);
|
|
7940
8161
|
}
|
|
7941
8162
|
}, [iframeManager, userId]);
|
|
7942
|
-
(0,
|
|
8163
|
+
(0, import_react22.useEffect)(() => {
|
|
7943
8164
|
refreshStatus();
|
|
7944
8165
|
}, [refreshStatus]);
|
|
7945
8166
|
const handleBackup = async (method) => {
|
|
@@ -8171,21 +8392,21 @@ function KeyshareBackupMenu() {
|
|
|
8171
8392
|
}
|
|
8172
8393
|
|
|
8173
8394
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8174
|
-
var
|
|
8395
|
+
var import_react_query10 = require("@tanstack/react-query");
|
|
8175
8396
|
var import_lucide_react22 = require("lucide-react");
|
|
8176
|
-
var
|
|
8397
|
+
var import_react25 = __toESM(require("react"), 1);
|
|
8177
8398
|
init_vaultClient();
|
|
8178
8399
|
|
|
8179
8400
|
// src/internal/components/KeyshareRestoreMenu/NoBackupFound.tsx
|
|
8180
8401
|
var import_lucide_react20 = require("lucide-react");
|
|
8181
|
-
var
|
|
8402
|
+
var import_react23 = require("react");
|
|
8182
8403
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
8183
8404
|
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.`;
|
|
8184
8405
|
var ACCOUNT_FILE_RECOVERY_TEXT = `Try uploading a backup file if you have one saved locally, or create a different new account`;
|
|
8185
8406
|
function NoBackupFound(props) {
|
|
8186
8407
|
const { isLoading, restoreFromFile } = props;
|
|
8187
|
-
const [restoreFile, setRestoreFile] = (0,
|
|
8188
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
8408
|
+
const [restoreFile, setRestoreFile] = (0, import_react23.useState)(null);
|
|
8409
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_react23.Fragment, { children: [
|
|
8189
8410
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Highlight, { type: "error", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
8190
8411
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react20.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8191
8412
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
|
|
@@ -8226,7 +8447,7 @@ function NoBackupFound(props) {
|
|
|
8226
8447
|
|
|
8227
8448
|
// src/internal/components/KeyshareRestoreMenu/ServerBackupFound.tsx
|
|
8228
8449
|
var import_lucide_react21 = require("lucide-react");
|
|
8229
|
-
var
|
|
8450
|
+
var import_react24 = require("react");
|
|
8230
8451
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
8231
8452
|
function ServerBackupFound(props) {
|
|
8232
8453
|
const {
|
|
@@ -8242,7 +8463,7 @@ function ServerBackupFound(props) {
|
|
|
8242
8463
|
setRestorePassword,
|
|
8243
8464
|
setUseCustomPassword
|
|
8244
8465
|
} = props;
|
|
8245
|
-
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
8466
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react24.Fragment, { children: [
|
|
8246
8467
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Highlight, { type: "success", className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
8247
8468
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react21.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8248
8469
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-full flex-1", children: [
|
|
@@ -8357,17 +8578,17 @@ var KeyshareRestoreMenu = () => {
|
|
|
8357
8578
|
} = useLumiaPassportConfig();
|
|
8358
8579
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8359
8580
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8360
|
-
(0,
|
|
8581
|
+
(0, import_react25.useEffect)(() => setIsDialogForced(true), []);
|
|
8361
8582
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
8362
|
-
const [error, setError] =
|
|
8363
|
-
const [success, setSuccess] =
|
|
8364
|
-
const [showPassword, setShowPassword] =
|
|
8365
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8366
|
-
const [restoreFile, setRestoreFile] =
|
|
8367
|
-
const [restorePassword, setRestorePassword] =
|
|
8368
|
-
const [hasServerBackup, setHasServerBackup] =
|
|
8369
|
-
const [checkingBackup, setCheckingBackup] =
|
|
8370
|
-
const createSessionWithKeyshare = (0,
|
|
8583
|
+
const [error, setError] = import_react25.default.useState(null);
|
|
8584
|
+
const [success, setSuccess] = import_react25.default.useState(null);
|
|
8585
|
+
const [showPassword, setShowPassword] = import_react25.default.useState(false);
|
|
8586
|
+
const [useCustomPassword, setUseCustomPassword] = import_react25.default.useState(false);
|
|
8587
|
+
const [restoreFile, setRestoreFile] = import_react25.default.useState(null);
|
|
8588
|
+
const [restorePassword, setRestorePassword] = import_react25.default.useState("");
|
|
8589
|
+
const [hasServerBackup, setHasServerBackup] = import_react25.default.useState(null);
|
|
8590
|
+
const [checkingBackup, setCheckingBackup] = import_react25.default.useState(true);
|
|
8591
|
+
const createSessionWithKeyshare = (0, import_react25.useCallback)(
|
|
8371
8592
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
8372
8593
|
try {
|
|
8373
8594
|
try {
|
|
@@ -8401,7 +8622,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8401
8622
|
},
|
|
8402
8623
|
[setStatus, callbacks, usePaymaster]
|
|
8403
8624
|
);
|
|
8404
|
-
const onRestoreSuccess = (0,
|
|
8625
|
+
const onRestoreSuccess = (0, import_react25.useCallback)(async () => {
|
|
8405
8626
|
const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
8406
8627
|
const verify = await verifyToken2();
|
|
8407
8628
|
const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
|
|
@@ -8466,7 +8687,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8466
8687
|
callbacks,
|
|
8467
8688
|
config.projectId
|
|
8468
8689
|
]);
|
|
8469
|
-
(0,
|
|
8690
|
+
(0, import_react25.useEffect)(() => {
|
|
8470
8691
|
const checkBackupAvailability = async () => {
|
|
8471
8692
|
try {
|
|
8472
8693
|
setCheckingBackup(true);
|
|
@@ -8484,7 +8705,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8484
8705
|
};
|
|
8485
8706
|
checkBackupAvailability();
|
|
8486
8707
|
}, [recoveryUserId]);
|
|
8487
|
-
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0,
|
|
8708
|
+
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0, import_react_query10.useMutation)({
|
|
8488
8709
|
mutationFn: async () => {
|
|
8489
8710
|
setError(null);
|
|
8490
8711
|
setSuccess(null);
|
|
@@ -8519,7 +8740,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8519
8740
|
setError(errorMsg);
|
|
8520
8741
|
}
|
|
8521
8742
|
});
|
|
8522
|
-
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0,
|
|
8743
|
+
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0, import_react_query10.useMutation)({
|
|
8523
8744
|
mutationFn: async () => {
|
|
8524
8745
|
if (!restoreFile) {
|
|
8525
8746
|
throw new Error("Please select a backup file");
|
|
@@ -8553,7 +8774,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8553
8774
|
setError(errorMsg);
|
|
8554
8775
|
}
|
|
8555
8776
|
});
|
|
8556
|
-
const { mutate: disconnect, isPending: isDisconnecting } = (0,
|
|
8777
|
+
const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query10.useMutation)({
|
|
8557
8778
|
mutationFn: async () => {
|
|
8558
8779
|
setError(null);
|
|
8559
8780
|
setStatus("disconnecting");
|
|
@@ -8635,14 +8856,14 @@ var KeyshareRestoreMenu = () => {
|
|
|
8635
8856
|
var import_lucide_react23 = require("lucide-react");
|
|
8636
8857
|
|
|
8637
8858
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8638
|
-
var
|
|
8859
|
+
var import_react26 = require("react");
|
|
8639
8860
|
|
|
8640
8861
|
// src/internal/components/KYC/api/sumsub.ts
|
|
8641
8862
|
init_httpClient();
|
|
8642
8863
|
|
|
8643
8864
|
// src/config/queryClient.ts
|
|
8644
|
-
var
|
|
8645
|
-
var queryClient = new
|
|
8865
|
+
var import_react_query11 = require("@tanstack/react-query");
|
|
8866
|
+
var queryClient = new import_react_query11.QueryClient({
|
|
8646
8867
|
defaultOptions: {
|
|
8647
8868
|
queries: {
|
|
8648
8869
|
staleTime: 1e3 * 60 * 6,
|
|
@@ -8758,13 +8979,13 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8758
8979
|
config: { current: config }
|
|
8759
8980
|
} = useLumiaPassportConfig();
|
|
8760
8981
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8761
|
-
const iframeRef = (0,
|
|
8762
|
-
const [isLoading, setIsLoading] = (0,
|
|
8763
|
-
const [error, setError] = (0,
|
|
8764
|
-
const [height, setHeight] = (0,
|
|
8765
|
-
const [status, setStatus] = (0,
|
|
8982
|
+
const iframeRef = (0, import_react26.useRef)(null);
|
|
8983
|
+
const [isLoading, setIsLoading] = (0, import_react26.useState)(true);
|
|
8984
|
+
const [error, setError] = (0, import_react26.useState)(null);
|
|
8985
|
+
const [height, setHeight] = (0, import_react26.useState)(0);
|
|
8986
|
+
const [status, setStatus] = (0, import_react26.useState)("");
|
|
8766
8987
|
const levelName = config.kyc?.options?.levelName;
|
|
8767
|
-
(0,
|
|
8988
|
+
(0, import_react26.useEffect)(() => {
|
|
8768
8989
|
setError(null);
|
|
8769
8990
|
setIsLoading(true);
|
|
8770
8991
|
setStatus("Preparing verification...");
|
|
@@ -8871,7 +9092,7 @@ function KycMenu() {
|
|
|
8871
9092
|
|
|
8872
9093
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
8873
9094
|
var import_lucide_react26 = require("lucide-react");
|
|
8874
|
-
var
|
|
9095
|
+
var import_react27 = require("react");
|
|
8875
9096
|
|
|
8876
9097
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
8877
9098
|
var import_framer_motion2 = require("framer-motion");
|
|
@@ -8927,7 +9148,7 @@ function MainMenu() {
|
|
|
8927
9148
|
const address = useLumiaPassportSession((st) => st.address);
|
|
8928
9149
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8929
9150
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
8930
|
-
(0,
|
|
9151
|
+
(0, import_react27.useEffect)(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
8931
9152
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
8932
9153
|
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "grid grid-cols-4 gap-[var(--l-pass-gap)]", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
|
|
8933
9154
|
Button,
|
|
@@ -8951,11 +9172,11 @@ function MainMenu() {
|
|
|
8951
9172
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
8952
9173
|
var import_lodash_es = require("lodash-es");
|
|
8953
9174
|
var import_lucide_react30 = require("lucide-react");
|
|
8954
|
-
var
|
|
9175
|
+
var import_react31 = require("react");
|
|
8955
9176
|
|
|
8956
9177
|
// src/modules/linkedProfiles.ts
|
|
8957
|
-
var
|
|
8958
|
-
var
|
|
9178
|
+
var import_react_query12 = require("@tanstack/react-query");
|
|
9179
|
+
var import_react28 = require("react");
|
|
8959
9180
|
init_auth();
|
|
8960
9181
|
init_common();
|
|
8961
9182
|
init_types();
|
|
@@ -8975,32 +9196,32 @@ async function getLinkProfilesData() {
|
|
|
8975
9196
|
return { profiles: loadedProfiles, avatar };
|
|
8976
9197
|
}
|
|
8977
9198
|
function useLumiaPassportLinkedProfiles() {
|
|
8978
|
-
const qc = (0,
|
|
9199
|
+
const qc = (0, import_react_query12.useQueryClient)();
|
|
8979
9200
|
const address = useLumiaPassportSession((st) => st.address);
|
|
8980
9201
|
const {
|
|
8981
9202
|
data,
|
|
8982
9203
|
isFetching: isLoading,
|
|
8983
9204
|
error
|
|
8984
|
-
} = (0,
|
|
9205
|
+
} = (0, import_react_query12.useQuery)({
|
|
8985
9206
|
retry: false,
|
|
8986
9207
|
enabled: !!address,
|
|
8987
9208
|
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
8988
9209
|
queryFn: getLinkProfilesData
|
|
8989
9210
|
});
|
|
8990
9211
|
const { profiles = [], avatar = null } = data || {};
|
|
8991
|
-
const refresh = (0,
|
|
9212
|
+
const refresh = (0, import_react28.useCallback)(async () => {
|
|
8992
9213
|
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
8993
9214
|
}, [qc, address]);
|
|
8994
9215
|
return { profiles, avatar, isLoading, error, refresh };
|
|
8995
9216
|
}
|
|
8996
9217
|
|
|
8997
9218
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
8998
|
-
var
|
|
9219
|
+
var import_react_query17 = require("@tanstack/react-query");
|
|
8999
9220
|
init_passkey2();
|
|
9000
9221
|
|
|
9001
9222
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
9002
9223
|
init_lumiaPassport();
|
|
9003
|
-
var
|
|
9224
|
+
var import_react_query13 = require("@tanstack/react-query");
|
|
9004
9225
|
var import_lucide_react27 = require("lucide-react");
|
|
9005
9226
|
init_projectId();
|
|
9006
9227
|
|
|
@@ -9041,7 +9262,7 @@ function EmailForm() {
|
|
|
9041
9262
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
9042
9263
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9043
9264
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
9044
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
9265
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query13.useMutation)({
|
|
9045
9266
|
mutationFn: async () => {
|
|
9046
9267
|
if (!email) return;
|
|
9047
9268
|
setIsLoading(true);
|
|
@@ -9118,13 +9339,13 @@ function EmailForm() {
|
|
|
9118
9339
|
}
|
|
9119
9340
|
|
|
9120
9341
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9121
|
-
var
|
|
9342
|
+
var import_react_query14 = require("@tanstack/react-query");
|
|
9122
9343
|
init_common();
|
|
9123
9344
|
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9124
9345
|
function useProvidersList() {
|
|
9125
9346
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9126
9347
|
const page = useLayoutDataStore((st) => st.page);
|
|
9127
|
-
return (0,
|
|
9348
|
+
return (0, import_react_query14.useQuery)({
|
|
9128
9349
|
retry: false,
|
|
9129
9350
|
enabled: !!address && page === "manage-wallet" /* MANAGE_WALLET */,
|
|
9130
9351
|
queryKey: [PROVIDERS_QUERY_KEY, address],
|
|
@@ -9133,11 +9354,11 @@ function useProvidersList() {
|
|
|
9133
9354
|
}
|
|
9134
9355
|
|
|
9135
9356
|
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9136
|
-
var
|
|
9357
|
+
var import_react_query15 = require("@tanstack/react-query");
|
|
9137
9358
|
init_email();
|
|
9138
9359
|
function useSendVerificationCode() {
|
|
9139
9360
|
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9140
|
-
return (0,
|
|
9361
|
+
return (0, import_react_query15.useMutation)({
|
|
9141
9362
|
mutationFn: async (email) => {
|
|
9142
9363
|
if (!email) {
|
|
9143
9364
|
throw new Error("Email is required");
|
|
@@ -9160,11 +9381,11 @@ function useSendVerificationCode() {
|
|
|
9160
9381
|
}
|
|
9161
9382
|
|
|
9162
9383
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9163
|
-
var
|
|
9384
|
+
var import_react_query16 = require("@tanstack/react-query");
|
|
9164
9385
|
init_email();
|
|
9165
9386
|
function useVerifyCode() {
|
|
9166
9387
|
const { callbacks } = useLumiaPassportConfig();
|
|
9167
|
-
const qc = (0,
|
|
9388
|
+
const qc = (0, import_react_query16.useQueryClient)();
|
|
9168
9389
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9169
9390
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9170
9391
|
const {
|
|
@@ -9178,7 +9399,7 @@ function useVerifyCode() {
|
|
|
9178
9399
|
setVerificationError,
|
|
9179
9400
|
setEmailCodeSentError
|
|
9180
9401
|
} = useManageWalletStore();
|
|
9181
|
-
return (0,
|
|
9402
|
+
return (0, import_react_query16.useMutation)({
|
|
9182
9403
|
mutationFn: async (codeToVerify) => {
|
|
9183
9404
|
const code = codeToVerify ?? emailCode;
|
|
9184
9405
|
if (!code) {
|
|
@@ -9228,7 +9449,7 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9228
9449
|
return msg;
|
|
9229
9450
|
}
|
|
9230
9451
|
function AddProvider() {
|
|
9231
|
-
const qc = (0,
|
|
9452
|
+
const qc = (0, import_react_query17.useQueryClient)();
|
|
9232
9453
|
const { callbacks } = useLumiaPassportConfig();
|
|
9233
9454
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9234
9455
|
const {
|
|
@@ -9388,11 +9609,11 @@ function EmailNotConnectedWarning() {
|
|
|
9388
9609
|
}
|
|
9389
9610
|
|
|
9390
9611
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9391
|
-
var
|
|
9392
|
-
var
|
|
9612
|
+
var import_react_query18 = require("@tanstack/react-query");
|
|
9613
|
+
var import_react29 = __toESM(require("react"), 1);
|
|
9393
9614
|
init_auth();
|
|
9394
9615
|
function useLinkSocial() {
|
|
9395
|
-
const qc = (0,
|
|
9616
|
+
const qc = (0, import_react_query18.useQueryClient)();
|
|
9396
9617
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9397
9618
|
const {
|
|
9398
9619
|
config: { current: config },
|
|
@@ -9400,7 +9621,7 @@ function useLinkSocial() {
|
|
|
9400
9621
|
} = useLumiaPassportConfig();
|
|
9401
9622
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9402
9623
|
const { providerType, linkIsLoading, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9403
|
-
const handleLinkSocialProvider =
|
|
9624
|
+
const handleLinkSocialProvider = import_react29.default.useCallback(
|
|
9404
9625
|
async (providerIdRaw) => {
|
|
9405
9626
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9406
9627
|
try {
|
|
@@ -9451,8 +9672,8 @@ function useLinkSocial() {
|
|
|
9451
9672
|
},
|
|
9452
9673
|
[config.social?.providers, callbacks]
|
|
9453
9674
|
);
|
|
9454
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9455
|
-
(0,
|
|
9675
|
+
const [socialLinkStarted, setSocialLinkStarted] = import_react29.default.useState(false);
|
|
9676
|
+
(0, import_react29.useEffect)(() => {
|
|
9456
9677
|
const key = providerType?.toLowerCase();
|
|
9457
9678
|
if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
|
|
9458
9679
|
if (!linkIsLoading && !socialLinkStarted) {
|
|
@@ -9466,19 +9687,19 @@ function useLinkSocial() {
|
|
|
9466
9687
|
}
|
|
9467
9688
|
|
|
9468
9689
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9469
|
-
var
|
|
9470
|
-
var
|
|
9690
|
+
var import_react_query19 = require("@tanstack/react-query");
|
|
9691
|
+
var import_react30 = require("react");
|
|
9471
9692
|
init_telegram2();
|
|
9472
9693
|
function useLinkTelegram() {
|
|
9473
9694
|
const {
|
|
9474
9695
|
config: { current: config },
|
|
9475
9696
|
callbacks
|
|
9476
9697
|
} = useLumiaPassportConfig();
|
|
9477
|
-
const qc = (0,
|
|
9698
|
+
const qc = (0, import_react_query19.useQueryClient)();
|
|
9478
9699
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9479
9700
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9480
9701
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9481
|
-
const handleLinkTelegram = (0,
|
|
9702
|
+
const handleLinkTelegram = (0, import_react30.useCallback)(async () => {
|
|
9482
9703
|
try {
|
|
9483
9704
|
setLinkIsLoading(true);
|
|
9484
9705
|
setLinkError("");
|
|
@@ -9520,14 +9741,14 @@ function useLinkTelegram() {
|
|
|
9520
9741
|
setLinkIsLoading(false);
|
|
9521
9742
|
}
|
|
9522
9743
|
}, [config.social?.providers, callbacks]);
|
|
9523
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = (0,
|
|
9524
|
-
(0,
|
|
9744
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react30.useState)(false);
|
|
9745
|
+
(0, import_react30.useEffect)(() => {
|
|
9525
9746
|
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9526
9747
|
setTelegramLinkStarted(true);
|
|
9527
9748
|
handleLinkTelegram();
|
|
9528
9749
|
}
|
|
9529
9750
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9530
|
-
(0,
|
|
9751
|
+
(0, import_react30.useEffect)(() => {
|
|
9531
9752
|
if (providerType !== "telegram") {
|
|
9532
9753
|
setTelegramLinkStarted(false);
|
|
9533
9754
|
}
|
|
@@ -9634,7 +9855,7 @@ function ManageWalletMenu() {
|
|
|
9634
9855
|
const configuredProviders = getConfiguredProviders(config);
|
|
9635
9856
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9636
9857
|
console.log("[MANAGE WALLET MENU] RENDER", providers);
|
|
9637
|
-
const renderProviders = (0,
|
|
9858
|
+
const renderProviders = (0, import_react31.useMemo)(() => {
|
|
9638
9859
|
const usedProviders = (0, import_lodash_es.fromPairs)(providers.map((p) => [p.provider, true]));
|
|
9639
9860
|
const used = [];
|
|
9640
9861
|
const unused = [];
|
|
@@ -9729,19 +9950,19 @@ function ManageWalletMenu() {
|
|
|
9729
9950
|
}
|
|
9730
9951
|
|
|
9731
9952
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9732
|
-
var
|
|
9953
|
+
var import_react_query20 = require("@tanstack/react-query");
|
|
9733
9954
|
var import_lucide_react31 = require("lucide-react");
|
|
9734
|
-
var
|
|
9955
|
+
var import_react32 = require("react");
|
|
9735
9956
|
init_auth();
|
|
9736
9957
|
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
9737
9958
|
function UnlinkProviderMenu() {
|
|
9738
|
-
const qc = (0,
|
|
9959
|
+
const qc = (0, import_react_query20.useQueryClient)();
|
|
9739
9960
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9740
9961
|
const { callbacks } = useLumiaPassportConfig();
|
|
9741
9962
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9742
9963
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9743
|
-
const [confirmInput, setConfirmInput] = (0,
|
|
9744
|
-
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0,
|
|
9964
|
+
const [confirmInput, setConfirmInput] = (0, import_react32.useState)("");
|
|
9965
|
+
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query20.useMutation)({
|
|
9745
9966
|
mutationFn: async () => {
|
|
9746
9967
|
if (!confirmUnlink) {
|
|
9747
9968
|
throw new Error("No provider to unlink");
|
|
@@ -9813,13 +10034,13 @@ function UnlinkProviderMenu() {
|
|
|
9813
10034
|
}
|
|
9814
10035
|
|
|
9815
10036
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9816
|
-
var
|
|
10037
|
+
var import_react_query22 = require("@tanstack/react-query");
|
|
9817
10038
|
var import_lucide_react33 = require("lucide-react");
|
|
9818
|
-
var
|
|
10039
|
+
var import_react34 = require("react");
|
|
9819
10040
|
|
|
9820
10041
|
// src/modules/assets.ts
|
|
9821
|
-
var
|
|
9822
|
-
var
|
|
10042
|
+
var import_react33 = __toESM(require("react"), 1);
|
|
10043
|
+
var import_wagmi2 = require("wagmi");
|
|
9823
10044
|
var import_viem4 = require("viem");
|
|
9824
10045
|
init_base();
|
|
9825
10046
|
var COMMON_TOKENS = [
|
|
@@ -9833,7 +10054,7 @@ var COMMON_TOKENS = [
|
|
|
9833
10054
|
// }
|
|
9834
10055
|
];
|
|
9835
10056
|
function useAssets(address) {
|
|
9836
|
-
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = (0,
|
|
10057
|
+
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = (0, import_wagmi2.useBalance)({
|
|
9837
10058
|
address,
|
|
9838
10059
|
chainId: lumiaBeam.id,
|
|
9839
10060
|
query: {
|
|
@@ -9847,7 +10068,7 @@ function useAssets(address) {
|
|
|
9847
10068
|
args: [address],
|
|
9848
10069
|
chainId: lumiaBeam.id
|
|
9849
10070
|
}));
|
|
9850
|
-
const readContractsResult = (0,
|
|
10071
|
+
const readContractsResult = (0, import_wagmi2.useReadContracts)({
|
|
9851
10072
|
contracts: tokenContracts,
|
|
9852
10073
|
query: {
|
|
9853
10074
|
enabled: !!address && COMMON_TOKENS.length > 0
|
|
@@ -9928,7 +10149,7 @@ function useAssets(address) {
|
|
|
9928
10149
|
};
|
|
9929
10150
|
}
|
|
9930
10151
|
function useTokenInfo(tokenAddress) {
|
|
9931
|
-
const readContractsResult = (0,
|
|
10152
|
+
const readContractsResult = (0, import_wagmi2.useReadContracts)({
|
|
9932
10153
|
contracts: [
|
|
9933
10154
|
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
9934
10155
|
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
@@ -9954,7 +10175,7 @@ function useTokenInfo(tokenAddress) {
|
|
|
9954
10175
|
return { isLoading: false, tokenInfo: null };
|
|
9955
10176
|
}
|
|
9956
10177
|
function useTokenBalance(tokenAddress, userAddress) {
|
|
9957
|
-
const { data: balance, isLoading, refetch } = (0,
|
|
10178
|
+
const { data: balance, isLoading, refetch } = (0, import_wagmi2.useReadContract)({
|
|
9958
10179
|
address: tokenAddress,
|
|
9959
10180
|
abi: import_viem4.erc20Abi,
|
|
9960
10181
|
functionName: "balanceOf",
|
|
@@ -9965,7 +10186,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
9965
10186
|
}
|
|
9966
10187
|
});
|
|
9967
10188
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
9968
|
-
const formattedBalance =
|
|
10189
|
+
const formattedBalance = import_react33.default.useMemo(() => {
|
|
9969
10190
|
if (!balance || !tokenInfo) return "0";
|
|
9970
10191
|
return (0, import_viem4.formatUnits)(balance, tokenInfo.decimals);
|
|
9971
10192
|
}, [balance, tokenInfo]);
|
|
@@ -9979,13 +10200,12 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
9979
10200
|
}
|
|
9980
10201
|
|
|
9981
10202
|
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
9982
|
-
var
|
|
10203
|
+
var import_react_query21 = require("@tanstack/react-query");
|
|
9983
10204
|
var import_lucide_react32 = require("lucide-react");
|
|
9984
10205
|
init_base();
|
|
9985
10206
|
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
9986
10207
|
var price16 = Intl.NumberFormat("en-US", { minimumFractionDigits: 16, maximumFractionDigits: 16 });
|
|
9987
10208
|
function formatValue(price) {
|
|
9988
|
-
console.log("[---PRICE---]", price);
|
|
9989
10209
|
if (!price) return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_jsx_runtime50.Fragment, { children: `0.00` });
|
|
9990
10210
|
if (price < 0.01) {
|
|
9991
10211
|
const strigified = price16.format(price);
|
|
@@ -10011,16 +10231,17 @@ var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
|
10011
10231
|
function PortfolioItem(props) {
|
|
10012
10232
|
const { address, asset, isProjectAsset } = props;
|
|
10013
10233
|
const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
|
|
10014
|
-
const qc = (0,
|
|
10234
|
+
const qc = (0, import_react_query21.useQueryClient)();
|
|
10015
10235
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
10016
10236
|
const projectAssetBalance = !!balanceQueryKey ? qc.getQueryData(balanceQueryKey) : null;
|
|
10017
|
-
const { data: assetRate, isLoading: isRateLoading } = (0,
|
|
10237
|
+
const { data: assetRate, isLoading: isRateLoading } = (0, import_react_query21.useQuery)({
|
|
10018
10238
|
retry: false,
|
|
10019
10239
|
staleTime: 4 * 60 * 1e3,
|
|
10020
10240
|
enabled: !!address && !!asset.symbol && !isProjectAsset,
|
|
10021
10241
|
queryKey: [ASSETS_RATES_QUERY_KEY, address, asset.symbol],
|
|
10022
10242
|
queryFn: async () => await getAssetRate(asset.symbol)
|
|
10023
10243
|
});
|
|
10244
|
+
const renderBalance = isProjectAsset && projectAssetBalance?.fiatFormatted ? projectAssetBalance.fiatFormatted : asset.formattedBalance;
|
|
10024
10245
|
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
10025
10246
|
"div",
|
|
10026
10247
|
{
|
|
@@ -10045,11 +10266,11 @@ function PortfolioItem(props) {
|
|
|
10045
10266
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex-1", children: [
|
|
10046
10267
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
10047
10268
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: asset.name }),
|
|
10048
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10269
|
+
!isProjectAsset && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10049
10270
|
] }),
|
|
10050
10271
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: [
|
|
10051
10272
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { children: [
|
|
10052
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: formatValue(Number(
|
|
10273
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: formatValue(Number(renderBalance)) }),
|
|
10053
10274
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: " " + asset.symbol })
|
|
10054
10275
|
] }),
|
|
10055
10276
|
isRateLoading && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react32.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
@@ -10071,18 +10292,18 @@ function PortfolioItem(props) {
|
|
|
10071
10292
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10072
10293
|
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
10073
10294
|
function PortfolioMenu() {
|
|
10074
|
-
const { assets:
|
|
10075
|
-
const qc = (0,
|
|
10295
|
+
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10296
|
+
const qc = (0, import_react_query22.useQueryClient)();
|
|
10076
10297
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10077
|
-
const assetsContainerListRef = (0,
|
|
10078
|
-
const assetsListRef = (0,
|
|
10298
|
+
const assetsContainerListRef = (0, import_react34.useRef)(null);
|
|
10299
|
+
const assetsListRef = (0, import_react34.useRef)(null);
|
|
10079
10300
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10080
10301
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10081
|
-
const refreshAllAssetsBalances = (0,
|
|
10082
|
-
Promise.all(
|
|
10302
|
+
const refreshAllAssetsBalances = (0, import_react34.useCallback)(() => {
|
|
10303
|
+
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10083
10304
|
refreshBalances();
|
|
10084
|
-
}, [qc,
|
|
10085
|
-
(0,
|
|
10305
|
+
}, [qc, projectAssets, refreshBalances]);
|
|
10306
|
+
(0, import_react34.useEffect)(() => {
|
|
10086
10307
|
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10087
10308
|
if (assetsContainerListRef.current) {
|
|
10088
10309
|
assetsContainerListRef.current.style.setProperty(
|
|
@@ -10129,7 +10350,7 @@ function PortfolioMenu() {
|
|
|
10129
10350
|
style: { borderTop: "1px solid var(--l-pass-list-bd)", borderBottom: "1px solid var(--l-pass-list-bd)" },
|
|
10130
10351
|
className: "list-scrollbar-y relative",
|
|
10131
10352
|
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { ref: assetsListRef, className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: [
|
|
10132
|
-
|
|
10353
|
+
projectAssets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
10133
10354
|
PortfolioItem,
|
|
10134
10355
|
{
|
|
10135
10356
|
isProjectAsset: true,
|
|
@@ -10155,7 +10376,7 @@ function PortfolioMenu() {
|
|
|
10155
10376
|
|
|
10156
10377
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10157
10378
|
var import_lucide_react34 = require("lucide-react");
|
|
10158
|
-
var
|
|
10379
|
+
var import_react35 = require("react");
|
|
10159
10380
|
init_auth();
|
|
10160
10381
|
init_keyshare();
|
|
10161
10382
|
init_vaultClient();
|
|
@@ -10167,18 +10388,18 @@ function SecurityMenu() {
|
|
|
10167
10388
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
10168
10389
|
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
10169
10390
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10170
|
-
const [isRefreshing, setIsRefreshing] = (0,
|
|
10171
|
-
const [localInfo, setLocalInfo] = (0,
|
|
10172
|
-
const [recoveryCreatedAt, setRecoveryCreatedAt] = (0,
|
|
10173
|
-
const [recoveryBrowser, setRecoveryBrowser] = (0,
|
|
10174
|
-
const [recoveryUa, setRecoveryUa] = (0,
|
|
10175
|
-
const [recoveryDeviceId, setRecoveryDeviceId] = (0,
|
|
10176
|
-
const [recoveryDeviceName, setRecoveryDeviceName] = (0,
|
|
10177
|
-
const [recoveryCountry, setRecoveryCountry] = (0,
|
|
10178
|
-
const [hasServerBackup, setHasServerBackup] = (0,
|
|
10179
|
-
const [trustedApps, setTrustedApps] = (0,
|
|
10180
|
-
const [appToRemove, setAppToRemove] = (0,
|
|
10181
|
-
const fetchRecovery = (0,
|
|
10391
|
+
const [isRefreshing, setIsRefreshing] = (0, import_react35.useState)(false);
|
|
10392
|
+
const [localInfo, setLocalInfo] = (0, import_react35.useState)(null);
|
|
10393
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = (0, import_react35.useState)(null);
|
|
10394
|
+
const [recoveryBrowser, setRecoveryBrowser] = (0, import_react35.useState)(null);
|
|
10395
|
+
const [recoveryUa, setRecoveryUa] = (0, import_react35.useState)(null);
|
|
10396
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = (0, import_react35.useState)(null);
|
|
10397
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = (0, import_react35.useState)(null);
|
|
10398
|
+
const [recoveryCountry, setRecoveryCountry] = (0, import_react35.useState)(null);
|
|
10399
|
+
const [hasServerBackup, setHasServerBackup] = (0, import_react35.useState)(false);
|
|
10400
|
+
const [trustedApps, setTrustedApps] = (0, import_react35.useState)([]);
|
|
10401
|
+
const [appToRemove, setAppToRemove] = (0, import_react35.useState)(null);
|
|
10402
|
+
const fetchRecovery = (0, import_react35.useCallback)(async () => {
|
|
10182
10403
|
if (!userId) return;
|
|
10183
10404
|
try {
|
|
10184
10405
|
setIsRefreshing(true);
|
|
@@ -10211,7 +10432,7 @@ function SecurityMenu() {
|
|
|
10211
10432
|
setIsRefreshing(false);
|
|
10212
10433
|
}
|
|
10213
10434
|
}, [userId]);
|
|
10214
|
-
(0,
|
|
10435
|
+
(0, import_react35.useEffect)(() => {
|
|
10215
10436
|
if (open) fetchRecovery();
|
|
10216
10437
|
}, [open, fetchRecovery]);
|
|
10217
10438
|
const parseOS = (ua) => {
|
|
@@ -10403,21 +10624,21 @@ function SecurityMenu() {
|
|
|
10403
10624
|
|
|
10404
10625
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10405
10626
|
var import_lucide_react35 = require("lucide-react");
|
|
10406
|
-
var
|
|
10627
|
+
var import_react37 = require("react");
|
|
10407
10628
|
var import_viem6 = require("viem");
|
|
10408
|
-
var
|
|
10629
|
+
var import_wagmi3 = require("wagmi");
|
|
10409
10630
|
|
|
10410
10631
|
// src/hooks/useSendTransaction.ts
|
|
10411
|
-
var
|
|
10632
|
+
var import_react36 = require("react");
|
|
10412
10633
|
var import_viem5 = require("viem");
|
|
10413
10634
|
init_account();
|
|
10414
10635
|
function useSendTransaction() {
|
|
10415
10636
|
const session = useLumiaPassportSession((st) => st.session);
|
|
10416
10637
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10417
|
-
const [isLoading, setIsLoading] = (0,
|
|
10418
|
-
const [error, setError] = (0,
|
|
10419
|
-
const [userOpHash, setUserOpHash] = (0,
|
|
10420
|
-
const sendTransaction = (0,
|
|
10638
|
+
const [isLoading, setIsLoading] = (0, import_react36.useState)(false);
|
|
10639
|
+
const [error, setError] = (0, import_react36.useState)(null);
|
|
10640
|
+
const [userOpHash, setUserOpHash] = (0, import_react36.useState)(null);
|
|
10641
|
+
const sendTransaction = (0, import_react36.useCallback)(
|
|
10421
10642
|
async (params) => {
|
|
10422
10643
|
if (!session || !address) {
|
|
10423
10644
|
setError("No active session");
|
|
@@ -10457,7 +10678,7 @@ function useSendTransaction() {
|
|
|
10457
10678
|
},
|
|
10458
10679
|
[session, address]
|
|
10459
10680
|
);
|
|
10460
|
-
const reset = (0,
|
|
10681
|
+
const reset = (0, import_react36.useCallback)(() => {
|
|
10461
10682
|
setError(null);
|
|
10462
10683
|
setUserOpHash(null);
|
|
10463
10684
|
setIsLoading(false);
|
|
@@ -10481,17 +10702,17 @@ function SendLumiaMenu() {
|
|
|
10481
10702
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10482
10703
|
const { assets } = useAssets(address);
|
|
10483
10704
|
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
10484
|
-
const { refetch: refetchBalance } = (0,
|
|
10705
|
+
const { refetch: refetchBalance } = (0, import_wagmi3.useBalance)({
|
|
10485
10706
|
address,
|
|
10486
10707
|
chainId: lumiaBeam.id
|
|
10487
10708
|
});
|
|
10488
|
-
const [recipient, setRecipient] = (0,
|
|
10489
|
-
const [amount, setAmount] = (0,
|
|
10490
|
-
const [txStep, setTxStep] = (0,
|
|
10491
|
-
const [validationError, setValidationError] = (0,
|
|
10709
|
+
const [recipient, setRecipient] = (0, import_react37.useState)("");
|
|
10710
|
+
const [amount, setAmount] = (0, import_react37.useState)("");
|
|
10711
|
+
const [txStep, setTxStep] = (0, import_react37.useState)("input");
|
|
10712
|
+
const [validationError, setValidationError] = (0, import_react37.useState)(null);
|
|
10492
10713
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10493
10714
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10494
|
-
(0,
|
|
10715
|
+
(0, import_react37.useEffect)(() => {
|
|
10495
10716
|
if (open) {
|
|
10496
10717
|
setTxStep("input");
|
|
10497
10718
|
setValidationError(null);
|
|
@@ -10655,7 +10876,7 @@ function SendLumiaMenu() {
|
|
|
10655
10876
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10656
10877
|
var import_lucide_react36 = require("lucide-react");
|
|
10657
10878
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
10658
|
-
var
|
|
10879
|
+
var import_react38 = require("react");
|
|
10659
10880
|
init_clients();
|
|
10660
10881
|
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
10661
10882
|
function ReceiveLumiaMenu() {
|
|
@@ -10663,9 +10884,9 @@ function ReceiveLumiaMenu() {
|
|
|
10663
10884
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10664
10885
|
const open = page === "receive";
|
|
10665
10886
|
const { address } = useLumiaPassportSession();
|
|
10666
|
-
const [qrCodeUrl, setQrCodeUrl] = (0,
|
|
10667
|
-
const [copied, setCopied] = (0,
|
|
10668
|
-
(0,
|
|
10887
|
+
const [qrCodeUrl, setQrCodeUrl] = (0, import_react38.useState)("");
|
|
10888
|
+
const [copied, setCopied] = (0, import_react38.useState)(false);
|
|
10889
|
+
(0, import_react38.useEffect)(() => {
|
|
10669
10890
|
if (open && address) {
|
|
10670
10891
|
import_qrcode.default.toDataURL(address, {
|
|
10671
10892
|
width: 200,
|
|
@@ -10714,7 +10935,7 @@ function ReceiveLumiaMenu() {
|
|
|
10714
10935
|
|
|
10715
10936
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10716
10937
|
var import_lucide_react38 = require("lucide-react");
|
|
10717
|
-
var
|
|
10938
|
+
var import_react39 = require("react");
|
|
10718
10939
|
|
|
10719
10940
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10720
10941
|
var import_lucide_react37 = require("lucide-react");
|
|
@@ -10748,7 +10969,7 @@ function SettingsMenu() {
|
|
|
10748
10969
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10749
10970
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10750
10971
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10751
|
-
(0,
|
|
10972
|
+
(0, import_react39.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10752
10973
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10753
10974
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10754
10975
|
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
@@ -10806,9 +11027,9 @@ function TermsOfService() {
|
|
|
10806
11027
|
}
|
|
10807
11028
|
|
|
10808
11029
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10809
|
-
var
|
|
11030
|
+
var import_react_query23 = require("@tanstack/react-query");
|
|
10810
11031
|
var import_lucide_react41 = require("lucide-react");
|
|
10811
|
-
var
|
|
11032
|
+
var import_react40 = require("react");
|
|
10812
11033
|
|
|
10813
11034
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10814
11035
|
init_base();
|
|
@@ -11284,30 +11505,30 @@ function TransactionsGroup(props) {
|
|
|
11284
11505
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
11285
11506
|
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
11286
11507
|
function TransactionsMenu() {
|
|
11287
|
-
const qc = (0,
|
|
11508
|
+
const qc = (0, import_react_query23.useQueryClient)();
|
|
11288
11509
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11289
11510
|
const page = useLayoutDataStore((st) => st.page);
|
|
11290
11511
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11291
|
-
const txContainerListRef = (0,
|
|
11292
|
-
const txListRef = (0,
|
|
11293
|
-
const [expandedGroups, setExpandedGroups] = (0,
|
|
11512
|
+
const txContainerListRef = (0, import_react40.useRef)(null);
|
|
11513
|
+
const txListRef = (0, import_react40.useRef)(null);
|
|
11514
|
+
const [expandedGroups, setExpandedGroups] = (0, import_react40.useState)({});
|
|
11294
11515
|
const {
|
|
11295
11516
|
data: txHistoryGroups = [],
|
|
11296
11517
|
isLoading: isTxHistoryLoading,
|
|
11297
11518
|
isFetching: isTxHistoryFetching,
|
|
11298
11519
|
error: txHistoryError
|
|
11299
|
-
} = (0,
|
|
11520
|
+
} = (0, import_react_query23.useQuery)({
|
|
11300
11521
|
retry: false,
|
|
11301
11522
|
enabled: !!address && page === "transactions",
|
|
11302
11523
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
11303
11524
|
queryFn: () => getTransactionsListQuery(address)
|
|
11304
11525
|
});
|
|
11305
|
-
const refreshTxHistory = (0,
|
|
11526
|
+
const refreshTxHistory = (0, import_react40.useCallback)(
|
|
11306
11527
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
11307
11528
|
[qc, address]
|
|
11308
11529
|
);
|
|
11309
11530
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11310
|
-
(0,
|
|
11531
|
+
(0, import_react40.useEffect)(() => {
|
|
11311
11532
|
if (!txContainerListRef.current || !txListRef.current) return;
|
|
11312
11533
|
if (txContainerListRef.current) {
|
|
11313
11534
|
txContainerListRef.current.style.setProperty(
|
|
@@ -11475,7 +11696,7 @@ function usePageMapper() {
|
|
|
11475
11696
|
setIsDialogOpen,
|
|
11476
11697
|
setIsDialogClosing
|
|
11477
11698
|
} = useLayoutStore();
|
|
11478
|
-
const closeDialog = (0,
|
|
11699
|
+
const closeDialog = (0, import_react41.useCallback)(() => {
|
|
11479
11700
|
setIsDialogClosing(true);
|
|
11480
11701
|
setTimeout(() => {
|
|
11481
11702
|
setDialogContent(null);
|
|
@@ -11486,7 +11707,7 @@ function usePageMapper() {
|
|
|
11486
11707
|
setIsDialogOpen(false);
|
|
11487
11708
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11488
11709
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11489
|
-
const openDialog = (0,
|
|
11710
|
+
const openDialog = (0, import_react41.useCallback)(
|
|
11490
11711
|
(pageItem) => {
|
|
11491
11712
|
const PageContentComponent = pageItem.component;
|
|
11492
11713
|
setDialogTitle(pageItem.title);
|
|
@@ -11496,7 +11717,7 @@ function usePageMapper() {
|
|
|
11496
11717
|
},
|
|
11497
11718
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11498
11719
|
);
|
|
11499
|
-
(0,
|
|
11720
|
+
(0, import_react41.useEffect)(() => {
|
|
11500
11721
|
if (page === null) return closeDialog();
|
|
11501
11722
|
const pageItem = protectedRoutes[page];
|
|
11502
11723
|
if (!pageItem) {
|
|
@@ -11509,7 +11730,7 @@ function usePageMapper() {
|
|
|
11509
11730
|
}
|
|
11510
11731
|
|
|
11511
11732
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11512
|
-
var
|
|
11733
|
+
var import_react42 = require("react");
|
|
11513
11734
|
init_auth();
|
|
11514
11735
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11515
11736
|
id: "email-not-connected",
|
|
@@ -11526,13 +11747,13 @@ function useSettingsNotifications() {
|
|
|
11526
11747
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11527
11748
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
11528
11749
|
const hasEmail = providers.includes("email");
|
|
11529
|
-
(0,
|
|
11750
|
+
(0, import_react42.useEffect)(() => {
|
|
11530
11751
|
setSettingsNotifications({
|
|
11531
11752
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11532
11753
|
status: hasServerVault ? "resolved" : "active"
|
|
11533
11754
|
});
|
|
11534
11755
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11535
|
-
(0,
|
|
11756
|
+
(0, import_react42.useEffect)(() => {
|
|
11536
11757
|
setSettingsNotifications({
|
|
11537
11758
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11538
11759
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11541,7 +11762,7 @@ function useSettingsNotifications() {
|
|
|
11541
11762
|
}
|
|
11542
11763
|
|
|
11543
11764
|
// src/internal/hooks/useWalletStatus.ts
|
|
11544
|
-
var
|
|
11765
|
+
var import_react43 = require("react");
|
|
11545
11766
|
init_auth();
|
|
11546
11767
|
function useWalletStatus() {
|
|
11547
11768
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -11551,7 +11772,7 @@ function useWalletStatus() {
|
|
|
11551
11772
|
config: { current: config },
|
|
11552
11773
|
callbacks
|
|
11553
11774
|
} = useLumiaPassportConfig();
|
|
11554
|
-
(0,
|
|
11775
|
+
(0, import_react43.useEffect)(() => {
|
|
11555
11776
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11556
11777
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
11557
11778
|
const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
|
|
@@ -11582,7 +11803,7 @@ function LumiaPassportDialog() {
|
|
|
11582
11803
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11583
11804
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11584
11805
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11585
|
-
(0,
|
|
11806
|
+
(0, import_react44.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11586
11807
|
usePageMapper();
|
|
11587
11808
|
useAutoConnect();
|
|
11588
11809
|
useCheckVaultStatus();
|
|
@@ -11619,225 +11840,6 @@ function LumiaPassportDialog() {
|
|
|
11619
11840
|
);
|
|
11620
11841
|
}
|
|
11621
11842
|
|
|
11622
|
-
// src/internal/components/LumiaPriceSSE.tsx
|
|
11623
|
-
var import_react_query23 = require("@tanstack/react-query");
|
|
11624
|
-
var import_react44 = require("react");
|
|
11625
|
-
var import_wagmi3 = require("wagmi");
|
|
11626
|
-
init_base();
|
|
11627
|
-
|
|
11628
|
-
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11629
|
-
var import_react_query22 = require("@tanstack/react-query");
|
|
11630
|
-
var import_react43 = require("react");
|
|
11631
|
-
|
|
11632
|
-
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11633
|
-
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
11634
|
-
var API_DOMAIN3 = (true ? "" : FALLBACK3) || FALLBACK3;
|
|
11635
|
-
var LumiaPriceSSEService = class {
|
|
11636
|
-
// private readonly baseUrl: string = API_DOMAIN
|
|
11637
|
-
constructor() {
|
|
11638
|
-
this.eventSource = null;
|
|
11639
|
-
this.listeners = /* @__PURE__ */ new Set();
|
|
11640
|
-
this.currentPrice = null;
|
|
11641
|
-
this.isConnected = false;
|
|
11642
|
-
this.reconnectTimeout = null;
|
|
11643
|
-
}
|
|
11644
|
-
connect() {
|
|
11645
|
-
return new Promise((resolve, reject) => {
|
|
11646
|
-
console.log("[LumiaPriceSSEService]: Connecting to LUMIA Price SSE...");
|
|
11647
|
-
if (this.isConnected) {
|
|
11648
|
-
resolve();
|
|
11649
|
-
return;
|
|
11650
|
-
}
|
|
11651
|
-
try {
|
|
11652
|
-
this.eventSource = new EventSource(`${API_DOMAIN3}/api/lumia/sse`);
|
|
11653
|
-
this.eventSource.onopen = () => {
|
|
11654
|
-
console.log("[LumiaPriceSSEService]: LUMIA Price SSE connected");
|
|
11655
|
-
this.isConnected = true;
|
|
11656
|
-
this.clearReconnectTimeout();
|
|
11657
|
-
resolve();
|
|
11658
|
-
};
|
|
11659
|
-
this.eventSource.onmessage = () => {
|
|
11660
|
-
};
|
|
11661
|
-
this.eventSource.addEventListener("rate", (event) => {
|
|
11662
|
-
try {
|
|
11663
|
-
const data = JSON.parse(event.data);
|
|
11664
|
-
if (data.price !== void 0 && data.symbol === "LUMIAUSDT") {
|
|
11665
|
-
this.currentPrice = typeof data.price === "number" ? data.price : parseFloat(data.price);
|
|
11666
|
-
if (this.currentPrice !== null) {
|
|
11667
|
-
const update = {
|
|
11668
|
-
symbol: data.symbol,
|
|
11669
|
-
price: this.currentPrice,
|
|
11670
|
-
ts: data.ts || Date.now()
|
|
11671
|
-
};
|
|
11672
|
-
this.listeners.forEach((listener) => listener(update));
|
|
11673
|
-
}
|
|
11674
|
-
}
|
|
11675
|
-
} catch (error) {
|
|
11676
|
-
console.error("Error parsing price event:", error, event.data);
|
|
11677
|
-
}
|
|
11678
|
-
});
|
|
11679
|
-
this.eventSource.addEventListener("ping", () => {
|
|
11680
|
-
});
|
|
11681
|
-
this.eventSource.onerror = (error) => {
|
|
11682
|
-
console.error("LUMIA Price SSE error:", error);
|
|
11683
|
-
this.isConnected = false;
|
|
11684
|
-
if (this.eventSource?.readyState === EventSource.CLOSED) {
|
|
11685
|
-
console.log("SSE connection closed, attempting to reconnect...");
|
|
11686
|
-
this.scheduleReconnect();
|
|
11687
|
-
reject(error);
|
|
11688
|
-
}
|
|
11689
|
-
};
|
|
11690
|
-
setTimeout(() => {
|
|
11691
|
-
if (!this.isConnected) {
|
|
11692
|
-
reject(new Error("SSE connection timeout"));
|
|
11693
|
-
}
|
|
11694
|
-
}, 1e4);
|
|
11695
|
-
} catch (error) {
|
|
11696
|
-
reject(error);
|
|
11697
|
-
}
|
|
11698
|
-
});
|
|
11699
|
-
}
|
|
11700
|
-
disconnect() {
|
|
11701
|
-
this.clearReconnectTimeout();
|
|
11702
|
-
if (this.eventSource) {
|
|
11703
|
-
this.eventSource.close();
|
|
11704
|
-
this.eventSource = null;
|
|
11705
|
-
}
|
|
11706
|
-
this.isConnected = false;
|
|
11707
|
-
this.currentPrice = null;
|
|
11708
|
-
console.log("[LumiaPriceSSEService]: LUMIA Price SSE disconnected");
|
|
11709
|
-
}
|
|
11710
|
-
addListener(listener) {
|
|
11711
|
-
this.listeners.add(listener);
|
|
11712
|
-
}
|
|
11713
|
-
removeListener(listener) {
|
|
11714
|
-
this.listeners.delete(listener);
|
|
11715
|
-
}
|
|
11716
|
-
clearListeners() {
|
|
11717
|
-
this.listeners.clear();
|
|
11718
|
-
}
|
|
11719
|
-
getCurrentPrice() {
|
|
11720
|
-
return this.currentPrice;
|
|
11721
|
-
}
|
|
11722
|
-
getConnectionStatus() {
|
|
11723
|
-
return this.isConnected;
|
|
11724
|
-
}
|
|
11725
|
-
scheduleReconnect() {
|
|
11726
|
-
this.clearReconnectTimeout();
|
|
11727
|
-
this.reconnectTimeout = window.setTimeout(() => {
|
|
11728
|
-
console.log("Attempting to reconnect to BTC Price SSE...");
|
|
11729
|
-
this.connect().catch((error) => {
|
|
11730
|
-
console.error("Reconnection failed:", error);
|
|
11731
|
-
this.scheduleReconnect();
|
|
11732
|
-
});
|
|
11733
|
-
}, 5e3);
|
|
11734
|
-
}
|
|
11735
|
-
clearReconnectTimeout() {
|
|
11736
|
-
if (this.reconnectTimeout) {
|
|
11737
|
-
clearTimeout(this.reconnectTimeout);
|
|
11738
|
-
this.reconnectTimeout = null;
|
|
11739
|
-
}
|
|
11740
|
-
}
|
|
11741
|
-
};
|
|
11742
|
-
var lumiaPriceSSE = new LumiaPriceSSEService();
|
|
11743
|
-
async function sseConnectMutation() {
|
|
11744
|
-
try {
|
|
11745
|
-
await lumiaPriceSSE.connect();
|
|
11746
|
-
console.info("[LUMIA SSE] price feed connected");
|
|
11747
|
-
return { ok: true };
|
|
11748
|
-
} catch (error) {
|
|
11749
|
-
console.error("[LUMIA SSE] Error connecting to SSE:", error);
|
|
11750
|
-
throw new Error("[LUMIA SSE] Error connecting to SSE");
|
|
11751
|
-
}
|
|
11752
|
-
}
|
|
11753
|
-
|
|
11754
|
-
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11755
|
-
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
11756
|
-
const { mutate: connectSSE } = (0, import_react_query22.useMutation)({
|
|
11757
|
-
mutationFn: sseConnectMutation,
|
|
11758
|
-
onSuccess: () => {
|
|
11759
|
-
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
11760
|
-
},
|
|
11761
|
-
onError: (err) => {
|
|
11762
|
-
console.error("Lumia Price SSE connection error:", err);
|
|
11763
|
-
}
|
|
11764
|
-
});
|
|
11765
|
-
(0, import_react43.useEffect)(() => {
|
|
11766
|
-
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11767
|
-
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11768
|
-
if (!enabled) {
|
|
11769
|
-
lumiaPriceSSE.clearListeners();
|
|
11770
|
-
lumiaPriceSSE.disconnect();
|
|
11771
|
-
return;
|
|
11772
|
-
}
|
|
11773
|
-
return () => {
|
|
11774
|
-
lumiaPriceSSE.clearListeners();
|
|
11775
|
-
lumiaPriceSSE.disconnect();
|
|
11776
|
-
};
|
|
11777
|
-
}, [enabled, connectSSE]);
|
|
11778
|
-
}
|
|
11779
|
-
|
|
11780
|
-
// src/internal/components/LumiaPriceSSE.tsx
|
|
11781
|
-
function LumiaPriceSSE() {
|
|
11782
|
-
const config = useLumiaPassportConfig().config.current;
|
|
11783
|
-
const address = useLumiaPassportSession((st) => st.address);
|
|
11784
|
-
const { cryptoRate, setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore();
|
|
11785
|
-
const isDefaultBalanceFeedEnabled = !!address && !config?.projectAssets?.showBalanceAs;
|
|
11786
|
-
const { data: balance } = (0, import_wagmi3.useBalance)({
|
|
11787
|
-
address,
|
|
11788
|
-
chainId: lumiaBeam.id,
|
|
11789
|
-
query: {
|
|
11790
|
-
enabled: isDefaultBalanceFeedEnabled,
|
|
11791
|
-
refetchInterval: isDefaultBalanceFeedEnabled ? 3e4 : false,
|
|
11792
|
-
// Refetch every 30 seconds
|
|
11793
|
-
refetchOnMount: true,
|
|
11794
|
-
refetchOnWindowFocus: true
|
|
11795
|
-
}
|
|
11796
|
-
});
|
|
11797
|
-
useLumiaPriceSSE(isDefaultBalanceFeedEnabled, (update) => setCryptoRate(update.price || 1));
|
|
11798
|
-
(0, import_react44.useEffect)(() => {
|
|
11799
|
-
if (!isDefaultBalanceFeedEnabled) return;
|
|
11800
|
-
const usdBalance = Number(balance?.formatted || 0) * cryptoRate;
|
|
11801
|
-
setCryptoSymbol("LUMIA");
|
|
11802
|
-
setFiatSymbol("USD");
|
|
11803
|
-
setFiatBalance(usdBalance);
|
|
11804
|
-
setBalance(balance);
|
|
11805
|
-
}, [isDefaultBalanceFeedEnabled, balance, cryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol]);
|
|
11806
|
-
const showBalanceAsSymbol = config?.projectAssets?.showBalanceAs;
|
|
11807
|
-
const assetBalanceConfig = config?.projectAssets?.assets.find((a) => a.symbol === showBalanceAsSymbol);
|
|
11808
|
-
const { balanceQuery, balanceQueryKey } = assetBalanceConfig || {};
|
|
11809
|
-
const { data: customBalance } = (0, import_react_query23.useQuery)({
|
|
11810
|
-
retry: false,
|
|
11811
|
-
enabled: !isDefaultBalanceFeedEnabled && !!address && !!showBalanceAsSymbol && !!assetBalanceConfig,
|
|
11812
|
-
queryKey: balanceQueryKey,
|
|
11813
|
-
// should be invalidated by host app via provided queryKey
|
|
11814
|
-
queryFn: async () => await balanceQuery()
|
|
11815
|
-
});
|
|
11816
|
-
(0, import_react44.useEffect)(() => {
|
|
11817
|
-
if (!!isDefaultBalanceFeedEnabled || !customBalance) return;
|
|
11818
|
-
const { cryptoFiatRate, fiatFormatted, cryptoFormatted, cryptoSymbol, fiatSymbol } = customBalance;
|
|
11819
|
-
setCryptoSymbol(cryptoSymbol.toUpperCase() || "LUMIA");
|
|
11820
|
-
setFiatSymbol(fiatSymbol.toUpperCase() || "USD");
|
|
11821
|
-
setCryptoRate(cryptoFiatRate || 1);
|
|
11822
|
-
setFiatBalance(fiatFormatted || 0);
|
|
11823
|
-
setBalance({
|
|
11824
|
-
decimals: 18,
|
|
11825
|
-
formatted: cryptoFormatted?.toString() || "0",
|
|
11826
|
-
symbol: cryptoSymbol.toUpperCase() || "LUMIA",
|
|
11827
|
-
value: BigInt(Math.floor((cryptoFormatted || 0) * 10 ** 18))
|
|
11828
|
-
});
|
|
11829
|
-
}, [
|
|
11830
|
-
isDefaultBalanceFeedEnabled,
|
|
11831
|
-
customBalance,
|
|
11832
|
-
setFiatBalance,
|
|
11833
|
-
setBalance,
|
|
11834
|
-
setCryptoSymbol,
|
|
11835
|
-
setFiatSymbol,
|
|
11836
|
-
setCryptoRate
|
|
11837
|
-
]);
|
|
11838
|
-
return null;
|
|
11839
|
-
}
|
|
11840
|
-
|
|
11841
11843
|
// src/internal/components/TssManager.tsx
|
|
11842
11844
|
var import_react45 = __toESM(require("react"), 1);
|
|
11843
11845
|
init_auth();
|
|
@@ -12038,7 +12040,7 @@ function LumiaPassportSessionProvider({ children }) {
|
|
|
12038
12040
|
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react47.Fragment, { children: [
|
|
12039
12041
|
children,
|
|
12040
12042
|
config.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(WalletConnectHandler, {}),
|
|
12041
|
-
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12043
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(BalanceFeedProvider, {}),
|
|
12042
12044
|
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
12043
12045
|
TssManagerWithRef,
|
|
12044
12046
|
{
|