@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.js
CHANGED
|
@@ -4251,26 +4251,34 @@ var init_profile = __esm({
|
|
|
4251
4251
|
});
|
|
4252
4252
|
|
|
4253
4253
|
// src/styles/built.css
|
|
4254
|
-
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}';
|
|
4254
|
+
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}';
|
|
4255
4255
|
|
|
4256
4256
|
// src/context/LumiaPassportContext.tsx
|
|
4257
4257
|
init_lumiaPassport();
|
|
4258
4258
|
init_iframe_manager();
|
|
4259
4259
|
import { initSdkErrorTracking } from "@lumiapassport/core/internal/error-tracking";
|
|
4260
|
-
import {
|
|
4260
|
+
import { merge } from "lodash-es";
|
|
4261
|
+
import {
|
|
4262
|
+
createContext,
|
|
4263
|
+
useCallback as useCallback17,
|
|
4264
|
+
useContext,
|
|
4265
|
+
useEffect as useEffect30,
|
|
4266
|
+
useMemo as useMemo3,
|
|
4267
|
+
useRef as useRef10
|
|
4268
|
+
} from "react";
|
|
4261
4269
|
|
|
4262
4270
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4263
|
-
import { Fragment as
|
|
4271
|
+
import { Fragment as Fragment11 } from "react";
|
|
4264
4272
|
import { create as create5 } from "zustand";
|
|
4265
4273
|
|
|
4266
4274
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4267
4275
|
import { AnimatePresence as AnimatePresence4, motion as motion4 } from "framer-motion";
|
|
4268
|
-
import { useEffect as
|
|
4276
|
+
import { useEffect as useEffect26 } from "react";
|
|
4269
4277
|
|
|
4270
4278
|
// package.json
|
|
4271
4279
|
var package_default = {
|
|
4272
4280
|
name: "@lumiapassport/ui-kit",
|
|
4273
|
-
version: "1.
|
|
4281
|
+
version: "1.13.0",
|
|
4274
4282
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4275
4283
|
type: "module",
|
|
4276
4284
|
main: "./dist/index.cjs",
|
|
@@ -4359,7 +4367,7 @@ var package_default = {
|
|
|
4359
4367
|
|
|
4360
4368
|
// src/internal/components/Footer/Footer.tsx
|
|
4361
4369
|
import { useMutation } from "@tanstack/react-query";
|
|
4362
|
-
import { LogOut } from "lucide-react";
|
|
4370
|
+
import { Loader, LogOut } from "lucide-react";
|
|
4363
4371
|
|
|
4364
4372
|
// src/internal/assets/LumiaLogo.tsx
|
|
4365
4373
|
import { forwardRef } from "react";
|
|
@@ -4422,8 +4430,10 @@ import { create } from "zustand";
|
|
|
4422
4430
|
// src/internal/constants.ts
|
|
4423
4431
|
init_assets();
|
|
4424
4432
|
import { Key as Key2, Mail as Mail2, Wallet2 as Wallet22 } from "lucide-react";
|
|
4425
|
-
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4426
4433
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4434
|
+
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4435
|
+
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4436
|
+
var MAX_LIST_HEIGHT = 320;
|
|
4427
4437
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4428
4438
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4429
4439
|
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
@@ -4525,37 +4535,32 @@ var buttonVariants = cva(
|
|
|
4525
4535
|
default: cn(
|
|
4526
4536
|
"border border-transparent",
|
|
4527
4537
|
"bg-[var(--l-pass-primary)] text-[var(--l-pass-fg-inverted)]",
|
|
4528
|
-
"hover:bg-[var(--l-pass-primary-h)]
|
|
4529
|
-
"active:bg-[var(--l-pass-primary-a)]"
|
|
4538
|
+
"hover:bg-[var(--l-pass-primary-h)]",
|
|
4539
|
+
"active:bg-[var(--l-pass-primary-a)]",
|
|
4540
|
+
"disabled:hover:bg-[var(--l-pass-primary)] disabled:active:bg-[var(--l-pass-primary)]"
|
|
4530
4541
|
),
|
|
4531
4542
|
outline: cn(
|
|
4532
4543
|
"border border-[var(--l-pass-bd)] bg-transparent text-[var(--l-pass-fg)]",
|
|
4533
|
-
"hover:text-[var(--l-pass-fg-h)]
|
|
4534
|
-
"active:text-[var(--l-pass-fg-a)]
|
|
4544
|
+
"hover:text-[var(--l-pass-fg-h)]",
|
|
4545
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4546
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4535
4547
|
),
|
|
4536
4548
|
ghost: cn(
|
|
4537
|
-
"border border-transparent",
|
|
4538
|
-
"bg-transparent text-[var(--l-pass-fg)]",
|
|
4549
|
+
"border border-transparent bg-transparent text-[var(--l-pass-fg)]",
|
|
4539
4550
|
"hover:text-[var(--l-pass-fg-h)]",
|
|
4540
|
-
"
|
|
4541
|
-
"active:text-[var(--l-pass-fg
|
|
4542
|
-
)
|
|
4543
|
-
// deprecate
|
|
4544
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
4545
|
-
secondary: "bg-gray-600 text-white hover:bg-gray-500 dark:bg-gray-700 dark:hover:bg-gray-600",
|
|
4546
|
-
link: "bg-transparent !bg-transparent text-blue-600 hover:text-blue-700 underline-offset-4 hover:underline",
|
|
4547
|
-
telegram: "bg-[#0088cc] text-white hover:bg-[#0077bb]",
|
|
4548
|
-
success: "bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600"
|
|
4551
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4552
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4553
|
+
)
|
|
4549
4554
|
},
|
|
4550
4555
|
size: {
|
|
4551
4556
|
small: "h-6 px-2 rounded-[5px]",
|
|
4552
4557
|
medium: "h-8 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4553
4558
|
large: "h-12 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4554
|
-
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4559
|
+
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4555
4560
|
// deprecate
|
|
4556
|
-
default:
|
|
4557
|
-
sm:
|
|
4558
|
-
lg:
|
|
4561
|
+
// default: 'h-10 px-4 py-2',
|
|
4562
|
+
// sm: 'h-9 rounded-xl px-3',
|
|
4563
|
+
// lg: 'h-11 rounded-xl px-8'
|
|
4559
4564
|
}
|
|
4560
4565
|
},
|
|
4561
4566
|
defaultVariants: {
|
|
@@ -4651,12 +4656,12 @@ function Footer() {
|
|
|
4651
4656
|
disabled: isDisconnecting,
|
|
4652
4657
|
children: [
|
|
4653
4658
|
/* @__PURE__ */ jsx4("span", { children: "Log Out" }),
|
|
4654
|
-
/* @__PURE__ */ jsx4(LogOut, { className: "w-4 h-4" })
|
|
4659
|
+
isDisconnecting ? /* @__PURE__ */ jsx4(Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx4(LogOut, { className: "w-4 h-4" })
|
|
4655
4660
|
]
|
|
4656
4661
|
}
|
|
4657
|
-
) : /* @__PURE__ */ jsx4("span", { className: "text-
|
|
4662
|
+
) : /* @__PURE__ */ jsx4("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4658
4663
|
] }),
|
|
4659
|
-
!!address && /* @__PURE__ */ jsx4("span", { className: "text-
|
|
4664
|
+
!!address && /* @__PURE__ */ jsx4("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4660
4665
|
]
|
|
4661
4666
|
}
|
|
4662
4667
|
);
|
|
@@ -4713,7 +4718,7 @@ function LumiaIcon(props) {
|
|
|
4713
4718
|
|
|
4714
4719
|
// src/internal/components/Header/Header.tsx
|
|
4715
4720
|
import { useQuery } from "@tanstack/react-query";
|
|
4716
|
-
import { Check, CheckCircle2, Copy, Loader } from "lucide-react";
|
|
4721
|
+
import { Check, CheckCircle2, Copy, Loader as Loader2 } from "lucide-react";
|
|
4717
4722
|
import { useState } from "react";
|
|
4718
4723
|
init_auth();
|
|
4719
4724
|
init_clients();
|
|
@@ -4745,7 +4750,9 @@ function formatAddress(addr) {
|
|
|
4745
4750
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
4746
4751
|
}
|
|
4747
4752
|
function Header() {
|
|
4748
|
-
const {
|
|
4753
|
+
const {
|
|
4754
|
+
config: { current: config }
|
|
4755
|
+
} = useLumiaPassportConfig();
|
|
4749
4756
|
const address = useLumiaPassportSession((st) => st.address);
|
|
4750
4757
|
const [copied, setCopied] = useState(false);
|
|
4751
4758
|
const avatar = jwtTokenManager2.getAvatar();
|
|
@@ -4770,7 +4777,16 @@ function Header() {
|
|
|
4770
4777
|
children: [
|
|
4771
4778
|
!!address && /* @__PURE__ */ jsx7(UsdBalance, { className: "text-lg leading-5 font-bold" }),
|
|
4772
4779
|
/* @__PURE__ */ jsxs6("div", { className: "w-full flex items-center gap-2", children: [
|
|
4773
|
-
/* @__PURE__ */ jsx7(
|
|
4780
|
+
/* @__PURE__ */ jsx7(
|
|
4781
|
+
"span",
|
|
4782
|
+
{
|
|
4783
|
+
className: cn(
|
|
4784
|
+
"max-w-full font-mono text-xs leading-4 font-medium text-[var(--l-pass-fg-muted)",
|
|
4785
|
+
"text-ellipsis overflow-hidden whitespace-nowrap"
|
|
4786
|
+
),
|
|
4787
|
+
children: displayName || config.ui.title || "LumiaPassport"
|
|
4788
|
+
}
|
|
4789
|
+
),
|
|
4774
4790
|
isKycVerified && /* @__PURE__ */ jsxs6("div", { className: "group relative flex flex-shrink-0", children: [
|
|
4775
4791
|
/* @__PURE__ */ jsx7(CheckCircle2, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }),
|
|
4776
4792
|
/* @__PURE__ */ jsx7(
|
|
@@ -4786,14 +4802,14 @@ function Header() {
|
|
|
4786
4802
|
}
|
|
4787
4803
|
)
|
|
4788
4804
|
] }),
|
|
4789
|
-
isUserProfileLoading && /* @__PURE__ */ jsx7(
|
|
4805
|
+
isUserProfileLoading && /* @__PURE__ */ jsx7(Loader2, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" })
|
|
4790
4806
|
] })
|
|
4791
4807
|
]
|
|
4792
4808
|
}
|
|
4793
4809
|
)
|
|
4794
4810
|
] }),
|
|
4795
4811
|
!!address && /* @__PURE__ */ jsxs6("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
4796
|
-
/* @__PURE__ */ jsx7("span", { className: "block text-
|
|
4812
|
+
/* @__PURE__ */ jsx7("span", { className: "block font-mono text-[10px] break-all leading-6 text-[var(--l-pass-fg-muted)]", children: formatAddress(address) }),
|
|
4797
4813
|
/* @__PURE__ */ jsxs6("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] justify-between", children: [
|
|
4798
4814
|
/* @__PURE__ */ jsxs6(
|
|
4799
4815
|
Button,
|
|
@@ -5003,7 +5019,10 @@ var VisuallyHidden = ({ children }) => /* @__PURE__ */ jsx9("span", { className:
|
|
|
5003
5019
|
// src/internal/hooks/useAutoConnect.ts
|
|
5004
5020
|
import { useCallback, useEffect, useRef } from "react";
|
|
5005
5021
|
function useAutoConnect() {
|
|
5006
|
-
const {
|
|
5022
|
+
const {
|
|
5023
|
+
config: { current: config },
|
|
5024
|
+
callbacks
|
|
5025
|
+
} = useLumiaPassportConfig();
|
|
5007
5026
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5008
5027
|
const {
|
|
5009
5028
|
session,
|
|
@@ -5229,11 +5248,11 @@ function useCheckVaultStatus() {
|
|
|
5229
5248
|
}
|
|
5230
5249
|
|
|
5231
5250
|
// src/internal/hooks/usePageMapper.tsx
|
|
5232
|
-
import { useCallback as
|
|
5251
|
+
import { useCallback as useCallback14, useEffect as useEffect23 } from "react";
|
|
5233
5252
|
|
|
5234
5253
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5235
5254
|
import { AnimatePresence, motion } from "framer-motion";
|
|
5236
|
-
import { Loader as
|
|
5255
|
+
import { Loader as Loader5 } from "lucide-react";
|
|
5237
5256
|
import { useEffect as useEffect7, useMemo } from "react";
|
|
5238
5257
|
|
|
5239
5258
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
@@ -5492,10 +5511,13 @@ import { Fragment } from "react";
|
|
|
5492
5511
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
5493
5512
|
init_lumiaPassport();
|
|
5494
5513
|
init_projectId();
|
|
5495
|
-
import { ChevronRight, Loader as
|
|
5514
|
+
import { ChevronRight, Loader as Loader3, Mail as Mail3 } from "lucide-react";
|
|
5496
5515
|
import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
5497
5516
|
function Email() {
|
|
5498
|
-
const {
|
|
5517
|
+
const {
|
|
5518
|
+
config: { current: config },
|
|
5519
|
+
callbacks
|
|
5520
|
+
} = useLumiaPassportConfig();
|
|
5499
5521
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5500
5522
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
5501
5523
|
const { email, codeSendError, setEmail, setCodeSendError, setExpiresIn, setStep } = useAuthStore();
|
|
@@ -5566,7 +5588,7 @@ function Email() {
|
|
|
5566
5588
|
size: "large",
|
|
5567
5589
|
disabled: !email || isLoading,
|
|
5568
5590
|
onClick: onSendVerificationCode,
|
|
5569
|
-
children: isLoading ? /* @__PURE__ */ jsx14(
|
|
5591
|
+
children: isLoading ? /* @__PURE__ */ jsx14(Loader3, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx14(ChevronRight, { className: "w-4 h-4" })
|
|
5570
5592
|
}
|
|
5571
5593
|
)
|
|
5572
5594
|
] });
|
|
@@ -5649,7 +5671,10 @@ var normalizeLoginResponse = async (rawLoginResponse, providerKey, userData) =>
|
|
|
5649
5671
|
};
|
|
5650
5672
|
function Social(props) {
|
|
5651
5673
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
5652
|
-
const {
|
|
5674
|
+
const {
|
|
5675
|
+
config: { current: config },
|
|
5676
|
+
callbacks
|
|
5677
|
+
} = useLumiaPassportConfig();
|
|
5653
5678
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5654
5679
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5655
5680
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
@@ -6062,7 +6087,9 @@ function getSignInEnabledMethods(params) {
|
|
|
6062
6087
|
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
6063
6088
|
function SignInStep(props) {
|
|
6064
6089
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6065
|
-
const {
|
|
6090
|
+
const {
|
|
6091
|
+
config: { current: config }
|
|
6092
|
+
} = useLumiaPassportConfig();
|
|
6066
6093
|
const alert2 = useAuthStore((st) => st.alert);
|
|
6067
6094
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6068
6095
|
const enabledWoPasskey = getSignInEnabledMethods({ order: config.ui.authOrder, config, exclude: ["passkey"] });
|
|
@@ -6186,7 +6213,7 @@ function Expandable(props) {
|
|
|
6186
6213
|
{
|
|
6187
6214
|
...divProps,
|
|
6188
6215
|
ref: expandableRef,
|
|
6189
|
-
className: cn("w-full overflow-hidden", className),
|
|
6216
|
+
className: cn("w-full overflow-y-hidden", className),
|
|
6190
6217
|
style: { height: "var(--ifo-basic-expandable-h)", transition: "height 375ms ease" },
|
|
6191
6218
|
children: /* @__PURE__ */ jsx19("div", { className: cn("w-full", contentClassName), ref: contentRef, style: minHeight ? { minHeight } : void 0, children })
|
|
6192
6219
|
}
|
|
@@ -6207,9 +6234,12 @@ function normalizeWebAuthnError(err) {
|
|
|
6207
6234
|
}
|
|
6208
6235
|
function PassKeyStep(props) {
|
|
6209
6236
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6210
|
-
const {
|
|
6211
|
-
|
|
6237
|
+
const {
|
|
6238
|
+
config: { current: config },
|
|
6239
|
+
callbacks
|
|
6240
|
+
} = useLumiaPassportConfig();
|
|
6212
6241
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6242
|
+
const recoveryUserId = useLumiaPassportSession((st) => st.recoveryUserId);
|
|
6213
6243
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6214
6244
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6215
6245
|
const autoCloseOnSuccess = !recoveryUserId;
|
|
@@ -6417,7 +6447,10 @@ function PassKeyStep(props) {
|
|
|
6417
6447
|
init_auth();
|
|
6418
6448
|
import { useCallback as useCallback5, useRef as useRef4, useState as useState3 } from "react";
|
|
6419
6449
|
function useAuthMenuHandlers() {
|
|
6420
|
-
const {
|
|
6450
|
+
const {
|
|
6451
|
+
config: { current: config },
|
|
6452
|
+
callbacks
|
|
6453
|
+
} = useLumiaPassportConfig();
|
|
6421
6454
|
const pendingLoginResponseRef = useRef4(null);
|
|
6422
6455
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6423
6456
|
const [telegramCleanup, setTelegramCleanup] = useState3(null);
|
|
@@ -6628,7 +6661,7 @@ function useListenIframeAuthEvents() {
|
|
|
6628
6661
|
// src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
|
|
6629
6662
|
init_lumiaPassport();
|
|
6630
6663
|
import { useMutation as useMutation3 } from "@tanstack/react-query";
|
|
6631
|
-
import { ArrowLeft as ArrowLeft3, Loader as
|
|
6664
|
+
import { ArrowLeft as ArrowLeft3, Loader as Loader4 } from "lucide-react";
|
|
6632
6665
|
|
|
6633
6666
|
// src/internal/assets/OtpIcon.tsx
|
|
6634
6667
|
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
@@ -6904,7 +6937,7 @@ function VerifyStep(props) {
|
|
|
6904
6937
|
/* @__PURE__ */ jsxs18("div", { className: "relative flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
6905
6938
|
/* @__PURE__ */ jsx23(OtpIcon, { className: "w-6 h-6" }),
|
|
6906
6939
|
/* @__PURE__ */ jsx23("span", { className: "font-bold text-xl leading-6", children: "Verification code" }),
|
|
6907
|
-
isLoading && /* @__PURE__ */ jsx23(
|
|
6940
|
+
isLoading && /* @__PURE__ */ jsx23(Loader4, { className: "h-4 w-4 animate-spin" }),
|
|
6908
6941
|
/* @__PURE__ */ jsxs18(
|
|
6909
6942
|
Button,
|
|
6910
6943
|
{
|
|
@@ -6942,10 +6975,10 @@ function VerifyStep(props) {
|
|
|
6942
6975
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
6943
6976
|
import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
6944
6977
|
var AuthMenu = () => {
|
|
6978
|
+
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
6945
6979
|
const page = useLayoutDataStore((st) => st.page);
|
|
6946
6980
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
6947
6981
|
useEffect7(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
6948
|
-
const { isIframeReady } = useLumiaPassportSession();
|
|
6949
6982
|
const {
|
|
6950
6983
|
step,
|
|
6951
6984
|
setStep,
|
|
@@ -6971,7 +7004,7 @@ var AuthMenu = () => {
|
|
|
6971
7004
|
const { pendingLoginResponseRef, onAuthSuccess, goBackToSignIn, checkDisplayNameRequired } = useAuthMenuHandlers();
|
|
6972
7005
|
if (!isIframeReady) {
|
|
6973
7006
|
return /* @__PURE__ */ jsxs19("div", { className: "w-full p-8 flex flex-col justify-center items-center", "data-auth-step": "initializing", children: [
|
|
6974
|
-
/* @__PURE__ */ jsx24(
|
|
7007
|
+
/* @__PURE__ */ jsx24(Loader5, { className: "w-6 h-6 animate-spin mb-3" }),
|
|
6975
7008
|
/* @__PURE__ */ jsx24("p", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Initializing wallet..." })
|
|
6976
7009
|
] });
|
|
6977
7010
|
}
|
|
@@ -7735,7 +7768,7 @@ var useSelectables = () => {
|
|
|
7735
7768
|
// src/internal/components/BuyMenu/ByuMenu.tsx
|
|
7736
7769
|
import { jsx as jsx33, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
7737
7770
|
function BuyMenu() {
|
|
7738
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
7771
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
7739
7772
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7740
7773
|
const control = useSelectables();
|
|
7741
7774
|
const { rampProvider, setrRampProvider } = control;
|
|
@@ -7822,7 +7855,7 @@ function Highlight(props) {
|
|
|
7822
7855
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7823
7856
|
import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
7824
7857
|
function KeyshareBackupMenu() {
|
|
7825
|
-
const
|
|
7858
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
7826
7859
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7827
7860
|
const userId = session?.mpcUserId || "";
|
|
7828
7861
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
@@ -8113,12 +8146,15 @@ function KeyshareBackupMenu() {
|
|
|
8113
8146
|
|
|
8114
8147
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8115
8148
|
import { useMutation as useMutation6 } from "@tanstack/react-query";
|
|
8116
|
-
import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle23, Eye as Eye2, EyeOff as EyeOff2, Key as Key6, Loader as
|
|
8149
|
+
import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle23, Eye as Eye2, EyeOff as EyeOff2, Key as Key6, Loader as Loader6, Server as Server2, Upload } from "lucide-react";
|
|
8117
8150
|
import React10, { useCallback as useCallback8, useEffect as useEffect13 } from "react";
|
|
8118
8151
|
init_vaultClient();
|
|
8119
8152
|
import { Fragment as Fragment5, jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
8120
8153
|
var KeyshareRestoreMenu = () => {
|
|
8121
|
-
const {
|
|
8154
|
+
const {
|
|
8155
|
+
config: { current: config },
|
|
8156
|
+
callbacks
|
|
8157
|
+
} = useLumiaPassportConfig();
|
|
8122
8158
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8123
8159
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8124
8160
|
useEffect13(() => setIsDialogForced(true), []);
|
|
@@ -8323,7 +8359,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8323
8359
|
return /* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col p-4", children: [
|
|
8324
8360
|
/* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col gap-1", children: [
|
|
8325
8361
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
|
|
8326
|
-
/* @__PURE__ */ jsx37(
|
|
8362
|
+
/* @__PURE__ */ jsx37(Loader6, { className: "w-5 h-5 animate-spin" }),
|
|
8327
8363
|
/* @__PURE__ */ jsx37("span", { className: "text-xl leading-5 font-semibold", children: "Checking Backup Availability" })
|
|
8328
8364
|
] }),
|
|
8329
8365
|
/* @__PURE__ */ jsx37("span", { className: "text-sm", children: "Please wait while we check for available backups..." })
|
|
@@ -8694,13 +8730,15 @@ var SumsubIframeManager = class {
|
|
|
8694
8730
|
|
|
8695
8731
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8696
8732
|
function useSumsubIframe({ iframeUrl }) {
|
|
8733
|
+
const {
|
|
8734
|
+
config: { current: config }
|
|
8735
|
+
} = useLumiaPassportConfig();
|
|
8697
8736
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8698
8737
|
const iframeRef = useRef8(null);
|
|
8699
8738
|
const [isLoading, setIsLoading] = useState6(true);
|
|
8700
8739
|
const [error, setError] = useState6(null);
|
|
8701
8740
|
const [height, setHeight] = useState6(0);
|
|
8702
8741
|
const [status, setStatus] = useState6("");
|
|
8703
|
-
const { config } = useLumiaPassportConfig();
|
|
8704
8742
|
const levelName = config.kyc?.options?.levelName;
|
|
8705
8743
|
useEffect14(() => {
|
|
8706
8744
|
setError(null);
|
|
@@ -8748,7 +8786,9 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8748
8786
|
import { Fragment as Fragment6, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
8749
8787
|
var MAX_IFRAME_HEIGHT = 650;
|
|
8750
8788
|
var SumsubIframe = () => {
|
|
8751
|
-
const {
|
|
8789
|
+
const {
|
|
8790
|
+
config: { current: config }
|
|
8791
|
+
} = useLumiaPassportConfig();
|
|
8752
8792
|
const iframeUrl = `${config.services.iframeUrl}/kyc/sumsub.html`;
|
|
8753
8793
|
const { iframeRef, isLoading, error, height, status } = useSumsubIframe({ iframeUrl });
|
|
8754
8794
|
return /* @__PURE__ */ jsxs28(Fragment6, { children: [
|
|
@@ -8779,7 +8819,9 @@ var SumsubIframe = () => {
|
|
|
8779
8819
|
// src/internal/components/KYC/KycContent.tsx
|
|
8780
8820
|
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
8781
8821
|
var KycContent = () => {
|
|
8782
|
-
const {
|
|
8822
|
+
const {
|
|
8823
|
+
config: { current: config }
|
|
8824
|
+
} = useLumiaPassportConfig();
|
|
8783
8825
|
const provider = config.kyc?.provider;
|
|
8784
8826
|
switch (provider) {
|
|
8785
8827
|
case "sumsub":
|
|
@@ -8812,7 +8854,9 @@ import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-m
|
|
|
8812
8854
|
import { DatabaseBackup } from "lucide-react";
|
|
8813
8855
|
import { jsx as jsx41, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
8814
8856
|
function BackupWarning() {
|
|
8815
|
-
const {
|
|
8857
|
+
const {
|
|
8858
|
+
config: { current: config }
|
|
8859
|
+
} = useLumiaPassportConfig();
|
|
8816
8860
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8817
8861
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8818
8862
|
const isShown = config.warnings?.backupWarning && !hasServerVault;
|
|
@@ -8882,18 +8926,59 @@ function MainMenu() {
|
|
|
8882
8926
|
|
|
8883
8927
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
8884
8928
|
import { fromPairs } from "lodash-es";
|
|
8885
|
-
import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft7, Loader as
|
|
8929
|
+
import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft7, Loader as Loader8 } from "lucide-react";
|
|
8886
8930
|
import { useMemo as useMemo2 } from "react";
|
|
8887
8931
|
|
|
8932
|
+
// src/modules/linkedProfiles.ts
|
|
8933
|
+
import { useQuery as useQuery4, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
8934
|
+
import { useCallback as useCallback9 } from "react";
|
|
8935
|
+
init_auth();
|
|
8936
|
+
init_common();
|
|
8937
|
+
init_types();
|
|
8938
|
+
var LINKED_PROFILES_QUERY_KEY = "lumia-passport-linked-profiles-query";
|
|
8939
|
+
async function getLinkProfilesData() {
|
|
8940
|
+
const list = await getLinkedProviders();
|
|
8941
|
+
const loadedProfiles = list.map((p) => {
|
|
8942
|
+
const info = getProviderDisplayInfo(p.provider);
|
|
8943
|
+
return { ...p, displayName: info.name, icon: info.icon };
|
|
8944
|
+
});
|
|
8945
|
+
let avatar = null;
|
|
8946
|
+
try {
|
|
8947
|
+
avatar = jwtTokenManager2.getAvatar() || null;
|
|
8948
|
+
} catch {
|
|
8949
|
+
avatar = null;
|
|
8950
|
+
}
|
|
8951
|
+
return { profiles: loadedProfiles, avatar };
|
|
8952
|
+
}
|
|
8953
|
+
function useLumiaPassportLinkedProfiles() {
|
|
8954
|
+
const qc = useQueryClient3();
|
|
8955
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
8956
|
+
const {
|
|
8957
|
+
data,
|
|
8958
|
+
isFetching: isLoading,
|
|
8959
|
+
error
|
|
8960
|
+
} = useQuery4({
|
|
8961
|
+
retry: false,
|
|
8962
|
+
enabled: !!address,
|
|
8963
|
+
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
8964
|
+
queryFn: getLinkProfilesData
|
|
8965
|
+
});
|
|
8966
|
+
const { profiles = [], avatar = null } = data || {};
|
|
8967
|
+
const refresh = useCallback9(async () => {
|
|
8968
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
8969
|
+
}, [qc, address]);
|
|
8970
|
+
return { profiles, avatar, isLoading, error, refresh };
|
|
8971
|
+
}
|
|
8972
|
+
|
|
8888
8973
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
8889
|
-
import { useQueryClient as
|
|
8974
|
+
import { useQueryClient as useQueryClient5 } from "@tanstack/react-query";
|
|
8890
8975
|
init_passkey2();
|
|
8891
8976
|
|
|
8892
8977
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8893
8978
|
init_lumiaPassport();
|
|
8894
8979
|
init_projectId();
|
|
8895
8980
|
import { useMutation as useMutation7 } from "@tanstack/react-query";
|
|
8896
|
-
import { ChevronRight as ChevronRight3, Loader as
|
|
8981
|
+
import { ChevronRight as ChevronRight3, Loader as Loader7, Mail as Mail4 } from "lucide-react";
|
|
8897
8982
|
|
|
8898
8983
|
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
8899
8984
|
import { create as create4 } from "zustand";
|
|
@@ -8925,7 +9010,10 @@ var useManageWalletStore = create4((set) => ({
|
|
|
8925
9010
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8926
9011
|
import { jsx as jsx43, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
8927
9012
|
function EmailForm() {
|
|
8928
|
-
const {
|
|
9013
|
+
const {
|
|
9014
|
+
config: { current: config },
|
|
9015
|
+
callbacks
|
|
9016
|
+
} = useLumiaPassportConfig();
|
|
8929
9017
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
8930
9018
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
8931
9019
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
@@ -8999,19 +9087,19 @@ function EmailForm() {
|
|
|
8999
9087
|
size: "large",
|
|
9000
9088
|
disabled: !email || isLoading,
|
|
9001
9089
|
onClick: () => onSendVerificationCode(),
|
|
9002
|
-
children: isLoading ? /* @__PURE__ */ jsx43(
|
|
9090
|
+
children: isLoading ? /* @__PURE__ */ jsx43(Loader7, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx43(ChevronRight3, { className: "w-4 h-4" })
|
|
9003
9091
|
}
|
|
9004
9092
|
)
|
|
9005
9093
|
] });
|
|
9006
9094
|
}
|
|
9007
9095
|
|
|
9008
9096
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9009
|
-
import { useQuery as
|
|
9097
|
+
import { useQuery as useQuery5 } from "@tanstack/react-query";
|
|
9010
9098
|
init_common();
|
|
9011
9099
|
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9012
9100
|
function useProvidersList() {
|
|
9013
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
9014
|
-
return
|
|
9101
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
9102
|
+
return useQuery5({
|
|
9015
9103
|
retry: false,
|
|
9016
9104
|
enabled: !!walletAddress,
|
|
9017
9105
|
queryKey: [PROVIDERS_QUERY_KEY, walletAddress],
|
|
@@ -9047,12 +9135,12 @@ function useSendVerificationCode() {
|
|
|
9047
9135
|
}
|
|
9048
9136
|
|
|
9049
9137
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9050
|
-
import { useMutation as useMutation9, useQueryClient as
|
|
9138
|
+
import { useMutation as useMutation9, useQueryClient as useQueryClient4 } from "@tanstack/react-query";
|
|
9051
9139
|
init_email();
|
|
9052
9140
|
function useVerifyCode() {
|
|
9053
|
-
const { callbacks
|
|
9054
|
-
const qc =
|
|
9055
|
-
const
|
|
9141
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9142
|
+
const qc = useQueryClient4();
|
|
9143
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9056
9144
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9057
9145
|
const {
|
|
9058
9146
|
email,
|
|
@@ -9079,7 +9167,8 @@ function useVerifyCode() {
|
|
|
9079
9167
|
return await verifyEmailLinkCode(email, code);
|
|
9080
9168
|
},
|
|
9081
9169
|
onSuccess: async () => {
|
|
9082
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9170
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9171
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9083
9172
|
setProviderType(null);
|
|
9084
9173
|
setEmail("");
|
|
9085
9174
|
setEmailCode("");
|
|
@@ -9087,8 +9176,7 @@ function useVerifyCode() {
|
|
|
9087
9176
|
setEmailCodeSentError("");
|
|
9088
9177
|
setEmailStep("input");
|
|
9089
9178
|
try {
|
|
9090
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9091
|
-
notifyProvidersUpdate?.();
|
|
9179
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9092
9180
|
} catch {
|
|
9093
9181
|
}
|
|
9094
9182
|
setIsLoading(false);
|
|
@@ -9115,9 +9203,9 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9115
9203
|
return msg;
|
|
9116
9204
|
}
|
|
9117
9205
|
function AddProvider() {
|
|
9118
|
-
const qc =
|
|
9119
|
-
const
|
|
9120
|
-
const
|
|
9206
|
+
const qc = useQueryClient5();
|
|
9207
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9208
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9121
9209
|
const {
|
|
9122
9210
|
linkIsLoading,
|
|
9123
9211
|
providerType,
|
|
@@ -9175,12 +9263,12 @@ function AddProvider() {
|
|
|
9175
9263
|
userVerification: "preferred"
|
|
9176
9264
|
}
|
|
9177
9265
|
});
|
|
9178
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9266
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9267
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9179
9268
|
try {
|
|
9180
9269
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9181
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9270
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9182
9271
|
});
|
|
9183
|
-
notifyProvidersUpdate?.();
|
|
9184
9272
|
} catch {
|
|
9185
9273
|
}
|
|
9186
9274
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9216,12 +9304,12 @@ function AddProvider() {
|
|
|
9216
9304
|
userVerification: "preferred"
|
|
9217
9305
|
}
|
|
9218
9306
|
});
|
|
9219
|
-
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] });
|
|
9220
9309
|
try {
|
|
9221
9310
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9222
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9311
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9223
9312
|
});
|
|
9224
|
-
notifyProvidersUpdate?.();
|
|
9225
9313
|
} catch {
|
|
9226
9314
|
}
|
|
9227
9315
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9252,7 +9340,9 @@ import { jsx as jsx45, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
|
9252
9340
|
function EmailNotConnectedWarning() {
|
|
9253
9341
|
const providers = jwtTokenManager2.getProviders();
|
|
9254
9342
|
const hasEmail = providers.includes("email");
|
|
9255
|
-
const {
|
|
9343
|
+
const {
|
|
9344
|
+
config: { current: config }
|
|
9345
|
+
} = useLumiaPassportConfig();
|
|
9256
9346
|
const isShown = config.warnings?.emailNotConnectedWarning && !hasEmail;
|
|
9257
9347
|
return /* @__PURE__ */ jsx45(AnimatePresence3, { mode: "wait", initial: false, children: isShown ? /* @__PURE__ */ jsx45(
|
|
9258
9348
|
motion3.div,
|
|
@@ -9261,7 +9351,7 @@ function EmailNotConnectedWarning() {
|
|
|
9261
9351
|
animate: { opacity: 1, height: "auto" },
|
|
9262
9352
|
exit: { opacity: 0, height: 0 },
|
|
9263
9353
|
transition: Y_ANIMATION_SETUP,
|
|
9264
|
-
children: /* @__PURE__ */ jsxs34(Highlight, { className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9354
|
+
children: /* @__PURE__ */ jsxs34(Highlight, { type: "warning", className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9265
9355
|
/* @__PURE__ */ jsxs34("span", { className: "flex items-center gap-[var(--l-pass-gap)] text-lg font-bold", children: [
|
|
9266
9356
|
/* @__PURE__ */ jsx45(Mail5, { className: "w-5 h-5" }),
|
|
9267
9357
|
"CONNECT EMAIL"
|
|
@@ -9273,13 +9363,16 @@ function EmailNotConnectedWarning() {
|
|
|
9273
9363
|
}
|
|
9274
9364
|
|
|
9275
9365
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9276
|
-
import { useQueryClient as
|
|
9366
|
+
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
9277
9367
|
import React11, { useEffect as useEffect16 } from "react";
|
|
9278
9368
|
init_auth();
|
|
9279
9369
|
function useLinkSocial() {
|
|
9280
|
-
const qc =
|
|
9281
|
-
const
|
|
9282
|
-
const {
|
|
9370
|
+
const qc = useQueryClient6();
|
|
9371
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9372
|
+
const {
|
|
9373
|
+
config: { current: config },
|
|
9374
|
+
callbacks
|
|
9375
|
+
} = useLumiaPassportConfig();
|
|
9283
9376
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9284
9377
|
const { providerType, linkIsLoading, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9285
9378
|
const handleLinkSocialProvider = React11.useCallback(
|
|
@@ -9314,10 +9407,10 @@ function useLinkSocial() {
|
|
|
9314
9407
|
if (!result.success) {
|
|
9315
9408
|
throw new Error(result.error || `${socialProvider.name || providerIdRaw} authentication failed`);
|
|
9316
9409
|
}
|
|
9317
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9410
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9411
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9318
9412
|
try {
|
|
9319
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9320
|
-
notifyProvidersUpdate?.();
|
|
9413
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9321
9414
|
} catch {
|
|
9322
9415
|
}
|
|
9323
9416
|
setProviderType(null);
|
|
@@ -9348,16 +9441,19 @@ function useLinkSocial() {
|
|
|
9348
9441
|
}
|
|
9349
9442
|
|
|
9350
9443
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9351
|
-
import { useQueryClient as
|
|
9352
|
-
import { useCallback as
|
|
9444
|
+
import { useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
9445
|
+
import { useCallback as useCallback10, useEffect as useEffect17, useState as useState7 } from "react";
|
|
9353
9446
|
init_telegram2();
|
|
9354
9447
|
function useLinkTelegram() {
|
|
9355
|
-
const {
|
|
9356
|
-
|
|
9357
|
-
|
|
9448
|
+
const {
|
|
9449
|
+
config: { current: config },
|
|
9450
|
+
callbacks
|
|
9451
|
+
} = useLumiaPassportConfig();
|
|
9452
|
+
const qc = useQueryClient7();
|
|
9453
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9358
9454
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9359
9455
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9360
|
-
const handleLinkTelegram =
|
|
9456
|
+
const handleLinkTelegram = useCallback10(async () => {
|
|
9361
9457
|
try {
|
|
9362
9458
|
setLinkIsLoading(true);
|
|
9363
9459
|
setLinkError("");
|
|
@@ -9383,10 +9479,10 @@ function useLinkTelegram() {
|
|
|
9383
9479
|
}
|
|
9384
9480
|
console.log("[ManageWallet] Linking Telegram with data:", user);
|
|
9385
9481
|
await linkTelegram(user);
|
|
9386
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9482
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9483
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9387
9484
|
try {
|
|
9388
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9389
|
-
notifyProvidersUpdate?.();
|
|
9485
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9390
9486
|
} catch {
|
|
9391
9487
|
}
|
|
9392
9488
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9492,7 +9588,9 @@ function getConfiguredProviders(config) {
|
|
|
9492
9588
|
);
|
|
9493
9589
|
}
|
|
9494
9590
|
function ManageWalletMenu() {
|
|
9495
|
-
const {
|
|
9591
|
+
const {
|
|
9592
|
+
config: { current: config }
|
|
9593
|
+
} = useLumiaPassportConfig();
|
|
9496
9594
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9497
9595
|
const {
|
|
9498
9596
|
providerType,
|
|
@@ -9515,7 +9613,7 @@ function ManageWalletMenu() {
|
|
|
9515
9613
|
const used = [];
|
|
9516
9614
|
const unused = [];
|
|
9517
9615
|
POSSIBLE_PROVIDERS.forEach((provider, providerIdx) => {
|
|
9518
|
-
if (!configuredProviders[provider]) return
|
|
9616
|
+
if (!configuredProviders[provider]) return;
|
|
9519
9617
|
const Icon = PROVIDERS_META2[provider].icon;
|
|
9520
9618
|
if (usedProviders[provider]) {
|
|
9521
9619
|
used.push(
|
|
@@ -9595,7 +9693,7 @@ function ManageWalletMenu() {
|
|
|
9595
9693
|
/* @__PURE__ */ jsx47(AlertTriangle3, { className: "w-4 h-4 shrink-0" }),
|
|
9596
9694
|
/* @__PURE__ */ jsx47("span", { className: "block", children: providersError.message })
|
|
9597
9695
|
] }),
|
|
9598
|
-
isProvidersLoading && /* @__PURE__ */ jsx47("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx47(
|
|
9696
|
+
isProvidersLoading && /* @__PURE__ */ jsx47("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx47(Loader8, { className: "w-5 h-5 animate-spin" }) }),
|
|
9599
9697
|
/* @__PURE__ */ jsx47(EmailNotConnectedWarning, {}),
|
|
9600
9698
|
showCurrentProviders && renderProviders.map((node) => node),
|
|
9601
9699
|
showExtraProvidersUi && /* @__PURE__ */ jsx47(AddProvider, {}),
|
|
@@ -9605,15 +9703,15 @@ function ManageWalletMenu() {
|
|
|
9605
9703
|
}
|
|
9606
9704
|
|
|
9607
9705
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9608
|
-
import { useMutation as useMutation10, useQueryClient as
|
|
9609
|
-
import { Key as Key7, Loader as
|
|
9706
|
+
import { useMutation as useMutation10, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
9707
|
+
import { Key as Key7, Loader as Loader9 } from "lucide-react";
|
|
9610
9708
|
import { useState as useState8 } from "react";
|
|
9611
9709
|
init_auth();
|
|
9612
9710
|
import { jsx as jsx48, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
9613
9711
|
function UnlinkProviderMenu() {
|
|
9614
|
-
const qc =
|
|
9615
|
-
const
|
|
9616
|
-
const { callbacks
|
|
9712
|
+
const qc = useQueryClient8();
|
|
9713
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9714
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9617
9715
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9618
9716
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9619
9717
|
const [confirmInput, setConfirmInput] = useState8("");
|
|
@@ -9626,10 +9724,10 @@ function UnlinkProviderMenu() {
|
|
|
9626
9724
|
await unlinkProvider(provider, externalId);
|
|
9627
9725
|
},
|
|
9628
9726
|
onSuccess: async () => {
|
|
9629
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9727
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9728
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9630
9729
|
try {
|
|
9631
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9632
|
-
notifyProvidersUpdate?.();
|
|
9730
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9633
9731
|
} catch {
|
|
9634
9732
|
}
|
|
9635
9733
|
setConfirmUnlink(null);
|
|
@@ -9679,7 +9777,7 @@ function UnlinkProviderMenu() {
|
|
|
9679
9777
|
disabled: !!isProviderUnlinking || !confirmUnlink || confirmInput !== confirmUnlink.externalId,
|
|
9680
9778
|
className: "w-full flex-1",
|
|
9681
9779
|
children: [
|
|
9682
|
-
isProviderUnlinking && /* @__PURE__ */ jsx48(
|
|
9780
|
+
isProviderUnlinking && /* @__PURE__ */ jsx48(Loader9, { className: "animate-spin h-4 w-4" }),
|
|
9683
9781
|
isProviderUnlinking ? "Removing\u2026" : "Remove"
|
|
9684
9782
|
]
|
|
9685
9783
|
}
|
|
@@ -9688,122 +9786,436 @@ function UnlinkProviderMenu() {
|
|
|
9688
9786
|
] });
|
|
9689
9787
|
}
|
|
9690
9788
|
|
|
9691
|
-
// src/internal/components/
|
|
9692
|
-
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
|
|
9696
|
-
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
|
|
9700
|
-
|
|
9701
|
-
|
|
9702
|
-
|
|
9703
|
-
|
|
9704
|
-
|
|
9705
|
-
|
|
9706
|
-
|
|
9707
|
-
|
|
9708
|
-
|
|
9709
|
-
|
|
9710
|
-
function
|
|
9711
|
-
const
|
|
9712
|
-
|
|
9713
|
-
|
|
9714
|
-
|
|
9715
|
-
|
|
9716
|
-
|
|
9717
|
-
|
|
9718
|
-
const
|
|
9719
|
-
|
|
9720
|
-
|
|
9721
|
-
|
|
9722
|
-
|
|
9723
|
-
|
|
9724
|
-
|
|
9725
|
-
const
|
|
9726
|
-
|
|
9727
|
-
|
|
9728
|
-
|
|
9729
|
-
|
|
9730
|
-
|
|
9731
|
-
|
|
9732
|
-
|
|
9733
|
-
|
|
9734
|
-
|
|
9735
|
-
|
|
9736
|
-
|
|
9737
|
-
|
|
9738
|
-
|
|
9739
|
-
|
|
9740
|
-
|
|
9741
|
-
|
|
9742
|
-
|
|
9743
|
-
|
|
9744
|
-
|
|
9745
|
-
|
|
9746
|
-
|
|
9747
|
-
|
|
9748
|
-
|
|
9749
|
-
|
|
9750
|
-
|
|
9751
|
-
|
|
9752
|
-
|
|
9753
|
-
|
|
9754
|
-
|
|
9755
|
-
|
|
9756
|
-
|
|
9757
|
-
|
|
9758
|
-
|
|
9789
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9790
|
+
import { ArrowLeft as ArrowLeft8, Gem, Loader as Loader11, RefreshCw } from "lucide-react";
|
|
9791
|
+
import { useEffect as useEffect18, useRef as useRef9 } from "react";
|
|
9792
|
+
|
|
9793
|
+
// src/modules/assets.ts
|
|
9794
|
+
init_base();
|
|
9795
|
+
import React12 from "react";
|
|
9796
|
+
import { useBalance, useReadContract, useReadContracts } from "wagmi";
|
|
9797
|
+
import { formatUnits, erc20Abi } from "viem";
|
|
9798
|
+
var COMMON_TOKENS = [
|
|
9799
|
+
// Add real token addresses here when available
|
|
9800
|
+
// {
|
|
9801
|
+
// address: '0x....',
|
|
9802
|
+
// name: 'USD Coin',
|
|
9803
|
+
// symbol: 'USDC',
|
|
9804
|
+
// decimals: 6,
|
|
9805
|
+
// logo: 'https://...'
|
|
9806
|
+
// }
|
|
9807
|
+
];
|
|
9808
|
+
function useAssets(address) {
|
|
9809
|
+
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = useBalance({
|
|
9810
|
+
address,
|
|
9811
|
+
chainId: lumiaBeam.id,
|
|
9812
|
+
query: {
|
|
9813
|
+
enabled: !!address
|
|
9814
|
+
}
|
|
9815
|
+
});
|
|
9816
|
+
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
9817
|
+
address: token.address,
|
|
9818
|
+
abi: erc20Abi,
|
|
9819
|
+
functionName: "balanceOf",
|
|
9820
|
+
args: [address],
|
|
9821
|
+
chainId: lumiaBeam.id
|
|
9822
|
+
}));
|
|
9823
|
+
const readContractsResult = useReadContracts({
|
|
9824
|
+
contracts: tokenContracts,
|
|
9825
|
+
query: {
|
|
9826
|
+
enabled: !!address && COMMON_TOKENS.length > 0
|
|
9827
|
+
}
|
|
9828
|
+
});
|
|
9829
|
+
const { data: tokenBalances, isLoading: tokenBalancesLoading, refetch: refetchTokenBalances } = readContractsResult;
|
|
9830
|
+
const getAllAssets = () => {
|
|
9831
|
+
const assets = [];
|
|
9832
|
+
if (nativeBalance) {
|
|
9833
|
+
assets.push({
|
|
9834
|
+
type: "native",
|
|
9835
|
+
name: "Lumia",
|
|
9836
|
+
symbol: "LUMIA",
|
|
9837
|
+
balance: nativeBalance.value.toString(),
|
|
9838
|
+
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
9839
|
+
decimals: 18
|
|
9840
|
+
});
|
|
9841
|
+
}
|
|
9842
|
+
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
9843
|
+
tokenBalances.forEach((balance, index) => {
|
|
9844
|
+
const token = COMMON_TOKENS[index];
|
|
9845
|
+
if (balance.status === "success" && balance.result) {
|
|
9846
|
+
const balanceValue = balance.result;
|
|
9847
|
+
const formattedBalance = formatUnits(balanceValue, token.decimals);
|
|
9848
|
+
assets.push({
|
|
9849
|
+
type: "erc20",
|
|
9850
|
+
address: token.address,
|
|
9851
|
+
name: token.name,
|
|
9852
|
+
symbol: token.symbol,
|
|
9853
|
+
balance: balanceValue.toString(),
|
|
9854
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
9855
|
+
decimals: token.decimals,
|
|
9856
|
+
logo: token.logo
|
|
9857
|
+
});
|
|
9858
|
+
}
|
|
9859
|
+
});
|
|
9860
|
+
}
|
|
9861
|
+
return assets;
|
|
9862
|
+
};
|
|
9863
|
+
const getTokenBalance = (tokenAddress) => {
|
|
9864
|
+
const tokenIndex = COMMON_TOKENS.findIndex(
|
|
9865
|
+
(token2) => token2.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
9866
|
+
);
|
|
9867
|
+
if (tokenIndex === -1 || !tokenBalances?.[tokenIndex]) {
|
|
9868
|
+
return null;
|
|
9869
|
+
}
|
|
9870
|
+
const balance = tokenBalances[tokenIndex];
|
|
9871
|
+
const token = COMMON_TOKENS[tokenIndex];
|
|
9872
|
+
if (balance.status === "success" && balance.result) {
|
|
9873
|
+
const balanceValue = balance.result;
|
|
9874
|
+
const formattedBalance = formatUnits(balanceValue, token.decimals);
|
|
9875
|
+
return {
|
|
9876
|
+
address: token.address,
|
|
9877
|
+
name: token.name,
|
|
9878
|
+
symbol: token.symbol,
|
|
9879
|
+
decimals: token.decimals,
|
|
9880
|
+
balance: balanceValue.toString(),
|
|
9881
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
9882
|
+
logo: token.logo
|
|
9883
|
+
};
|
|
9759
9884
|
}
|
|
9760
|
-
}, [userId]);
|
|
9761
|
-
useEffect18(() => {
|
|
9762
|
-
if (open) fetchRecovery();
|
|
9763
|
-
}, [open, fetchRecovery]);
|
|
9764
|
-
const parseOS = (ua) => {
|
|
9765
|
-
if (!ua) return null;
|
|
9766
|
-
if (ua.includes("Mac OS X")) return "macOS";
|
|
9767
|
-
if (ua.includes("Windows")) return "Windows";
|
|
9768
|
-
if (ua.includes("Android")) return "Android";
|
|
9769
|
-
if (ua.includes("Linux")) return "Linux";
|
|
9770
|
-
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
9771
9885
|
return null;
|
|
9772
9886
|
};
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
|
|
9783
|
-
|
|
9784
|
-
|
|
9785
|
-
|
|
9786
|
-
|
|
9787
|
-
|
|
9788
|
-
|
|
9789
|
-
|
|
9790
|
-
|
|
9791
|
-
|
|
9792
|
-
|
|
9887
|
+
const refreshBalances = async () => {
|
|
9888
|
+
await Promise.all([
|
|
9889
|
+
refetchNativeBalance(),
|
|
9890
|
+
refetchTokenBalances()
|
|
9891
|
+
]);
|
|
9892
|
+
};
|
|
9893
|
+
return {
|
|
9894
|
+
nativeBalance,
|
|
9895
|
+
tokenBalances,
|
|
9896
|
+
assets: getAllAssets(),
|
|
9897
|
+
getTokenBalance,
|
|
9898
|
+
refreshBalances,
|
|
9899
|
+
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
9900
|
+
isConnected: !!address
|
|
9901
|
+
};
|
|
9902
|
+
}
|
|
9903
|
+
function useTokenInfo(tokenAddress) {
|
|
9904
|
+
const readContractsResult = useReadContracts({
|
|
9905
|
+
contracts: [
|
|
9906
|
+
{ address: tokenAddress, abi: erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
9907
|
+
{ address: tokenAddress, abi: erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
9908
|
+
{ address: tokenAddress, abi: erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
9909
|
+
]
|
|
9910
|
+
});
|
|
9911
|
+
const { data: tokenData, isLoading } = readContractsResult;
|
|
9912
|
+
if (!tokenData || isLoading) {
|
|
9913
|
+
return { isLoading, tokenInfo: null };
|
|
9914
|
+
}
|
|
9915
|
+
const [nameResult, symbolResult, decimalsResult] = tokenData;
|
|
9916
|
+
if (nameResult.status === "success" && symbolResult.status === "success" && decimalsResult.status === "success") {
|
|
9917
|
+
return {
|
|
9918
|
+
isLoading: false,
|
|
9919
|
+
tokenInfo: {
|
|
9920
|
+
name: nameResult.result,
|
|
9921
|
+
symbol: symbolResult.result,
|
|
9922
|
+
decimals: decimalsResult.result,
|
|
9923
|
+
address: tokenAddress
|
|
9924
|
+
}
|
|
9925
|
+
};
|
|
9926
|
+
}
|
|
9927
|
+
return { isLoading: false, tokenInfo: null };
|
|
9928
|
+
}
|
|
9929
|
+
function useTokenBalance(tokenAddress, userAddress) {
|
|
9930
|
+
const { data: balance, isLoading, refetch } = useReadContract({
|
|
9931
|
+
address: tokenAddress,
|
|
9932
|
+
abi: erc20Abi,
|
|
9933
|
+
functionName: "balanceOf",
|
|
9934
|
+
args: userAddress ? [userAddress] : void 0,
|
|
9935
|
+
chainId: lumiaBeam.id,
|
|
9936
|
+
query: {
|
|
9937
|
+
enabled: !!userAddress
|
|
9938
|
+
}
|
|
9939
|
+
});
|
|
9940
|
+
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
9941
|
+
const formattedBalance = React12.useMemo(() => {
|
|
9942
|
+
if (!balance || !tokenInfo) return "0";
|
|
9943
|
+
return formatUnits(balance, tokenInfo.decimals);
|
|
9944
|
+
}, [balance, tokenInfo]);
|
|
9945
|
+
return {
|
|
9946
|
+
balance,
|
|
9947
|
+
formattedBalance,
|
|
9948
|
+
tokenInfo,
|
|
9949
|
+
isLoading,
|
|
9950
|
+
refetch
|
|
9951
|
+
};
|
|
9952
|
+
}
|
|
9953
|
+
|
|
9954
|
+
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
9955
|
+
init_base();
|
|
9956
|
+
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
9957
|
+
import { Loader as Loader10 } from "lucide-react";
|
|
9958
|
+
import { Fragment as Fragment8, jsx as jsx49, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
9959
|
+
var price16 = Intl.NumberFormat("en-US", { minimumFractionDigits: 16, maximumFractionDigits: 16 });
|
|
9960
|
+
function formatValue(price) {
|
|
9961
|
+
console.log("[---PRICE---]", price);
|
|
9962
|
+
if (!price) return /* @__PURE__ */ jsx49(Fragment8, { children: `0.00` });
|
|
9963
|
+
if (price < 0.01) {
|
|
9964
|
+
const strigified = price16.format(price);
|
|
9965
|
+
const absValue = parseInt(strigified.replace(/^0\./, "")).toString().slice(0, 2);
|
|
9966
|
+
const zeroQnt = strigified.replace(/^0\./, "").split("").findIndex((el) => +el > 0);
|
|
9967
|
+
return /* @__PURE__ */ jsxs38(Fragment8, { children: [
|
|
9968
|
+
`0.0`,
|
|
9969
|
+
/* @__PURE__ */ jsx49("sub", { className: "text-[10px]", children: zeroQnt }),
|
|
9970
|
+
absValue
|
|
9971
|
+
] });
|
|
9972
|
+
}
|
|
9973
|
+
return /* @__PURE__ */ jsx49(Fragment8, { children: price.toFixed(2) });
|
|
9974
|
+
}
|
|
9975
|
+
function openInExplorer(address) {
|
|
9976
|
+
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
9977
|
+
}
|
|
9978
|
+
async function getAssetRate(symbol) {
|
|
9979
|
+
const assetURL = `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}USDT`;
|
|
9980
|
+
const response = await fetch(assetURL);
|
|
9981
|
+
return await response.json();
|
|
9982
|
+
}
|
|
9983
|
+
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
9984
|
+
function PortfolioItem(props) {
|
|
9985
|
+
const { address, asset } = props;
|
|
9986
|
+
const { data: assetRate, isLoading: isRateLoading } = useQuery6({
|
|
9987
|
+
retry: false,
|
|
9988
|
+
staleTime: 4 * 60 * 1e3,
|
|
9989
|
+
enabled: !!address && !!asset.symbol,
|
|
9990
|
+
queryKey: [ASSETS_RATES_QUERY_KEY, address, asset.symbol],
|
|
9991
|
+
queryFn: async () => await getAssetRate(asset.symbol)
|
|
9992
|
+
});
|
|
9993
|
+
return /* @__PURE__ */ jsxs38(
|
|
9994
|
+
"div",
|
|
9995
|
+
{
|
|
9996
|
+
className: cn(
|
|
9997
|
+
"group cursor-pointer",
|
|
9998
|
+
"w-full flex items-center gap-[var(--l-pass-gap)]",
|
|
9999
|
+
"hover:text-[var(--l-pass-fg-h)] transition-colors"
|
|
10000
|
+
),
|
|
10001
|
+
onClick: () => openInExplorer(asset.address),
|
|
10002
|
+
children: [
|
|
10003
|
+
/* @__PURE__ */ jsx49(
|
|
10004
|
+
"div",
|
|
10005
|
+
{
|
|
10006
|
+
className: cn(
|
|
10007
|
+
"flex-none w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center",
|
|
10008
|
+
"group-hover:opacity-60 transition-opacity"
|
|
10009
|
+
),
|
|
10010
|
+
children: /* @__PURE__ */ jsx49("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) })
|
|
10011
|
+
}
|
|
10012
|
+
),
|
|
10013
|
+
/* @__PURE__ */ jsxs38("div", { className: "w-full flex-1", children: [
|
|
10014
|
+
/* @__PURE__ */ jsxs38("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
10015
|
+
/* @__PURE__ */ jsx49("span", { children: asset.name }),
|
|
10016
|
+
/* @__PURE__ */ jsx49("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10017
|
+
] }),
|
|
10018
|
+
/* @__PURE__ */ jsxs38("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: [
|
|
10019
|
+
/* @__PURE__ */ jsxs38("span", { children: [
|
|
10020
|
+
/* @__PURE__ */ jsx49("span", { children: formatValue(Number(asset.formattedBalance)) }),
|
|
10021
|
+
/* @__PURE__ */ jsx49("span", { children: " " + asset.symbol })
|
|
10022
|
+
] }),
|
|
10023
|
+
isRateLoading && /* @__PURE__ */ jsx49(Loader10, { className: "h-4 w-4 animate-spin" }),
|
|
10024
|
+
!!assetRate?.price && /* @__PURE__ */ jsx49("span", { children: (Number(asset.formattedBalance) * Number(assetRate.price)).toLocaleString("en-US", {
|
|
10025
|
+
minimumFractionDigits: 2,
|
|
10026
|
+
maximumFractionDigits: 2,
|
|
10027
|
+
currency: "USD",
|
|
10028
|
+
style: "currency"
|
|
10029
|
+
}) })
|
|
10030
|
+
] })
|
|
10031
|
+
] })
|
|
10032
|
+
]
|
|
10033
|
+
}
|
|
10034
|
+
);
|
|
10035
|
+
}
|
|
10036
|
+
{
|
|
10037
|
+
}
|
|
10038
|
+
|
|
10039
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10040
|
+
import { jsx as jsx50, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
10041
|
+
function PortfolioMenu() {
|
|
10042
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10043
|
+
const assetsContainerListRef = useRef9(null);
|
|
10044
|
+
const assetsListRef = useRef9(null);
|
|
10045
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10046
|
+
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10047
|
+
useEffect18(() => {
|
|
10048
|
+
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10049
|
+
if (assetsContainerListRef.current) {
|
|
10050
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10051
|
+
"--l-pass-list-bd",
|
|
10052
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
10053
|
+
// hide border if no scrollbar
|
|
10054
|
+
);
|
|
10055
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10056
|
+
"--l-pass-list-scrollbar-pd-l",
|
|
10057
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "4px" : "0px"
|
|
10058
|
+
// remove padding if no scrollbar
|
|
10059
|
+
);
|
|
10060
|
+
}
|
|
10061
|
+
}, []);
|
|
10062
|
+
return /* @__PURE__ */ jsxs39("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10063
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10064
|
+
/* @__PURE__ */ jsx50(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx50(ArrowLeft8, { className: "h-4 w-4" }) }),
|
|
10065
|
+
/* @__PURE__ */ jsx50("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
10066
|
+
/* @__PURE__ */ jsx50(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ jsx50(Loader11, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx50(RefreshCw, { className: "h-4 w-4" }) })
|
|
10067
|
+
] }),
|
|
10068
|
+
/* @__PURE__ */ jsxs39(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10069
|
+
isLoading && /* @__PURE__ */ jsxs39("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
10070
|
+
/* @__PURE__ */ jsx50(Loader11, { className: "h-5 w-5 animate-spin" }),
|
|
10071
|
+
/* @__PURE__ */ jsx50("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
10072
|
+
] }),
|
|
10073
|
+
!isLoading && assets.length === 0 && /* @__PURE__ */ jsxs39("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
10074
|
+
/* @__PURE__ */ jsx50(Gem, { className: "w-12 h-12 mb-2" }),
|
|
10075
|
+
/* @__PURE__ */ jsx50("p", { children: "No assets found" })
|
|
10076
|
+
] }),
|
|
10077
|
+
!isLoading && assets.length > 0 && /* @__PURE__ */ jsx50(
|
|
10078
|
+
"div",
|
|
10079
|
+
{
|
|
10080
|
+
ref: assetsContainerListRef,
|
|
10081
|
+
className: "list-scrollbar-y relative border-t border-b border-[var(--l-pass-list-bd)]",
|
|
10082
|
+
children: /* @__PURE__ */ jsx50(
|
|
10083
|
+
"div",
|
|
10084
|
+
{
|
|
10085
|
+
ref: assetsListRef,
|
|
10086
|
+
className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]",
|
|
10087
|
+
children: assets.map((asset, index) => /* @__PURE__ */ jsx50(
|
|
10088
|
+
PortfolioItem,
|
|
10089
|
+
{
|
|
10090
|
+
address,
|
|
10091
|
+
asset
|
|
10092
|
+
},
|
|
10093
|
+
`${asset.type}-${asset.address || "native"}-${index}`
|
|
10094
|
+
))
|
|
10095
|
+
}
|
|
10096
|
+
)
|
|
10097
|
+
}
|
|
10098
|
+
)
|
|
10099
|
+
] })
|
|
10100
|
+
] });
|
|
10101
|
+
}
|
|
10102
|
+
|
|
10103
|
+
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10104
|
+
init_auth();
|
|
10105
|
+
init_keyshare();
|
|
10106
|
+
import {
|
|
10107
|
+
AlertTriangle as AlertTriangle4,
|
|
10108
|
+
ArrowLeft as ArrowLeft9,
|
|
10109
|
+
CheckCircle2 as CheckCircle24,
|
|
10110
|
+
Cloud as Cloud2,
|
|
10111
|
+
HardDrive,
|
|
10112
|
+
Laptop,
|
|
10113
|
+
Loader as Loader12,
|
|
10114
|
+
RefreshCw as RefreshCw2,
|
|
10115
|
+
Server as Server3,
|
|
10116
|
+
Shield,
|
|
10117
|
+
Trash2 as Trash22
|
|
10118
|
+
} from "lucide-react";
|
|
10119
|
+
import { useCallback as useCallback11, useEffect as useEffect19, useState as useState9 } from "react";
|
|
10120
|
+
init_vaultClient();
|
|
10121
|
+
import { jsx as jsx51, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
10122
|
+
function SecurityMenu() {
|
|
10123
|
+
const page = useLayoutDataStore((st) => st.page);
|
|
10124
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10125
|
+
const open = page === "security";
|
|
10126
|
+
const userId = jwtTokenManager2.getUserId();
|
|
10127
|
+
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
10128
|
+
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10129
|
+
const [isRefreshing, setIsRefreshing] = useState9(false);
|
|
10130
|
+
const [localInfo, setLocalInfo] = useState9(null);
|
|
10131
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = useState9(null);
|
|
10132
|
+
const [recoveryBrowser, setRecoveryBrowser] = useState9(null);
|
|
10133
|
+
const [recoveryUa, setRecoveryUa] = useState9(null);
|
|
10134
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = useState9(null);
|
|
10135
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = useState9(null);
|
|
10136
|
+
const [recoveryCountry, setRecoveryCountry] = useState9(null);
|
|
10137
|
+
const [hasServerBackup, setHasServerBackup] = useState9(false);
|
|
10138
|
+
const [trustedApps, setTrustedApps] = useState9([]);
|
|
10139
|
+
const [appToRemove, setAppToRemove] = useState9(null);
|
|
10140
|
+
const fetchRecovery = useCallback11(async () => {
|
|
10141
|
+
if (!userId) return;
|
|
10142
|
+
try {
|
|
10143
|
+
setIsRefreshing(true);
|
|
10144
|
+
const keyshareInfo = await getKeyshareInfo(userId);
|
|
10145
|
+
setLocalInfo(keyshareInfo);
|
|
10146
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
10147
|
+
try {
|
|
10148
|
+
console.log("[SecurityModal] Loading trusted apps for user:", userId);
|
|
10149
|
+
const iframeManager = getIframeManager2();
|
|
10150
|
+
const apps = await iframeManager.getTrustedApps(userId);
|
|
10151
|
+
console.log("[SecurityModal] Received trusted apps:", apps);
|
|
10152
|
+
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
10153
|
+
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
10154
|
+
setTrustedApps(apps);
|
|
10155
|
+
} catch (error) {
|
|
10156
|
+
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
10157
|
+
setTrustedApps([]);
|
|
10158
|
+
}
|
|
10159
|
+
const stats = await getShareRecoveryStats();
|
|
10160
|
+
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
10161
|
+
setHasServerBackup(!!hasRecoveryData);
|
|
10162
|
+
const created = stats?.created;
|
|
10163
|
+
setRecoveryCreatedAt(created?.at || null);
|
|
10164
|
+
setRecoveryBrowser(created?.browser || null);
|
|
10165
|
+
setRecoveryUa(created?.ua || null);
|
|
10166
|
+
setRecoveryDeviceId(created?.deviceId || null);
|
|
10167
|
+
setRecoveryDeviceName(created?.deviceName || null);
|
|
10168
|
+
setRecoveryCountry(created?.country || null);
|
|
10169
|
+
} finally {
|
|
10170
|
+
setIsRefreshing(false);
|
|
10171
|
+
}
|
|
10172
|
+
}, [userId]);
|
|
10173
|
+
useEffect19(() => {
|
|
10174
|
+
if (open) fetchRecovery();
|
|
10175
|
+
}, [open, fetchRecovery]);
|
|
10176
|
+
const parseOS = (ua) => {
|
|
10177
|
+
if (!ua) return null;
|
|
10178
|
+
if (ua.includes("Mac OS X")) return "macOS";
|
|
10179
|
+
if (ua.includes("Windows")) return "Windows";
|
|
10180
|
+
if (ua.includes("Android")) return "Android";
|
|
10181
|
+
if (ua.includes("Linux")) return "Linux";
|
|
10182
|
+
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
10183
|
+
return null;
|
|
10184
|
+
};
|
|
10185
|
+
return /* @__PURE__ */ jsxs40("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10186
|
+
/* @__PURE__ */ jsx51("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-2", children: [
|
|
10187
|
+
/* @__PURE__ */ jsx51(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx51(ArrowLeft9, { className: "h-4 w-4" }) }),
|
|
10188
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
10189
|
+
/* @__PURE__ */ jsx51("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
10190
|
+
/* @__PURE__ */ jsx51(Button, { variant: "ghost", size: "icon", title: "Refresh", onClick: fetchRecovery, children: isRefreshing ? /* @__PURE__ */ jsx51(Loader12, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx51(RefreshCw2, { className: "h-4 w-4" }) })
|
|
10191
|
+
] })
|
|
10192
|
+
] }) }),
|
|
10193
|
+
/* @__PURE__ */ jsxs40("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
10194
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-2 text-center", children: [
|
|
10195
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10196
|
+
/* @__PURE__ */ jsx51(Cloud2, { className: "h-4 w-4" }),
|
|
10197
|
+
/* @__PURE__ */ jsx51("span", { className: "text-sm font-medium", children: "Server" })
|
|
10198
|
+
] }),
|
|
10199
|
+
/* @__PURE__ */ jsxs40(
|
|
10200
|
+
"span",
|
|
10201
|
+
{
|
|
10202
|
+
className: cn(
|
|
10203
|
+
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10204
|
+
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9793
10205
|
),
|
|
9794
10206
|
children: [
|
|
9795
|
-
serverHasKeyshare ? /* @__PURE__ */
|
|
10207
|
+
serverHasKeyshare ? /* @__PURE__ */ jsx51(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx51(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9796
10208
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
9797
10209
|
]
|
|
9798
10210
|
}
|
|
9799
10211
|
)
|
|
9800
10212
|
] }),
|
|
9801
|
-
/* @__PURE__ */
|
|
9802
|
-
/* @__PURE__ */
|
|
9803
|
-
/* @__PURE__ */
|
|
9804
|
-
/* @__PURE__ */
|
|
10213
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-2 text-center", children: [
|
|
10214
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10215
|
+
/* @__PURE__ */ jsx51(Laptop, { className: "h-4 w-4" }),
|
|
10216
|
+
/* @__PURE__ */ jsx51("span", { className: "text-sm font-medium", children: "Local" })
|
|
9805
10217
|
] }),
|
|
9806
|
-
/* @__PURE__ */
|
|
10218
|
+
/* @__PURE__ */ jsxs40(
|
|
9807
10219
|
"span",
|
|
9808
10220
|
{
|
|
9809
10221
|
className: cn(
|
|
@@ -9811,18 +10223,18 @@ function SecurityMenu() {
|
|
|
9811
10223
|
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9812
10224
|
),
|
|
9813
10225
|
children: [
|
|
9814
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */
|
|
10226
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ jsx51(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx51(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9815
10227
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
9816
10228
|
]
|
|
9817
10229
|
}
|
|
9818
10230
|
)
|
|
9819
10231
|
] }),
|
|
9820
|
-
/* @__PURE__ */
|
|
9821
|
-
/* @__PURE__ */
|
|
9822
|
-
/* @__PURE__ */
|
|
9823
|
-
/* @__PURE__ */
|
|
10232
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-2 text-center", children: [
|
|
10233
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10234
|
+
/* @__PURE__ */ jsx51(Shield, { className: "h-4 w-4" }),
|
|
10235
|
+
/* @__PURE__ */ jsx51("span", { className: "text-sm font-medium", children: "Vault" })
|
|
9824
10236
|
] }),
|
|
9825
|
-
/* @__PURE__ */
|
|
10237
|
+
/* @__PURE__ */ jsxs40(
|
|
9826
10238
|
"span",
|
|
9827
10239
|
{
|
|
9828
10240
|
className: cn(
|
|
@@ -9830,101 +10242,101 @@ function SecurityMenu() {
|
|
|
9830
10242
|
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9831
10243
|
),
|
|
9832
10244
|
children: [
|
|
9833
|
-
hasServerBackup ? /* @__PURE__ */
|
|
10245
|
+
hasServerBackup ? /* @__PURE__ */ jsx51(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx51(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9834
10246
|
hasServerBackup ? "Ready" : "None"
|
|
9835
10247
|
]
|
|
9836
10248
|
}
|
|
9837
10249
|
)
|
|
9838
10250
|
] })
|
|
9839
10251
|
] }),
|
|
9840
|
-
/* @__PURE__ */
|
|
9841
|
-
localInfo?.hasKeyshare && /* @__PURE__ */
|
|
9842
|
-
localInfo.ownerAddress && /* @__PURE__ */
|
|
9843
|
-
/* @__PURE__ */
|
|
9844
|
-
/* @__PURE__ */
|
|
10252
|
+
/* @__PURE__ */ jsxs40(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
10253
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ jsxs40("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10254
|
+
localInfo.ownerAddress && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10255
|
+
/* @__PURE__ */ jsx51("span", { children: "Owner: " }),
|
|
10256
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
9845
10257
|
] }),
|
|
9846
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */
|
|
9847
|
-
/* @__PURE__ */
|
|
9848
|
-
/* @__PURE__ */
|
|
10258
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10259
|
+
/* @__PURE__ */ jsx51("span", { children: "Size: " }),
|
|
10260
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
9849
10261
|
] }),
|
|
9850
|
-
localInfo.sessionId && /* @__PURE__ */
|
|
9851
|
-
/* @__PURE__ */
|
|
9852
|
-
/* @__PURE__ */
|
|
10262
|
+
localInfo.sessionId && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10263
|
+
/* @__PURE__ */ jsx51("span", { children: "Session: " }),
|
|
10264
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
9853
10265
|
] })
|
|
9854
10266
|
] }),
|
|
9855
|
-
/* @__PURE__ */
|
|
9856
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */
|
|
9857
|
-
/* @__PURE__ */
|
|
9858
|
-
/* @__PURE__ */
|
|
10267
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10268
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10269
|
+
/* @__PURE__ */ jsx51(Server3, { className: "h-2.5 w-2.5" }),
|
|
10270
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
9859
10271
|
"Server: ",
|
|
9860
10272
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
9861
10273
|
] })
|
|
9862
10274
|
] }),
|
|
9863
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */
|
|
9864
|
-
/* @__PURE__ */
|
|
9865
|
-
/* @__PURE__ */
|
|
10275
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10276
|
+
/* @__PURE__ */ jsx51(Server3, { className: "h-2.5 w-2.5" }),
|
|
10277
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
9866
10278
|
"Server: ",
|
|
9867
10279
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
9868
10280
|
] })
|
|
9869
10281
|
] }),
|
|
9870
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */
|
|
9871
|
-
/* @__PURE__ */
|
|
9872
|
-
/* @__PURE__ */
|
|
10282
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10283
|
+
/* @__PURE__ */ jsx51(Cloud2, { className: "h-2.5 w-2.5" }),
|
|
10284
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
9873
10285
|
"Cloud: ",
|
|
9874
10286
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
9875
10287
|
] })
|
|
9876
10288
|
] }),
|
|
9877
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */
|
|
9878
|
-
/* @__PURE__ */
|
|
9879
|
-
/* @__PURE__ */
|
|
10289
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10290
|
+
/* @__PURE__ */ jsx51(HardDrive, { className: "h-2.5 w-2.5" }),
|
|
10291
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
9880
10292
|
"Local: ",
|
|
9881
10293
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
9882
10294
|
] })
|
|
9883
10295
|
] })
|
|
9884
10296
|
] }),
|
|
9885
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */
|
|
9886
|
-
/* @__PURE__ */
|
|
9887
|
-
recoveryCreatedAt && /* @__PURE__ */
|
|
10297
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ jsxs40("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10298
|
+
/* @__PURE__ */ jsx51("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: "Device Information:" }),
|
|
10299
|
+
recoveryCreatedAt && /* @__PURE__ */ jsxs40("div", { children: [
|
|
9888
10300
|
"Created: ",
|
|
9889
10301
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
9890
10302
|
" "
|
|
9891
10303
|
] }),
|
|
9892
|
-
recoveryCountry && /* @__PURE__ */
|
|
10304
|
+
recoveryCountry && /* @__PURE__ */ jsxs40("div", { children: [
|
|
9893
10305
|
"Country: ",
|
|
9894
10306
|
recoveryCountry
|
|
9895
10307
|
] }),
|
|
9896
|
-
recoveryBrowser && /* @__PURE__ */
|
|
10308
|
+
recoveryBrowser && /* @__PURE__ */ jsxs40("div", { children: [
|
|
9897
10309
|
"Browser: ",
|
|
9898
10310
|
recoveryBrowser
|
|
9899
10311
|
] }),
|
|
9900
|
-
parseOS(recoveryUa) && /* @__PURE__ */
|
|
10312
|
+
parseOS(recoveryUa) && /* @__PURE__ */ jsxs40("div", { children: [
|
|
9901
10313
|
"OS: ",
|
|
9902
10314
|
parseOS(recoveryUa)
|
|
9903
10315
|
] }),
|
|
9904
|
-
recoveryDeviceName && /* @__PURE__ */
|
|
10316
|
+
recoveryDeviceName && /* @__PURE__ */ jsxs40("div", { children: [
|
|
9905
10317
|
"Device: ",
|
|
9906
10318
|
recoveryDeviceName
|
|
9907
10319
|
] }),
|
|
9908
|
-
recoveryDeviceId && /* @__PURE__ */
|
|
10320
|
+
recoveryDeviceId && /* @__PURE__ */ jsxs40("div", { children: [
|
|
9909
10321
|
"Device ID: ",
|
|
9910
|
-
/* @__PURE__ */
|
|
10322
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
9911
10323
|
] })
|
|
9912
10324
|
] }),
|
|
9913
|
-
trustedApps.length > 0 && /* @__PURE__ */
|
|
9914
|
-
/* @__PURE__ */
|
|
9915
|
-
/* @__PURE__ */
|
|
10325
|
+
trustedApps.length > 0 && /* @__PURE__ */ jsxs40("div", { className: "w-full space-y-2", children: [
|
|
10326
|
+
/* @__PURE__ */ jsx51("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
10327
|
+
/* @__PURE__ */ jsx51("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs40(
|
|
9916
10328
|
"div",
|
|
9917
10329
|
{
|
|
9918
10330
|
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
9919
10331
|
children: [
|
|
9920
|
-
/* @__PURE__ */
|
|
9921
|
-
/* @__PURE__ */
|
|
9922
|
-
/* @__PURE__ */
|
|
10332
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex-1 min-w-0", children: [
|
|
10333
|
+
/* @__PURE__ */ jsx51("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
10334
|
+
/* @__PURE__ */ jsxs40("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
9923
10335
|
"Trusted: ",
|
|
9924
10336
|
new Date(app.trustedAt).toLocaleDateString()
|
|
9925
10337
|
] })
|
|
9926
10338
|
] }),
|
|
9927
|
-
/* @__PURE__ */
|
|
10339
|
+
/* @__PURE__ */ jsx51(
|
|
9928
10340
|
Button,
|
|
9929
10341
|
{
|
|
9930
10342
|
variant: "ghost",
|
|
@@ -9936,7 +10348,7 @@ function SecurityMenu() {
|
|
|
9936
10348
|
origin: app.origin,
|
|
9937
10349
|
hostname: new URL(app.origin).hostname
|
|
9938
10350
|
}),
|
|
9939
|
-
children: /* @__PURE__ */
|
|
10351
|
+
children: /* @__PURE__ */ jsx51(Trash22, { className: "h-3 w-3" })
|
|
9940
10352
|
}
|
|
9941
10353
|
)
|
|
9942
10354
|
]
|
|
@@ -9949,240 +10361,83 @@ function SecurityMenu() {
|
|
|
9949
10361
|
}
|
|
9950
10362
|
|
|
9951
10363
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
9952
|
-
import { AlertCircle as AlertCircle3, ArrowLeft as
|
|
9953
|
-
import { useEffect as
|
|
10364
|
+
import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft10, CheckCircle2 as CheckCircle25, Loader as Loader13, Wallet } from "lucide-react";
|
|
10365
|
+
import { useEffect as useEffect20, useState as useState11 } from "react";
|
|
9954
10366
|
import { isAddress as isAddress2 } from "viem";
|
|
9955
10367
|
import { useBalance as useBalance2 } from "wagmi";
|
|
9956
10368
|
|
|
9957
10369
|
// src/hooks/useSendTransaction.ts
|
|
10370
|
+
import { useCallback as useCallback12, useState as useState10 } from "react";
|
|
10371
|
+
import { isAddress, parseEther as parseEther2 } from "viem";
|
|
9958
10372
|
init_account();
|
|
9959
|
-
import { useState as useState10, useCallback as useCallback11 } from "react";
|
|
9960
|
-
import { parseEther as parseEther2, isAddress } from "viem";
|
|
9961
10373
|
function useSendTransaction() {
|
|
9962
|
-
const
|
|
10374
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
10375
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9963
10376
|
const [isLoading, setIsLoading] = useState10(false);
|
|
9964
10377
|
const [error, setError] = useState10(null);
|
|
9965
10378
|
const [userOpHash, setUserOpHash] = useState10(null);
|
|
9966
|
-
const sendTransaction =
|
|
9967
|
-
|
|
9968
|
-
|
|
9969
|
-
|
|
9970
|
-
|
|
9971
|
-
if (!isAddress(params.to)) {
|
|
9972
|
-
setError("Invalid recipient address");
|
|
9973
|
-
return null;
|
|
9974
|
-
}
|
|
9975
|
-
const value = parseFloat(params.value);
|
|
9976
|
-
if (isNaN(value) || value < 0) {
|
|
9977
|
-
setError("Invalid amount");
|
|
9978
|
-
return null;
|
|
9979
|
-
}
|
|
9980
|
-
setIsLoading(true);
|
|
9981
|
-
setError(null);
|
|
9982
|
-
setUserOpHash(null);
|
|
9983
|
-
try {
|
|
9984
|
-
const valueWei = parseEther2(params.value).toString();
|
|
9985
|
-
const hash = await sendUserOperation(
|
|
9986
|
-
session,
|
|
9987
|
-
params.to,
|
|
9988
|
-
valueWei,
|
|
9989
|
-
params.data || "0x",
|
|
9990
|
-
"standard",
|
|
9991
|
-
"v0.7"
|
|
9992
|
-
);
|
|
9993
|
-
setUserOpHash(hash);
|
|
9994
|
-
return hash;
|
|
9995
|
-
} catch (err) {
|
|
9996
|
-
const errorMessage = err instanceof Error ? err.message : "Transaction failed";
|
|
9997
|
-
setError(errorMessage);
|
|
9998
|
-
return null;
|
|
9999
|
-
} finally {
|
|
10000
|
-
setIsLoading(false);
|
|
10001
|
-
}
|
|
10002
|
-
}, [session, address]);
|
|
10003
|
-
const reset = useCallback11(() => {
|
|
10004
|
-
setError(null);
|
|
10005
|
-
setUserOpHash(null);
|
|
10006
|
-
setIsLoading(false);
|
|
10007
|
-
}, []);
|
|
10008
|
-
return {
|
|
10009
|
-
sendTransaction,
|
|
10010
|
-
isLoading,
|
|
10011
|
-
error,
|
|
10012
|
-
userOpHash,
|
|
10013
|
-
reset
|
|
10014
|
-
};
|
|
10015
|
-
}
|
|
10016
|
-
|
|
10017
|
-
// src/modules/assets.ts
|
|
10018
|
-
init_base();
|
|
10019
|
-
import React12 from "react";
|
|
10020
|
-
import { useBalance, useReadContract, useReadContracts } from "wagmi";
|
|
10021
|
-
import { formatUnits, erc20Abi } from "viem";
|
|
10022
|
-
var COMMON_TOKENS = [
|
|
10023
|
-
// Add real token addresses here when available
|
|
10024
|
-
// {
|
|
10025
|
-
// address: '0x....',
|
|
10026
|
-
// name: 'USD Coin',
|
|
10027
|
-
// symbol: 'USDC',
|
|
10028
|
-
// decimals: 6,
|
|
10029
|
-
// logo: 'https://...'
|
|
10030
|
-
// }
|
|
10031
|
-
];
|
|
10032
|
-
function useAssets(address) {
|
|
10033
|
-
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = useBalance({
|
|
10034
|
-
address,
|
|
10035
|
-
chainId: lumiaBeam.id,
|
|
10036
|
-
query: {
|
|
10037
|
-
enabled: !!address
|
|
10038
|
-
}
|
|
10039
|
-
});
|
|
10040
|
-
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
10041
|
-
address: token.address,
|
|
10042
|
-
abi: erc20Abi,
|
|
10043
|
-
functionName: "balanceOf",
|
|
10044
|
-
args: [address],
|
|
10045
|
-
chainId: lumiaBeam.id
|
|
10046
|
-
}));
|
|
10047
|
-
const readContractsResult = useReadContracts({
|
|
10048
|
-
contracts: tokenContracts,
|
|
10049
|
-
query: {
|
|
10050
|
-
enabled: !!address && COMMON_TOKENS.length > 0
|
|
10051
|
-
}
|
|
10052
|
-
});
|
|
10053
|
-
const { data: tokenBalances, isLoading: tokenBalancesLoading, refetch: refetchTokenBalances } = readContractsResult;
|
|
10054
|
-
const getAllAssets = () => {
|
|
10055
|
-
const assets = [];
|
|
10056
|
-
if (nativeBalance) {
|
|
10057
|
-
assets.push({
|
|
10058
|
-
type: "native",
|
|
10059
|
-
name: "Lumia",
|
|
10060
|
-
symbol: "LUMIA",
|
|
10061
|
-
balance: nativeBalance.value.toString(),
|
|
10062
|
-
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
10063
|
-
decimals: 18
|
|
10064
|
-
});
|
|
10065
|
-
}
|
|
10066
|
-
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
10067
|
-
tokenBalances.forEach((balance, index) => {
|
|
10068
|
-
const token = COMMON_TOKENS[index];
|
|
10069
|
-
if (balance.status === "success" && balance.result) {
|
|
10070
|
-
const balanceValue = balance.result;
|
|
10071
|
-
const formattedBalance = formatUnits(balanceValue, token.decimals);
|
|
10072
|
-
assets.push({
|
|
10073
|
-
type: "erc20",
|
|
10074
|
-
address: token.address,
|
|
10075
|
-
name: token.name,
|
|
10076
|
-
symbol: token.symbol,
|
|
10077
|
-
balance: balanceValue.toString(),
|
|
10078
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
10079
|
-
decimals: token.decimals,
|
|
10080
|
-
logo: token.logo
|
|
10081
|
-
});
|
|
10082
|
-
}
|
|
10083
|
-
});
|
|
10084
|
-
}
|
|
10085
|
-
return assets;
|
|
10086
|
-
};
|
|
10087
|
-
const getTokenBalance = (tokenAddress) => {
|
|
10088
|
-
const tokenIndex = COMMON_TOKENS.findIndex(
|
|
10089
|
-
(token2) => token2.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
10090
|
-
);
|
|
10091
|
-
if (tokenIndex === -1 || !tokenBalances?.[tokenIndex]) {
|
|
10092
|
-
return null;
|
|
10093
|
-
}
|
|
10094
|
-
const balance = tokenBalances[tokenIndex];
|
|
10095
|
-
const token = COMMON_TOKENS[tokenIndex];
|
|
10096
|
-
if (balance.status === "success" && balance.result) {
|
|
10097
|
-
const balanceValue = balance.result;
|
|
10098
|
-
const formattedBalance = formatUnits(balanceValue, token.decimals);
|
|
10099
|
-
return {
|
|
10100
|
-
address: token.address,
|
|
10101
|
-
name: token.name,
|
|
10102
|
-
symbol: token.symbol,
|
|
10103
|
-
decimals: token.decimals,
|
|
10104
|
-
balance: balanceValue.toString(),
|
|
10105
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
10106
|
-
logo: token.logo
|
|
10107
|
-
};
|
|
10108
|
-
}
|
|
10109
|
-
return null;
|
|
10110
|
-
};
|
|
10111
|
-
const refreshBalances = async () => {
|
|
10112
|
-
await Promise.all([
|
|
10113
|
-
refetchNativeBalance(),
|
|
10114
|
-
refetchTokenBalances()
|
|
10115
|
-
]);
|
|
10116
|
-
};
|
|
10117
|
-
return {
|
|
10118
|
-
nativeBalance,
|
|
10119
|
-
tokenBalances,
|
|
10120
|
-
assets: getAllAssets(),
|
|
10121
|
-
getTokenBalance,
|
|
10122
|
-
refreshBalances,
|
|
10123
|
-
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
10124
|
-
isConnected: !!address
|
|
10125
|
-
};
|
|
10126
|
-
}
|
|
10127
|
-
function useTokenInfo(tokenAddress) {
|
|
10128
|
-
const readContractsResult = useReadContracts({
|
|
10129
|
-
contracts: [
|
|
10130
|
-
{ address: tokenAddress, abi: erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
10131
|
-
{ address: tokenAddress, abi: erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
10132
|
-
{ address: tokenAddress, abi: erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
10133
|
-
]
|
|
10134
|
-
});
|
|
10135
|
-
const { data: tokenData, isLoading } = readContractsResult;
|
|
10136
|
-
if (!tokenData || isLoading) {
|
|
10137
|
-
return { isLoading, tokenInfo: null };
|
|
10138
|
-
}
|
|
10139
|
-
const [nameResult, symbolResult, decimalsResult] = tokenData;
|
|
10140
|
-
if (nameResult.status === "success" && symbolResult.status === "success" && decimalsResult.status === "success") {
|
|
10141
|
-
return {
|
|
10142
|
-
isLoading: false,
|
|
10143
|
-
tokenInfo: {
|
|
10144
|
-
name: nameResult.result,
|
|
10145
|
-
symbol: symbolResult.result,
|
|
10146
|
-
decimals: decimalsResult.result,
|
|
10147
|
-
address: tokenAddress
|
|
10379
|
+
const sendTransaction = useCallback12(
|
|
10380
|
+
async (params) => {
|
|
10381
|
+
if (!session || !address) {
|
|
10382
|
+
setError("No active session");
|
|
10383
|
+
return null;
|
|
10148
10384
|
}
|
|
10149
|
-
|
|
10150
|
-
|
|
10151
|
-
|
|
10152
|
-
}
|
|
10153
|
-
|
|
10154
|
-
|
|
10155
|
-
|
|
10156
|
-
|
|
10157
|
-
|
|
10158
|
-
|
|
10159
|
-
|
|
10160
|
-
|
|
10161
|
-
|
|
10162
|
-
|
|
10163
|
-
|
|
10164
|
-
|
|
10165
|
-
|
|
10166
|
-
|
|
10167
|
-
|
|
10168
|
-
|
|
10385
|
+
if (!isAddress(params.to)) {
|
|
10386
|
+
setError("Invalid recipient address");
|
|
10387
|
+
return null;
|
|
10388
|
+
}
|
|
10389
|
+
const value = parseFloat(params.value);
|
|
10390
|
+
if (isNaN(value) || value < 0) {
|
|
10391
|
+
setError("Invalid amount");
|
|
10392
|
+
return null;
|
|
10393
|
+
}
|
|
10394
|
+
setIsLoading(true);
|
|
10395
|
+
setError(null);
|
|
10396
|
+
setUserOpHash(null);
|
|
10397
|
+
try {
|
|
10398
|
+
const valueWei = parseEther2(params.value).toString();
|
|
10399
|
+
const hash = await sendUserOperation(
|
|
10400
|
+
session,
|
|
10401
|
+
params.to,
|
|
10402
|
+
valueWei,
|
|
10403
|
+
params.data || "0x",
|
|
10404
|
+
"standard",
|
|
10405
|
+
"v0.7"
|
|
10406
|
+
);
|
|
10407
|
+
setUserOpHash(hash);
|
|
10408
|
+
return hash;
|
|
10409
|
+
} catch (err) {
|
|
10410
|
+
const errorMessage = err instanceof Error ? err.message : "Transaction failed";
|
|
10411
|
+
setError(errorMessage);
|
|
10412
|
+
return null;
|
|
10413
|
+
} finally {
|
|
10414
|
+
setIsLoading(false);
|
|
10415
|
+
}
|
|
10416
|
+
},
|
|
10417
|
+
[session, address]
|
|
10418
|
+
);
|
|
10419
|
+
const reset = useCallback12(() => {
|
|
10420
|
+
setError(null);
|
|
10421
|
+
setUserOpHash(null);
|
|
10422
|
+
setIsLoading(false);
|
|
10423
|
+
}, []);
|
|
10169
10424
|
return {
|
|
10170
|
-
|
|
10171
|
-
formattedBalance,
|
|
10172
|
-
tokenInfo,
|
|
10425
|
+
sendTransaction,
|
|
10173
10426
|
isLoading,
|
|
10174
|
-
|
|
10427
|
+
error,
|
|
10428
|
+
userOpHash,
|
|
10429
|
+
reset
|
|
10175
10430
|
};
|
|
10176
10431
|
}
|
|
10177
10432
|
|
|
10178
10433
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10179
10434
|
init_base();
|
|
10180
|
-
import { Fragment as
|
|
10435
|
+
import { Fragment as Fragment9, jsx as jsx52, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10181
10436
|
function SendLumiaMenu() {
|
|
10182
10437
|
const page = useLayoutDataStore((st) => st.page);
|
|
10183
10438
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10184
10439
|
const open = page === "send";
|
|
10185
|
-
const
|
|
10440
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10186
10441
|
const { assets } = useAssets(address);
|
|
10187
10442
|
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
10188
10443
|
const { refetch: refetchBalance } = useBalance2({
|
|
@@ -10195,7 +10450,7 @@ function SendLumiaMenu() {
|
|
|
10195
10450
|
const [validationError, setValidationError] = useState11(null);
|
|
10196
10451
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10197
10452
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10198
|
-
|
|
10453
|
+
useEffect20(() => {
|
|
10199
10454
|
if (open) {
|
|
10200
10455
|
setTxStep("input");
|
|
10201
10456
|
setValidationError(null);
|
|
@@ -10250,15 +10505,15 @@ function SendLumiaMenu() {
|
|
|
10250
10505
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
10251
10506
|
setAmount(maxAmount.toFixed(6));
|
|
10252
10507
|
};
|
|
10253
|
-
return /* @__PURE__ */
|
|
10254
|
-
/* @__PURE__ */
|
|
10255
|
-
txStep === "input" && /* @__PURE__ */
|
|
10256
|
-
/* @__PURE__ */
|
|
10508
|
+
return /* @__PURE__ */ jsxs41("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10509
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10510
|
+
txStep === "input" && /* @__PURE__ */ jsx52(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx52(ArrowLeft10, { className: "h-4 w-4" }) }),
|
|
10511
|
+
/* @__PURE__ */ jsx52("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
10257
10512
|
] }),
|
|
10258
|
-
txStep === "input" && /* @__PURE__ */
|
|
10259
|
-
/* @__PURE__ */
|
|
10260
|
-
/* @__PURE__ */
|
|
10261
|
-
/* @__PURE__ */
|
|
10513
|
+
txStep === "input" && /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10514
|
+
/* @__PURE__ */ jsxs41("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10515
|
+
/* @__PURE__ */ jsx52("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient Address" }),
|
|
10516
|
+
/* @__PURE__ */ jsx52(
|
|
10262
10517
|
Input,
|
|
10263
10518
|
{
|
|
10264
10519
|
Icon: Wallet,
|
|
@@ -10269,17 +10524,17 @@ function SendLumiaMenu() {
|
|
|
10269
10524
|
}
|
|
10270
10525
|
)
|
|
10271
10526
|
] }),
|
|
10272
|
-
/* @__PURE__ */
|
|
10273
|
-
/* @__PURE__ */
|
|
10274
|
-
/* @__PURE__ */
|
|
10275
|
-
/* @__PURE__ */
|
|
10527
|
+
/* @__PURE__ */ jsxs41("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10528
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between items-center", children: [
|
|
10529
|
+
/* @__PURE__ */ jsx52("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: "Amount" }),
|
|
10530
|
+
/* @__PURE__ */ jsxs41("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
10276
10531
|
"Balance: ",
|
|
10277
10532
|
balance.toFixed(4),
|
|
10278
10533
|
" LUMIA"
|
|
10279
10534
|
] })
|
|
10280
10535
|
] }),
|
|
10281
|
-
/* @__PURE__ */
|
|
10282
|
-
/* @__PURE__ */
|
|
10536
|
+
/* @__PURE__ */ jsxs41("div", { className: "w-full relative", children: [
|
|
10537
|
+
/* @__PURE__ */ jsx52(
|
|
10283
10538
|
Input,
|
|
10284
10539
|
{
|
|
10285
10540
|
Icon: LumiaIcon,
|
|
@@ -10290,7 +10545,7 @@ function SendLumiaMenu() {
|
|
|
10290
10545
|
step: "0.000001"
|
|
10291
10546
|
}
|
|
10292
10547
|
),
|
|
10293
|
-
/* @__PURE__ */
|
|
10548
|
+
/* @__PURE__ */ jsx52(
|
|
10294
10549
|
Button,
|
|
10295
10550
|
{
|
|
10296
10551
|
onClick: handleMaxAmount,
|
|
@@ -10303,65 +10558,65 @@ function SendLumiaMenu() {
|
|
|
10303
10558
|
)
|
|
10304
10559
|
] })
|
|
10305
10560
|
] }),
|
|
10306
|
-
(validationError || error) && /* @__PURE__ */
|
|
10307
|
-
/* @__PURE__ */
|
|
10308
|
-
/* @__PURE__ */
|
|
10561
|
+
(validationError || error) && /* @__PURE__ */ jsxs41("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: [
|
|
10562
|
+
/* @__PURE__ */ jsx52(AlertCircle3, { className: "h-4 w-4" }),
|
|
10563
|
+
/* @__PURE__ */ jsx52("span", { className: "text-sm", children: validationError || error })
|
|
10309
10564
|
] }),
|
|
10310
|
-
/* @__PURE__ */
|
|
10565
|
+
/* @__PURE__ */ jsx52(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
10311
10566
|
] }),
|
|
10312
|
-
txStep === "confirm" && /* @__PURE__ */
|
|
10313
|
-
/* @__PURE__ */
|
|
10314
|
-
/* @__PURE__ */
|
|
10315
|
-
/* @__PURE__ */
|
|
10316
|
-
/* @__PURE__ */
|
|
10317
|
-
/* @__PURE__ */
|
|
10318
|
-
/* @__PURE__ */
|
|
10567
|
+
txStep === "confirm" && /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10568
|
+
/* @__PURE__ */ jsxs41("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
10569
|
+
/* @__PURE__ */ jsx52("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
10570
|
+
/* @__PURE__ */ jsxs41("div", { className: "space-y-2 text-sm", children: [
|
|
10571
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between", children: [
|
|
10572
|
+
/* @__PURE__ */ jsx52("span", { children: "To:" }),
|
|
10573
|
+
/* @__PURE__ */ jsx52("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
10319
10574
|
] }),
|
|
10320
|
-
/* @__PURE__ */
|
|
10321
|
-
/* @__PURE__ */
|
|
10322
|
-
/* @__PURE__ */
|
|
10575
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between", children: [
|
|
10576
|
+
/* @__PURE__ */ jsx52("span", { children: "Amount:" }),
|
|
10577
|
+
/* @__PURE__ */ jsxs41("span", { className: `font-semibold`, children: [
|
|
10323
10578
|
amount,
|
|
10324
10579
|
" LUMIA"
|
|
10325
10580
|
] })
|
|
10326
10581
|
] }),
|
|
10327
|
-
/* @__PURE__ */
|
|
10328
|
-
/* @__PURE__ */
|
|
10329
|
-
/* @__PURE__ */
|
|
10582
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between", children: [
|
|
10583
|
+
/* @__PURE__ */ jsx52("span", { children: "Network:" }),
|
|
10584
|
+
/* @__PURE__ */ jsx52("span", { children: "Lumia Beam" })
|
|
10330
10585
|
] })
|
|
10331
10586
|
] })
|
|
10332
10587
|
] }),
|
|
10333
|
-
/* @__PURE__ */
|
|
10334
|
-
/* @__PURE__ */
|
|
10335
|
-
/* @__PURE__ */
|
|
10336
|
-
isLoading && /* @__PURE__ */
|
|
10588
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex gap-2", children: [
|
|
10589
|
+
/* @__PURE__ */ jsx52(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
10590
|
+
/* @__PURE__ */ jsxs41(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
10591
|
+
isLoading && /* @__PURE__ */ jsx52(Loader13, { className: "h-4 w-4 animate-spin" }),
|
|
10337
10592
|
"Confirm"
|
|
10338
10593
|
] })
|
|
10339
10594
|
] })
|
|
10340
10595
|
] }),
|
|
10341
|
-
txStep === "pending" && /* @__PURE__ */
|
|
10342
|
-
/* @__PURE__ */
|
|
10343
|
-
/* @__PURE__ */
|
|
10344
|
-
/* @__PURE__ */
|
|
10345
|
-
/* @__PURE__ */
|
|
10596
|
+
txStep === "pending" && /* @__PURE__ */ jsxs41("div", { className: "py-8 text-center space-y-4", children: [
|
|
10597
|
+
/* @__PURE__ */ jsx52(Loader13, { className: "h-12 w-12 animate-spin mx-auto" }),
|
|
10598
|
+
/* @__PURE__ */ jsxs41("div", { children: [
|
|
10599
|
+
/* @__PURE__ */ jsx52("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
10600
|
+
/* @__PURE__ */ jsx52("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
10346
10601
|
] })
|
|
10347
10602
|
] }),
|
|
10348
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
10349
|
-
/* @__PURE__ */
|
|
10350
|
-
/* @__PURE__ */
|
|
10351
|
-
/* @__PURE__ */
|
|
10352
|
-
/* @__PURE__ */
|
|
10603
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10604
|
+
/* @__PURE__ */ jsxs41("div", { className: "text-center py-4", children: [
|
|
10605
|
+
/* @__PURE__ */ jsx52(CheckCircle25, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
10606
|
+
/* @__PURE__ */ jsx52("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
10607
|
+
/* @__PURE__ */ jsx52("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
10353
10608
|
] }),
|
|
10354
|
-
/* @__PURE__ */
|
|
10609
|
+
/* @__PURE__ */ jsx52(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
10355
10610
|
] })
|
|
10356
10611
|
] });
|
|
10357
10612
|
}
|
|
10358
10613
|
|
|
10359
10614
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10360
|
-
import { ArrowLeft as
|
|
10615
|
+
import { ArrowLeft as ArrowLeft11, CheckCircle2 as CheckCircle26, Copy as Copy2, Loader as Loader14 } from "lucide-react";
|
|
10361
10616
|
import QRCode from "qrcode";
|
|
10362
|
-
import { useEffect as
|
|
10617
|
+
import { useEffect as useEffect21, useState as useState12 } from "react";
|
|
10363
10618
|
init_clients();
|
|
10364
|
-
import { Fragment as
|
|
10619
|
+
import { Fragment as Fragment10, jsx as jsx53, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10365
10620
|
function ReceiveLumiaMenu() {
|
|
10366
10621
|
const page = useLayoutDataStore((st) => st.page);
|
|
10367
10622
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10369,7 +10624,7 @@ function ReceiveLumiaMenu() {
|
|
|
10369
10624
|
const { address } = useLumiaPassportSession();
|
|
10370
10625
|
const [qrCodeUrl, setQrCodeUrl] = useState12("");
|
|
10371
10626
|
const [copied, setCopied] = useState12(false);
|
|
10372
|
-
|
|
10627
|
+
useEffect21(() => {
|
|
10373
10628
|
if (open && address) {
|
|
10374
10629
|
QRCode.toDataURL(address, {
|
|
10375
10630
|
width: 200,
|
|
@@ -10392,41 +10647,42 @@ function ReceiveLumiaMenu() {
|
|
|
10392
10647
|
console.error("Failed to copy address:", error);
|
|
10393
10648
|
}
|
|
10394
10649
|
};
|
|
10395
|
-
return /* @__PURE__ */
|
|
10396
|
-
/* @__PURE__ */
|
|
10397
|
-
/* @__PURE__ */
|
|
10398
|
-
/* @__PURE__ */
|
|
10650
|
+
return /* @__PURE__ */ jsxs42("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10651
|
+
/* @__PURE__ */ jsxs42("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10652
|
+
/* @__PURE__ */ jsx53(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx53(ArrowLeft11, { className: "h-4 w-4" }) }),
|
|
10653
|
+
/* @__PURE__ */ jsx53("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10399
10654
|
] }),
|
|
10400
|
-
/* @__PURE__ */
|
|
10401
|
-
/* @__PURE__ */
|
|
10402
|
-
/* @__PURE__ */
|
|
10655
|
+
/* @__PURE__ */ jsxs42(Highlight, { className: "text-center", type: "warning", children: [
|
|
10656
|
+
/* @__PURE__ */ jsx53("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
10657
|
+
/* @__PURE__ */ jsx53("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
10403
10658
|
] }),
|
|
10404
|
-
/* @__PURE__ */
|
|
10405
|
-
/* @__PURE__ */
|
|
10406
|
-
/* @__PURE__ */
|
|
10407
|
-
/* @__PURE__ */
|
|
10408
|
-
/* @__PURE__ */
|
|
10409
|
-
/* @__PURE__ */
|
|
10410
|
-
] }) : /* @__PURE__ */
|
|
10411
|
-
/* @__PURE__ */
|
|
10412
|
-
/* @__PURE__ */
|
|
10659
|
+
/* @__PURE__ */ jsx53("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx53("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx53(Loader14, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
10660
|
+
/* @__PURE__ */ jsxs42(Highlight, { type: "info", children: [
|
|
10661
|
+
/* @__PURE__ */ jsx53("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
10662
|
+
/* @__PURE__ */ jsx53(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ jsxs42(Fragment10, { children: [
|
|
10663
|
+
/* @__PURE__ */ jsx53(CheckCircle26, { className: "h-4 w-4" }),
|
|
10664
|
+
/* @__PURE__ */ jsx53("span", { children: "Copied!" })
|
|
10665
|
+
] }) : /* @__PURE__ */ jsxs42(Fragment10, { children: [
|
|
10666
|
+
/* @__PURE__ */ jsx53(Copy2, { className: "h-4 w-4" }),
|
|
10667
|
+
/* @__PURE__ */ jsx53("span", { children: "Copy Address" })
|
|
10413
10668
|
] }) })
|
|
10414
10669
|
] }),
|
|
10415
|
-
/* @__PURE__ */
|
|
10670
|
+
/* @__PURE__ */ jsx53("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx53("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
10416
10671
|
] });
|
|
10417
10672
|
}
|
|
10418
10673
|
|
|
10419
10674
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10420
|
-
import { ArrowLeft as
|
|
10675
|
+
import { ArrowLeft as ArrowLeft12 } from "lucide-react";
|
|
10676
|
+
import { useEffect as useEffect22 } from "react";
|
|
10421
10677
|
|
|
10422
10678
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10423
10679
|
import { ArrowLeftRight, DatabaseBackup as DatabaseBackup2, LockKeyhole, UsersRound } from "lucide-react";
|
|
10424
10680
|
|
|
10425
10681
|
// src/internal/assets/KycIcon.tsx
|
|
10426
|
-
import { jsx as
|
|
10682
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
10427
10683
|
function KycIcon(props) {
|
|
10428
10684
|
const { width = "24", height = "24", ...rest } = props;
|
|
10429
|
-
return /* @__PURE__ */
|
|
10685
|
+
return /* @__PURE__ */ jsx54("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx54(
|
|
10430
10686
|
"path",
|
|
10431
10687
|
{
|
|
10432
10688
|
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",
|
|
@@ -10445,19 +10701,21 @@ var NAV_BUTTONS = [
|
|
|
10445
10701
|
];
|
|
10446
10702
|
|
|
10447
10703
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10448
|
-
import { jsx as
|
|
10704
|
+
import { jsx as jsx55, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
10449
10705
|
function SettingsMenu() {
|
|
10450
10706
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10451
10707
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10452
10708
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10709
|
+
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10710
|
+
useEffect22(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10453
10711
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10454
10712
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10455
|
-
return /* @__PURE__ */
|
|
10456
|
-
/* @__PURE__ */
|
|
10457
|
-
/* @__PURE__ */
|
|
10458
|
-
/* @__PURE__ */
|
|
10713
|
+
return /* @__PURE__ */ jsxs43("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10714
|
+
/* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10715
|
+
/* @__PURE__ */ jsx55(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx55(ArrowLeft12, { className: "h-4 w-4" }) }),
|
|
10716
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xl font-semibold", children: "Wallet Details" })
|
|
10459
10717
|
] }),
|
|
10460
|
-
/* @__PURE__ */
|
|
10718
|
+
/* @__PURE__ */ jsx55("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon, onClick }) => /* @__PURE__ */ jsxs43(
|
|
10461
10719
|
Button,
|
|
10462
10720
|
{
|
|
10463
10721
|
variant: "outline",
|
|
@@ -10470,8 +10728,8 @@ function SettingsMenu() {
|
|
|
10470
10728
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
10471
10729
|
),
|
|
10472
10730
|
children: [
|
|
10473
|
-
/* @__PURE__ */
|
|
10474
|
-
/* @__PURE__ */
|
|
10731
|
+
/* @__PURE__ */ jsx55(Icon, { className: "w-4 h-4" }),
|
|
10732
|
+
/* @__PURE__ */ jsx55("span", { children: name })
|
|
10475
10733
|
]
|
|
10476
10734
|
},
|
|
10477
10735
|
id
|
|
@@ -10480,15 +10738,15 @@ function SettingsMenu() {
|
|
|
10480
10738
|
}
|
|
10481
10739
|
|
|
10482
10740
|
// src/internal/components/TermsOfService.tsx
|
|
10483
|
-
import { jsx as
|
|
10741
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
10484
10742
|
function TermsOfService() {
|
|
10485
|
-
return /* @__PURE__ */
|
|
10743
|
+
return /* @__PURE__ */ jsx56("div", { className: "w-full p-4 flex flex-col gap-4", children: /* @__PURE__ */ jsx56("span", { className: "prose text-sm", children: "By using Lumia Passport you agree to our terms." }) });
|
|
10486
10744
|
}
|
|
10487
10745
|
|
|
10488
10746
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10489
|
-
import { useQuery as
|
|
10490
|
-
import { Activity, ArrowLeft as
|
|
10491
|
-
import { useCallback as
|
|
10747
|
+
import { useQuery as useQuery7, useQueryClient as useQueryClient9 } from "@tanstack/react-query";
|
|
10748
|
+
import { Activity, ArrowLeft as ArrowLeft13, Loader as Loader15, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
10749
|
+
import { useCallback as useCallback13, useState as useState13 } from "react";
|
|
10492
10750
|
|
|
10493
10751
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10494
10752
|
init_base();
|
|
@@ -10797,7 +11055,7 @@ var parseValue = (value) => {
|
|
|
10797
11055
|
return 0n;
|
|
10798
11056
|
}
|
|
10799
11057
|
};
|
|
10800
|
-
var
|
|
11058
|
+
var formatValue2 = (value, decimals = 18) => {
|
|
10801
11059
|
const amount = parseValue(value);
|
|
10802
11060
|
if (amount === 0n) return "0";
|
|
10803
11061
|
if (decimals <= 0) {
|
|
@@ -10813,7 +11071,7 @@ var formatValue = (value, decimals = 18) => {
|
|
|
10813
11071
|
const trimmed = fractionStr.slice(0, Math.min(6, fractionStr.length));
|
|
10814
11072
|
return `${whole.toString()}.${trimmed}`;
|
|
10815
11073
|
};
|
|
10816
|
-
var
|
|
11074
|
+
var openInExplorer2 = (txHash) => {
|
|
10817
11075
|
const explorerUrl = getExplorerUrl();
|
|
10818
11076
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
10819
11077
|
};
|
|
@@ -10826,24 +11084,24 @@ var formatTimestamp = (timestampMs) => {
|
|
|
10826
11084
|
};
|
|
10827
11085
|
|
|
10828
11086
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10829
|
-
import { jsx as
|
|
10830
|
-
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */
|
|
10831
|
-
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */
|
|
11087
|
+
import { jsx as jsx57, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
11088
|
+
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */ jsx57(CheckCircle27, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(XCircle, { className: "w-4 h-4 text-[var(--l-pass-error)]" });
|
|
11089
|
+
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */ jsx57(ArrowDownRight, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(ArrowUpRight, { className: "w-4 h-4 text-[var(--l-pass-info)]" });
|
|
10832
11090
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
10833
11091
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
10834
11092
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
10835
|
-
return /* @__PURE__ */
|
|
10836
|
-
/* @__PURE__ */
|
|
10837
|
-
/* @__PURE__ */
|
|
10838
|
-
/* @__PURE__ */
|
|
10839
|
-
|
|
11093
|
+
return /* @__PURE__ */ jsxs44("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
11094
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11095
|
+
/* @__PURE__ */ jsx57("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
11096
|
+
/* @__PURE__ */ jsxs44("span", { children: [
|
|
11097
|
+
formatValue2(internal.value, internalDecimals),
|
|
10840
11098
|
" ",
|
|
10841
11099
|
internalSymbol
|
|
10842
11100
|
] })
|
|
10843
11101
|
] }),
|
|
10844
|
-
/* @__PURE__ */
|
|
10845
|
-
/* @__PURE__ */
|
|
10846
|
-
/* @__PURE__ */
|
|
11102
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11103
|
+
/* @__PURE__ */ jsx57("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
11104
|
+
/* @__PURE__ */ jsx57("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
10847
11105
|
] })
|
|
10848
11106
|
] });
|
|
10849
11107
|
}
|
|
@@ -10854,22 +11112,22 @@ function TransactionsGroup(props) {
|
|
|
10854
11112
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
10855
11113
|
const assetDecimals = parent.decimals ?? 18;
|
|
10856
11114
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
10857
|
-
return /* @__PURE__ */
|
|
11115
|
+
return /* @__PURE__ */ jsxs44(
|
|
10858
11116
|
"div",
|
|
10859
11117
|
{
|
|
10860
|
-
onClick: () =>
|
|
11118
|
+
onClick: () => openInExplorer2(parent.parentHash),
|
|
10861
11119
|
className: cn(
|
|
10862
11120
|
"rounded-[var(--l-pass-el-bdrs)] p-2 transition-colors cursor-pointer border border-[var(--l-pass-bd)]",
|
|
10863
11121
|
"bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
10864
11122
|
),
|
|
10865
11123
|
children: [
|
|
10866
|
-
/* @__PURE__ */
|
|
10867
|
-
/* @__PURE__ */
|
|
11124
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between gap-2", children: [
|
|
11125
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
10868
11126
|
getTransactionIcon(parent.direction),
|
|
10869
|
-
/* @__PURE__ */
|
|
11127
|
+
/* @__PURE__ */ jsx57("span", { className: "font-medium", children: isIncoming ? "Received" : "Sent" }),
|
|
10870
11128
|
getStatusIcon(parent.status)
|
|
10871
11129
|
] }),
|
|
10872
|
-
parent.badgeLabel && /* @__PURE__ */
|
|
11130
|
+
parent.badgeLabel && /* @__PURE__ */ jsx57(
|
|
10873
11131
|
"span",
|
|
10874
11132
|
{
|
|
10875
11133
|
className: cn(
|
|
@@ -10880,39 +11138,39 @@ function TransactionsGroup(props) {
|
|
|
10880
11138
|
}
|
|
10881
11139
|
)
|
|
10882
11140
|
] }),
|
|
10883
|
-
/* @__PURE__ */
|
|
10884
|
-
/* @__PURE__ */
|
|
10885
|
-
/* @__PURE__ */
|
|
10886
|
-
/* @__PURE__ */
|
|
10887
|
-
/* @__PURE__ */
|
|
11141
|
+
/* @__PURE__ */ jsx57("span", { className: "block w-full leading-4 mb-1 text-xs text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) }),
|
|
11142
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex flex-col gap-0 text-sm", children: [
|
|
11143
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11144
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: isIncoming ? "From:" : "To:" }),
|
|
11145
|
+
/* @__PURE__ */ jsxs44("span", { className: "font-mono", children: [
|
|
10888
11146
|
parent.counterpartyName || formatAddress2(parent.counterparty),
|
|
10889
|
-
parent.counterpartyIsContract && /* @__PURE__ */
|
|
11147
|
+
parent.counterpartyIsContract && /* @__PURE__ */ jsx57("span", { className: "text-xs text-[var(--l-pass-info)] ml-1", children: "(Contract)" })
|
|
10890
11148
|
] })
|
|
10891
11149
|
] }),
|
|
10892
|
-
/* @__PURE__ */
|
|
10893
|
-
/* @__PURE__ */
|
|
10894
|
-
/* @__PURE__ */
|
|
10895
|
-
|
|
11150
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11151
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Value:" }),
|
|
11152
|
+
/* @__PURE__ */ jsxs44("span", { className: "font-semibold", children: [
|
|
11153
|
+
formatValue2(parent.value, assetDecimals),
|
|
10896
11154
|
" ",
|
|
10897
11155
|
assetSymbol
|
|
10898
11156
|
] })
|
|
10899
11157
|
] }),
|
|
10900
|
-
/* @__PURE__ */
|
|
10901
|
-
/* @__PURE__ */
|
|
10902
|
-
/* @__PURE__ */
|
|
11158
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11159
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Block:" }),
|
|
11160
|
+
/* @__PURE__ */ jsx57("span", { className: "font-mono", children: parent.blockNumber ? `#${parent.blockNumber}` : "-" })
|
|
10903
11161
|
] }),
|
|
10904
|
-
parent.method && /* @__PURE__ */
|
|
10905
|
-
/* @__PURE__ */
|
|
10906
|
-
/* @__PURE__ */
|
|
11162
|
+
parent.method && /* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11163
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Method:" }),
|
|
11164
|
+
/* @__PURE__ */ jsx57("span", { className: "text-[var(--l-pass-info)] text-xs", children: parent.method })
|
|
10907
11165
|
] })
|
|
10908
11166
|
] }),
|
|
10909
|
-
internalsToRender.length > 0 && /* @__PURE__ */
|
|
11167
|
+
internalsToRender.length > 0 && /* @__PURE__ */ jsxs44(
|
|
10910
11168
|
"div",
|
|
10911
11169
|
{
|
|
10912
11170
|
className: "mt-4 rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
10913
11171
|
onClick: (event) => event.stopPropagation(),
|
|
10914
11172
|
children: [
|
|
10915
|
-
/* @__PURE__ */
|
|
11173
|
+
/* @__PURE__ */ jsxs44(
|
|
10916
11174
|
Button,
|
|
10917
11175
|
{
|
|
10918
11176
|
variant: "ghost",
|
|
@@ -10920,16 +11178,16 @@ function TransactionsGroup(props) {
|
|
|
10920
11178
|
className: "w-full justify-between",
|
|
10921
11179
|
onClick: () => onToggleExpanded(group.id),
|
|
10922
11180
|
children: [
|
|
10923
|
-
/* @__PURE__ */
|
|
11181
|
+
/* @__PURE__ */ jsxs44("span", { children: [
|
|
10924
11182
|
"View internal calls (",
|
|
10925
11183
|
internalsToRender.length,
|
|
10926
11184
|
")"
|
|
10927
11185
|
] }),
|
|
10928
|
-
/* @__PURE__ */
|
|
11186
|
+
/* @__PURE__ */ jsx57("span", { children: expanded ? "Hide" : "Show" })
|
|
10929
11187
|
]
|
|
10930
11188
|
}
|
|
10931
11189
|
),
|
|
10932
|
-
expanded && /* @__PURE__ */
|
|
11190
|
+
expanded && /* @__PURE__ */ jsx57("div", { className: "px-3 pb-3 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ jsx57(
|
|
10933
11191
|
InternalTransaction,
|
|
10934
11192
|
{
|
|
10935
11193
|
internal,
|
|
@@ -10947,9 +11205,9 @@ function TransactionsGroup(props) {
|
|
|
10947
11205
|
}
|
|
10948
11206
|
|
|
10949
11207
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10950
|
-
import { jsx as
|
|
11208
|
+
import { jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
10951
11209
|
function TransactionsMenu() {
|
|
10952
|
-
const qc =
|
|
11210
|
+
const qc = useQueryClient9();
|
|
10953
11211
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10954
11212
|
const page = useLayoutDataStore((st) => st.page);
|
|
10955
11213
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10959,22 +11217,22 @@ function TransactionsMenu() {
|
|
|
10959
11217
|
isLoading: isTxHistoryLoading,
|
|
10960
11218
|
isFetching: isTxHistoryFetching,
|
|
10961
11219
|
error: txHistoryError
|
|
10962
|
-
} =
|
|
11220
|
+
} = useQuery7({
|
|
10963
11221
|
retry: false,
|
|
10964
11222
|
enabled: !!address && page === "transactions",
|
|
10965
11223
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
10966
11224
|
queryFn: () => getTransactionsListQuery(address)
|
|
10967
11225
|
});
|
|
10968
|
-
const refreshTxHistory =
|
|
11226
|
+
const refreshTxHistory = useCallback13(
|
|
10969
11227
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
10970
11228
|
[qc, address]
|
|
10971
11229
|
);
|
|
10972
11230
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
10973
|
-
return /* @__PURE__ */
|
|
10974
|
-
/* @__PURE__ */
|
|
10975
|
-
/* @__PURE__ */
|
|
10976
|
-
/* @__PURE__ */
|
|
10977
|
-
/* @__PURE__ */
|
|
11231
|
+
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11232
|
+
/* @__PURE__ */ jsx58("div", { className: "w-full", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
11233
|
+
/* @__PURE__ */ jsx58(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx58(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
11234
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
11235
|
+
/* @__PURE__ */ jsx58(
|
|
10978
11236
|
Button,
|
|
10979
11237
|
{
|
|
10980
11238
|
variant: "ghost",
|
|
@@ -10982,13 +11240,13 @@ function TransactionsMenu() {
|
|
|
10982
11240
|
onClick: refreshTxHistory,
|
|
10983
11241
|
disabled: isTxHistoryFetching,
|
|
10984
11242
|
title: "Refresh transactions",
|
|
10985
|
-
children: isTxHistoryFetching ? /* @__PURE__ */
|
|
11243
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ jsx58(Loader15, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx58(RefreshCw3, { className: "h-4 w-4" })
|
|
10986
11244
|
}
|
|
10987
11245
|
)
|
|
10988
11246
|
] }) }),
|
|
10989
|
-
/* @__PURE__ */
|
|
10990
|
-
isTxHistoryLoading && /* @__PURE__ */
|
|
10991
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */
|
|
11247
|
+
/* @__PURE__ */ jsxs45("div", { className: "max-h-[60vh] overflow-y-auto", children: [
|
|
11248
|
+
isTxHistoryLoading && /* @__PURE__ */ jsx58("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx58(Loader15, { className: "h-5 w-5 animate-spin" }) }),
|
|
11249
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs45(
|
|
10992
11250
|
"div",
|
|
10993
11251
|
{
|
|
10994
11252
|
className: cn(
|
|
@@ -10997,20 +11255,20 @@ function TransactionsMenu() {
|
|
|
10997
11255
|
"text-[var(--l-pass-error)]"
|
|
10998
11256
|
),
|
|
10999
11257
|
children: [
|
|
11000
|
-
/* @__PURE__ */
|
|
11001
|
-
/* @__PURE__ */
|
|
11258
|
+
/* @__PURE__ */ jsx58(XCircle2, { className: "w-12 h-12 mb-2" }),
|
|
11259
|
+
/* @__PURE__ */ jsx58("span", { className: "block w-full text-center text-sm", children: txHistoryResolvedError })
|
|
11002
11260
|
]
|
|
11003
11261
|
}
|
|
11004
11262
|
),
|
|
11005
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */
|
|
11006
|
-
/* @__PURE__ */
|
|
11007
|
-
/* @__PURE__ */
|
|
11008
|
-
/* @__PURE__ */
|
|
11009
|
-
/* @__PURE__ */
|
|
11010
|
-
/* @__PURE__ */
|
|
11263
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsxs45("div", { className: "flex flex-col gap-2 items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: [
|
|
11264
|
+
/* @__PURE__ */ jsx58(Activity, { className: "w-12 h-12" }),
|
|
11265
|
+
/* @__PURE__ */ jsxs45("span", { className: "block w-full text-center", children: [
|
|
11266
|
+
/* @__PURE__ */ jsx58("span", { children: "No transactions found" }),
|
|
11267
|
+
/* @__PURE__ */ jsx58("br", {}),
|
|
11268
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
11011
11269
|
] })
|
|
11012
11270
|
] }),
|
|
11013
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */
|
|
11271
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ jsx58("div", { className: "w-full flex flex-col gap-2", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx58(
|
|
11014
11272
|
TransactionsGroup,
|
|
11015
11273
|
{
|
|
11016
11274
|
group,
|
|
@@ -11023,127 +11281,6 @@ function TransactionsMenu() {
|
|
|
11023
11281
|
] });
|
|
11024
11282
|
}
|
|
11025
11283
|
|
|
11026
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11027
|
-
import { ArrowLeft as ArrowLeft13, Gem, Loader as Loader13, RefreshCw as RefreshCw3 } from "lucide-react";
|
|
11028
|
-
|
|
11029
|
-
// src/internal/components/ViewAssetsMenu/AssetItem.tsx
|
|
11030
|
-
init_base();
|
|
11031
|
-
import { Check as Check2, Copy as Copy3, ExternalLink } from "lucide-react";
|
|
11032
|
-
import React14 from "react";
|
|
11033
|
-
import { jsx as jsx57, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
11034
|
-
var openInExplorer2 = (address) => {
|
|
11035
|
-
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11036
|
-
};
|
|
11037
|
-
function AssetItem(props) {
|
|
11038
|
-
const { address, asset } = props;
|
|
11039
|
-
const [copied, setCopied] = React14.useState(null);
|
|
11040
|
-
const handleCopy = async (text, type) => {
|
|
11041
|
-
try {
|
|
11042
|
-
await navigator.clipboard.writeText(text);
|
|
11043
|
-
setCopied(type);
|
|
11044
|
-
setTimeout(() => setCopied(null), 1500);
|
|
11045
|
-
} catch (error) {
|
|
11046
|
-
console.error("Failed to copy:", error);
|
|
11047
|
-
}
|
|
11048
|
-
};
|
|
11049
|
-
return /* @__PURE__ */ jsxs44("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: [
|
|
11050
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between mb-2", children: [
|
|
11051
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-3", children: [
|
|
11052
|
-
/* @__PURE__ */ jsx57("div", { className: "w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx57("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
11053
|
-
/* @__PURE__ */ jsxs44("div", { children: [
|
|
11054
|
-
/* @__PURE__ */ jsx57("div", { className: "font-medium", children: asset.name }),
|
|
11055
|
-
/* @__PURE__ */ jsx57("div", { className: "text-sm", children: asset.symbol })
|
|
11056
|
-
] })
|
|
11057
|
-
] }),
|
|
11058
|
-
/* @__PURE__ */ jsxs44("div", { className: "text-right", children: [
|
|
11059
|
-
/* @__PURE__ */ jsx57("div", { className: "font-mono", children: asset.formattedBalance }),
|
|
11060
|
-
/* @__PURE__ */ jsx57("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: asset.symbol })
|
|
11061
|
-
] })
|
|
11062
|
-
] }),
|
|
11063
|
-
asset.address && /* @__PURE__ */ jsxs44("div", { className: "w-full space-y-2 mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: [
|
|
11064
|
-
/* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11065
|
-
/* @__PURE__ */ jsx57("span", { children: "Contract Address:" }),
|
|
11066
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11067
|
-
/* @__PURE__ */ jsx57("span", { className: `font-mono text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
11068
|
-
/* @__PURE__ */ jsx57(
|
|
11069
|
-
Button,
|
|
11070
|
-
{
|
|
11071
|
-
variant: "ghost",
|
|
11072
|
-
size: "icon",
|
|
11073
|
-
title: "Copy address",
|
|
11074
|
-
onClick: () => handleCopy(asset.address, "address"),
|
|
11075
|
-
children: copied === "address" ? /* @__PURE__ */ jsx57(Check2, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(Copy3, { className: "w-3 h-3" })
|
|
11076
|
-
}
|
|
11077
|
-
),
|
|
11078
|
-
/* @__PURE__ */ jsx57(
|
|
11079
|
-
Button,
|
|
11080
|
-
{
|
|
11081
|
-
variant: "ghost",
|
|
11082
|
-
size: "icon",
|
|
11083
|
-
onClick: () => openInExplorer2(asset.address),
|
|
11084
|
-
title: "View in explorer",
|
|
11085
|
-
children: /* @__PURE__ */ jsx57(ExternalLink, { className: "w-3 h-3" })
|
|
11086
|
-
}
|
|
11087
|
-
)
|
|
11088
|
-
] })
|
|
11089
|
-
] }),
|
|
11090
|
-
asset.decimals && /* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11091
|
-
/* @__PURE__ */ jsx57("span", { children: "Decimals:" }),
|
|
11092
|
-
/* @__PURE__ */ jsx57("span", { children: asset.decimals })
|
|
11093
|
-
] })
|
|
11094
|
-
] }),
|
|
11095
|
-
asset.type === "native" && address && /* @__PURE__ */ jsx57("div", { className: "mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: /* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between text-sm", children: [
|
|
11096
|
-
/* @__PURE__ */ jsx57("span", { children: "Your Address:" }),
|
|
11097
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11098
|
-
/* @__PURE__ */ jsx57("span", { className: "font-mono text-xs", children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
11099
|
-
/* @__PURE__ */ jsx57(
|
|
11100
|
-
Button,
|
|
11101
|
-
{
|
|
11102
|
-
variant: "ghost",
|
|
11103
|
-
size: "icon",
|
|
11104
|
-
onClick: () => handleCopy(address, "wallet"),
|
|
11105
|
-
title: "Copy wallet address",
|
|
11106
|
-
children: copied === "wallet" ? /* @__PURE__ */ jsx57(Check2, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(Copy3, { className: "w-3 h-3" })
|
|
11107
|
-
}
|
|
11108
|
-
),
|
|
11109
|
-
/* @__PURE__ */ jsx57(Button, { variant: "ghost", size: "icon", onClick: () => openInExplorer2(address), title: "View in explorer", children: /* @__PURE__ */ jsx57(ExternalLink, { className: "w-3 h-3" }) })
|
|
11110
|
-
] })
|
|
11111
|
-
] }) })
|
|
11112
|
-
] });
|
|
11113
|
-
}
|
|
11114
|
-
|
|
11115
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11116
|
-
import { jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
11117
|
-
function ViewAssetsMenu() {
|
|
11118
|
-
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11119
|
-
const { address } = useLumiaPassportSession();
|
|
11120
|
-
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
11121
|
-
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11122
|
-
/* @__PURE__ */ jsx58("div", { className: "w-full", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
11123
|
-
/* @__PURE__ */ jsx58(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx58(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
11124
|
-
/* @__PURE__ */ jsx58("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11125
|
-
/* @__PURE__ */ jsx58(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ jsx58(Loader13, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx58(RefreshCw3, { className: "h-4 w-4" }) })
|
|
11126
|
-
] }) }),
|
|
11127
|
-
/* @__PURE__ */ jsxs45(Expandable, { isExpanded: true, contentClassName: "w-full max-h-[60dvh] overflow-y-auto", children: [
|
|
11128
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full text-sm text-[var(--l-pass-muted)] mb-4", children: [
|
|
11129
|
-
"Total: ",
|
|
11130
|
-
assets.length,
|
|
11131
|
-
" asset",
|
|
11132
|
-
assets.length !== 1 ? "s" : ""
|
|
11133
|
-
] }),
|
|
11134
|
-
isLoading && /* @__PURE__ */ jsxs45("div", { className: "w-full flex items-center justify-center gap-2 p-4", children: [
|
|
11135
|
-
/* @__PURE__ */ jsx58(Loader13, { className: "h-5 w-5 mr-2 animate-spin" }),
|
|
11136
|
-
/* @__PURE__ */ jsx58("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
11137
|
-
] }),
|
|
11138
|
-
!isLoading && assets.length === 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
11139
|
-
/* @__PURE__ */ jsx58(Gem, { className: "w-12 h-12 mb-2" }),
|
|
11140
|
-
/* @__PURE__ */ jsx58("p", { children: "No assets found" })
|
|
11141
|
-
] }),
|
|
11142
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ jsx58("div", { className: "w-full flex flex-col gap-2", children: assets.map((asset, index) => /* @__PURE__ */ jsx58(AssetItem, { address, asset }, `${asset.type}-${asset.address || "native"}-${index}`)) })
|
|
11143
|
-
] })
|
|
11144
|
-
] });
|
|
11145
|
-
}
|
|
11146
|
-
|
|
11147
11284
|
// src/internal/components/PageMap.tsx
|
|
11148
11285
|
var PAGE_MAP = {
|
|
11149
11286
|
["auth" /* AUTH */]: {
|
|
@@ -11202,9 +11339,9 @@ var PAGE_MAP = {
|
|
|
11202
11339
|
},
|
|
11203
11340
|
["assets" /* ASSETS */]: {
|
|
11204
11341
|
key: "assets" /* ASSETS */,
|
|
11205
|
-
title: "
|
|
11342
|
+
title: "Assets Portfolio Menu",
|
|
11206
11343
|
description: "View your token balances and assets",
|
|
11207
|
-
component:
|
|
11344
|
+
component: PortfolioMenu
|
|
11208
11345
|
},
|
|
11209
11346
|
["manage-wallet" /* MANAGE_WALLET */]: {
|
|
11210
11347
|
key: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11253,7 +11390,7 @@ function usePageMapper() {
|
|
|
11253
11390
|
setIsDialogOpen,
|
|
11254
11391
|
setIsDialogClosing
|
|
11255
11392
|
} = useLayoutStore();
|
|
11256
|
-
const closeDialog =
|
|
11393
|
+
const closeDialog = useCallback14(() => {
|
|
11257
11394
|
setIsDialogClosing(true);
|
|
11258
11395
|
setTimeout(() => {
|
|
11259
11396
|
setDialogContent(null);
|
|
@@ -11264,7 +11401,7 @@ function usePageMapper() {
|
|
|
11264
11401
|
setIsDialogOpen(false);
|
|
11265
11402
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11266
11403
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11267
|
-
const openDialog =
|
|
11404
|
+
const openDialog = useCallback14(
|
|
11268
11405
|
(pageItem) => {
|
|
11269
11406
|
const PageContentComponent = pageItem.component;
|
|
11270
11407
|
setDialogTitle(pageItem.title);
|
|
@@ -11274,7 +11411,7 @@ function usePageMapper() {
|
|
|
11274
11411
|
},
|
|
11275
11412
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11276
11413
|
);
|
|
11277
|
-
|
|
11414
|
+
useEffect23(() => {
|
|
11278
11415
|
if (page === null) return closeDialog();
|
|
11279
11416
|
const pageItem = protectedRoutes[page];
|
|
11280
11417
|
if (!pageItem) {
|
|
@@ -11288,7 +11425,7 @@ function usePageMapper() {
|
|
|
11288
11425
|
|
|
11289
11426
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11290
11427
|
init_auth();
|
|
11291
|
-
import { useEffect as
|
|
11428
|
+
import { useEffect as useEffect24 } from "react";
|
|
11292
11429
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11293
11430
|
id: "email-not-connected",
|
|
11294
11431
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11304,13 +11441,13 @@ function useSettingsNotifications() {
|
|
|
11304
11441
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11305
11442
|
const providers = jwtTokenManager2.getProviders();
|
|
11306
11443
|
const hasEmail = providers.includes("email");
|
|
11307
|
-
|
|
11444
|
+
useEffect24(() => {
|
|
11308
11445
|
setSettingsNotifications({
|
|
11309
11446
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11310
11447
|
status: hasServerVault ? "resolved" : "active"
|
|
11311
11448
|
});
|
|
11312
11449
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11313
|
-
|
|
11450
|
+
useEffect24(() => {
|
|
11314
11451
|
setSettingsNotifications({
|
|
11315
11452
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11316
11453
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11319,14 +11456,17 @@ function useSettingsNotifications() {
|
|
|
11319
11456
|
}
|
|
11320
11457
|
|
|
11321
11458
|
// src/internal/hooks/useWalletStatus.ts
|
|
11322
|
-
import { useEffect as
|
|
11459
|
+
import { useEffect as useEffect25 } from "react";
|
|
11323
11460
|
init_auth();
|
|
11324
11461
|
function useWalletStatus() {
|
|
11325
11462
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
11326
11463
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11327
11464
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11328
|
-
const {
|
|
11329
|
-
|
|
11465
|
+
const {
|
|
11466
|
+
config: { current: config },
|
|
11467
|
+
callbacks
|
|
11468
|
+
} = useLumiaPassportConfig();
|
|
11469
|
+
useEffect25(() => {
|
|
11330
11470
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11331
11471
|
const userId = jwtTokenManager2.getUserId();
|
|
11332
11472
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -11348,13 +11488,16 @@ function useWalletStatus() {
|
|
|
11348
11488
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11349
11489
|
import { jsx as jsx60, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
11350
11490
|
function LumiaPassportDialog() {
|
|
11351
|
-
const
|
|
11491
|
+
const {
|
|
11492
|
+
config: { current: config }
|
|
11493
|
+
} = useLumiaPassportConfig();
|
|
11494
|
+
const className = config?.ui?.dialogClassName;
|
|
11352
11495
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11353
11496
|
const page = useLayoutDataStore((st) => st.page);
|
|
11354
11497
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11355
11498
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11356
11499
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11357
|
-
|
|
11500
|
+
useEffect26(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11358
11501
|
usePageMapper();
|
|
11359
11502
|
useAutoConnect();
|
|
11360
11503
|
useCheckVaultStatus();
|
|
@@ -11392,13 +11535,13 @@ function LumiaPassportDialog() {
|
|
|
11392
11535
|
}
|
|
11393
11536
|
|
|
11394
11537
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11395
|
-
import { useEffect as
|
|
11538
|
+
import { useEffect as useEffect28 } from "react";
|
|
11396
11539
|
import { useBalance as useBalance3 } from "wagmi";
|
|
11397
11540
|
init_base();
|
|
11398
11541
|
|
|
11399
11542
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11400
11543
|
import { useMutation as useMutation11 } from "@tanstack/react-query";
|
|
11401
|
-
import { useEffect as
|
|
11544
|
+
import { useEffect as useEffect27 } from "react";
|
|
11402
11545
|
|
|
11403
11546
|
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11404
11547
|
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
@@ -11533,7 +11676,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11533
11676
|
console.error("Lumia Price SSE connection error:", err);
|
|
11534
11677
|
}
|
|
11535
11678
|
});
|
|
11536
|
-
|
|
11679
|
+
useEffect27(() => {
|
|
11537
11680
|
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11538
11681
|
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11539
11682
|
if (!enabled) {
|
|
@@ -11550,7 +11693,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11550
11693
|
|
|
11551
11694
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11552
11695
|
function LumiaPriceSSE() {
|
|
11553
|
-
const address = useLumiaPassportSession().address;
|
|
11696
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
11554
11697
|
const { data: balance } = useBalance3({
|
|
11555
11698
|
address,
|
|
11556
11699
|
chainId: lumiaBeam.id,
|
|
@@ -11564,7 +11707,7 @@ function LumiaPriceSSE() {
|
|
|
11564
11707
|
});
|
|
11565
11708
|
const { lumiaRate, setLumiaRate, setUsdBalance, setBalance } = useLayoutDataStore();
|
|
11566
11709
|
useLumiaPriceSSE(!!address, (update) => setLumiaRate(update.price || 1));
|
|
11567
|
-
|
|
11710
|
+
useEffect28(() => {
|
|
11568
11711
|
const usdBalance = Number(balance?.formatted || 0) * lumiaRate;
|
|
11569
11712
|
setUsdBalance(usdBalance);
|
|
11570
11713
|
setBalance(balance);
|
|
@@ -11573,23 +11716,23 @@ function LumiaPriceSSE() {
|
|
|
11573
11716
|
}
|
|
11574
11717
|
|
|
11575
11718
|
// src/internal/components/TssManager.tsx
|
|
11576
|
-
import
|
|
11719
|
+
import React14, { useCallback as useCallback15 } from "react";
|
|
11577
11720
|
init_auth();
|
|
11578
11721
|
init_clients();
|
|
11579
|
-
var TssManagerWithRef =
|
|
11722
|
+
var TssManagerWithRef = React14.forwardRef((props, ref) => {
|
|
11580
11723
|
const { mpcPin } = props;
|
|
11581
11724
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11582
11725
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11583
11726
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11584
11727
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11585
|
-
const onSessionCreated =
|
|
11728
|
+
const onSessionCreated = useCallback15(
|
|
11586
11729
|
(session, address) => {
|
|
11587
11730
|
setSession(session);
|
|
11588
11731
|
setAddress(address);
|
|
11589
11732
|
},
|
|
11590
11733
|
[setSession, setAddress]
|
|
11591
11734
|
);
|
|
11592
|
-
const createSessionWithKeyshare =
|
|
11735
|
+
const createSessionWithKeyshare = React14.useCallback(
|
|
11593
11736
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11594
11737
|
setStatus("checking key management setup...");
|
|
11595
11738
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11610,50 +11753,46 @@ var TssManagerWithRef = React15.forwardRef((props, ref) => {
|
|
|
11610
11753
|
},
|
|
11611
11754
|
[setStatus, usePaymaster, mpcPin]
|
|
11612
11755
|
);
|
|
11613
|
-
|
|
11756
|
+
React14.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11614
11757
|
return null;
|
|
11615
11758
|
});
|
|
11616
11759
|
|
|
11617
11760
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11761
|
+
init_wallet();
|
|
11618
11762
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
11619
|
-
import { useQueryClient as
|
|
11620
|
-
import
|
|
11763
|
+
import { useQueryClient as useQueryClient10 } from "@tanstack/react-query";
|
|
11764
|
+
import React15, { useCallback as useCallback16, useEffect as useEffect29 } from "react";
|
|
11621
11765
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
11622
|
-
init_wallet();
|
|
11623
11766
|
function WalletConnectHandler() {
|
|
11624
|
-
const qc =
|
|
11625
|
-
const { callbacks
|
|
11767
|
+
const qc = useQueryClient10();
|
|
11768
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
11769
|
+
const { address, isConnected, chain, connector } = useAccount();
|
|
11770
|
+
const { disconnect } = useDisconnect();
|
|
11771
|
+
const { signMessageAsync } = useSignMessage();
|
|
11626
11772
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11627
11773
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11628
|
-
const onError =
|
|
11774
|
+
const onError = useCallback16((error) => {
|
|
11629
11775
|
setLinkError(error);
|
|
11630
11776
|
setIsWalletLinking(false);
|
|
11631
11777
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11632
11778
|
}, []);
|
|
11633
|
-
const onLinkingComplete =
|
|
11634
|
-
setIsWalletLinking(false);
|
|
11779
|
+
const onLinkingComplete = useCallback16(async (success) => {
|
|
11635
11780
|
if (success) {
|
|
11781
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
11782
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
11636
11783
|
try {
|
|
11637
|
-
|
|
11638
|
-
|
|
11639
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11640
|
-
notifyProvidersUpdate?.();
|
|
11641
|
-
} catch {
|
|
11642
|
-
}
|
|
11643
|
-
} catch (e) {
|
|
11644
|
-
console.error("Failed to load providers:", e);
|
|
11784
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11785
|
+
} catch {
|
|
11645
11786
|
}
|
|
11646
11787
|
setProviderType(null);
|
|
11647
11788
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11648
11789
|
}
|
|
11790
|
+
setIsWalletLinking(false);
|
|
11649
11791
|
}, []);
|
|
11650
11792
|
const { openConnectModal } = useConnectModal();
|
|
11651
|
-
const
|
|
11652
|
-
const
|
|
11653
|
-
|
|
11654
|
-
const [hasStartedLinking, setHasStartedLinking] = React16.useState(false);
|
|
11655
|
-
const timeoutRef = React16.useRef();
|
|
11656
|
-
useEffect27(() => {
|
|
11793
|
+
const [hasStartedLinking, setHasStartedLinking] = React15.useState(false);
|
|
11794
|
+
const timeoutRef = React15.useRef();
|
|
11795
|
+
useEffect29(() => {
|
|
11657
11796
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11658
11797
|
setHasStartedLinking(true);
|
|
11659
11798
|
if (isConnected) {
|
|
@@ -11685,7 +11824,7 @@ function WalletConnectHandler() {
|
|
|
11685
11824
|
}
|
|
11686
11825
|
}
|
|
11687
11826
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect]);
|
|
11688
|
-
|
|
11827
|
+
useEffect29(() => {
|
|
11689
11828
|
if (isConnected && address && isWalletLinking && hasStartedLinking) {
|
|
11690
11829
|
handleWalletSign();
|
|
11691
11830
|
}
|
|
@@ -11770,9 +11909,10 @@ var useLumiaPassportSession = create5((set) => ({
|
|
|
11770
11909
|
setWalletReadyStatus: (status) => set({ walletReadyStatus: status })
|
|
11771
11910
|
}));
|
|
11772
11911
|
function LumiaPassportSessionProvider({ children }) {
|
|
11773
|
-
const {
|
|
11774
|
-
|
|
11775
|
-
|
|
11912
|
+
const {
|
|
11913
|
+
config: { current: config }
|
|
11914
|
+
} = useLumiaPassportConfig();
|
|
11915
|
+
return /* @__PURE__ */ jsxs47(Fragment11, { children: [
|
|
11776
11916
|
children,
|
|
11777
11917
|
config.wallet?.enabled && /* @__PURE__ */ jsx61(WalletConnectHandler, {}),
|
|
11778
11918
|
/* @__PURE__ */ jsx61(LumiaPriceSSE, {}),
|
|
@@ -11829,39 +11969,51 @@ function LumiaPassportProvider(props) {
|
|
|
11829
11969
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
11830
11970
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
11831
11971
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
11832
|
-
|
|
11833
|
-
const
|
|
11834
|
-
const
|
|
11835
|
-
const
|
|
11836
|
-
|
|
11837
|
-
|
|
11838
|
-
|
|
11839
|
-
|
|
11840
|
-
|
|
11841
|
-
|
|
11842
|
-
|
|
11843
|
-
|
|
11844
|
-
if (
|
|
11845
|
-
|
|
11846
|
-
|
|
11847
|
-
|
|
11848
|
-
|
|
11849
|
-
if (
|
|
11850
|
-
|
|
11851
|
-
|
|
11852
|
-
|
|
11853
|
-
}
|
|
11854
|
-
if (
|
|
11855
|
-
|
|
11856
|
-
|
|
11857
|
-
|
|
11858
|
-
|
|
11859
|
-
|
|
11972
|
+
useEffect30(() => notifyNoProjetctId(projectId), [projectId]);
|
|
11973
|
+
const config = useRef10({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
11974
|
+
const updateConfig = useCallback17((updates) => {
|
|
11975
|
+
const prev = config.current;
|
|
11976
|
+
const next = { ...prev };
|
|
11977
|
+
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
11978
|
+
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
11979
|
+
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
11980
|
+
if (updates.social) {
|
|
11981
|
+
next.social = { ...next.social, ...updates.social };
|
|
11982
|
+
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
11983
|
+
}
|
|
11984
|
+
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
11985
|
+
if (updates.ui) {
|
|
11986
|
+
next.ui = { ...next.ui, ...updates.ui };
|
|
11987
|
+
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
11988
|
+
}
|
|
11989
|
+
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
11990
|
+
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
11991
|
+
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
11992
|
+
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
11993
|
+
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
11994
|
+
if (updates.services && typeof window !== "undefined") {
|
|
11995
|
+
try {
|
|
11996
|
+
window.__LUMIA_SERVICES__ = next.services;
|
|
11997
|
+
} catch {
|
|
11998
|
+
}
|
|
11999
|
+
}
|
|
12000
|
+
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
12001
|
+
try {
|
|
12002
|
+
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
12003
|
+
} catch {
|
|
12004
|
+
}
|
|
12005
|
+
}
|
|
12006
|
+
config.current = next;
|
|
12007
|
+
}, []);
|
|
12008
|
+
useEffect30(() => {
|
|
12009
|
+
if (typeof window === "undefined" || !projectId) return;
|
|
12010
|
+
const mergedConfig = merge(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12011
|
+
updateConfig(mergedConfig);
|
|
12012
|
+
console.log("[ MERGED PROVIDER STORED CONFIG ]", mergedConfig);
|
|
11860
12013
|
try {
|
|
11861
12014
|
if (typeof window !== "undefined") {
|
|
11862
|
-
window.__LUMIA_SERVICES__ =
|
|
12015
|
+
window.__LUMIA_SERVICES__ = mergedConfig.services;
|
|
11863
12016
|
window.__LUMIA_PROJECT_ID__ = projectId;
|
|
11864
|
-
console.log("[LumiaPassportProvider] Setting window.__LUMIA_SERVICES__:", merged.services);
|
|
11865
12017
|
const resolvedServices = getServiceUrls();
|
|
11866
12018
|
console.log("[LumiaPassportProvider] Resolved services:", resolvedServices);
|
|
11867
12019
|
}
|
|
@@ -11874,60 +12026,12 @@ function LumiaPassportProvider(props) {
|
|
|
11874
12026
|
console.warn("[LumiaPassport] Failed to initialize SDK error tracking:", error);
|
|
11875
12027
|
}
|
|
11876
12028
|
}
|
|
11877
|
-
return merged;
|
|
11878
|
-
});
|
|
11879
|
-
const updateConfig = useCallback16((updates) => {
|
|
11880
|
-
setConfig((prev) => {
|
|
11881
|
-
const next = { ...prev };
|
|
11882
|
-
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
11883
|
-
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
11884
|
-
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
11885
|
-
if (updates.social) {
|
|
11886
|
-
next.social = { ...next.social, ...updates.social };
|
|
11887
|
-
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
11888
|
-
}
|
|
11889
|
-
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
11890
|
-
if (updates.ui) {
|
|
11891
|
-
next.ui = { ...next.ui, ...updates.ui };
|
|
11892
|
-
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
11893
|
-
}
|
|
11894
|
-
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
11895
|
-
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
11896
|
-
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
11897
|
-
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
11898
|
-
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
11899
|
-
if (updates.services && typeof window !== "undefined") {
|
|
11900
|
-
try {
|
|
11901
|
-
window.__LUMIA_SERVICES__ = next.services;
|
|
11902
|
-
console.log("[LumiaPassportProvider] Updated window.__LUMIA_SERVICES__:", next.services);
|
|
11903
|
-
} catch {
|
|
11904
|
-
}
|
|
11905
|
-
}
|
|
11906
|
-
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
11907
|
-
try {
|
|
11908
|
-
;
|
|
11909
|
-
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
11910
|
-
console.log("[LumiaPassportProvider] Updated __LUMIA_PROJECT_ID__:", next.projectId);
|
|
11911
|
-
} catch {
|
|
11912
|
-
}
|
|
11913
|
-
}
|
|
11914
|
-
return next;
|
|
11915
|
-
});
|
|
11916
|
-
}, []);
|
|
11917
|
-
useEffect28(() => {
|
|
11918
|
-
if (typeof window === "undefined") return;
|
|
11919
|
-
if (!config.projectId) return;
|
|
11920
12029
|
const iframeUrl = getIframeUrl();
|
|
11921
|
-
console.log("[LumiaPassport] Initializing secure iframe wallet:", {
|
|
11922
|
-
iframeUrl,
|
|
11923
|
-
projectId: `${projectId.substring(0, 10)}...`,
|
|
11924
|
-
note: "All MPC operations will happen in isolated iframe context"
|
|
11925
|
-
});
|
|
11926
12030
|
try {
|
|
11927
12031
|
const iframeManager = getIframeManager({
|
|
11928
12032
|
iframeUrl,
|
|
11929
12033
|
projectId,
|
|
11930
|
-
debug:
|
|
12034
|
+
debug: mergedConfig.features?.mpcSecurity ?? true,
|
|
11931
12035
|
onWalletReady: (status) => {
|
|
11932
12036
|
callbacks?.onWalletReady?.(status);
|
|
11933
12037
|
setWalletReadyStatus(status);
|
|
@@ -11935,7 +12039,6 @@ function LumiaPassportProvider(props) {
|
|
|
11935
12039
|
});
|
|
11936
12040
|
iframeManager.initialize().then(() => {
|
|
11937
12041
|
setIsIframeReady(true);
|
|
11938
|
-
console.log("[LumiaPassport] \u2705 Secure iframe wallet initialized successfully");
|
|
11939
12042
|
}).catch((error) => {
|
|
11940
12043
|
console.error("[LumiaPassport] \u274C Failed to initialize iframe wallet:", error);
|
|
11941
12044
|
});
|
|
@@ -11946,14 +12049,9 @@ function LumiaPassportProvider(props) {
|
|
|
11946
12049
|
} catch (error) {
|
|
11947
12050
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
11948
12051
|
}
|
|
11949
|
-
}, [
|
|
11950
|
-
|
|
11951
|
-
|
|
11952
|
-
{
|
|
11953
|
-
value: { config, updateConfig, callbacks, providersVersion, notifyProvidersUpdate },
|
|
11954
|
-
children
|
|
11955
|
-
}
|
|
11956
|
-
) });
|
|
12052
|
+
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12053
|
+
const contextValue = useMemo3(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12054
|
+
return /* @__PURE__ */ jsx63(LumiaWagmiProvider, { children: /* @__PURE__ */ jsx63(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
11957
12055
|
}
|
|
11958
12056
|
var useLumiaPassportConfig = () => {
|
|
11959
12057
|
const ctx = useContext(LumiaPassportContext);
|
|
@@ -11962,10 +12060,10 @@ var useLumiaPassportConfig = () => {
|
|
|
11962
12060
|
};
|
|
11963
12061
|
|
|
11964
12062
|
// src/components/ConnectWalletButton.tsx
|
|
11965
|
-
import { Cloud as Cloud3, Laptop as Laptop2, Loader as
|
|
11966
|
-
import { useEffect as
|
|
12063
|
+
import { Cloud as Cloud3, Laptop as Laptop2, Loader as Loader16, Shield as Shield2 } from "lucide-react";
|
|
12064
|
+
import { useEffect as useEffect31, useMemo as useMemo4 } from "react";
|
|
11967
12065
|
init_auth();
|
|
11968
|
-
import { Fragment as
|
|
12066
|
+
import { Fragment as Fragment12, jsx as jsx64, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
11969
12067
|
function getFormattedStatus(label, status, showStatus) {
|
|
11970
12068
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
11971
12069
|
if (!isStatus) return label;
|
|
@@ -11979,15 +12077,14 @@ function ConnectWalletButton(props) {
|
|
|
11979
12077
|
// TODO: provide usePaymaster via config context
|
|
11980
12078
|
usePaymaster = true
|
|
11981
12079
|
} = props;
|
|
11982
|
-
console.log("[ CONNECT BUTTON RENDER ] should be as minimal as possible");
|
|
11983
12080
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11984
12081
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
11985
12082
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
11986
12083
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
11987
|
-
|
|
12084
|
+
useEffect31(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
11988
12085
|
const avatar = jwtTokenManager2.getAvatar();
|
|
11989
12086
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
11990
|
-
const indicators =
|
|
12087
|
+
const indicators = useMemo4(() => {
|
|
11991
12088
|
const userId = jwtTokenManager2.getUserId();
|
|
11992
12089
|
if (!userId) return { server: false, local: false, backup: false };
|
|
11993
12090
|
const server = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
@@ -11997,14 +12094,14 @@ function ConnectWalletButton(props) {
|
|
|
11997
12094
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
11998
12095
|
return /* @__PURE__ */ jsx64("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
11999
12096
|
/** external Buttons can be provided */
|
|
12000
|
-
/* @__PURE__ */ jsx64(
|
|
12097
|
+
/* @__PURE__ */ jsx64(Fragment12, { children: ConnectButton ? /* @__PURE__ */ jsxs48(
|
|
12001
12098
|
ConnectButton,
|
|
12002
12099
|
{
|
|
12003
12100
|
type: "button",
|
|
12004
12101
|
disabled: isConnecting,
|
|
12005
12102
|
onClick: () => setPage("auth" /* AUTH */),
|
|
12006
12103
|
children: [
|
|
12007
|
-
isConnecting && /* @__PURE__ */ jsx64(
|
|
12104
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader16, { className: "w-4 h-4 animate-spin" }),
|
|
12008
12105
|
connectButtonLabel
|
|
12009
12106
|
]
|
|
12010
12107
|
}
|
|
@@ -12022,7 +12119,7 @@ function ConnectWalletButton(props) {
|
|
|
12022
12119
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
12023
12120
|
),
|
|
12024
12121
|
children: [
|
|
12025
|
-
isConnecting && /* @__PURE__ */ jsx64(
|
|
12122
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader16, { className: "w-4 h-4 animate-spin" }),
|
|
12026
12123
|
connectButtonLabel.toUpperCase()
|
|
12027
12124
|
]
|
|
12028
12125
|
}
|
|
@@ -12038,14 +12135,7 @@ function ConnectWalletButton(props) {
|
|
|
12038
12135
|
"rounded-[var(--l-pass-el-bdrs)] p-2 max-w-sm min-w-[256px]"
|
|
12039
12136
|
),
|
|
12040
12137
|
children: [
|
|
12041
|
-
/* @__PURE__ */ jsx64("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx64(
|
|
12042
|
-
"img",
|
|
12043
|
-
{
|
|
12044
|
-
src: avatar,
|
|
12045
|
-
alt: "User avatar",
|
|
12046
|
-
className: "w-full h-full object-cover"
|
|
12047
|
-
}
|
|
12048
|
-
) : /* @__PURE__ */ jsx64(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12138
|
+
/* @__PURE__ */ jsx64("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx64("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx64(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12049
12139
|
/* @__PURE__ */ jsxs48("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
12050
12140
|
/* @__PURE__ */ jsx64("div", { className: "font-semibold text-base truncate max-w-[144px]", children: displayName }),
|
|
12051
12141
|
/* @__PURE__ */ jsx64(UsdBalance, { className: "font-semibold text-base text-[var(--l-pass-fg-muted)]" })
|
|
@@ -12142,13 +12232,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12142
12232
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12143
12233
|
|
|
12144
12234
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12145
|
-
import { useCallback as
|
|
12235
|
+
import { useCallback as useCallback18 } from "react";
|
|
12146
12236
|
function useLumiaPassportOpen() {
|
|
12147
12237
|
const page = useLayoutDataStore((st) => st.page);
|
|
12148
12238
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12149
12239
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12150
|
-
const address = useLumiaPassportSession().address;
|
|
12151
|
-
const open =
|
|
12240
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
12241
|
+
const open = useCallback18(
|
|
12152
12242
|
(passportPage, params) => {
|
|
12153
12243
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12154
12244
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12157,24 +12247,27 @@ function useLumiaPassportOpen() {
|
|
|
12157
12247
|
},
|
|
12158
12248
|
[setPage, setPageParams, address]
|
|
12159
12249
|
);
|
|
12160
|
-
const close =
|
|
12250
|
+
const close = useCallback18(() => setPage(null), [setPage]);
|
|
12161
12251
|
return { open, close, isOpen: page !== null };
|
|
12162
12252
|
}
|
|
12163
12253
|
|
|
12164
12254
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12165
|
-
import { useCallback as
|
|
12255
|
+
import { useCallback as useCallback19, useEffect as useEffect32 } from "react";
|
|
12166
12256
|
function useLumiaPassportColorMode() {
|
|
12167
|
-
const
|
|
12257
|
+
const {
|
|
12258
|
+
config: { current: config }
|
|
12259
|
+
} = useLumiaPassportConfig();
|
|
12260
|
+
const preferedColorMode = config?.preferedColorMode;
|
|
12168
12261
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12169
12262
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12170
|
-
const setColorMode =
|
|
12263
|
+
const setColorMode = useCallback19(
|
|
12171
12264
|
(mode) => {
|
|
12172
12265
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12173
12266
|
handleStoreColorMode(mode);
|
|
12174
12267
|
},
|
|
12175
12268
|
[handleStoreColorMode]
|
|
12176
12269
|
);
|
|
12177
|
-
|
|
12270
|
+
useEffect32(() => {
|
|
12178
12271
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12179
12272
|
if (!targetColorMode && !preferedColorMode) {
|
|
12180
12273
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12216,7 +12309,7 @@ function ThemeToggle(props) {
|
|
|
12216
12309
|
}
|
|
12217
12310
|
|
|
12218
12311
|
// src/context/RainbowKitContext.tsx
|
|
12219
|
-
import
|
|
12312
|
+
import React16 from "react";
|
|
12220
12313
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
12221
12314
|
import { darkTheme, lightTheme, RainbowKitProvider } from "@rainbow-me/rainbowkit";
|
|
12222
12315
|
import { WagmiProvider as WagmiProvider2 } from "wagmi";
|
|
@@ -12366,14 +12459,16 @@ var rainbowTheme = {
|
|
|
12366
12459
|
};
|
|
12367
12460
|
|
|
12368
12461
|
// src/context/RainbowKitContext.tsx
|
|
12369
|
-
import { Fragment as
|
|
12462
|
+
import { Fragment as Fragment13, jsx as jsx66 } from "react/jsx-runtime";
|
|
12370
12463
|
var LumiaRainbowKitProvider = ({ children }) => {
|
|
12371
|
-
const {
|
|
12464
|
+
const {
|
|
12465
|
+
config: { current: config }
|
|
12466
|
+
} = useLumiaPassportConfig();
|
|
12372
12467
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
12373
|
-
const rainbowConfig2 =
|
|
12468
|
+
const rainbowConfig2 = React16.useMemo(() => {
|
|
12374
12469
|
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12375
12470
|
}, [config.wallet?.walletConnectProjectId]);
|
|
12376
|
-
const customTheme =
|
|
12471
|
+
const customTheme = React16.useMemo(
|
|
12377
12472
|
() => isDark ? {
|
|
12378
12473
|
...darkTheme(),
|
|
12379
12474
|
colors: {
|
|
@@ -12395,17 +12490,15 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12395
12490
|
);
|
|
12396
12491
|
const isWalletEnabled = config.wallet?.enabled ?? false;
|
|
12397
12492
|
if (!isWalletEnabled) {
|
|
12398
|
-
return /* @__PURE__ */ jsx66(
|
|
12493
|
+
return /* @__PURE__ */ jsx66(Fragment13, { children });
|
|
12399
12494
|
}
|
|
12400
12495
|
return /* @__PURE__ */ jsx66(WagmiProvider2, { config: rainbowConfig2, children: /* @__PURE__ */ jsx66(RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
12401
12496
|
};
|
|
12402
12497
|
|
|
12403
12498
|
// src/internal/components/UserOpStatus.tsx
|
|
12404
|
-
|
|
12405
|
-
import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle28, Clock as Clock2, Copy as
|
|
12406
|
-
|
|
12407
|
-
// src/internal/components/ui/badge.tsx
|
|
12408
|
-
import { cva as cva2 } from "class-variance-authority";
|
|
12499
|
+
init_base();
|
|
12500
|
+
import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle28, Clock as Clock2, Copy as Copy4, ExternalLink as ExternalLink2, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
12501
|
+
import * as React18 from "react";
|
|
12409
12502
|
|
|
12410
12503
|
// src/internal/utils/cn.ts
|
|
12411
12504
|
import { clsx as clsx3 } from "clsx";
|
|
@@ -12414,34 +12507,10 @@ function cn2(...inputs) {
|
|
|
12414
12507
|
return twMerge2(clsx3(inputs));
|
|
12415
12508
|
}
|
|
12416
12509
|
|
|
12417
|
-
// src/internal/components/ui/badge.tsx
|
|
12418
|
-
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
12419
|
-
var badgeVariants = cva2(
|
|
12420
|
-
"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",
|
|
12421
|
-
{
|
|
12422
|
-
variants: {
|
|
12423
|
-
variant: {
|
|
12424
|
-
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12425
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12426
|
-
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12427
|
-
outline: "text-foreground",
|
|
12428
|
-
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12429
|
-
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12430
|
-
}
|
|
12431
|
-
},
|
|
12432
|
-
defaultVariants: {
|
|
12433
|
-
variant: "default"
|
|
12434
|
-
}
|
|
12435
|
-
}
|
|
12436
|
-
);
|
|
12437
|
-
function Badge({ className, variant, ...props }) {
|
|
12438
|
-
return /* @__PURE__ */ jsx67("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12439
|
-
}
|
|
12440
|
-
|
|
12441
12510
|
// src/internal/components/Address.tsx
|
|
12442
|
-
import
|
|
12443
|
-
import
|
|
12444
|
-
import { jsx as
|
|
12511
|
+
import { Copy as Copy3, ExternalLink } from "lucide-react";
|
|
12512
|
+
import * as React17 from "react";
|
|
12513
|
+
import { jsx as jsx67, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
12445
12514
|
function toExplorerAddressUrl(address, chain) {
|
|
12446
12515
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12447
12516
|
if (!base2) return null;
|
|
@@ -12462,16 +12531,16 @@ var Address = ({
|
|
|
12462
12531
|
}) => {
|
|
12463
12532
|
const addr = address || "";
|
|
12464
12533
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12465
|
-
const [copied, setCopied] =
|
|
12466
|
-
if (!addr) return /* @__PURE__ */
|
|
12534
|
+
const [copied, setCopied] = React17.useState(false);
|
|
12535
|
+
if (!addr) return /* @__PURE__ */ jsx67("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12467
12536
|
return /* @__PURE__ */ jsxs49("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12468
|
-
label && /* @__PURE__ */
|
|
12469
|
-
/* @__PURE__ */
|
|
12470
|
-
showCopy && /* @__PURE__ */
|
|
12537
|
+
label && /* @__PURE__ */ jsx67("span", { className: "text-sm font-medium", children: label }),
|
|
12538
|
+
/* @__PURE__ */ jsx67("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
12539
|
+
showCopy && /* @__PURE__ */ jsx67(
|
|
12471
12540
|
Button,
|
|
12472
12541
|
{
|
|
12473
12542
|
variant: "ghost",
|
|
12474
|
-
size: "
|
|
12543
|
+
size: "small",
|
|
12475
12544
|
title: copied ? "Copied" : "Copy address",
|
|
12476
12545
|
onClick: async () => {
|
|
12477
12546
|
try {
|
|
@@ -12481,10 +12550,10 @@ var Address = ({
|
|
|
12481
12550
|
} catch {
|
|
12482
12551
|
}
|
|
12483
12552
|
},
|
|
12484
|
-
children: /* @__PURE__ */
|
|
12553
|
+
children: /* @__PURE__ */ jsx67(Copy3, { className: "h-4 w-4" })
|
|
12485
12554
|
}
|
|
12486
12555
|
),
|
|
12487
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
12556
|
+
showExplorer && explorer && /* @__PURE__ */ jsx67(
|
|
12488
12557
|
"a",
|
|
12489
12558
|
{
|
|
12490
12559
|
href: explorer,
|
|
@@ -12492,14 +12561,38 @@ var Address = ({
|
|
|
12492
12561
|
rel: "noreferrer noopener",
|
|
12493
12562
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12494
12563
|
title: "Open in explorer",
|
|
12495
|
-
children: /* @__PURE__ */
|
|
12564
|
+
children: /* @__PURE__ */ jsx67(ExternalLink, { className: "h-4 w-4" })
|
|
12496
12565
|
}
|
|
12497
12566
|
)
|
|
12498
12567
|
] });
|
|
12499
12568
|
};
|
|
12500
12569
|
|
|
12570
|
+
// src/internal/components/ui/badge.tsx
|
|
12571
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
12572
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
12573
|
+
var badgeVariants = cva2(
|
|
12574
|
+
"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",
|
|
12575
|
+
{
|
|
12576
|
+
variants: {
|
|
12577
|
+
variant: {
|
|
12578
|
+
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12579
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12580
|
+
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12581
|
+
outline: "text-foreground",
|
|
12582
|
+
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12583
|
+
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12584
|
+
}
|
|
12585
|
+
},
|
|
12586
|
+
defaultVariants: {
|
|
12587
|
+
variant: "default"
|
|
12588
|
+
}
|
|
12589
|
+
}
|
|
12590
|
+
);
|
|
12591
|
+
function Badge({ className, variant, ...props }) {
|
|
12592
|
+
return /* @__PURE__ */ jsx68("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12593
|
+
}
|
|
12594
|
+
|
|
12501
12595
|
// src/internal/components/UserOpStatus.tsx
|
|
12502
|
-
init_base();
|
|
12503
12596
|
import { jsx as jsx69, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
12504
12597
|
var UserOpStatus = ({
|
|
12505
12598
|
userOpHash,
|
|
@@ -12511,20 +12604,20 @@ var UserOpStatus = ({
|
|
|
12511
12604
|
externalState
|
|
12512
12605
|
}) => {
|
|
12513
12606
|
const useExternalState = !!externalState;
|
|
12514
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12515
|
-
const [internalMempool, setInternalMempool] =
|
|
12516
|
-
const [internalError, setInternalError] =
|
|
12517
|
-
const [attempt, setAttempt] =
|
|
12518
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12519
|
-
const [timedOut, setTimedOut] =
|
|
12520
|
-
const [rejected, setRejected] =
|
|
12521
|
-
const intervalRef =
|
|
12522
|
-
const startTimeRef =
|
|
12607
|
+
const [internalReceipt, setInternalReceipt] = React18.useState(null);
|
|
12608
|
+
const [internalMempool, setInternalMempool] = React18.useState(null);
|
|
12609
|
+
const [internalError, setInternalError] = React18.useState(null);
|
|
12610
|
+
const [attempt, setAttempt] = React18.useState(0);
|
|
12611
|
+
const [internalRefreshing, setInternalRefreshing] = React18.useState(false);
|
|
12612
|
+
const [timedOut, setTimedOut] = React18.useState(false);
|
|
12613
|
+
const [rejected, setRejected] = React18.useState(false);
|
|
12614
|
+
const intervalRef = React18.useRef(null);
|
|
12615
|
+
const startTimeRef = React18.useRef(Date.now());
|
|
12523
12616
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12524
12617
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12525
12618
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12526
12619
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12527
|
-
const rpc =
|
|
12620
|
+
const rpc = React18.useCallback(async (method, params) => {
|
|
12528
12621
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12529
12622
|
const res = await fetch(getBundlerUrl(), {
|
|
12530
12623
|
method: "POST",
|
|
@@ -12535,14 +12628,14 @@ var UserOpStatus = ({
|
|
|
12535
12628
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12536
12629
|
return json.result;
|
|
12537
12630
|
}, []);
|
|
12538
|
-
const extractMempoolInfo =
|
|
12631
|
+
const extractMempoolInfo = React18.useCallback((m) => {
|
|
12539
12632
|
if (!m) return null;
|
|
12540
12633
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12541
12634
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12542
12635
|
if (!entryPoint && !sender) return null;
|
|
12543
12636
|
return { entryPoint, sender };
|
|
12544
12637
|
}, []);
|
|
12545
|
-
const tick =
|
|
12638
|
+
const tick = React18.useCallback(async () => {
|
|
12546
12639
|
if (useExternalState) return;
|
|
12547
12640
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12548
12641
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12586,7 +12679,7 @@ var UserOpStatus = ({
|
|
|
12586
12679
|
setAttempt((x) => x + 1);
|
|
12587
12680
|
}
|
|
12588
12681
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12589
|
-
|
|
12682
|
+
React18.useEffect(() => {
|
|
12590
12683
|
if (useExternalState) return;
|
|
12591
12684
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12592
12685
|
startTimeRef.current = Date.now();
|
|
@@ -12598,7 +12691,7 @@ var UserOpStatus = ({
|
|
|
12598
12691
|
setAttempt(0);
|
|
12599
12692
|
setInternalRefreshing(false);
|
|
12600
12693
|
}, [userOpHash, useExternalState]);
|
|
12601
|
-
|
|
12694
|
+
React18.useEffect(() => {
|
|
12602
12695
|
if (useExternalState) {
|
|
12603
12696
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12604
12697
|
return;
|
|
@@ -12664,7 +12757,10 @@ var UserOpStatus = ({
|
|
|
12664
12757
|
return /* @__PURE__ */ jsxs50(
|
|
12665
12758
|
"div",
|
|
12666
12759
|
{
|
|
12667
|
-
className: cn2(
|
|
12760
|
+
className: cn2(
|
|
12761
|
+
"lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]",
|
|
12762
|
+
className
|
|
12763
|
+
),
|
|
12668
12764
|
style: { textAlign: "left", listStyle: "none" },
|
|
12669
12765
|
children: [
|
|
12670
12766
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center justify-between mb-3", children: [
|
|
@@ -12672,7 +12768,7 @@ var UserOpStatus = ({
|
|
|
12672
12768
|
stateBadge(),
|
|
12673
12769
|
/* @__PURE__ */ jsx69("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
12674
12770
|
] }),
|
|
12675
|
-
/* @__PURE__ */ jsxs50(Button, { variant: "ghost", size: "
|
|
12771
|
+
/* @__PURE__ */ jsxs50(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
12676
12772
|
/* @__PURE__ */ jsx69(RefreshCw4, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
12677
12773
|
/* @__PURE__ */ jsx69("span", { className: "text-xs", children: "Refresh" })
|
|
12678
12774
|
] })
|
|
@@ -12684,7 +12780,7 @@ var UserOpStatus = ({
|
|
|
12684
12780
|
Button,
|
|
12685
12781
|
{
|
|
12686
12782
|
variant: "ghost",
|
|
12687
|
-
size: "
|
|
12783
|
+
size: "small",
|
|
12688
12784
|
className: "h-8 w-8 p-0",
|
|
12689
12785
|
onClick: async () => {
|
|
12690
12786
|
try {
|
|
@@ -12692,7 +12788,7 @@ var UserOpStatus = ({
|
|
|
12692
12788
|
} catch {
|
|
12693
12789
|
}
|
|
12694
12790
|
},
|
|
12695
|
-
children: /* @__PURE__ */ jsx69(
|
|
12791
|
+
children: /* @__PURE__ */ jsx69(Copy4, { className: "h-3.5 w-3.5" })
|
|
12696
12792
|
}
|
|
12697
12793
|
)
|
|
12698
12794
|
] }),
|
|
@@ -12703,7 +12799,7 @@ var UserOpStatus = ({
|
|
|
12703
12799
|
Button,
|
|
12704
12800
|
{
|
|
12705
12801
|
variant: "ghost",
|
|
12706
|
-
size: "
|
|
12802
|
+
size: "small",
|
|
12707
12803
|
className: "h-8 w-8 p-0",
|
|
12708
12804
|
onClick: async () => {
|
|
12709
12805
|
try {
|
|
@@ -12711,7 +12807,7 @@ var UserOpStatus = ({
|
|
|
12711
12807
|
} catch {
|
|
12712
12808
|
}
|
|
12713
12809
|
},
|
|
12714
|
-
children: /* @__PURE__ */ jsx69(
|
|
12810
|
+
children: /* @__PURE__ */ jsx69(Copy4, { className: "h-3.5 w-3.5" })
|
|
12715
12811
|
}
|
|
12716
12812
|
),
|
|
12717
12813
|
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx69(
|
|
@@ -12722,7 +12818,7 @@ var UserOpStatus = ({
|
|
|
12722
12818
|
rel: "noreferrer noopener",
|
|
12723
12819
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
12724
12820
|
title: "Open in explorer",
|
|
12725
|
-
children: /* @__PURE__ */ jsx69(
|
|
12821
|
+
children: /* @__PURE__ */ jsx69(ExternalLink2, { className: "h-3.5 w-3.5" })
|
|
12726
12822
|
}
|
|
12727
12823
|
)
|
|
12728
12824
|
] }),
|
|
@@ -12771,8 +12867,8 @@ var UserOpStatus = ({
|
|
|
12771
12867
|
};
|
|
12772
12868
|
|
|
12773
12869
|
// src/internal/components/Hash.tsx
|
|
12774
|
-
import
|
|
12775
|
-
import
|
|
12870
|
+
import { Copy as Copy5, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
12871
|
+
import * as React19 from "react";
|
|
12776
12872
|
import { jsx as jsx70, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
12777
12873
|
function toExplorerUrl(kind, value, chain) {
|
|
12778
12874
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12796,7 +12892,7 @@ var Hash = ({
|
|
|
12796
12892
|
}) => {
|
|
12797
12893
|
const value = hash || "";
|
|
12798
12894
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12799
|
-
const [copied, setCopied] =
|
|
12895
|
+
const [copied, setCopied] = React19.useState(false);
|
|
12800
12896
|
if (!value) return /* @__PURE__ */ jsx70("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12801
12897
|
return /* @__PURE__ */ jsxs51("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12802
12898
|
label && /* @__PURE__ */ jsx70("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12805,7 +12901,7 @@ var Hash = ({
|
|
|
12805
12901
|
Button,
|
|
12806
12902
|
{
|
|
12807
12903
|
variant: "ghost",
|
|
12808
|
-
size: "
|
|
12904
|
+
size: "small",
|
|
12809
12905
|
title: copied ? "Copied" : "Copy",
|
|
12810
12906
|
onClick: async () => {
|
|
12811
12907
|
try {
|
|
@@ -12815,7 +12911,7 @@ var Hash = ({
|
|
|
12815
12911
|
} catch {
|
|
12816
12912
|
}
|
|
12817
12913
|
},
|
|
12818
|
-
children: /* @__PURE__ */ jsx70(
|
|
12914
|
+
children: /* @__PURE__ */ jsx70(Copy5, { className: "h-4 w-4" })
|
|
12819
12915
|
}
|
|
12820
12916
|
),
|
|
12821
12917
|
showExplorer && explorer && /* @__PURE__ */ jsx70(
|
|
@@ -12826,7 +12922,7 @@ var Hash = ({
|
|
|
12826
12922
|
rel: "noreferrer noopener",
|
|
12827
12923
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12828
12924
|
title: "Open in explorer",
|
|
12829
|
-
children: /* @__PURE__ */ jsx70(
|
|
12925
|
+
children: /* @__PURE__ */ jsx70(ExternalLink3, { className: "h-4 w-4" })
|
|
12830
12926
|
}
|
|
12831
12927
|
)
|
|
12832
12928
|
] });
|
|
@@ -12834,13 +12930,13 @@ var Hash = ({
|
|
|
12834
12930
|
|
|
12835
12931
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
12836
12932
|
init_base();
|
|
12837
|
-
import { useEffect as
|
|
12933
|
+
import { useEffect as useEffect34, useState as useState17 } from "react";
|
|
12838
12934
|
import { jsx as jsx71, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
12839
12935
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
12840
|
-
const [transactions, setTransactions] =
|
|
12841
|
-
const [loading, setLoading] =
|
|
12842
|
-
const [error, setError] =
|
|
12843
|
-
|
|
12936
|
+
const [transactions, setTransactions] = useState17([]);
|
|
12937
|
+
const [loading, setLoading] = useState17(true);
|
|
12938
|
+
const [error, setError] = useState17(null);
|
|
12939
|
+
useEffect34(() => {
|
|
12844
12940
|
const fetchTransactions = async () => {
|
|
12845
12941
|
try {
|
|
12846
12942
|
setLoading(true);
|
|
@@ -12866,7 +12962,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12866
12962
|
fetchTransactions();
|
|
12867
12963
|
}
|
|
12868
12964
|
}, [address, itemsCount]);
|
|
12869
|
-
const
|
|
12965
|
+
const formatValue3 = (value) => {
|
|
12870
12966
|
try {
|
|
12871
12967
|
const wei = BigInt(value);
|
|
12872
12968
|
const eth = Number(wei) / 1e18;
|
|
@@ -12936,7 +13032,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12936
13032
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12937
13033
|
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "Value:" }),
|
|
12938
13034
|
/* @__PURE__ */ jsxs52("span", { className: "font-semibold ml-1", children: [
|
|
12939
|
-
|
|
13035
|
+
formatValue3(tx.value),
|
|
12940
13036
|
" LUMIA"
|
|
12941
13037
|
] })
|
|
12942
13038
|
] })
|
|
@@ -12960,7 +13056,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12960
13056
|
|
|
12961
13057
|
// src/hooks/useUserOpStatus.ts
|
|
12962
13058
|
init_base();
|
|
12963
|
-
import * as
|
|
13059
|
+
import * as React21 from "react";
|
|
12964
13060
|
function useUserOpStatus(options = {}) {
|
|
12965
13061
|
const {
|
|
12966
13062
|
userOpHash,
|
|
@@ -12971,16 +13067,16 @@ function useUserOpStatus(options = {}) {
|
|
|
12971
13067
|
onReceipt,
|
|
12972
13068
|
onTxHash
|
|
12973
13069
|
} = options;
|
|
12974
|
-
const [state, setState] =
|
|
12975
|
-
const [receipt, setReceipt] =
|
|
12976
|
-
const [mempool, setMempool] =
|
|
12977
|
-
const [txHash, setTxHash] =
|
|
12978
|
-
const [error, setError] =
|
|
12979
|
-
const [isPolling, setIsPolling] =
|
|
12980
|
-
const intervalRef =
|
|
12981
|
-
const startTimeRef =
|
|
12982
|
-
const prevStateRef =
|
|
12983
|
-
const rpc =
|
|
13070
|
+
const [state, setState] = React21.useState("waiting");
|
|
13071
|
+
const [receipt, setReceipt] = React21.useState(null);
|
|
13072
|
+
const [mempool, setMempool] = React21.useState(null);
|
|
13073
|
+
const [txHash, setTxHash] = React21.useState(null);
|
|
13074
|
+
const [error, setError] = React21.useState(null);
|
|
13075
|
+
const [isPolling, setIsPolling] = React21.useState(false);
|
|
13076
|
+
const intervalRef = React21.useRef(null);
|
|
13077
|
+
const startTimeRef = React21.useRef(Date.now());
|
|
13078
|
+
const prevStateRef = React21.useRef("waiting");
|
|
13079
|
+
const rpc = React21.useCallback(async (method, params) => {
|
|
12984
13080
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12985
13081
|
const res = await fetch(getBundlerUrl(), {
|
|
12986
13082
|
method: "POST",
|
|
@@ -12991,21 +13087,21 @@ function useUserOpStatus(options = {}) {
|
|
|
12991
13087
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12992
13088
|
return json.result;
|
|
12993
13089
|
}, []);
|
|
12994
|
-
const extractMempoolInfo =
|
|
13090
|
+
const extractMempoolInfo = React21.useCallback((m) => {
|
|
12995
13091
|
if (!m) return null;
|
|
12996
13092
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12997
13093
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12998
13094
|
if (!entryPoint && !sender) return null;
|
|
12999
13095
|
return { entryPoint, sender };
|
|
13000
13096
|
}, []);
|
|
13001
|
-
const updateState =
|
|
13097
|
+
const updateState = React21.useCallback((newState) => {
|
|
13002
13098
|
setState(newState);
|
|
13003
13099
|
if (prevStateRef.current !== newState) {
|
|
13004
13100
|
prevStateRef.current = newState;
|
|
13005
13101
|
onStateChange?.(newState);
|
|
13006
13102
|
}
|
|
13007
13103
|
}, [onStateChange]);
|
|
13008
|
-
const tick =
|
|
13104
|
+
const tick = React21.useCallback(async () => {
|
|
13009
13105
|
if (!userOpHash || !enabled) return;
|
|
13010
13106
|
if (receipt) {
|
|
13011
13107
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13078,7 +13174,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13078
13174
|
onTxHash,
|
|
13079
13175
|
onReceipt
|
|
13080
13176
|
]);
|
|
13081
|
-
|
|
13177
|
+
React21.useEffect(() => {
|
|
13082
13178
|
if (!userOpHash || !enabled) return;
|
|
13083
13179
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13084
13180
|
startTimeRef.current = Date.now();
|
|
@@ -13090,7 +13186,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13090
13186
|
setError(null);
|
|
13091
13187
|
setIsPolling(false);
|
|
13092
13188
|
}, [userOpHash, enabled]);
|
|
13093
|
-
|
|
13189
|
+
React21.useEffect(() => {
|
|
13094
13190
|
if (!userOpHash || !enabled) {
|
|
13095
13191
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13096
13192
|
return;
|
|
@@ -13126,7 +13222,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13126
13222
|
}
|
|
13127
13223
|
};
|
|
13128
13224
|
}, [userOpHash, enabled, pollMs]);
|
|
13129
|
-
const refresh =
|
|
13225
|
+
const refresh = React21.useCallback(async () => {
|
|
13130
13226
|
await tick();
|
|
13131
13227
|
}, [tick]);
|
|
13132
13228
|
return {
|
|
@@ -13142,11 +13238,11 @@ function useUserOpStatus(options = {}) {
|
|
|
13142
13238
|
|
|
13143
13239
|
// src/hooks/useLogout.ts
|
|
13144
13240
|
import { logout as coreLogout, jwtTokenManager as jwtTokenManager3 } from "@lumiapassport/core/auth";
|
|
13145
|
-
import { useCallback as
|
|
13241
|
+
import { useCallback as useCallback22 } from "react";
|
|
13146
13242
|
function useLogout() {
|
|
13147
13243
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13148
13244
|
const { callbacks } = useLumiaPassportConfig();
|
|
13149
|
-
const logout2 =
|
|
13245
|
+
const logout2 = useCallback22(async () => {
|
|
13150
13246
|
const prevAddress = address;
|
|
13151
13247
|
let userId = null;
|
|
13152
13248
|
setIsLoading(true);
|
|
@@ -13293,49 +13389,6 @@ function useSmartAccountTransactions() {
|
|
|
13293
13389
|
};
|
|
13294
13390
|
}
|
|
13295
13391
|
|
|
13296
|
-
// src/modules/linkedProfiles.ts
|
|
13297
|
-
import * as React24 from "react";
|
|
13298
|
-
init_auth();
|
|
13299
|
-
init_common();
|
|
13300
|
-
init_types();
|
|
13301
|
-
function useLumiaPassportLinkedProfiles() {
|
|
13302
|
-
const { providersVersion } = useLumiaPassportConfig();
|
|
13303
|
-
const [profiles, setProfiles] = React24.useState([]);
|
|
13304
|
-
const [avatar, setAvatar] = React24.useState(null);
|
|
13305
|
-
const [isLoading, setIsLoading] = React24.useState(false);
|
|
13306
|
-
const [error, setError] = React24.useState(null);
|
|
13307
|
-
const load = React24.useCallback(async () => {
|
|
13308
|
-
setIsLoading(true);
|
|
13309
|
-
setError(null);
|
|
13310
|
-
try {
|
|
13311
|
-
const list = await getLinkedProviders();
|
|
13312
|
-
const enriched = list.map((p) => {
|
|
13313
|
-
const info = getProviderDisplayInfo(p.provider);
|
|
13314
|
-
return {
|
|
13315
|
-
...p,
|
|
13316
|
-
displayName: info.name,
|
|
13317
|
-
icon: info.icon
|
|
13318
|
-
// color: info.color,
|
|
13319
|
-
};
|
|
13320
|
-
});
|
|
13321
|
-
setProfiles(enriched);
|
|
13322
|
-
try {
|
|
13323
|
-
setAvatar(jwtTokenManager2.getAvatar() || null);
|
|
13324
|
-
} catch {
|
|
13325
|
-
setAvatar(null);
|
|
13326
|
-
}
|
|
13327
|
-
} catch (e) {
|
|
13328
|
-
setError(e?.message || "Failed to load linked profiles");
|
|
13329
|
-
} finally {
|
|
13330
|
-
setIsLoading(false);
|
|
13331
|
-
}
|
|
13332
|
-
}, []);
|
|
13333
|
-
React24.useEffect(() => {
|
|
13334
|
-
load();
|
|
13335
|
-
}, [load, providersVersion]);
|
|
13336
|
-
return { profiles, avatar, isLoading, error, refresh: load };
|
|
13337
|
-
}
|
|
13338
|
-
|
|
13339
13392
|
// src/index.ts
|
|
13340
13393
|
init_iframe_manager();
|
|
13341
13394
|
(() => {
|