@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.js
CHANGED
|
@@ -4249,7 +4249,7 @@ var init_profile = __esm({
|
|
|
4249
4249
|
});
|
|
4250
4250
|
|
|
4251
4251
|
// src/styles/built.css
|
|
4252
|
-
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}';
|
|
4252
|
+
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}';
|
|
4253
4253
|
|
|
4254
4254
|
// src/context/LumiaPassportContext.tsx
|
|
4255
4255
|
init_lumiaPassport();
|
|
@@ -4269,14 +4269,307 @@ import {
|
|
|
4269
4269
|
import { Fragment as Fragment15 } from "react";
|
|
4270
4270
|
import { create as create5 } from "zustand";
|
|
4271
4271
|
|
|
4272
|
+
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
4273
|
+
init_base();
|
|
4274
|
+
import { useQuery } from "@tanstack/react-query";
|
|
4275
|
+
import { useEffect as useEffect2, useState } from "react";
|
|
4276
|
+
import { useBalance } from "wagmi";
|
|
4277
|
+
|
|
4278
|
+
// src/internal/hooks/useLayoutDataStore.ts
|
|
4279
|
+
import { create } from "zustand";
|
|
4280
|
+
|
|
4281
|
+
// src/internal/constants.ts
|
|
4282
|
+
init_assets();
|
|
4283
|
+
import { Key as Key2, Mail as Mail2, Wallet2 as Wallet22 } from "lucide-react";
|
|
4284
|
+
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4285
|
+
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4286
|
+
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4287
|
+
var MAX_LIST_HEIGHT = 320;
|
|
4288
|
+
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4289
|
+
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4290
|
+
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
4291
|
+
var PROVIDERS_META2 = {
|
|
4292
|
+
passkey: { name: "Passkey", icon: Key2, description: "Biometric authentication" },
|
|
4293
|
+
email: { name: "Email", icon: Mail2, description: "Email verification" },
|
|
4294
|
+
telegram: { name: "Telegram", icon: TelegramIcon, description: "Telegram account" },
|
|
4295
|
+
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
4296
|
+
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
4297
|
+
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
4298
|
+
wallet: { name: "Wallet", icon: Wallet22, description: "External wallet (EOA)" }
|
|
4299
|
+
};
|
|
4300
|
+
|
|
4301
|
+
// src/internal/hooks/useLayoutDataStore.ts
|
|
4302
|
+
var PageKey = /* @__PURE__ */ ((PageKey2) => {
|
|
4303
|
+
PageKey2["AUTH"] = "auth";
|
|
4304
|
+
PageKey2["TERMS_OF_SERVICE"] = "terms-of-service";
|
|
4305
|
+
PageKey2["MAIN_MENU"] = "main-menu";
|
|
4306
|
+
PageKey2["SETTINGS"] = "settings";
|
|
4307
|
+
PageKey2["SEND"] = "send";
|
|
4308
|
+
PageKey2["RECEIVE"] = "receive";
|
|
4309
|
+
PageKey2["BUY"] = "buy";
|
|
4310
|
+
PageKey2["KYC"] = "kyc";
|
|
4311
|
+
PageKey2["TRANSACTIONS"] = "transactions";
|
|
4312
|
+
PageKey2["ASSETS"] = "assets";
|
|
4313
|
+
PageKey2["MANAGE_WALLET"] = "manage-wallet";
|
|
4314
|
+
PageKey2["UNLINK_PROVIDER"] = "unlink-provider";
|
|
4315
|
+
PageKey2["SECURITY"] = "security";
|
|
4316
|
+
PageKey2["KEYSARE_BACKUP"] = "keysare-backup";
|
|
4317
|
+
PageKey2["KEYSHARE_RESTORE"] = "keyshare-restore";
|
|
4318
|
+
return PageKey2;
|
|
4319
|
+
})(PageKey || {});
|
|
4320
|
+
var useLayoutDataStore = create((set) => ({
|
|
4321
|
+
page: null,
|
|
4322
|
+
pageParams: null,
|
|
4323
|
+
cryptoRate: 1,
|
|
4324
|
+
cryptoSymbol: "LUMIA",
|
|
4325
|
+
fiatBalance: 0,
|
|
4326
|
+
fiatSymbol: "USD",
|
|
4327
|
+
balance: { decimals: 18, formatted: "0.0", symbol: "LUMIA", value: BigInt(0) },
|
|
4328
|
+
mainPageHeight: DEFAULT_MAIN_MENU_HEIGHT,
|
|
4329
|
+
settingsNotifications: [],
|
|
4330
|
+
setPage: (page) => set({ page }),
|
|
4331
|
+
setPageParams: (pageOptions) => set({ pageParams: pageOptions }),
|
|
4332
|
+
setCryptoRate: (lumiaRate) => set({ cryptoRate: lumiaRate }),
|
|
4333
|
+
setCryptoSymbol: (cryptoSymbol) => set({ cryptoSymbol }),
|
|
4334
|
+
setFiatBalance: (usdBalance) => set({ fiatBalance: usdBalance }),
|
|
4335
|
+
setFiatSymbol: (fiatSymbol) => set({ fiatSymbol }),
|
|
4336
|
+
setBalance: (balance) => set({ balance }),
|
|
4337
|
+
setMainPageHeight: (height) => set({ mainPageHeight: height }),
|
|
4338
|
+
setSettingsNotifications: (notification) => set((prev) => {
|
|
4339
|
+
const actions = notification.status === "active" ? "add" : "remove";
|
|
4340
|
+
const exists = prev.settingsNotifications.find((n) => n.id === notification.id);
|
|
4341
|
+
if (actions === "add") {
|
|
4342
|
+
if (exists) return prev;
|
|
4343
|
+
return { settingsNotifications: [...prev.settingsNotifications, notification] };
|
|
4344
|
+
}
|
|
4345
|
+
const filtered = prev.settingsNotifications.filter((n) => n.id !== notification.id);
|
|
4346
|
+
return { settingsNotifications: filtered };
|
|
4347
|
+
})
|
|
4348
|
+
}));
|
|
4349
|
+
|
|
4350
|
+
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
4351
|
+
import { useMutation } from "@tanstack/react-query";
|
|
4352
|
+
import { useEffect } from "react";
|
|
4353
|
+
|
|
4354
|
+
// src/internal/lib/LumiaPriceSSEService.ts
|
|
4355
|
+
var FALLBACK = "https://fallback.lumia.passport.io";
|
|
4356
|
+
var API_DOMAIN = (true ? "" : FALLBACK) || FALLBACK;
|
|
4357
|
+
var LumiaPriceSSEService = class {
|
|
4358
|
+
// private readonly baseUrl: string = API_DOMAIN
|
|
4359
|
+
constructor() {
|
|
4360
|
+
this.eventSource = null;
|
|
4361
|
+
this.listeners = /* @__PURE__ */ new Set();
|
|
4362
|
+
this.currentPrice = null;
|
|
4363
|
+
this.isConnected = false;
|
|
4364
|
+
this.reconnectTimeout = null;
|
|
4365
|
+
}
|
|
4366
|
+
connect() {
|
|
4367
|
+
return new Promise((resolve, reject) => {
|
|
4368
|
+
console.log("[LumiaPriceSSEService]: Connecting to LUMIA Price SSE...");
|
|
4369
|
+
if (this.isConnected) {
|
|
4370
|
+
resolve();
|
|
4371
|
+
return;
|
|
4372
|
+
}
|
|
4373
|
+
try {
|
|
4374
|
+
this.eventSource = new EventSource(`${API_DOMAIN}/api/lumia/sse`);
|
|
4375
|
+
this.eventSource.onopen = () => {
|
|
4376
|
+
console.log("[LumiaPriceSSEService]: LUMIA Price SSE connected");
|
|
4377
|
+
this.isConnected = true;
|
|
4378
|
+
this.clearReconnectTimeout();
|
|
4379
|
+
resolve();
|
|
4380
|
+
};
|
|
4381
|
+
this.eventSource.onmessage = () => {
|
|
4382
|
+
};
|
|
4383
|
+
this.eventSource.addEventListener("rate", (event) => {
|
|
4384
|
+
try {
|
|
4385
|
+
const data = JSON.parse(event.data);
|
|
4386
|
+
if (data.price !== void 0 && data.symbol === "LUMIAUSDT") {
|
|
4387
|
+
this.currentPrice = typeof data.price === "number" ? data.price : parseFloat(data.price);
|
|
4388
|
+
if (this.currentPrice !== null) {
|
|
4389
|
+
const update = {
|
|
4390
|
+
symbol: data.symbol,
|
|
4391
|
+
price: this.currentPrice,
|
|
4392
|
+
ts: data.ts || Date.now()
|
|
4393
|
+
};
|
|
4394
|
+
this.listeners.forEach((listener) => listener(update));
|
|
4395
|
+
}
|
|
4396
|
+
}
|
|
4397
|
+
} catch (error) {
|
|
4398
|
+
console.error("Error parsing price event:", error, event.data);
|
|
4399
|
+
}
|
|
4400
|
+
});
|
|
4401
|
+
this.eventSource.addEventListener("ping", () => {
|
|
4402
|
+
});
|
|
4403
|
+
this.eventSource.onerror = (error) => {
|
|
4404
|
+
console.error("LUMIA Price SSE error:", error);
|
|
4405
|
+
this.isConnected = false;
|
|
4406
|
+
if (this.eventSource?.readyState === EventSource.CLOSED) {
|
|
4407
|
+
console.log("SSE connection closed, attempting to reconnect...");
|
|
4408
|
+
this.scheduleReconnect();
|
|
4409
|
+
reject(error);
|
|
4410
|
+
}
|
|
4411
|
+
};
|
|
4412
|
+
setTimeout(() => {
|
|
4413
|
+
if (!this.isConnected) {
|
|
4414
|
+
reject(new Error("SSE connection timeout"));
|
|
4415
|
+
}
|
|
4416
|
+
}, 1e4);
|
|
4417
|
+
} catch (error) {
|
|
4418
|
+
reject(error);
|
|
4419
|
+
}
|
|
4420
|
+
});
|
|
4421
|
+
}
|
|
4422
|
+
disconnect() {
|
|
4423
|
+
this.clearReconnectTimeout();
|
|
4424
|
+
if (this.eventSource) {
|
|
4425
|
+
this.eventSource.close();
|
|
4426
|
+
this.eventSource = null;
|
|
4427
|
+
}
|
|
4428
|
+
this.isConnected = false;
|
|
4429
|
+
this.currentPrice = null;
|
|
4430
|
+
console.log("[LumiaPriceSSEService]: LUMIA Price SSE disconnected");
|
|
4431
|
+
}
|
|
4432
|
+
addListener(listener) {
|
|
4433
|
+
this.listeners.add(listener);
|
|
4434
|
+
}
|
|
4435
|
+
removeListener(listener) {
|
|
4436
|
+
this.listeners.delete(listener);
|
|
4437
|
+
}
|
|
4438
|
+
clearListeners() {
|
|
4439
|
+
this.listeners.clear();
|
|
4440
|
+
}
|
|
4441
|
+
getCurrentPrice() {
|
|
4442
|
+
return this.currentPrice;
|
|
4443
|
+
}
|
|
4444
|
+
getConnectionStatus() {
|
|
4445
|
+
return this.isConnected;
|
|
4446
|
+
}
|
|
4447
|
+
scheduleReconnect() {
|
|
4448
|
+
this.clearReconnectTimeout();
|
|
4449
|
+
this.reconnectTimeout = window.setTimeout(() => {
|
|
4450
|
+
console.log("Attempting to reconnect to BTC Price SSE...");
|
|
4451
|
+
this.connect().catch((error) => {
|
|
4452
|
+
console.error("Reconnection failed:", error);
|
|
4453
|
+
this.scheduleReconnect();
|
|
4454
|
+
});
|
|
4455
|
+
}, 5e3);
|
|
4456
|
+
}
|
|
4457
|
+
clearReconnectTimeout() {
|
|
4458
|
+
if (this.reconnectTimeout) {
|
|
4459
|
+
clearTimeout(this.reconnectTimeout);
|
|
4460
|
+
this.reconnectTimeout = null;
|
|
4461
|
+
}
|
|
4462
|
+
}
|
|
4463
|
+
};
|
|
4464
|
+
var lumiaPriceSSE = new LumiaPriceSSEService();
|
|
4465
|
+
async function sseConnectMutation() {
|
|
4466
|
+
try {
|
|
4467
|
+
await lumiaPriceSSE.connect();
|
|
4468
|
+
console.info("[LUMIA SSE] price feed connected");
|
|
4469
|
+
return { ok: true };
|
|
4470
|
+
} catch (error) {
|
|
4471
|
+
console.error("[LUMIA SSE] Error connecting to SSE:", error);
|
|
4472
|
+
throw new Error("[LUMIA SSE] Error connecting to SSE");
|
|
4473
|
+
}
|
|
4474
|
+
}
|
|
4475
|
+
|
|
4476
|
+
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
4477
|
+
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
4478
|
+
const { mutate: connectSSE } = useMutation({
|
|
4479
|
+
mutationFn: sseConnectMutation,
|
|
4480
|
+
onSuccess: () => {
|
|
4481
|
+
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
4482
|
+
},
|
|
4483
|
+
onError: (err) => {
|
|
4484
|
+
console.error("Lumia Price SSE connection error:", err);
|
|
4485
|
+
}
|
|
4486
|
+
});
|
|
4487
|
+
useEffect(() => {
|
|
4488
|
+
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
4489
|
+
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
4490
|
+
if (!enabled) {
|
|
4491
|
+
lumiaPriceSSE.clearListeners();
|
|
4492
|
+
lumiaPriceSSE.disconnect();
|
|
4493
|
+
return;
|
|
4494
|
+
}
|
|
4495
|
+
return () => {
|
|
4496
|
+
lumiaPriceSSE.clearListeners();
|
|
4497
|
+
lumiaPriceSSE.disconnect();
|
|
4498
|
+
};
|
|
4499
|
+
}, [enabled, connectSSE]);
|
|
4500
|
+
}
|
|
4501
|
+
|
|
4502
|
+
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
4503
|
+
var BALANCE_POLLING_INTERVAL = 3e4;
|
|
4504
|
+
function BalanceFeedProvider() {
|
|
4505
|
+
const config = useLumiaPassportConfig().config;
|
|
4506
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
4507
|
+
const { cryptoRate, setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore();
|
|
4508
|
+
const [balanceSymbol, setBalanceSymbol] = useState(null);
|
|
4509
|
+
useEffect2(() => {
|
|
4510
|
+
const { assets, showBalanceAs: customBalanceSymbol } = config.current?.projectAssets || {};
|
|
4511
|
+
const { balanceQuery, balanceQueryKey } = assets?.find((a) => a.symbol === customBalanceSymbol) || {};
|
|
4512
|
+
const isCustom = !!customBalanceSymbol && !!balanceQuery && !!balanceQueryKey;
|
|
4513
|
+
setBalanceSymbol(isCustom ? customBalanceSymbol : lumiaBeam.nativeCurrency.symbol);
|
|
4514
|
+
}, [config, address]);
|
|
4515
|
+
const isNativeBalanceFeedEnabled = balanceSymbol === lumiaBeam.nativeCurrency.symbol;
|
|
4516
|
+
const { data: balance } = useBalance({
|
|
4517
|
+
address,
|
|
4518
|
+
chainId: lumiaBeam.id,
|
|
4519
|
+
query: {
|
|
4520
|
+
enabled: !!address && !!isNativeBalanceFeedEnabled,
|
|
4521
|
+
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
4522
|
+
refetchOnMount: true,
|
|
4523
|
+
refetchOnWindowFocus: true
|
|
4524
|
+
}
|
|
4525
|
+
});
|
|
4526
|
+
useLumiaPriceSSE(isNativeBalanceFeedEnabled, (update) => setCryptoRate(update.price || 1));
|
|
4527
|
+
useEffect2(() => {
|
|
4528
|
+
if (!isNativeBalanceFeedEnabled || !balance.value) return;
|
|
4529
|
+
setCryptoSymbol("LUMIA");
|
|
4530
|
+
setFiatSymbol("USD");
|
|
4531
|
+
setFiatBalance(Number(balance?.formatted || 0) * cryptoRate);
|
|
4532
|
+
setBalance(balance);
|
|
4533
|
+
}, [isNativeBalanceFeedEnabled, balance, cryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol]);
|
|
4534
|
+
const {
|
|
4535
|
+
balanceQuery: customBalanceQuery,
|
|
4536
|
+
balanceQueryKey: CUSTOM_BALANCE_QUERY_KEY,
|
|
4537
|
+
symbol: customAssetSymbol
|
|
4538
|
+
} = config.current?.projectAssets?.assets?.find((a) => a.symbol === config.current?.projectAssets?.showBalanceAs) || {};
|
|
4539
|
+
const isCustomBalanceEnabled = balanceSymbol === customAssetSymbol;
|
|
4540
|
+
const { data: customBalance } = useQuery({
|
|
4541
|
+
retry: false,
|
|
4542
|
+
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
4543
|
+
enabled: !!address && !!isCustomBalanceEnabled,
|
|
4544
|
+
queryKey: CUSTOM_BALANCE_QUERY_KEY,
|
|
4545
|
+
// should be invalidated by host app via provided queryKey
|
|
4546
|
+
queryFn: async () => await customBalanceQuery?.()
|
|
4547
|
+
});
|
|
4548
|
+
useEffect2(() => {
|
|
4549
|
+
if (!isCustomBalanceEnabled || !customBalance) return;
|
|
4550
|
+
const { cryptoFiatRate, fiatFormatted, cryptoFormatted, cryptoSymbol, fiatSymbol } = customBalance;
|
|
4551
|
+
setCryptoSymbol(cryptoSymbol.toUpperCase());
|
|
4552
|
+
setFiatSymbol(fiatSymbol.toUpperCase());
|
|
4553
|
+
setCryptoRate(cryptoFiatRate || 1);
|
|
4554
|
+
setFiatBalance(fiatFormatted || 0);
|
|
4555
|
+
setBalance({
|
|
4556
|
+
decimals: 18,
|
|
4557
|
+
formatted: cryptoFormatted?.toString() || "0",
|
|
4558
|
+
symbol: cryptoSymbol.toUpperCase() || "LUMIA",
|
|
4559
|
+
value: BigInt(Math.floor((cryptoFormatted || 0) * 10 ** 18))
|
|
4560
|
+
});
|
|
4561
|
+
}, [isCustomBalanceEnabled, customBalance, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol, setCryptoRate]);
|
|
4562
|
+
return null;
|
|
4563
|
+
}
|
|
4564
|
+
|
|
4272
4565
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4273
4566
|
import { AnimatePresence as AnimatePresence4, motion as motion4 } from "framer-motion";
|
|
4274
|
-
import { useEffect as
|
|
4567
|
+
import { useEffect as useEffect29 } from "react";
|
|
4275
4568
|
|
|
4276
4569
|
// package.json
|
|
4277
4570
|
var package_default = {
|
|
4278
4571
|
name: "@lumiapassport/ui-kit",
|
|
4279
|
-
version: "1.13.
|
|
4572
|
+
version: "1.13.4",
|
|
4280
4573
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4281
4574
|
type: "module",
|
|
4282
4575
|
main: "./dist/index.cjs",
|
|
@@ -4292,7 +4585,8 @@ var package_default = {
|
|
|
4292
4585
|
"build:css": "tailwindcss -c tailwind.config.cjs -i src/styles/index.css -o src/styles/built.css --minify",
|
|
4293
4586
|
"build:iframe-html": "node scripts/copy-iframe-html.js",
|
|
4294
4587
|
"build:copy-css": "cp src/styles/built.css dist/styles.css",
|
|
4295
|
-
build:
|
|
4588
|
+
"build:copy-font": "cp src/styles/Inter.ttf dist/Inter.ttf",
|
|
4589
|
+
build: "pnpm build:css && tsup && pnpm build:iframe-html && pnpm build:copy-css && pnpm build:copy-font",
|
|
4296
4590
|
dev: "pnpm build:css && tsup --watch",
|
|
4297
4591
|
"dev:iframe": "vite --config iframe/vite.config.ts"
|
|
4298
4592
|
},
|
|
@@ -4364,7 +4658,7 @@ var package_default = {
|
|
|
4364
4658
|
};
|
|
4365
4659
|
|
|
4366
4660
|
// src/internal/components/Footer/Footer.tsx
|
|
4367
|
-
import { useMutation } from "@tanstack/react-query";
|
|
4661
|
+
import { useMutation as useMutation2 } from "@tanstack/react-query";
|
|
4368
4662
|
import { Loader, LogOut } from "lucide-react";
|
|
4369
4663
|
|
|
4370
4664
|
// src/internal/assets/LumiaLogo.tsx
|
|
@@ -4422,78 +4716,6 @@ var LumiaLogo = forwardRef(({ size = 24, className = "" }, ref) => /* @__PURE__
|
|
|
4422
4716
|
init_auth();
|
|
4423
4717
|
init_base();
|
|
4424
4718
|
|
|
4425
|
-
// src/internal/hooks/useLayoutDataStore.ts
|
|
4426
|
-
import { create } from "zustand";
|
|
4427
|
-
|
|
4428
|
-
// src/internal/constants.ts
|
|
4429
|
-
init_assets();
|
|
4430
|
-
import { Key as Key2, Mail as Mail2, Wallet2 as Wallet22 } from "lucide-react";
|
|
4431
|
-
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4432
|
-
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4433
|
-
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4434
|
-
var MAX_LIST_HEIGHT = 320;
|
|
4435
|
-
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4436
|
-
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4437
|
-
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
4438
|
-
var PROVIDERS_META2 = {
|
|
4439
|
-
passkey: { name: "Passkey", icon: Key2, description: "Biometric authentication" },
|
|
4440
|
-
email: { name: "Email", icon: Mail2, description: "Email verification" },
|
|
4441
|
-
telegram: { name: "Telegram", icon: TelegramIcon, description: "Telegram account" },
|
|
4442
|
-
google: { name: "Google", icon: GoogleIcon, description: "Google account" },
|
|
4443
|
-
discord: { name: "Discord", icon: DiscordIcon, description: "Discord account" },
|
|
4444
|
-
twitter: { name: "X", icon: TwitterIcon, description: "X (Twitter) account" },
|
|
4445
|
-
wallet: { name: "Wallet", icon: Wallet22, description: "External wallet (EOA)" }
|
|
4446
|
-
};
|
|
4447
|
-
|
|
4448
|
-
// src/internal/hooks/useLayoutDataStore.ts
|
|
4449
|
-
var PageKey = /* @__PURE__ */ ((PageKey2) => {
|
|
4450
|
-
PageKey2["AUTH"] = "auth";
|
|
4451
|
-
PageKey2["TERMS_OF_SERVICE"] = "terms-of-service";
|
|
4452
|
-
PageKey2["MAIN_MENU"] = "main-menu";
|
|
4453
|
-
PageKey2["SETTINGS"] = "settings";
|
|
4454
|
-
PageKey2["SEND"] = "send";
|
|
4455
|
-
PageKey2["RECEIVE"] = "receive";
|
|
4456
|
-
PageKey2["BUY"] = "buy";
|
|
4457
|
-
PageKey2["KYC"] = "kyc";
|
|
4458
|
-
PageKey2["TRANSACTIONS"] = "transactions";
|
|
4459
|
-
PageKey2["ASSETS"] = "assets";
|
|
4460
|
-
PageKey2["MANAGE_WALLET"] = "manage-wallet";
|
|
4461
|
-
PageKey2["UNLINK_PROVIDER"] = "unlink-provider";
|
|
4462
|
-
PageKey2["SECURITY"] = "security";
|
|
4463
|
-
PageKey2["KEYSARE_BACKUP"] = "keysare-backup";
|
|
4464
|
-
PageKey2["KEYSHARE_RESTORE"] = "keyshare-restore";
|
|
4465
|
-
return PageKey2;
|
|
4466
|
-
})(PageKey || {});
|
|
4467
|
-
var useLayoutDataStore = create((set) => ({
|
|
4468
|
-
page: null,
|
|
4469
|
-
pageParams: null,
|
|
4470
|
-
cryptoRate: 1,
|
|
4471
|
-
cryptoSymbol: "LUMIA",
|
|
4472
|
-
fiatBalance: 0,
|
|
4473
|
-
fiatSymbol: "USD",
|
|
4474
|
-
balance: { decimals: 18, formatted: "0.0", symbol: "LUMIA", value: BigInt(0) },
|
|
4475
|
-
mainPageHeight: DEFAULT_MAIN_MENU_HEIGHT,
|
|
4476
|
-
settingsNotifications: [],
|
|
4477
|
-
setPage: (page) => set({ page }),
|
|
4478
|
-
setPageParams: (pageOptions) => set({ pageParams: pageOptions }),
|
|
4479
|
-
setCryptoRate: (lumiaRate) => set({ cryptoRate: lumiaRate }),
|
|
4480
|
-
setCryptoSymbol: (cryptoSymbol) => set({ cryptoSymbol }),
|
|
4481
|
-
setFiatBalance: (usdBalance) => set({ fiatBalance: usdBalance }),
|
|
4482
|
-
setFiatSymbol: (fiatSymbol) => set({ fiatSymbol }),
|
|
4483
|
-
setBalance: (balance) => set({ balance }),
|
|
4484
|
-
setMainPageHeight: (height) => set({ mainPageHeight: height }),
|
|
4485
|
-
setSettingsNotifications: (notification) => set((prev) => {
|
|
4486
|
-
const actions = notification.status === "active" ? "add" : "remove";
|
|
4487
|
-
const exists = prev.settingsNotifications.find((n) => n.id === notification.id);
|
|
4488
|
-
if (actions === "add") {
|
|
4489
|
-
if (exists) return prev;
|
|
4490
|
-
return { settingsNotifications: [...prev.settingsNotifications, notification] };
|
|
4491
|
-
}
|
|
4492
|
-
const filtered = prev.settingsNotifications.filter((n) => n.id !== notification.id);
|
|
4493
|
-
return { settingsNotifications: filtered };
|
|
4494
|
-
})
|
|
4495
|
-
}));
|
|
4496
|
-
|
|
4497
4719
|
// src/internal/lib/utils.ts
|
|
4498
4720
|
import { clsx } from "clsx";
|
|
4499
4721
|
import { twMerge } from "tailwind-merge";
|
|
@@ -4581,7 +4803,7 @@ function Footer() {
|
|
|
4581
4803
|
const { callbacks } = useLumiaPassportConfig();
|
|
4582
4804
|
const { address, setSession, setAddress, setStatus, setError, setIsLoading } = useLumiaPassportSession();
|
|
4583
4805
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
4584
|
-
const { mutate: disconnect, isPending: isDisconnecting } =
|
|
4806
|
+
const { mutate: disconnect, isPending: isDisconnecting } = useMutation2({
|
|
4585
4807
|
mutationFn: async (disconnectAddress) => {
|
|
4586
4808
|
if (!disconnectAddress) throw new Error("No address to disconnect");
|
|
4587
4809
|
setError(null);
|
|
@@ -4713,9 +4935,9 @@ function LumiaIcon(props) {
|
|
|
4713
4935
|
}
|
|
4714
4936
|
|
|
4715
4937
|
// src/internal/components/Header/Header.tsx
|
|
4716
|
-
import { useQuery } from "@tanstack/react-query";
|
|
4938
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
4717
4939
|
import { Copy, Loader as Loader2 } from "lucide-react";
|
|
4718
|
-
import { useState } from "react";
|
|
4940
|
+
import { useState as useState2 } from "react";
|
|
4719
4941
|
|
|
4720
4942
|
// src/internal/assets/PositiveIcon.tsx
|
|
4721
4943
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
@@ -4771,10 +4993,10 @@ function Header() {
|
|
|
4771
4993
|
config: { current: config }
|
|
4772
4994
|
} = useLumiaPassportConfig();
|
|
4773
4995
|
const address = useLumiaPassportSession((st) => st.address);
|
|
4774
|
-
const [copied, setCopied] =
|
|
4996
|
+
const [copied, setCopied] = useState2(false);
|
|
4775
4997
|
const avatar = jwtTokenManager2.getAvatar();
|
|
4776
4998
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
4777
|
-
const { data: userProfile = null, isLoading: isUserProfileLoading } =
|
|
4999
|
+
const { data: userProfile = null, isLoading: isUserProfileLoading } = useQuery2({
|
|
4778
5000
|
retry: false,
|
|
4779
5001
|
enabled: !!address,
|
|
4780
5002
|
queryKey: [QUERY_KEYS.userProfile, address],
|
|
@@ -5043,7 +5265,7 @@ import { jsx as jsx10 } from "react/jsx-runtime";
|
|
|
5043
5265
|
var VisuallyHidden = ({ children }) => /* @__PURE__ */ jsx10("span", { className: "sr-only absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0", children });
|
|
5044
5266
|
|
|
5045
5267
|
// src/internal/hooks/useAutoConnect.ts
|
|
5046
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
5268
|
+
import { useCallback, useEffect as useEffect3, useRef } from "react";
|
|
5047
5269
|
function useAutoConnect() {
|
|
5048
5270
|
const {
|
|
5049
5271
|
config: { current: config },
|
|
@@ -5098,7 +5320,7 @@ function useAutoConnect() {
|
|
|
5098
5320
|
[usePaymaster, setStatus, callbacks]
|
|
5099
5321
|
);
|
|
5100
5322
|
const autoConnectAttemptedRef = useRef(false);
|
|
5101
|
-
|
|
5323
|
+
useEffect3(() => {
|
|
5102
5324
|
if (autoConnectAttemptedRef.current) return;
|
|
5103
5325
|
setIsLoading(true);
|
|
5104
5326
|
const tryAutoConnect = async (attempt) => {
|
|
@@ -5217,11 +5439,11 @@ function useAutoConnect() {
|
|
|
5217
5439
|
}
|
|
5218
5440
|
|
|
5219
5441
|
// src/internal/hooks/useBackupStatusChanges.ts
|
|
5220
|
-
import { useEffect as
|
|
5442
|
+
import { useEffect as useEffect4 } from "react";
|
|
5221
5443
|
init_vaultClient();
|
|
5222
5444
|
function useBackupStatusChanges() {
|
|
5223
5445
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5224
|
-
|
|
5446
|
+
useEffect4(() => {
|
|
5225
5447
|
const handleBackupStatusChanged = async (event) => {
|
|
5226
5448
|
const customEvent = event;
|
|
5227
5449
|
const { method, success } = customEvent.detail || {};
|
|
@@ -5247,13 +5469,13 @@ function useBackupStatusChanges() {
|
|
|
5247
5469
|
}
|
|
5248
5470
|
|
|
5249
5471
|
// src/internal/hooks/useCheckVaultStatus.ts
|
|
5250
|
-
import { useMutation as
|
|
5251
|
-
import { useEffect as
|
|
5472
|
+
import { useMutation as useMutation3 } from "@tanstack/react-query";
|
|
5473
|
+
import { useEffect as useEffect5 } from "react";
|
|
5252
5474
|
init_vaultClient();
|
|
5253
5475
|
function useCheckVaultStatus() {
|
|
5254
5476
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5255
5477
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5256
|
-
const { mutate: checkVaultStatus } =
|
|
5478
|
+
const { mutate: checkVaultStatus } = useMutation3({
|
|
5257
5479
|
mutationFn: async () => {
|
|
5258
5480
|
const stats = await getShareRecoveryStats();
|
|
5259
5481
|
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
@@ -5267,19 +5489,19 @@ function useCheckVaultStatus() {
|
|
|
5267
5489
|
setHasServerVault(false);
|
|
5268
5490
|
}
|
|
5269
5491
|
});
|
|
5270
|
-
|
|
5492
|
+
useEffect5(() => {
|
|
5271
5493
|
if (!address) return setHasServerVault(false);
|
|
5272
5494
|
checkVaultStatus();
|
|
5273
5495
|
}, [address, checkVaultStatus]);
|
|
5274
5496
|
}
|
|
5275
5497
|
|
|
5276
5498
|
// src/internal/hooks/usePageMapper.tsx
|
|
5277
|
-
import { useCallback as useCallback15, useEffect as
|
|
5499
|
+
import { useCallback as useCallback15, useEffect as useEffect26 } from "react";
|
|
5278
5500
|
|
|
5279
5501
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5280
5502
|
import { AnimatePresence, motion } from "framer-motion";
|
|
5281
5503
|
import { Loader as Loader5 } from "lucide-react";
|
|
5282
|
-
import { useEffect as
|
|
5504
|
+
import { useEffect as useEffect9, useMemo } from "react";
|
|
5283
5505
|
|
|
5284
5506
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5285
5507
|
import { AlertTriangle, Cross } from "lucide-react";
|
|
@@ -5367,7 +5589,7 @@ function AuthFailedStep() {
|
|
|
5367
5589
|
|
|
5368
5590
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameInput.tsx
|
|
5369
5591
|
import { User } from "lucide-react";
|
|
5370
|
-
import { useState as
|
|
5592
|
+
import { useState as useState3 } from "react";
|
|
5371
5593
|
init_auth();
|
|
5372
5594
|
init_profile();
|
|
5373
5595
|
|
|
@@ -5423,9 +5645,9 @@ Input.displayName = "Input";
|
|
|
5423
5645
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameInput.tsx
|
|
5424
5646
|
import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
5425
5647
|
var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
5426
|
-
const [displayName, setDisplayName] =
|
|
5427
|
-
const [isLoading, setIsLoading] =
|
|
5428
|
-
const [error, setError] =
|
|
5648
|
+
const [displayName, setDisplayName] = useState3("");
|
|
5649
|
+
const [isLoading, setIsLoading] = useState3(false);
|
|
5650
|
+
const [error, setError] = useState3("");
|
|
5429
5651
|
const handleSubmit = async (e) => {
|
|
5430
5652
|
e.preventDefault();
|
|
5431
5653
|
if (!displayName.trim()) {
|
|
@@ -5565,12 +5787,12 @@ function PasskeyAddIcon(props) {
|
|
|
5565
5787
|
init_auth();
|
|
5566
5788
|
|
|
5567
5789
|
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
5568
|
-
import { useCallback as useCallback2, useEffect as
|
|
5790
|
+
import { useCallback as useCallback2, useEffect as useEffect6, useRef as useRef3 } from "react";
|
|
5569
5791
|
var useExpandable = (props) => {
|
|
5570
5792
|
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
5571
5793
|
const expandableRef = useRef3(null);
|
|
5572
5794
|
const contentRef = useRef3(null);
|
|
5573
|
-
|
|
5795
|
+
useEffect6(() => {
|
|
5574
5796
|
if (!expandableRef.current) return;
|
|
5575
5797
|
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
5576
5798
|
}, []);
|
|
@@ -5585,7 +5807,7 @@ var useExpandable = (props) => {
|
|
|
5585
5807
|
// ON_RESIZE_DELEAY),
|
|
5586
5808
|
[minHeight]
|
|
5587
5809
|
);
|
|
5588
|
-
|
|
5810
|
+
useEffect6(() => {
|
|
5589
5811
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5590
5812
|
const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
|
|
5591
5813
|
obs.observe(expandableRef.current);
|
|
@@ -5844,7 +6066,7 @@ import { Fragment as Fragment2 } from "react";
|
|
|
5844
6066
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
5845
6067
|
init_lumiaPassport();
|
|
5846
6068
|
init_projectId();
|
|
5847
|
-
import { useMutation as
|
|
6069
|
+
import { useMutation as useMutation4 } from "@tanstack/react-query";
|
|
5848
6070
|
import { ChevronRight, Loader as Loader3, Mail as Mail3 } from "lucide-react";
|
|
5849
6071
|
|
|
5850
6072
|
// src/internal/components/ui/highlight.tsx
|
|
@@ -5880,7 +6102,7 @@ function Email() {
|
|
|
5880
6102
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5881
6103
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
5882
6104
|
const { email, codeSendError, setEmail, setCodeSendError, setExpiresIn, setStep } = useAuthStore();
|
|
5883
|
-
const { mutate: onSendVerificationCode } =
|
|
6105
|
+
const { mutate: onSendVerificationCode } = useMutation4({
|
|
5884
6106
|
mutationFn: async (mail) => {
|
|
5885
6107
|
const isEmailValid = mail.length !== 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail);
|
|
5886
6108
|
if (!isEmailValid) {
|
|
@@ -6504,7 +6726,7 @@ function SignInStep(props) {
|
|
|
6504
6726
|
|
|
6505
6727
|
// src/internal/components/AuthMenu/useAuthMenuHanders.ts
|
|
6506
6728
|
init_auth();
|
|
6507
|
-
import { useCallback as useCallback5, useRef as useRef4, useState as
|
|
6729
|
+
import { useCallback as useCallback5, useRef as useRef4, useState as useState4 } from "react";
|
|
6508
6730
|
function useAuthMenuHandlers() {
|
|
6509
6731
|
const {
|
|
6510
6732
|
config: { current: config },
|
|
@@ -6512,7 +6734,7 @@ function useAuthMenuHandlers() {
|
|
|
6512
6734
|
} = useLumiaPassportConfig();
|
|
6513
6735
|
const pendingLoginResponseRef = useRef4(null);
|
|
6514
6736
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6515
|
-
const [telegramCleanup, setTelegramCleanup] =
|
|
6737
|
+
const [telegramCleanup, setTelegramCleanup] = useState4(null);
|
|
6516
6738
|
const { usePaymaster, setError, setStatus, setSession, setAddress, setRecoveryUserId, setHasServerVault } = useLumiaPassportSession();
|
|
6517
6739
|
const { setStep, setVerificationError, setCodeSendError, setFailedMessage } = useAuthStore();
|
|
6518
6740
|
const createSessionWithKeyshare = useCallback5(
|
|
@@ -6689,7 +6911,7 @@ function useAuthMenuHandlers() {
|
|
|
6689
6911
|
}
|
|
6690
6912
|
|
|
6691
6913
|
// src/internal/components/AuthMenu/useListenIframeAuthEvents.ts
|
|
6692
|
-
import { useCallback as useCallback6, useEffect as
|
|
6914
|
+
import { useCallback as useCallback6, useEffect as useEffect7 } from "react";
|
|
6693
6915
|
function useListenIframeAuthEvents() {
|
|
6694
6916
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
6695
6917
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
@@ -6711,7 +6933,7 @@ function useListenIframeAuthEvents() {
|
|
|
6711
6933
|
},
|
|
6712
6934
|
[setPage, setIsIframeReady]
|
|
6713
6935
|
);
|
|
6714
|
-
|
|
6936
|
+
useEffect7(() => {
|
|
6715
6937
|
window.addEventListener("message", handleIframeMessage);
|
|
6716
6938
|
return () => window.removeEventListener("message", handleIframeMessage);
|
|
6717
6939
|
}, [handleIframeMessage]);
|
|
@@ -6719,7 +6941,7 @@ function useListenIframeAuthEvents() {
|
|
|
6719
6941
|
|
|
6720
6942
|
// src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
|
|
6721
6943
|
init_lumiaPassport();
|
|
6722
|
-
import { useMutation as
|
|
6944
|
+
import { useMutation as useMutation5 } from "@tanstack/react-query";
|
|
6723
6945
|
import { ArrowLeft as ArrowLeft3, Loader as Loader4 } from "lucide-react";
|
|
6724
6946
|
|
|
6725
6947
|
// src/internal/assets/OtpIcon.tsx
|
|
@@ -6740,21 +6962,21 @@ init_auth();
|
|
|
6740
6962
|
init_projectId();
|
|
6741
6963
|
|
|
6742
6964
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
6743
|
-
import { useEffect as
|
|
6965
|
+
import { useEffect as useEffect8, useRef as useRef5, useState as useState5 } from "react";
|
|
6744
6966
|
import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
6745
6967
|
var VerificationCodeInput = (props) => {
|
|
6746
6968
|
const { onVerifyCode, onResendCode, isLoading, expiresIn, error } = props;
|
|
6747
6969
|
const setVerificationError = useAuthStore((st) => st.setVerificationError);
|
|
6748
|
-
const [timeLeft, setTimeLeft] =
|
|
6749
|
-
|
|
6750
|
-
|
|
6970
|
+
const [timeLeft, setTimeLeft] = useState5(expiresIn);
|
|
6971
|
+
useEffect8(() => setTimeLeft(expiresIn), [expiresIn]);
|
|
6972
|
+
useEffect8(() => {
|
|
6751
6973
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
6752
6974
|
return () => clearInterval(t);
|
|
6753
6975
|
}, []);
|
|
6754
6976
|
const lastSubmittedRef = useRef5(null);
|
|
6755
6977
|
const inputsRef = useRef5([]);
|
|
6756
|
-
const [digits, setDigits] =
|
|
6757
|
-
|
|
6978
|
+
const [digits, setDigits] = useState5(["", "", "", "", "", ""]);
|
|
6979
|
+
useEffect8(() => {
|
|
6758
6980
|
const code = digits.join("");
|
|
6759
6981
|
if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
|
|
6760
6982
|
if (lastSubmittedRef.current !== code) {
|
|
@@ -6763,7 +6985,7 @@ var VerificationCodeInput = (props) => {
|
|
|
6763
6985
|
}
|
|
6764
6986
|
}
|
|
6765
6987
|
}, [digits, isLoading, onVerifyCode]);
|
|
6766
|
-
|
|
6988
|
+
useEffect8(() => {
|
|
6767
6989
|
const t = setTimeout(() => {
|
|
6768
6990
|
inputsRef.current[0]?.focus();
|
|
6769
6991
|
}, 0);
|
|
@@ -6888,7 +7110,7 @@ function VerifyStep(props) {
|
|
|
6888
7110
|
setEmail,
|
|
6889
7111
|
setExpiresIn
|
|
6890
7112
|
} = useAuthStore();
|
|
6891
|
-
const { mutate: onVerifyCode, isPending: isCodeVerifying } =
|
|
7113
|
+
const { mutate: onVerifyCode, isPending: isCodeVerifying } = useMutation5({
|
|
6892
7114
|
mutationFn: async (code) => {
|
|
6893
7115
|
setIsLoading(true);
|
|
6894
7116
|
setVerificationError("");
|
|
@@ -6961,7 +7183,7 @@ function VerifyStep(props) {
|
|
|
6961
7183
|
setIsLoading(false);
|
|
6962
7184
|
}
|
|
6963
7185
|
});
|
|
6964
|
-
const { mutate: onResendCode, isPending: isCodeResending } =
|
|
7186
|
+
const { mutate: onResendCode, isPending: isCodeResending } = useMutation5({
|
|
6965
7187
|
mutationFn: async () => {
|
|
6966
7188
|
setVerificationError("");
|
|
6967
7189
|
setIsLoading(true);
|
|
@@ -7039,7 +7261,7 @@ var AuthMenu = () => {
|
|
|
7039
7261
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7040
7262
|
const page = useLayoutDataStore((st) => st.page);
|
|
7041
7263
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7042
|
-
|
|
7264
|
+
useEffect9(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
7043
7265
|
const {
|
|
7044
7266
|
step,
|
|
7045
7267
|
setStep,
|
|
@@ -7050,7 +7272,7 @@ var AuthMenu = () => {
|
|
|
7050
7272
|
setFailedMessage,
|
|
7051
7273
|
setCodeSendError
|
|
7052
7274
|
} = useAuthStore();
|
|
7053
|
-
|
|
7275
|
+
useEffect9(() => {
|
|
7054
7276
|
if (page !== "auth" /* AUTH */) {
|
|
7055
7277
|
setStep("signin");
|
|
7056
7278
|
setEmail("");
|
|
@@ -7215,9 +7437,9 @@ function RampnowIcon() {
|
|
|
7215
7437
|
}
|
|
7216
7438
|
|
|
7217
7439
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7218
|
-
import { useMutation as
|
|
7440
|
+
import { useMutation as useMutation6, useQuery as useQuery3, useQueryClient } from "@tanstack/react-query";
|
|
7219
7441
|
import { DollarSign, LoaderIcon } from "lucide-react";
|
|
7220
|
-
import { useEffect as
|
|
7442
|
+
import { useEffect as useEffect11, useRef as useRef6 } from "react";
|
|
7221
7443
|
|
|
7222
7444
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7223
7445
|
import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
@@ -7258,11 +7480,10 @@ var QUERY_KEYS2 = {
|
|
|
7258
7480
|
};
|
|
7259
7481
|
|
|
7260
7482
|
// src/internal/components/BuyMenu/binance/api.ts
|
|
7261
|
-
var
|
|
7262
|
-
var API_DOMAIN = (true ? "" : FALLBACK) || FALLBACK;
|
|
7483
|
+
var API_DOMAIN2 = "https://api.lumiapassport.com/on-ramp";
|
|
7263
7484
|
async function getLumiaNetworkQuery() {
|
|
7264
7485
|
const auth = getBearer();
|
|
7265
|
-
const response = await fetch(`${
|
|
7486
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/networks`, {
|
|
7266
7487
|
method: "POST",
|
|
7267
7488
|
headers: {
|
|
7268
7489
|
"Content-Type": "application/json",
|
|
@@ -7282,7 +7503,7 @@ async function getLumiaNetworkQuery() {
|
|
|
7282
7503
|
}
|
|
7283
7504
|
async function getPaymentMethodsQuery(payload) {
|
|
7284
7505
|
const auth = getBearer();
|
|
7285
|
-
const response = await fetch(`${
|
|
7506
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/modes`, {
|
|
7286
7507
|
method: "POST",
|
|
7287
7508
|
headers: {
|
|
7288
7509
|
"Content-Type": "application/json",
|
|
@@ -7301,7 +7522,7 @@ async function getPaymentMethodsQuery(payload) {
|
|
|
7301
7522
|
}
|
|
7302
7523
|
async function getQuoteQuery(payload) {
|
|
7303
7524
|
const auth = getBearer();
|
|
7304
|
-
const response = await fetch(`${
|
|
7525
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/quote`, {
|
|
7305
7526
|
method: "POST",
|
|
7306
7527
|
headers: {
|
|
7307
7528
|
"Content-Type": "application/json",
|
|
@@ -7317,7 +7538,7 @@ async function getQuoteQuery(payload) {
|
|
|
7317
7538
|
}
|
|
7318
7539
|
async function createPreorderMutation(payload) {
|
|
7319
7540
|
const auth = getBearer();
|
|
7320
|
-
const response = await fetch(`${
|
|
7541
|
+
const response = await fetch(`${API_DOMAIN2}/api/binance/pre-order`, {
|
|
7321
7542
|
method: "POST",
|
|
7322
7543
|
headers: {
|
|
7323
7544
|
"Content-Type": "application/json",
|
|
@@ -7333,7 +7554,7 @@ async function createPreorderMutation(payload) {
|
|
|
7333
7554
|
}
|
|
7334
7555
|
|
|
7335
7556
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7336
|
-
import { useEffect as
|
|
7557
|
+
import { useEffect as useEffect10 } from "react";
|
|
7337
7558
|
|
|
7338
7559
|
// src/internal/components/BuyMenu/binance/utils.ts
|
|
7339
7560
|
function getPayMethodID(pm) {
|
|
@@ -7353,7 +7574,7 @@ function handleErrors(errors) {
|
|
|
7353
7574
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7354
7575
|
var useQueriesErrorHandler = (errors, stateUpdater) => {
|
|
7355
7576
|
const { error: errorTitle, message: errorMessage } = handleErrors(errors);
|
|
7356
|
-
|
|
7577
|
+
useEffect10(() => {
|
|
7357
7578
|
if (!errorTitle && !errorMessage) return;
|
|
7358
7579
|
console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
|
|
7359
7580
|
stateUpdater(1);
|
|
@@ -7383,7 +7604,7 @@ function Binance(props) {
|
|
|
7383
7604
|
data: lumiaNetwork,
|
|
7384
7605
|
isLoading: isLumiaNetworkLoading,
|
|
7385
7606
|
error: lumiaNetworkError
|
|
7386
|
-
} =
|
|
7607
|
+
} = useQuery3({
|
|
7387
7608
|
retry: false,
|
|
7388
7609
|
enabled: !!walletAddress,
|
|
7389
7610
|
queryKey: [QUERY_KEYS2.binanceNetworksQuery, walletAddress],
|
|
@@ -7394,7 +7615,7 @@ function Binance(props) {
|
|
|
7394
7615
|
data: paymentModes = null,
|
|
7395
7616
|
isLoading: isPaymentModesLoading,
|
|
7396
7617
|
error: paymentMethodsError
|
|
7397
|
-
} =
|
|
7618
|
+
} = useQuery3({
|
|
7398
7619
|
retry: false,
|
|
7399
7620
|
enabled: !!isLumiaAvailable && !!walletAddress,
|
|
7400
7621
|
// && srcQueryAmount > 0,
|
|
@@ -7402,19 +7623,19 @@ function Binance(props) {
|
|
|
7402
7623
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7403
7624
|
});
|
|
7404
7625
|
const lastLoadedPaymentModes = useRef6([]);
|
|
7405
|
-
|
|
7626
|
+
useEffect11(() => {
|
|
7406
7627
|
if (!paymentModes?.length) return;
|
|
7407
7628
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
7408
7629
|
lastLoadedPaymentModes.current = paymentModes;
|
|
7409
7630
|
}, [paymentModes]);
|
|
7410
7631
|
const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
|
|
7411
7632
|
const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
|
|
7412
|
-
|
|
7633
|
+
useEffect11(() => setMinAmount(minimum), [minimum]);
|
|
7413
7634
|
const {
|
|
7414
7635
|
data: quoteData = null,
|
|
7415
7636
|
isLoading: isQuoteDataLoading,
|
|
7416
7637
|
error: quoteError
|
|
7417
|
-
} =
|
|
7638
|
+
} = useQuery3({
|
|
7418
7639
|
retry: false,
|
|
7419
7640
|
enabled: !!walletAddress && srcQueryAmount > 0 && minimum > 0 && srcQueryAmount >= minimum,
|
|
7420
7641
|
queryKey: [QUERY_KEYS2.binanceQuote, walletAddress, selectedPaymentMode, srcQueryAmount],
|
|
@@ -7430,7 +7651,7 @@ function Binance(props) {
|
|
|
7430
7651
|
[lumiaNetworkError, paymentMethodsError, quoteError],
|
|
7431
7652
|
setSrcInputAmount
|
|
7432
7653
|
);
|
|
7433
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } =
|
|
7654
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = useMutation6({
|
|
7434
7655
|
mutationFn: async () => {
|
|
7435
7656
|
setRedirecting(true);
|
|
7436
7657
|
const returnUrl = window.location.href.split("?")[0];
|
|
@@ -7454,7 +7675,7 @@ function Binance(props) {
|
|
|
7454
7675
|
setRedirecting(false);
|
|
7455
7676
|
}
|
|
7456
7677
|
});
|
|
7457
|
-
|
|
7678
|
+
useEffect11(() => {
|
|
7458
7679
|
return () => {
|
|
7459
7680
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceNetworksQuery] });
|
|
7460
7681
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binancePaymentModes] });
|
|
@@ -7516,24 +7737,24 @@ function Binance(props) {
|
|
|
7516
7737
|
}
|
|
7517
7738
|
|
|
7518
7739
|
// src/internal/components/BuyMenu/rampnow/Rampnow.tsx
|
|
7519
|
-
import { useMutation as
|
|
7740
|
+
import { useMutation as useMutation7, useQuery as useQuery4, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
|
|
7520
7741
|
import { DollarSign as DollarSign2, LoaderIcon as LoaderIcon2 } from "lucide-react";
|
|
7521
|
-
import { useEffect as
|
|
7742
|
+
import { useEffect as useEffect12 } from "react";
|
|
7522
7743
|
|
|
7523
7744
|
// src/internal/components/BuyMenu/rampnow/api.ts
|
|
7524
|
-
var
|
|
7525
|
-
var API_DOMAIN2 = (true ? "" : FALLBACK2) || FALLBACK2;
|
|
7745
|
+
var API_DOMAIN3 = "https://api.lumiapassport.com/on-ramp";
|
|
7526
7746
|
async function getRampnowConfigQuery() {
|
|
7527
7747
|
const auth = getBearer();
|
|
7528
|
-
const response = await fetch(`${
|
|
7748
|
+
const response = await fetch(`${API_DOMAIN3}/api/rampnow/cfg`, {
|
|
7529
7749
|
method: "GET",
|
|
7530
7750
|
headers: { ...auth && { Authorization: auth } }
|
|
7531
7751
|
});
|
|
7532
|
-
|
|
7752
|
+
const data = await response.json();
|
|
7753
|
+
return data;
|
|
7533
7754
|
}
|
|
7534
7755
|
async function getRampOrderQuoteQuery(payload) {
|
|
7535
7756
|
const auth = getBearer();
|
|
7536
|
-
const response = await fetch(`${
|
|
7757
|
+
const response = await fetch(`${API_DOMAIN3}/api/rampnow/quote`, {
|
|
7537
7758
|
method: "POST",
|
|
7538
7759
|
headers: {
|
|
7539
7760
|
"Content-Type": "application/json",
|
|
@@ -7583,7 +7804,7 @@ function Rampnow(props) {
|
|
|
7583
7804
|
setMinAmount
|
|
7584
7805
|
} = control;
|
|
7585
7806
|
const qc = useQueryClient2();
|
|
7586
|
-
|
|
7807
|
+
useEffect12(() => {
|
|
7587
7808
|
setMinAmount(MINIMUM_RAMP_AMOUNT);
|
|
7588
7809
|
setPaymentMode(PAYMENT_MODES[0].id);
|
|
7589
7810
|
}, []);
|
|
@@ -7591,7 +7812,7 @@ function Rampnow(props) {
|
|
|
7591
7812
|
data: configData,
|
|
7592
7813
|
isLoading: isConfigLoading,
|
|
7593
7814
|
error: configError
|
|
7594
|
-
} =
|
|
7815
|
+
} = useQuery4({
|
|
7595
7816
|
retry: false,
|
|
7596
7817
|
enabled: !!walletAddress,
|
|
7597
7818
|
queryKey: [QUERY_KEYS2.getRampNowConfig, walletAddress],
|
|
@@ -7601,7 +7822,7 @@ function Rampnow(props) {
|
|
|
7601
7822
|
data: quoteData,
|
|
7602
7823
|
isLoading: isQuoteDataLoading,
|
|
7603
7824
|
error: quoteError
|
|
7604
|
-
} =
|
|
7825
|
+
} = useQuery4({
|
|
7605
7826
|
retry: false,
|
|
7606
7827
|
enabled: !!configData && !!walletAddress && !!paymentMode && srcQueryAmount >= MINIMUM_RAMP_AMOUNT,
|
|
7607
7828
|
queryKey: [QUERY_KEYS2.getRampNowQuote, walletAddress, srcQueryAmount, paymentMode],
|
|
@@ -7611,7 +7832,7 @@ function Rampnow(props) {
|
|
|
7611
7832
|
paymentMode
|
|
7612
7833
|
})
|
|
7613
7834
|
});
|
|
7614
|
-
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } =
|
|
7835
|
+
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = useMutation7({
|
|
7615
7836
|
mutationFn: async () => {
|
|
7616
7837
|
if (!configData?.apiKey?.length || !configData?.orderUrl?.length) {
|
|
7617
7838
|
throw new Error("RampNow order service is not available");
|
|
@@ -7640,7 +7861,7 @@ function Rampnow(props) {
|
|
|
7640
7861
|
console.error("Create CheckoutOrder failed:", err);
|
|
7641
7862
|
}
|
|
7642
7863
|
});
|
|
7643
|
-
|
|
7864
|
+
useEffect12(() => {
|
|
7644
7865
|
return () => {
|
|
7645
7866
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowConfig] });
|
|
7646
7867
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowQuote] });
|
|
@@ -7722,7 +7943,7 @@ var RAMP_PROVIDERS = {
|
|
|
7722
7943
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
7723
7944
|
|
|
7724
7945
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7725
|
-
import { useCallback as useCallback7, useEffect as
|
|
7946
|
+
import { useCallback as useCallback7, useEffect as useEffect13, useRef as useRef7, useState as useState6 } from "react";
|
|
7726
7947
|
|
|
7727
7948
|
// src/internal/utils/debounce.ts
|
|
7728
7949
|
function debounce(func, waitFor) {
|
|
@@ -7736,13 +7957,13 @@ function debounce(func, waitFor) {
|
|
|
7736
7957
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7737
7958
|
var ON_INPUT_QUERY_DELAY = 2e3;
|
|
7738
7959
|
var useSelectables = () => {
|
|
7739
|
-
const [redirecting, setRedirecting] =
|
|
7740
|
-
const [rampProvider, setrRampProvider] =
|
|
7741
|
-
const [minAmount, setMinAmount] =
|
|
7960
|
+
const [redirecting, setRedirecting] = useState6(false);
|
|
7961
|
+
const [rampProvider, setrRampProvider] = useState6("binance");
|
|
7962
|
+
const [minAmount, setMinAmount] = useState6(0);
|
|
7742
7963
|
const inputRef = useRef7(null);
|
|
7743
|
-
const [srcQueryAmount, setSrcQueryAmount] =
|
|
7744
|
-
const [srcInputAmount, setSrcInputAmount] =
|
|
7745
|
-
const [paymentMode, setPaymentMode] =
|
|
7964
|
+
const [srcQueryAmount, setSrcQueryAmount] = useState6(0);
|
|
7965
|
+
const [srcInputAmount, setSrcInputAmount] = useState6(0);
|
|
7966
|
+
const [paymentMode, setPaymentMode] = useState6(null);
|
|
7746
7967
|
const setQueryAmountDebounced = useCallback7(
|
|
7747
7968
|
debounce((inputAmount) => {
|
|
7748
7969
|
const checkedValue = Math.max(inputAmount, minAmount);
|
|
@@ -7751,7 +7972,7 @@ var useSelectables = () => {
|
|
|
7751
7972
|
}, ON_INPUT_QUERY_DELAY),
|
|
7752
7973
|
[minAmount]
|
|
7753
7974
|
);
|
|
7754
|
-
|
|
7975
|
+
useEffect13(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
|
|
7755
7976
|
return {
|
|
7756
7977
|
inputRef,
|
|
7757
7978
|
redirecting,
|
|
@@ -7814,7 +8035,7 @@ import {
|
|
|
7814
8035
|
Loader as Loader6,
|
|
7815
8036
|
Lock
|
|
7816
8037
|
} from "lucide-react";
|
|
7817
|
-
import React8, { useEffect as
|
|
8038
|
+
import React8, { useEffect as useEffect14 } from "react";
|
|
7818
8039
|
init_iframe_manager();
|
|
7819
8040
|
|
|
7820
8041
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -7849,7 +8070,7 @@ function KeyshareBackupMenu() {
|
|
|
7849
8070
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7850
8071
|
const userId = session?.mpcUserId || "";
|
|
7851
8072
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
7852
|
-
|
|
8073
|
+
useEffect14(() => {
|
|
7853
8074
|
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
7854
8075
|
}, [userId, setPage]);
|
|
7855
8076
|
const [backupStatus, setBackupStatus] = React8.useState({
|
|
@@ -7880,7 +8101,7 @@ function KeyshareBackupMenu() {
|
|
|
7880
8101
|
return null;
|
|
7881
8102
|
}
|
|
7882
8103
|
}, []);
|
|
7883
|
-
|
|
8104
|
+
useEffect14(() => {
|
|
7884
8105
|
const loadCloudProviders = async () => {
|
|
7885
8106
|
try {
|
|
7886
8107
|
const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
|
|
@@ -7909,7 +8130,7 @@ function KeyshareBackupMenu() {
|
|
|
7909
8130
|
console.error("[KeyshareBackup] Failed to get backup status:", error2);
|
|
7910
8131
|
}
|
|
7911
8132
|
}, [iframeManager, userId]);
|
|
7912
|
-
|
|
8133
|
+
useEffect14(() => {
|
|
7913
8134
|
refreshStatus();
|
|
7914
8135
|
}, [refreshStatus]);
|
|
7915
8136
|
const handleBackup = async (method) => {
|
|
@@ -8141,20 +8362,20 @@ function KeyshareBackupMenu() {
|
|
|
8141
8362
|
}
|
|
8142
8363
|
|
|
8143
8364
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8144
|
-
import { useMutation as
|
|
8365
|
+
import { useMutation as useMutation8 } from "@tanstack/react-query";
|
|
8145
8366
|
import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle22, Loader as Loader9, LogOut as LogOut2 } from "lucide-react";
|
|
8146
|
-
import React9, { useCallback as useCallback8, useEffect as
|
|
8367
|
+
import React9, { useCallback as useCallback8, useEffect as useEffect15 } from "react";
|
|
8147
8368
|
init_vaultClient();
|
|
8148
8369
|
|
|
8149
8370
|
// src/internal/components/KeyshareRestoreMenu/NoBackupFound.tsx
|
|
8150
8371
|
import { AlertCircle as AlertCircle2, Loader as Loader7, RefreshCcw, Upload } from "lucide-react";
|
|
8151
|
-
import { Fragment as Fragment6, useState as
|
|
8372
|
+
import { Fragment as Fragment6, useState as useState7 } from "react";
|
|
8152
8373
|
import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
8153
8374
|
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.`;
|
|
8154
8375
|
var ACCOUNT_FILE_RECOVERY_TEXT = `Try uploading a backup file if you have one saved locally, or create a different new account`;
|
|
8155
8376
|
function NoBackupFound(props) {
|
|
8156
8377
|
const { isLoading, restoreFromFile } = props;
|
|
8157
|
-
const [restoreFile, setRestoreFile] =
|
|
8378
|
+
const [restoreFile, setRestoreFile] = useState7(null);
|
|
8158
8379
|
return /* @__PURE__ */ jsxs27(Fragment6, { children: [
|
|
8159
8380
|
/* @__PURE__ */ jsxs27(Highlight, { type: "error", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
8160
8381
|
/* @__PURE__ */ jsx36(AlertCircle2, { className: "h-4 w-4 flex-0" }),
|
|
@@ -8327,7 +8548,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8327
8548
|
} = useLumiaPassportConfig();
|
|
8328
8549
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8329
8550
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8330
|
-
|
|
8551
|
+
useEffect15(() => setIsDialogForced(true), []);
|
|
8331
8552
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
8332
8553
|
const [error, setError] = React9.useState(null);
|
|
8333
8554
|
const [success, setSuccess] = React9.useState(null);
|
|
@@ -8436,7 +8657,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8436
8657
|
callbacks,
|
|
8437
8658
|
config.projectId
|
|
8438
8659
|
]);
|
|
8439
|
-
|
|
8660
|
+
useEffect15(() => {
|
|
8440
8661
|
const checkBackupAvailability = async () => {
|
|
8441
8662
|
try {
|
|
8442
8663
|
setCheckingBackup(true);
|
|
@@ -8454,7 +8675,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8454
8675
|
};
|
|
8455
8676
|
checkBackupAvailability();
|
|
8456
8677
|
}, [recoveryUserId]);
|
|
8457
|
-
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } =
|
|
8678
|
+
const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = useMutation8({
|
|
8458
8679
|
mutationFn: async () => {
|
|
8459
8680
|
setError(null);
|
|
8460
8681
|
setSuccess(null);
|
|
@@ -8489,7 +8710,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8489
8710
|
setError(errorMsg);
|
|
8490
8711
|
}
|
|
8491
8712
|
});
|
|
8492
|
-
const { mutate: restoreFromFile, isPending: isRestoringFromFile } =
|
|
8713
|
+
const { mutate: restoreFromFile, isPending: isRestoringFromFile } = useMutation8({
|
|
8493
8714
|
mutationFn: async () => {
|
|
8494
8715
|
if (!restoreFile) {
|
|
8495
8716
|
throw new Error("Please select a backup file");
|
|
@@ -8523,7 +8744,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8523
8744
|
setError(errorMsg);
|
|
8524
8745
|
}
|
|
8525
8746
|
});
|
|
8526
|
-
const { mutate: disconnect, isPending: isDisconnecting } =
|
|
8747
|
+
const { mutate: disconnect, isPending: isDisconnecting } = useMutation8({
|
|
8527
8748
|
mutationFn: async () => {
|
|
8528
8749
|
setError(null);
|
|
8529
8750
|
setStatus("disconnecting");
|
|
@@ -8605,7 +8826,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8605
8826
|
import { LoaderIcon as LoaderIcon3 } from "lucide-react";
|
|
8606
8827
|
|
|
8607
8828
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8608
|
-
import { useEffect as
|
|
8829
|
+
import { useEffect as useEffect16, useRef as useRef8, useState as useState8 } from "react";
|
|
8609
8830
|
|
|
8610
8831
|
// src/internal/components/KYC/api/sumsub.ts
|
|
8611
8832
|
init_httpClient();
|
|
@@ -8729,12 +8950,12 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8729
8950
|
} = useLumiaPassportConfig();
|
|
8730
8951
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8731
8952
|
const iframeRef = useRef8(null);
|
|
8732
|
-
const [isLoading, setIsLoading] =
|
|
8733
|
-
const [error, setError] =
|
|
8734
|
-
const [height, setHeight] =
|
|
8735
|
-
const [status, setStatus] =
|
|
8953
|
+
const [isLoading, setIsLoading] = useState8(true);
|
|
8954
|
+
const [error, setError] = useState8(null);
|
|
8955
|
+
const [height, setHeight] = useState8(0);
|
|
8956
|
+
const [status, setStatus] = useState8("");
|
|
8736
8957
|
const levelName = config.kyc?.options?.levelName;
|
|
8737
|
-
|
|
8958
|
+
useEffect16(() => {
|
|
8738
8959
|
setError(null);
|
|
8739
8960
|
setIsLoading(true);
|
|
8740
8961
|
setStatus("Preparing verification...");
|
|
@@ -8841,7 +9062,7 @@ function KycMenu() {
|
|
|
8841
9062
|
|
|
8842
9063
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
8843
9064
|
import { ChevronLeft, ChevronRight as ChevronRight2, DollarSign as DollarSign3, Wallet2 as Wallet23 } from "lucide-react";
|
|
8844
|
-
import { useEffect as
|
|
9065
|
+
import { useEffect as useEffect17 } from "react";
|
|
8845
9066
|
|
|
8846
9067
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
8847
9068
|
import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-motion";
|
|
@@ -8897,7 +9118,7 @@ function MainMenu() {
|
|
|
8897
9118
|
const address = useLumiaPassportSession((st) => st.address);
|
|
8898
9119
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8899
9120
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
8900
|
-
|
|
9121
|
+
useEffect17(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
8901
9122
|
return /* @__PURE__ */ jsxs33("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
8902
9123
|
/* @__PURE__ */ jsx43("div", { className: "grid grid-cols-4 gap-[var(--l-pass-gap)]", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ jsxs33(
|
|
8903
9124
|
Button,
|
|
@@ -8924,7 +9145,7 @@ import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft7, Loader as Loa
|
|
|
8924
9145
|
import { useMemo as useMemo2 } from "react";
|
|
8925
9146
|
|
|
8926
9147
|
// src/modules/linkedProfiles.ts
|
|
8927
|
-
import { useQuery as
|
|
9148
|
+
import { useQuery as useQuery5, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
8928
9149
|
import { useCallback as useCallback9 } from "react";
|
|
8929
9150
|
init_auth();
|
|
8930
9151
|
init_common();
|
|
@@ -8951,7 +9172,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
8951
9172
|
data,
|
|
8952
9173
|
isFetching: isLoading,
|
|
8953
9174
|
error
|
|
8954
|
-
} =
|
|
9175
|
+
} = useQuery5({
|
|
8955
9176
|
retry: false,
|
|
8956
9177
|
enabled: !!address,
|
|
8957
9178
|
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
@@ -8971,7 +9192,7 @@ init_passkey2();
|
|
|
8971
9192
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8972
9193
|
init_lumiaPassport();
|
|
8973
9194
|
init_projectId();
|
|
8974
|
-
import { useMutation as
|
|
9195
|
+
import { useMutation as useMutation9 } from "@tanstack/react-query";
|
|
8975
9196
|
import { ChevronRight as ChevronRight3, Loader as Loader10, Mail as Mail4 } from "lucide-react";
|
|
8976
9197
|
|
|
8977
9198
|
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
@@ -9011,7 +9232,7 @@ function EmailForm() {
|
|
|
9011
9232
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
9012
9233
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9013
9234
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
9014
|
-
const { mutate: onSendVerificationCode } =
|
|
9235
|
+
const { mutate: onSendVerificationCode } = useMutation9({
|
|
9015
9236
|
mutationFn: async () => {
|
|
9016
9237
|
if (!email) return;
|
|
9017
9238
|
setIsLoading(true);
|
|
@@ -9089,12 +9310,12 @@ function EmailForm() {
|
|
|
9089
9310
|
|
|
9090
9311
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9091
9312
|
init_common();
|
|
9092
|
-
import { useQuery as
|
|
9313
|
+
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
9093
9314
|
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9094
9315
|
function useProvidersList() {
|
|
9095
9316
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9096
9317
|
const page = useLayoutDataStore((st) => st.page);
|
|
9097
|
-
return
|
|
9318
|
+
return useQuery6({
|
|
9098
9319
|
retry: false,
|
|
9099
9320
|
enabled: !!address && page === "manage-wallet" /* MANAGE_WALLET */,
|
|
9100
9321
|
queryKey: [PROVIDERS_QUERY_KEY, address],
|
|
@@ -9104,10 +9325,10 @@ function useProvidersList() {
|
|
|
9104
9325
|
|
|
9105
9326
|
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9106
9327
|
init_email();
|
|
9107
|
-
import { useMutation as
|
|
9328
|
+
import { useMutation as useMutation10 } from "@tanstack/react-query";
|
|
9108
9329
|
function useSendVerificationCode() {
|
|
9109
9330
|
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9110
|
-
return
|
|
9331
|
+
return useMutation10({
|
|
9111
9332
|
mutationFn: async (email) => {
|
|
9112
9333
|
if (!email) {
|
|
9113
9334
|
throw new Error("Email is required");
|
|
@@ -9130,7 +9351,7 @@ function useSendVerificationCode() {
|
|
|
9130
9351
|
}
|
|
9131
9352
|
|
|
9132
9353
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9133
|
-
import { useMutation as
|
|
9354
|
+
import { useMutation as useMutation11, useQueryClient as useQueryClient4 } from "@tanstack/react-query";
|
|
9134
9355
|
init_email();
|
|
9135
9356
|
function useVerifyCode() {
|
|
9136
9357
|
const { callbacks } = useLumiaPassportConfig();
|
|
@@ -9148,7 +9369,7 @@ function useVerifyCode() {
|
|
|
9148
9369
|
setVerificationError,
|
|
9149
9370
|
setEmailCodeSentError
|
|
9150
9371
|
} = useManageWalletStore();
|
|
9151
|
-
return
|
|
9372
|
+
return useMutation11({
|
|
9152
9373
|
mutationFn: async (codeToVerify) => {
|
|
9153
9374
|
const code = codeToVerify ?? emailCode;
|
|
9154
9375
|
if (!code) {
|
|
@@ -9359,7 +9580,7 @@ function EmailNotConnectedWarning() {
|
|
|
9359
9580
|
|
|
9360
9581
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9361
9582
|
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
9362
|
-
import React10, { useEffect as
|
|
9583
|
+
import React10, { useEffect as useEffect18 } from "react";
|
|
9363
9584
|
init_auth();
|
|
9364
9585
|
function useLinkSocial() {
|
|
9365
9586
|
const qc = useQueryClient6();
|
|
@@ -9422,7 +9643,7 @@ function useLinkSocial() {
|
|
|
9422
9643
|
[config.social?.providers, callbacks]
|
|
9423
9644
|
);
|
|
9424
9645
|
const [socialLinkStarted, setSocialLinkStarted] = React10.useState(false);
|
|
9425
|
-
|
|
9646
|
+
useEffect18(() => {
|
|
9426
9647
|
const key = providerType?.toLowerCase();
|
|
9427
9648
|
if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
|
|
9428
9649
|
if (!linkIsLoading && !socialLinkStarted) {
|
|
@@ -9437,7 +9658,7 @@ function useLinkSocial() {
|
|
|
9437
9658
|
|
|
9438
9659
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9439
9660
|
import { useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
9440
|
-
import { useCallback as useCallback10, useEffect as
|
|
9661
|
+
import { useCallback as useCallback10, useEffect as useEffect19, useState as useState9 } from "react";
|
|
9441
9662
|
init_telegram2();
|
|
9442
9663
|
function useLinkTelegram() {
|
|
9443
9664
|
const {
|
|
@@ -9490,14 +9711,14 @@ function useLinkTelegram() {
|
|
|
9490
9711
|
setLinkIsLoading(false);
|
|
9491
9712
|
}
|
|
9492
9713
|
}, [config.social?.providers, callbacks]);
|
|
9493
|
-
const [telegramLinkStarted, setTelegramLinkStarted] =
|
|
9494
|
-
|
|
9714
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = useState9(false);
|
|
9715
|
+
useEffect19(() => {
|
|
9495
9716
|
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9496
9717
|
setTelegramLinkStarted(true);
|
|
9497
9718
|
handleLinkTelegram();
|
|
9498
9719
|
}
|
|
9499
9720
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9500
|
-
|
|
9721
|
+
useEffect19(() => {
|
|
9501
9722
|
if (providerType !== "telegram") {
|
|
9502
9723
|
setTelegramLinkStarted(false);
|
|
9503
9724
|
}
|
|
@@ -9699,9 +9920,9 @@ function ManageWalletMenu() {
|
|
|
9699
9920
|
}
|
|
9700
9921
|
|
|
9701
9922
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9702
|
-
import { useMutation as
|
|
9923
|
+
import { useMutation as useMutation12, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
9703
9924
|
import { Key as Key7, Loader as Loader12 } from "lucide-react";
|
|
9704
|
-
import { useState as
|
|
9925
|
+
import { useState as useState10 } from "react";
|
|
9705
9926
|
init_auth();
|
|
9706
9927
|
import { jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
9707
9928
|
function UnlinkProviderMenu() {
|
|
@@ -9710,8 +9931,8 @@ function UnlinkProviderMenu() {
|
|
|
9710
9931
|
const { callbacks } = useLumiaPassportConfig();
|
|
9711
9932
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9712
9933
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9713
|
-
const [confirmInput, setConfirmInput] =
|
|
9714
|
-
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } =
|
|
9934
|
+
const [confirmInput, setConfirmInput] = useState10("");
|
|
9935
|
+
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = useMutation12({
|
|
9715
9936
|
mutationFn: async () => {
|
|
9716
9937
|
if (!confirmUnlink) {
|
|
9717
9938
|
throw new Error("No provider to unlink");
|
|
@@ -9785,12 +10006,12 @@ function UnlinkProviderMenu() {
|
|
|
9785
10006
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9786
10007
|
import { useQueryClient as useQueryClient10 } from "@tanstack/react-query";
|
|
9787
10008
|
import { ArrowLeft as ArrowLeft8, Gem, Loader as Loader14, RefreshCw } from "lucide-react";
|
|
9788
|
-
import { useCallback as useCallback11, useEffect as
|
|
10009
|
+
import { useCallback as useCallback11, useEffect as useEffect20, useRef as useRef9 } from "react";
|
|
9789
10010
|
|
|
9790
10011
|
// src/modules/assets.ts
|
|
9791
10012
|
init_base();
|
|
9792
10013
|
import React11 from "react";
|
|
9793
|
-
import { useBalance, useReadContract, useReadContracts } from "wagmi";
|
|
10014
|
+
import { useBalance as useBalance2, useReadContract, useReadContracts } from "wagmi";
|
|
9794
10015
|
import { formatUnits, erc20Abi } from "viem";
|
|
9795
10016
|
var COMMON_TOKENS = [
|
|
9796
10017
|
// Add real token addresses here when available
|
|
@@ -9803,7 +10024,7 @@ var COMMON_TOKENS = [
|
|
|
9803
10024
|
// }
|
|
9804
10025
|
];
|
|
9805
10026
|
function useAssets(address) {
|
|
9806
|
-
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } =
|
|
10027
|
+
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = useBalance2({
|
|
9807
10028
|
address,
|
|
9808
10029
|
chainId: lumiaBeam.id,
|
|
9809
10030
|
query: {
|
|
@@ -9950,12 +10171,11 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
9950
10171
|
|
|
9951
10172
|
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
9952
10173
|
init_base();
|
|
9953
|
-
import { useQuery as
|
|
10174
|
+
import { useQuery as useQuery7, useQueryClient as useQueryClient9 } from "@tanstack/react-query";
|
|
9954
10175
|
import { Loader as Loader13 } from "lucide-react";
|
|
9955
10176
|
import { Fragment as Fragment11, jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
9956
10177
|
var price16 = Intl.NumberFormat("en-US", { minimumFractionDigits: 16, maximumFractionDigits: 16 });
|
|
9957
10178
|
function formatValue(price) {
|
|
9958
|
-
console.log("[---PRICE---]", price);
|
|
9959
10179
|
if (!price) return /* @__PURE__ */ jsx50(Fragment11, { children: `0.00` });
|
|
9960
10180
|
if (price < 0.01) {
|
|
9961
10181
|
const strigified = price16.format(price);
|
|
@@ -9984,13 +10204,14 @@ function PortfolioItem(props) {
|
|
|
9984
10204
|
const qc = useQueryClient9();
|
|
9985
10205
|
const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
|
|
9986
10206
|
const projectAssetBalance = !!balanceQueryKey ? qc.getQueryData(balanceQueryKey) : null;
|
|
9987
|
-
const { data: assetRate, isLoading: isRateLoading } =
|
|
10207
|
+
const { data: assetRate, isLoading: isRateLoading } = useQuery7({
|
|
9988
10208
|
retry: false,
|
|
9989
10209
|
staleTime: 4 * 60 * 1e3,
|
|
9990
10210
|
enabled: !!address && !!asset.symbol && !isProjectAsset,
|
|
9991
10211
|
queryKey: [ASSETS_RATES_QUERY_KEY, address, asset.symbol],
|
|
9992
10212
|
queryFn: async () => await getAssetRate(asset.symbol)
|
|
9993
10213
|
});
|
|
10214
|
+
const renderBalance = isProjectAsset && projectAssetBalance?.fiatFormatted ? projectAssetBalance.fiatFormatted : asset.formattedBalance;
|
|
9994
10215
|
return /* @__PURE__ */ jsxs40(
|
|
9995
10216
|
"div",
|
|
9996
10217
|
{
|
|
@@ -10015,11 +10236,11 @@ function PortfolioItem(props) {
|
|
|
10015
10236
|
/* @__PURE__ */ jsxs40("div", { className: "w-full flex-1", children: [
|
|
10016
10237
|
/* @__PURE__ */ jsxs40("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
10017
10238
|
/* @__PURE__ */ jsx50("span", { children: asset.name }),
|
|
10018
|
-
/* @__PURE__ */ jsx50("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10239
|
+
!isProjectAsset && /* @__PURE__ */ jsx50("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10019
10240
|
] }),
|
|
10020
10241
|
/* @__PURE__ */ jsxs40("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: [
|
|
10021
10242
|
/* @__PURE__ */ jsxs40("span", { children: [
|
|
10022
|
-
/* @__PURE__ */ jsx50("span", { children: formatValue(Number(
|
|
10243
|
+
/* @__PURE__ */ jsx50("span", { children: formatValue(Number(renderBalance)) }),
|
|
10023
10244
|
/* @__PURE__ */ jsx50("span", { children: " " + asset.symbol })
|
|
10024
10245
|
] }),
|
|
10025
10246
|
isRateLoading && /* @__PURE__ */ jsx50(Loader13, { className: "h-4 w-4 animate-spin" }),
|
|
@@ -10041,7 +10262,7 @@ function PortfolioItem(props) {
|
|
|
10041
10262
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10042
10263
|
import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10043
10264
|
function PortfolioMenu() {
|
|
10044
|
-
const { assets:
|
|
10265
|
+
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10045
10266
|
const qc = useQueryClient10();
|
|
10046
10267
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10047
10268
|
const assetsContainerListRef = useRef9(null);
|
|
@@ -10049,10 +10270,10 @@ function PortfolioMenu() {
|
|
|
10049
10270
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10050
10271
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10051
10272
|
const refreshAllAssetsBalances = useCallback11(() => {
|
|
10052
|
-
Promise.all(
|
|
10273
|
+
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10053
10274
|
refreshBalances();
|
|
10054
|
-
}, [qc,
|
|
10055
|
-
|
|
10275
|
+
}, [qc, projectAssets, refreshBalances]);
|
|
10276
|
+
useEffect20(() => {
|
|
10056
10277
|
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10057
10278
|
if (assetsContainerListRef.current) {
|
|
10058
10279
|
assetsContainerListRef.current.style.setProperty(
|
|
@@ -10099,7 +10320,7 @@ function PortfolioMenu() {
|
|
|
10099
10320
|
style: { borderTop: "1px solid var(--l-pass-list-bd)", borderBottom: "1px solid var(--l-pass-list-bd)" },
|
|
10100
10321
|
className: "list-scrollbar-y relative",
|
|
10101
10322
|
children: /* @__PURE__ */ jsxs41("div", { ref: assetsListRef, className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: [
|
|
10102
|
-
|
|
10323
|
+
projectAssets.map((asset, index) => /* @__PURE__ */ jsx51(
|
|
10103
10324
|
PortfolioItem,
|
|
10104
10325
|
{
|
|
10105
10326
|
isProjectAsset: true,
|
|
@@ -10139,7 +10360,7 @@ import {
|
|
|
10139
10360
|
Shield,
|
|
10140
10361
|
Trash2 as Trash22
|
|
10141
10362
|
} from "lucide-react";
|
|
10142
|
-
import { useCallback as useCallback12, useEffect as
|
|
10363
|
+
import { useCallback as useCallback12, useEffect as useEffect21, useState as useState11 } from "react";
|
|
10143
10364
|
init_vaultClient();
|
|
10144
10365
|
import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10145
10366
|
function SecurityMenu() {
|
|
@@ -10149,17 +10370,17 @@ function SecurityMenu() {
|
|
|
10149
10370
|
const userId = jwtTokenManager2.getUserId();
|
|
10150
10371
|
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
10151
10372
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10152
|
-
const [isRefreshing, setIsRefreshing] =
|
|
10153
|
-
const [localInfo, setLocalInfo] =
|
|
10154
|
-
const [recoveryCreatedAt, setRecoveryCreatedAt] =
|
|
10155
|
-
const [recoveryBrowser, setRecoveryBrowser] =
|
|
10156
|
-
const [recoveryUa, setRecoveryUa] =
|
|
10157
|
-
const [recoveryDeviceId, setRecoveryDeviceId] =
|
|
10158
|
-
const [recoveryDeviceName, setRecoveryDeviceName] =
|
|
10159
|
-
const [recoveryCountry, setRecoveryCountry] =
|
|
10160
|
-
const [hasServerBackup, setHasServerBackup] =
|
|
10161
|
-
const [trustedApps, setTrustedApps] =
|
|
10162
|
-
const [appToRemove, setAppToRemove] =
|
|
10373
|
+
const [isRefreshing, setIsRefreshing] = useState11(false);
|
|
10374
|
+
const [localInfo, setLocalInfo] = useState11(null);
|
|
10375
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = useState11(null);
|
|
10376
|
+
const [recoveryBrowser, setRecoveryBrowser] = useState11(null);
|
|
10377
|
+
const [recoveryUa, setRecoveryUa] = useState11(null);
|
|
10378
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = useState11(null);
|
|
10379
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = useState11(null);
|
|
10380
|
+
const [recoveryCountry, setRecoveryCountry] = useState11(null);
|
|
10381
|
+
const [hasServerBackup, setHasServerBackup] = useState11(false);
|
|
10382
|
+
const [trustedApps, setTrustedApps] = useState11([]);
|
|
10383
|
+
const [appToRemove, setAppToRemove] = useState11(null);
|
|
10163
10384
|
const fetchRecovery = useCallback12(async () => {
|
|
10164
10385
|
if (!userId) return;
|
|
10165
10386
|
try {
|
|
@@ -10193,7 +10414,7 @@ function SecurityMenu() {
|
|
|
10193
10414
|
setIsRefreshing(false);
|
|
10194
10415
|
}
|
|
10195
10416
|
}, [userId]);
|
|
10196
|
-
|
|
10417
|
+
useEffect21(() => {
|
|
10197
10418
|
if (open) fetchRecovery();
|
|
10198
10419
|
}, [open, fetchRecovery]);
|
|
10199
10420
|
const parseOS = (ua) => {
|
|
@@ -10385,20 +10606,20 @@ function SecurityMenu() {
|
|
|
10385
10606
|
|
|
10386
10607
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10387
10608
|
import { AlertCircle as AlertCircle5, ArrowLeft as ArrowLeft10, CheckCircle2 as CheckCircle24, Loader as Loader16, Wallet } from "lucide-react";
|
|
10388
|
-
import { useEffect as
|
|
10609
|
+
import { useEffect as useEffect22, useState as useState13 } from "react";
|
|
10389
10610
|
import { isAddress as isAddress2 } from "viem";
|
|
10390
|
-
import { useBalance as
|
|
10611
|
+
import { useBalance as useBalance3 } from "wagmi";
|
|
10391
10612
|
|
|
10392
10613
|
// src/hooks/useSendTransaction.ts
|
|
10393
|
-
import { useCallback as useCallback13, useState as
|
|
10614
|
+
import { useCallback as useCallback13, useState as useState12 } from "react";
|
|
10394
10615
|
import { isAddress, parseEther as parseEther2 } from "viem";
|
|
10395
10616
|
init_account();
|
|
10396
10617
|
function useSendTransaction() {
|
|
10397
10618
|
const session = useLumiaPassportSession((st) => st.session);
|
|
10398
10619
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10399
|
-
const [isLoading, setIsLoading] =
|
|
10400
|
-
const [error, setError] =
|
|
10401
|
-
const [userOpHash, setUserOpHash] =
|
|
10620
|
+
const [isLoading, setIsLoading] = useState12(false);
|
|
10621
|
+
const [error, setError] = useState12(null);
|
|
10622
|
+
const [userOpHash, setUserOpHash] = useState12(null);
|
|
10402
10623
|
const sendTransaction = useCallback13(
|
|
10403
10624
|
async (params) => {
|
|
10404
10625
|
if (!session || !address) {
|
|
@@ -10463,17 +10684,17 @@ function SendLumiaMenu() {
|
|
|
10463
10684
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10464
10685
|
const { assets } = useAssets(address);
|
|
10465
10686
|
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
10466
|
-
const { refetch: refetchBalance } =
|
|
10687
|
+
const { refetch: refetchBalance } = useBalance3({
|
|
10467
10688
|
address,
|
|
10468
10689
|
chainId: lumiaBeam.id
|
|
10469
10690
|
});
|
|
10470
|
-
const [recipient, setRecipient] =
|
|
10471
|
-
const [amount, setAmount] =
|
|
10472
|
-
const [txStep, setTxStep] =
|
|
10473
|
-
const [validationError, setValidationError] =
|
|
10691
|
+
const [recipient, setRecipient] = useState13("");
|
|
10692
|
+
const [amount, setAmount] = useState13("");
|
|
10693
|
+
const [txStep, setTxStep] = useState13("input");
|
|
10694
|
+
const [validationError, setValidationError] = useState13(null);
|
|
10474
10695
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10475
10696
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10476
|
-
|
|
10697
|
+
useEffect22(() => {
|
|
10477
10698
|
if (open) {
|
|
10478
10699
|
setTxStep("input");
|
|
10479
10700
|
setValidationError(null);
|
|
@@ -10637,7 +10858,7 @@ function SendLumiaMenu() {
|
|
|
10637
10858
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10638
10859
|
import { ArrowLeft as ArrowLeft11, CheckCircle2 as CheckCircle25, Copy as Copy2, Loader as Loader17 } from "lucide-react";
|
|
10639
10860
|
import QRCode from "qrcode";
|
|
10640
|
-
import { useEffect as
|
|
10861
|
+
import { useEffect as useEffect23, useState as useState14 } from "react";
|
|
10641
10862
|
init_clients();
|
|
10642
10863
|
import { Fragment as Fragment13, jsx as jsx54, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
10643
10864
|
function ReceiveLumiaMenu() {
|
|
@@ -10645,9 +10866,9 @@ function ReceiveLumiaMenu() {
|
|
|
10645
10866
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10646
10867
|
const open = page === "receive";
|
|
10647
10868
|
const { address } = useLumiaPassportSession();
|
|
10648
|
-
const [qrCodeUrl, setQrCodeUrl] =
|
|
10649
|
-
const [copied, setCopied] =
|
|
10650
|
-
|
|
10869
|
+
const [qrCodeUrl, setQrCodeUrl] = useState14("");
|
|
10870
|
+
const [copied, setCopied] = useState14(false);
|
|
10871
|
+
useEffect23(() => {
|
|
10651
10872
|
if (open && address) {
|
|
10652
10873
|
QRCode.toDataURL(address, {
|
|
10653
10874
|
width: 200,
|
|
@@ -10696,7 +10917,7 @@ function ReceiveLumiaMenu() {
|
|
|
10696
10917
|
|
|
10697
10918
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10698
10919
|
import { ArrowLeft as ArrowLeft12 } from "lucide-react";
|
|
10699
|
-
import { useEffect as
|
|
10920
|
+
import { useEffect as useEffect24 } from "react";
|
|
10700
10921
|
|
|
10701
10922
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10702
10923
|
import { ArrowLeftRight, DatabaseBackup as DatabaseBackup2, LockKeyhole, UsersRound } from "lucide-react";
|
|
@@ -10730,7 +10951,7 @@ function SettingsMenu() {
|
|
|
10730
10951
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10731
10952
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10732
10953
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10733
|
-
|
|
10954
|
+
useEffect24(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10734
10955
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10735
10956
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10736
10957
|
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
@@ -10788,9 +11009,9 @@ function TermsOfService() {
|
|
|
10788
11009
|
}
|
|
10789
11010
|
|
|
10790
11011
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10791
|
-
import { useQuery as
|
|
11012
|
+
import { useQuery as useQuery8, useQueryClient as useQueryClient11 } from "@tanstack/react-query";
|
|
10792
11013
|
import { ArrowLeft as ArrowLeft14, Loader as Loader18, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
10793
|
-
import { useCallback as useCallback14, useEffect as
|
|
11014
|
+
import { useCallback as useCallback14, useEffect as useEffect25, useRef as useRef10, useState as useState15 } from "react";
|
|
10794
11015
|
|
|
10795
11016
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10796
11017
|
init_base();
|
|
@@ -11272,13 +11493,13 @@ function TransactionsMenu() {
|
|
|
11272
11493
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11273
11494
|
const txContainerListRef = useRef10(null);
|
|
11274
11495
|
const txListRef = useRef10(null);
|
|
11275
|
-
const [expandedGroups, setExpandedGroups] =
|
|
11496
|
+
const [expandedGroups, setExpandedGroups] = useState15({});
|
|
11276
11497
|
const {
|
|
11277
11498
|
data: txHistoryGroups = [],
|
|
11278
11499
|
isLoading: isTxHistoryLoading,
|
|
11279
11500
|
isFetching: isTxHistoryFetching,
|
|
11280
11501
|
error: txHistoryError
|
|
11281
|
-
} =
|
|
11502
|
+
} = useQuery8({
|
|
11282
11503
|
retry: false,
|
|
11283
11504
|
enabled: !!address && page === "transactions",
|
|
11284
11505
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
@@ -11289,7 +11510,7 @@ function TransactionsMenu() {
|
|
|
11289
11510
|
[qc, address]
|
|
11290
11511
|
);
|
|
11291
11512
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11292
|
-
|
|
11513
|
+
useEffect25(() => {
|
|
11293
11514
|
if (!txContainerListRef.current || !txListRef.current) return;
|
|
11294
11515
|
if (txContainerListRef.current) {
|
|
11295
11516
|
txContainerListRef.current.style.setProperty(
|
|
@@ -11478,7 +11699,7 @@ function usePageMapper() {
|
|
|
11478
11699
|
},
|
|
11479
11700
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11480
11701
|
);
|
|
11481
|
-
|
|
11702
|
+
useEffect26(() => {
|
|
11482
11703
|
if (page === null) return closeDialog();
|
|
11483
11704
|
const pageItem = protectedRoutes[page];
|
|
11484
11705
|
if (!pageItem) {
|
|
@@ -11492,7 +11713,7 @@ function usePageMapper() {
|
|
|
11492
11713
|
|
|
11493
11714
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11494
11715
|
init_auth();
|
|
11495
|
-
import { useEffect as
|
|
11716
|
+
import { useEffect as useEffect27 } from "react";
|
|
11496
11717
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11497
11718
|
id: "email-not-connected",
|
|
11498
11719
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11508,13 +11729,13 @@ function useSettingsNotifications() {
|
|
|
11508
11729
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11509
11730
|
const providers = jwtTokenManager2.getProviders();
|
|
11510
11731
|
const hasEmail = providers.includes("email");
|
|
11511
|
-
|
|
11732
|
+
useEffect27(() => {
|
|
11512
11733
|
setSettingsNotifications({
|
|
11513
11734
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11514
11735
|
status: hasServerVault ? "resolved" : "active"
|
|
11515
11736
|
});
|
|
11516
11737
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11517
|
-
|
|
11738
|
+
useEffect27(() => {
|
|
11518
11739
|
setSettingsNotifications({
|
|
11519
11740
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11520
11741
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11523,7 +11744,7 @@ function useSettingsNotifications() {
|
|
|
11523
11744
|
}
|
|
11524
11745
|
|
|
11525
11746
|
// src/internal/hooks/useWalletStatus.ts
|
|
11526
|
-
import { useEffect as
|
|
11747
|
+
import { useEffect as useEffect28 } from "react";
|
|
11527
11748
|
init_auth();
|
|
11528
11749
|
function useWalletStatus() {
|
|
11529
11750
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -11533,7 +11754,7 @@ function useWalletStatus() {
|
|
|
11533
11754
|
config: { current: config },
|
|
11534
11755
|
callbacks
|
|
11535
11756
|
} = useLumiaPassportConfig();
|
|
11536
|
-
|
|
11757
|
+
useEffect28(() => {
|
|
11537
11758
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11538
11759
|
const userId = jwtTokenManager2.getUserId();
|
|
11539
11760
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -11564,7 +11785,7 @@ function LumiaPassportDialog() {
|
|
|
11564
11785
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11565
11786
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11566
11787
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11567
|
-
|
|
11788
|
+
useEffect29(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11568
11789
|
usePageMapper();
|
|
11569
11790
|
useAutoConnect();
|
|
11570
11791
|
useCheckVaultStatus();
|
|
@@ -11601,225 +11822,6 @@ function LumiaPassportDialog() {
|
|
|
11601
11822
|
);
|
|
11602
11823
|
}
|
|
11603
11824
|
|
|
11604
|
-
// src/internal/components/LumiaPriceSSE.tsx
|
|
11605
|
-
init_base();
|
|
11606
|
-
import { useQuery as useQuery8 } from "@tanstack/react-query";
|
|
11607
|
-
import { useEffect as useEffect29 } from "react";
|
|
11608
|
-
import { useBalance as useBalance3 } from "wagmi";
|
|
11609
|
-
|
|
11610
|
-
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11611
|
-
import { useMutation as useMutation12 } from "@tanstack/react-query";
|
|
11612
|
-
import { useEffect as useEffect28 } from "react";
|
|
11613
|
-
|
|
11614
|
-
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11615
|
-
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
11616
|
-
var API_DOMAIN3 = (true ? "" : FALLBACK3) || FALLBACK3;
|
|
11617
|
-
var LumiaPriceSSEService = class {
|
|
11618
|
-
// private readonly baseUrl: string = API_DOMAIN
|
|
11619
|
-
constructor() {
|
|
11620
|
-
this.eventSource = null;
|
|
11621
|
-
this.listeners = /* @__PURE__ */ new Set();
|
|
11622
|
-
this.currentPrice = null;
|
|
11623
|
-
this.isConnected = false;
|
|
11624
|
-
this.reconnectTimeout = null;
|
|
11625
|
-
}
|
|
11626
|
-
connect() {
|
|
11627
|
-
return new Promise((resolve, reject) => {
|
|
11628
|
-
console.log("[LumiaPriceSSEService]: Connecting to LUMIA Price SSE...");
|
|
11629
|
-
if (this.isConnected) {
|
|
11630
|
-
resolve();
|
|
11631
|
-
return;
|
|
11632
|
-
}
|
|
11633
|
-
try {
|
|
11634
|
-
this.eventSource = new EventSource(`${API_DOMAIN3}/api/lumia/sse`);
|
|
11635
|
-
this.eventSource.onopen = () => {
|
|
11636
|
-
console.log("[LumiaPriceSSEService]: LUMIA Price SSE connected");
|
|
11637
|
-
this.isConnected = true;
|
|
11638
|
-
this.clearReconnectTimeout();
|
|
11639
|
-
resolve();
|
|
11640
|
-
};
|
|
11641
|
-
this.eventSource.onmessage = () => {
|
|
11642
|
-
};
|
|
11643
|
-
this.eventSource.addEventListener("rate", (event) => {
|
|
11644
|
-
try {
|
|
11645
|
-
const data = JSON.parse(event.data);
|
|
11646
|
-
if (data.price !== void 0 && data.symbol === "LUMIAUSDT") {
|
|
11647
|
-
this.currentPrice = typeof data.price === "number" ? data.price : parseFloat(data.price);
|
|
11648
|
-
if (this.currentPrice !== null) {
|
|
11649
|
-
const update = {
|
|
11650
|
-
symbol: data.symbol,
|
|
11651
|
-
price: this.currentPrice,
|
|
11652
|
-
ts: data.ts || Date.now()
|
|
11653
|
-
};
|
|
11654
|
-
this.listeners.forEach((listener) => listener(update));
|
|
11655
|
-
}
|
|
11656
|
-
}
|
|
11657
|
-
} catch (error) {
|
|
11658
|
-
console.error("Error parsing price event:", error, event.data);
|
|
11659
|
-
}
|
|
11660
|
-
});
|
|
11661
|
-
this.eventSource.addEventListener("ping", () => {
|
|
11662
|
-
});
|
|
11663
|
-
this.eventSource.onerror = (error) => {
|
|
11664
|
-
console.error("LUMIA Price SSE error:", error);
|
|
11665
|
-
this.isConnected = false;
|
|
11666
|
-
if (this.eventSource?.readyState === EventSource.CLOSED) {
|
|
11667
|
-
console.log("SSE connection closed, attempting to reconnect...");
|
|
11668
|
-
this.scheduleReconnect();
|
|
11669
|
-
reject(error);
|
|
11670
|
-
}
|
|
11671
|
-
};
|
|
11672
|
-
setTimeout(() => {
|
|
11673
|
-
if (!this.isConnected) {
|
|
11674
|
-
reject(new Error("SSE connection timeout"));
|
|
11675
|
-
}
|
|
11676
|
-
}, 1e4);
|
|
11677
|
-
} catch (error) {
|
|
11678
|
-
reject(error);
|
|
11679
|
-
}
|
|
11680
|
-
});
|
|
11681
|
-
}
|
|
11682
|
-
disconnect() {
|
|
11683
|
-
this.clearReconnectTimeout();
|
|
11684
|
-
if (this.eventSource) {
|
|
11685
|
-
this.eventSource.close();
|
|
11686
|
-
this.eventSource = null;
|
|
11687
|
-
}
|
|
11688
|
-
this.isConnected = false;
|
|
11689
|
-
this.currentPrice = null;
|
|
11690
|
-
console.log("[LumiaPriceSSEService]: LUMIA Price SSE disconnected");
|
|
11691
|
-
}
|
|
11692
|
-
addListener(listener) {
|
|
11693
|
-
this.listeners.add(listener);
|
|
11694
|
-
}
|
|
11695
|
-
removeListener(listener) {
|
|
11696
|
-
this.listeners.delete(listener);
|
|
11697
|
-
}
|
|
11698
|
-
clearListeners() {
|
|
11699
|
-
this.listeners.clear();
|
|
11700
|
-
}
|
|
11701
|
-
getCurrentPrice() {
|
|
11702
|
-
return this.currentPrice;
|
|
11703
|
-
}
|
|
11704
|
-
getConnectionStatus() {
|
|
11705
|
-
return this.isConnected;
|
|
11706
|
-
}
|
|
11707
|
-
scheduleReconnect() {
|
|
11708
|
-
this.clearReconnectTimeout();
|
|
11709
|
-
this.reconnectTimeout = window.setTimeout(() => {
|
|
11710
|
-
console.log("Attempting to reconnect to BTC Price SSE...");
|
|
11711
|
-
this.connect().catch((error) => {
|
|
11712
|
-
console.error("Reconnection failed:", error);
|
|
11713
|
-
this.scheduleReconnect();
|
|
11714
|
-
});
|
|
11715
|
-
}, 5e3);
|
|
11716
|
-
}
|
|
11717
|
-
clearReconnectTimeout() {
|
|
11718
|
-
if (this.reconnectTimeout) {
|
|
11719
|
-
clearTimeout(this.reconnectTimeout);
|
|
11720
|
-
this.reconnectTimeout = null;
|
|
11721
|
-
}
|
|
11722
|
-
}
|
|
11723
|
-
};
|
|
11724
|
-
var lumiaPriceSSE = new LumiaPriceSSEService();
|
|
11725
|
-
async function sseConnectMutation() {
|
|
11726
|
-
try {
|
|
11727
|
-
await lumiaPriceSSE.connect();
|
|
11728
|
-
console.info("[LUMIA SSE] price feed connected");
|
|
11729
|
-
return { ok: true };
|
|
11730
|
-
} catch (error) {
|
|
11731
|
-
console.error("[LUMIA SSE] Error connecting to SSE:", error);
|
|
11732
|
-
throw new Error("[LUMIA SSE] Error connecting to SSE");
|
|
11733
|
-
}
|
|
11734
|
-
}
|
|
11735
|
-
|
|
11736
|
-
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11737
|
-
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
11738
|
-
const { mutate: connectSSE } = useMutation12({
|
|
11739
|
-
mutationFn: sseConnectMutation,
|
|
11740
|
-
onSuccess: () => {
|
|
11741
|
-
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
11742
|
-
},
|
|
11743
|
-
onError: (err) => {
|
|
11744
|
-
console.error("Lumia Price SSE connection error:", err);
|
|
11745
|
-
}
|
|
11746
|
-
});
|
|
11747
|
-
useEffect28(() => {
|
|
11748
|
-
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11749
|
-
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11750
|
-
if (!enabled) {
|
|
11751
|
-
lumiaPriceSSE.clearListeners();
|
|
11752
|
-
lumiaPriceSSE.disconnect();
|
|
11753
|
-
return;
|
|
11754
|
-
}
|
|
11755
|
-
return () => {
|
|
11756
|
-
lumiaPriceSSE.clearListeners();
|
|
11757
|
-
lumiaPriceSSE.disconnect();
|
|
11758
|
-
};
|
|
11759
|
-
}, [enabled, connectSSE]);
|
|
11760
|
-
}
|
|
11761
|
-
|
|
11762
|
-
// src/internal/components/LumiaPriceSSE.tsx
|
|
11763
|
-
function LumiaPriceSSE() {
|
|
11764
|
-
const config = useLumiaPassportConfig().config.current;
|
|
11765
|
-
const address = useLumiaPassportSession((st) => st.address);
|
|
11766
|
-
const { cryptoRate, setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore();
|
|
11767
|
-
const isDefaultBalanceFeedEnabled = !!address && !config?.projectAssets?.showBalanceAs;
|
|
11768
|
-
const { data: balance } = useBalance3({
|
|
11769
|
-
address,
|
|
11770
|
-
chainId: lumiaBeam.id,
|
|
11771
|
-
query: {
|
|
11772
|
-
enabled: isDefaultBalanceFeedEnabled,
|
|
11773
|
-
refetchInterval: isDefaultBalanceFeedEnabled ? 3e4 : false,
|
|
11774
|
-
// Refetch every 30 seconds
|
|
11775
|
-
refetchOnMount: true,
|
|
11776
|
-
refetchOnWindowFocus: true
|
|
11777
|
-
}
|
|
11778
|
-
});
|
|
11779
|
-
useLumiaPriceSSE(isDefaultBalanceFeedEnabled, (update) => setCryptoRate(update.price || 1));
|
|
11780
|
-
useEffect29(() => {
|
|
11781
|
-
if (!isDefaultBalanceFeedEnabled) return;
|
|
11782
|
-
const usdBalance = Number(balance?.formatted || 0) * cryptoRate;
|
|
11783
|
-
setCryptoSymbol("LUMIA");
|
|
11784
|
-
setFiatSymbol("USD");
|
|
11785
|
-
setFiatBalance(usdBalance);
|
|
11786
|
-
setBalance(balance);
|
|
11787
|
-
}, [isDefaultBalanceFeedEnabled, balance, cryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol]);
|
|
11788
|
-
const showBalanceAsSymbol = config?.projectAssets?.showBalanceAs;
|
|
11789
|
-
const assetBalanceConfig = config?.projectAssets?.assets.find((a) => a.symbol === showBalanceAsSymbol);
|
|
11790
|
-
const { balanceQuery, balanceQueryKey } = assetBalanceConfig || {};
|
|
11791
|
-
const { data: customBalance } = useQuery8({
|
|
11792
|
-
retry: false,
|
|
11793
|
-
enabled: !isDefaultBalanceFeedEnabled && !!address && !!showBalanceAsSymbol && !!assetBalanceConfig,
|
|
11794
|
-
queryKey: balanceQueryKey,
|
|
11795
|
-
// should be invalidated by host app via provided queryKey
|
|
11796
|
-
queryFn: async () => await balanceQuery()
|
|
11797
|
-
});
|
|
11798
|
-
useEffect29(() => {
|
|
11799
|
-
if (!!isDefaultBalanceFeedEnabled || !customBalance) return;
|
|
11800
|
-
const { cryptoFiatRate, fiatFormatted, cryptoFormatted, cryptoSymbol, fiatSymbol } = customBalance;
|
|
11801
|
-
setCryptoSymbol(cryptoSymbol.toUpperCase() || "LUMIA");
|
|
11802
|
-
setFiatSymbol(fiatSymbol.toUpperCase() || "USD");
|
|
11803
|
-
setCryptoRate(cryptoFiatRate || 1);
|
|
11804
|
-
setFiatBalance(fiatFormatted || 0);
|
|
11805
|
-
setBalance({
|
|
11806
|
-
decimals: 18,
|
|
11807
|
-
formatted: cryptoFormatted?.toString() || "0",
|
|
11808
|
-
symbol: cryptoSymbol.toUpperCase() || "LUMIA",
|
|
11809
|
-
value: BigInt(Math.floor((cryptoFormatted || 0) * 10 ** 18))
|
|
11810
|
-
});
|
|
11811
|
-
}, [
|
|
11812
|
-
isDefaultBalanceFeedEnabled,
|
|
11813
|
-
customBalance,
|
|
11814
|
-
setFiatBalance,
|
|
11815
|
-
setBalance,
|
|
11816
|
-
setCryptoSymbol,
|
|
11817
|
-
setFiatSymbol,
|
|
11818
|
-
setCryptoRate
|
|
11819
|
-
]);
|
|
11820
|
-
return null;
|
|
11821
|
-
}
|
|
11822
|
-
|
|
11823
11825
|
// src/internal/components/TssManager.tsx
|
|
11824
11826
|
import React13, { useCallback as useCallback16 } from "react";
|
|
11825
11827
|
init_auth();
|
|
@@ -12020,7 +12022,7 @@ function LumiaPassportSessionProvider({ children }) {
|
|
|
12020
12022
|
return /* @__PURE__ */ jsxs51(Fragment15, { children: [
|
|
12021
12023
|
children,
|
|
12022
12024
|
config.wallet?.enabled && /* @__PURE__ */ jsx63(WalletConnectHandler, {}),
|
|
12023
|
-
/* @__PURE__ */ jsx63(
|
|
12025
|
+
/* @__PURE__ */ jsx63(BalanceFeedProvider, {}),
|
|
12024
12026
|
/* @__PURE__ */ jsx63(
|
|
12025
12027
|
TssManagerWithRef,
|
|
12026
12028
|
{
|
|
@@ -13043,12 +13045,12 @@ var Hash = ({
|
|
|
13043
13045
|
|
|
13044
13046
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
13045
13047
|
init_base();
|
|
13046
|
-
import { useEffect as useEffect35, useState as
|
|
13048
|
+
import { useEffect as useEffect35, useState as useState19 } from "react";
|
|
13047
13049
|
import { jsx as jsx73, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
13048
13050
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
13049
|
-
const [transactions, setTransactions] =
|
|
13050
|
-
const [loading, setLoading] =
|
|
13051
|
-
const [error, setError] =
|
|
13051
|
+
const [transactions, setTransactions] = useState19([]);
|
|
13052
|
+
const [loading, setLoading] = useState19(true);
|
|
13053
|
+
const [error, setError] = useState19(null);
|
|
13052
13054
|
useEffect35(() => {
|
|
13053
13055
|
const fetchTransactions = async () => {
|
|
13054
13056
|
try {
|