@lumiapassport/ui-kit 1.12.6 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/iframe/_headers +2 -2
- package/dist/iframe/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +1087 -1041
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -19
- package/dist/index.d.ts +18 -19
- package/dist/index.js +1106 -1053
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4299,26 +4299,27 @@ __export(index_exports, {
|
|
|
4299
4299
|
module.exports = __toCommonJS(index_exports);
|
|
4300
4300
|
|
|
4301
4301
|
// src/styles/built.css
|
|
4302
|
-
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-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-\\[60dvh\\]{max-height:60dvh}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.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 .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-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/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 .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-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,.8));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.6));--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%,.9));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.7));--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:-apple-system,BlinkMacSystemFont,system-ui,Inter,sans-serif;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 select,.lumia-scope textarea{font-family:system-ui,-apple-system,sans-serif!important}.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:calc(100% + 8px);padding-right:4px;overflow-y:auto;max-height:calc(var(--l-pass-maw)*2/3)}.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-3::file-selector-button{margin-right:.75rem}.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-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.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-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.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-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/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-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.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 .hover\\:file\\:opacity-90::file-selector-button:hover{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-2: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-\\[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 .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 .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-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.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-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/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}';
|
|
4302
|
+
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-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-\\[60vh\\]{max-height:60vh}.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-\\[var\\(--l-pass-list-bd\\)\\]{border-color:var(--l-pass-list-bd)}.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-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);margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{appearance:none;-webkit-appearance:none;-moz-appearance:none;border-style:solid;outline: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-3::file-selector-button{margin-right:.75rem}.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-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.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 .hover\\:file\\:opacity-90::file-selector-button:hover{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-2: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-\\[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 .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}';
|
|
4303
4303
|
|
|
4304
4304
|
// src/context/LumiaPassportContext.tsx
|
|
4305
4305
|
var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
|
|
4306
|
-
var
|
|
4306
|
+
var import_lodash_es2 = require("lodash-es");
|
|
4307
|
+
var import_react47 = require("react");
|
|
4307
4308
|
init_lumiaPassport();
|
|
4308
4309
|
init_iframe_manager();
|
|
4309
4310
|
|
|
4310
4311
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4311
|
-
var
|
|
4312
|
+
var import_react46 = require("react");
|
|
4312
4313
|
var import_zustand5 = require("zustand");
|
|
4313
4314
|
|
|
4314
4315
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4315
4316
|
var import_framer_motion4 = require("framer-motion");
|
|
4316
|
-
var
|
|
4317
|
+
var import_react41 = require("react");
|
|
4317
4318
|
|
|
4318
4319
|
// package.json
|
|
4319
4320
|
var package_default = {
|
|
4320
4321
|
name: "@lumiapassport/ui-kit",
|
|
4321
|
-
version: "1.
|
|
4322
|
+
version: "1.13.0",
|
|
4322
4323
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4323
4324
|
type: "module",
|
|
4324
4325
|
main: "./dist/index.cjs",
|
|
@@ -4470,8 +4471,10 @@ var import_zustand = require("zustand");
|
|
|
4470
4471
|
// src/internal/constants.ts
|
|
4471
4472
|
var import_lucide_react2 = require("lucide-react");
|
|
4472
4473
|
init_assets();
|
|
4473
|
-
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4474
4474
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4475
|
+
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4476
|
+
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4477
|
+
var MAX_LIST_HEIGHT = 320;
|
|
4475
4478
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4476
4479
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4477
4480
|
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
@@ -4573,37 +4576,32 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
4573
4576
|
default: cn(
|
|
4574
4577
|
"border border-transparent",
|
|
4575
4578
|
"bg-[var(--l-pass-primary)] text-[var(--l-pass-fg-inverted)]",
|
|
4576
|
-
"hover:bg-[var(--l-pass-primary-h)]
|
|
4577
|
-
"active:bg-[var(--l-pass-primary-a)]"
|
|
4579
|
+
"hover:bg-[var(--l-pass-primary-h)]",
|
|
4580
|
+
"active:bg-[var(--l-pass-primary-a)]",
|
|
4581
|
+
"disabled:hover:bg-[var(--l-pass-primary)] disabled:active:bg-[var(--l-pass-primary)]"
|
|
4578
4582
|
),
|
|
4579
4583
|
outline: cn(
|
|
4580
4584
|
"border border-[var(--l-pass-bd)] bg-transparent text-[var(--l-pass-fg)]",
|
|
4581
|
-
"hover:text-[var(--l-pass-fg-h)]
|
|
4582
|
-
"active:text-[var(--l-pass-fg-a)]
|
|
4585
|
+
"hover:text-[var(--l-pass-fg-h)]",
|
|
4586
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4587
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4583
4588
|
),
|
|
4584
4589
|
ghost: cn(
|
|
4585
|
-
"border border-transparent",
|
|
4586
|
-
"bg-transparent text-[var(--l-pass-fg)]",
|
|
4590
|
+
"border border-transparent bg-transparent text-[var(--l-pass-fg)]",
|
|
4587
4591
|
"hover:text-[var(--l-pass-fg-h)]",
|
|
4588
|
-
"
|
|
4589
|
-
"active:text-[var(--l-pass-fg
|
|
4590
|
-
)
|
|
4591
|
-
// deprecate
|
|
4592
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
4593
|
-
secondary: "bg-gray-600 text-white hover:bg-gray-500 dark:bg-gray-700 dark:hover:bg-gray-600",
|
|
4594
|
-
link: "bg-transparent !bg-transparent text-blue-600 hover:text-blue-700 underline-offset-4 hover:underline",
|
|
4595
|
-
telegram: "bg-[#0088cc] text-white hover:bg-[#0077bb]",
|
|
4596
|
-
success: "bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600"
|
|
4592
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4593
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4594
|
+
)
|
|
4597
4595
|
},
|
|
4598
4596
|
size: {
|
|
4599
4597
|
small: "h-6 px-2 rounded-[5px]",
|
|
4600
4598
|
medium: "h-8 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4601
4599
|
large: "h-12 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4602
|
-
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4600
|
+
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4603
4601
|
// deprecate
|
|
4604
|
-
default:
|
|
4605
|
-
sm:
|
|
4606
|
-
lg:
|
|
4602
|
+
// default: 'h-10 px-4 py-2',
|
|
4603
|
+
// sm: 'h-9 rounded-xl px-3',
|
|
4604
|
+
// lg: 'h-11 rounded-xl px-8'
|
|
4607
4605
|
}
|
|
4608
4606
|
},
|
|
4609
4607
|
defaultVariants: {
|
|
@@ -4699,12 +4697,12 @@ function Footer() {
|
|
|
4699
4697
|
disabled: isDisconnecting,
|
|
4700
4698
|
children: [
|
|
4701
4699
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: "Log Out" }),
|
|
4702
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.LogOut, { className: "w-4 h-4" })
|
|
4700
|
+
isDisconnecting ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.LogOut, { className: "w-4 h-4" })
|
|
4703
4701
|
]
|
|
4704
4702
|
}
|
|
4705
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-
|
|
4703
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4706
4704
|
] }),
|
|
4707
|
-
!!address && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-
|
|
4705
|
+
!!address && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4708
4706
|
]
|
|
4709
4707
|
}
|
|
4710
4708
|
);
|
|
@@ -4793,7 +4791,9 @@ function formatAddress(addr) {
|
|
|
4793
4791
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
4794
4792
|
}
|
|
4795
4793
|
function Header() {
|
|
4796
|
-
const {
|
|
4794
|
+
const {
|
|
4795
|
+
config: { current: config }
|
|
4796
|
+
} = useLumiaPassportConfig();
|
|
4797
4797
|
const address = useLumiaPassportSession((st) => st.address);
|
|
4798
4798
|
const [copied, setCopied] = (0, import_react2.useState)(false);
|
|
4799
4799
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
@@ -4818,7 +4818,16 @@ function Header() {
|
|
|
4818
4818
|
children: [
|
|
4819
4819
|
!!address && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(UsdBalance, { className: "text-lg leading-5 font-bold" }),
|
|
4820
4820
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-full flex items-center gap-2", children: [
|
|
4821
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
4821
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
4822
|
+
"span",
|
|
4823
|
+
{
|
|
4824
|
+
className: cn(
|
|
4825
|
+
"max-w-full font-mono text-xs leading-4 font-medium text-[var(--l-pass-fg-muted)",
|
|
4826
|
+
"text-ellipsis overflow-hidden whitespace-nowrap"
|
|
4827
|
+
),
|
|
4828
|
+
children: displayName || config.ui.title || "LumiaPassport"
|
|
4829
|
+
}
|
|
4830
|
+
),
|
|
4822
4831
|
isKycVerified && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "group relative flex flex-shrink-0", children: [
|
|
4823
4832
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.CheckCircle2, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }),
|
|
4824
4833
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
@@ -4841,7 +4850,7 @@ function Header() {
|
|
|
4841
4850
|
)
|
|
4842
4851
|
] }),
|
|
4843
4852
|
!!address && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
4844
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "block text-
|
|
4853
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "block font-mono text-[10px] break-all leading-6 text-[var(--l-pass-fg-muted)]", children: formatAddress(address) }),
|
|
4845
4854
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] justify-between", children: [
|
|
4846
4855
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4847
4856
|
Button,
|
|
@@ -5051,7 +5060,10 @@ var VisuallyHidden = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime9.j
|
|
|
5051
5060
|
// src/internal/hooks/useAutoConnect.ts
|
|
5052
5061
|
var import_react3 = require("react");
|
|
5053
5062
|
function useAutoConnect() {
|
|
5054
|
-
const {
|
|
5063
|
+
const {
|
|
5064
|
+
config: { current: config },
|
|
5065
|
+
callbacks
|
|
5066
|
+
} = useLumiaPassportConfig();
|
|
5055
5067
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5056
5068
|
const {
|
|
5057
5069
|
session,
|
|
@@ -5277,7 +5289,7 @@ function useCheckVaultStatus() {
|
|
|
5277
5289
|
}
|
|
5278
5290
|
|
|
5279
5291
|
// src/internal/hooks/usePageMapper.tsx
|
|
5280
|
-
var
|
|
5292
|
+
var import_react38 = require("react");
|
|
5281
5293
|
|
|
5282
5294
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5283
5295
|
var import_framer_motion = require("framer-motion");
|
|
@@ -5543,7 +5555,10 @@ var import_lucide_react8 = require("lucide-react");
|
|
|
5543
5555
|
init_projectId();
|
|
5544
5556
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
5545
5557
|
function Email() {
|
|
5546
|
-
const {
|
|
5558
|
+
const {
|
|
5559
|
+
config: { current: config },
|
|
5560
|
+
callbacks
|
|
5561
|
+
} = useLumiaPassportConfig();
|
|
5547
5562
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5548
5563
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
5549
5564
|
const { email, codeSendError, setEmail, setCodeSendError, setExpiresIn, setStep } = useAuthStore();
|
|
@@ -5697,7 +5712,10 @@ var normalizeLoginResponse = async (rawLoginResponse, providerKey, userData) =>
|
|
|
5697
5712
|
};
|
|
5698
5713
|
function Social(props) {
|
|
5699
5714
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
5700
|
-
const {
|
|
5715
|
+
const {
|
|
5716
|
+
config: { current: config },
|
|
5717
|
+
callbacks
|
|
5718
|
+
} = useLumiaPassportConfig();
|
|
5701
5719
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5702
5720
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5703
5721
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
@@ -6110,7 +6128,9 @@ function getSignInEnabledMethods(params) {
|
|
|
6110
6128
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
6111
6129
|
function SignInStep(props) {
|
|
6112
6130
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6113
|
-
const {
|
|
6131
|
+
const {
|
|
6132
|
+
config: { current: config }
|
|
6133
|
+
} = useLumiaPassportConfig();
|
|
6114
6134
|
const alert2 = useAuthStore((st) => st.alert);
|
|
6115
6135
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6116
6136
|
const enabledWoPasskey = getSignInEnabledMethods({ order: config.ui.authOrder, config, exclude: ["passkey"] });
|
|
@@ -6234,7 +6254,7 @@ function Expandable(props) {
|
|
|
6234
6254
|
{
|
|
6235
6255
|
...divProps,
|
|
6236
6256
|
ref: expandableRef,
|
|
6237
|
-
className: cn("w-full overflow-hidden", className),
|
|
6257
|
+
className: cn("w-full overflow-y-hidden", className),
|
|
6238
6258
|
style: { height: "var(--ifo-basic-expandable-h)", transition: "height 375ms ease" },
|
|
6239
6259
|
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: cn("w-full", contentClassName), ref: contentRef, style: minHeight ? { minHeight } : void 0, children })
|
|
6240
6260
|
}
|
|
@@ -6255,9 +6275,12 @@ function normalizeWebAuthnError(err) {
|
|
|
6255
6275
|
}
|
|
6256
6276
|
function PassKeyStep(props) {
|
|
6257
6277
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6258
|
-
const {
|
|
6259
|
-
|
|
6278
|
+
const {
|
|
6279
|
+
config: { current: config },
|
|
6280
|
+
callbacks
|
|
6281
|
+
} = useLumiaPassportConfig();
|
|
6260
6282
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6283
|
+
const recoveryUserId = useLumiaPassportSession((st) => st.recoveryUserId);
|
|
6261
6284
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6262
6285
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6263
6286
|
const autoCloseOnSuccess = !recoveryUserId;
|
|
@@ -6465,7 +6488,10 @@ function PassKeyStep(props) {
|
|
|
6465
6488
|
var import_react12 = require("react");
|
|
6466
6489
|
init_auth();
|
|
6467
6490
|
function useAuthMenuHandlers() {
|
|
6468
|
-
const {
|
|
6491
|
+
const {
|
|
6492
|
+
config: { current: config },
|
|
6493
|
+
callbacks
|
|
6494
|
+
} = useLumiaPassportConfig();
|
|
6469
6495
|
const pendingLoginResponseRef = (0, import_react12.useRef)(null);
|
|
6470
6496
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6471
6497
|
const [telegramCleanup, setTelegramCleanup] = (0, import_react12.useState)(null);
|
|
@@ -6990,10 +7016,10 @@ function VerifyStep(props) {
|
|
|
6990
7016
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
6991
7017
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
6992
7018
|
var AuthMenu = () => {
|
|
7019
|
+
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
6993
7020
|
const page = useLayoutDataStore((st) => st.page);
|
|
6994
7021
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
6995
7022
|
(0, import_react15.useEffect)(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
6996
|
-
const { isIframeReady } = useLumiaPassportSession();
|
|
6997
7023
|
const {
|
|
6998
7024
|
step,
|
|
6999
7025
|
setStep,
|
|
@@ -7783,7 +7809,7 @@ var useSelectables = () => {
|
|
|
7783
7809
|
// src/internal/components/BuyMenu/ByuMenu.tsx
|
|
7784
7810
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
7785
7811
|
function BuyMenu() {
|
|
7786
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
7812
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
7787
7813
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7788
7814
|
const control = useSelectables();
|
|
7789
7815
|
const { rampProvider, setrRampProvider } = control;
|
|
@@ -7870,7 +7896,7 @@ function Highlight(props) {
|
|
|
7870
7896
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7871
7897
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
7872
7898
|
function KeyshareBackupMenu() {
|
|
7873
|
-
const
|
|
7899
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
7874
7900
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7875
7901
|
const userId = session?.mpcUserId || "";
|
|
7876
7902
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
@@ -8166,7 +8192,10 @@ var import_react22 = __toESM(require("react"), 1);
|
|
|
8166
8192
|
init_vaultClient();
|
|
8167
8193
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
8168
8194
|
var KeyshareRestoreMenu = () => {
|
|
8169
|
-
const {
|
|
8195
|
+
const {
|
|
8196
|
+
config: { current: config },
|
|
8197
|
+
callbacks
|
|
8198
|
+
} = useLumiaPassportConfig();
|
|
8170
8199
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8171
8200
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8172
8201
|
(0, import_react22.useEffect)(() => setIsDialogForced(true), []);
|
|
@@ -8742,13 +8771,15 @@ var SumsubIframeManager = class {
|
|
|
8742
8771
|
|
|
8743
8772
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8744
8773
|
function useSumsubIframe({ iframeUrl }) {
|
|
8774
|
+
const {
|
|
8775
|
+
config: { current: config }
|
|
8776
|
+
} = useLumiaPassportConfig();
|
|
8745
8777
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8746
8778
|
const iframeRef = (0, import_react23.useRef)(null);
|
|
8747
8779
|
const [isLoading, setIsLoading] = (0, import_react23.useState)(true);
|
|
8748
8780
|
const [error, setError] = (0, import_react23.useState)(null);
|
|
8749
8781
|
const [height, setHeight] = (0, import_react23.useState)(0);
|
|
8750
8782
|
const [status, setStatus] = (0, import_react23.useState)("");
|
|
8751
|
-
const { config } = useLumiaPassportConfig();
|
|
8752
8783
|
const levelName = config.kyc?.options?.levelName;
|
|
8753
8784
|
(0, import_react23.useEffect)(() => {
|
|
8754
8785
|
setError(null);
|
|
@@ -8796,7 +8827,9 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8796
8827
|
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
8797
8828
|
var MAX_IFRAME_HEIGHT = 650;
|
|
8798
8829
|
var SumsubIframe = () => {
|
|
8799
|
-
const {
|
|
8830
|
+
const {
|
|
8831
|
+
config: { current: config }
|
|
8832
|
+
} = useLumiaPassportConfig();
|
|
8800
8833
|
const iframeUrl = `${config.services.iframeUrl}/kyc/sumsub.html`;
|
|
8801
8834
|
const { iframeRef, isLoading, error, height, status } = useSumsubIframe({ iframeUrl });
|
|
8802
8835
|
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
|
|
@@ -8827,7 +8860,9 @@ var SumsubIframe = () => {
|
|
|
8827
8860
|
// src/internal/components/KYC/KycContent.tsx
|
|
8828
8861
|
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
8829
8862
|
var KycContent = () => {
|
|
8830
|
-
const {
|
|
8863
|
+
const {
|
|
8864
|
+
config: { current: config }
|
|
8865
|
+
} = useLumiaPassportConfig();
|
|
8831
8866
|
const provider = config.kyc?.provider;
|
|
8832
8867
|
switch (provider) {
|
|
8833
8868
|
case "sumsub":
|
|
@@ -8860,7 +8895,9 @@ var import_framer_motion2 = require("framer-motion");
|
|
|
8860
8895
|
var import_lucide_react23 = require("lucide-react");
|
|
8861
8896
|
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
8862
8897
|
function BackupWarning() {
|
|
8863
|
-
const {
|
|
8898
|
+
const {
|
|
8899
|
+
config: { current: config }
|
|
8900
|
+
} = useLumiaPassportConfig();
|
|
8864
8901
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8865
8902
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8866
8903
|
const isShown = config.warnings?.backupWarning && !hasServerVault;
|
|
@@ -8931,15 +8968,56 @@ function MainMenu() {
|
|
|
8931
8968
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
8932
8969
|
var import_lodash_es = require("lodash-es");
|
|
8933
8970
|
var import_lucide_react28 = require("lucide-react");
|
|
8934
|
-
var
|
|
8971
|
+
var import_react28 = require("react");
|
|
8972
|
+
|
|
8973
|
+
// src/modules/linkedProfiles.ts
|
|
8974
|
+
var import_react_query9 = require("@tanstack/react-query");
|
|
8975
|
+
var import_react25 = require("react");
|
|
8976
|
+
init_auth();
|
|
8977
|
+
init_common();
|
|
8978
|
+
init_types();
|
|
8979
|
+
var LINKED_PROFILES_QUERY_KEY = "lumia-passport-linked-profiles-query";
|
|
8980
|
+
async function getLinkProfilesData() {
|
|
8981
|
+
const list = await getLinkedProviders();
|
|
8982
|
+
const loadedProfiles = list.map((p) => {
|
|
8983
|
+
const info = getProviderDisplayInfo(p.provider);
|
|
8984
|
+
return { ...p, displayName: info.name, icon: info.icon };
|
|
8985
|
+
});
|
|
8986
|
+
let avatar = null;
|
|
8987
|
+
try {
|
|
8988
|
+
avatar = import_auth3.jwtTokenManager.getAvatar() || null;
|
|
8989
|
+
} catch {
|
|
8990
|
+
avatar = null;
|
|
8991
|
+
}
|
|
8992
|
+
return { profiles: loadedProfiles, avatar };
|
|
8993
|
+
}
|
|
8994
|
+
function useLumiaPassportLinkedProfiles() {
|
|
8995
|
+
const qc = (0, import_react_query9.useQueryClient)();
|
|
8996
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
8997
|
+
const {
|
|
8998
|
+
data,
|
|
8999
|
+
isFetching: isLoading,
|
|
9000
|
+
error
|
|
9001
|
+
} = (0, import_react_query9.useQuery)({
|
|
9002
|
+
retry: false,
|
|
9003
|
+
enabled: !!address,
|
|
9004
|
+
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
9005
|
+
queryFn: getLinkProfilesData
|
|
9006
|
+
});
|
|
9007
|
+
const { profiles = [], avatar = null } = data || {};
|
|
9008
|
+
const refresh = (0, import_react25.useCallback)(async () => {
|
|
9009
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9010
|
+
}, [qc, address]);
|
|
9011
|
+
return { profiles, avatar, isLoading, error, refresh };
|
|
9012
|
+
}
|
|
8935
9013
|
|
|
8936
9014
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
8937
|
-
var
|
|
9015
|
+
var import_react_query14 = require("@tanstack/react-query");
|
|
8938
9016
|
init_passkey2();
|
|
8939
9017
|
|
|
8940
9018
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8941
9019
|
init_lumiaPassport();
|
|
8942
|
-
var
|
|
9020
|
+
var import_react_query10 = require("@tanstack/react-query");
|
|
8943
9021
|
var import_lucide_react25 = require("lucide-react");
|
|
8944
9022
|
init_projectId();
|
|
8945
9023
|
|
|
@@ -8973,11 +9051,14 @@ var useManageWalletStore = (0, import_zustand4.create)((set) => ({
|
|
|
8973
9051
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8974
9052
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
8975
9053
|
function EmailForm() {
|
|
8976
|
-
const {
|
|
9054
|
+
const {
|
|
9055
|
+
config: { current: config },
|
|
9056
|
+
callbacks
|
|
9057
|
+
} = useLumiaPassportConfig();
|
|
8977
9058
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
8978
9059
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
8979
9060
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
8980
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
9061
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query10.useMutation)({
|
|
8981
9062
|
mutationFn: async () => {
|
|
8982
9063
|
if (!email) return;
|
|
8983
9064
|
setIsLoading(true);
|
|
@@ -9054,12 +9135,12 @@ function EmailForm() {
|
|
|
9054
9135
|
}
|
|
9055
9136
|
|
|
9056
9137
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9057
|
-
var
|
|
9138
|
+
var import_react_query11 = require("@tanstack/react-query");
|
|
9058
9139
|
init_common();
|
|
9059
9140
|
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9060
9141
|
function useProvidersList() {
|
|
9061
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
9062
|
-
return (0,
|
|
9142
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
9143
|
+
return (0, import_react_query11.useQuery)({
|
|
9063
9144
|
retry: false,
|
|
9064
9145
|
enabled: !!walletAddress,
|
|
9065
9146
|
queryKey: [PROVIDERS_QUERY_KEY, walletAddress],
|
|
@@ -9068,11 +9149,11 @@ function useProvidersList() {
|
|
|
9068
9149
|
}
|
|
9069
9150
|
|
|
9070
9151
|
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9071
|
-
var
|
|
9152
|
+
var import_react_query12 = require("@tanstack/react-query");
|
|
9072
9153
|
init_email();
|
|
9073
9154
|
function useSendVerificationCode() {
|
|
9074
9155
|
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9075
|
-
return (0,
|
|
9156
|
+
return (0, import_react_query12.useMutation)({
|
|
9076
9157
|
mutationFn: async (email) => {
|
|
9077
9158
|
if (!email) {
|
|
9078
9159
|
throw new Error("Email is required");
|
|
@@ -9095,12 +9176,12 @@ function useSendVerificationCode() {
|
|
|
9095
9176
|
}
|
|
9096
9177
|
|
|
9097
9178
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9098
|
-
var
|
|
9179
|
+
var import_react_query13 = require("@tanstack/react-query");
|
|
9099
9180
|
init_email();
|
|
9100
9181
|
function useVerifyCode() {
|
|
9101
|
-
const { callbacks
|
|
9102
|
-
const qc = (0,
|
|
9103
|
-
const
|
|
9182
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9183
|
+
const qc = (0, import_react_query13.useQueryClient)();
|
|
9184
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9104
9185
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9105
9186
|
const {
|
|
9106
9187
|
email,
|
|
@@ -9113,7 +9194,7 @@ function useVerifyCode() {
|
|
|
9113
9194
|
setVerificationError,
|
|
9114
9195
|
setEmailCodeSentError
|
|
9115
9196
|
} = useManageWalletStore();
|
|
9116
|
-
return (0,
|
|
9197
|
+
return (0, import_react_query13.useMutation)({
|
|
9117
9198
|
mutationFn: async (codeToVerify) => {
|
|
9118
9199
|
const code = codeToVerify ?? emailCode;
|
|
9119
9200
|
if (!code) {
|
|
@@ -9127,7 +9208,8 @@ function useVerifyCode() {
|
|
|
9127
9208
|
return await verifyEmailLinkCode(email, code);
|
|
9128
9209
|
},
|
|
9129
9210
|
onSuccess: async () => {
|
|
9130
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9211
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9212
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9131
9213
|
setProviderType(null);
|
|
9132
9214
|
setEmail("");
|
|
9133
9215
|
setEmailCode("");
|
|
@@ -9135,8 +9217,7 @@ function useVerifyCode() {
|
|
|
9135
9217
|
setEmailCodeSentError("");
|
|
9136
9218
|
setEmailStep("input");
|
|
9137
9219
|
try {
|
|
9138
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9139
|
-
notifyProvidersUpdate?.();
|
|
9220
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9140
9221
|
} catch {
|
|
9141
9222
|
}
|
|
9142
9223
|
setIsLoading(false);
|
|
@@ -9163,9 +9244,9 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9163
9244
|
return msg;
|
|
9164
9245
|
}
|
|
9165
9246
|
function AddProvider() {
|
|
9166
|
-
const qc = (0,
|
|
9167
|
-
const
|
|
9168
|
-
const
|
|
9247
|
+
const qc = (0, import_react_query14.useQueryClient)();
|
|
9248
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9249
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9169
9250
|
const {
|
|
9170
9251
|
linkIsLoading,
|
|
9171
9252
|
providerType,
|
|
@@ -9223,12 +9304,12 @@ function AddProvider() {
|
|
|
9223
9304
|
userVerification: "preferred"
|
|
9224
9305
|
}
|
|
9225
9306
|
});
|
|
9226
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9307
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9308
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9227
9309
|
try {
|
|
9228
9310
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9229
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9311
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9230
9312
|
});
|
|
9231
|
-
notifyProvidersUpdate?.();
|
|
9232
9313
|
} catch {
|
|
9233
9314
|
}
|
|
9234
9315
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9264,12 +9345,12 @@ function AddProvider() {
|
|
|
9264
9345
|
userVerification: "preferred"
|
|
9265
9346
|
}
|
|
9266
9347
|
});
|
|
9267
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9348
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9349
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9268
9350
|
try {
|
|
9269
9351
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9270
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9352
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9271
9353
|
});
|
|
9272
|
-
notifyProvidersUpdate?.();
|
|
9273
9354
|
} catch {
|
|
9274
9355
|
}
|
|
9275
9356
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9300,7 +9381,9 @@ var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
|
9300
9381
|
function EmailNotConnectedWarning() {
|
|
9301
9382
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
9302
9383
|
const hasEmail = providers.includes("email");
|
|
9303
|
-
const {
|
|
9384
|
+
const {
|
|
9385
|
+
config: { current: config }
|
|
9386
|
+
} = useLumiaPassportConfig();
|
|
9304
9387
|
const isShown = config.warnings?.emailNotConnectedWarning && !hasEmail;
|
|
9305
9388
|
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_framer_motion3.AnimatePresence, { mode: "wait", initial: false, children: isShown ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
9306
9389
|
import_framer_motion3.motion.div,
|
|
@@ -9309,7 +9392,7 @@ function EmailNotConnectedWarning() {
|
|
|
9309
9392
|
animate: { opacity: 1, height: "auto" },
|
|
9310
9393
|
exit: { opacity: 0, height: 0 },
|
|
9311
9394
|
transition: Y_ANIMATION_SETUP,
|
|
9312
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Highlight, { className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9395
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Highlight, { type: "warning", className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9313
9396
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("span", { className: "flex items-center gap-[var(--l-pass-gap)] text-lg font-bold", children: [
|
|
9314
9397
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.Mail, { className: "w-5 h-5" }),
|
|
9315
9398
|
"CONNECT EMAIL"
|
|
@@ -9321,16 +9404,19 @@ function EmailNotConnectedWarning() {
|
|
|
9321
9404
|
}
|
|
9322
9405
|
|
|
9323
9406
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9324
|
-
var
|
|
9325
|
-
var
|
|
9407
|
+
var import_react_query15 = require("@tanstack/react-query");
|
|
9408
|
+
var import_react26 = __toESM(require("react"), 1);
|
|
9326
9409
|
init_auth();
|
|
9327
9410
|
function useLinkSocial() {
|
|
9328
|
-
const qc = (0,
|
|
9329
|
-
const
|
|
9330
|
-
const {
|
|
9411
|
+
const qc = (0, import_react_query15.useQueryClient)();
|
|
9412
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9413
|
+
const {
|
|
9414
|
+
config: { current: config },
|
|
9415
|
+
callbacks
|
|
9416
|
+
} = useLumiaPassportConfig();
|
|
9331
9417
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9332
9418
|
const { providerType, linkIsLoading, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9333
|
-
const handleLinkSocialProvider =
|
|
9419
|
+
const handleLinkSocialProvider = import_react26.default.useCallback(
|
|
9334
9420
|
async (providerIdRaw) => {
|
|
9335
9421
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9336
9422
|
try {
|
|
@@ -9362,10 +9448,10 @@ function useLinkSocial() {
|
|
|
9362
9448
|
if (!result.success) {
|
|
9363
9449
|
throw new Error(result.error || `${socialProvider.name || providerIdRaw} authentication failed`);
|
|
9364
9450
|
}
|
|
9365
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9451
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9452
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9366
9453
|
try {
|
|
9367
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9368
|
-
notifyProvidersUpdate?.();
|
|
9454
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9369
9455
|
} catch {
|
|
9370
9456
|
}
|
|
9371
9457
|
setProviderType(null);
|
|
@@ -9381,8 +9467,8 @@ function useLinkSocial() {
|
|
|
9381
9467
|
},
|
|
9382
9468
|
[config.social?.providers, callbacks]
|
|
9383
9469
|
);
|
|
9384
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9385
|
-
(0,
|
|
9470
|
+
const [socialLinkStarted, setSocialLinkStarted] = import_react26.default.useState(false);
|
|
9471
|
+
(0, import_react26.useEffect)(() => {
|
|
9386
9472
|
const key = providerType?.toLowerCase();
|
|
9387
9473
|
if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
|
|
9388
9474
|
if (!linkIsLoading && !socialLinkStarted) {
|
|
@@ -9396,16 +9482,19 @@ function useLinkSocial() {
|
|
|
9396
9482
|
}
|
|
9397
9483
|
|
|
9398
9484
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9399
|
-
var
|
|
9400
|
-
var
|
|
9485
|
+
var import_react_query16 = require("@tanstack/react-query");
|
|
9486
|
+
var import_react27 = require("react");
|
|
9401
9487
|
init_telegram2();
|
|
9402
9488
|
function useLinkTelegram() {
|
|
9403
|
-
const {
|
|
9404
|
-
|
|
9405
|
-
|
|
9489
|
+
const {
|
|
9490
|
+
config: { current: config },
|
|
9491
|
+
callbacks
|
|
9492
|
+
} = useLumiaPassportConfig();
|
|
9493
|
+
const qc = (0, import_react_query16.useQueryClient)();
|
|
9494
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9406
9495
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9407
9496
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9408
|
-
const handleLinkTelegram = (0,
|
|
9497
|
+
const handleLinkTelegram = (0, import_react27.useCallback)(async () => {
|
|
9409
9498
|
try {
|
|
9410
9499
|
setLinkIsLoading(true);
|
|
9411
9500
|
setLinkError("");
|
|
@@ -9431,10 +9520,10 @@ function useLinkTelegram() {
|
|
|
9431
9520
|
}
|
|
9432
9521
|
console.log("[ManageWallet] Linking Telegram with data:", user);
|
|
9433
9522
|
await linkTelegram(user);
|
|
9434
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9523
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9524
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9435
9525
|
try {
|
|
9436
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9437
|
-
notifyProvidersUpdate?.();
|
|
9526
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9438
9527
|
} catch {
|
|
9439
9528
|
}
|
|
9440
9529
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9447,14 +9536,14 @@ function useLinkTelegram() {
|
|
|
9447
9536
|
setLinkIsLoading(false);
|
|
9448
9537
|
}
|
|
9449
9538
|
}, [config.social?.providers, callbacks]);
|
|
9450
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = (0,
|
|
9451
|
-
(0,
|
|
9539
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react27.useState)(false);
|
|
9540
|
+
(0, import_react27.useEffect)(() => {
|
|
9452
9541
|
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9453
9542
|
setTelegramLinkStarted(true);
|
|
9454
9543
|
handleLinkTelegram();
|
|
9455
9544
|
}
|
|
9456
9545
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9457
|
-
(0,
|
|
9546
|
+
(0, import_react27.useEffect)(() => {
|
|
9458
9547
|
if (providerType !== "telegram") {
|
|
9459
9548
|
setTelegramLinkStarted(false);
|
|
9460
9549
|
}
|
|
@@ -9540,7 +9629,9 @@ function getConfiguredProviders(config) {
|
|
|
9540
9629
|
);
|
|
9541
9630
|
}
|
|
9542
9631
|
function ManageWalletMenu() {
|
|
9543
|
-
const {
|
|
9632
|
+
const {
|
|
9633
|
+
config: { current: config }
|
|
9634
|
+
} = useLumiaPassportConfig();
|
|
9544
9635
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9545
9636
|
const {
|
|
9546
9637
|
providerType,
|
|
@@ -9558,12 +9649,12 @@ function ManageWalletMenu() {
|
|
|
9558
9649
|
} = useManageWalletStore();
|
|
9559
9650
|
const configuredProviders = getConfiguredProviders(config);
|
|
9560
9651
|
const { data: providers = [], isFetching: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9561
|
-
const renderProviders = (0,
|
|
9652
|
+
const renderProviders = (0, import_react28.useMemo)(() => {
|
|
9562
9653
|
const usedProviders = (0, import_lodash_es.fromPairs)(providers.map((p) => [p.provider, true]));
|
|
9563
9654
|
const used = [];
|
|
9564
9655
|
const unused = [];
|
|
9565
9656
|
POSSIBLE_PROVIDERS.forEach((provider, providerIdx) => {
|
|
9566
|
-
if (!configuredProviders[provider]) return
|
|
9657
|
+
if (!configuredProviders[provider]) return;
|
|
9567
9658
|
const Icon = PROVIDERS_META2[provider].icon;
|
|
9568
9659
|
if (usedProviders[provider]) {
|
|
9569
9660
|
used.push(
|
|
@@ -9653,19 +9744,19 @@ function ManageWalletMenu() {
|
|
|
9653
9744
|
}
|
|
9654
9745
|
|
|
9655
9746
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9656
|
-
var
|
|
9747
|
+
var import_react_query17 = require("@tanstack/react-query");
|
|
9657
9748
|
var import_lucide_react29 = require("lucide-react");
|
|
9658
|
-
var
|
|
9749
|
+
var import_react29 = require("react");
|
|
9659
9750
|
init_auth();
|
|
9660
9751
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
9661
9752
|
function UnlinkProviderMenu() {
|
|
9662
|
-
const qc = (0,
|
|
9663
|
-
const
|
|
9664
|
-
const { callbacks
|
|
9753
|
+
const qc = (0, import_react_query17.useQueryClient)();
|
|
9754
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9755
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9665
9756
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9666
9757
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9667
|
-
const [confirmInput, setConfirmInput] = (0,
|
|
9668
|
-
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0,
|
|
9758
|
+
const [confirmInput, setConfirmInput] = (0, import_react29.useState)("");
|
|
9759
|
+
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query17.useMutation)({
|
|
9669
9760
|
mutationFn: async () => {
|
|
9670
9761
|
if (!confirmUnlink) {
|
|
9671
9762
|
throw new Error("No provider to unlink");
|
|
@@ -9674,10 +9765,10 @@ function UnlinkProviderMenu() {
|
|
|
9674
9765
|
await unlinkProvider(provider, externalId);
|
|
9675
9766
|
},
|
|
9676
9767
|
onSuccess: async () => {
|
|
9677
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9768
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9769
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9678
9770
|
try {
|
|
9679
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9680
|
-
notifyProvidersUpdate?.();
|
|
9771
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9681
9772
|
} catch {
|
|
9682
9773
|
}
|
|
9683
9774
|
setConfirmUnlink(null);
|
|
@@ -9736,110 +9827,424 @@ function UnlinkProviderMenu() {
|
|
|
9736
9827
|
] });
|
|
9737
9828
|
}
|
|
9738
9829
|
|
|
9739
|
-
// src/internal/components/
|
|
9740
|
-
var
|
|
9741
|
-
var
|
|
9742
|
-
|
|
9743
|
-
|
|
9744
|
-
|
|
9745
|
-
var
|
|
9746
|
-
|
|
9747
|
-
|
|
9748
|
-
|
|
9749
|
-
|
|
9750
|
-
|
|
9751
|
-
|
|
9752
|
-
|
|
9753
|
-
|
|
9754
|
-
|
|
9755
|
-
|
|
9756
|
-
|
|
9757
|
-
|
|
9758
|
-
|
|
9759
|
-
const
|
|
9760
|
-
|
|
9761
|
-
|
|
9762
|
-
|
|
9763
|
-
|
|
9764
|
-
|
|
9765
|
-
|
|
9766
|
-
|
|
9767
|
-
|
|
9768
|
-
|
|
9769
|
-
|
|
9770
|
-
|
|
9771
|
-
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
|
|
9783
|
-
|
|
9784
|
-
|
|
9785
|
-
|
|
9786
|
-
|
|
9787
|
-
|
|
9788
|
-
|
|
9789
|
-
|
|
9790
|
-
|
|
9791
|
-
|
|
9792
|
-
|
|
9793
|
-
|
|
9794
|
-
|
|
9830
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9831
|
+
var import_lucide_react31 = require("lucide-react");
|
|
9832
|
+
var import_react31 = require("react");
|
|
9833
|
+
|
|
9834
|
+
// src/modules/assets.ts
|
|
9835
|
+
var import_react30 = __toESM(require("react"), 1);
|
|
9836
|
+
var import_wagmi = require("wagmi");
|
|
9837
|
+
var import_viem4 = require("viem");
|
|
9838
|
+
init_base();
|
|
9839
|
+
var COMMON_TOKENS = [
|
|
9840
|
+
// Add real token addresses here when available
|
|
9841
|
+
// {
|
|
9842
|
+
// address: '0x....',
|
|
9843
|
+
// name: 'USD Coin',
|
|
9844
|
+
// symbol: 'USDC',
|
|
9845
|
+
// decimals: 6,
|
|
9846
|
+
// logo: 'https://...'
|
|
9847
|
+
// }
|
|
9848
|
+
];
|
|
9849
|
+
function useAssets(address) {
|
|
9850
|
+
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = (0, import_wagmi.useBalance)({
|
|
9851
|
+
address,
|
|
9852
|
+
chainId: lumiaBeam.id,
|
|
9853
|
+
query: {
|
|
9854
|
+
enabled: !!address
|
|
9855
|
+
}
|
|
9856
|
+
});
|
|
9857
|
+
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
9858
|
+
address: token.address,
|
|
9859
|
+
abi: import_viem4.erc20Abi,
|
|
9860
|
+
functionName: "balanceOf",
|
|
9861
|
+
args: [address],
|
|
9862
|
+
chainId: lumiaBeam.id
|
|
9863
|
+
}));
|
|
9864
|
+
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
9865
|
+
contracts: tokenContracts,
|
|
9866
|
+
query: {
|
|
9867
|
+
enabled: !!address && COMMON_TOKENS.length > 0
|
|
9868
|
+
}
|
|
9869
|
+
});
|
|
9870
|
+
const { data: tokenBalances, isLoading: tokenBalancesLoading, refetch: refetchTokenBalances } = readContractsResult;
|
|
9871
|
+
const getAllAssets = () => {
|
|
9872
|
+
const assets = [];
|
|
9873
|
+
if (nativeBalance) {
|
|
9874
|
+
assets.push({
|
|
9875
|
+
type: "native",
|
|
9876
|
+
name: "Lumia",
|
|
9877
|
+
symbol: "LUMIA",
|
|
9878
|
+
balance: nativeBalance.value.toString(),
|
|
9879
|
+
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
9880
|
+
decimals: 18
|
|
9881
|
+
});
|
|
9882
|
+
}
|
|
9883
|
+
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
9884
|
+
tokenBalances.forEach((balance, index) => {
|
|
9885
|
+
const token = COMMON_TOKENS[index];
|
|
9886
|
+
if (balance.status === "success" && balance.result) {
|
|
9887
|
+
const balanceValue = balance.result;
|
|
9888
|
+
const formattedBalance = (0, import_viem4.formatUnits)(balanceValue, token.decimals);
|
|
9889
|
+
assets.push({
|
|
9890
|
+
type: "erc20",
|
|
9891
|
+
address: token.address,
|
|
9892
|
+
name: token.name,
|
|
9893
|
+
symbol: token.symbol,
|
|
9894
|
+
balance: balanceValue.toString(),
|
|
9895
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
9896
|
+
decimals: token.decimals,
|
|
9897
|
+
logo: token.logo
|
|
9898
|
+
});
|
|
9899
|
+
}
|
|
9900
|
+
});
|
|
9901
|
+
}
|
|
9902
|
+
return assets;
|
|
9903
|
+
};
|
|
9904
|
+
const getTokenBalance = (tokenAddress) => {
|
|
9905
|
+
const tokenIndex = COMMON_TOKENS.findIndex(
|
|
9906
|
+
(token2) => token2.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
9907
|
+
);
|
|
9908
|
+
if (tokenIndex === -1 || !tokenBalances?.[tokenIndex]) {
|
|
9909
|
+
return null;
|
|
9910
|
+
}
|
|
9911
|
+
const balance = tokenBalances[tokenIndex];
|
|
9912
|
+
const token = COMMON_TOKENS[tokenIndex];
|
|
9913
|
+
if (balance.status === "success" && balance.result) {
|
|
9914
|
+
const balanceValue = balance.result;
|
|
9915
|
+
const formattedBalance = (0, import_viem4.formatUnits)(balanceValue, token.decimals);
|
|
9916
|
+
return {
|
|
9917
|
+
address: token.address,
|
|
9918
|
+
name: token.name,
|
|
9919
|
+
symbol: token.symbol,
|
|
9920
|
+
decimals: token.decimals,
|
|
9921
|
+
balance: balanceValue.toString(),
|
|
9922
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
9923
|
+
logo: token.logo
|
|
9924
|
+
};
|
|
9795
9925
|
}
|
|
9796
|
-
}, [userId]);
|
|
9797
|
-
(0, import_react29.useEffect)(() => {
|
|
9798
|
-
if (open) fetchRecovery();
|
|
9799
|
-
}, [open, fetchRecovery]);
|
|
9800
|
-
const parseOS = (ua) => {
|
|
9801
|
-
if (!ua) return null;
|
|
9802
|
-
if (ua.includes("Mac OS X")) return "macOS";
|
|
9803
|
-
if (ua.includes("Windows")) return "Windows";
|
|
9804
|
-
if (ua.includes("Android")) return "Android";
|
|
9805
|
-
if (ua.includes("Linux")) return "Linux";
|
|
9806
|
-
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
9807
9926
|
return null;
|
|
9808
9927
|
};
|
|
9809
|
-
|
|
9810
|
-
|
|
9811
|
-
|
|
9812
|
-
|
|
9813
|
-
|
|
9814
|
-
|
|
9815
|
-
|
|
9816
|
-
|
|
9817
|
-
|
|
9818
|
-
|
|
9819
|
-
|
|
9820
|
-
|
|
9821
|
-
|
|
9822
|
-
|
|
9823
|
-
|
|
9824
|
-
|
|
9825
|
-
|
|
9826
|
-
|
|
9928
|
+
const refreshBalances = async () => {
|
|
9929
|
+
await Promise.all([
|
|
9930
|
+
refetchNativeBalance(),
|
|
9931
|
+
refetchTokenBalances()
|
|
9932
|
+
]);
|
|
9933
|
+
};
|
|
9934
|
+
return {
|
|
9935
|
+
nativeBalance,
|
|
9936
|
+
tokenBalances,
|
|
9937
|
+
assets: getAllAssets(),
|
|
9938
|
+
getTokenBalance,
|
|
9939
|
+
refreshBalances,
|
|
9940
|
+
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
9941
|
+
isConnected: !!address
|
|
9942
|
+
};
|
|
9943
|
+
}
|
|
9944
|
+
function useTokenInfo(tokenAddress) {
|
|
9945
|
+
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
9946
|
+
contracts: [
|
|
9947
|
+
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
9948
|
+
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
9949
|
+
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
9950
|
+
]
|
|
9951
|
+
});
|
|
9952
|
+
const { data: tokenData, isLoading } = readContractsResult;
|
|
9953
|
+
if (!tokenData || isLoading) {
|
|
9954
|
+
return { isLoading, tokenInfo: null };
|
|
9955
|
+
}
|
|
9956
|
+
const [nameResult, symbolResult, decimalsResult] = tokenData;
|
|
9957
|
+
if (nameResult.status === "success" && symbolResult.status === "success" && decimalsResult.status === "success") {
|
|
9958
|
+
return {
|
|
9959
|
+
isLoading: false,
|
|
9960
|
+
tokenInfo: {
|
|
9961
|
+
name: nameResult.result,
|
|
9962
|
+
symbol: symbolResult.result,
|
|
9963
|
+
decimals: decimalsResult.result,
|
|
9964
|
+
address: tokenAddress
|
|
9965
|
+
}
|
|
9966
|
+
};
|
|
9967
|
+
}
|
|
9968
|
+
return { isLoading: false, tokenInfo: null };
|
|
9969
|
+
}
|
|
9970
|
+
function useTokenBalance(tokenAddress, userAddress) {
|
|
9971
|
+
const { data: balance, isLoading, refetch } = (0, import_wagmi.useReadContract)({
|
|
9972
|
+
address: tokenAddress,
|
|
9973
|
+
abi: import_viem4.erc20Abi,
|
|
9974
|
+
functionName: "balanceOf",
|
|
9975
|
+
args: userAddress ? [userAddress] : void 0,
|
|
9976
|
+
chainId: lumiaBeam.id,
|
|
9977
|
+
query: {
|
|
9978
|
+
enabled: !!userAddress
|
|
9979
|
+
}
|
|
9980
|
+
});
|
|
9981
|
+
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
9982
|
+
const formattedBalance = import_react30.default.useMemo(() => {
|
|
9983
|
+
if (!balance || !tokenInfo) return "0";
|
|
9984
|
+
return (0, import_viem4.formatUnits)(balance, tokenInfo.decimals);
|
|
9985
|
+
}, [balance, tokenInfo]);
|
|
9986
|
+
return {
|
|
9987
|
+
balance,
|
|
9988
|
+
formattedBalance,
|
|
9989
|
+
tokenInfo,
|
|
9990
|
+
isLoading,
|
|
9991
|
+
refetch
|
|
9992
|
+
};
|
|
9993
|
+
}
|
|
9994
|
+
|
|
9995
|
+
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
9996
|
+
var import_react_query18 = require("@tanstack/react-query");
|
|
9997
|
+
var import_lucide_react30 = require("lucide-react");
|
|
9998
|
+
init_base();
|
|
9999
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
10000
|
+
var price16 = Intl.NumberFormat("en-US", { minimumFractionDigits: 16, maximumFractionDigits: 16 });
|
|
10001
|
+
function formatValue(price) {
|
|
10002
|
+
console.log("[---PRICE---]", price);
|
|
10003
|
+
if (!price) return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: `0.00` });
|
|
10004
|
+
if (price < 0.01) {
|
|
10005
|
+
const strigified = price16.format(price);
|
|
10006
|
+
const absValue = parseInt(strigified.replace(/^0\./, "")).toString().slice(0, 2);
|
|
10007
|
+
const zeroQnt = strigified.replace(/^0\./, "").split("").findIndex((el) => +el > 0);
|
|
10008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
|
|
10009
|
+
`0.0`,
|
|
10010
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("sub", { className: "text-[10px]", children: zeroQnt }),
|
|
10011
|
+
absValue
|
|
10012
|
+
] });
|
|
10013
|
+
}
|
|
10014
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: price.toFixed(2) });
|
|
10015
|
+
}
|
|
10016
|
+
function openInExplorer(address) {
|
|
10017
|
+
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
10018
|
+
}
|
|
10019
|
+
async function getAssetRate(symbol) {
|
|
10020
|
+
const assetURL = `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}USDT`;
|
|
10021
|
+
const response = await fetch(assetURL);
|
|
10022
|
+
return await response.json();
|
|
10023
|
+
}
|
|
10024
|
+
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
10025
|
+
function PortfolioItem(props) {
|
|
10026
|
+
const { address, asset } = props;
|
|
10027
|
+
const { data: assetRate, isLoading: isRateLoading } = (0, import_react_query18.useQuery)({
|
|
10028
|
+
retry: false,
|
|
10029
|
+
staleTime: 4 * 60 * 1e3,
|
|
10030
|
+
enabled: !!address && !!asset.symbol,
|
|
10031
|
+
queryKey: [ASSETS_RATES_QUERY_KEY, address, asset.symbol],
|
|
10032
|
+
queryFn: async () => await getAssetRate(asset.symbol)
|
|
10033
|
+
});
|
|
10034
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
10035
|
+
"div",
|
|
10036
|
+
{
|
|
10037
|
+
className: cn(
|
|
10038
|
+
"group cursor-pointer",
|
|
10039
|
+
"w-full flex items-center gap-[var(--l-pass-gap)]",
|
|
10040
|
+
"hover:text-[var(--l-pass-fg-h)] transition-colors"
|
|
10041
|
+
),
|
|
10042
|
+
onClick: () => openInExplorer(asset.address),
|
|
10043
|
+
children: [
|
|
10044
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10045
|
+
"div",
|
|
10046
|
+
{
|
|
10047
|
+
className: cn(
|
|
10048
|
+
"flex-none w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center",
|
|
10049
|
+
"group-hover:opacity-60 transition-opacity"
|
|
10050
|
+
),
|
|
10051
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) })
|
|
10052
|
+
}
|
|
10053
|
+
),
|
|
10054
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "w-full flex-1", children: [
|
|
10055
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
10056
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: asset.name }),
|
|
10057
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10058
|
+
] }),
|
|
10059
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: [
|
|
10060
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
|
|
10061
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: formatValue(Number(asset.formattedBalance)) }),
|
|
10062
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: " " + asset.symbol })
|
|
10063
|
+
] }),
|
|
10064
|
+
isRateLoading && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react30.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
10065
|
+
!!assetRate?.price && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: (Number(asset.formattedBalance) * Number(assetRate.price)).toLocaleString("en-US", {
|
|
10066
|
+
minimumFractionDigits: 2,
|
|
10067
|
+
maximumFractionDigits: 2,
|
|
10068
|
+
currency: "USD",
|
|
10069
|
+
style: "currency"
|
|
10070
|
+
}) })
|
|
10071
|
+
] })
|
|
10072
|
+
] })
|
|
10073
|
+
]
|
|
10074
|
+
}
|
|
10075
|
+
);
|
|
10076
|
+
}
|
|
10077
|
+
{
|
|
10078
|
+
}
|
|
10079
|
+
|
|
10080
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10081
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
10082
|
+
function PortfolioMenu() {
|
|
10083
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10084
|
+
const assetsContainerListRef = (0, import_react31.useRef)(null);
|
|
10085
|
+
const assetsListRef = (0, import_react31.useRef)(null);
|
|
10086
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10087
|
+
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10088
|
+
(0, import_react31.useEffect)(() => {
|
|
10089
|
+
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10090
|
+
if (assetsContainerListRef.current) {
|
|
10091
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10092
|
+
"--l-pass-list-bd",
|
|
10093
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
10094
|
+
// hide border if no scrollbar
|
|
10095
|
+
);
|
|
10096
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10097
|
+
"--l-pass-list-scrollbar-pd-l",
|
|
10098
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "4px" : "0px"
|
|
10099
|
+
// remove padding if no scrollbar
|
|
10100
|
+
);
|
|
10101
|
+
}
|
|
10102
|
+
}, []);
|
|
10103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10104
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10105
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10106
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
10107
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.RefreshCw, { className: "h-4 w-4" }) })
|
|
10108
|
+
] }),
|
|
10109
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10110
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
10111
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.Loader, { className: "h-5 w-5 animate-spin" }),
|
|
10112
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
10113
|
+
] }),
|
|
10114
|
+
!isLoading && assets.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
10115
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.Gem, { className: "w-12 h-12 mb-2" }),
|
|
10116
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "No assets found" })
|
|
10117
|
+
] }),
|
|
10118
|
+
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10119
|
+
"div",
|
|
10120
|
+
{
|
|
10121
|
+
ref: assetsContainerListRef,
|
|
10122
|
+
className: "list-scrollbar-y relative border-t border-b border-[var(--l-pass-list-bd)]",
|
|
10123
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10124
|
+
"div",
|
|
10125
|
+
{
|
|
10126
|
+
ref: assetsListRef,
|
|
10127
|
+
className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]",
|
|
10128
|
+
children: assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10129
|
+
PortfolioItem,
|
|
10130
|
+
{
|
|
10131
|
+
address,
|
|
10132
|
+
asset
|
|
10133
|
+
},
|
|
10134
|
+
`${asset.type}-${asset.address || "native"}-${index}`
|
|
10135
|
+
))
|
|
10136
|
+
}
|
|
10137
|
+
)
|
|
10138
|
+
}
|
|
10139
|
+
)
|
|
10140
|
+
] })
|
|
10141
|
+
] });
|
|
10142
|
+
}
|
|
10143
|
+
|
|
10144
|
+
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10145
|
+
var import_lucide_react32 = require("lucide-react");
|
|
10146
|
+
var import_react32 = require("react");
|
|
10147
|
+
init_auth();
|
|
10148
|
+
init_keyshare();
|
|
10149
|
+
init_vaultClient();
|
|
10150
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
10151
|
+
function SecurityMenu() {
|
|
10152
|
+
const page = useLayoutDataStore((st) => st.page);
|
|
10153
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10154
|
+
const open = page === "security";
|
|
10155
|
+
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
10156
|
+
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
10157
|
+
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10158
|
+
const [isRefreshing, setIsRefreshing] = (0, import_react32.useState)(false);
|
|
10159
|
+
const [localInfo, setLocalInfo] = (0, import_react32.useState)(null);
|
|
10160
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = (0, import_react32.useState)(null);
|
|
10161
|
+
const [recoveryBrowser, setRecoveryBrowser] = (0, import_react32.useState)(null);
|
|
10162
|
+
const [recoveryUa, setRecoveryUa] = (0, import_react32.useState)(null);
|
|
10163
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = (0, import_react32.useState)(null);
|
|
10164
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = (0, import_react32.useState)(null);
|
|
10165
|
+
const [recoveryCountry, setRecoveryCountry] = (0, import_react32.useState)(null);
|
|
10166
|
+
const [hasServerBackup, setHasServerBackup] = (0, import_react32.useState)(false);
|
|
10167
|
+
const [trustedApps, setTrustedApps] = (0, import_react32.useState)([]);
|
|
10168
|
+
const [appToRemove, setAppToRemove] = (0, import_react32.useState)(null);
|
|
10169
|
+
const fetchRecovery = (0, import_react32.useCallback)(async () => {
|
|
10170
|
+
if (!userId) return;
|
|
10171
|
+
try {
|
|
10172
|
+
setIsRefreshing(true);
|
|
10173
|
+
const keyshareInfo = await getKeyshareInfo(userId);
|
|
10174
|
+
setLocalInfo(keyshareInfo);
|
|
10175
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
10176
|
+
try {
|
|
10177
|
+
console.log("[SecurityModal] Loading trusted apps for user:", userId);
|
|
10178
|
+
const iframeManager = getIframeManager2();
|
|
10179
|
+
const apps = await iframeManager.getTrustedApps(userId);
|
|
10180
|
+
console.log("[SecurityModal] Received trusted apps:", apps);
|
|
10181
|
+
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
10182
|
+
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
10183
|
+
setTrustedApps(apps);
|
|
10184
|
+
} catch (error) {
|
|
10185
|
+
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
10186
|
+
setTrustedApps([]);
|
|
10187
|
+
}
|
|
10188
|
+
const stats = await getShareRecoveryStats();
|
|
10189
|
+
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
10190
|
+
setHasServerBackup(!!hasRecoveryData);
|
|
10191
|
+
const created = stats?.created;
|
|
10192
|
+
setRecoveryCreatedAt(created?.at || null);
|
|
10193
|
+
setRecoveryBrowser(created?.browser || null);
|
|
10194
|
+
setRecoveryUa(created?.ua || null);
|
|
10195
|
+
setRecoveryDeviceId(created?.deviceId || null);
|
|
10196
|
+
setRecoveryDeviceName(created?.deviceName || null);
|
|
10197
|
+
setRecoveryCountry(created?.country || null);
|
|
10198
|
+
} finally {
|
|
10199
|
+
setIsRefreshing(false);
|
|
10200
|
+
}
|
|
10201
|
+
}, [userId]);
|
|
10202
|
+
(0, import_react32.useEffect)(() => {
|
|
10203
|
+
if (open) fetchRecovery();
|
|
10204
|
+
}, [open, fetchRecovery]);
|
|
10205
|
+
const parseOS = (ua) => {
|
|
10206
|
+
if (!ua) return null;
|
|
10207
|
+
if (ua.includes("Mac OS X")) return "macOS";
|
|
10208
|
+
if (ua.includes("Windows")) return "Windows";
|
|
10209
|
+
if (ua.includes("Android")) return "Android";
|
|
10210
|
+
if (ua.includes("Linux")) return "Linux";
|
|
10211
|
+
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
10212
|
+
return null;
|
|
10213
|
+
};
|
|
10214
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10215
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
10216
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10217
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
10218
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
10219
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { variant: "ghost", size: "icon", title: "Refresh", onClick: fetchRecovery, children: isRefreshing ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.RefreshCw, { className: "h-4 w-4" }) })
|
|
10220
|
+
] })
|
|
10221
|
+
] }) }),
|
|
10222
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
10223
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10224
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10225
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Cloud, { className: "h-4 w-4" }),
|
|
10226
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Server" })
|
|
10227
|
+
] }),
|
|
10228
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
10229
|
+
"span",
|
|
10230
|
+
{
|
|
10231
|
+
className: cn(
|
|
9827
10232
|
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
9828
10233
|
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9829
10234
|
),
|
|
9830
10235
|
children: [
|
|
9831
|
-
serverHasKeyshare ? /* @__PURE__ */ (0,
|
|
10236
|
+
serverHasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
9832
10237
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
9833
10238
|
]
|
|
9834
10239
|
}
|
|
9835
10240
|
)
|
|
9836
10241
|
] }),
|
|
9837
|
-
/* @__PURE__ */ (0,
|
|
9838
|
-
/* @__PURE__ */ (0,
|
|
9839
|
-
/* @__PURE__ */ (0,
|
|
9840
|
-
/* @__PURE__ */ (0,
|
|
10242
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10243
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10244
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Laptop, { className: "h-4 w-4" }),
|
|
10245
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Local" })
|
|
9841
10246
|
] }),
|
|
9842
|
-
/* @__PURE__ */ (0,
|
|
10247
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
9843
10248
|
"span",
|
|
9844
10249
|
{
|
|
9845
10250
|
className: cn(
|
|
@@ -9847,18 +10252,18 @@ function SecurityMenu() {
|
|
|
9847
10252
|
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9848
10253
|
),
|
|
9849
10254
|
children: [
|
|
9850
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */ (0,
|
|
10255
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
9851
10256
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
9852
10257
|
]
|
|
9853
10258
|
}
|
|
9854
10259
|
)
|
|
9855
10260
|
] }),
|
|
9856
|
-
/* @__PURE__ */ (0,
|
|
9857
|
-
/* @__PURE__ */ (0,
|
|
9858
|
-
/* @__PURE__ */ (0,
|
|
9859
|
-
/* @__PURE__ */ (0,
|
|
10261
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10262
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10263
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Shield, { className: "h-4 w-4" }),
|
|
10264
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Vault" })
|
|
9860
10265
|
] }),
|
|
9861
|
-
/* @__PURE__ */ (0,
|
|
10266
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
9862
10267
|
"span",
|
|
9863
10268
|
{
|
|
9864
10269
|
className: cn(
|
|
@@ -9866,101 +10271,101 @@ function SecurityMenu() {
|
|
|
9866
10271
|
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9867
10272
|
),
|
|
9868
10273
|
children: [
|
|
9869
|
-
hasServerBackup ? /* @__PURE__ */ (0,
|
|
10274
|
+
hasServerBackup ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
9870
10275
|
hasServerBackup ? "Ready" : "None"
|
|
9871
10276
|
]
|
|
9872
10277
|
}
|
|
9873
10278
|
)
|
|
9874
10279
|
] })
|
|
9875
10280
|
] }),
|
|
9876
|
-
/* @__PURE__ */ (0,
|
|
9877
|
-
localInfo?.hasKeyshare && /* @__PURE__ */ (0,
|
|
9878
|
-
localInfo.ownerAddress && /* @__PURE__ */ (0,
|
|
9879
|
-
/* @__PURE__ */ (0,
|
|
9880
|
-
/* @__PURE__ */ (0,
|
|
10281
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
10282
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10283
|
+
localInfo.ownerAddress && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10284
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Owner: " }),
|
|
10285
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
9881
10286
|
] }),
|
|
9882
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0,
|
|
9883
|
-
/* @__PURE__ */ (0,
|
|
9884
|
-
/* @__PURE__ */ (0,
|
|
10287
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10288
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Size: " }),
|
|
10289
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
9885
10290
|
] }),
|
|
9886
|
-
localInfo.sessionId && /* @__PURE__ */ (0,
|
|
9887
|
-
/* @__PURE__ */ (0,
|
|
9888
|
-
/* @__PURE__ */ (0,
|
|
10291
|
+
localInfo.sessionId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10292
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Session: " }),
|
|
10293
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
9889
10294
|
] })
|
|
9890
10295
|
] }),
|
|
9891
|
-
/* @__PURE__ */ (0,
|
|
9892
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0,
|
|
9893
|
-
/* @__PURE__ */ (0,
|
|
9894
|
-
/* @__PURE__ */ (0,
|
|
10296
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10297
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10298
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Server, { className: "h-2.5 w-2.5" }),
|
|
10299
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9895
10300
|
"Server: ",
|
|
9896
10301
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
9897
10302
|
] })
|
|
9898
10303
|
] }),
|
|
9899
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
9900
|
-
/* @__PURE__ */ (0,
|
|
9901
|
-
/* @__PURE__ */ (0,
|
|
10304
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10305
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Server, { className: "h-2.5 w-2.5" }),
|
|
10306
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9902
10307
|
"Server: ",
|
|
9903
10308
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
9904
10309
|
] })
|
|
9905
10310
|
] }),
|
|
9906
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0,
|
|
9907
|
-
/* @__PURE__ */ (0,
|
|
9908
|
-
/* @__PURE__ */ (0,
|
|
10311
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10312
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Cloud, { className: "h-2.5 w-2.5" }),
|
|
10313
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9909
10314
|
"Cloud: ",
|
|
9910
10315
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
9911
10316
|
] })
|
|
9912
10317
|
] }),
|
|
9913
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0,
|
|
9914
|
-
/* @__PURE__ */ (0,
|
|
9915
|
-
/* @__PURE__ */ (0,
|
|
10318
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10319
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.HardDrive, { className: "h-2.5 w-2.5" }),
|
|
10320
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9916
10321
|
"Local: ",
|
|
9917
10322
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
9918
10323
|
] })
|
|
9919
10324
|
] })
|
|
9920
10325
|
] }),
|
|
9921
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0,
|
|
9922
|
-
/* @__PURE__ */ (0,
|
|
9923
|
-
recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
10326
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10327
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: "Device Information:" }),
|
|
10328
|
+
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9924
10329
|
"Created: ",
|
|
9925
10330
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
9926
10331
|
" "
|
|
9927
10332
|
] }),
|
|
9928
|
-
recoveryCountry && /* @__PURE__ */ (0,
|
|
10333
|
+
recoveryCountry && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9929
10334
|
"Country: ",
|
|
9930
10335
|
recoveryCountry
|
|
9931
10336
|
] }),
|
|
9932
|
-
recoveryBrowser && /* @__PURE__ */ (0,
|
|
10337
|
+
recoveryBrowser && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9933
10338
|
"Browser: ",
|
|
9934
10339
|
recoveryBrowser
|
|
9935
10340
|
] }),
|
|
9936
|
-
parseOS(recoveryUa) && /* @__PURE__ */ (0,
|
|
10341
|
+
parseOS(recoveryUa) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9937
10342
|
"OS: ",
|
|
9938
10343
|
parseOS(recoveryUa)
|
|
9939
10344
|
] }),
|
|
9940
|
-
recoveryDeviceName && /* @__PURE__ */ (0,
|
|
10345
|
+
recoveryDeviceName && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9941
10346
|
"Device: ",
|
|
9942
10347
|
recoveryDeviceName
|
|
9943
10348
|
] }),
|
|
9944
|
-
recoveryDeviceId && /* @__PURE__ */ (0,
|
|
10349
|
+
recoveryDeviceId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9945
10350
|
"Device ID: ",
|
|
9946
|
-
/* @__PURE__ */ (0,
|
|
10351
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
9947
10352
|
] })
|
|
9948
10353
|
] }),
|
|
9949
|
-
trustedApps.length > 0 && /* @__PURE__ */ (0,
|
|
9950
|
-
/* @__PURE__ */ (0,
|
|
9951
|
-
/* @__PURE__ */ (0,
|
|
10354
|
+
trustedApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full space-y-2", children: [
|
|
10355
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
10356
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
9952
10357
|
"div",
|
|
9953
10358
|
{
|
|
9954
10359
|
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
9955
10360
|
children: [
|
|
9956
|
-
/* @__PURE__ */ (0,
|
|
9957
|
-
/* @__PURE__ */ (0,
|
|
9958
|
-
/* @__PURE__ */ (0,
|
|
10361
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
10362
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
10363
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
9959
10364
|
"Trusted: ",
|
|
9960
10365
|
new Date(app.trustedAt).toLocaleDateString()
|
|
9961
10366
|
] })
|
|
9962
10367
|
] }),
|
|
9963
|
-
/* @__PURE__ */ (0,
|
|
10368
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
9964
10369
|
Button,
|
|
9965
10370
|
{
|
|
9966
10371
|
variant: "ghost",
|
|
@@ -9972,7 +10377,7 @@ function SecurityMenu() {
|
|
|
9972
10377
|
origin: app.origin,
|
|
9973
10378
|
hostname: new URL(app.origin).hostname
|
|
9974
10379
|
}),
|
|
9975
|
-
children: /* @__PURE__ */ (0,
|
|
10380
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Trash2, { className: "h-3 w-3" })
|
|
9976
10381
|
}
|
|
9977
10382
|
)
|
|
9978
10383
|
]
|
|
@@ -9985,58 +10390,62 @@ function SecurityMenu() {
|
|
|
9985
10390
|
}
|
|
9986
10391
|
|
|
9987
10392
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
9988
|
-
var
|
|
9989
|
-
var
|
|
10393
|
+
var import_lucide_react33 = require("lucide-react");
|
|
10394
|
+
var import_react34 = require("react");
|
|
9990
10395
|
var import_viem6 = require("viem");
|
|
9991
10396
|
var import_wagmi2 = require("wagmi");
|
|
9992
10397
|
|
|
9993
10398
|
// src/hooks/useSendTransaction.ts
|
|
9994
|
-
var
|
|
9995
|
-
var
|
|
10399
|
+
var import_react33 = require("react");
|
|
10400
|
+
var import_viem5 = require("viem");
|
|
9996
10401
|
init_account();
|
|
9997
10402
|
function useSendTransaction() {
|
|
9998
|
-
const
|
|
9999
|
-
const
|
|
10000
|
-
const [
|
|
10001
|
-
const [
|
|
10002
|
-
const
|
|
10003
|
-
|
|
10004
|
-
|
|
10005
|
-
|
|
10006
|
-
|
|
10007
|
-
|
|
10008
|
-
|
|
10009
|
-
|
|
10010
|
-
|
|
10011
|
-
|
|
10012
|
-
|
|
10013
|
-
|
|
10014
|
-
|
|
10015
|
-
|
|
10016
|
-
|
|
10017
|
-
|
|
10018
|
-
|
|
10019
|
-
|
|
10020
|
-
|
|
10021
|
-
|
|
10022
|
-
|
|
10023
|
-
|
|
10024
|
-
|
|
10025
|
-
|
|
10026
|
-
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
|
|
10030
|
-
|
|
10031
|
-
|
|
10032
|
-
|
|
10033
|
-
|
|
10034
|
-
|
|
10035
|
-
|
|
10036
|
-
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10403
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
10404
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10405
|
+
const [isLoading, setIsLoading] = (0, import_react33.useState)(false);
|
|
10406
|
+
const [error, setError] = (0, import_react33.useState)(null);
|
|
10407
|
+
const [userOpHash, setUserOpHash] = (0, import_react33.useState)(null);
|
|
10408
|
+
const sendTransaction = (0, import_react33.useCallback)(
|
|
10409
|
+
async (params) => {
|
|
10410
|
+
if (!session || !address) {
|
|
10411
|
+
setError("No active session");
|
|
10412
|
+
return null;
|
|
10413
|
+
}
|
|
10414
|
+
if (!(0, import_viem5.isAddress)(params.to)) {
|
|
10415
|
+
setError("Invalid recipient address");
|
|
10416
|
+
return null;
|
|
10417
|
+
}
|
|
10418
|
+
const value = parseFloat(params.value);
|
|
10419
|
+
if (isNaN(value) || value < 0) {
|
|
10420
|
+
setError("Invalid amount");
|
|
10421
|
+
return null;
|
|
10422
|
+
}
|
|
10423
|
+
setIsLoading(true);
|
|
10424
|
+
setError(null);
|
|
10425
|
+
setUserOpHash(null);
|
|
10426
|
+
try {
|
|
10427
|
+
const valueWei = (0, import_viem5.parseEther)(params.value).toString();
|
|
10428
|
+
const hash = await sendUserOperation(
|
|
10429
|
+
session,
|
|
10430
|
+
params.to,
|
|
10431
|
+
valueWei,
|
|
10432
|
+
params.data || "0x",
|
|
10433
|
+
"standard",
|
|
10434
|
+
"v0.7"
|
|
10435
|
+
);
|
|
10436
|
+
setUserOpHash(hash);
|
|
10437
|
+
return hash;
|
|
10438
|
+
} catch (err) {
|
|
10439
|
+
const errorMessage = err instanceof Error ? err.message : "Transaction failed";
|
|
10440
|
+
setError(errorMessage);
|
|
10441
|
+
return null;
|
|
10442
|
+
} finally {
|
|
10443
|
+
setIsLoading(false);
|
|
10444
|
+
}
|
|
10445
|
+
},
|
|
10446
|
+
[session, address]
|
|
10447
|
+
);
|
|
10448
|
+
const reset = (0, import_react33.useCallback)(() => {
|
|
10040
10449
|
setError(null);
|
|
10041
10450
|
setUserOpHash(null);
|
|
10042
10451
|
setIsLoading(false);
|
|
@@ -10050,188 +10459,27 @@ function useSendTransaction() {
|
|
|
10050
10459
|
};
|
|
10051
10460
|
}
|
|
10052
10461
|
|
|
10053
|
-
// src/modules/assets.ts
|
|
10054
|
-
var import_react31 = __toESM(require("react"), 1);
|
|
10055
|
-
var import_wagmi = require("wagmi");
|
|
10056
|
-
var import_viem5 = require("viem");
|
|
10057
|
-
init_base();
|
|
10058
|
-
var COMMON_TOKENS = [
|
|
10059
|
-
// Add real token addresses here when available
|
|
10060
|
-
// {
|
|
10061
|
-
// address: '0x....',
|
|
10062
|
-
// name: 'USD Coin',
|
|
10063
|
-
// symbol: 'USDC',
|
|
10064
|
-
// decimals: 6,
|
|
10065
|
-
// logo: 'https://...'
|
|
10066
|
-
// }
|
|
10067
|
-
];
|
|
10068
|
-
function useAssets(address) {
|
|
10069
|
-
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = (0, import_wagmi.useBalance)({
|
|
10070
|
-
address,
|
|
10071
|
-
chainId: lumiaBeam.id,
|
|
10072
|
-
query: {
|
|
10073
|
-
enabled: !!address
|
|
10074
|
-
}
|
|
10075
|
-
});
|
|
10076
|
-
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
10077
|
-
address: token.address,
|
|
10078
|
-
abi: import_viem5.erc20Abi,
|
|
10079
|
-
functionName: "balanceOf",
|
|
10080
|
-
args: [address],
|
|
10081
|
-
chainId: lumiaBeam.id
|
|
10082
|
-
}));
|
|
10083
|
-
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
10084
|
-
contracts: tokenContracts,
|
|
10085
|
-
query: {
|
|
10086
|
-
enabled: !!address && COMMON_TOKENS.length > 0
|
|
10087
|
-
}
|
|
10088
|
-
});
|
|
10089
|
-
const { data: tokenBalances, isLoading: tokenBalancesLoading, refetch: refetchTokenBalances } = readContractsResult;
|
|
10090
|
-
const getAllAssets = () => {
|
|
10091
|
-
const assets = [];
|
|
10092
|
-
if (nativeBalance) {
|
|
10093
|
-
assets.push({
|
|
10094
|
-
type: "native",
|
|
10095
|
-
name: "Lumia",
|
|
10096
|
-
symbol: "LUMIA",
|
|
10097
|
-
balance: nativeBalance.value.toString(),
|
|
10098
|
-
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
10099
|
-
decimals: 18
|
|
10100
|
-
});
|
|
10101
|
-
}
|
|
10102
|
-
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
10103
|
-
tokenBalances.forEach((balance, index) => {
|
|
10104
|
-
const token = COMMON_TOKENS[index];
|
|
10105
|
-
if (balance.status === "success" && balance.result) {
|
|
10106
|
-
const balanceValue = balance.result;
|
|
10107
|
-
const formattedBalance = (0, import_viem5.formatUnits)(balanceValue, token.decimals);
|
|
10108
|
-
assets.push({
|
|
10109
|
-
type: "erc20",
|
|
10110
|
-
address: token.address,
|
|
10111
|
-
name: token.name,
|
|
10112
|
-
symbol: token.symbol,
|
|
10113
|
-
balance: balanceValue.toString(),
|
|
10114
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
10115
|
-
decimals: token.decimals,
|
|
10116
|
-
logo: token.logo
|
|
10117
|
-
});
|
|
10118
|
-
}
|
|
10119
|
-
});
|
|
10120
|
-
}
|
|
10121
|
-
return assets;
|
|
10122
|
-
};
|
|
10123
|
-
const getTokenBalance = (tokenAddress) => {
|
|
10124
|
-
const tokenIndex = COMMON_TOKENS.findIndex(
|
|
10125
|
-
(token2) => token2.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
10126
|
-
);
|
|
10127
|
-
if (tokenIndex === -1 || !tokenBalances?.[tokenIndex]) {
|
|
10128
|
-
return null;
|
|
10129
|
-
}
|
|
10130
|
-
const balance = tokenBalances[tokenIndex];
|
|
10131
|
-
const token = COMMON_TOKENS[tokenIndex];
|
|
10132
|
-
if (balance.status === "success" && balance.result) {
|
|
10133
|
-
const balanceValue = balance.result;
|
|
10134
|
-
const formattedBalance = (0, import_viem5.formatUnits)(balanceValue, token.decimals);
|
|
10135
|
-
return {
|
|
10136
|
-
address: token.address,
|
|
10137
|
-
name: token.name,
|
|
10138
|
-
symbol: token.symbol,
|
|
10139
|
-
decimals: token.decimals,
|
|
10140
|
-
balance: balanceValue.toString(),
|
|
10141
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
10142
|
-
logo: token.logo
|
|
10143
|
-
};
|
|
10144
|
-
}
|
|
10145
|
-
return null;
|
|
10146
|
-
};
|
|
10147
|
-
const refreshBalances = async () => {
|
|
10148
|
-
await Promise.all([
|
|
10149
|
-
refetchNativeBalance(),
|
|
10150
|
-
refetchTokenBalances()
|
|
10151
|
-
]);
|
|
10152
|
-
};
|
|
10153
|
-
return {
|
|
10154
|
-
nativeBalance,
|
|
10155
|
-
tokenBalances,
|
|
10156
|
-
assets: getAllAssets(),
|
|
10157
|
-
getTokenBalance,
|
|
10158
|
-
refreshBalances,
|
|
10159
|
-
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
10160
|
-
isConnected: !!address
|
|
10161
|
-
};
|
|
10162
|
-
}
|
|
10163
|
-
function useTokenInfo(tokenAddress) {
|
|
10164
|
-
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
10165
|
-
contracts: [
|
|
10166
|
-
{ address: tokenAddress, abi: import_viem5.erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
10167
|
-
{ address: tokenAddress, abi: import_viem5.erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
10168
|
-
{ address: tokenAddress, abi: import_viem5.erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
10169
|
-
]
|
|
10170
|
-
});
|
|
10171
|
-
const { data: tokenData, isLoading } = readContractsResult;
|
|
10172
|
-
if (!tokenData || isLoading) {
|
|
10173
|
-
return { isLoading, tokenInfo: null };
|
|
10174
|
-
}
|
|
10175
|
-
const [nameResult, symbolResult, decimalsResult] = tokenData;
|
|
10176
|
-
if (nameResult.status === "success" && symbolResult.status === "success" && decimalsResult.status === "success") {
|
|
10177
|
-
return {
|
|
10178
|
-
isLoading: false,
|
|
10179
|
-
tokenInfo: {
|
|
10180
|
-
name: nameResult.result,
|
|
10181
|
-
symbol: symbolResult.result,
|
|
10182
|
-
decimals: decimalsResult.result,
|
|
10183
|
-
address: tokenAddress
|
|
10184
|
-
}
|
|
10185
|
-
};
|
|
10186
|
-
}
|
|
10187
|
-
return { isLoading: false, tokenInfo: null };
|
|
10188
|
-
}
|
|
10189
|
-
function useTokenBalance(tokenAddress, userAddress) {
|
|
10190
|
-
const { data: balance, isLoading, refetch } = (0, import_wagmi.useReadContract)({
|
|
10191
|
-
address: tokenAddress,
|
|
10192
|
-
abi: import_viem5.erc20Abi,
|
|
10193
|
-
functionName: "balanceOf",
|
|
10194
|
-
args: userAddress ? [userAddress] : void 0,
|
|
10195
|
-
chainId: lumiaBeam.id,
|
|
10196
|
-
query: {
|
|
10197
|
-
enabled: !!userAddress
|
|
10198
|
-
}
|
|
10199
|
-
});
|
|
10200
|
-
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
10201
|
-
const formattedBalance = import_react31.default.useMemo(() => {
|
|
10202
|
-
if (!balance || !tokenInfo) return "0";
|
|
10203
|
-
return (0, import_viem5.formatUnits)(balance, tokenInfo.decimals);
|
|
10204
|
-
}, [balance, tokenInfo]);
|
|
10205
|
-
return {
|
|
10206
|
-
balance,
|
|
10207
|
-
formattedBalance,
|
|
10208
|
-
tokenInfo,
|
|
10209
|
-
isLoading,
|
|
10210
|
-
refetch
|
|
10211
|
-
};
|
|
10212
|
-
}
|
|
10213
|
-
|
|
10214
10462
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10215
10463
|
init_base();
|
|
10216
|
-
var
|
|
10464
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
10217
10465
|
function SendLumiaMenu() {
|
|
10218
10466
|
const page = useLayoutDataStore((st) => st.page);
|
|
10219
10467
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10220
10468
|
const open = page === "send";
|
|
10221
|
-
const
|
|
10469
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10222
10470
|
const { assets } = useAssets(address);
|
|
10223
10471
|
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
10224
10472
|
const { refetch: refetchBalance } = (0, import_wagmi2.useBalance)({
|
|
10225
10473
|
address,
|
|
10226
10474
|
chainId: lumiaBeam.id
|
|
10227
10475
|
});
|
|
10228
|
-
const [recipient, setRecipient] = (0,
|
|
10229
|
-
const [amount, setAmount] = (0,
|
|
10230
|
-
const [txStep, setTxStep] = (0,
|
|
10231
|
-
const [validationError, setValidationError] = (0,
|
|
10476
|
+
const [recipient, setRecipient] = (0, import_react34.useState)("");
|
|
10477
|
+
const [amount, setAmount] = (0, import_react34.useState)("");
|
|
10478
|
+
const [txStep, setTxStep] = (0, import_react34.useState)("input");
|
|
10479
|
+
const [validationError, setValidationError] = (0, import_react34.useState)(null);
|
|
10232
10480
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10233
10481
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10234
|
-
(0,
|
|
10482
|
+
(0, import_react34.useEffect)(() => {
|
|
10235
10483
|
if (open) {
|
|
10236
10484
|
setTxStep("input");
|
|
10237
10485
|
setValidationError(null);
|
|
@@ -10286,18 +10534,18 @@ function SendLumiaMenu() {
|
|
|
10286
10534
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
10287
10535
|
setAmount(maxAmount.toFixed(6));
|
|
10288
10536
|
};
|
|
10289
|
-
return /* @__PURE__ */ (0,
|
|
10290
|
-
/* @__PURE__ */ (0,
|
|
10291
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
10292
|
-
/* @__PURE__ */ (0,
|
|
10537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10538
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10539
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10540
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
10293
10541
|
] }),
|
|
10294
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
10295
|
-
/* @__PURE__ */ (0,
|
|
10296
|
-
/* @__PURE__ */ (0,
|
|
10297
|
-
/* @__PURE__ */ (0,
|
|
10542
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
10543
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10544
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient Address" }),
|
|
10545
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10298
10546
|
Input,
|
|
10299
10547
|
{
|
|
10300
|
-
Icon:
|
|
10548
|
+
Icon: import_lucide_react33.Wallet,
|
|
10301
10549
|
type: "text",
|
|
10302
10550
|
value: recipient,
|
|
10303
10551
|
onChange: (e) => setRecipient(e.target.value),
|
|
@@ -10305,17 +10553,17 @@ function SendLumiaMenu() {
|
|
|
10305
10553
|
}
|
|
10306
10554
|
)
|
|
10307
10555
|
] }),
|
|
10308
|
-
/* @__PURE__ */ (0,
|
|
10309
|
-
/* @__PURE__ */ (0,
|
|
10310
|
-
/* @__PURE__ */ (0,
|
|
10311
|
-
/* @__PURE__ */ (0,
|
|
10556
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10557
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between items-center", children: [
|
|
10558
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: "Amount" }),
|
|
10559
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
10312
10560
|
"Balance: ",
|
|
10313
10561
|
balance.toFixed(4),
|
|
10314
10562
|
" LUMIA"
|
|
10315
10563
|
] })
|
|
10316
10564
|
] }),
|
|
10317
|
-
/* @__PURE__ */ (0,
|
|
10318
|
-
/* @__PURE__ */ (0,
|
|
10565
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full relative", children: [
|
|
10566
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10319
10567
|
Input,
|
|
10320
10568
|
{
|
|
10321
10569
|
Icon: LumiaIcon,
|
|
@@ -10326,7 +10574,7 @@ function SendLumiaMenu() {
|
|
|
10326
10574
|
step: "0.000001"
|
|
10327
10575
|
}
|
|
10328
10576
|
),
|
|
10329
|
-
/* @__PURE__ */ (0,
|
|
10577
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10330
10578
|
Button,
|
|
10331
10579
|
{
|
|
10332
10580
|
onClick: handleMaxAmount,
|
|
@@ -10339,73 +10587,73 @@ function SendLumiaMenu() {
|
|
|
10339
10587
|
)
|
|
10340
10588
|
] })
|
|
10341
10589
|
] }),
|
|
10342
|
-
(validationError || error) && /* @__PURE__ */ (0,
|
|
10343
|
-
/* @__PURE__ */ (0,
|
|
10344
|
-
/* @__PURE__ */ (0,
|
|
10590
|
+
(validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
10591
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.AlertCircle, { className: "h-4 w-4" }),
|
|
10592
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "text-sm", children: validationError || error })
|
|
10345
10593
|
] }),
|
|
10346
|
-
/* @__PURE__ */ (0,
|
|
10594
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
10347
10595
|
] }),
|
|
10348
|
-
txStep === "confirm" && /* @__PURE__ */ (0,
|
|
10349
|
-
/* @__PURE__ */ (0,
|
|
10350
|
-
/* @__PURE__ */ (0,
|
|
10351
|
-
/* @__PURE__ */ (0,
|
|
10352
|
-
/* @__PURE__ */ (0,
|
|
10353
|
-
/* @__PURE__ */ (0,
|
|
10354
|
-
/* @__PURE__ */ (0,
|
|
10596
|
+
txStep === "confirm" && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
10597
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
10598
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
10599
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "space-y-2 text-sm", children: [
|
|
10600
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between", children: [
|
|
10601
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "To:" }),
|
|
10602
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
10355
10603
|
] }),
|
|
10356
|
-
/* @__PURE__ */ (0,
|
|
10357
|
-
/* @__PURE__ */ (0,
|
|
10358
|
-
/* @__PURE__ */ (0,
|
|
10604
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between", children: [
|
|
10605
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "Amount:" }),
|
|
10606
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("span", { className: `font-semibold`, children: [
|
|
10359
10607
|
amount,
|
|
10360
10608
|
" LUMIA"
|
|
10361
10609
|
] })
|
|
10362
10610
|
] }),
|
|
10363
|
-
/* @__PURE__ */ (0,
|
|
10364
|
-
/* @__PURE__ */ (0,
|
|
10365
|
-
/* @__PURE__ */ (0,
|
|
10611
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between", children: [
|
|
10612
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "Network:" }),
|
|
10613
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "Lumia Beam" })
|
|
10366
10614
|
] })
|
|
10367
10615
|
] })
|
|
10368
10616
|
] }),
|
|
10369
|
-
/* @__PURE__ */ (0,
|
|
10370
|
-
/* @__PURE__ */ (0,
|
|
10371
|
-
/* @__PURE__ */ (0,
|
|
10372
|
-
isLoading && /* @__PURE__ */ (0,
|
|
10617
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex gap-2", children: [
|
|
10618
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
10619
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
10620
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
10373
10621
|
"Confirm"
|
|
10374
10622
|
] })
|
|
10375
10623
|
] })
|
|
10376
10624
|
] }),
|
|
10377
|
-
txStep === "pending" && /* @__PURE__ */ (0,
|
|
10378
|
-
/* @__PURE__ */ (0,
|
|
10379
|
-
/* @__PURE__ */ (0,
|
|
10380
|
-
/* @__PURE__ */ (0,
|
|
10381
|
-
/* @__PURE__ */ (0,
|
|
10625
|
+
txStep === "pending" && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "py-8 text-center space-y-4", children: [
|
|
10626
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.Loader, { className: "h-12 w-12 animate-spin mx-auto" }),
|
|
10627
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { children: [
|
|
10628
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
10629
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
10382
10630
|
] })
|
|
10383
10631
|
] }),
|
|
10384
|
-
txStep === "success" && userOpHash && /* @__PURE__ */ (0,
|
|
10385
|
-
/* @__PURE__ */ (0,
|
|
10386
|
-
/* @__PURE__ */ (0,
|
|
10387
|
-
/* @__PURE__ */ (0,
|
|
10388
|
-
/* @__PURE__ */ (0,
|
|
10632
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
10633
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "text-center py-4", children: [
|
|
10634
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.CheckCircle2, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
10635
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
10636
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
10389
10637
|
] }),
|
|
10390
|
-
/* @__PURE__ */ (0,
|
|
10638
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
10391
10639
|
] })
|
|
10392
10640
|
] });
|
|
10393
10641
|
}
|
|
10394
10642
|
|
|
10395
10643
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10396
|
-
var
|
|
10644
|
+
var import_lucide_react34 = require("lucide-react");
|
|
10397
10645
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
10398
|
-
var
|
|
10646
|
+
var import_react35 = require("react");
|
|
10399
10647
|
init_clients();
|
|
10400
|
-
var
|
|
10648
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
10401
10649
|
function ReceiveLumiaMenu() {
|
|
10402
10650
|
const page = useLayoutDataStore((st) => st.page);
|
|
10403
10651
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10404
10652
|
const open = page === "receive";
|
|
10405
10653
|
const { address } = useLumiaPassportSession();
|
|
10406
|
-
const [qrCodeUrl, setQrCodeUrl] = (0,
|
|
10407
|
-
const [copied, setCopied] = (0,
|
|
10408
|
-
(0,
|
|
10654
|
+
const [qrCodeUrl, setQrCodeUrl] = (0, import_react35.useState)("");
|
|
10655
|
+
const [copied, setCopied] = (0, import_react35.useState)(false);
|
|
10656
|
+
(0, import_react35.useEffect)(() => {
|
|
10409
10657
|
if (open && address) {
|
|
10410
10658
|
import_qrcode.default.toDataURL(address, {
|
|
10411
10659
|
width: 200,
|
|
@@ -10428,41 +10676,42 @@ function ReceiveLumiaMenu() {
|
|
|
10428
10676
|
console.error("Failed to copy address:", error);
|
|
10429
10677
|
}
|
|
10430
10678
|
};
|
|
10431
|
-
return /* @__PURE__ */ (0,
|
|
10432
|
-
/* @__PURE__ */ (0,
|
|
10433
|
-
/* @__PURE__ */ (0,
|
|
10434
|
-
/* @__PURE__ */ (0,
|
|
10679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10680
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10681
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10682
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10435
10683
|
] }),
|
|
10436
|
-
/* @__PURE__ */ (0,
|
|
10437
|
-
/* @__PURE__ */ (0,
|
|
10438
|
-
/* @__PURE__ */ (0,
|
|
10684
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Highlight, { className: "text-center", type: "warning", children: [
|
|
10685
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
10686
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
10439
10687
|
] }),
|
|
10440
|
-
/* @__PURE__ */ (0,
|
|
10441
|
-
/* @__PURE__ */ (0,
|
|
10442
|
-
/* @__PURE__ */ (0,
|
|
10443
|
-
/* @__PURE__ */ (0,
|
|
10444
|
-
/* @__PURE__ */ (0,
|
|
10445
|
-
/* @__PURE__ */ (0,
|
|
10446
|
-
] }) : /* @__PURE__ */ (0,
|
|
10447
|
-
/* @__PURE__ */ (0,
|
|
10448
|
-
/* @__PURE__ */ (0,
|
|
10688
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.Loader, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
10689
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Highlight, { type: "info", children: [
|
|
10690
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
10691
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
10692
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4" }),
|
|
10693
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Copied!" })
|
|
10694
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
10695
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.Copy, { className: "h-4 w-4" }),
|
|
10696
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Copy Address" })
|
|
10449
10697
|
] }) })
|
|
10450
10698
|
] }),
|
|
10451
|
-
/* @__PURE__ */ (0,
|
|
10699
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
10452
10700
|
] });
|
|
10453
10701
|
}
|
|
10454
10702
|
|
|
10455
10703
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10456
|
-
var
|
|
10704
|
+
var import_lucide_react36 = require("lucide-react");
|
|
10705
|
+
var import_react36 = require("react");
|
|
10457
10706
|
|
|
10458
10707
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10459
|
-
var
|
|
10708
|
+
var import_lucide_react35 = require("lucide-react");
|
|
10460
10709
|
|
|
10461
10710
|
// src/internal/assets/KycIcon.tsx
|
|
10462
|
-
var
|
|
10711
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
10463
10712
|
function KycIcon(props) {
|
|
10464
10713
|
const { width = "24", height = "24", ...rest } = props;
|
|
10465
|
-
return /* @__PURE__ */ (0,
|
|
10714
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10466
10715
|
"path",
|
|
10467
10716
|
{
|
|
10468
10717
|
d: "M12 18.5455C10.1727 18.5455 8.625 17.9114 7.35682 16.6432C6.08864 15.375 5.45455 13.8273 5.45455 12C5.45455 10.1727 6.08864 8.625 7.35682 7.35682C8.625 6.08864 10.1727 5.45455 12 5.45455C13.8273 5.45455 15.375 6.08864 16.6432 7.35682C17.9114 8.625 18.5455 10.1727 18.5455 12C18.5455 13.8273 17.9114 15.375 16.6432 16.6432C15.375 17.9114 13.8273 18.5455 12 18.5455ZM12 16.9091C13.3636 16.9091 14.5227 16.4318 15.4773 15.4773C16.4318 14.5227 16.9091 13.3636 16.9091 12C16.9091 11.7682 16.892 11.5398 16.858 11.3148C16.8239 11.0898 16.7727 10.8682 16.7045 10.65C16.5 10.6909 16.2955 10.7216 16.0909 10.742C15.8864 10.7625 15.6818 10.7727 15.4773 10.7727C14.6182 10.7727 13.8 10.6091 13.0227 10.2818C12.2455 9.95455 11.55 9.47727 10.9364 8.85C10.5545 9.62727 10.0295 10.3023 9.36136 10.875C8.69318 11.4477 7.93636 11.8636 7.09091 12.1227C7.13182 13.4591 7.62614 14.5909 8.57386 15.5182C9.52159 16.4455 10.6636 16.9091 12 16.9091ZM7.41818 10.2409C8.01818 9.92727 8.475 9.5625 8.78864 9.14659C9.10227 8.73068 9.40909 8.23636 9.70909 7.66364C9.19091 7.93636 8.73409 8.29432 8.33864 8.7375C7.94318 9.18068 7.63636 9.68182 7.41818 10.2409ZM9.95455 13.6364C9.72273 13.6364 9.52841 13.558 9.37159 13.4011C9.21477 13.2443 9.13636 13.05 9.13636 12.8182C9.13636 12.5864 9.21477 12.392 9.37159 12.2352C9.52841 12.0784 9.72273 12 9.95455 12C10.1864 12 10.3807 12.0784 10.5375 12.2352C10.6943 12.392 10.7727 12.5864 10.7727 12.8182C10.7727 13.05 10.6943 13.2443 10.5375 13.4011C10.3807 13.558 10.1864 13.6364 9.95455 13.6364ZM15.4773 9.13636H15.7227C15.8045 9.13636 15.8864 9.12955 15.9682 9.11591C15.5182 8.50227 14.9489 8.01136 14.2602 7.64318C13.5716 7.275 12.8182 7.09091 12 7.09091H11.7545C11.6727 7.09091 11.5977 7.09773 11.5295 7.11136C12.0614 7.725 12.6239 8.21591 13.217 8.58409C13.8102 8.95227 14.5636 9.13636 15.4773 9.13636ZM14.0455 13.6364C13.8136 13.6364 13.6193 13.558 13.4625 13.4011C13.3057 13.2443 13.2273 13.05 13.2273 12.8182C13.2273 12.5864 13.3057 12.392 13.4625 12.2352C13.6193 12.0784 13.8136 12 14.0455 12C14.2773 12 14.4716 12.0784 14.6284 12.2352C14.7852 12.392 14.8636 12.5864 14.8636 12.8182C14.8636 13.05 14.7852 13.2443 14.6284 13.4011C14.4716 13.558 14.2773 13.6364 14.0455 13.6364ZM3 7.09091V4.63636C3 4.18636 3.16023 3.80114 3.48068 3.48068C3.80114 3.16023 4.18636 3 4.63636 3H7.09091V4.63636H4.63636V7.09091H3ZM7.09091 21H4.63636C4.18636 21 3.80114 20.8398 3.48068 20.5193C3.16023 20.1989 3 19.8136 3 19.3636V16.9091H4.63636V19.3636H7.09091V21ZM16.9091 21V19.3636H19.3636V16.9091H21V19.3636C21 19.8136 20.8398 20.1989 20.5193 20.5193C20.1989 20.8398 19.8136 21 19.3636 21H16.9091ZM19.3636 7.09091V4.63636H16.9091V3H19.3636C19.8136 3 20.1989 3.16023 20.5193 3.48068C20.8398 3.80114 21 4.18636 21 4.63636V7.09091H19.3636Z",
|
|
@@ -10473,27 +10722,29 @@ function KycIcon(props) {
|
|
|
10473
10722
|
|
|
10474
10723
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10475
10724
|
var NAV_BUTTONS = [
|
|
10476
|
-
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon:
|
|
10725
|
+
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon: import_lucide_react35.ArrowLeftRight },
|
|
10477
10726
|
{ id: "kyc" /* KYC */, name: "KYC", Icon: KycIcon },
|
|
10478
|
-
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon:
|
|
10479
|
-
{ id: "security" /* SECURITY */, name: "Security", Icon:
|
|
10480
|
-
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon:
|
|
10727
|
+
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon: import_lucide_react35.UsersRound },
|
|
10728
|
+
{ id: "security" /* SECURITY */, name: "Security", Icon: import_lucide_react35.LockKeyhole },
|
|
10729
|
+
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon: import_lucide_react35.DatabaseBackup }
|
|
10481
10730
|
];
|
|
10482
10731
|
|
|
10483
10732
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10484
|
-
var
|
|
10733
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
10485
10734
|
function SettingsMenu() {
|
|
10486
10735
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10487
10736
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10488
10737
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10738
|
+
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10739
|
+
(0, import_react36.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10489
10740
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10490
10741
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10491
|
-
return /* @__PURE__ */ (0,
|
|
10492
|
-
/* @__PURE__ */ (0,
|
|
10493
|
-
/* @__PURE__ */ (0,
|
|
10494
|
-
/* @__PURE__ */ (0,
|
|
10742
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10743
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10744
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react36.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10745
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xl font-semibold", children: "Wallet Details" })
|
|
10495
10746
|
] }),
|
|
10496
|
-
/* @__PURE__ */ (0,
|
|
10747
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
10497
10748
|
Button,
|
|
10498
10749
|
{
|
|
10499
10750
|
variant: "outline",
|
|
@@ -10506,8 +10757,8 @@ function SettingsMenu() {
|
|
|
10506
10757
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
10507
10758
|
),
|
|
10508
10759
|
children: [
|
|
10509
|
-
/* @__PURE__ */ (0,
|
|
10510
|
-
/* @__PURE__ */ (0,
|
|
10760
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { className: "w-4 h-4" }),
|
|
10761
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: name })
|
|
10511
10762
|
]
|
|
10512
10763
|
},
|
|
10513
10764
|
id
|
|
@@ -10516,15 +10767,15 @@ function SettingsMenu() {
|
|
|
10516
10767
|
}
|
|
10517
10768
|
|
|
10518
10769
|
// src/internal/components/TermsOfService.tsx
|
|
10519
|
-
var
|
|
10770
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
10520
10771
|
function TermsOfService() {
|
|
10521
|
-
return /* @__PURE__ */ (0,
|
|
10772
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-full p-4 flex flex-col gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "prose text-sm", children: "By using Lumia Passport you agree to our terms." }) });
|
|
10522
10773
|
}
|
|
10523
10774
|
|
|
10524
10775
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10525
|
-
var
|
|
10526
|
-
var
|
|
10527
|
-
var
|
|
10776
|
+
var import_react_query19 = require("@tanstack/react-query");
|
|
10777
|
+
var import_lucide_react38 = require("lucide-react");
|
|
10778
|
+
var import_react37 = require("react");
|
|
10528
10779
|
|
|
10529
10780
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10530
10781
|
init_base();
|
|
@@ -10815,7 +11066,7 @@ async function getTransactionsListQuery(address) {
|
|
|
10815
11066
|
}
|
|
10816
11067
|
|
|
10817
11068
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10818
|
-
var
|
|
11069
|
+
var import_lucide_react37 = require("lucide-react");
|
|
10819
11070
|
|
|
10820
11071
|
// src/internal/components/TransactionsMenu/utils.ts
|
|
10821
11072
|
init_base();
|
|
@@ -10833,7 +11084,7 @@ var parseValue = (value) => {
|
|
|
10833
11084
|
return 0n;
|
|
10834
11085
|
}
|
|
10835
11086
|
};
|
|
10836
|
-
var
|
|
11087
|
+
var formatValue2 = (value, decimals = 18) => {
|
|
10837
11088
|
const amount = parseValue(value);
|
|
10838
11089
|
if (amount === 0n) return "0";
|
|
10839
11090
|
if (decimals <= 0) {
|
|
@@ -10849,7 +11100,7 @@ var formatValue = (value, decimals = 18) => {
|
|
|
10849
11100
|
const trimmed = fractionStr.slice(0, Math.min(6, fractionStr.length));
|
|
10850
11101
|
return `${whole.toString()}.${trimmed}`;
|
|
10851
11102
|
};
|
|
10852
|
-
var
|
|
11103
|
+
var openInExplorer2 = (txHash) => {
|
|
10853
11104
|
const explorerUrl = getExplorerUrl();
|
|
10854
11105
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
10855
11106
|
};
|
|
@@ -10862,24 +11113,24 @@ var formatTimestamp = (timestampMs) => {
|
|
|
10862
11113
|
};
|
|
10863
11114
|
|
|
10864
11115
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10865
|
-
var
|
|
10866
|
-
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */ (0,
|
|
10867
|
-
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */ (0,
|
|
11116
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
11117
|
+
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.CheckCircle2, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.XCircle, { className: "w-4 h-4 text-[var(--l-pass-error)]" });
|
|
11118
|
+
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ArrowDownRight, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ArrowUpRight, { className: "w-4 h-4 text-[var(--l-pass-info)]" });
|
|
10868
11119
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
10869
11120
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
10870
11121
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
10871
|
-
return /* @__PURE__ */ (0,
|
|
10872
|
-
/* @__PURE__ */ (0,
|
|
10873
|
-
/* @__PURE__ */ (0,
|
|
10874
|
-
/* @__PURE__ */ (0,
|
|
10875
|
-
|
|
11122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
11123
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11124
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
11125
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
|
|
11126
|
+
formatValue2(internal.value, internalDecimals),
|
|
10876
11127
|
" ",
|
|
10877
11128
|
internalSymbol
|
|
10878
11129
|
] })
|
|
10879
11130
|
] }),
|
|
10880
|
-
/* @__PURE__ */ (0,
|
|
10881
|
-
/* @__PURE__ */ (0,
|
|
10882
|
-
/* @__PURE__ */ (0,
|
|
11131
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11132
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
11133
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
10883
11134
|
] })
|
|
10884
11135
|
] });
|
|
10885
11136
|
}
|
|
@@ -10890,22 +11141,22 @@ function TransactionsGroup(props) {
|
|
|
10890
11141
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
10891
11142
|
const assetDecimals = parent.decimals ?? 18;
|
|
10892
11143
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
10893
|
-
return /* @__PURE__ */ (0,
|
|
11144
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
10894
11145
|
"div",
|
|
10895
11146
|
{
|
|
10896
|
-
onClick: () =>
|
|
11147
|
+
onClick: () => openInExplorer2(parent.parentHash),
|
|
10897
11148
|
className: cn(
|
|
10898
11149
|
"rounded-[var(--l-pass-el-bdrs)] p-2 transition-colors cursor-pointer border border-[var(--l-pass-bd)]",
|
|
10899
11150
|
"bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
10900
11151
|
),
|
|
10901
11152
|
children: [
|
|
10902
|
-
/* @__PURE__ */ (0,
|
|
10903
|
-
/* @__PURE__ */ (0,
|
|
11153
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
11154
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
10904
11155
|
getTransactionIcon(parent.direction),
|
|
10905
|
-
/* @__PURE__ */ (0,
|
|
11156
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-medium", children: isIncoming ? "Received" : "Sent" }),
|
|
10906
11157
|
getStatusIcon(parent.status)
|
|
10907
11158
|
] }),
|
|
10908
|
-
parent.badgeLabel && /* @__PURE__ */ (0,
|
|
11159
|
+
parent.badgeLabel && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10909
11160
|
"span",
|
|
10910
11161
|
{
|
|
10911
11162
|
className: cn(
|
|
@@ -10916,39 +11167,39 @@ function TransactionsGroup(props) {
|
|
|
10916
11167
|
}
|
|
10917
11168
|
)
|
|
10918
11169
|
] }),
|
|
10919
|
-
/* @__PURE__ */ (0,
|
|
10920
|
-
/* @__PURE__ */ (0,
|
|
10921
|
-
/* @__PURE__ */ (0,
|
|
10922
|
-
/* @__PURE__ */ (0,
|
|
10923
|
-
/* @__PURE__ */ (0,
|
|
11170
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "block w-full leading-4 mb-1 text-xs text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) }),
|
|
11171
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-0 text-sm", children: [
|
|
11172
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11173
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: isIncoming ? "From:" : "To:" }),
|
|
11174
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "font-mono", children: [
|
|
10924
11175
|
parent.counterpartyName || formatAddress2(parent.counterparty),
|
|
10925
|
-
parent.counterpartyIsContract && /* @__PURE__ */ (0,
|
|
11176
|
+
parent.counterpartyIsContract && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs text-[var(--l-pass-info)] ml-1", children: "(Contract)" })
|
|
10926
11177
|
] })
|
|
10927
11178
|
] }),
|
|
10928
|
-
/* @__PURE__ */ (0,
|
|
10929
|
-
/* @__PURE__ */ (0,
|
|
10930
|
-
/* @__PURE__ */ (0,
|
|
10931
|
-
|
|
11179
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11180
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Value:" }),
|
|
11181
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "font-semibold", children: [
|
|
11182
|
+
formatValue2(parent.value, assetDecimals),
|
|
10932
11183
|
" ",
|
|
10933
11184
|
assetSymbol
|
|
10934
11185
|
] })
|
|
10935
11186
|
] }),
|
|
10936
|
-
/* @__PURE__ */ (0,
|
|
10937
|
-
/* @__PURE__ */ (0,
|
|
10938
|
-
/* @__PURE__ */ (0,
|
|
11187
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11188
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Block:" }),
|
|
11189
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-mono", children: parent.blockNumber ? `#${parent.blockNumber}` : "-" })
|
|
10939
11190
|
] }),
|
|
10940
|
-
parent.method && /* @__PURE__ */ (0,
|
|
10941
|
-
/* @__PURE__ */ (0,
|
|
10942
|
-
/* @__PURE__ */ (0,
|
|
11191
|
+
parent.method && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11192
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Method:" }),
|
|
11193
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[var(--l-pass-info)] text-xs", children: parent.method })
|
|
10943
11194
|
] })
|
|
10944
11195
|
] }),
|
|
10945
|
-
internalsToRender.length > 0 && /* @__PURE__ */ (0,
|
|
11196
|
+
internalsToRender.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
10946
11197
|
"div",
|
|
10947
11198
|
{
|
|
10948
11199
|
className: "mt-4 rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
10949
11200
|
onClick: (event) => event.stopPropagation(),
|
|
10950
11201
|
children: [
|
|
10951
|
-
/* @__PURE__ */ (0,
|
|
11202
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
10952
11203
|
Button,
|
|
10953
11204
|
{
|
|
10954
11205
|
variant: "ghost",
|
|
@@ -10956,16 +11207,16 @@ function TransactionsGroup(props) {
|
|
|
10956
11207
|
className: "w-full justify-between",
|
|
10957
11208
|
onClick: () => onToggleExpanded(group.id),
|
|
10958
11209
|
children: [
|
|
10959
|
-
/* @__PURE__ */ (0,
|
|
11210
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
|
|
10960
11211
|
"View internal calls (",
|
|
10961
11212
|
internalsToRender.length,
|
|
10962
11213
|
")"
|
|
10963
11214
|
] }),
|
|
10964
|
-
/* @__PURE__ */ (0,
|
|
11215
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: expanded ? "Hide" : "Show" })
|
|
10965
11216
|
]
|
|
10966
11217
|
}
|
|
10967
11218
|
),
|
|
10968
|
-
expanded && /* @__PURE__ */ (0,
|
|
11219
|
+
expanded && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "px-3 pb-3 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10969
11220
|
InternalTransaction,
|
|
10970
11221
|
{
|
|
10971
11222
|
internal,
|
|
@@ -10983,34 +11234,34 @@ function TransactionsGroup(props) {
|
|
|
10983
11234
|
}
|
|
10984
11235
|
|
|
10985
11236
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10986
|
-
var
|
|
11237
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
10987
11238
|
function TransactionsMenu() {
|
|
10988
|
-
const qc = (0,
|
|
11239
|
+
const qc = (0, import_react_query19.useQueryClient)();
|
|
10989
11240
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10990
11241
|
const page = useLayoutDataStore((st) => st.page);
|
|
10991
11242
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10992
|
-
const [expandedGroups, setExpandedGroups] = (0,
|
|
11243
|
+
const [expandedGroups, setExpandedGroups] = (0, import_react37.useState)({});
|
|
10993
11244
|
const {
|
|
10994
11245
|
data: txHistoryGroups = [],
|
|
10995
11246
|
isLoading: isTxHistoryLoading,
|
|
10996
11247
|
isFetching: isTxHistoryFetching,
|
|
10997
11248
|
error: txHistoryError
|
|
10998
|
-
} = (0,
|
|
11249
|
+
} = (0, import_react_query19.useQuery)({
|
|
10999
11250
|
retry: false,
|
|
11000
11251
|
enabled: !!address && page === "transactions",
|
|
11001
11252
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
11002
11253
|
queryFn: () => getTransactionsListQuery(address)
|
|
11003
11254
|
});
|
|
11004
|
-
const refreshTxHistory = (0,
|
|
11255
|
+
const refreshTxHistory = (0, import_react37.useCallback)(
|
|
11005
11256
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
11006
11257
|
[qc, address]
|
|
11007
11258
|
);
|
|
11008
11259
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11009
|
-
return /* @__PURE__ */ (0,
|
|
11010
|
-
/* @__PURE__ */ (0,
|
|
11011
|
-
/* @__PURE__ */ (0,
|
|
11012
|
-
/* @__PURE__ */ (0,
|
|
11013
|
-
/* @__PURE__ */ (0,
|
|
11260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11261
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11262
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11263
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
11264
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11014
11265
|
Button,
|
|
11015
11266
|
{
|
|
11016
11267
|
variant: "ghost",
|
|
@@ -11018,13 +11269,13 @@ function TransactionsMenu() {
|
|
|
11018
11269
|
onClick: refreshTxHistory,
|
|
11019
11270
|
disabled: isTxHistoryFetching,
|
|
11020
11271
|
title: "Refresh transactions",
|
|
11021
|
-
children: isTxHistoryFetching ? /* @__PURE__ */ (0,
|
|
11272
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.RefreshCw, { className: "h-4 w-4" })
|
|
11022
11273
|
}
|
|
11023
11274
|
)
|
|
11024
11275
|
] }) }),
|
|
11025
|
-
/* @__PURE__ */ (0,
|
|
11026
|
-
isTxHistoryLoading && /* @__PURE__ */ (0,
|
|
11027
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0,
|
|
11276
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "max-h-[60vh] overflow-y-auto", children: [
|
|
11277
|
+
isTxHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
11278
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
11028
11279
|
"div",
|
|
11029
11280
|
{
|
|
11030
11281
|
className: cn(
|
|
@@ -11033,20 +11284,20 @@ function TransactionsMenu() {
|
|
|
11033
11284
|
"text-[var(--l-pass-error)]"
|
|
11034
11285
|
),
|
|
11035
11286
|
children: [
|
|
11036
|
-
/* @__PURE__ */ (0,
|
|
11037
|
-
/* @__PURE__ */ (0,
|
|
11287
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.XCircle, { className: "w-12 h-12 mb-2" }),
|
|
11288
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "block w-full text-center text-sm", children: txHistoryResolvedError })
|
|
11038
11289
|
]
|
|
11039
11290
|
}
|
|
11040
11291
|
),
|
|
11041
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0,
|
|
11042
|
-
/* @__PURE__ */ (0,
|
|
11043
|
-
/* @__PURE__ */ (0,
|
|
11044
|
-
/* @__PURE__ */ (0,
|
|
11045
|
-
/* @__PURE__ */ (0,
|
|
11046
|
-
/* @__PURE__ */ (0,
|
|
11292
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex flex-col gap-2 items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: [
|
|
11293
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Activity, { className: "w-12 h-12" }),
|
|
11294
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { className: "block w-full text-center", children: [
|
|
11295
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { children: "No transactions found" }),
|
|
11296
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("br", {}),
|
|
11297
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
11047
11298
|
] })
|
|
11048
11299
|
] }),
|
|
11049
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0,
|
|
11300
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full flex flex-col gap-2", children: txHistoryGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11050
11301
|
TransactionsGroup,
|
|
11051
11302
|
{
|
|
11052
11303
|
group,
|
|
@@ -11059,127 +11310,6 @@ function TransactionsMenu() {
|
|
|
11059
11310
|
] });
|
|
11060
11311
|
}
|
|
11061
11312
|
|
|
11062
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11063
|
-
var import_lucide_react38 = require("lucide-react");
|
|
11064
|
-
|
|
11065
|
-
// src/internal/components/ViewAssetsMenu/AssetItem.tsx
|
|
11066
|
-
var import_lucide_react37 = require("lucide-react");
|
|
11067
|
-
var import_react35 = __toESM(require("react"), 1);
|
|
11068
|
-
init_base();
|
|
11069
|
-
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
11070
|
-
var openInExplorer2 = (address) => {
|
|
11071
|
-
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11072
|
-
};
|
|
11073
|
-
function AssetItem(props) {
|
|
11074
|
-
const { address, asset } = props;
|
|
11075
|
-
const [copied, setCopied] = import_react35.default.useState(null);
|
|
11076
|
-
const handleCopy = async (text, type) => {
|
|
11077
|
-
try {
|
|
11078
|
-
await navigator.clipboard.writeText(text);
|
|
11079
|
-
setCopied(type);
|
|
11080
|
-
setTimeout(() => setCopied(null), 1500);
|
|
11081
|
-
} catch (error) {
|
|
11082
|
-
console.error("Failed to copy:", error);
|
|
11083
|
-
}
|
|
11084
|
-
};
|
|
11085
|
-
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] rounded-xl p-3 transition-colors", children: [
|
|
11086
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
|
|
11087
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
11088
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
11089
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { children: [
|
|
11090
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "font-medium", children: asset.name }),
|
|
11091
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "text-sm", children: asset.symbol })
|
|
11092
|
-
] })
|
|
11093
|
-
] }),
|
|
11094
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "text-right", children: [
|
|
11095
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "font-mono", children: asset.formattedBalance }),
|
|
11096
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: asset.symbol })
|
|
11097
|
-
] })
|
|
11098
|
-
] }),
|
|
11099
|
-
asset.address && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full space-y-2 mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: [
|
|
11100
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11101
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: "Contract Address:" }),
|
|
11102
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11103
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: `font-mono text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
11104
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11105
|
-
Button,
|
|
11106
|
-
{
|
|
11107
|
-
variant: "ghost",
|
|
11108
|
-
size: "icon",
|
|
11109
|
-
title: "Copy address",
|
|
11110
|
-
onClick: () => handleCopy(asset.address, "address"),
|
|
11111
|
-
children: copied === "address" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Check, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Copy, { className: "w-3 h-3" })
|
|
11112
|
-
}
|
|
11113
|
-
),
|
|
11114
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11115
|
-
Button,
|
|
11116
|
-
{
|
|
11117
|
-
variant: "ghost",
|
|
11118
|
-
size: "icon",
|
|
11119
|
-
onClick: () => openInExplorer2(asset.address),
|
|
11120
|
-
title: "View in explorer",
|
|
11121
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ExternalLink, { className: "w-3 h-3" })
|
|
11122
|
-
}
|
|
11123
|
-
)
|
|
11124
|
-
] })
|
|
11125
|
-
] }),
|
|
11126
|
-
asset.decimals && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11127
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: "Decimals:" }),
|
|
11128
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: asset.decimals })
|
|
11129
|
-
] })
|
|
11130
|
-
] }),
|
|
11131
|
-
asset.type === "native" && address && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
|
|
11132
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: "Your Address:" }),
|
|
11133
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11134
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-mono text-xs", children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
11135
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11136
|
-
Button,
|
|
11137
|
-
{
|
|
11138
|
-
variant: "ghost",
|
|
11139
|
-
size: "icon",
|
|
11140
|
-
onClick: () => handleCopy(address, "wallet"),
|
|
11141
|
-
title: "Copy wallet address",
|
|
11142
|
-
children: copied === "wallet" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Check, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Copy, { className: "w-3 h-3" })
|
|
11143
|
-
}
|
|
11144
|
-
),
|
|
11145
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Button, { variant: "ghost", size: "icon", onClick: () => openInExplorer2(address), title: "View in explorer", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ExternalLink, { className: "w-3 h-3" }) })
|
|
11146
|
-
] })
|
|
11147
|
-
] }) })
|
|
11148
|
-
] });
|
|
11149
|
-
}
|
|
11150
|
-
|
|
11151
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11152
|
-
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
11153
|
-
function ViewAssetsMenu() {
|
|
11154
|
-
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11155
|
-
const { address } = useLumiaPassportSession();
|
|
11156
|
-
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
11157
|
-
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11158
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11159
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11160
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11161
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.RefreshCw, { className: "h-4 w-4" }) })
|
|
11162
|
-
] }) }),
|
|
11163
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full max-h-[60dvh] overflow-y-auto", children: [
|
|
11164
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full text-sm text-[var(--l-pass-muted)] mb-4", children: [
|
|
11165
|
-
"Total: ",
|
|
11166
|
-
assets.length,
|
|
11167
|
-
" asset",
|
|
11168
|
-
assets.length !== 1 ? "s" : ""
|
|
11169
|
-
] }),
|
|
11170
|
-
isLoading && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full flex items-center justify-center gap-2 p-4", children: [
|
|
11171
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-5 w-5 mr-2 animate-spin" }),
|
|
11172
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
11173
|
-
] }),
|
|
11174
|
-
!isLoading && assets.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
11175
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Gem, { className: "w-12 h-12 mb-2" }),
|
|
11176
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { children: "No assets found" })
|
|
11177
|
-
] }),
|
|
11178
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full flex flex-col gap-2", children: assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(AssetItem, { address, asset }, `${asset.type}-${asset.address || "native"}-${index}`)) })
|
|
11179
|
-
] })
|
|
11180
|
-
] });
|
|
11181
|
-
}
|
|
11182
|
-
|
|
11183
11313
|
// src/internal/components/PageMap.tsx
|
|
11184
11314
|
var PAGE_MAP = {
|
|
11185
11315
|
["auth" /* AUTH */]: {
|
|
@@ -11238,9 +11368,9 @@ var PAGE_MAP = {
|
|
|
11238
11368
|
},
|
|
11239
11369
|
["assets" /* ASSETS */]: {
|
|
11240
11370
|
key: "assets" /* ASSETS */,
|
|
11241
|
-
title: "
|
|
11371
|
+
title: "Assets Portfolio Menu",
|
|
11242
11372
|
description: "View your token balances and assets",
|
|
11243
|
-
component:
|
|
11373
|
+
component: PortfolioMenu
|
|
11244
11374
|
},
|
|
11245
11375
|
["manage-wallet" /* MANAGE_WALLET */]: {
|
|
11246
11376
|
key: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11289,7 +11419,7 @@ function usePageMapper() {
|
|
|
11289
11419
|
setIsDialogOpen,
|
|
11290
11420
|
setIsDialogClosing
|
|
11291
11421
|
} = useLayoutStore();
|
|
11292
|
-
const closeDialog = (0,
|
|
11422
|
+
const closeDialog = (0, import_react38.useCallback)(() => {
|
|
11293
11423
|
setIsDialogClosing(true);
|
|
11294
11424
|
setTimeout(() => {
|
|
11295
11425
|
setDialogContent(null);
|
|
@@ -11300,7 +11430,7 @@ function usePageMapper() {
|
|
|
11300
11430
|
setIsDialogOpen(false);
|
|
11301
11431
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11302
11432
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11303
|
-
const openDialog = (0,
|
|
11433
|
+
const openDialog = (0, import_react38.useCallback)(
|
|
11304
11434
|
(pageItem) => {
|
|
11305
11435
|
const PageContentComponent = pageItem.component;
|
|
11306
11436
|
setDialogTitle(pageItem.title);
|
|
@@ -11310,7 +11440,7 @@ function usePageMapper() {
|
|
|
11310
11440
|
},
|
|
11311
11441
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11312
11442
|
);
|
|
11313
|
-
(0,
|
|
11443
|
+
(0, import_react38.useEffect)(() => {
|
|
11314
11444
|
if (page === null) return closeDialog();
|
|
11315
11445
|
const pageItem = protectedRoutes[page];
|
|
11316
11446
|
if (!pageItem) {
|
|
@@ -11323,7 +11453,7 @@ function usePageMapper() {
|
|
|
11323
11453
|
}
|
|
11324
11454
|
|
|
11325
11455
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11326
|
-
var
|
|
11456
|
+
var import_react39 = require("react");
|
|
11327
11457
|
init_auth();
|
|
11328
11458
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11329
11459
|
id: "email-not-connected",
|
|
@@ -11340,13 +11470,13 @@ function useSettingsNotifications() {
|
|
|
11340
11470
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11341
11471
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
11342
11472
|
const hasEmail = providers.includes("email");
|
|
11343
|
-
(0,
|
|
11473
|
+
(0, import_react39.useEffect)(() => {
|
|
11344
11474
|
setSettingsNotifications({
|
|
11345
11475
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11346
11476
|
status: hasServerVault ? "resolved" : "active"
|
|
11347
11477
|
});
|
|
11348
11478
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11349
|
-
(0,
|
|
11479
|
+
(0, import_react39.useEffect)(() => {
|
|
11350
11480
|
setSettingsNotifications({
|
|
11351
11481
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11352
11482
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11355,14 +11485,17 @@ function useSettingsNotifications() {
|
|
|
11355
11485
|
}
|
|
11356
11486
|
|
|
11357
11487
|
// src/internal/hooks/useWalletStatus.ts
|
|
11358
|
-
var
|
|
11488
|
+
var import_react40 = require("react");
|
|
11359
11489
|
init_auth();
|
|
11360
11490
|
function useWalletStatus() {
|
|
11361
11491
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
11362
11492
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11363
11493
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11364
|
-
const {
|
|
11365
|
-
|
|
11494
|
+
const {
|
|
11495
|
+
config: { current: config },
|
|
11496
|
+
callbacks
|
|
11497
|
+
} = useLumiaPassportConfig();
|
|
11498
|
+
(0, import_react40.useEffect)(() => {
|
|
11366
11499
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11367
11500
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
11368
11501
|
const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
|
|
@@ -11384,13 +11517,16 @@ function useWalletStatus() {
|
|
|
11384
11517
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11385
11518
|
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
11386
11519
|
function LumiaPassportDialog() {
|
|
11387
|
-
const
|
|
11520
|
+
const {
|
|
11521
|
+
config: { current: config }
|
|
11522
|
+
} = useLumiaPassportConfig();
|
|
11523
|
+
const className = config?.ui?.dialogClassName;
|
|
11388
11524
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11389
11525
|
const page = useLayoutDataStore((st) => st.page);
|
|
11390
11526
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11391
11527
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11392
11528
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11393
|
-
(0,
|
|
11529
|
+
(0, import_react41.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11394
11530
|
usePageMapper();
|
|
11395
11531
|
useAutoConnect();
|
|
11396
11532
|
useCheckVaultStatus();
|
|
@@ -11428,13 +11564,13 @@ function LumiaPassportDialog() {
|
|
|
11428
11564
|
}
|
|
11429
11565
|
|
|
11430
11566
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11431
|
-
var
|
|
11567
|
+
var import_react43 = require("react");
|
|
11432
11568
|
var import_wagmi3 = require("wagmi");
|
|
11433
11569
|
init_base();
|
|
11434
11570
|
|
|
11435
11571
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11436
|
-
var
|
|
11437
|
-
var
|
|
11572
|
+
var import_react_query20 = require("@tanstack/react-query");
|
|
11573
|
+
var import_react42 = require("react");
|
|
11438
11574
|
|
|
11439
11575
|
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11440
11576
|
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
@@ -11560,7 +11696,7 @@ async function sseConnectMutation() {
|
|
|
11560
11696
|
|
|
11561
11697
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11562
11698
|
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
11563
|
-
const { mutate: connectSSE } = (0,
|
|
11699
|
+
const { mutate: connectSSE } = (0, import_react_query20.useMutation)({
|
|
11564
11700
|
mutationFn: sseConnectMutation,
|
|
11565
11701
|
onSuccess: () => {
|
|
11566
11702
|
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
@@ -11569,7 +11705,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11569
11705
|
console.error("Lumia Price SSE connection error:", err);
|
|
11570
11706
|
}
|
|
11571
11707
|
});
|
|
11572
|
-
(0,
|
|
11708
|
+
(0, import_react42.useEffect)(() => {
|
|
11573
11709
|
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11574
11710
|
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11575
11711
|
if (!enabled) {
|
|
@@ -11586,7 +11722,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11586
11722
|
|
|
11587
11723
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11588
11724
|
function LumiaPriceSSE() {
|
|
11589
|
-
const address = useLumiaPassportSession().address;
|
|
11725
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
11590
11726
|
const { data: balance } = (0, import_wagmi3.useBalance)({
|
|
11591
11727
|
address,
|
|
11592
11728
|
chainId: lumiaBeam.id,
|
|
@@ -11600,7 +11736,7 @@ function LumiaPriceSSE() {
|
|
|
11600
11736
|
});
|
|
11601
11737
|
const { lumiaRate, setLumiaRate, setUsdBalance, setBalance } = useLayoutDataStore();
|
|
11602
11738
|
useLumiaPriceSSE(!!address, (update) => setLumiaRate(update.price || 1));
|
|
11603
|
-
(0,
|
|
11739
|
+
(0, import_react43.useEffect)(() => {
|
|
11604
11740
|
const usdBalance = Number(balance?.formatted || 0) * lumiaRate;
|
|
11605
11741
|
setUsdBalance(usdBalance);
|
|
11606
11742
|
setBalance(balance);
|
|
@@ -11609,23 +11745,23 @@ function LumiaPriceSSE() {
|
|
|
11609
11745
|
}
|
|
11610
11746
|
|
|
11611
11747
|
// src/internal/components/TssManager.tsx
|
|
11612
|
-
var
|
|
11748
|
+
var import_react44 = __toESM(require("react"), 1);
|
|
11613
11749
|
init_auth();
|
|
11614
11750
|
init_clients();
|
|
11615
|
-
var TssManagerWithRef =
|
|
11751
|
+
var TssManagerWithRef = import_react44.default.forwardRef((props, ref) => {
|
|
11616
11752
|
const { mpcPin } = props;
|
|
11617
11753
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11618
11754
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11619
11755
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11620
11756
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11621
|
-
const onSessionCreated = (0,
|
|
11757
|
+
const onSessionCreated = (0, import_react44.useCallback)(
|
|
11622
11758
|
(session, address) => {
|
|
11623
11759
|
setSession(session);
|
|
11624
11760
|
setAddress(address);
|
|
11625
11761
|
},
|
|
11626
11762
|
[setSession, setAddress]
|
|
11627
11763
|
);
|
|
11628
|
-
const createSessionWithKeyshare =
|
|
11764
|
+
const createSessionWithKeyshare = import_react44.default.useCallback(
|
|
11629
11765
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11630
11766
|
setStatus("checking key management setup...");
|
|
11631
11767
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11646,50 +11782,46 @@ var TssManagerWithRef = import_react42.default.forwardRef((props, ref) => {
|
|
|
11646
11782
|
},
|
|
11647
11783
|
[setStatus, usePaymaster, mpcPin]
|
|
11648
11784
|
);
|
|
11649
|
-
|
|
11785
|
+
import_react44.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11650
11786
|
return null;
|
|
11651
11787
|
});
|
|
11652
11788
|
|
|
11653
11789
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11654
11790
|
var import_rainbowkit = require("@rainbow-me/rainbowkit");
|
|
11655
|
-
var
|
|
11656
|
-
var
|
|
11791
|
+
var import_react_query21 = require("@tanstack/react-query");
|
|
11792
|
+
var import_react45 = __toESM(require("react"), 1);
|
|
11657
11793
|
var import_wagmi4 = require("wagmi");
|
|
11658
11794
|
init_wallet();
|
|
11659
11795
|
function WalletConnectHandler() {
|
|
11660
|
-
const qc = (0,
|
|
11661
|
-
const { callbacks
|
|
11796
|
+
const qc = (0, import_react_query21.useQueryClient)();
|
|
11797
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
11798
|
+
const { address, isConnected, chain, connector } = (0, import_wagmi4.useAccount)();
|
|
11799
|
+
const { disconnect } = (0, import_wagmi4.useDisconnect)();
|
|
11800
|
+
const { signMessageAsync } = (0, import_wagmi4.useSignMessage)();
|
|
11662
11801
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11663
11802
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11664
|
-
const onError = (0,
|
|
11803
|
+
const onError = (0, import_react45.useCallback)((error) => {
|
|
11665
11804
|
setLinkError(error);
|
|
11666
11805
|
setIsWalletLinking(false);
|
|
11667
11806
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11668
11807
|
}, []);
|
|
11669
|
-
const onLinkingComplete = (0,
|
|
11670
|
-
setIsWalletLinking(false);
|
|
11808
|
+
const onLinkingComplete = (0, import_react45.useCallback)(async (success) => {
|
|
11671
11809
|
if (success) {
|
|
11810
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
11811
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
11672
11812
|
try {
|
|
11673
|
-
|
|
11674
|
-
|
|
11675
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11676
|
-
notifyProvidersUpdate?.();
|
|
11677
|
-
} catch {
|
|
11678
|
-
}
|
|
11679
|
-
} catch (e) {
|
|
11680
|
-
console.error("Failed to load providers:", e);
|
|
11813
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11814
|
+
} catch {
|
|
11681
11815
|
}
|
|
11682
11816
|
setProviderType(null);
|
|
11683
11817
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11684
11818
|
}
|
|
11819
|
+
setIsWalletLinking(false);
|
|
11685
11820
|
}, []);
|
|
11686
11821
|
const { openConnectModal } = (0, import_rainbowkit.useConnectModal)();
|
|
11687
|
-
const
|
|
11688
|
-
const
|
|
11689
|
-
|
|
11690
|
-
const [hasStartedLinking, setHasStartedLinking] = import_react43.default.useState(false);
|
|
11691
|
-
const timeoutRef = import_react43.default.useRef();
|
|
11692
|
-
(0, import_react43.useEffect)(() => {
|
|
11822
|
+
const [hasStartedLinking, setHasStartedLinking] = import_react45.default.useState(false);
|
|
11823
|
+
const timeoutRef = import_react45.default.useRef();
|
|
11824
|
+
(0, import_react45.useEffect)(() => {
|
|
11693
11825
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11694
11826
|
setHasStartedLinking(true);
|
|
11695
11827
|
if (isConnected) {
|
|
@@ -11721,7 +11853,7 @@ function WalletConnectHandler() {
|
|
|
11721
11853
|
}
|
|
11722
11854
|
}
|
|
11723
11855
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect]);
|
|
11724
|
-
(0,
|
|
11856
|
+
(0, import_react45.useEffect)(() => {
|
|
11725
11857
|
if (isConnected && address && isWalletLinking && hasStartedLinking) {
|
|
11726
11858
|
handleWalletSign();
|
|
11727
11859
|
}
|
|
@@ -11806,9 +11938,10 @@ var useLumiaPassportSession = (0, import_zustand5.create)((set) => ({
|
|
|
11806
11938
|
setWalletReadyStatus: (status) => set({ walletReadyStatus: status })
|
|
11807
11939
|
}));
|
|
11808
11940
|
function LumiaPassportSessionProvider({ children }) {
|
|
11809
|
-
const {
|
|
11810
|
-
|
|
11811
|
-
|
|
11941
|
+
const {
|
|
11942
|
+
config: { current: config }
|
|
11943
|
+
} = useLumiaPassportConfig();
|
|
11944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react46.Fragment, { children: [
|
|
11812
11945
|
children,
|
|
11813
11946
|
config.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(WalletConnectHandler, {}),
|
|
11814
11947
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(LumiaPriceSSE, {}),
|
|
@@ -11860,44 +11993,56 @@ var LumiaWagmiProvider = ({ children }) => {
|
|
|
11860
11993
|
|
|
11861
11994
|
// src/context/LumiaPassportContext.tsx
|
|
11862
11995
|
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
11863
|
-
var LumiaPassportContext = (0,
|
|
11996
|
+
var LumiaPassportContext = (0, import_react47.createContext)(void 0);
|
|
11864
11997
|
function LumiaPassportProvider(props) {
|
|
11865
11998
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
11866
11999
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
11867
12000
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
11868
|
-
|
|
11869
|
-
const
|
|
11870
|
-
const
|
|
11871
|
-
const
|
|
11872
|
-
|
|
11873
|
-
|
|
11874
|
-
|
|
11875
|
-
|
|
11876
|
-
|
|
11877
|
-
|
|
11878
|
-
|
|
11879
|
-
|
|
11880
|
-
if (
|
|
11881
|
-
|
|
11882
|
-
|
|
11883
|
-
|
|
11884
|
-
|
|
11885
|
-
if (
|
|
11886
|
-
|
|
11887
|
-
|
|
11888
|
-
|
|
11889
|
-
}
|
|
11890
|
-
if (
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
|
|
12001
|
+
(0, import_react47.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
|
|
12002
|
+
const config = (0, import_react47.useRef)({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
12003
|
+
const updateConfig = (0, import_react47.useCallback)((updates) => {
|
|
12004
|
+
const prev = config.current;
|
|
12005
|
+
const next = { ...prev };
|
|
12006
|
+
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
12007
|
+
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
12008
|
+
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
12009
|
+
if (updates.social) {
|
|
12010
|
+
next.social = { ...next.social, ...updates.social };
|
|
12011
|
+
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
12012
|
+
}
|
|
12013
|
+
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
12014
|
+
if (updates.ui) {
|
|
12015
|
+
next.ui = { ...next.ui, ...updates.ui };
|
|
12016
|
+
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
12017
|
+
}
|
|
12018
|
+
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
12019
|
+
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
12020
|
+
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
12021
|
+
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
12022
|
+
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
12023
|
+
if (updates.services && typeof window !== "undefined") {
|
|
12024
|
+
try {
|
|
12025
|
+
window.__LUMIA_SERVICES__ = next.services;
|
|
12026
|
+
} catch {
|
|
12027
|
+
}
|
|
12028
|
+
}
|
|
12029
|
+
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
12030
|
+
try {
|
|
12031
|
+
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
12032
|
+
} catch {
|
|
12033
|
+
}
|
|
12034
|
+
}
|
|
12035
|
+
config.current = next;
|
|
12036
|
+
}, []);
|
|
12037
|
+
(0, import_react47.useEffect)(() => {
|
|
12038
|
+
if (typeof window === "undefined" || !projectId) return;
|
|
12039
|
+
const mergedConfig = (0, import_lodash_es2.merge)(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12040
|
+
updateConfig(mergedConfig);
|
|
12041
|
+
console.log("[ MERGED PROVIDER STORED CONFIG ]", mergedConfig);
|
|
11896
12042
|
try {
|
|
11897
12043
|
if (typeof window !== "undefined") {
|
|
11898
|
-
window.__LUMIA_SERVICES__ =
|
|
12044
|
+
window.__LUMIA_SERVICES__ = mergedConfig.services;
|
|
11899
12045
|
window.__LUMIA_PROJECT_ID__ = projectId;
|
|
11900
|
-
console.log("[LumiaPassportProvider] Setting window.__LUMIA_SERVICES__:", merged.services);
|
|
11901
12046
|
const resolvedServices = getServiceUrls();
|
|
11902
12047
|
console.log("[LumiaPassportProvider] Resolved services:", resolvedServices);
|
|
11903
12048
|
}
|
|
@@ -11910,60 +12055,12 @@ function LumiaPassportProvider(props) {
|
|
|
11910
12055
|
console.warn("[LumiaPassport] Failed to initialize SDK error tracking:", error);
|
|
11911
12056
|
}
|
|
11912
12057
|
}
|
|
11913
|
-
return merged;
|
|
11914
|
-
});
|
|
11915
|
-
const updateConfig = (0, import_react45.useCallback)((updates) => {
|
|
11916
|
-
setConfig((prev) => {
|
|
11917
|
-
const next = { ...prev };
|
|
11918
|
-
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
11919
|
-
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
11920
|
-
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
11921
|
-
if (updates.social) {
|
|
11922
|
-
next.social = { ...next.social, ...updates.social };
|
|
11923
|
-
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
11924
|
-
}
|
|
11925
|
-
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
11926
|
-
if (updates.ui) {
|
|
11927
|
-
next.ui = { ...next.ui, ...updates.ui };
|
|
11928
|
-
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
11929
|
-
}
|
|
11930
|
-
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
11931
|
-
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
11932
|
-
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
11933
|
-
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
11934
|
-
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
11935
|
-
if (updates.services && typeof window !== "undefined") {
|
|
11936
|
-
try {
|
|
11937
|
-
window.__LUMIA_SERVICES__ = next.services;
|
|
11938
|
-
console.log("[LumiaPassportProvider] Updated window.__LUMIA_SERVICES__:", next.services);
|
|
11939
|
-
} catch {
|
|
11940
|
-
}
|
|
11941
|
-
}
|
|
11942
|
-
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
11943
|
-
try {
|
|
11944
|
-
;
|
|
11945
|
-
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
11946
|
-
console.log("[LumiaPassportProvider] Updated __LUMIA_PROJECT_ID__:", next.projectId);
|
|
11947
|
-
} catch {
|
|
11948
|
-
}
|
|
11949
|
-
}
|
|
11950
|
-
return next;
|
|
11951
|
-
});
|
|
11952
|
-
}, []);
|
|
11953
|
-
(0, import_react45.useEffect)(() => {
|
|
11954
|
-
if (typeof window === "undefined") return;
|
|
11955
|
-
if (!config.projectId) return;
|
|
11956
12058
|
const iframeUrl = getIframeUrl();
|
|
11957
|
-
console.log("[LumiaPassport] Initializing secure iframe wallet:", {
|
|
11958
|
-
iframeUrl,
|
|
11959
|
-
projectId: `${projectId.substring(0, 10)}...`,
|
|
11960
|
-
note: "All MPC operations will happen in isolated iframe context"
|
|
11961
|
-
});
|
|
11962
12059
|
try {
|
|
11963
12060
|
const iframeManager = getIframeManager({
|
|
11964
12061
|
iframeUrl,
|
|
11965
12062
|
projectId,
|
|
11966
|
-
debug:
|
|
12063
|
+
debug: mergedConfig.features?.mpcSecurity ?? true,
|
|
11967
12064
|
onWalletReady: (status) => {
|
|
11968
12065
|
callbacks?.onWalletReady?.(status);
|
|
11969
12066
|
setWalletReadyStatus(status);
|
|
@@ -11971,7 +12068,6 @@ function LumiaPassportProvider(props) {
|
|
|
11971
12068
|
});
|
|
11972
12069
|
iframeManager.initialize().then(() => {
|
|
11973
12070
|
setIsIframeReady(true);
|
|
11974
|
-
console.log("[LumiaPassport] \u2705 Secure iframe wallet initialized successfully");
|
|
11975
12071
|
}).catch((error) => {
|
|
11976
12072
|
console.error("[LumiaPassport] \u274C Failed to initialize iframe wallet:", error);
|
|
11977
12073
|
});
|
|
@@ -11982,24 +12078,19 @@ function LumiaPassportProvider(props) {
|
|
|
11982
12078
|
} catch (error) {
|
|
11983
12079
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
11984
12080
|
}
|
|
11985
|
-
}, [
|
|
11986
|
-
|
|
11987
|
-
|
|
11988
|
-
{
|
|
11989
|
-
value: { config, updateConfig, callbacks, providersVersion, notifyProvidersUpdate },
|
|
11990
|
-
children
|
|
11991
|
-
}
|
|
11992
|
-
) });
|
|
12081
|
+
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12082
|
+
const contextValue = (0, import_react47.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12083
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
11993
12084
|
}
|
|
11994
12085
|
var useLumiaPassportConfig = () => {
|
|
11995
|
-
const ctx = (0,
|
|
12086
|
+
const ctx = (0, import_react47.useContext)(LumiaPassportContext);
|
|
11996
12087
|
if (!ctx) throw new Error("useLumiaPassportConfig must be used within a LumiaPassportProvider");
|
|
11997
12088
|
return ctx;
|
|
11998
12089
|
};
|
|
11999
12090
|
|
|
12000
12091
|
// src/components/ConnectWalletButton.tsx
|
|
12001
12092
|
var import_lucide_react39 = require("lucide-react");
|
|
12002
|
-
var
|
|
12093
|
+
var import_react48 = require("react");
|
|
12003
12094
|
init_auth();
|
|
12004
12095
|
var import_jsx_runtime64 = (
|
|
12005
12096
|
/** external Buttons can be provided */
|
|
@@ -12018,15 +12109,14 @@ function ConnectWalletButton(props) {
|
|
|
12018
12109
|
// TODO: provide usePaymaster via config context
|
|
12019
12110
|
usePaymaster = true
|
|
12020
12111
|
} = props;
|
|
12021
|
-
console.log("[ CONNECT BUTTON RENDER ] should be as minimal as possible");
|
|
12022
12112
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12023
12113
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12024
12114
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12025
12115
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12026
|
-
(0,
|
|
12116
|
+
(0, import_react48.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12027
12117
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
12028
12118
|
const displayName = import_auth3.jwtTokenManager.getDisplayName();
|
|
12029
|
-
const indicators = (0,
|
|
12119
|
+
const indicators = (0, import_react48.useMemo)(() => {
|
|
12030
12120
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
12031
12121
|
if (!userId) return { server: false, local: false, backup: false };
|
|
12032
12122
|
const server = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -12074,14 +12164,7 @@ function ConnectWalletButton(props) {
|
|
|
12074
12164
|
"rounded-[var(--l-pass-el-bdrs)] p-2 max-w-sm min-w-[256px]"
|
|
12075
12165
|
),
|
|
12076
12166
|
children: [
|
|
12077
|
-
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12078
|
-
"img",
|
|
12079
|
-
{
|
|
12080
|
-
src: avatar,
|
|
12081
|
-
alt: "User avatar",
|
|
12082
|
-
className: "w-full h-full object-cover"
|
|
12083
|
-
}
|
|
12084
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12167
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12085
12168
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
12086
12169
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "font-semibold text-base truncate max-w-[144px]", children: displayName }),
|
|
12087
12170
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(UsdBalance, { className: "font-semibold text-base text-[var(--l-pass-fg-muted)]" })
|
|
@@ -12178,13 +12261,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12178
12261
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12179
12262
|
|
|
12180
12263
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12181
|
-
var
|
|
12264
|
+
var import_react49 = require("react");
|
|
12182
12265
|
function useLumiaPassportOpen() {
|
|
12183
12266
|
const page = useLayoutDataStore((st) => st.page);
|
|
12184
12267
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12185
12268
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12186
|
-
const address = useLumiaPassportSession().address;
|
|
12187
|
-
const open = (0,
|
|
12269
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
12270
|
+
const open = (0, import_react49.useCallback)(
|
|
12188
12271
|
(passportPage, params) => {
|
|
12189
12272
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12190
12273
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12193,24 +12276,27 @@ function useLumiaPassportOpen() {
|
|
|
12193
12276
|
},
|
|
12194
12277
|
[setPage, setPageParams, address]
|
|
12195
12278
|
);
|
|
12196
|
-
const close = (0,
|
|
12279
|
+
const close = (0, import_react49.useCallback)(() => setPage(null), [setPage]);
|
|
12197
12280
|
return { open, close, isOpen: page !== null };
|
|
12198
12281
|
}
|
|
12199
12282
|
|
|
12200
12283
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12201
|
-
var
|
|
12284
|
+
var import_react50 = require("react");
|
|
12202
12285
|
function useLumiaPassportColorMode() {
|
|
12203
|
-
const
|
|
12286
|
+
const {
|
|
12287
|
+
config: { current: config }
|
|
12288
|
+
} = useLumiaPassportConfig();
|
|
12289
|
+
const preferedColorMode = config?.preferedColorMode;
|
|
12204
12290
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12205
12291
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12206
|
-
const setColorMode = (0,
|
|
12292
|
+
const setColorMode = (0, import_react50.useCallback)(
|
|
12207
12293
|
(mode) => {
|
|
12208
12294
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12209
12295
|
handleStoreColorMode(mode);
|
|
12210
12296
|
},
|
|
12211
12297
|
[handleStoreColorMode]
|
|
12212
12298
|
);
|
|
12213
|
-
(0,
|
|
12299
|
+
(0, import_react50.useEffect)(() => {
|
|
12214
12300
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12215
12301
|
if (!targetColorMode && !preferedColorMode) {
|
|
12216
12302
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12252,7 +12338,7 @@ function ThemeToggle(props) {
|
|
|
12252
12338
|
}
|
|
12253
12339
|
|
|
12254
12340
|
// src/context/RainbowKitContext.tsx
|
|
12255
|
-
var
|
|
12341
|
+
var import_react51 = __toESM(require("react"), 1);
|
|
12256
12342
|
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
12257
12343
|
var import_rainbowkit3 = require("@rainbow-me/rainbowkit");
|
|
12258
12344
|
var import_wagmi8 = require("wagmi");
|
|
@@ -12395,12 +12481,14 @@ var rainbowTheme = {
|
|
|
12395
12481
|
// src/context/RainbowKitContext.tsx
|
|
12396
12482
|
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
12397
12483
|
var LumiaRainbowKitProvider = ({ children }) => {
|
|
12398
|
-
const {
|
|
12484
|
+
const {
|
|
12485
|
+
config: { current: config }
|
|
12486
|
+
} = useLumiaPassportConfig();
|
|
12399
12487
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
12400
|
-
const rainbowConfig2 =
|
|
12488
|
+
const rainbowConfig2 = import_react51.default.useMemo(() => {
|
|
12401
12489
|
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12402
12490
|
}, [config.wallet?.walletConnectProjectId]);
|
|
12403
|
-
const customTheme =
|
|
12491
|
+
const customTheme = import_react51.default.useMemo(
|
|
12404
12492
|
() => isDark ? {
|
|
12405
12493
|
...(0, import_rainbowkit3.darkTheme)(),
|
|
12406
12494
|
colors: {
|
|
@@ -12428,11 +12516,9 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12428
12516
|
};
|
|
12429
12517
|
|
|
12430
12518
|
// src/internal/components/UserOpStatus.tsx
|
|
12431
|
-
var React20 = __toESM(require("react"), 1);
|
|
12432
12519
|
var import_lucide_react42 = require("lucide-react");
|
|
12433
|
-
|
|
12434
|
-
|
|
12435
|
-
var import_class_variance_authority2 = require("class-variance-authority");
|
|
12520
|
+
var React18 = __toESM(require("react"), 1);
|
|
12521
|
+
init_base();
|
|
12436
12522
|
|
|
12437
12523
|
// src/internal/utils/cn.ts
|
|
12438
12524
|
var import_clsx3 = require("clsx");
|
|
@@ -12441,34 +12527,10 @@ function cn2(...inputs) {
|
|
|
12441
12527
|
return (0, import_tailwind_merge2.twMerge)((0, import_clsx3.clsx)(inputs));
|
|
12442
12528
|
}
|
|
12443
12529
|
|
|
12444
|
-
// src/internal/components/ui/badge.tsx
|
|
12445
|
-
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
12446
|
-
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
12447
|
-
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
12448
|
-
{
|
|
12449
|
-
variants: {
|
|
12450
|
-
variant: {
|
|
12451
|
-
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12452
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12453
|
-
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12454
|
-
outline: "text-foreground",
|
|
12455
|
-
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12456
|
-
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12457
|
-
}
|
|
12458
|
-
},
|
|
12459
|
-
defaultVariants: {
|
|
12460
|
-
variant: "default"
|
|
12461
|
-
}
|
|
12462
|
-
}
|
|
12463
|
-
);
|
|
12464
|
-
function Badge({ className, variant, ...props }) {
|
|
12465
|
-
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12466
|
-
}
|
|
12467
|
-
|
|
12468
12530
|
// src/internal/components/Address.tsx
|
|
12469
|
-
var React19 = __toESM(require("react"), 1);
|
|
12470
12531
|
var import_lucide_react41 = require("lucide-react");
|
|
12471
|
-
var
|
|
12532
|
+
var React17 = __toESM(require("react"), 1);
|
|
12533
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
12472
12534
|
function toExplorerAddressUrl(address, chain) {
|
|
12473
12535
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12474
12536
|
if (!base2) return null;
|
|
@@ -12489,16 +12551,16 @@ var Address = ({
|
|
|
12489
12551
|
}) => {
|
|
12490
12552
|
const addr = address || "";
|
|
12491
12553
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12492
|
-
const [copied, setCopied] =
|
|
12493
|
-
if (!addr) return /* @__PURE__ */ (0,
|
|
12494
|
-
return /* @__PURE__ */ (0,
|
|
12495
|
-
label && /* @__PURE__ */ (0,
|
|
12496
|
-
/* @__PURE__ */ (0,
|
|
12497
|
-
showCopy && /* @__PURE__ */ (0,
|
|
12554
|
+
const [copied, setCopied] = React17.useState(false);
|
|
12555
|
+
if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12556
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12557
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
12558
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
12559
|
+
showCopy && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
12498
12560
|
Button,
|
|
12499
12561
|
{
|
|
12500
12562
|
variant: "ghost",
|
|
12501
|
-
size: "
|
|
12563
|
+
size: "small",
|
|
12502
12564
|
title: copied ? "Copied" : "Copy address",
|
|
12503
12565
|
onClick: async () => {
|
|
12504
12566
|
try {
|
|
@@ -12508,10 +12570,10 @@ var Address = ({
|
|
|
12508
12570
|
} catch {
|
|
12509
12571
|
}
|
|
12510
12572
|
},
|
|
12511
|
-
children: /* @__PURE__ */ (0,
|
|
12573
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react41.Copy, { className: "h-4 w-4" })
|
|
12512
12574
|
}
|
|
12513
12575
|
),
|
|
12514
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
12576
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
12515
12577
|
"a",
|
|
12516
12578
|
{
|
|
12517
12579
|
href: explorer,
|
|
@@ -12519,14 +12581,38 @@ var Address = ({
|
|
|
12519
12581
|
rel: "noreferrer noopener",
|
|
12520
12582
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12521
12583
|
title: "Open in explorer",
|
|
12522
|
-
children: /* @__PURE__ */ (0,
|
|
12584
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react41.ExternalLink, { className: "h-4 w-4" })
|
|
12523
12585
|
}
|
|
12524
12586
|
)
|
|
12525
12587
|
] });
|
|
12526
12588
|
};
|
|
12527
12589
|
|
|
12590
|
+
// src/internal/components/ui/badge.tsx
|
|
12591
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
12592
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
12593
|
+
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
12594
|
+
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
12595
|
+
{
|
|
12596
|
+
variants: {
|
|
12597
|
+
variant: {
|
|
12598
|
+
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12599
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12600
|
+
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12601
|
+
outline: "text-foreground",
|
|
12602
|
+
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12603
|
+
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12604
|
+
}
|
|
12605
|
+
},
|
|
12606
|
+
defaultVariants: {
|
|
12607
|
+
variant: "default"
|
|
12608
|
+
}
|
|
12609
|
+
}
|
|
12610
|
+
);
|
|
12611
|
+
function Badge({ className, variant, ...props }) {
|
|
12612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12613
|
+
}
|
|
12614
|
+
|
|
12528
12615
|
// src/internal/components/UserOpStatus.tsx
|
|
12529
|
-
init_base();
|
|
12530
12616
|
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
12531
12617
|
var UserOpStatus = ({
|
|
12532
12618
|
userOpHash,
|
|
@@ -12538,20 +12624,20 @@ var UserOpStatus = ({
|
|
|
12538
12624
|
externalState
|
|
12539
12625
|
}) => {
|
|
12540
12626
|
const useExternalState = !!externalState;
|
|
12541
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12542
|
-
const [internalMempool, setInternalMempool] =
|
|
12543
|
-
const [internalError, setInternalError] =
|
|
12544
|
-
const [attempt, setAttempt] =
|
|
12545
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12546
|
-
const [timedOut, setTimedOut] =
|
|
12547
|
-
const [rejected, setRejected] =
|
|
12548
|
-
const intervalRef =
|
|
12549
|
-
const startTimeRef =
|
|
12627
|
+
const [internalReceipt, setInternalReceipt] = React18.useState(null);
|
|
12628
|
+
const [internalMempool, setInternalMempool] = React18.useState(null);
|
|
12629
|
+
const [internalError, setInternalError] = React18.useState(null);
|
|
12630
|
+
const [attempt, setAttempt] = React18.useState(0);
|
|
12631
|
+
const [internalRefreshing, setInternalRefreshing] = React18.useState(false);
|
|
12632
|
+
const [timedOut, setTimedOut] = React18.useState(false);
|
|
12633
|
+
const [rejected, setRejected] = React18.useState(false);
|
|
12634
|
+
const intervalRef = React18.useRef(null);
|
|
12635
|
+
const startTimeRef = React18.useRef(Date.now());
|
|
12550
12636
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12551
12637
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12552
12638
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12553
12639
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12554
|
-
const rpc =
|
|
12640
|
+
const rpc = React18.useCallback(async (method, params) => {
|
|
12555
12641
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12556
12642
|
const res = await fetch(getBundlerUrl(), {
|
|
12557
12643
|
method: "POST",
|
|
@@ -12562,14 +12648,14 @@ var UserOpStatus = ({
|
|
|
12562
12648
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12563
12649
|
return json.result;
|
|
12564
12650
|
}, []);
|
|
12565
|
-
const extractMempoolInfo =
|
|
12651
|
+
const extractMempoolInfo = React18.useCallback((m) => {
|
|
12566
12652
|
if (!m) return null;
|
|
12567
12653
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12568
12654
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12569
12655
|
if (!entryPoint && !sender) return null;
|
|
12570
12656
|
return { entryPoint, sender };
|
|
12571
12657
|
}, []);
|
|
12572
|
-
const tick =
|
|
12658
|
+
const tick = React18.useCallback(async () => {
|
|
12573
12659
|
if (useExternalState) return;
|
|
12574
12660
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12575
12661
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12613,7 +12699,7 @@ var UserOpStatus = ({
|
|
|
12613
12699
|
setAttempt((x) => x + 1);
|
|
12614
12700
|
}
|
|
12615
12701
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12616
|
-
|
|
12702
|
+
React18.useEffect(() => {
|
|
12617
12703
|
if (useExternalState) return;
|
|
12618
12704
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12619
12705
|
startTimeRef.current = Date.now();
|
|
@@ -12625,7 +12711,7 @@ var UserOpStatus = ({
|
|
|
12625
12711
|
setAttempt(0);
|
|
12626
12712
|
setInternalRefreshing(false);
|
|
12627
12713
|
}, [userOpHash, useExternalState]);
|
|
12628
|
-
|
|
12714
|
+
React18.useEffect(() => {
|
|
12629
12715
|
if (useExternalState) {
|
|
12630
12716
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12631
12717
|
return;
|
|
@@ -12691,7 +12777,10 @@ var UserOpStatus = ({
|
|
|
12691
12777
|
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
12692
12778
|
"div",
|
|
12693
12779
|
{
|
|
12694
|
-
className: cn2(
|
|
12780
|
+
className: cn2(
|
|
12781
|
+
"lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]",
|
|
12782
|
+
className
|
|
12783
|
+
),
|
|
12695
12784
|
style: { textAlign: "left", listStyle: "none" },
|
|
12696
12785
|
children: [
|
|
12697
12786
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [
|
|
@@ -12699,7 +12788,7 @@ var UserOpStatus = ({
|
|
|
12699
12788
|
stateBadge(),
|
|
12700
12789
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
12701
12790
|
] }),
|
|
12702
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Button, { variant: "ghost", size: "
|
|
12791
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
12703
12792
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_lucide_react42.RefreshCw, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
12704
12793
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-xs", children: "Refresh" })
|
|
12705
12794
|
] })
|
|
@@ -12711,7 +12800,7 @@ var UserOpStatus = ({
|
|
|
12711
12800
|
Button,
|
|
12712
12801
|
{
|
|
12713
12802
|
variant: "ghost",
|
|
12714
|
-
size: "
|
|
12803
|
+
size: "small",
|
|
12715
12804
|
className: "h-8 w-8 p-0",
|
|
12716
12805
|
onClick: async () => {
|
|
12717
12806
|
try {
|
|
@@ -12730,7 +12819,7 @@ var UserOpStatus = ({
|
|
|
12730
12819
|
Button,
|
|
12731
12820
|
{
|
|
12732
12821
|
variant: "ghost",
|
|
12733
|
-
size: "
|
|
12822
|
+
size: "small",
|
|
12734
12823
|
className: "h-8 w-8 p-0",
|
|
12735
12824
|
onClick: async () => {
|
|
12736
12825
|
try {
|
|
@@ -12798,8 +12887,8 @@ var UserOpStatus = ({
|
|
|
12798
12887
|
};
|
|
12799
12888
|
|
|
12800
12889
|
// src/internal/components/Hash.tsx
|
|
12801
|
-
var React21 = __toESM(require("react"), 1);
|
|
12802
12890
|
var import_lucide_react43 = require("lucide-react");
|
|
12891
|
+
var React19 = __toESM(require("react"), 1);
|
|
12803
12892
|
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
12804
12893
|
function toExplorerUrl(kind, value, chain) {
|
|
12805
12894
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12823,7 +12912,7 @@ var Hash = ({
|
|
|
12823
12912
|
}) => {
|
|
12824
12913
|
const value = hash || "";
|
|
12825
12914
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12826
|
-
const [copied, setCopied] =
|
|
12915
|
+
const [copied, setCopied] = React19.useState(false);
|
|
12827
12916
|
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12828
12917
|
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12829
12918
|
label && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12832,7 +12921,7 @@ var Hash = ({
|
|
|
12832
12921
|
Button,
|
|
12833
12922
|
{
|
|
12834
12923
|
variant: "ghost",
|
|
12835
|
-
size: "
|
|
12924
|
+
size: "small",
|
|
12836
12925
|
title: copied ? "Copied" : "Copy",
|
|
12837
12926
|
onClick: async () => {
|
|
12838
12927
|
try {
|
|
@@ -12860,14 +12949,14 @@ var Hash = ({
|
|
|
12860
12949
|
};
|
|
12861
12950
|
|
|
12862
12951
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
12863
|
-
var
|
|
12952
|
+
var import_react52 = require("react");
|
|
12864
12953
|
init_base();
|
|
12865
12954
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
12866
12955
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
12867
|
-
const [transactions, setTransactions] = (0,
|
|
12868
|
-
const [loading, setLoading] = (0,
|
|
12869
|
-
const [error, setError] = (0,
|
|
12870
|
-
(0,
|
|
12956
|
+
const [transactions, setTransactions] = (0, import_react52.useState)([]);
|
|
12957
|
+
const [loading, setLoading] = (0, import_react52.useState)(true);
|
|
12958
|
+
const [error, setError] = (0, import_react52.useState)(null);
|
|
12959
|
+
(0, import_react52.useEffect)(() => {
|
|
12871
12960
|
const fetchTransactions = async () => {
|
|
12872
12961
|
try {
|
|
12873
12962
|
setLoading(true);
|
|
@@ -12893,7 +12982,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12893
12982
|
fetchTransactions();
|
|
12894
12983
|
}
|
|
12895
12984
|
}, [address, itemsCount]);
|
|
12896
|
-
const
|
|
12985
|
+
const formatValue3 = (value) => {
|
|
12897
12986
|
try {
|
|
12898
12987
|
const wei = BigInt(value);
|
|
12899
12988
|
const eth = Number(wei) / 1e18;
|
|
@@ -12963,7 +13052,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12963
13052
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { children: [
|
|
12964
13053
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "text-gray-600", children: "Value:" }),
|
|
12965
13054
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("span", { className: "font-semibold ml-1", children: [
|
|
12966
|
-
|
|
13055
|
+
formatValue3(tx.value),
|
|
12967
13056
|
" LUMIA"
|
|
12968
13057
|
] })
|
|
12969
13058
|
] })
|
|
@@ -12986,7 +13075,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12986
13075
|
};
|
|
12987
13076
|
|
|
12988
13077
|
// src/hooks/useUserOpStatus.ts
|
|
12989
|
-
var
|
|
13078
|
+
var React21 = __toESM(require("react"), 1);
|
|
12990
13079
|
init_base();
|
|
12991
13080
|
function useUserOpStatus(options = {}) {
|
|
12992
13081
|
const {
|
|
@@ -12998,16 +13087,16 @@ function useUserOpStatus(options = {}) {
|
|
|
12998
13087
|
onReceipt,
|
|
12999
13088
|
onTxHash
|
|
13000
13089
|
} = options;
|
|
13001
|
-
const [state, setState] =
|
|
13002
|
-
const [receipt, setReceipt] =
|
|
13003
|
-
const [mempool, setMempool] =
|
|
13004
|
-
const [txHash, setTxHash] =
|
|
13005
|
-
const [error, setError] =
|
|
13006
|
-
const [isPolling, setIsPolling] =
|
|
13007
|
-
const intervalRef =
|
|
13008
|
-
const startTimeRef =
|
|
13009
|
-
const prevStateRef =
|
|
13010
|
-
const rpc =
|
|
13090
|
+
const [state, setState] = React21.useState("waiting");
|
|
13091
|
+
const [receipt, setReceipt] = React21.useState(null);
|
|
13092
|
+
const [mempool, setMempool] = React21.useState(null);
|
|
13093
|
+
const [txHash, setTxHash] = React21.useState(null);
|
|
13094
|
+
const [error, setError] = React21.useState(null);
|
|
13095
|
+
const [isPolling, setIsPolling] = React21.useState(false);
|
|
13096
|
+
const intervalRef = React21.useRef(null);
|
|
13097
|
+
const startTimeRef = React21.useRef(Date.now());
|
|
13098
|
+
const prevStateRef = React21.useRef("waiting");
|
|
13099
|
+
const rpc = React21.useCallback(async (method, params) => {
|
|
13011
13100
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
13012
13101
|
const res = await fetch(getBundlerUrl(), {
|
|
13013
13102
|
method: "POST",
|
|
@@ -13018,21 +13107,21 @@ function useUserOpStatus(options = {}) {
|
|
|
13018
13107
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
13019
13108
|
return json.result;
|
|
13020
13109
|
}, []);
|
|
13021
|
-
const extractMempoolInfo =
|
|
13110
|
+
const extractMempoolInfo = React21.useCallback((m) => {
|
|
13022
13111
|
if (!m) return null;
|
|
13023
13112
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
13024
13113
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
13025
13114
|
if (!entryPoint && !sender) return null;
|
|
13026
13115
|
return { entryPoint, sender };
|
|
13027
13116
|
}, []);
|
|
13028
|
-
const updateState =
|
|
13117
|
+
const updateState = React21.useCallback((newState) => {
|
|
13029
13118
|
setState(newState);
|
|
13030
13119
|
if (prevStateRef.current !== newState) {
|
|
13031
13120
|
prevStateRef.current = newState;
|
|
13032
13121
|
onStateChange?.(newState);
|
|
13033
13122
|
}
|
|
13034
13123
|
}, [onStateChange]);
|
|
13035
|
-
const tick =
|
|
13124
|
+
const tick = React21.useCallback(async () => {
|
|
13036
13125
|
if (!userOpHash || !enabled) return;
|
|
13037
13126
|
if (receipt) {
|
|
13038
13127
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13105,7 +13194,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13105
13194
|
onTxHash,
|
|
13106
13195
|
onReceipt
|
|
13107
13196
|
]);
|
|
13108
|
-
|
|
13197
|
+
React21.useEffect(() => {
|
|
13109
13198
|
if (!userOpHash || !enabled) return;
|
|
13110
13199
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13111
13200
|
startTimeRef.current = Date.now();
|
|
@@ -13117,7 +13206,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13117
13206
|
setError(null);
|
|
13118
13207
|
setIsPolling(false);
|
|
13119
13208
|
}, [userOpHash, enabled]);
|
|
13120
|
-
|
|
13209
|
+
React21.useEffect(() => {
|
|
13121
13210
|
if (!userOpHash || !enabled) {
|
|
13122
13211
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13123
13212
|
return;
|
|
@@ -13153,7 +13242,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13153
13242
|
}
|
|
13154
13243
|
};
|
|
13155
13244
|
}, [userOpHash, enabled, pollMs]);
|
|
13156
|
-
const refresh =
|
|
13245
|
+
const refresh = React21.useCallback(async () => {
|
|
13157
13246
|
await tick();
|
|
13158
13247
|
}, [tick]);
|
|
13159
13248
|
return {
|
|
@@ -13168,22 +13257,22 @@ function useUserOpStatus(options = {}) {
|
|
|
13168
13257
|
}
|
|
13169
13258
|
|
|
13170
13259
|
// src/hooks/useLogout.ts
|
|
13171
|
-
var
|
|
13172
|
-
var
|
|
13260
|
+
var import_auth20 = require("@lumiapassport/core/auth");
|
|
13261
|
+
var import_react53 = require("react");
|
|
13173
13262
|
function useLogout() {
|
|
13174
13263
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13175
13264
|
const { callbacks } = useLumiaPassportConfig();
|
|
13176
|
-
const logout2 = (0,
|
|
13265
|
+
const logout2 = (0, import_react53.useCallback)(async () => {
|
|
13177
13266
|
const prevAddress = address;
|
|
13178
13267
|
let userId = null;
|
|
13179
13268
|
setIsLoading(true);
|
|
13180
13269
|
try {
|
|
13181
|
-
userId =
|
|
13270
|
+
userId = import_auth20.jwtTokenManager.getUserId() || null;
|
|
13182
13271
|
} catch (error) {
|
|
13183
13272
|
console.warn("[useLogout] Could not get userId:", error);
|
|
13184
13273
|
}
|
|
13185
13274
|
try {
|
|
13186
|
-
await (0,
|
|
13275
|
+
await (0, import_auth20.logout)();
|
|
13187
13276
|
} catch (error) {
|
|
13188
13277
|
console.warn("[useLogout] Core logout failed:", error);
|
|
13189
13278
|
}
|
|
@@ -13320,49 +13409,6 @@ function useSmartAccountTransactions() {
|
|
|
13320
13409
|
};
|
|
13321
13410
|
}
|
|
13322
13411
|
|
|
13323
|
-
// src/modules/linkedProfiles.ts
|
|
13324
|
-
var React24 = __toESM(require("react"), 1);
|
|
13325
|
-
init_auth();
|
|
13326
|
-
init_common();
|
|
13327
|
-
init_types();
|
|
13328
|
-
function useLumiaPassportLinkedProfiles() {
|
|
13329
|
-
const { providersVersion } = useLumiaPassportConfig();
|
|
13330
|
-
const [profiles, setProfiles] = React24.useState([]);
|
|
13331
|
-
const [avatar, setAvatar] = React24.useState(null);
|
|
13332
|
-
const [isLoading, setIsLoading] = React24.useState(false);
|
|
13333
|
-
const [error, setError] = React24.useState(null);
|
|
13334
|
-
const load = React24.useCallback(async () => {
|
|
13335
|
-
setIsLoading(true);
|
|
13336
|
-
setError(null);
|
|
13337
|
-
try {
|
|
13338
|
-
const list = await getLinkedProviders();
|
|
13339
|
-
const enriched = list.map((p) => {
|
|
13340
|
-
const info = getProviderDisplayInfo(p.provider);
|
|
13341
|
-
return {
|
|
13342
|
-
...p,
|
|
13343
|
-
displayName: info.name,
|
|
13344
|
-
icon: info.icon
|
|
13345
|
-
// color: info.color,
|
|
13346
|
-
};
|
|
13347
|
-
});
|
|
13348
|
-
setProfiles(enriched);
|
|
13349
|
-
try {
|
|
13350
|
-
setAvatar(import_auth3.jwtTokenManager.getAvatar() || null);
|
|
13351
|
-
} catch {
|
|
13352
|
-
setAvatar(null);
|
|
13353
|
-
}
|
|
13354
|
-
} catch (e) {
|
|
13355
|
-
setError(e?.message || "Failed to load linked profiles");
|
|
13356
|
-
} finally {
|
|
13357
|
-
setIsLoading(false);
|
|
13358
|
-
}
|
|
13359
|
-
}, []);
|
|
13360
|
-
React24.useEffect(() => {
|
|
13361
|
-
load();
|
|
13362
|
-
}, [load, providersVersion]);
|
|
13363
|
-
return { profiles, avatar, isLoading, error, refresh: load };
|
|
13364
|
-
}
|
|
13365
|
-
|
|
13366
13412
|
// src/index.ts
|
|
13367
13413
|
init_iframe_manager();
|
|
13368
13414
|
(() => {
|