@lumiapassport/ui-kit 1.12.6 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/iframe/_headers +2 -2
- package/dist/iframe/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +1180 -1125
- 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 +1195 -1133
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4299,26 +4299,27 @@ __export(index_exports, {
|
|
|
4299
4299
|
module.exports = __toCommonJS(index_exports);
|
|
4300
4300
|
|
|
4301
4301
|
// src/styles/built.css
|
|
4302
|
-
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60dvh\\]{max-height:60dvh}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .\\!bg-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:Inter;src:url(@/src/styles/Inter-VariableFont_opsz,wght.ttf) format("truetype-variations");font-weight:100 900;font-stretch:75% 125%;font-style:normal;font-display:swap}.lumia-scope{--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.8));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.6));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.9));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.7));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,system-ui,Inter,sans-serif;font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:calc(100% + 8px);padding-right:4px;overflow-y:auto;max-height:calc(var(--l-pass-maw)*2/3)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:opacity-90::file-selector-button:hover{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4302
|
+
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-\\[var\\(--l-pass-list-bd\\)\\]{border-color:var(--l-pass-list-bd)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:Inter;src:url(@/src/styles/Inter-VariableFont_opsz,wght.ttf) format("truetype-variations");font-weight:100 900;font-stretch:75% 125%;font-style:normal;font-display:swap}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff);margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{appearance:none;-webkit-appearance:none;-moz-appearance:none;border-style:solid;outline:none}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-l,0);overflow-y:auto;max-height:320px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:opacity-90::file-selector-button:hover{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4303
4303
|
|
|
4304
4304
|
// src/context/LumiaPassportContext.tsx
|
|
4305
4305
|
var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
|
|
4306
|
-
var
|
|
4306
|
+
var import_lodash_es2 = require("lodash-es");
|
|
4307
|
+
var import_react47 = require("react");
|
|
4307
4308
|
init_lumiaPassport();
|
|
4308
4309
|
init_iframe_manager();
|
|
4309
4310
|
|
|
4310
4311
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4311
|
-
var
|
|
4312
|
+
var import_react46 = require("react");
|
|
4312
4313
|
var import_zustand5 = require("zustand");
|
|
4313
4314
|
|
|
4314
4315
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4315
4316
|
var import_framer_motion4 = require("framer-motion");
|
|
4316
|
-
var
|
|
4317
|
+
var import_react41 = require("react");
|
|
4317
4318
|
|
|
4318
4319
|
// package.json
|
|
4319
4320
|
var package_default = {
|
|
4320
4321
|
name: "@lumiapassport/ui-kit",
|
|
4321
|
-
version: "1.
|
|
4322
|
+
version: "1.13.1",
|
|
4322
4323
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4323
4324
|
type: "module",
|
|
4324
4325
|
main: "./dist/index.cjs",
|
|
@@ -4470,8 +4471,10 @@ var import_zustand = require("zustand");
|
|
|
4470
4471
|
// src/internal/constants.ts
|
|
4471
4472
|
var import_lucide_react2 = require("lucide-react");
|
|
4472
4473
|
init_assets();
|
|
4473
|
-
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4474
4474
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4475
|
+
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4476
|
+
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4477
|
+
var MAX_LIST_HEIGHT = 320;
|
|
4475
4478
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4476
4479
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4477
4480
|
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
@@ -4573,37 +4576,32 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
4573
4576
|
default: cn(
|
|
4574
4577
|
"border border-transparent",
|
|
4575
4578
|
"bg-[var(--l-pass-primary)] text-[var(--l-pass-fg-inverted)]",
|
|
4576
|
-
"hover:bg-[var(--l-pass-primary-h)]
|
|
4577
|
-
"active:bg-[var(--l-pass-primary-a)]"
|
|
4579
|
+
"hover:bg-[var(--l-pass-primary-h)]",
|
|
4580
|
+
"active:bg-[var(--l-pass-primary-a)]",
|
|
4581
|
+
"disabled:hover:bg-[var(--l-pass-primary)] disabled:active:bg-[var(--l-pass-primary)]"
|
|
4578
4582
|
),
|
|
4579
4583
|
outline: cn(
|
|
4580
4584
|
"border border-[var(--l-pass-bd)] bg-transparent text-[var(--l-pass-fg)]",
|
|
4581
|
-
"hover:text-[var(--l-pass-fg-h)]
|
|
4582
|
-
"active:text-[var(--l-pass-fg-a)]
|
|
4585
|
+
"hover:text-[var(--l-pass-fg-h)]",
|
|
4586
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4587
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4583
4588
|
),
|
|
4584
4589
|
ghost: cn(
|
|
4585
|
-
"border border-transparent",
|
|
4586
|
-
"bg-transparent text-[var(--l-pass-fg)]",
|
|
4590
|
+
"border border-transparent bg-transparent text-[var(--l-pass-fg)]",
|
|
4587
4591
|
"hover:text-[var(--l-pass-fg-h)]",
|
|
4588
|
-
"
|
|
4589
|
-
"active:text-[var(--l-pass-fg
|
|
4590
|
-
)
|
|
4591
|
-
// deprecate
|
|
4592
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
4593
|
-
secondary: "bg-gray-600 text-white hover:bg-gray-500 dark:bg-gray-700 dark:hover:bg-gray-600",
|
|
4594
|
-
link: "bg-transparent !bg-transparent text-blue-600 hover:text-blue-700 underline-offset-4 hover:underline",
|
|
4595
|
-
telegram: "bg-[#0088cc] text-white hover:bg-[#0077bb]",
|
|
4596
|
-
success: "bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600"
|
|
4592
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4593
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4594
|
+
)
|
|
4597
4595
|
},
|
|
4598
4596
|
size: {
|
|
4599
4597
|
small: "h-6 px-2 rounded-[5px]",
|
|
4600
4598
|
medium: "h-8 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4601
4599
|
large: "h-12 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4602
|
-
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4600
|
+
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4603
4601
|
// deprecate
|
|
4604
|
-
default:
|
|
4605
|
-
sm:
|
|
4606
|
-
lg:
|
|
4602
|
+
// default: 'h-10 px-4 py-2',
|
|
4603
|
+
// sm: 'h-9 rounded-xl px-3',
|
|
4604
|
+
// lg: 'h-11 rounded-xl px-8'
|
|
4607
4605
|
}
|
|
4608
4606
|
},
|
|
4609
4607
|
defaultVariants: {
|
|
@@ -4657,10 +4655,8 @@ function Footer() {
|
|
|
4657
4655
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
4658
4656
|
"div",
|
|
4659
4657
|
{
|
|
4660
|
-
|
|
4661
|
-
|
|
4662
|
-
"border-t border-[var(--l-pass-bd)]"
|
|
4663
|
-
),
|
|
4658
|
+
style: { borderTop: "1px solid var(--l-pass-bd)" },
|
|
4659
|
+
className: cn("w-full flex flex-col gap-1 items-center p-[var(--l-pass-pd)] pb-5"),
|
|
4664
4660
|
children: [
|
|
4665
4661
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "w-full flex items-center justify-between", children: [
|
|
4666
4662
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
@@ -4699,12 +4695,12 @@ function Footer() {
|
|
|
4699
4695
|
disabled: isDisconnecting,
|
|
4700
4696
|
children: [
|
|
4701
4697
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: "Log Out" }),
|
|
4702
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.LogOut, { className: "w-4 h-4" })
|
|
4698
|
+
isDisconnecting ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react3.LogOut, { className: "w-4 h-4" })
|
|
4703
4699
|
]
|
|
4704
4700
|
}
|
|
4705
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-
|
|
4701
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4706
4702
|
] }),
|
|
4707
|
-
!!address && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-
|
|
4703
|
+
!!address && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4708
4704
|
]
|
|
4709
4705
|
}
|
|
4710
4706
|
);
|
|
@@ -4793,7 +4789,9 @@ function formatAddress(addr) {
|
|
|
4793
4789
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
4794
4790
|
}
|
|
4795
4791
|
function Header() {
|
|
4796
|
-
const {
|
|
4792
|
+
const {
|
|
4793
|
+
config: { current: config }
|
|
4794
|
+
} = useLumiaPassportConfig();
|
|
4797
4795
|
const address = useLumiaPassportSession((st) => st.address);
|
|
4798
4796
|
const [copied, setCopied] = (0, import_react2.useState)(false);
|
|
4799
4797
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
@@ -4807,91 +4805,107 @@ function Header() {
|
|
|
4807
4805
|
const isKycVerified = !isUserProfileLoading && userProfile?.kycDetails?.kycStatus === "verified" || true;
|
|
4808
4806
|
const { name, logo, logoDataUri } = lumiaBeam;
|
|
4809
4807
|
const isNetworkIcon = !!logoDataUri || logo === "lumia";
|
|
4810
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4814
|
-
|
|
4815
|
-
|
|
4816
|
-
|
|
4817
|
-
className: "flex-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
)
|
|
4836
|
-
] }),
|
|
4837
|
-
isUserProfileLoading && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.Loader, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" })
|
|
4838
|
-
] })
|
|
4839
|
-
]
|
|
4840
|
-
}
|
|
4841
|
-
)
|
|
4842
|
-
] }),
|
|
4843
|
-
!!address && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
4844
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "block text-xs text-[var(--l-pass-fg-muted)]", children: formatAddress(address) }),
|
|
4845
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] justify-between", children: [
|
|
4846
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4847
|
-
Button,
|
|
4848
|
-
{
|
|
4849
|
-
size: "small",
|
|
4850
|
-
variant: "ghost",
|
|
4851
|
-
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4852
|
-
onClick: async () => {
|
|
4853
|
-
await navigator.clipboard.writeText(address);
|
|
4854
|
-
setCopied(true);
|
|
4855
|
-
setTimeout(() => setCopied(false), 1500);
|
|
4856
|
-
},
|
|
4857
|
-
children: [
|
|
4858
|
-
copied ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.Check, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.Copy, { className: "w-4 h-4" }),
|
|
4859
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: "COPY" })
|
|
4860
|
-
]
|
|
4861
|
-
}
|
|
4862
|
-
),
|
|
4863
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4864
|
-
Button,
|
|
4865
|
-
{
|
|
4866
|
-
size: "small",
|
|
4867
|
-
variant: "ghost",
|
|
4868
|
-
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4869
|
-
onClick: () => {
|
|
4870
|
-
if (!address) return;
|
|
4871
|
-
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
4872
|
-
},
|
|
4873
|
-
children: [
|
|
4874
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4875
|
-
"div",
|
|
4876
|
-
{
|
|
4877
|
-
className: cn(
|
|
4878
|
-
"flex-none w-4 h-4 rounded-full flex items-center justify-center overflow-hidden",
|
|
4879
|
-
isNetworkIcon ? "bg-transparent" : "bg-[var(--l-pass-primary)]"
|
|
4808
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4809
|
+
"div",
|
|
4810
|
+
{
|
|
4811
|
+
style: { borderBottom: "1px solid var(--l-pass-bd)" },
|
|
4812
|
+
className: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)] pt-5",
|
|
4813
|
+
children: [
|
|
4814
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
4815
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex-none w-12 h-12 flex items-center justify-center", children: avatar ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: avatar, alt: displayName, className: "w-full h-full object-cover rounded-full" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LumiaIcon, { width: 48, height: 48 }) }),
|
|
4816
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4817
|
+
"div",
|
|
4818
|
+
{
|
|
4819
|
+
style: { width: "calc(100% - 48px - var(--l-pass-gap))" },
|
|
4820
|
+
className: "flex-1 flex flex-col justify-center gap-1",
|
|
4821
|
+
children: [
|
|
4822
|
+
!!address && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(UsdBalance, { className: "text-lg leading-5 font-bold" }),
|
|
4823
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-full flex items-center gap-2", children: [
|
|
4824
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
4825
|
+
"span",
|
|
4826
|
+
{
|
|
4827
|
+
className: cn(
|
|
4828
|
+
"max-w-full font-mono text-xs leading-4 font-medium text-[var(--l-pass-fg-muted)",
|
|
4829
|
+
"text-ellipsis overflow-hidden whitespace-nowrap"
|
|
4830
|
+
),
|
|
4831
|
+
children: displayName || config.ui.title || "LumiaPassport"
|
|
4832
|
+
}
|
|
4880
4833
|
),
|
|
4881
|
-
children: [
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4834
|
+
isKycVerified && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "group relative flex flex-shrink-0", children: [
|
|
4835
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.CheckCircle2, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }),
|
|
4836
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
4837
|
+
"div",
|
|
4838
|
+
{
|
|
4839
|
+
className: cn(
|
|
4840
|
+
"transition-opacity pointer-events-none whitespace-nowrap z-50",
|
|
4841
|
+
"absolute top-1/2 right-full -translate-y-1/2 -translate-x-[var(--l-pass-gap)]",
|
|
4842
|
+
"px-2 py-1 bg-[var(--l-pass-bg-success)] text-[var(--l-pass-fg)] text-xs rounded-full",
|
|
4843
|
+
"opacity-0 group-hover:opacity-100"
|
|
4844
|
+
),
|
|
4845
|
+
children: "KYC Verified"
|
|
4846
|
+
}
|
|
4847
|
+
)
|
|
4848
|
+
] }),
|
|
4849
|
+
isUserProfileLoading && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.Loader, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" })
|
|
4850
|
+
] })
|
|
4851
|
+
]
|
|
4852
|
+
}
|
|
4853
|
+
)
|
|
4854
|
+
] }),
|
|
4855
|
+
!!address && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
4856
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "block font-mono text-[10px] break-all leading-6 text-[var(--l-pass-fg-muted)]", children: formatAddress(address) }),
|
|
4857
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] justify-between", children: [
|
|
4858
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4859
|
+
Button,
|
|
4860
|
+
{
|
|
4861
|
+
size: "small",
|
|
4862
|
+
variant: "ghost",
|
|
4863
|
+
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4864
|
+
onClick: async () => {
|
|
4865
|
+
await navigator.clipboard.writeText(address);
|
|
4866
|
+
setCopied(true);
|
|
4867
|
+
setTimeout(() => setCopied(false), 1500);
|
|
4868
|
+
},
|
|
4869
|
+
children: [
|
|
4870
|
+
copied ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.Check, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react4.Copy, { className: "w-4 h-4" }),
|
|
4871
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: "COPY" })
|
|
4872
|
+
]
|
|
4873
|
+
}
|
|
4874
|
+
),
|
|
4875
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4876
|
+
Button,
|
|
4877
|
+
{
|
|
4878
|
+
size: "small",
|
|
4879
|
+
variant: "ghost",
|
|
4880
|
+
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4881
|
+
onClick: () => {
|
|
4882
|
+
if (!address) return;
|
|
4883
|
+
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
4884
|
+
},
|
|
4885
|
+
children: [
|
|
4886
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
4887
|
+
"div",
|
|
4888
|
+
{
|
|
4889
|
+
className: cn(
|
|
4890
|
+
"flex-none w-4 h-4 rounded-full flex items-center justify-center overflow-hidden",
|
|
4891
|
+
isNetworkIcon ? "bg-transparent" : "bg-[var(--l-pass-primary)]"
|
|
4892
|
+
),
|
|
4893
|
+
children: [
|
|
4894
|
+
logoDataUri && logo !== "lumia" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: logoDataUri, alt: "Chain Logo", className: "w-4 h-4 object-cover" }),
|
|
4895
|
+
!logoDataUri && logo === "lumia" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LumiaLogo, { size: 16 }),
|
|
4896
|
+
!logoDataUri && logo !== "lumia" && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[var(--l-pass-fg-inverted)] text-xs font-bold", children: (name || "L").charAt(0) })
|
|
4897
|
+
]
|
|
4898
|
+
}
|
|
4899
|
+
),
|
|
4900
|
+
"EXPLORER"
|
|
4901
|
+
]
|
|
4902
|
+
}
|
|
4903
|
+
)
|
|
4904
|
+
] })
|
|
4905
|
+
] })
|
|
4906
|
+
]
|
|
4907
|
+
}
|
|
4908
|
+
);
|
|
4895
4909
|
}
|
|
4896
4910
|
{
|
|
4897
4911
|
}
|
|
@@ -4967,14 +4981,16 @@ var DialogContent = React2.forwardRef(
|
|
|
4967
4981
|
DialogPrimitive.Content,
|
|
4968
4982
|
{
|
|
4969
4983
|
ref,
|
|
4970
|
-
style: !!className ? void 0 : {
|
|
4984
|
+
style: !!className ? void 0 : {
|
|
4985
|
+
backgroundColor: "var(--l-pass-bg)",
|
|
4986
|
+
border: "1px solid var(--l-pass-bd)",
|
|
4987
|
+
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
4988
|
+
},
|
|
4971
4989
|
className: cn(
|
|
4972
4990
|
"relative pointer-events-auto w-full",
|
|
4973
4991
|
"text-[var(--l-pass-fg)]",
|
|
4974
4992
|
"rounded-[var(--l-pass-bdrs)] overflow-hidden",
|
|
4975
4993
|
"max-w-[var(--l-pass-maw)] max-h-[80vh] p-0 gap-0",
|
|
4976
|
-
// this gives complete dialog bg & border control by external className
|
|
4977
|
-
!className && "bg-[var(--l-pass-bg)] border border-[var(--l-pass-bd)]",
|
|
4978
4994
|
className
|
|
4979
4995
|
),
|
|
4980
4996
|
...props,
|
|
@@ -5051,7 +5067,10 @@ var VisuallyHidden = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime9.j
|
|
|
5051
5067
|
// src/internal/hooks/useAutoConnect.ts
|
|
5052
5068
|
var import_react3 = require("react");
|
|
5053
5069
|
function useAutoConnect() {
|
|
5054
|
-
const {
|
|
5070
|
+
const {
|
|
5071
|
+
config: { current: config },
|
|
5072
|
+
callbacks
|
|
5073
|
+
} = useLumiaPassportConfig();
|
|
5055
5074
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5056
5075
|
const {
|
|
5057
5076
|
session,
|
|
@@ -5277,7 +5296,7 @@ function useCheckVaultStatus() {
|
|
|
5277
5296
|
}
|
|
5278
5297
|
|
|
5279
5298
|
// src/internal/hooks/usePageMapper.tsx
|
|
5280
|
-
var
|
|
5299
|
+
var import_react38 = require("react");
|
|
5281
5300
|
|
|
5282
5301
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5283
5302
|
var import_framer_motion = require("framer-motion");
|
|
@@ -5543,7 +5562,10 @@ var import_lucide_react8 = require("lucide-react");
|
|
|
5543
5562
|
init_projectId();
|
|
5544
5563
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
5545
5564
|
function Email() {
|
|
5546
|
-
const {
|
|
5565
|
+
const {
|
|
5566
|
+
config: { current: config },
|
|
5567
|
+
callbacks
|
|
5568
|
+
} = useLumiaPassportConfig();
|
|
5547
5569
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5548
5570
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
5549
5571
|
const { email, codeSendError, setEmail, setCodeSendError, setExpiresIn, setStep } = useAuthStore();
|
|
@@ -5697,7 +5719,10 @@ var normalizeLoginResponse = async (rawLoginResponse, providerKey, userData) =>
|
|
|
5697
5719
|
};
|
|
5698
5720
|
function Social(props) {
|
|
5699
5721
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
5700
|
-
const {
|
|
5722
|
+
const {
|
|
5723
|
+
config: { current: config },
|
|
5724
|
+
callbacks
|
|
5725
|
+
} = useLumiaPassportConfig();
|
|
5701
5726
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5702
5727
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5703
5728
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
@@ -6110,7 +6135,9 @@ function getSignInEnabledMethods(params) {
|
|
|
6110
6135
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
6111
6136
|
function SignInStep(props) {
|
|
6112
6137
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6113
|
-
const {
|
|
6138
|
+
const {
|
|
6139
|
+
config: { current: config }
|
|
6140
|
+
} = useLumiaPassportConfig();
|
|
6114
6141
|
const alert2 = useAuthStore((st) => st.alert);
|
|
6115
6142
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6116
6143
|
const enabledWoPasskey = getSignInEnabledMethods({ order: config.ui.authOrder, config, exclude: ["passkey"] });
|
|
@@ -6234,7 +6261,7 @@ function Expandable(props) {
|
|
|
6234
6261
|
{
|
|
6235
6262
|
...divProps,
|
|
6236
6263
|
ref: expandableRef,
|
|
6237
|
-
className: cn("w-full overflow-hidden", className),
|
|
6264
|
+
className: cn("w-full overflow-y-hidden", className),
|
|
6238
6265
|
style: { height: "var(--ifo-basic-expandable-h)", transition: "height 375ms ease" },
|
|
6239
6266
|
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: cn("w-full", contentClassName), ref: contentRef, style: minHeight ? { minHeight } : void 0, children })
|
|
6240
6267
|
}
|
|
@@ -6255,9 +6282,12 @@ function normalizeWebAuthnError(err) {
|
|
|
6255
6282
|
}
|
|
6256
6283
|
function PassKeyStep(props) {
|
|
6257
6284
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6258
|
-
const {
|
|
6259
|
-
|
|
6285
|
+
const {
|
|
6286
|
+
config: { current: config },
|
|
6287
|
+
callbacks
|
|
6288
|
+
} = useLumiaPassportConfig();
|
|
6260
6289
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6290
|
+
const recoveryUserId = useLumiaPassportSession((st) => st.recoveryUserId);
|
|
6261
6291
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6262
6292
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6263
6293
|
const autoCloseOnSuccess = !recoveryUserId;
|
|
@@ -6465,7 +6495,10 @@ function PassKeyStep(props) {
|
|
|
6465
6495
|
var import_react12 = require("react");
|
|
6466
6496
|
init_auth();
|
|
6467
6497
|
function useAuthMenuHandlers() {
|
|
6468
|
-
const {
|
|
6498
|
+
const {
|
|
6499
|
+
config: { current: config },
|
|
6500
|
+
callbacks
|
|
6501
|
+
} = useLumiaPassportConfig();
|
|
6469
6502
|
const pendingLoginResponseRef = (0, import_react12.useRef)(null);
|
|
6470
6503
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6471
6504
|
const [telegramCleanup, setTelegramCleanup] = (0, import_react12.useState)(null);
|
|
@@ -6787,7 +6820,7 @@ var VerificationCodeInput = (props) => {
|
|
|
6787
6820
|
className: cn(
|
|
6788
6821
|
isLoading ? "cursor-default opacity-50" : "cursor-text",
|
|
6789
6822
|
"text-[var(--l-pass-fg)]",
|
|
6790
|
-
"w-10 h-12 text-lg text-center font-semibold rounded-[var(--l-pass-el-bdrs)]
|
|
6823
|
+
"w-10 h-12 text-lg text-center font-semibold rounded-[var(--l-pass-el-bdrs)]",
|
|
6791
6824
|
"bg-[var(--l-pass-secondary)] focus:bg-[var(--l-pass-secondary-a)] hover:bg-[var(--l-pass-secondary-h)]",
|
|
6792
6825
|
"focus:outline-none focus:bg-[var(--l-pass-secondary-a)] focus:inset-ring-2 focus:inset-ring-[var(--l-pass-bd-intense)]"
|
|
6793
6826
|
)
|
|
@@ -6990,10 +7023,10 @@ function VerifyStep(props) {
|
|
|
6990
7023
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
6991
7024
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
6992
7025
|
var AuthMenu = () => {
|
|
7026
|
+
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
6993
7027
|
const page = useLayoutDataStore((st) => st.page);
|
|
6994
7028
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
6995
7029
|
(0, import_react15.useEffect)(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
6996
|
-
const { isIframeReady } = useLumiaPassportSession();
|
|
6997
7030
|
const {
|
|
6998
7031
|
step,
|
|
6999
7032
|
setStep,
|
|
@@ -7783,7 +7816,7 @@ var useSelectables = () => {
|
|
|
7783
7816
|
// src/internal/components/BuyMenu/ByuMenu.tsx
|
|
7784
7817
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
7785
7818
|
function BuyMenu() {
|
|
7786
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
7819
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
7787
7820
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7788
7821
|
const control = useSelectables();
|
|
7789
7822
|
const { rampProvider, setrRampProvider } = control;
|
|
@@ -7870,7 +7903,7 @@ function Highlight(props) {
|
|
|
7870
7903
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7871
7904
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
7872
7905
|
function KeyshareBackupMenu() {
|
|
7873
|
-
const
|
|
7906
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
7874
7907
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7875
7908
|
const userId = session?.mpcUserId || "";
|
|
7876
7909
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
@@ -8166,7 +8199,10 @@ var import_react22 = __toESM(require("react"), 1);
|
|
|
8166
8199
|
init_vaultClient();
|
|
8167
8200
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
8168
8201
|
var KeyshareRestoreMenu = () => {
|
|
8169
|
-
const {
|
|
8202
|
+
const {
|
|
8203
|
+
config: { current: config },
|
|
8204
|
+
callbacks
|
|
8205
|
+
} = useLumiaPassportConfig();
|
|
8170
8206
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8171
8207
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8172
8208
|
(0, import_react22.useEffect)(() => setIsDialogForced(true), []);
|
|
@@ -8742,13 +8778,15 @@ var SumsubIframeManager = class {
|
|
|
8742
8778
|
|
|
8743
8779
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8744
8780
|
function useSumsubIframe({ iframeUrl }) {
|
|
8781
|
+
const {
|
|
8782
|
+
config: { current: config }
|
|
8783
|
+
} = useLumiaPassportConfig();
|
|
8745
8784
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8746
8785
|
const iframeRef = (0, import_react23.useRef)(null);
|
|
8747
8786
|
const [isLoading, setIsLoading] = (0, import_react23.useState)(true);
|
|
8748
8787
|
const [error, setError] = (0, import_react23.useState)(null);
|
|
8749
8788
|
const [height, setHeight] = (0, import_react23.useState)(0);
|
|
8750
8789
|
const [status, setStatus] = (0, import_react23.useState)("");
|
|
8751
|
-
const { config } = useLumiaPassportConfig();
|
|
8752
8790
|
const levelName = config.kyc?.options?.levelName;
|
|
8753
8791
|
(0, import_react23.useEffect)(() => {
|
|
8754
8792
|
setError(null);
|
|
@@ -8796,7 +8834,9 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8796
8834
|
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
8797
8835
|
var MAX_IFRAME_HEIGHT = 650;
|
|
8798
8836
|
var SumsubIframe = () => {
|
|
8799
|
-
const {
|
|
8837
|
+
const {
|
|
8838
|
+
config: { current: config }
|
|
8839
|
+
} = useLumiaPassportConfig();
|
|
8800
8840
|
const iframeUrl = `${config.services.iframeUrl}/kyc/sumsub.html`;
|
|
8801
8841
|
const { iframeRef, isLoading, error, height, status } = useSumsubIframe({ iframeUrl });
|
|
8802
8842
|
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
|
|
@@ -8827,7 +8867,9 @@ var SumsubIframe = () => {
|
|
|
8827
8867
|
// src/internal/components/KYC/KycContent.tsx
|
|
8828
8868
|
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
8829
8869
|
var KycContent = () => {
|
|
8830
|
-
const {
|
|
8870
|
+
const {
|
|
8871
|
+
config: { current: config }
|
|
8872
|
+
} = useLumiaPassportConfig();
|
|
8831
8873
|
const provider = config.kyc?.provider;
|
|
8832
8874
|
switch (provider) {
|
|
8833
8875
|
case "sumsub":
|
|
@@ -8860,7 +8902,9 @@ var import_framer_motion2 = require("framer-motion");
|
|
|
8860
8902
|
var import_lucide_react23 = require("lucide-react");
|
|
8861
8903
|
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
8862
8904
|
function BackupWarning() {
|
|
8863
|
-
const {
|
|
8905
|
+
const {
|
|
8906
|
+
config: { current: config }
|
|
8907
|
+
} = useLumiaPassportConfig();
|
|
8864
8908
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8865
8909
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8866
8910
|
const isShown = config.warnings?.backupWarning && !hasServerVault;
|
|
@@ -8931,15 +8975,56 @@ function MainMenu() {
|
|
|
8931
8975
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
8932
8976
|
var import_lodash_es = require("lodash-es");
|
|
8933
8977
|
var import_lucide_react28 = require("lucide-react");
|
|
8934
|
-
var
|
|
8978
|
+
var import_react28 = require("react");
|
|
8979
|
+
|
|
8980
|
+
// src/modules/linkedProfiles.ts
|
|
8981
|
+
var import_react_query9 = require("@tanstack/react-query");
|
|
8982
|
+
var import_react25 = require("react");
|
|
8983
|
+
init_auth();
|
|
8984
|
+
init_common();
|
|
8985
|
+
init_types();
|
|
8986
|
+
var LINKED_PROFILES_QUERY_KEY = "lumia-passport-linked-profiles-query";
|
|
8987
|
+
async function getLinkProfilesData() {
|
|
8988
|
+
const list = await getLinkedProviders();
|
|
8989
|
+
const loadedProfiles = list.map((p) => {
|
|
8990
|
+
const info = getProviderDisplayInfo(p.provider);
|
|
8991
|
+
return { ...p, displayName: info.name, icon: info.icon };
|
|
8992
|
+
});
|
|
8993
|
+
let avatar = null;
|
|
8994
|
+
try {
|
|
8995
|
+
avatar = import_auth3.jwtTokenManager.getAvatar() || null;
|
|
8996
|
+
} catch {
|
|
8997
|
+
avatar = null;
|
|
8998
|
+
}
|
|
8999
|
+
return { profiles: loadedProfiles, avatar };
|
|
9000
|
+
}
|
|
9001
|
+
function useLumiaPassportLinkedProfiles() {
|
|
9002
|
+
const qc = (0, import_react_query9.useQueryClient)();
|
|
9003
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9004
|
+
const {
|
|
9005
|
+
data,
|
|
9006
|
+
isFetching: isLoading,
|
|
9007
|
+
error
|
|
9008
|
+
} = (0, import_react_query9.useQuery)({
|
|
9009
|
+
retry: false,
|
|
9010
|
+
enabled: !!address,
|
|
9011
|
+
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
9012
|
+
queryFn: getLinkProfilesData
|
|
9013
|
+
});
|
|
9014
|
+
const { profiles = [], avatar = null } = data || {};
|
|
9015
|
+
const refresh = (0, import_react25.useCallback)(async () => {
|
|
9016
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9017
|
+
}, [qc, address]);
|
|
9018
|
+
return { profiles, avatar, isLoading, error, refresh };
|
|
9019
|
+
}
|
|
8935
9020
|
|
|
8936
9021
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
8937
|
-
var
|
|
9022
|
+
var import_react_query14 = require("@tanstack/react-query");
|
|
8938
9023
|
init_passkey2();
|
|
8939
9024
|
|
|
8940
9025
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8941
9026
|
init_lumiaPassport();
|
|
8942
|
-
var
|
|
9027
|
+
var import_react_query10 = require("@tanstack/react-query");
|
|
8943
9028
|
var import_lucide_react25 = require("lucide-react");
|
|
8944
9029
|
init_projectId();
|
|
8945
9030
|
|
|
@@ -8973,11 +9058,14 @@ var useManageWalletStore = (0, import_zustand4.create)((set) => ({
|
|
|
8973
9058
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8974
9059
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
8975
9060
|
function EmailForm() {
|
|
8976
|
-
const {
|
|
9061
|
+
const {
|
|
9062
|
+
config: { current: config },
|
|
9063
|
+
callbacks
|
|
9064
|
+
} = useLumiaPassportConfig();
|
|
8977
9065
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
8978
9066
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
8979
9067
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
8980
|
-
const { mutate: onSendVerificationCode } = (0,
|
|
9068
|
+
const { mutate: onSendVerificationCode } = (0, import_react_query10.useMutation)({
|
|
8981
9069
|
mutationFn: async () => {
|
|
8982
9070
|
if (!email) return;
|
|
8983
9071
|
setIsLoading(true);
|
|
@@ -9054,25 +9142,26 @@ function EmailForm() {
|
|
|
9054
9142
|
}
|
|
9055
9143
|
|
|
9056
9144
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9057
|
-
var
|
|
9145
|
+
var import_react_query11 = require("@tanstack/react-query");
|
|
9058
9146
|
init_common();
|
|
9059
9147
|
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9060
9148
|
function useProvidersList() {
|
|
9061
|
-
const
|
|
9062
|
-
|
|
9149
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9150
|
+
const page = useLayoutDataStore((st) => st.page);
|
|
9151
|
+
return (0, import_react_query11.useQuery)({
|
|
9063
9152
|
retry: false,
|
|
9064
|
-
enabled: !!
|
|
9065
|
-
queryKey: [PROVIDERS_QUERY_KEY,
|
|
9066
|
-
queryFn: getLinkedProviders
|
|
9153
|
+
enabled: !!address && page === "manage-wallet" /* MANAGE_WALLET */,
|
|
9154
|
+
queryKey: [PROVIDERS_QUERY_KEY, address],
|
|
9155
|
+
queryFn: async () => getLinkedProviders()
|
|
9067
9156
|
});
|
|
9068
9157
|
}
|
|
9069
9158
|
|
|
9070
9159
|
// src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
|
|
9071
|
-
var
|
|
9160
|
+
var import_react_query12 = require("@tanstack/react-query");
|
|
9072
9161
|
init_email();
|
|
9073
9162
|
function useSendVerificationCode() {
|
|
9074
9163
|
const { setVerificationError, setLinkIsLoading, setEmailCodeSentError, setEmailCodeExpiresIn } = useManageWalletStore();
|
|
9075
|
-
return (0,
|
|
9164
|
+
return (0, import_react_query12.useMutation)({
|
|
9076
9165
|
mutationFn: async (email) => {
|
|
9077
9166
|
if (!email) {
|
|
9078
9167
|
throw new Error("Email is required");
|
|
@@ -9095,12 +9184,12 @@ function useSendVerificationCode() {
|
|
|
9095
9184
|
}
|
|
9096
9185
|
|
|
9097
9186
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9098
|
-
var
|
|
9187
|
+
var import_react_query13 = require("@tanstack/react-query");
|
|
9099
9188
|
init_email();
|
|
9100
9189
|
function useVerifyCode() {
|
|
9101
|
-
const { callbacks
|
|
9102
|
-
const qc = (0,
|
|
9103
|
-
const
|
|
9190
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9191
|
+
const qc = (0, import_react_query13.useQueryClient)();
|
|
9192
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9104
9193
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9105
9194
|
const {
|
|
9106
9195
|
email,
|
|
@@ -9113,7 +9202,7 @@ function useVerifyCode() {
|
|
|
9113
9202
|
setVerificationError,
|
|
9114
9203
|
setEmailCodeSentError
|
|
9115
9204
|
} = useManageWalletStore();
|
|
9116
|
-
return (0,
|
|
9205
|
+
return (0, import_react_query13.useMutation)({
|
|
9117
9206
|
mutationFn: async (codeToVerify) => {
|
|
9118
9207
|
const code = codeToVerify ?? emailCode;
|
|
9119
9208
|
if (!code) {
|
|
@@ -9127,7 +9216,8 @@ function useVerifyCode() {
|
|
|
9127
9216
|
return await verifyEmailLinkCode(email, code);
|
|
9128
9217
|
},
|
|
9129
9218
|
onSuccess: async () => {
|
|
9130
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9219
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9220
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9131
9221
|
setProviderType(null);
|
|
9132
9222
|
setEmail("");
|
|
9133
9223
|
setEmailCode("");
|
|
@@ -9135,8 +9225,7 @@ function useVerifyCode() {
|
|
|
9135
9225
|
setEmailCodeSentError("");
|
|
9136
9226
|
setEmailStep("input");
|
|
9137
9227
|
try {
|
|
9138
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9139
|
-
notifyProvidersUpdate?.();
|
|
9228
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9140
9229
|
} catch {
|
|
9141
9230
|
}
|
|
9142
9231
|
setIsLoading(false);
|
|
@@ -9163,9 +9252,9 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9163
9252
|
return msg;
|
|
9164
9253
|
}
|
|
9165
9254
|
function AddProvider() {
|
|
9166
|
-
const qc = (0,
|
|
9167
|
-
const
|
|
9168
|
-
const
|
|
9255
|
+
const qc = (0, import_react_query14.useQueryClient)();
|
|
9256
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9257
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9169
9258
|
const {
|
|
9170
9259
|
linkIsLoading,
|
|
9171
9260
|
providerType,
|
|
@@ -9223,12 +9312,12 @@ function AddProvider() {
|
|
|
9223
9312
|
userVerification: "preferred"
|
|
9224
9313
|
}
|
|
9225
9314
|
});
|
|
9226
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9315
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9316
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9227
9317
|
try {
|
|
9228
9318
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9229
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9319
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9230
9320
|
});
|
|
9231
|
-
notifyProvidersUpdate?.();
|
|
9232
9321
|
} catch {
|
|
9233
9322
|
}
|
|
9234
9323
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9264,12 +9353,12 @@ function AddProvider() {
|
|
|
9264
9353
|
userVerification: "preferred"
|
|
9265
9354
|
}
|
|
9266
9355
|
});
|
|
9267
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9356
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9357
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9268
9358
|
try {
|
|
9269
9359
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9270
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9360
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9271
9361
|
});
|
|
9272
|
-
notifyProvidersUpdate?.();
|
|
9273
9362
|
} catch {
|
|
9274
9363
|
}
|
|
9275
9364
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9300,7 +9389,9 @@ var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
|
9300
9389
|
function EmailNotConnectedWarning() {
|
|
9301
9390
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
9302
9391
|
const hasEmail = providers.includes("email");
|
|
9303
|
-
const {
|
|
9392
|
+
const {
|
|
9393
|
+
config: { current: config }
|
|
9394
|
+
} = useLumiaPassportConfig();
|
|
9304
9395
|
const isShown = config.warnings?.emailNotConnectedWarning && !hasEmail;
|
|
9305
9396
|
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_framer_motion3.AnimatePresence, { mode: "wait", initial: false, children: isShown ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
9306
9397
|
import_framer_motion3.motion.div,
|
|
@@ -9309,7 +9400,7 @@ function EmailNotConnectedWarning() {
|
|
|
9309
9400
|
animate: { opacity: 1, height: "auto" },
|
|
9310
9401
|
exit: { opacity: 0, height: 0 },
|
|
9311
9402
|
transition: Y_ANIMATION_SETUP,
|
|
9312
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Highlight, { className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9403
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Highlight, { type: "warning", className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9313
9404
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("span", { className: "flex items-center gap-[var(--l-pass-gap)] text-lg font-bold", children: [
|
|
9314
9405
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.Mail, { className: "w-5 h-5" }),
|
|
9315
9406
|
"CONNECT EMAIL"
|
|
@@ -9321,16 +9412,19 @@ function EmailNotConnectedWarning() {
|
|
|
9321
9412
|
}
|
|
9322
9413
|
|
|
9323
9414
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9324
|
-
var
|
|
9325
|
-
var
|
|
9415
|
+
var import_react_query15 = require("@tanstack/react-query");
|
|
9416
|
+
var import_react26 = __toESM(require("react"), 1);
|
|
9326
9417
|
init_auth();
|
|
9327
9418
|
function useLinkSocial() {
|
|
9328
|
-
const qc = (0,
|
|
9329
|
-
const
|
|
9330
|
-
const {
|
|
9419
|
+
const qc = (0, import_react_query15.useQueryClient)();
|
|
9420
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9421
|
+
const {
|
|
9422
|
+
config: { current: config },
|
|
9423
|
+
callbacks
|
|
9424
|
+
} = useLumiaPassportConfig();
|
|
9331
9425
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9332
9426
|
const { providerType, linkIsLoading, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9333
|
-
const handleLinkSocialProvider =
|
|
9427
|
+
const handleLinkSocialProvider = import_react26.default.useCallback(
|
|
9334
9428
|
async (providerIdRaw) => {
|
|
9335
9429
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9336
9430
|
try {
|
|
@@ -9362,10 +9456,10 @@ function useLinkSocial() {
|
|
|
9362
9456
|
if (!result.success) {
|
|
9363
9457
|
throw new Error(result.error || `${socialProvider.name || providerIdRaw} authentication failed`);
|
|
9364
9458
|
}
|
|
9365
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9459
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9460
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9366
9461
|
try {
|
|
9367
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9368
|
-
notifyProvidersUpdate?.();
|
|
9462
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9369
9463
|
} catch {
|
|
9370
9464
|
}
|
|
9371
9465
|
setProviderType(null);
|
|
@@ -9381,8 +9475,8 @@ function useLinkSocial() {
|
|
|
9381
9475
|
},
|
|
9382
9476
|
[config.social?.providers, callbacks]
|
|
9383
9477
|
);
|
|
9384
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9385
|
-
(0,
|
|
9478
|
+
const [socialLinkStarted, setSocialLinkStarted] = import_react26.default.useState(false);
|
|
9479
|
+
(0, import_react26.useEffect)(() => {
|
|
9386
9480
|
const key = providerType?.toLowerCase();
|
|
9387
9481
|
if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
|
|
9388
9482
|
if (!linkIsLoading && !socialLinkStarted) {
|
|
@@ -9396,16 +9490,19 @@ function useLinkSocial() {
|
|
|
9396
9490
|
}
|
|
9397
9491
|
|
|
9398
9492
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9399
|
-
var
|
|
9400
|
-
var
|
|
9493
|
+
var import_react_query16 = require("@tanstack/react-query");
|
|
9494
|
+
var import_react27 = require("react");
|
|
9401
9495
|
init_telegram2();
|
|
9402
9496
|
function useLinkTelegram() {
|
|
9403
|
-
const {
|
|
9404
|
-
|
|
9405
|
-
|
|
9497
|
+
const {
|
|
9498
|
+
config: { current: config },
|
|
9499
|
+
callbacks
|
|
9500
|
+
} = useLumiaPassportConfig();
|
|
9501
|
+
const qc = (0, import_react_query16.useQueryClient)();
|
|
9502
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9406
9503
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9407
9504
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9408
|
-
const handleLinkTelegram = (0,
|
|
9505
|
+
const handleLinkTelegram = (0, import_react27.useCallback)(async () => {
|
|
9409
9506
|
try {
|
|
9410
9507
|
setLinkIsLoading(true);
|
|
9411
9508
|
setLinkError("");
|
|
@@ -9431,10 +9528,10 @@ function useLinkTelegram() {
|
|
|
9431
9528
|
}
|
|
9432
9529
|
console.log("[ManageWallet] Linking Telegram with data:", user);
|
|
9433
9530
|
await linkTelegram(user);
|
|
9434
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9531
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9532
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9435
9533
|
try {
|
|
9436
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9437
|
-
notifyProvidersUpdate?.();
|
|
9534
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9438
9535
|
} catch {
|
|
9439
9536
|
}
|
|
9440
9537
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9447,14 +9544,14 @@ function useLinkTelegram() {
|
|
|
9447
9544
|
setLinkIsLoading(false);
|
|
9448
9545
|
}
|
|
9449
9546
|
}, [config.social?.providers, callbacks]);
|
|
9450
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = (0,
|
|
9451
|
-
(0,
|
|
9547
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react27.useState)(false);
|
|
9548
|
+
(0, import_react27.useEffect)(() => {
|
|
9452
9549
|
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9453
9550
|
setTelegramLinkStarted(true);
|
|
9454
9551
|
handleLinkTelegram();
|
|
9455
9552
|
}
|
|
9456
9553
|
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9457
|
-
(0,
|
|
9554
|
+
(0, import_react27.useEffect)(() => {
|
|
9458
9555
|
if (providerType !== "telegram") {
|
|
9459
9556
|
setTelegramLinkStarted(false);
|
|
9460
9557
|
}
|
|
@@ -9540,7 +9637,9 @@ function getConfiguredProviders(config) {
|
|
|
9540
9637
|
);
|
|
9541
9638
|
}
|
|
9542
9639
|
function ManageWalletMenu() {
|
|
9543
|
-
const {
|
|
9640
|
+
const {
|
|
9641
|
+
config: { current: config }
|
|
9642
|
+
} = useLumiaPassportConfig();
|
|
9544
9643
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9545
9644
|
const {
|
|
9546
9645
|
providerType,
|
|
@@ -9557,13 +9656,14 @@ function ManageWalletMenu() {
|
|
|
9557
9656
|
setVerificationError
|
|
9558
9657
|
} = useManageWalletStore();
|
|
9559
9658
|
const configuredProviders = getConfiguredProviders(config);
|
|
9560
|
-
const { data: providers = [],
|
|
9561
|
-
|
|
9659
|
+
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9660
|
+
console.log("[MANAGE WALLET MENU] RENDER", providers);
|
|
9661
|
+
const renderProviders = (0, import_react28.useMemo)(() => {
|
|
9562
9662
|
const usedProviders = (0, import_lodash_es.fromPairs)(providers.map((p) => [p.provider, true]));
|
|
9563
9663
|
const used = [];
|
|
9564
9664
|
const unused = [];
|
|
9565
9665
|
POSSIBLE_PROVIDERS.forEach((provider, providerIdx) => {
|
|
9566
|
-
if (!configuredProviders[provider]) return
|
|
9666
|
+
if (!configuredProviders[provider]) return;
|
|
9567
9667
|
const Icon = PROVIDERS_META2[provider].icon;
|
|
9568
9668
|
if (usedProviders[provider]) {
|
|
9569
9669
|
used.push(
|
|
@@ -9653,19 +9753,19 @@ function ManageWalletMenu() {
|
|
|
9653
9753
|
}
|
|
9654
9754
|
|
|
9655
9755
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9656
|
-
var
|
|
9756
|
+
var import_react_query17 = require("@tanstack/react-query");
|
|
9657
9757
|
var import_lucide_react29 = require("lucide-react");
|
|
9658
|
-
var
|
|
9758
|
+
var import_react29 = require("react");
|
|
9659
9759
|
init_auth();
|
|
9660
9760
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
9661
9761
|
function UnlinkProviderMenu() {
|
|
9662
|
-
const qc = (0,
|
|
9663
|
-
const
|
|
9664
|
-
const { callbacks
|
|
9762
|
+
const qc = (0, import_react_query17.useQueryClient)();
|
|
9763
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9764
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9665
9765
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9666
9766
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9667
|
-
const [confirmInput, setConfirmInput] = (0,
|
|
9668
|
-
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0,
|
|
9767
|
+
const [confirmInput, setConfirmInput] = (0, import_react29.useState)("");
|
|
9768
|
+
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query17.useMutation)({
|
|
9669
9769
|
mutationFn: async () => {
|
|
9670
9770
|
if (!confirmUnlink) {
|
|
9671
9771
|
throw new Error("No provider to unlink");
|
|
@@ -9674,10 +9774,10 @@ function UnlinkProviderMenu() {
|
|
|
9674
9774
|
await unlinkProvider(provider, externalId);
|
|
9675
9775
|
},
|
|
9676
9776
|
onSuccess: async () => {
|
|
9677
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9777
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9778
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9678
9779
|
try {
|
|
9679
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9680
|
-
notifyProvidersUpdate?.();
|
|
9780
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9681
9781
|
} catch {
|
|
9682
9782
|
}
|
|
9683
9783
|
setConfirmUnlink(null);
|
|
@@ -9736,91 +9836,405 @@ function UnlinkProviderMenu() {
|
|
|
9736
9836
|
] });
|
|
9737
9837
|
}
|
|
9738
9838
|
|
|
9739
|
-
// src/internal/components/
|
|
9740
|
-
var
|
|
9741
|
-
var
|
|
9742
|
-
|
|
9743
|
-
|
|
9744
|
-
|
|
9745
|
-
var
|
|
9746
|
-
|
|
9747
|
-
|
|
9748
|
-
|
|
9749
|
-
|
|
9750
|
-
|
|
9751
|
-
|
|
9752
|
-
|
|
9753
|
-
|
|
9754
|
-
|
|
9755
|
-
|
|
9756
|
-
|
|
9757
|
-
|
|
9758
|
-
|
|
9759
|
-
const
|
|
9760
|
-
|
|
9761
|
-
|
|
9762
|
-
|
|
9763
|
-
|
|
9764
|
-
const fetchRecovery = (0, import_react29.useCallback)(async () => {
|
|
9765
|
-
if (!userId) return;
|
|
9766
|
-
try {
|
|
9767
|
-
setIsRefreshing(true);
|
|
9768
|
-
const keyshareInfo = await getKeyshareInfo(userId);
|
|
9769
|
-
setLocalInfo(keyshareInfo);
|
|
9770
|
-
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
9771
|
-
try {
|
|
9772
|
-
console.log("[SecurityModal] Loading trusted apps for user:", userId);
|
|
9773
|
-
const iframeManager = getIframeManager2();
|
|
9774
|
-
const apps = await iframeManager.getTrustedApps(userId);
|
|
9775
|
-
console.log("[SecurityModal] Received trusted apps:", apps);
|
|
9776
|
-
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
9777
|
-
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
9778
|
-
setTrustedApps(apps);
|
|
9779
|
-
} catch (error) {
|
|
9780
|
-
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
9781
|
-
setTrustedApps([]);
|
|
9782
|
-
}
|
|
9783
|
-
const stats = await getShareRecoveryStats();
|
|
9784
|
-
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
9785
|
-
setHasServerBackup(!!hasRecoveryData);
|
|
9786
|
-
const created = stats?.created;
|
|
9787
|
-
setRecoveryCreatedAt(created?.at || null);
|
|
9788
|
-
setRecoveryBrowser(created?.browser || null);
|
|
9789
|
-
setRecoveryUa(created?.ua || null);
|
|
9790
|
-
setRecoveryDeviceId(created?.deviceId || null);
|
|
9791
|
-
setRecoveryDeviceName(created?.deviceName || null);
|
|
9792
|
-
setRecoveryCountry(created?.country || null);
|
|
9793
|
-
} finally {
|
|
9794
|
-
setIsRefreshing(false);
|
|
9839
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9840
|
+
var import_lucide_react31 = require("lucide-react");
|
|
9841
|
+
var import_react31 = require("react");
|
|
9842
|
+
|
|
9843
|
+
// src/modules/assets.ts
|
|
9844
|
+
var import_react30 = __toESM(require("react"), 1);
|
|
9845
|
+
var import_wagmi = require("wagmi");
|
|
9846
|
+
var import_viem4 = require("viem");
|
|
9847
|
+
init_base();
|
|
9848
|
+
var COMMON_TOKENS = [
|
|
9849
|
+
// Add real token addresses here when available
|
|
9850
|
+
// {
|
|
9851
|
+
// address: '0x....',
|
|
9852
|
+
// name: 'USD Coin',
|
|
9853
|
+
// symbol: 'USDC',
|
|
9854
|
+
// decimals: 6,
|
|
9855
|
+
// logo: 'https://...'
|
|
9856
|
+
// }
|
|
9857
|
+
];
|
|
9858
|
+
function useAssets(address) {
|
|
9859
|
+
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = (0, import_wagmi.useBalance)({
|
|
9860
|
+
address,
|
|
9861
|
+
chainId: lumiaBeam.id,
|
|
9862
|
+
query: {
|
|
9863
|
+
enabled: !!address
|
|
9795
9864
|
}
|
|
9796
|
-
}
|
|
9797
|
-
|
|
9798
|
-
|
|
9799
|
-
|
|
9800
|
-
|
|
9801
|
-
|
|
9802
|
-
|
|
9865
|
+
});
|
|
9866
|
+
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
9867
|
+
address: token.address,
|
|
9868
|
+
abi: import_viem4.erc20Abi,
|
|
9869
|
+
functionName: "balanceOf",
|
|
9870
|
+
args: [address],
|
|
9871
|
+
chainId: lumiaBeam.id
|
|
9872
|
+
}));
|
|
9873
|
+
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
9874
|
+
contracts: tokenContracts,
|
|
9875
|
+
query: {
|
|
9876
|
+
enabled: !!address && COMMON_TOKENS.length > 0
|
|
9877
|
+
}
|
|
9878
|
+
});
|
|
9879
|
+
const { data: tokenBalances, isLoading: tokenBalancesLoading, refetch: refetchTokenBalances } = readContractsResult;
|
|
9880
|
+
const getAllAssets = () => {
|
|
9881
|
+
const assets = [];
|
|
9882
|
+
if (nativeBalance) {
|
|
9883
|
+
assets.push({
|
|
9884
|
+
type: "native",
|
|
9885
|
+
name: "Lumia",
|
|
9886
|
+
symbol: "LUMIA",
|
|
9887
|
+
balance: nativeBalance.value.toString(),
|
|
9888
|
+
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
9889
|
+
decimals: 18
|
|
9890
|
+
});
|
|
9891
|
+
}
|
|
9892
|
+
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
9893
|
+
tokenBalances.forEach((balance, index) => {
|
|
9894
|
+
const token = COMMON_TOKENS[index];
|
|
9895
|
+
if (balance.status === "success" && balance.result) {
|
|
9896
|
+
const balanceValue = balance.result;
|
|
9897
|
+
const formattedBalance = (0, import_viem4.formatUnits)(balanceValue, token.decimals);
|
|
9898
|
+
assets.push({
|
|
9899
|
+
type: "erc20",
|
|
9900
|
+
address: token.address,
|
|
9901
|
+
name: token.name,
|
|
9902
|
+
symbol: token.symbol,
|
|
9903
|
+
balance: balanceValue.toString(),
|
|
9904
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
9905
|
+
decimals: token.decimals,
|
|
9906
|
+
logo: token.logo
|
|
9907
|
+
});
|
|
9908
|
+
}
|
|
9909
|
+
});
|
|
9910
|
+
}
|
|
9911
|
+
return assets;
|
|
9912
|
+
};
|
|
9913
|
+
const getTokenBalance = (tokenAddress) => {
|
|
9914
|
+
const tokenIndex = COMMON_TOKENS.findIndex(
|
|
9915
|
+
(token2) => token2.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
9916
|
+
);
|
|
9917
|
+
if (tokenIndex === -1 || !tokenBalances?.[tokenIndex]) {
|
|
9918
|
+
return null;
|
|
9919
|
+
}
|
|
9920
|
+
const balance = tokenBalances[tokenIndex];
|
|
9921
|
+
const token = COMMON_TOKENS[tokenIndex];
|
|
9922
|
+
if (balance.status === "success" && balance.result) {
|
|
9923
|
+
const balanceValue = balance.result;
|
|
9924
|
+
const formattedBalance = (0, import_viem4.formatUnits)(balanceValue, token.decimals);
|
|
9925
|
+
return {
|
|
9926
|
+
address: token.address,
|
|
9927
|
+
name: token.name,
|
|
9928
|
+
symbol: token.symbol,
|
|
9929
|
+
decimals: token.decimals,
|
|
9930
|
+
balance: balanceValue.toString(),
|
|
9931
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
9932
|
+
logo: token.logo
|
|
9933
|
+
};
|
|
9934
|
+
}
|
|
9935
|
+
return null;
|
|
9936
|
+
};
|
|
9937
|
+
const refreshBalances = async () => {
|
|
9938
|
+
await Promise.all([
|
|
9939
|
+
refetchNativeBalance(),
|
|
9940
|
+
refetchTokenBalances()
|
|
9941
|
+
]);
|
|
9942
|
+
};
|
|
9943
|
+
return {
|
|
9944
|
+
nativeBalance,
|
|
9945
|
+
tokenBalances,
|
|
9946
|
+
assets: getAllAssets(),
|
|
9947
|
+
getTokenBalance,
|
|
9948
|
+
refreshBalances,
|
|
9949
|
+
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
9950
|
+
isConnected: !!address
|
|
9951
|
+
};
|
|
9952
|
+
}
|
|
9953
|
+
function useTokenInfo(tokenAddress) {
|
|
9954
|
+
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
9955
|
+
contracts: [
|
|
9956
|
+
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
9957
|
+
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
9958
|
+
{ address: tokenAddress, abi: import_viem4.erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
9959
|
+
]
|
|
9960
|
+
});
|
|
9961
|
+
const { data: tokenData, isLoading } = readContractsResult;
|
|
9962
|
+
if (!tokenData || isLoading) {
|
|
9963
|
+
return { isLoading, tokenInfo: null };
|
|
9964
|
+
}
|
|
9965
|
+
const [nameResult, symbolResult, decimalsResult] = tokenData;
|
|
9966
|
+
if (nameResult.status === "success" && symbolResult.status === "success" && decimalsResult.status === "success") {
|
|
9967
|
+
return {
|
|
9968
|
+
isLoading: false,
|
|
9969
|
+
tokenInfo: {
|
|
9970
|
+
name: nameResult.result,
|
|
9971
|
+
symbol: symbolResult.result,
|
|
9972
|
+
decimals: decimalsResult.result,
|
|
9973
|
+
address: tokenAddress
|
|
9974
|
+
}
|
|
9975
|
+
};
|
|
9976
|
+
}
|
|
9977
|
+
return { isLoading: false, tokenInfo: null };
|
|
9978
|
+
}
|
|
9979
|
+
function useTokenBalance(tokenAddress, userAddress) {
|
|
9980
|
+
const { data: balance, isLoading, refetch } = (0, import_wagmi.useReadContract)({
|
|
9981
|
+
address: tokenAddress,
|
|
9982
|
+
abi: import_viem4.erc20Abi,
|
|
9983
|
+
functionName: "balanceOf",
|
|
9984
|
+
args: userAddress ? [userAddress] : void 0,
|
|
9985
|
+
chainId: lumiaBeam.id,
|
|
9986
|
+
query: {
|
|
9987
|
+
enabled: !!userAddress
|
|
9988
|
+
}
|
|
9989
|
+
});
|
|
9990
|
+
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
9991
|
+
const formattedBalance = import_react30.default.useMemo(() => {
|
|
9992
|
+
if (!balance || !tokenInfo) return "0";
|
|
9993
|
+
return (0, import_viem4.formatUnits)(balance, tokenInfo.decimals);
|
|
9994
|
+
}, [balance, tokenInfo]);
|
|
9995
|
+
return {
|
|
9996
|
+
balance,
|
|
9997
|
+
formattedBalance,
|
|
9998
|
+
tokenInfo,
|
|
9999
|
+
isLoading,
|
|
10000
|
+
refetch
|
|
10001
|
+
};
|
|
10002
|
+
}
|
|
10003
|
+
|
|
10004
|
+
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
10005
|
+
var import_react_query18 = require("@tanstack/react-query");
|
|
10006
|
+
var import_lucide_react30 = require("lucide-react");
|
|
10007
|
+
init_base();
|
|
10008
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
10009
|
+
var price16 = Intl.NumberFormat("en-US", { minimumFractionDigits: 16, maximumFractionDigits: 16 });
|
|
10010
|
+
function formatValue(price) {
|
|
10011
|
+
console.log("[---PRICE---]", price);
|
|
10012
|
+
if (!price) return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: `0.00` });
|
|
10013
|
+
if (price < 0.01) {
|
|
10014
|
+
const strigified = price16.format(price);
|
|
10015
|
+
const absValue = parseInt(strigified.replace(/^0\./, "")).toString().slice(0, 2);
|
|
10016
|
+
const zeroQnt = strigified.replace(/^0\./, "").split("").findIndex((el) => +el > 0);
|
|
10017
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
|
|
10018
|
+
`0.0`,
|
|
10019
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("sub", { className: "text-[10px]", children: zeroQnt }),
|
|
10020
|
+
absValue
|
|
10021
|
+
] });
|
|
10022
|
+
}
|
|
10023
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_jsx_runtime49.Fragment, { children: price.toFixed(2) });
|
|
10024
|
+
}
|
|
10025
|
+
function openInExplorer(address) {
|
|
10026
|
+
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
10027
|
+
}
|
|
10028
|
+
async function getAssetRate(symbol) {
|
|
10029
|
+
const assetURL = `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}USDT`;
|
|
10030
|
+
const response = await fetch(assetURL);
|
|
10031
|
+
return await response.json();
|
|
10032
|
+
}
|
|
10033
|
+
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
10034
|
+
function PortfolioItem(props) {
|
|
10035
|
+
const { address, asset } = props;
|
|
10036
|
+
const { data: assetRate, isLoading: isRateLoading } = (0, import_react_query18.useQuery)({
|
|
10037
|
+
retry: false,
|
|
10038
|
+
staleTime: 4 * 60 * 1e3,
|
|
10039
|
+
enabled: !!address && !!asset.symbol,
|
|
10040
|
+
queryKey: [ASSETS_RATES_QUERY_KEY, address, asset.symbol],
|
|
10041
|
+
queryFn: async () => await getAssetRate(asset.symbol)
|
|
10042
|
+
});
|
|
10043
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
|
|
10044
|
+
"div",
|
|
10045
|
+
{
|
|
10046
|
+
className: cn(
|
|
10047
|
+
"group cursor-pointer",
|
|
10048
|
+
"w-full flex items-center gap-[var(--l-pass-gap)]",
|
|
10049
|
+
"hover:text-[var(--l-pass-fg-h)] transition-colors"
|
|
10050
|
+
),
|
|
10051
|
+
onClick: () => openInExplorer(asset.address),
|
|
10052
|
+
children: [
|
|
10053
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10054
|
+
"div",
|
|
10055
|
+
{
|
|
10056
|
+
className: cn(
|
|
10057
|
+
"flex-none w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center",
|
|
10058
|
+
"group-hover:opacity-60 transition-opacity"
|
|
10059
|
+
),
|
|
10060
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) })
|
|
10061
|
+
}
|
|
10062
|
+
),
|
|
10063
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "w-full flex-1", children: [
|
|
10064
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
10065
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: asset.name }),
|
|
10066
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10067
|
+
] }),
|
|
10068
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: [
|
|
10069
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { children: [
|
|
10070
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: formatValue(Number(asset.formattedBalance)) }),
|
|
10071
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: " " + asset.symbol })
|
|
10072
|
+
] }),
|
|
10073
|
+
isRateLoading && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react30.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
10074
|
+
!!assetRate?.price && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { children: (Number(asset.formattedBalance) * Number(assetRate.price)).toLocaleString("en-US", {
|
|
10075
|
+
minimumFractionDigits: 2,
|
|
10076
|
+
maximumFractionDigits: 2,
|
|
10077
|
+
currency: "USD",
|
|
10078
|
+
style: "currency"
|
|
10079
|
+
}) })
|
|
10080
|
+
] })
|
|
10081
|
+
] })
|
|
10082
|
+
]
|
|
10083
|
+
}
|
|
10084
|
+
);
|
|
10085
|
+
}
|
|
10086
|
+
{
|
|
10087
|
+
}
|
|
10088
|
+
|
|
10089
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10090
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
10091
|
+
function PortfolioMenu() {
|
|
10092
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10093
|
+
const assetsContainerListRef = (0, import_react31.useRef)(null);
|
|
10094
|
+
const assetsListRef = (0, import_react31.useRef)(null);
|
|
10095
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10096
|
+
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10097
|
+
(0, import_react31.useEffect)(() => {
|
|
10098
|
+
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10099
|
+
if (assetsContainerListRef.current) {
|
|
10100
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10101
|
+
"--l-pass-list-bd",
|
|
10102
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
10103
|
+
// hide border if no scrollbar
|
|
10104
|
+
);
|
|
10105
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10106
|
+
"--l-pass-list-scrollbar-pd-l",
|
|
10107
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "4px" : "0px"
|
|
10108
|
+
// remove padding if no scrollbar
|
|
10109
|
+
);
|
|
10110
|
+
}
|
|
10111
|
+
}, []);
|
|
10112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10113
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10114
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10115
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
10116
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.RefreshCw, { className: "h-4 w-4" }) })
|
|
10117
|
+
] }),
|
|
10118
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10119
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
10120
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.Loader, { className: "h-5 w-5 animate-spin" }),
|
|
10121
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
10122
|
+
] }),
|
|
10123
|
+
!isLoading && assets.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
10124
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react31.Gem, { className: "w-12 h-12 mb-2" }),
|
|
10125
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { children: "No assets found" })
|
|
10126
|
+
] }),
|
|
10127
|
+
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10128
|
+
"div",
|
|
10129
|
+
{
|
|
10130
|
+
ref: assetsContainerListRef,
|
|
10131
|
+
className: "list-scrollbar-y relative border-t border-b border-[var(--l-pass-list-bd)]",
|
|
10132
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10133
|
+
"div",
|
|
10134
|
+
{
|
|
10135
|
+
ref: assetsListRef,
|
|
10136
|
+
className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]",
|
|
10137
|
+
children: assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
10138
|
+
PortfolioItem,
|
|
10139
|
+
{
|
|
10140
|
+
address,
|
|
10141
|
+
asset
|
|
10142
|
+
},
|
|
10143
|
+
`${asset.type}-${asset.address || "native"}-${index}`
|
|
10144
|
+
))
|
|
10145
|
+
}
|
|
10146
|
+
)
|
|
10147
|
+
}
|
|
10148
|
+
)
|
|
10149
|
+
] })
|
|
10150
|
+
] });
|
|
10151
|
+
}
|
|
10152
|
+
|
|
10153
|
+
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10154
|
+
var import_lucide_react32 = require("lucide-react");
|
|
10155
|
+
var import_react32 = require("react");
|
|
10156
|
+
init_auth();
|
|
10157
|
+
init_keyshare();
|
|
10158
|
+
init_vaultClient();
|
|
10159
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
10160
|
+
function SecurityMenu() {
|
|
10161
|
+
const page = useLayoutDataStore((st) => st.page);
|
|
10162
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10163
|
+
const open = page === "security";
|
|
10164
|
+
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
10165
|
+
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
10166
|
+
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10167
|
+
const [isRefreshing, setIsRefreshing] = (0, import_react32.useState)(false);
|
|
10168
|
+
const [localInfo, setLocalInfo] = (0, import_react32.useState)(null);
|
|
10169
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = (0, import_react32.useState)(null);
|
|
10170
|
+
const [recoveryBrowser, setRecoveryBrowser] = (0, import_react32.useState)(null);
|
|
10171
|
+
const [recoveryUa, setRecoveryUa] = (0, import_react32.useState)(null);
|
|
10172
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = (0, import_react32.useState)(null);
|
|
10173
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = (0, import_react32.useState)(null);
|
|
10174
|
+
const [recoveryCountry, setRecoveryCountry] = (0, import_react32.useState)(null);
|
|
10175
|
+
const [hasServerBackup, setHasServerBackup] = (0, import_react32.useState)(false);
|
|
10176
|
+
const [trustedApps, setTrustedApps] = (0, import_react32.useState)([]);
|
|
10177
|
+
const [appToRemove, setAppToRemove] = (0, import_react32.useState)(null);
|
|
10178
|
+
const fetchRecovery = (0, import_react32.useCallback)(async () => {
|
|
10179
|
+
if (!userId) return;
|
|
10180
|
+
try {
|
|
10181
|
+
setIsRefreshing(true);
|
|
10182
|
+
const keyshareInfo = await getKeyshareInfo(userId);
|
|
10183
|
+
setLocalInfo(keyshareInfo);
|
|
10184
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
10185
|
+
try {
|
|
10186
|
+
console.log("[SecurityModal] Loading trusted apps for user:", userId);
|
|
10187
|
+
const iframeManager = getIframeManager2();
|
|
10188
|
+
const apps = await iframeManager.getTrustedApps(userId);
|
|
10189
|
+
console.log("[SecurityModal] Received trusted apps:", apps);
|
|
10190
|
+
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
10191
|
+
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
10192
|
+
setTrustedApps(apps);
|
|
10193
|
+
} catch (error) {
|
|
10194
|
+
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
10195
|
+
setTrustedApps([]);
|
|
10196
|
+
}
|
|
10197
|
+
const stats = await getShareRecoveryStats();
|
|
10198
|
+
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
10199
|
+
setHasServerBackup(!!hasRecoveryData);
|
|
10200
|
+
const created = stats?.created;
|
|
10201
|
+
setRecoveryCreatedAt(created?.at || null);
|
|
10202
|
+
setRecoveryBrowser(created?.browser || null);
|
|
10203
|
+
setRecoveryUa(created?.ua || null);
|
|
10204
|
+
setRecoveryDeviceId(created?.deviceId || null);
|
|
10205
|
+
setRecoveryDeviceName(created?.deviceName || null);
|
|
10206
|
+
setRecoveryCountry(created?.country || null);
|
|
10207
|
+
} finally {
|
|
10208
|
+
setIsRefreshing(false);
|
|
10209
|
+
}
|
|
10210
|
+
}, [userId]);
|
|
10211
|
+
(0, import_react32.useEffect)(() => {
|
|
10212
|
+
if (open) fetchRecovery();
|
|
10213
|
+
}, [open, fetchRecovery]);
|
|
10214
|
+
const parseOS = (ua) => {
|
|
10215
|
+
if (!ua) return null;
|
|
10216
|
+
if (ua.includes("Mac OS X")) return "macOS";
|
|
9803
10217
|
if (ua.includes("Windows")) return "Windows";
|
|
9804
10218
|
if (ua.includes("Android")) return "Android";
|
|
9805
10219
|
if (ua.includes("Linux")) return "Linux";
|
|
9806
10220
|
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
9807
10221
|
return null;
|
|
9808
10222
|
};
|
|
9809
|
-
return /* @__PURE__ */ (0,
|
|
9810
|
-
/* @__PURE__ */ (0,
|
|
9811
|
-
/* @__PURE__ */ (0,
|
|
9812
|
-
/* @__PURE__ */ (0,
|
|
9813
|
-
/* @__PURE__ */ (0,
|
|
9814
|
-
/* @__PURE__ */ (0,
|
|
10223
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10224
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
10225
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10226
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
10227
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
10228
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Button, { variant: "ghost", size: "icon", title: "Refresh", onClick: fetchRecovery, children: isRefreshing ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.RefreshCw, { className: "h-4 w-4" }) })
|
|
9815
10229
|
] })
|
|
9816
10230
|
] }) }),
|
|
9817
|
-
/* @__PURE__ */ (0,
|
|
9818
|
-
/* @__PURE__ */ (0,
|
|
9819
|
-
/* @__PURE__ */ (0,
|
|
9820
|
-
/* @__PURE__ */ (0,
|
|
9821
|
-
/* @__PURE__ */ (0,
|
|
10231
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
10232
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10233
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10234
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Cloud, { className: "h-4 w-4" }),
|
|
10235
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Server" })
|
|
9822
10236
|
] }),
|
|
9823
|
-
/* @__PURE__ */ (0,
|
|
10237
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
9824
10238
|
"span",
|
|
9825
10239
|
{
|
|
9826
10240
|
className: cn(
|
|
@@ -9828,18 +10242,18 @@ function SecurityMenu() {
|
|
|
9828
10242
|
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9829
10243
|
),
|
|
9830
10244
|
children: [
|
|
9831
|
-
serverHasKeyshare ? /* @__PURE__ */ (0,
|
|
10245
|
+
serverHasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
9832
10246
|
serverHasKeyshare ? "Ready" : "Missing"
|
|
9833
10247
|
]
|
|
9834
10248
|
}
|
|
9835
10249
|
)
|
|
9836
10250
|
] }),
|
|
9837
|
-
/* @__PURE__ */ (0,
|
|
9838
|
-
/* @__PURE__ */ (0,
|
|
9839
|
-
/* @__PURE__ */ (0,
|
|
9840
|
-
/* @__PURE__ */ (0,
|
|
10251
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10252
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10253
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Laptop, { className: "h-4 w-4" }),
|
|
10254
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Local" })
|
|
9841
10255
|
] }),
|
|
9842
|
-
/* @__PURE__ */ (0,
|
|
10256
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
9843
10257
|
"span",
|
|
9844
10258
|
{
|
|
9845
10259
|
className: cn(
|
|
@@ -9847,18 +10261,18 @@ function SecurityMenu() {
|
|
|
9847
10261
|
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9848
10262
|
),
|
|
9849
10263
|
children: [
|
|
9850
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */ (0,
|
|
10264
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
9851
10265
|
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
9852
10266
|
]
|
|
9853
10267
|
}
|
|
9854
10268
|
)
|
|
9855
10269
|
] }),
|
|
9856
|
-
/* @__PURE__ */ (0,
|
|
9857
|
-
/* @__PURE__ */ (0,
|
|
9858
|
-
/* @__PURE__ */ (0,
|
|
9859
|
-
/* @__PURE__ */ (0,
|
|
10270
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-2 text-center", children: [
|
|
10271
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10272
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Shield, { className: "h-4 w-4" }),
|
|
10273
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "text-sm font-medium", children: "Vault" })
|
|
9860
10274
|
] }),
|
|
9861
|
-
/* @__PURE__ */ (0,
|
|
10275
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
9862
10276
|
"span",
|
|
9863
10277
|
{
|
|
9864
10278
|
className: cn(
|
|
@@ -9866,101 +10280,101 @@ function SecurityMenu() {
|
|
|
9866
10280
|
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9867
10281
|
),
|
|
9868
10282
|
children: [
|
|
9869
|
-
hasServerBackup ? /* @__PURE__ */ (0,
|
|
10283
|
+
hasServerBackup ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.CheckCircle2, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.AlertTriangle, { className: "h-4 w-4 mr-1" }),
|
|
9870
10284
|
hasServerBackup ? "Ready" : "None"
|
|
9871
10285
|
]
|
|
9872
10286
|
}
|
|
9873
10287
|
)
|
|
9874
10288
|
] })
|
|
9875
10289
|
] }),
|
|
9876
|
-
/* @__PURE__ */ (0,
|
|
9877
|
-
localInfo?.hasKeyshare && /* @__PURE__ */ (0,
|
|
9878
|
-
localInfo.ownerAddress && /* @__PURE__ */ (0,
|
|
9879
|
-
/* @__PURE__ */ (0,
|
|
9880
|
-
/* @__PURE__ */ (0,
|
|
10290
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
10291
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10292
|
+
localInfo.ownerAddress && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10293
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Owner: " }),
|
|
10294
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
9881
10295
|
] }),
|
|
9882
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0,
|
|
9883
|
-
/* @__PURE__ */ (0,
|
|
9884
|
-
/* @__PURE__ */ (0,
|
|
10296
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10297
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Size: " }),
|
|
10298
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
9885
10299
|
] }),
|
|
9886
|
-
localInfo.sessionId && /* @__PURE__ */ (0,
|
|
9887
|
-
/* @__PURE__ */ (0,
|
|
9888
|
-
/* @__PURE__ */ (0,
|
|
10300
|
+
localInfo.sessionId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
10301
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Session: " }),
|
|
10302
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
9889
10303
|
] })
|
|
9890
10304
|
] }),
|
|
9891
|
-
/* @__PURE__ */ (0,
|
|
9892
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0,
|
|
9893
|
-
/* @__PURE__ */ (0,
|
|
9894
|
-
/* @__PURE__ */ (0,
|
|
10305
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10306
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10307
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Server, { className: "h-2.5 w-2.5" }),
|
|
10308
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9895
10309
|
"Server: ",
|
|
9896
10310
|
new Date(backup.server.lastBackup).toLocaleString()
|
|
9897
10311
|
] })
|
|
9898
10312
|
] }),
|
|
9899
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
9900
|
-
/* @__PURE__ */ (0,
|
|
9901
|
-
/* @__PURE__ */ (0,
|
|
10313
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10314
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Server, { className: "h-2.5 w-2.5" }),
|
|
10315
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9902
10316
|
"Server: ",
|
|
9903
10317
|
new Date(recoveryCreatedAt).toLocaleString()
|
|
9904
10318
|
] })
|
|
9905
10319
|
] }),
|
|
9906
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0,
|
|
9907
|
-
/* @__PURE__ */ (0,
|
|
9908
|
-
/* @__PURE__ */ (0,
|
|
10320
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10321
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Cloud, { className: "h-2.5 w-2.5" }),
|
|
10322
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9909
10323
|
"Cloud: ",
|
|
9910
10324
|
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
9911
10325
|
] })
|
|
9912
10326
|
] }),
|
|
9913
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0,
|
|
9914
|
-
/* @__PURE__ */ (0,
|
|
9915
|
-
/* @__PURE__ */ (0,
|
|
10327
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
10328
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.HardDrive, { className: "h-2.5 w-2.5" }),
|
|
10329
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { children: [
|
|
9916
10330
|
"Local: ",
|
|
9917
10331
|
new Date(backup.local.lastBackup).toLocaleString()
|
|
9918
10332
|
] })
|
|
9919
10333
|
] })
|
|
9920
10334
|
] }),
|
|
9921
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0,
|
|
9922
|
-
/* @__PURE__ */ (0,
|
|
9923
|
-
recoveryCreatedAt && /* @__PURE__ */ (0,
|
|
10335
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10336
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: "Device Information:" }),
|
|
10337
|
+
recoveryCreatedAt && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9924
10338
|
"Created: ",
|
|
9925
10339
|
new Date(recoveryCreatedAt).toLocaleString(),
|
|
9926
10340
|
" "
|
|
9927
10341
|
] }),
|
|
9928
|
-
recoveryCountry && /* @__PURE__ */ (0,
|
|
10342
|
+
recoveryCountry && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9929
10343
|
"Country: ",
|
|
9930
10344
|
recoveryCountry
|
|
9931
10345
|
] }),
|
|
9932
|
-
recoveryBrowser && /* @__PURE__ */ (0,
|
|
10346
|
+
recoveryBrowser && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9933
10347
|
"Browser: ",
|
|
9934
10348
|
recoveryBrowser
|
|
9935
10349
|
] }),
|
|
9936
|
-
parseOS(recoveryUa) && /* @__PURE__ */ (0,
|
|
10350
|
+
parseOS(recoveryUa) && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9937
10351
|
"OS: ",
|
|
9938
10352
|
parseOS(recoveryUa)
|
|
9939
10353
|
] }),
|
|
9940
|
-
recoveryDeviceName && /* @__PURE__ */ (0,
|
|
10354
|
+
recoveryDeviceName && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9941
10355
|
"Device: ",
|
|
9942
10356
|
recoveryDeviceName
|
|
9943
10357
|
] }),
|
|
9944
|
-
recoveryDeviceId && /* @__PURE__ */ (0,
|
|
10358
|
+
recoveryDeviceId && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { children: [
|
|
9945
10359
|
"Device ID: ",
|
|
9946
|
-
/* @__PURE__ */ (0,
|
|
10360
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
9947
10361
|
] })
|
|
9948
10362
|
] }),
|
|
9949
|
-
trustedApps.length > 0 && /* @__PURE__ */ (0,
|
|
9950
|
-
/* @__PURE__ */ (0,
|
|
9951
|
-
/* @__PURE__ */ (0,
|
|
10363
|
+
trustedApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "w-full space-y-2", children: [
|
|
10364
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
10365
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
9952
10366
|
"div",
|
|
9953
10367
|
{
|
|
9954
10368
|
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
9955
10369
|
children: [
|
|
9956
|
-
/* @__PURE__ */ (0,
|
|
9957
|
-
/* @__PURE__ */ (0,
|
|
9958
|
-
/* @__PURE__ */ (0,
|
|
10370
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
10371
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
10372
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
9959
10373
|
"Trusted: ",
|
|
9960
10374
|
new Date(app.trustedAt).toLocaleDateString()
|
|
9961
10375
|
] })
|
|
9962
10376
|
] }),
|
|
9963
|
-
/* @__PURE__ */ (0,
|
|
10377
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
9964
10378
|
Button,
|
|
9965
10379
|
{
|
|
9966
10380
|
variant: "ghost",
|
|
@@ -9972,7 +10386,7 @@ function SecurityMenu() {
|
|
|
9972
10386
|
origin: app.origin,
|
|
9973
10387
|
hostname: new URL(app.origin).hostname
|
|
9974
10388
|
}),
|
|
9975
|
-
children: /* @__PURE__ */ (0,
|
|
10389
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react32.Trash2, { className: "h-3 w-3" })
|
|
9976
10390
|
}
|
|
9977
10391
|
)
|
|
9978
10392
|
]
|
|
@@ -9985,58 +10399,62 @@ function SecurityMenu() {
|
|
|
9985
10399
|
}
|
|
9986
10400
|
|
|
9987
10401
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
9988
|
-
var
|
|
9989
|
-
var
|
|
10402
|
+
var import_lucide_react33 = require("lucide-react");
|
|
10403
|
+
var import_react34 = require("react");
|
|
9990
10404
|
var import_viem6 = require("viem");
|
|
9991
10405
|
var import_wagmi2 = require("wagmi");
|
|
9992
10406
|
|
|
9993
10407
|
// src/hooks/useSendTransaction.ts
|
|
9994
|
-
var
|
|
9995
|
-
var
|
|
10408
|
+
var import_react33 = require("react");
|
|
10409
|
+
var import_viem5 = require("viem");
|
|
9996
10410
|
init_account();
|
|
9997
10411
|
function useSendTransaction() {
|
|
9998
|
-
const
|
|
9999
|
-
const
|
|
10000
|
-
const [
|
|
10001
|
-
const [
|
|
10002
|
-
const
|
|
10003
|
-
|
|
10004
|
-
|
|
10005
|
-
|
|
10006
|
-
|
|
10007
|
-
|
|
10008
|
-
|
|
10009
|
-
|
|
10010
|
-
|
|
10011
|
-
|
|
10012
|
-
|
|
10013
|
-
|
|
10014
|
-
|
|
10015
|
-
|
|
10016
|
-
|
|
10017
|
-
|
|
10018
|
-
|
|
10019
|
-
|
|
10020
|
-
|
|
10021
|
-
|
|
10022
|
-
|
|
10023
|
-
|
|
10024
|
-
|
|
10025
|
-
|
|
10026
|
-
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
|
|
10030
|
-
|
|
10031
|
-
|
|
10032
|
-
|
|
10033
|
-
|
|
10034
|
-
|
|
10035
|
-
|
|
10036
|
-
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10412
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
10413
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10414
|
+
const [isLoading, setIsLoading] = (0, import_react33.useState)(false);
|
|
10415
|
+
const [error, setError] = (0, import_react33.useState)(null);
|
|
10416
|
+
const [userOpHash, setUserOpHash] = (0, import_react33.useState)(null);
|
|
10417
|
+
const sendTransaction = (0, import_react33.useCallback)(
|
|
10418
|
+
async (params) => {
|
|
10419
|
+
if (!session || !address) {
|
|
10420
|
+
setError("No active session");
|
|
10421
|
+
return null;
|
|
10422
|
+
}
|
|
10423
|
+
if (!(0, import_viem5.isAddress)(params.to)) {
|
|
10424
|
+
setError("Invalid recipient address");
|
|
10425
|
+
return null;
|
|
10426
|
+
}
|
|
10427
|
+
const value = parseFloat(params.value);
|
|
10428
|
+
if (isNaN(value) || value < 0) {
|
|
10429
|
+
setError("Invalid amount");
|
|
10430
|
+
return null;
|
|
10431
|
+
}
|
|
10432
|
+
setIsLoading(true);
|
|
10433
|
+
setError(null);
|
|
10434
|
+
setUserOpHash(null);
|
|
10435
|
+
try {
|
|
10436
|
+
const valueWei = (0, import_viem5.parseEther)(params.value).toString();
|
|
10437
|
+
const hash = await sendUserOperation(
|
|
10438
|
+
session,
|
|
10439
|
+
params.to,
|
|
10440
|
+
valueWei,
|
|
10441
|
+
params.data || "0x",
|
|
10442
|
+
"standard",
|
|
10443
|
+
"v0.7"
|
|
10444
|
+
);
|
|
10445
|
+
setUserOpHash(hash);
|
|
10446
|
+
return hash;
|
|
10447
|
+
} catch (err) {
|
|
10448
|
+
const errorMessage = err instanceof Error ? err.message : "Transaction failed";
|
|
10449
|
+
setError(errorMessage);
|
|
10450
|
+
return null;
|
|
10451
|
+
} finally {
|
|
10452
|
+
setIsLoading(false);
|
|
10453
|
+
}
|
|
10454
|
+
},
|
|
10455
|
+
[session, address]
|
|
10456
|
+
);
|
|
10457
|
+
const reset = (0, import_react33.useCallback)(() => {
|
|
10040
10458
|
setError(null);
|
|
10041
10459
|
setUserOpHash(null);
|
|
10042
10460
|
setIsLoading(false);
|
|
@@ -10050,188 +10468,27 @@ function useSendTransaction() {
|
|
|
10050
10468
|
};
|
|
10051
10469
|
}
|
|
10052
10470
|
|
|
10053
|
-
// src/modules/assets.ts
|
|
10054
|
-
var import_react31 = __toESM(require("react"), 1);
|
|
10055
|
-
var import_wagmi = require("wagmi");
|
|
10056
|
-
var import_viem5 = require("viem");
|
|
10057
|
-
init_base();
|
|
10058
|
-
var COMMON_TOKENS = [
|
|
10059
|
-
// Add real token addresses here when available
|
|
10060
|
-
// {
|
|
10061
|
-
// address: '0x....',
|
|
10062
|
-
// name: 'USD Coin',
|
|
10063
|
-
// symbol: 'USDC',
|
|
10064
|
-
// decimals: 6,
|
|
10065
|
-
// logo: 'https://...'
|
|
10066
|
-
// }
|
|
10067
|
-
];
|
|
10068
|
-
function useAssets(address) {
|
|
10069
|
-
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = (0, import_wagmi.useBalance)({
|
|
10070
|
-
address,
|
|
10071
|
-
chainId: lumiaBeam.id,
|
|
10072
|
-
query: {
|
|
10073
|
-
enabled: !!address
|
|
10074
|
-
}
|
|
10075
|
-
});
|
|
10076
|
-
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
10077
|
-
address: token.address,
|
|
10078
|
-
abi: import_viem5.erc20Abi,
|
|
10079
|
-
functionName: "balanceOf",
|
|
10080
|
-
args: [address],
|
|
10081
|
-
chainId: lumiaBeam.id
|
|
10082
|
-
}));
|
|
10083
|
-
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
10084
|
-
contracts: tokenContracts,
|
|
10085
|
-
query: {
|
|
10086
|
-
enabled: !!address && COMMON_TOKENS.length > 0
|
|
10087
|
-
}
|
|
10088
|
-
});
|
|
10089
|
-
const { data: tokenBalances, isLoading: tokenBalancesLoading, refetch: refetchTokenBalances } = readContractsResult;
|
|
10090
|
-
const getAllAssets = () => {
|
|
10091
|
-
const assets = [];
|
|
10092
|
-
if (nativeBalance) {
|
|
10093
|
-
assets.push({
|
|
10094
|
-
type: "native",
|
|
10095
|
-
name: "Lumia",
|
|
10096
|
-
symbol: "LUMIA",
|
|
10097
|
-
balance: nativeBalance.value.toString(),
|
|
10098
|
-
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
10099
|
-
decimals: 18
|
|
10100
|
-
});
|
|
10101
|
-
}
|
|
10102
|
-
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
10103
|
-
tokenBalances.forEach((balance, index) => {
|
|
10104
|
-
const token = COMMON_TOKENS[index];
|
|
10105
|
-
if (balance.status === "success" && balance.result) {
|
|
10106
|
-
const balanceValue = balance.result;
|
|
10107
|
-
const formattedBalance = (0, import_viem5.formatUnits)(balanceValue, token.decimals);
|
|
10108
|
-
assets.push({
|
|
10109
|
-
type: "erc20",
|
|
10110
|
-
address: token.address,
|
|
10111
|
-
name: token.name,
|
|
10112
|
-
symbol: token.symbol,
|
|
10113
|
-
balance: balanceValue.toString(),
|
|
10114
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
10115
|
-
decimals: token.decimals,
|
|
10116
|
-
logo: token.logo
|
|
10117
|
-
});
|
|
10118
|
-
}
|
|
10119
|
-
});
|
|
10120
|
-
}
|
|
10121
|
-
return assets;
|
|
10122
|
-
};
|
|
10123
|
-
const getTokenBalance = (tokenAddress) => {
|
|
10124
|
-
const tokenIndex = COMMON_TOKENS.findIndex(
|
|
10125
|
-
(token2) => token2.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
10126
|
-
);
|
|
10127
|
-
if (tokenIndex === -1 || !tokenBalances?.[tokenIndex]) {
|
|
10128
|
-
return null;
|
|
10129
|
-
}
|
|
10130
|
-
const balance = tokenBalances[tokenIndex];
|
|
10131
|
-
const token = COMMON_TOKENS[tokenIndex];
|
|
10132
|
-
if (balance.status === "success" && balance.result) {
|
|
10133
|
-
const balanceValue = balance.result;
|
|
10134
|
-
const formattedBalance = (0, import_viem5.formatUnits)(balanceValue, token.decimals);
|
|
10135
|
-
return {
|
|
10136
|
-
address: token.address,
|
|
10137
|
-
name: token.name,
|
|
10138
|
-
symbol: token.symbol,
|
|
10139
|
-
decimals: token.decimals,
|
|
10140
|
-
balance: balanceValue.toString(),
|
|
10141
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
10142
|
-
logo: token.logo
|
|
10143
|
-
};
|
|
10144
|
-
}
|
|
10145
|
-
return null;
|
|
10146
|
-
};
|
|
10147
|
-
const refreshBalances = async () => {
|
|
10148
|
-
await Promise.all([
|
|
10149
|
-
refetchNativeBalance(),
|
|
10150
|
-
refetchTokenBalances()
|
|
10151
|
-
]);
|
|
10152
|
-
};
|
|
10153
|
-
return {
|
|
10154
|
-
nativeBalance,
|
|
10155
|
-
tokenBalances,
|
|
10156
|
-
assets: getAllAssets(),
|
|
10157
|
-
getTokenBalance,
|
|
10158
|
-
refreshBalances,
|
|
10159
|
-
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
10160
|
-
isConnected: !!address
|
|
10161
|
-
};
|
|
10162
|
-
}
|
|
10163
|
-
function useTokenInfo(tokenAddress) {
|
|
10164
|
-
const readContractsResult = (0, import_wagmi.useReadContracts)({
|
|
10165
|
-
contracts: [
|
|
10166
|
-
{ address: tokenAddress, abi: import_viem5.erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
10167
|
-
{ address: tokenAddress, abi: import_viem5.erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
10168
|
-
{ address: tokenAddress, abi: import_viem5.erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
10169
|
-
]
|
|
10170
|
-
});
|
|
10171
|
-
const { data: tokenData, isLoading } = readContractsResult;
|
|
10172
|
-
if (!tokenData || isLoading) {
|
|
10173
|
-
return { isLoading, tokenInfo: null };
|
|
10174
|
-
}
|
|
10175
|
-
const [nameResult, symbolResult, decimalsResult] = tokenData;
|
|
10176
|
-
if (nameResult.status === "success" && symbolResult.status === "success" && decimalsResult.status === "success") {
|
|
10177
|
-
return {
|
|
10178
|
-
isLoading: false,
|
|
10179
|
-
tokenInfo: {
|
|
10180
|
-
name: nameResult.result,
|
|
10181
|
-
symbol: symbolResult.result,
|
|
10182
|
-
decimals: decimalsResult.result,
|
|
10183
|
-
address: tokenAddress
|
|
10184
|
-
}
|
|
10185
|
-
};
|
|
10186
|
-
}
|
|
10187
|
-
return { isLoading: false, tokenInfo: null };
|
|
10188
|
-
}
|
|
10189
|
-
function useTokenBalance(tokenAddress, userAddress) {
|
|
10190
|
-
const { data: balance, isLoading, refetch } = (0, import_wagmi.useReadContract)({
|
|
10191
|
-
address: tokenAddress,
|
|
10192
|
-
abi: import_viem5.erc20Abi,
|
|
10193
|
-
functionName: "balanceOf",
|
|
10194
|
-
args: userAddress ? [userAddress] : void 0,
|
|
10195
|
-
chainId: lumiaBeam.id,
|
|
10196
|
-
query: {
|
|
10197
|
-
enabled: !!userAddress
|
|
10198
|
-
}
|
|
10199
|
-
});
|
|
10200
|
-
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
10201
|
-
const formattedBalance = import_react31.default.useMemo(() => {
|
|
10202
|
-
if (!balance || !tokenInfo) return "0";
|
|
10203
|
-
return (0, import_viem5.formatUnits)(balance, tokenInfo.decimals);
|
|
10204
|
-
}, [balance, tokenInfo]);
|
|
10205
|
-
return {
|
|
10206
|
-
balance,
|
|
10207
|
-
formattedBalance,
|
|
10208
|
-
tokenInfo,
|
|
10209
|
-
isLoading,
|
|
10210
|
-
refetch
|
|
10211
|
-
};
|
|
10212
|
-
}
|
|
10213
|
-
|
|
10214
10471
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10215
10472
|
init_base();
|
|
10216
|
-
var
|
|
10473
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
10217
10474
|
function SendLumiaMenu() {
|
|
10218
10475
|
const page = useLayoutDataStore((st) => st.page);
|
|
10219
10476
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10220
10477
|
const open = page === "send";
|
|
10221
|
-
const
|
|
10478
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10222
10479
|
const { assets } = useAssets(address);
|
|
10223
10480
|
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
10224
10481
|
const { refetch: refetchBalance } = (0, import_wagmi2.useBalance)({
|
|
10225
10482
|
address,
|
|
10226
10483
|
chainId: lumiaBeam.id
|
|
10227
10484
|
});
|
|
10228
|
-
const [recipient, setRecipient] = (0,
|
|
10229
|
-
const [amount, setAmount] = (0,
|
|
10230
|
-
const [txStep, setTxStep] = (0,
|
|
10231
|
-
const [validationError, setValidationError] = (0,
|
|
10485
|
+
const [recipient, setRecipient] = (0, import_react34.useState)("");
|
|
10486
|
+
const [amount, setAmount] = (0, import_react34.useState)("");
|
|
10487
|
+
const [txStep, setTxStep] = (0, import_react34.useState)("input");
|
|
10488
|
+
const [validationError, setValidationError] = (0, import_react34.useState)(null);
|
|
10232
10489
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10233
10490
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10234
|
-
(0,
|
|
10491
|
+
(0, import_react34.useEffect)(() => {
|
|
10235
10492
|
if (open) {
|
|
10236
10493
|
setTxStep("input");
|
|
10237
10494
|
setValidationError(null);
|
|
@@ -10286,18 +10543,18 @@ function SendLumiaMenu() {
|
|
|
10286
10543
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
10287
10544
|
setAmount(maxAmount.toFixed(6));
|
|
10288
10545
|
};
|
|
10289
|
-
return /* @__PURE__ */ (0,
|
|
10290
|
-
/* @__PURE__ */ (0,
|
|
10291
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
10292
|
-
/* @__PURE__ */ (0,
|
|
10546
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10547
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10548
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10549
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
10293
10550
|
] }),
|
|
10294
|
-
txStep === "input" && /* @__PURE__ */ (0,
|
|
10295
|
-
/* @__PURE__ */ (0,
|
|
10296
|
-
/* @__PURE__ */ (0,
|
|
10297
|
-
/* @__PURE__ */ (0,
|
|
10551
|
+
txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
10552
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10553
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient Address" }),
|
|
10554
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10298
10555
|
Input,
|
|
10299
10556
|
{
|
|
10300
|
-
Icon:
|
|
10557
|
+
Icon: import_lucide_react33.Wallet,
|
|
10301
10558
|
type: "text",
|
|
10302
10559
|
value: recipient,
|
|
10303
10560
|
onChange: (e) => setRecipient(e.target.value),
|
|
@@ -10305,17 +10562,17 @@ function SendLumiaMenu() {
|
|
|
10305
10562
|
}
|
|
10306
10563
|
)
|
|
10307
10564
|
] }),
|
|
10308
|
-
/* @__PURE__ */ (0,
|
|
10309
|
-
/* @__PURE__ */ (0,
|
|
10310
|
-
/* @__PURE__ */ (0,
|
|
10311
|
-
/* @__PURE__ */ (0,
|
|
10565
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10566
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between items-center", children: [
|
|
10567
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: "Amount" }),
|
|
10568
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
10312
10569
|
"Balance: ",
|
|
10313
10570
|
balance.toFixed(4),
|
|
10314
10571
|
" LUMIA"
|
|
10315
10572
|
] })
|
|
10316
10573
|
] }),
|
|
10317
|
-
/* @__PURE__ */ (0,
|
|
10318
|
-
/* @__PURE__ */ (0,
|
|
10574
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "w-full relative", children: [
|
|
10575
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10319
10576
|
Input,
|
|
10320
10577
|
{
|
|
10321
10578
|
Icon: LumiaIcon,
|
|
@@ -10326,7 +10583,7 @@ function SendLumiaMenu() {
|
|
|
10326
10583
|
step: "0.000001"
|
|
10327
10584
|
}
|
|
10328
10585
|
),
|
|
10329
|
-
/* @__PURE__ */ (0,
|
|
10586
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
10330
10587
|
Button,
|
|
10331
10588
|
{
|
|
10332
10589
|
onClick: handleMaxAmount,
|
|
@@ -10339,73 +10596,73 @@ function SendLumiaMenu() {
|
|
|
10339
10596
|
)
|
|
10340
10597
|
] })
|
|
10341
10598
|
] }),
|
|
10342
|
-
(validationError || error) && /* @__PURE__ */ (0,
|
|
10343
|
-
/* @__PURE__ */ (0,
|
|
10344
|
-
/* @__PURE__ */ (0,
|
|
10599
|
+
(validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
10600
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.AlertCircle, { className: "h-4 w-4" }),
|
|
10601
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "text-sm", children: validationError || error })
|
|
10345
10602
|
] }),
|
|
10346
|
-
/* @__PURE__ */ (0,
|
|
10603
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
10347
10604
|
] }),
|
|
10348
|
-
txStep === "confirm" && /* @__PURE__ */ (0,
|
|
10349
|
-
/* @__PURE__ */ (0,
|
|
10350
|
-
/* @__PURE__ */ (0,
|
|
10351
|
-
/* @__PURE__ */ (0,
|
|
10352
|
-
/* @__PURE__ */ (0,
|
|
10353
|
-
/* @__PURE__ */ (0,
|
|
10354
|
-
/* @__PURE__ */ (0,
|
|
10605
|
+
txStep === "confirm" && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
10606
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
10607
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
10608
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "space-y-2 text-sm", children: [
|
|
10609
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between", children: [
|
|
10610
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "To:" }),
|
|
10611
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
10355
10612
|
] }),
|
|
10356
|
-
/* @__PURE__ */ (0,
|
|
10357
|
-
/* @__PURE__ */ (0,
|
|
10358
|
-
/* @__PURE__ */ (0,
|
|
10613
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between", children: [
|
|
10614
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "Amount:" }),
|
|
10615
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("span", { className: `font-semibold`, children: [
|
|
10359
10616
|
amount,
|
|
10360
10617
|
" LUMIA"
|
|
10361
10618
|
] })
|
|
10362
10619
|
] }),
|
|
10363
|
-
/* @__PURE__ */ (0,
|
|
10364
|
-
/* @__PURE__ */ (0,
|
|
10365
|
-
/* @__PURE__ */ (0,
|
|
10620
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex justify-between", children: [
|
|
10621
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "Network:" }),
|
|
10622
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { children: "Lumia Beam" })
|
|
10366
10623
|
] })
|
|
10367
10624
|
] })
|
|
10368
10625
|
] }),
|
|
10369
|
-
/* @__PURE__ */ (0,
|
|
10370
|
-
/* @__PURE__ */ (0,
|
|
10371
|
-
/* @__PURE__ */ (0,
|
|
10372
|
-
isLoading && /* @__PURE__ */ (0,
|
|
10626
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "flex gap-2", children: [
|
|
10627
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
10628
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
10629
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.Loader, { className: "h-4 w-4 animate-spin" }),
|
|
10373
10630
|
"Confirm"
|
|
10374
10631
|
] })
|
|
10375
10632
|
] })
|
|
10376
10633
|
] }),
|
|
10377
|
-
txStep === "pending" && /* @__PURE__ */ (0,
|
|
10378
|
-
/* @__PURE__ */ (0,
|
|
10379
|
-
/* @__PURE__ */ (0,
|
|
10380
|
-
/* @__PURE__ */ (0,
|
|
10381
|
-
/* @__PURE__ */ (0,
|
|
10634
|
+
txStep === "pending" && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "py-8 text-center space-y-4", children: [
|
|
10635
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.Loader, { className: "h-12 w-12 animate-spin mx-auto" }),
|
|
10636
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { children: [
|
|
10637
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
10638
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
10382
10639
|
] })
|
|
10383
10640
|
] }),
|
|
10384
|
-
txStep === "success" && userOpHash && /* @__PURE__ */ (0,
|
|
10385
|
-
/* @__PURE__ */ (0,
|
|
10386
|
-
/* @__PURE__ */ (0,
|
|
10387
|
-
/* @__PURE__ */ (0,
|
|
10388
|
-
/* @__PURE__ */ (0,
|
|
10641
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
|
|
10642
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "text-center py-4", children: [
|
|
10643
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react33.CheckCircle2, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
10644
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
10645
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
10389
10646
|
] }),
|
|
10390
|
-
/* @__PURE__ */ (0,
|
|
10647
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
10391
10648
|
] })
|
|
10392
10649
|
] });
|
|
10393
10650
|
}
|
|
10394
10651
|
|
|
10395
10652
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10396
|
-
var
|
|
10653
|
+
var import_lucide_react34 = require("lucide-react");
|
|
10397
10654
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
10398
|
-
var
|
|
10655
|
+
var import_react35 = require("react");
|
|
10399
10656
|
init_clients();
|
|
10400
|
-
var
|
|
10657
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
10401
10658
|
function ReceiveLumiaMenu() {
|
|
10402
10659
|
const page = useLayoutDataStore((st) => st.page);
|
|
10403
10660
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10404
10661
|
const open = page === "receive";
|
|
10405
10662
|
const { address } = useLumiaPassportSession();
|
|
10406
|
-
const [qrCodeUrl, setQrCodeUrl] = (0,
|
|
10407
|
-
const [copied, setCopied] = (0,
|
|
10408
|
-
(0,
|
|
10663
|
+
const [qrCodeUrl, setQrCodeUrl] = (0, import_react35.useState)("");
|
|
10664
|
+
const [copied, setCopied] = (0, import_react35.useState)(false);
|
|
10665
|
+
(0, import_react35.useEffect)(() => {
|
|
10409
10666
|
if (open && address) {
|
|
10410
10667
|
import_qrcode.default.toDataURL(address, {
|
|
10411
10668
|
width: 200,
|
|
@@ -10428,41 +10685,42 @@ function ReceiveLumiaMenu() {
|
|
|
10428
10685
|
console.error("Failed to copy address:", error);
|
|
10429
10686
|
}
|
|
10430
10687
|
};
|
|
10431
|
-
return /* @__PURE__ */ (0,
|
|
10432
|
-
/* @__PURE__ */ (0,
|
|
10433
|
-
/* @__PURE__ */ (0,
|
|
10434
|
-
/* @__PURE__ */ (0,
|
|
10688
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10689
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10690
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10691
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10435
10692
|
] }),
|
|
10436
|
-
/* @__PURE__ */ (0,
|
|
10437
|
-
/* @__PURE__ */ (0,
|
|
10438
|
-
/* @__PURE__ */ (0,
|
|
10693
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Highlight, { className: "text-center", type: "warning", children: [
|
|
10694
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
10695
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
10439
10696
|
] }),
|
|
10440
|
-
/* @__PURE__ */ (0,
|
|
10441
|
-
/* @__PURE__ */ (0,
|
|
10442
|
-
/* @__PURE__ */ (0,
|
|
10443
|
-
/* @__PURE__ */ (0,
|
|
10444
|
-
/* @__PURE__ */ (0,
|
|
10445
|
-
/* @__PURE__ */ (0,
|
|
10446
|
-
] }) : /* @__PURE__ */ (0,
|
|
10447
|
-
/* @__PURE__ */ (0,
|
|
10448
|
-
/* @__PURE__ */ (0,
|
|
10697
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.Loader, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
10698
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Highlight, { type: "info", children: [
|
|
10699
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
10700
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
10701
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.CheckCircle2, { className: "h-4 w-4" }),
|
|
10702
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Copied!" })
|
|
10703
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
10704
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react34.Copy, { className: "h-4 w-4" }),
|
|
10705
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Copy Address" })
|
|
10449
10706
|
] }) })
|
|
10450
10707
|
] }),
|
|
10451
|
-
/* @__PURE__ */ (0,
|
|
10708
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
10452
10709
|
] });
|
|
10453
10710
|
}
|
|
10454
10711
|
|
|
10455
10712
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10456
|
-
var
|
|
10713
|
+
var import_lucide_react36 = require("lucide-react");
|
|
10714
|
+
var import_react36 = require("react");
|
|
10457
10715
|
|
|
10458
10716
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10459
|
-
var
|
|
10717
|
+
var import_lucide_react35 = require("lucide-react");
|
|
10460
10718
|
|
|
10461
10719
|
// src/internal/assets/KycIcon.tsx
|
|
10462
|
-
var
|
|
10720
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
10463
10721
|
function KycIcon(props) {
|
|
10464
10722
|
const { width = "24", height = "24", ...rest } = props;
|
|
10465
|
-
return /* @__PURE__ */ (0,
|
|
10723
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
10466
10724
|
"path",
|
|
10467
10725
|
{
|
|
10468
10726
|
d: "M12 18.5455C10.1727 18.5455 8.625 17.9114 7.35682 16.6432C6.08864 15.375 5.45455 13.8273 5.45455 12C5.45455 10.1727 6.08864 8.625 7.35682 7.35682C8.625 6.08864 10.1727 5.45455 12 5.45455C13.8273 5.45455 15.375 6.08864 16.6432 7.35682C17.9114 8.625 18.5455 10.1727 18.5455 12C18.5455 13.8273 17.9114 15.375 16.6432 16.6432C15.375 17.9114 13.8273 18.5455 12 18.5455ZM12 16.9091C13.3636 16.9091 14.5227 16.4318 15.4773 15.4773C16.4318 14.5227 16.9091 13.3636 16.9091 12C16.9091 11.7682 16.892 11.5398 16.858 11.3148C16.8239 11.0898 16.7727 10.8682 16.7045 10.65C16.5 10.6909 16.2955 10.7216 16.0909 10.742C15.8864 10.7625 15.6818 10.7727 15.4773 10.7727C14.6182 10.7727 13.8 10.6091 13.0227 10.2818C12.2455 9.95455 11.55 9.47727 10.9364 8.85C10.5545 9.62727 10.0295 10.3023 9.36136 10.875C8.69318 11.4477 7.93636 11.8636 7.09091 12.1227C7.13182 13.4591 7.62614 14.5909 8.57386 15.5182C9.52159 16.4455 10.6636 16.9091 12 16.9091ZM7.41818 10.2409C8.01818 9.92727 8.475 9.5625 8.78864 9.14659C9.10227 8.73068 9.40909 8.23636 9.70909 7.66364C9.19091 7.93636 8.73409 8.29432 8.33864 8.7375C7.94318 9.18068 7.63636 9.68182 7.41818 10.2409ZM9.95455 13.6364C9.72273 13.6364 9.52841 13.558 9.37159 13.4011C9.21477 13.2443 9.13636 13.05 9.13636 12.8182C9.13636 12.5864 9.21477 12.392 9.37159 12.2352C9.52841 12.0784 9.72273 12 9.95455 12C10.1864 12 10.3807 12.0784 10.5375 12.2352C10.6943 12.392 10.7727 12.5864 10.7727 12.8182C10.7727 13.05 10.6943 13.2443 10.5375 13.4011C10.3807 13.558 10.1864 13.6364 9.95455 13.6364ZM15.4773 9.13636H15.7227C15.8045 9.13636 15.8864 9.12955 15.9682 9.11591C15.5182 8.50227 14.9489 8.01136 14.2602 7.64318C13.5716 7.275 12.8182 7.09091 12 7.09091H11.7545C11.6727 7.09091 11.5977 7.09773 11.5295 7.11136C12.0614 7.725 12.6239 8.21591 13.217 8.58409C13.8102 8.95227 14.5636 9.13636 15.4773 9.13636ZM14.0455 13.6364C13.8136 13.6364 13.6193 13.558 13.4625 13.4011C13.3057 13.2443 13.2273 13.05 13.2273 12.8182C13.2273 12.5864 13.3057 12.392 13.4625 12.2352C13.6193 12.0784 13.8136 12 14.0455 12C14.2773 12 14.4716 12.0784 14.6284 12.2352C14.7852 12.392 14.8636 12.5864 14.8636 12.8182C14.8636 13.05 14.7852 13.2443 14.6284 13.4011C14.4716 13.558 14.2773 13.6364 14.0455 13.6364ZM3 7.09091V4.63636C3 4.18636 3.16023 3.80114 3.48068 3.48068C3.80114 3.16023 4.18636 3 4.63636 3H7.09091V4.63636H4.63636V7.09091H3ZM7.09091 21H4.63636C4.18636 21 3.80114 20.8398 3.48068 20.5193C3.16023 20.1989 3 19.8136 3 19.3636V16.9091H4.63636V19.3636H7.09091V21ZM16.9091 21V19.3636H19.3636V16.9091H21V19.3636C21 19.8136 20.8398 20.1989 20.5193 20.5193C20.1989 20.8398 19.8136 21 19.3636 21H16.9091ZM19.3636 7.09091V4.63636H16.9091V3H19.3636C19.8136 3 20.1989 3.16023 20.5193 3.48068C20.8398 3.80114 21 4.18636 21 4.63636V7.09091H19.3636Z",
|
|
@@ -10473,27 +10731,29 @@ function KycIcon(props) {
|
|
|
10473
10731
|
|
|
10474
10732
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10475
10733
|
var NAV_BUTTONS = [
|
|
10476
|
-
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon:
|
|
10734
|
+
{ id: "transactions" /* TRANSACTIONS */, name: "Transactions", Icon: import_lucide_react35.ArrowLeftRight },
|
|
10477
10735
|
{ id: "kyc" /* KYC */, name: "KYC", Icon: KycIcon },
|
|
10478
|
-
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon:
|
|
10479
|
-
{ id: "security" /* SECURITY */, name: "Security", Icon:
|
|
10480
|
-
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon:
|
|
10736
|
+
{ id: "manage-wallet" /* MANAGE_WALLET */, name: "Profiles", Icon: import_lucide_react35.UsersRound },
|
|
10737
|
+
{ id: "security" /* SECURITY */, name: "Security", Icon: import_lucide_react35.LockKeyhole },
|
|
10738
|
+
{ id: "keysare-backup" /* KEYSARE_BACKUP */, name: "Backup", Icon: import_lucide_react35.DatabaseBackup }
|
|
10481
10739
|
];
|
|
10482
10740
|
|
|
10483
10741
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10484
|
-
var
|
|
10742
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
10485
10743
|
function SettingsMenu() {
|
|
10486
10744
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10487
10745
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10488
10746
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10747
|
+
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10748
|
+
(0, import_react36.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10489
10749
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10490
10750
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10491
|
-
return /* @__PURE__ */ (0,
|
|
10492
|
-
/* @__PURE__ */ (0,
|
|
10493
|
-
/* @__PURE__ */ (0,
|
|
10494
|
-
/* @__PURE__ */ (0,
|
|
10751
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10752
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10753
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react36.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10754
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xl font-semibold", children: "Wallet Details" })
|
|
10495
10755
|
] }),
|
|
10496
|
-
/* @__PURE__ */ (0,
|
|
10756
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
10497
10757
|
Button,
|
|
10498
10758
|
{
|
|
10499
10759
|
variant: "outline",
|
|
@@ -10506,8 +10766,8 @@ function SettingsMenu() {
|
|
|
10506
10766
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
10507
10767
|
),
|
|
10508
10768
|
children: [
|
|
10509
|
-
/* @__PURE__ */ (0,
|
|
10510
|
-
/* @__PURE__ */ (0,
|
|
10769
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { className: "w-4 h-4" }),
|
|
10770
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: name })
|
|
10511
10771
|
]
|
|
10512
10772
|
},
|
|
10513
10773
|
id
|
|
@@ -10516,15 +10776,15 @@ function SettingsMenu() {
|
|
|
10516
10776
|
}
|
|
10517
10777
|
|
|
10518
10778
|
// src/internal/components/TermsOfService.tsx
|
|
10519
|
-
var
|
|
10779
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
10520
10780
|
function TermsOfService() {
|
|
10521
|
-
return /* @__PURE__ */ (0,
|
|
10781
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-full p-4 flex flex-col gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "prose text-sm", children: "By using Lumia Passport you agree to our terms." }) });
|
|
10522
10782
|
}
|
|
10523
10783
|
|
|
10524
10784
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10525
|
-
var
|
|
10526
|
-
var
|
|
10527
|
-
var
|
|
10785
|
+
var import_react_query19 = require("@tanstack/react-query");
|
|
10786
|
+
var import_lucide_react38 = require("lucide-react");
|
|
10787
|
+
var import_react37 = require("react");
|
|
10528
10788
|
|
|
10529
10789
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10530
10790
|
init_base();
|
|
@@ -10815,7 +11075,7 @@ async function getTransactionsListQuery(address) {
|
|
|
10815
11075
|
}
|
|
10816
11076
|
|
|
10817
11077
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10818
|
-
var
|
|
11078
|
+
var import_lucide_react37 = require("lucide-react");
|
|
10819
11079
|
|
|
10820
11080
|
// src/internal/components/TransactionsMenu/utils.ts
|
|
10821
11081
|
init_base();
|
|
@@ -10833,7 +11093,7 @@ var parseValue = (value) => {
|
|
|
10833
11093
|
return 0n;
|
|
10834
11094
|
}
|
|
10835
11095
|
};
|
|
10836
|
-
var
|
|
11096
|
+
var formatValue2 = (value, decimals = 18) => {
|
|
10837
11097
|
const amount = parseValue(value);
|
|
10838
11098
|
if (amount === 0n) return "0";
|
|
10839
11099
|
if (decimals <= 0) {
|
|
@@ -10849,7 +11109,7 @@ var formatValue = (value, decimals = 18) => {
|
|
|
10849
11109
|
const trimmed = fractionStr.slice(0, Math.min(6, fractionStr.length));
|
|
10850
11110
|
return `${whole.toString()}.${trimmed}`;
|
|
10851
11111
|
};
|
|
10852
|
-
var
|
|
11112
|
+
var openInExplorer2 = (txHash) => {
|
|
10853
11113
|
const explorerUrl = getExplorerUrl();
|
|
10854
11114
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
10855
11115
|
};
|
|
@@ -10862,24 +11122,24 @@ var formatTimestamp = (timestampMs) => {
|
|
|
10862
11122
|
};
|
|
10863
11123
|
|
|
10864
11124
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10865
|
-
var
|
|
10866
|
-
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */ (0,
|
|
10867
|
-
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */ (0,
|
|
11125
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
11126
|
+
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.CheckCircle2, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.XCircle, { className: "w-4 h-4 text-[var(--l-pass-error)]" });
|
|
11127
|
+
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ArrowDownRight, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ArrowUpRight, { className: "w-4 h-4 text-[var(--l-pass-info)]" });
|
|
10868
11128
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
10869
11129
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
10870
11130
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
10871
|
-
return /* @__PURE__ */ (0,
|
|
10872
|
-
/* @__PURE__ */ (0,
|
|
10873
|
-
/* @__PURE__ */ (0,
|
|
10874
|
-
/* @__PURE__ */ (0,
|
|
10875
|
-
|
|
11131
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
11132
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11133
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
11134
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
|
|
11135
|
+
formatValue2(internal.value, internalDecimals),
|
|
10876
11136
|
" ",
|
|
10877
11137
|
internalSymbol
|
|
10878
11138
|
] })
|
|
10879
11139
|
] }),
|
|
10880
|
-
/* @__PURE__ */ (0,
|
|
10881
|
-
/* @__PURE__ */ (0,
|
|
10882
|
-
/* @__PURE__ */ (0,
|
|
11140
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11141
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
11142
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
10883
11143
|
] })
|
|
10884
11144
|
] });
|
|
10885
11145
|
}
|
|
@@ -10890,22 +11150,22 @@ function TransactionsGroup(props) {
|
|
|
10890
11150
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
10891
11151
|
const assetDecimals = parent.decimals ?? 18;
|
|
10892
11152
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
10893
|
-
return /* @__PURE__ */ (0,
|
|
11153
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
10894
11154
|
"div",
|
|
10895
11155
|
{
|
|
10896
|
-
onClick: () =>
|
|
11156
|
+
onClick: () => openInExplorer2(parent.parentHash),
|
|
10897
11157
|
className: cn(
|
|
10898
11158
|
"rounded-[var(--l-pass-el-bdrs)] p-2 transition-colors cursor-pointer border border-[var(--l-pass-bd)]",
|
|
10899
11159
|
"bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
10900
11160
|
),
|
|
10901
11161
|
children: [
|
|
10902
|
-
/* @__PURE__ */ (0,
|
|
10903
|
-
/* @__PURE__ */ (0,
|
|
11162
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
11163
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
10904
11164
|
getTransactionIcon(parent.direction),
|
|
10905
|
-
/* @__PURE__ */ (0,
|
|
11165
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-medium", children: isIncoming ? "Received" : "Sent" }),
|
|
10906
11166
|
getStatusIcon(parent.status)
|
|
10907
11167
|
] }),
|
|
10908
|
-
parent.badgeLabel && /* @__PURE__ */ (0,
|
|
11168
|
+
parent.badgeLabel && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10909
11169
|
"span",
|
|
10910
11170
|
{
|
|
10911
11171
|
className: cn(
|
|
@@ -10916,39 +11176,39 @@ function TransactionsGroup(props) {
|
|
|
10916
11176
|
}
|
|
10917
11177
|
)
|
|
10918
11178
|
] }),
|
|
10919
|
-
/* @__PURE__ */ (0,
|
|
10920
|
-
/* @__PURE__ */ (0,
|
|
10921
|
-
/* @__PURE__ */ (0,
|
|
10922
|
-
/* @__PURE__ */ (0,
|
|
10923
|
-
/* @__PURE__ */ (0,
|
|
11179
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "block w-full leading-4 mb-1 text-xs text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) }),
|
|
11180
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-0 text-sm", children: [
|
|
11181
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11182
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: isIncoming ? "From:" : "To:" }),
|
|
11183
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "font-mono", children: [
|
|
10924
11184
|
parent.counterpartyName || formatAddress2(parent.counterparty),
|
|
10925
|
-
parent.counterpartyIsContract && /* @__PURE__ */ (0,
|
|
11185
|
+
parent.counterpartyIsContract && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs text-[var(--l-pass-info)] ml-1", children: "(Contract)" })
|
|
10926
11186
|
] })
|
|
10927
11187
|
] }),
|
|
10928
|
-
/* @__PURE__ */ (0,
|
|
10929
|
-
/* @__PURE__ */ (0,
|
|
10930
|
-
/* @__PURE__ */ (0,
|
|
10931
|
-
|
|
11188
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11189
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Value:" }),
|
|
11190
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "font-semibold", children: [
|
|
11191
|
+
formatValue2(parent.value, assetDecimals),
|
|
10932
11192
|
" ",
|
|
10933
11193
|
assetSymbol
|
|
10934
11194
|
] })
|
|
10935
11195
|
] }),
|
|
10936
|
-
/* @__PURE__ */ (0,
|
|
10937
|
-
/* @__PURE__ */ (0,
|
|
10938
|
-
/* @__PURE__ */ (0,
|
|
11196
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11197
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Block:" }),
|
|
11198
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-mono", children: parent.blockNumber ? `#${parent.blockNumber}` : "-" })
|
|
10939
11199
|
] }),
|
|
10940
|
-
parent.method && /* @__PURE__ */ (0,
|
|
10941
|
-
/* @__PURE__ */ (0,
|
|
10942
|
-
/* @__PURE__ */ (0,
|
|
11200
|
+
parent.method && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex justify-between", children: [
|
|
11201
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Method:" }),
|
|
11202
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[var(--l-pass-info)] text-xs", children: parent.method })
|
|
10943
11203
|
] })
|
|
10944
11204
|
] }),
|
|
10945
|
-
internalsToRender.length > 0 && /* @__PURE__ */ (0,
|
|
11205
|
+
internalsToRender.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
10946
11206
|
"div",
|
|
10947
11207
|
{
|
|
10948
11208
|
className: "mt-4 rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
10949
11209
|
onClick: (event) => event.stopPropagation(),
|
|
10950
11210
|
children: [
|
|
10951
|
-
/* @__PURE__ */ (0,
|
|
11211
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
10952
11212
|
Button,
|
|
10953
11213
|
{
|
|
10954
11214
|
variant: "ghost",
|
|
@@ -10956,16 +11216,16 @@ function TransactionsGroup(props) {
|
|
|
10956
11216
|
className: "w-full justify-between",
|
|
10957
11217
|
onClick: () => onToggleExpanded(group.id),
|
|
10958
11218
|
children: [
|
|
10959
|
-
/* @__PURE__ */ (0,
|
|
11219
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { children: [
|
|
10960
11220
|
"View internal calls (",
|
|
10961
11221
|
internalsToRender.length,
|
|
10962
11222
|
")"
|
|
10963
11223
|
] }),
|
|
10964
|
-
/* @__PURE__ */ (0,
|
|
11224
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: expanded ? "Hide" : "Show" })
|
|
10965
11225
|
]
|
|
10966
11226
|
}
|
|
10967
11227
|
),
|
|
10968
|
-
expanded && /* @__PURE__ */ (0,
|
|
11228
|
+
expanded && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "px-3 pb-3 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
10969
11229
|
InternalTransaction,
|
|
10970
11230
|
{
|
|
10971
11231
|
internal,
|
|
@@ -10983,34 +11243,34 @@ function TransactionsGroup(props) {
|
|
|
10983
11243
|
}
|
|
10984
11244
|
|
|
10985
11245
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10986
|
-
var
|
|
11246
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
10987
11247
|
function TransactionsMenu() {
|
|
10988
|
-
const qc = (0,
|
|
11248
|
+
const qc = (0, import_react_query19.useQueryClient)();
|
|
10989
11249
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10990
11250
|
const page = useLayoutDataStore((st) => st.page);
|
|
10991
11251
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10992
|
-
const [expandedGroups, setExpandedGroups] = (0,
|
|
11252
|
+
const [expandedGroups, setExpandedGroups] = (0, import_react37.useState)({});
|
|
10993
11253
|
const {
|
|
10994
11254
|
data: txHistoryGroups = [],
|
|
10995
11255
|
isLoading: isTxHistoryLoading,
|
|
10996
11256
|
isFetching: isTxHistoryFetching,
|
|
10997
11257
|
error: txHistoryError
|
|
10998
|
-
} = (0,
|
|
11258
|
+
} = (0, import_react_query19.useQuery)({
|
|
10999
11259
|
retry: false,
|
|
11000
11260
|
enabled: !!address && page === "transactions",
|
|
11001
11261
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
11002
11262
|
queryFn: () => getTransactionsListQuery(address)
|
|
11003
11263
|
});
|
|
11004
|
-
const refreshTxHistory = (0,
|
|
11264
|
+
const refreshTxHistory = (0, import_react37.useCallback)(
|
|
11005
11265
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
11006
11266
|
[qc, address]
|
|
11007
11267
|
);
|
|
11008
11268
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11009
|
-
return /* @__PURE__ */ (0,
|
|
11010
|
-
/* @__PURE__ */ (0,
|
|
11011
|
-
/* @__PURE__ */ (0,
|
|
11012
|
-
/* @__PURE__ */ (0,
|
|
11013
|
-
/* @__PURE__ */ (0,
|
|
11269
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11270
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11271
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11272
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
11273
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11014
11274
|
Button,
|
|
11015
11275
|
{
|
|
11016
11276
|
variant: "ghost",
|
|
@@ -11018,13 +11278,13 @@ function TransactionsMenu() {
|
|
|
11018
11278
|
onClick: refreshTxHistory,
|
|
11019
11279
|
disabled: isTxHistoryFetching,
|
|
11020
11280
|
title: "Refresh transactions",
|
|
11021
|
-
children: isTxHistoryFetching ? /* @__PURE__ */ (0,
|
|
11281
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.RefreshCw, { className: "h-4 w-4" })
|
|
11022
11282
|
}
|
|
11023
11283
|
)
|
|
11024
11284
|
] }) }),
|
|
11025
|
-
/* @__PURE__ */ (0,
|
|
11026
|
-
isTxHistoryLoading && /* @__PURE__ */ (0,
|
|
11027
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0,
|
|
11285
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "max-h-[60vh] overflow-y-auto", children: [
|
|
11286
|
+
isTxHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-5 w-5 animate-spin" }) }),
|
|
11287
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
11028
11288
|
"div",
|
|
11029
11289
|
{
|
|
11030
11290
|
className: cn(
|
|
@@ -11033,20 +11293,20 @@ function TransactionsMenu() {
|
|
|
11033
11293
|
"text-[var(--l-pass-error)]"
|
|
11034
11294
|
),
|
|
11035
11295
|
children: [
|
|
11036
|
-
/* @__PURE__ */ (0,
|
|
11037
|
-
/* @__PURE__ */ (0,
|
|
11296
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.XCircle, { className: "w-12 h-12 mb-2" }),
|
|
11297
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "block w-full text-center text-sm", children: txHistoryResolvedError })
|
|
11038
11298
|
]
|
|
11039
11299
|
}
|
|
11040
11300
|
),
|
|
11041
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0,
|
|
11042
|
-
/* @__PURE__ */ (0,
|
|
11043
|
-
/* @__PURE__ */ (0,
|
|
11044
|
-
/* @__PURE__ */ (0,
|
|
11045
|
-
/* @__PURE__ */ (0,
|
|
11046
|
-
/* @__PURE__ */ (0,
|
|
11301
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex flex-col gap-2 items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: [
|
|
11302
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Activity, { className: "w-12 h-12" }),
|
|
11303
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("span", { className: "block w-full text-center", children: [
|
|
11304
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { children: "No transactions found" }),
|
|
11305
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("br", {}),
|
|
11306
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
11047
11307
|
] })
|
|
11048
11308
|
] }),
|
|
11049
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0,
|
|
11309
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full flex flex-col gap-2", children: txHistoryGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
11050
11310
|
TransactionsGroup,
|
|
11051
11311
|
{
|
|
11052
11312
|
group,
|
|
@@ -11059,127 +11319,6 @@ function TransactionsMenu() {
|
|
|
11059
11319
|
] });
|
|
11060
11320
|
}
|
|
11061
11321
|
|
|
11062
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11063
|
-
var import_lucide_react38 = require("lucide-react");
|
|
11064
|
-
|
|
11065
|
-
// src/internal/components/ViewAssetsMenu/AssetItem.tsx
|
|
11066
|
-
var import_lucide_react37 = require("lucide-react");
|
|
11067
|
-
var import_react35 = __toESM(require("react"), 1);
|
|
11068
|
-
init_base();
|
|
11069
|
-
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
11070
|
-
var openInExplorer2 = (address) => {
|
|
11071
|
-
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11072
|
-
};
|
|
11073
|
-
function AssetItem(props) {
|
|
11074
|
-
const { address, asset } = props;
|
|
11075
|
-
const [copied, setCopied] = import_react35.default.useState(null);
|
|
11076
|
-
const handleCopy = async (text, type) => {
|
|
11077
|
-
try {
|
|
11078
|
-
await navigator.clipboard.writeText(text);
|
|
11079
|
-
setCopied(type);
|
|
11080
|
-
setTimeout(() => setCopied(null), 1500);
|
|
11081
|
-
} catch (error) {
|
|
11082
|
-
console.error("Failed to copy:", error);
|
|
11083
|
-
}
|
|
11084
|
-
};
|
|
11085
|
-
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] rounded-xl p-3 transition-colors", children: [
|
|
11086
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
|
|
11087
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
11088
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
11089
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { children: [
|
|
11090
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "font-medium", children: asset.name }),
|
|
11091
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "text-sm", children: asset.symbol })
|
|
11092
|
-
] })
|
|
11093
|
-
] }),
|
|
11094
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "text-right", children: [
|
|
11095
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "font-mono", children: asset.formattedBalance }),
|
|
11096
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: asset.symbol })
|
|
11097
|
-
] })
|
|
11098
|
-
] }),
|
|
11099
|
-
asset.address && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full space-y-2 mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: [
|
|
11100
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11101
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: "Contract Address:" }),
|
|
11102
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11103
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: `font-mono text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
11104
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11105
|
-
Button,
|
|
11106
|
-
{
|
|
11107
|
-
variant: "ghost",
|
|
11108
|
-
size: "icon",
|
|
11109
|
-
title: "Copy address",
|
|
11110
|
-
onClick: () => handleCopy(asset.address, "address"),
|
|
11111
|
-
children: copied === "address" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Check, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Copy, { className: "w-3 h-3" })
|
|
11112
|
-
}
|
|
11113
|
-
),
|
|
11114
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11115
|
-
Button,
|
|
11116
|
-
{
|
|
11117
|
-
variant: "ghost",
|
|
11118
|
-
size: "icon",
|
|
11119
|
-
onClick: () => openInExplorer2(asset.address),
|
|
11120
|
-
title: "View in explorer",
|
|
11121
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ExternalLink, { className: "w-3 h-3" })
|
|
11122
|
-
}
|
|
11123
|
-
)
|
|
11124
|
-
] })
|
|
11125
|
-
] }),
|
|
11126
|
-
asset.decimals && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11127
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: "Decimals:" }),
|
|
11128
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: asset.decimals })
|
|
11129
|
-
] })
|
|
11130
|
-
] }),
|
|
11131
|
-
asset.type === "native" && address && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
|
|
11132
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { children: "Your Address:" }),
|
|
11133
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11134
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "font-mono text-xs", children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
11135
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
11136
|
-
Button,
|
|
11137
|
-
{
|
|
11138
|
-
variant: "ghost",
|
|
11139
|
-
size: "icon",
|
|
11140
|
-
onClick: () => handleCopy(address, "wallet"),
|
|
11141
|
-
title: "Copy wallet address",
|
|
11142
|
-
children: copied === "wallet" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Check, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.Copy, { className: "w-3 h-3" })
|
|
11143
|
-
}
|
|
11144
|
-
),
|
|
11145
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Button, { variant: "ghost", size: "icon", onClick: () => openInExplorer2(address), title: "View in explorer", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react37.ExternalLink, { className: "w-3 h-3" }) })
|
|
11146
|
-
] })
|
|
11147
|
-
] }) })
|
|
11148
|
-
] });
|
|
11149
|
-
}
|
|
11150
|
-
|
|
11151
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11152
|
-
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
11153
|
-
function ViewAssetsMenu() {
|
|
11154
|
-
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11155
|
-
const { address } = useLumiaPassportSession();
|
|
11156
|
-
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
11157
|
-
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11158
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11159
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
11160
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11161
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.RefreshCw, { className: "h-4 w-4" }) })
|
|
11162
|
-
] }) }),
|
|
11163
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full max-h-[60dvh] overflow-y-auto", children: [
|
|
11164
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full text-sm text-[var(--l-pass-muted)] mb-4", children: [
|
|
11165
|
-
"Total: ",
|
|
11166
|
-
assets.length,
|
|
11167
|
-
" asset",
|
|
11168
|
-
assets.length !== 1 ? "s" : ""
|
|
11169
|
-
] }),
|
|
11170
|
-
isLoading && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full flex items-center justify-center gap-2 p-4", children: [
|
|
11171
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Loader, { className: "h-5 w-5 mr-2 animate-spin" }),
|
|
11172
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
11173
|
-
] }),
|
|
11174
|
-
!isLoading && assets.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
11175
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_lucide_react38.Gem, { className: "w-12 h-12 mb-2" }),
|
|
11176
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { children: "No assets found" })
|
|
11177
|
-
] }),
|
|
11178
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "w-full flex flex-col gap-2", children: assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(AssetItem, { address, asset }, `${asset.type}-${asset.address || "native"}-${index}`)) })
|
|
11179
|
-
] })
|
|
11180
|
-
] });
|
|
11181
|
-
}
|
|
11182
|
-
|
|
11183
11322
|
// src/internal/components/PageMap.tsx
|
|
11184
11323
|
var PAGE_MAP = {
|
|
11185
11324
|
["auth" /* AUTH */]: {
|
|
@@ -11238,9 +11377,9 @@ var PAGE_MAP = {
|
|
|
11238
11377
|
},
|
|
11239
11378
|
["assets" /* ASSETS */]: {
|
|
11240
11379
|
key: "assets" /* ASSETS */,
|
|
11241
|
-
title: "
|
|
11380
|
+
title: "Assets Portfolio Menu",
|
|
11242
11381
|
description: "View your token balances and assets",
|
|
11243
|
-
component:
|
|
11382
|
+
component: PortfolioMenu
|
|
11244
11383
|
},
|
|
11245
11384
|
["manage-wallet" /* MANAGE_WALLET */]: {
|
|
11246
11385
|
key: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11289,7 +11428,7 @@ function usePageMapper() {
|
|
|
11289
11428
|
setIsDialogOpen,
|
|
11290
11429
|
setIsDialogClosing
|
|
11291
11430
|
} = useLayoutStore();
|
|
11292
|
-
const closeDialog = (0,
|
|
11431
|
+
const closeDialog = (0, import_react38.useCallback)(() => {
|
|
11293
11432
|
setIsDialogClosing(true);
|
|
11294
11433
|
setTimeout(() => {
|
|
11295
11434
|
setDialogContent(null);
|
|
@@ -11300,7 +11439,7 @@ function usePageMapper() {
|
|
|
11300
11439
|
setIsDialogOpen(false);
|
|
11301
11440
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11302
11441
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11303
|
-
const openDialog = (0,
|
|
11442
|
+
const openDialog = (0, import_react38.useCallback)(
|
|
11304
11443
|
(pageItem) => {
|
|
11305
11444
|
const PageContentComponent = pageItem.component;
|
|
11306
11445
|
setDialogTitle(pageItem.title);
|
|
@@ -11310,7 +11449,7 @@ function usePageMapper() {
|
|
|
11310
11449
|
},
|
|
11311
11450
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11312
11451
|
);
|
|
11313
|
-
(0,
|
|
11452
|
+
(0, import_react38.useEffect)(() => {
|
|
11314
11453
|
if (page === null) return closeDialog();
|
|
11315
11454
|
const pageItem = protectedRoutes[page];
|
|
11316
11455
|
if (!pageItem) {
|
|
@@ -11323,7 +11462,7 @@ function usePageMapper() {
|
|
|
11323
11462
|
}
|
|
11324
11463
|
|
|
11325
11464
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11326
|
-
var
|
|
11465
|
+
var import_react39 = require("react");
|
|
11327
11466
|
init_auth();
|
|
11328
11467
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11329
11468
|
id: "email-not-connected",
|
|
@@ -11340,13 +11479,13 @@ function useSettingsNotifications() {
|
|
|
11340
11479
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11341
11480
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
11342
11481
|
const hasEmail = providers.includes("email");
|
|
11343
|
-
(0,
|
|
11482
|
+
(0, import_react39.useEffect)(() => {
|
|
11344
11483
|
setSettingsNotifications({
|
|
11345
11484
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11346
11485
|
status: hasServerVault ? "resolved" : "active"
|
|
11347
11486
|
});
|
|
11348
11487
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11349
|
-
(0,
|
|
11488
|
+
(0, import_react39.useEffect)(() => {
|
|
11350
11489
|
setSettingsNotifications({
|
|
11351
11490
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11352
11491
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11355,14 +11494,17 @@ function useSettingsNotifications() {
|
|
|
11355
11494
|
}
|
|
11356
11495
|
|
|
11357
11496
|
// src/internal/hooks/useWalletStatus.ts
|
|
11358
|
-
var
|
|
11497
|
+
var import_react40 = require("react");
|
|
11359
11498
|
init_auth();
|
|
11360
11499
|
function useWalletStatus() {
|
|
11361
11500
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
11362
11501
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11363
11502
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11364
|
-
const {
|
|
11365
|
-
|
|
11503
|
+
const {
|
|
11504
|
+
config: { current: config },
|
|
11505
|
+
callbacks
|
|
11506
|
+
} = useLumiaPassportConfig();
|
|
11507
|
+
(0, import_react40.useEffect)(() => {
|
|
11366
11508
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11367
11509
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
11368
11510
|
const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
|
|
@@ -11384,13 +11526,16 @@ function useWalletStatus() {
|
|
|
11384
11526
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11385
11527
|
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
11386
11528
|
function LumiaPassportDialog() {
|
|
11387
|
-
const
|
|
11529
|
+
const {
|
|
11530
|
+
config: { current: config }
|
|
11531
|
+
} = useLumiaPassportConfig();
|
|
11532
|
+
const className = config?.ui?.dialogClassName;
|
|
11388
11533
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11389
11534
|
const page = useLayoutDataStore((st) => st.page);
|
|
11390
11535
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11391
11536
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11392
11537
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11393
|
-
(0,
|
|
11538
|
+
(0, import_react41.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11394
11539
|
usePageMapper();
|
|
11395
11540
|
useAutoConnect();
|
|
11396
11541
|
useCheckVaultStatus();
|
|
@@ -11428,13 +11573,13 @@ function LumiaPassportDialog() {
|
|
|
11428
11573
|
}
|
|
11429
11574
|
|
|
11430
11575
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11431
|
-
var
|
|
11576
|
+
var import_react43 = require("react");
|
|
11432
11577
|
var import_wagmi3 = require("wagmi");
|
|
11433
11578
|
init_base();
|
|
11434
11579
|
|
|
11435
11580
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11436
|
-
var
|
|
11437
|
-
var
|
|
11581
|
+
var import_react_query20 = require("@tanstack/react-query");
|
|
11582
|
+
var import_react42 = require("react");
|
|
11438
11583
|
|
|
11439
11584
|
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11440
11585
|
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
@@ -11560,7 +11705,7 @@ async function sseConnectMutation() {
|
|
|
11560
11705
|
|
|
11561
11706
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11562
11707
|
function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
11563
|
-
const { mutate: connectSSE } = (0,
|
|
11708
|
+
const { mutate: connectSSE } = (0, import_react_query20.useMutation)({
|
|
11564
11709
|
mutationFn: sseConnectMutation,
|
|
11565
11710
|
onSuccess: () => {
|
|
11566
11711
|
lumiaPriceSSE.addListener(updateCurrentPrice);
|
|
@@ -11569,7 +11714,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11569
11714
|
console.error("Lumia Price SSE connection error:", err);
|
|
11570
11715
|
}
|
|
11571
11716
|
});
|
|
11572
|
-
(0,
|
|
11717
|
+
(0, import_react42.useEffect)(() => {
|
|
11573
11718
|
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11574
11719
|
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11575
11720
|
if (!enabled) {
|
|
@@ -11586,7 +11731,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11586
11731
|
|
|
11587
11732
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11588
11733
|
function LumiaPriceSSE() {
|
|
11589
|
-
const address = useLumiaPassportSession().address;
|
|
11734
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
11590
11735
|
const { data: balance } = (0, import_wagmi3.useBalance)({
|
|
11591
11736
|
address,
|
|
11592
11737
|
chainId: lumiaBeam.id,
|
|
@@ -11600,7 +11745,7 @@ function LumiaPriceSSE() {
|
|
|
11600
11745
|
});
|
|
11601
11746
|
const { lumiaRate, setLumiaRate, setUsdBalance, setBalance } = useLayoutDataStore();
|
|
11602
11747
|
useLumiaPriceSSE(!!address, (update) => setLumiaRate(update.price || 1));
|
|
11603
|
-
(0,
|
|
11748
|
+
(0, import_react43.useEffect)(() => {
|
|
11604
11749
|
const usdBalance = Number(balance?.formatted || 0) * lumiaRate;
|
|
11605
11750
|
setUsdBalance(usdBalance);
|
|
11606
11751
|
setBalance(balance);
|
|
@@ -11609,23 +11754,23 @@ function LumiaPriceSSE() {
|
|
|
11609
11754
|
}
|
|
11610
11755
|
|
|
11611
11756
|
// src/internal/components/TssManager.tsx
|
|
11612
|
-
var
|
|
11757
|
+
var import_react44 = __toESM(require("react"), 1);
|
|
11613
11758
|
init_auth();
|
|
11614
11759
|
init_clients();
|
|
11615
|
-
var TssManagerWithRef =
|
|
11760
|
+
var TssManagerWithRef = import_react44.default.forwardRef((props, ref) => {
|
|
11616
11761
|
const { mpcPin } = props;
|
|
11617
11762
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11618
11763
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11619
11764
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11620
11765
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11621
|
-
const onSessionCreated = (0,
|
|
11766
|
+
const onSessionCreated = (0, import_react44.useCallback)(
|
|
11622
11767
|
(session, address) => {
|
|
11623
11768
|
setSession(session);
|
|
11624
11769
|
setAddress(address);
|
|
11625
11770
|
},
|
|
11626
11771
|
[setSession, setAddress]
|
|
11627
11772
|
);
|
|
11628
|
-
const createSessionWithKeyshare =
|
|
11773
|
+
const createSessionWithKeyshare = import_react44.default.useCallback(
|
|
11629
11774
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11630
11775
|
setStatus("checking key management setup...");
|
|
11631
11776
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11646,50 +11791,46 @@ var TssManagerWithRef = import_react42.default.forwardRef((props, ref) => {
|
|
|
11646
11791
|
},
|
|
11647
11792
|
[setStatus, usePaymaster, mpcPin]
|
|
11648
11793
|
);
|
|
11649
|
-
|
|
11794
|
+
import_react44.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11650
11795
|
return null;
|
|
11651
11796
|
});
|
|
11652
11797
|
|
|
11653
11798
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11654
11799
|
var import_rainbowkit = require("@rainbow-me/rainbowkit");
|
|
11655
|
-
var
|
|
11656
|
-
var
|
|
11800
|
+
var import_react_query21 = require("@tanstack/react-query");
|
|
11801
|
+
var import_react45 = __toESM(require("react"), 1);
|
|
11657
11802
|
var import_wagmi4 = require("wagmi");
|
|
11658
11803
|
init_wallet();
|
|
11659
11804
|
function WalletConnectHandler() {
|
|
11660
|
-
const qc = (0,
|
|
11661
|
-
const { callbacks
|
|
11805
|
+
const qc = (0, import_react_query21.useQueryClient)();
|
|
11806
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
11807
|
+
const { address, isConnected, chain, connector } = (0, import_wagmi4.useAccount)();
|
|
11808
|
+
const { disconnect } = (0, import_wagmi4.useDisconnect)();
|
|
11809
|
+
const { signMessageAsync } = (0, import_wagmi4.useSignMessage)();
|
|
11662
11810
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11663
11811
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11664
|
-
const onError = (0,
|
|
11812
|
+
const onError = (0, import_react45.useCallback)((error) => {
|
|
11665
11813
|
setLinkError(error);
|
|
11666
11814
|
setIsWalletLinking(false);
|
|
11667
11815
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11668
11816
|
}, []);
|
|
11669
|
-
const onLinkingComplete = (0,
|
|
11670
|
-
setIsWalletLinking(false);
|
|
11817
|
+
const onLinkingComplete = (0, import_react45.useCallback)(async (success) => {
|
|
11671
11818
|
if (success) {
|
|
11819
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
11820
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
11672
11821
|
try {
|
|
11673
|
-
|
|
11674
|
-
|
|
11675
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11676
|
-
notifyProvidersUpdate?.();
|
|
11677
|
-
} catch {
|
|
11678
|
-
}
|
|
11679
|
-
} catch (e) {
|
|
11680
|
-
console.error("Failed to load providers:", e);
|
|
11822
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11823
|
+
} catch {
|
|
11681
11824
|
}
|
|
11682
11825
|
setProviderType(null);
|
|
11683
11826
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11684
11827
|
}
|
|
11828
|
+
setIsWalletLinking(false);
|
|
11685
11829
|
}, []);
|
|
11686
11830
|
const { openConnectModal } = (0, import_rainbowkit.useConnectModal)();
|
|
11687
|
-
const
|
|
11688
|
-
const
|
|
11689
|
-
|
|
11690
|
-
const [hasStartedLinking, setHasStartedLinking] = import_react43.default.useState(false);
|
|
11691
|
-
const timeoutRef = import_react43.default.useRef();
|
|
11692
|
-
(0, import_react43.useEffect)(() => {
|
|
11831
|
+
const [hasStartedLinking, setHasStartedLinking] = import_react45.default.useState(false);
|
|
11832
|
+
const timeoutRef = import_react45.default.useRef();
|
|
11833
|
+
(0, import_react45.useEffect)(() => {
|
|
11693
11834
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11694
11835
|
setHasStartedLinking(true);
|
|
11695
11836
|
if (isConnected) {
|
|
@@ -11721,7 +11862,7 @@ function WalletConnectHandler() {
|
|
|
11721
11862
|
}
|
|
11722
11863
|
}
|
|
11723
11864
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect]);
|
|
11724
|
-
(0,
|
|
11865
|
+
(0, import_react45.useEffect)(() => {
|
|
11725
11866
|
if (isConnected && address && isWalletLinking && hasStartedLinking) {
|
|
11726
11867
|
handleWalletSign();
|
|
11727
11868
|
}
|
|
@@ -11806,9 +11947,10 @@ var useLumiaPassportSession = (0, import_zustand5.create)((set) => ({
|
|
|
11806
11947
|
setWalletReadyStatus: (status) => set({ walletReadyStatus: status })
|
|
11807
11948
|
}));
|
|
11808
11949
|
function LumiaPassportSessionProvider({ children }) {
|
|
11809
|
-
const {
|
|
11810
|
-
|
|
11811
|
-
|
|
11950
|
+
const {
|
|
11951
|
+
config: { current: config }
|
|
11952
|
+
} = useLumiaPassportConfig();
|
|
11953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react46.Fragment, { children: [
|
|
11812
11954
|
children,
|
|
11813
11955
|
config.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(WalletConnectHandler, {}),
|
|
11814
11956
|
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(LumiaPriceSSE, {}),
|
|
@@ -11860,44 +12002,56 @@ var LumiaWagmiProvider = ({ children }) => {
|
|
|
11860
12002
|
|
|
11861
12003
|
// src/context/LumiaPassportContext.tsx
|
|
11862
12004
|
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
11863
|
-
var LumiaPassportContext = (0,
|
|
12005
|
+
var LumiaPassportContext = (0, import_react47.createContext)(void 0);
|
|
11864
12006
|
function LumiaPassportProvider(props) {
|
|
11865
12007
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
11866
12008
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
11867
12009
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
11868
|
-
|
|
11869
|
-
const
|
|
11870
|
-
const
|
|
11871
|
-
const
|
|
11872
|
-
|
|
11873
|
-
|
|
11874
|
-
|
|
11875
|
-
|
|
11876
|
-
|
|
11877
|
-
|
|
11878
|
-
|
|
11879
|
-
|
|
11880
|
-
if (
|
|
11881
|
-
|
|
11882
|
-
|
|
11883
|
-
|
|
11884
|
-
|
|
11885
|
-
if (
|
|
11886
|
-
|
|
11887
|
-
|
|
11888
|
-
|
|
11889
|
-
}
|
|
11890
|
-
if (
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
|
|
12010
|
+
(0, import_react47.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
|
|
12011
|
+
const config = (0, import_react47.useRef)({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
12012
|
+
const updateConfig = (0, import_react47.useCallback)((updates) => {
|
|
12013
|
+
const prev = config.current;
|
|
12014
|
+
const next = { ...prev };
|
|
12015
|
+
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
12016
|
+
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
12017
|
+
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
12018
|
+
if (updates.social) {
|
|
12019
|
+
next.social = { ...next.social, ...updates.social };
|
|
12020
|
+
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
12021
|
+
}
|
|
12022
|
+
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
12023
|
+
if (updates.ui) {
|
|
12024
|
+
next.ui = { ...next.ui, ...updates.ui };
|
|
12025
|
+
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
12026
|
+
}
|
|
12027
|
+
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
12028
|
+
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
12029
|
+
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
12030
|
+
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
12031
|
+
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
12032
|
+
if (updates.services && typeof window !== "undefined") {
|
|
12033
|
+
try {
|
|
12034
|
+
window.__LUMIA_SERVICES__ = next.services;
|
|
12035
|
+
} catch {
|
|
12036
|
+
}
|
|
12037
|
+
}
|
|
12038
|
+
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
12039
|
+
try {
|
|
12040
|
+
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
12041
|
+
} catch {
|
|
12042
|
+
}
|
|
12043
|
+
}
|
|
12044
|
+
config.current = next;
|
|
12045
|
+
}, []);
|
|
12046
|
+
(0, import_react47.useEffect)(() => {
|
|
12047
|
+
if (typeof window === "undefined" || !projectId) return;
|
|
12048
|
+
const mergedConfig = (0, import_lodash_es2.merge)(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12049
|
+
updateConfig(mergedConfig);
|
|
12050
|
+
console.log("[ MERGED PROVIDER STORED CONFIG ]", mergedConfig);
|
|
11896
12051
|
try {
|
|
11897
12052
|
if (typeof window !== "undefined") {
|
|
11898
|
-
window.__LUMIA_SERVICES__ =
|
|
12053
|
+
window.__LUMIA_SERVICES__ = mergedConfig.services;
|
|
11899
12054
|
window.__LUMIA_PROJECT_ID__ = projectId;
|
|
11900
|
-
console.log("[LumiaPassportProvider] Setting window.__LUMIA_SERVICES__:", merged.services);
|
|
11901
12055
|
const resolvedServices = getServiceUrls();
|
|
11902
12056
|
console.log("[LumiaPassportProvider] Resolved services:", resolvedServices);
|
|
11903
12057
|
}
|
|
@@ -11910,60 +12064,12 @@ function LumiaPassportProvider(props) {
|
|
|
11910
12064
|
console.warn("[LumiaPassport] Failed to initialize SDK error tracking:", error);
|
|
11911
12065
|
}
|
|
11912
12066
|
}
|
|
11913
|
-
return merged;
|
|
11914
|
-
});
|
|
11915
|
-
const updateConfig = (0, import_react45.useCallback)((updates) => {
|
|
11916
|
-
setConfig((prev) => {
|
|
11917
|
-
const next = { ...prev };
|
|
11918
|
-
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
11919
|
-
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
11920
|
-
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
11921
|
-
if (updates.social) {
|
|
11922
|
-
next.social = { ...next.social, ...updates.social };
|
|
11923
|
-
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
11924
|
-
}
|
|
11925
|
-
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
11926
|
-
if (updates.ui) {
|
|
11927
|
-
next.ui = { ...next.ui, ...updates.ui };
|
|
11928
|
-
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
11929
|
-
}
|
|
11930
|
-
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
11931
|
-
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
11932
|
-
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
11933
|
-
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
11934
|
-
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
11935
|
-
if (updates.services && typeof window !== "undefined") {
|
|
11936
|
-
try {
|
|
11937
|
-
window.__LUMIA_SERVICES__ = next.services;
|
|
11938
|
-
console.log("[LumiaPassportProvider] Updated window.__LUMIA_SERVICES__:", next.services);
|
|
11939
|
-
} catch {
|
|
11940
|
-
}
|
|
11941
|
-
}
|
|
11942
|
-
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
11943
|
-
try {
|
|
11944
|
-
;
|
|
11945
|
-
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
11946
|
-
console.log("[LumiaPassportProvider] Updated __LUMIA_PROJECT_ID__:", next.projectId);
|
|
11947
|
-
} catch {
|
|
11948
|
-
}
|
|
11949
|
-
}
|
|
11950
|
-
return next;
|
|
11951
|
-
});
|
|
11952
|
-
}, []);
|
|
11953
|
-
(0, import_react45.useEffect)(() => {
|
|
11954
|
-
if (typeof window === "undefined") return;
|
|
11955
|
-
if (!config.projectId) return;
|
|
11956
12067
|
const iframeUrl = getIframeUrl();
|
|
11957
|
-
console.log("[LumiaPassport] Initializing secure iframe wallet:", {
|
|
11958
|
-
iframeUrl,
|
|
11959
|
-
projectId: `${projectId.substring(0, 10)}...`,
|
|
11960
|
-
note: "All MPC operations will happen in isolated iframe context"
|
|
11961
|
-
});
|
|
11962
12068
|
try {
|
|
11963
12069
|
const iframeManager = getIframeManager({
|
|
11964
12070
|
iframeUrl,
|
|
11965
12071
|
projectId,
|
|
11966
|
-
debug:
|
|
12072
|
+
debug: mergedConfig.features?.mpcSecurity ?? true,
|
|
11967
12073
|
onWalletReady: (status) => {
|
|
11968
12074
|
callbacks?.onWalletReady?.(status);
|
|
11969
12075
|
setWalletReadyStatus(status);
|
|
@@ -11971,7 +12077,6 @@ function LumiaPassportProvider(props) {
|
|
|
11971
12077
|
});
|
|
11972
12078
|
iframeManager.initialize().then(() => {
|
|
11973
12079
|
setIsIframeReady(true);
|
|
11974
|
-
console.log("[LumiaPassport] \u2705 Secure iframe wallet initialized successfully");
|
|
11975
12080
|
}).catch((error) => {
|
|
11976
12081
|
console.error("[LumiaPassport] \u274C Failed to initialize iframe wallet:", error);
|
|
11977
12082
|
});
|
|
@@ -11982,24 +12087,19 @@ function LumiaPassportProvider(props) {
|
|
|
11982
12087
|
} catch (error) {
|
|
11983
12088
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
11984
12089
|
}
|
|
11985
|
-
}, [
|
|
11986
|
-
|
|
11987
|
-
|
|
11988
|
-
{
|
|
11989
|
-
value: { config, updateConfig, callbacks, providersVersion, notifyProvidersUpdate },
|
|
11990
|
-
children
|
|
11991
|
-
}
|
|
11992
|
-
) });
|
|
12090
|
+
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12091
|
+
const contextValue = (0, import_react47.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12092
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
11993
12093
|
}
|
|
11994
12094
|
var useLumiaPassportConfig = () => {
|
|
11995
|
-
const ctx = (0,
|
|
12095
|
+
const ctx = (0, import_react47.useContext)(LumiaPassportContext);
|
|
11996
12096
|
if (!ctx) throw new Error("useLumiaPassportConfig must be used within a LumiaPassportProvider");
|
|
11997
12097
|
return ctx;
|
|
11998
12098
|
};
|
|
11999
12099
|
|
|
12000
12100
|
// src/components/ConnectWalletButton.tsx
|
|
12001
12101
|
var import_lucide_react39 = require("lucide-react");
|
|
12002
|
-
var
|
|
12102
|
+
var import_react48 = require("react");
|
|
12003
12103
|
init_auth();
|
|
12004
12104
|
var import_jsx_runtime64 = (
|
|
12005
12105
|
/** external Buttons can be provided */
|
|
@@ -12018,15 +12118,14 @@ function ConnectWalletButton(props) {
|
|
|
12018
12118
|
// TODO: provide usePaymaster via config context
|
|
12019
12119
|
usePaymaster = true
|
|
12020
12120
|
} = props;
|
|
12021
|
-
console.log("[ CONNECT BUTTON RENDER ] should be as minimal as possible");
|
|
12022
12121
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12023
12122
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12024
12123
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12025
12124
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12026
|
-
(0,
|
|
12125
|
+
(0, import_react48.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12027
12126
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
12028
12127
|
const displayName = import_auth3.jwtTokenManager.getDisplayName();
|
|
12029
|
-
const indicators = (0,
|
|
12128
|
+
const indicators = (0, import_react48.useMemo)(() => {
|
|
12030
12129
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
12031
12130
|
if (!userId) return { server: false, local: false, backup: false };
|
|
12032
12131
|
const server = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -12074,14 +12173,7 @@ function ConnectWalletButton(props) {
|
|
|
12074
12173
|
"rounded-[var(--l-pass-el-bdrs)] p-2 max-w-sm min-w-[256px]"
|
|
12075
12174
|
),
|
|
12076
12175
|
children: [
|
|
12077
|
-
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
12078
|
-
"img",
|
|
12079
|
-
{
|
|
12080
|
-
src: avatar,
|
|
12081
|
-
alt: "User avatar",
|
|
12082
|
-
className: "w-full h-full object-cover"
|
|
12083
|
-
}
|
|
12084
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12176
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12085
12177
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
12086
12178
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "font-semibold text-base truncate max-w-[144px]", children: displayName }),
|
|
12087
12179
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(UsdBalance, { className: "font-semibold text-base text-[var(--l-pass-fg-muted)]" })
|
|
@@ -12178,13 +12270,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12178
12270
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12179
12271
|
|
|
12180
12272
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12181
|
-
var
|
|
12273
|
+
var import_react49 = require("react");
|
|
12182
12274
|
function useLumiaPassportOpen() {
|
|
12183
12275
|
const page = useLayoutDataStore((st) => st.page);
|
|
12184
12276
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12185
12277
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12186
|
-
const address = useLumiaPassportSession().address;
|
|
12187
|
-
const open = (0,
|
|
12278
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
12279
|
+
const open = (0, import_react49.useCallback)(
|
|
12188
12280
|
(passportPage, params) => {
|
|
12189
12281
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12190
12282
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12193,24 +12285,27 @@ function useLumiaPassportOpen() {
|
|
|
12193
12285
|
},
|
|
12194
12286
|
[setPage, setPageParams, address]
|
|
12195
12287
|
);
|
|
12196
|
-
const close = (0,
|
|
12288
|
+
const close = (0, import_react49.useCallback)(() => setPage(null), [setPage]);
|
|
12197
12289
|
return { open, close, isOpen: page !== null };
|
|
12198
12290
|
}
|
|
12199
12291
|
|
|
12200
12292
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12201
|
-
var
|
|
12293
|
+
var import_react50 = require("react");
|
|
12202
12294
|
function useLumiaPassportColorMode() {
|
|
12203
|
-
const
|
|
12295
|
+
const {
|
|
12296
|
+
config: { current: config }
|
|
12297
|
+
} = useLumiaPassportConfig();
|
|
12298
|
+
const preferedColorMode = config?.preferedColorMode;
|
|
12204
12299
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12205
12300
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12206
|
-
const setColorMode = (0,
|
|
12301
|
+
const setColorMode = (0, import_react50.useCallback)(
|
|
12207
12302
|
(mode) => {
|
|
12208
12303
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12209
12304
|
handleStoreColorMode(mode);
|
|
12210
12305
|
},
|
|
12211
12306
|
[handleStoreColorMode]
|
|
12212
12307
|
);
|
|
12213
|
-
(0,
|
|
12308
|
+
(0, import_react50.useEffect)(() => {
|
|
12214
12309
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12215
12310
|
if (!targetColorMode && !preferedColorMode) {
|
|
12216
12311
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12252,7 +12347,7 @@ function ThemeToggle(props) {
|
|
|
12252
12347
|
}
|
|
12253
12348
|
|
|
12254
12349
|
// src/context/RainbowKitContext.tsx
|
|
12255
|
-
var
|
|
12350
|
+
var import_react51 = __toESM(require("react"), 1);
|
|
12256
12351
|
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
12257
12352
|
var import_rainbowkit3 = require("@rainbow-me/rainbowkit");
|
|
12258
12353
|
var import_wagmi8 = require("wagmi");
|
|
@@ -12395,12 +12490,14 @@ var rainbowTheme = {
|
|
|
12395
12490
|
// src/context/RainbowKitContext.tsx
|
|
12396
12491
|
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
12397
12492
|
var LumiaRainbowKitProvider = ({ children }) => {
|
|
12398
|
-
const {
|
|
12493
|
+
const {
|
|
12494
|
+
config: { current: config }
|
|
12495
|
+
} = useLumiaPassportConfig();
|
|
12399
12496
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
12400
|
-
const rainbowConfig2 =
|
|
12497
|
+
const rainbowConfig2 = import_react51.default.useMemo(() => {
|
|
12401
12498
|
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12402
12499
|
}, [config.wallet?.walletConnectProjectId]);
|
|
12403
|
-
const customTheme =
|
|
12500
|
+
const customTheme = import_react51.default.useMemo(
|
|
12404
12501
|
() => isDark ? {
|
|
12405
12502
|
...(0, import_rainbowkit3.darkTheme)(),
|
|
12406
12503
|
colors: {
|
|
@@ -12428,11 +12525,9 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12428
12525
|
};
|
|
12429
12526
|
|
|
12430
12527
|
// src/internal/components/UserOpStatus.tsx
|
|
12431
|
-
var React20 = __toESM(require("react"), 1);
|
|
12432
12528
|
var import_lucide_react42 = require("lucide-react");
|
|
12433
|
-
|
|
12434
|
-
|
|
12435
|
-
var import_class_variance_authority2 = require("class-variance-authority");
|
|
12529
|
+
var React18 = __toESM(require("react"), 1);
|
|
12530
|
+
init_base();
|
|
12436
12531
|
|
|
12437
12532
|
// src/internal/utils/cn.ts
|
|
12438
12533
|
var import_clsx3 = require("clsx");
|
|
@@ -12441,34 +12536,10 @@ function cn2(...inputs) {
|
|
|
12441
12536
|
return (0, import_tailwind_merge2.twMerge)((0, import_clsx3.clsx)(inputs));
|
|
12442
12537
|
}
|
|
12443
12538
|
|
|
12444
|
-
// src/internal/components/ui/badge.tsx
|
|
12445
|
-
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
12446
|
-
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
12447
|
-
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
12448
|
-
{
|
|
12449
|
-
variants: {
|
|
12450
|
-
variant: {
|
|
12451
|
-
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12452
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12453
|
-
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12454
|
-
outline: "text-foreground",
|
|
12455
|
-
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12456
|
-
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12457
|
-
}
|
|
12458
|
-
},
|
|
12459
|
-
defaultVariants: {
|
|
12460
|
-
variant: "default"
|
|
12461
|
-
}
|
|
12462
|
-
}
|
|
12463
|
-
);
|
|
12464
|
-
function Badge({ className, variant, ...props }) {
|
|
12465
|
-
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12466
|
-
}
|
|
12467
|
-
|
|
12468
12539
|
// src/internal/components/Address.tsx
|
|
12469
|
-
var React19 = __toESM(require("react"), 1);
|
|
12470
12540
|
var import_lucide_react41 = require("lucide-react");
|
|
12471
|
-
var
|
|
12541
|
+
var React17 = __toESM(require("react"), 1);
|
|
12542
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
12472
12543
|
function toExplorerAddressUrl(address, chain) {
|
|
12473
12544
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12474
12545
|
if (!base2) return null;
|
|
@@ -12489,16 +12560,16 @@ var Address = ({
|
|
|
12489
12560
|
}) => {
|
|
12490
12561
|
const addr = address || "";
|
|
12491
12562
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12492
|
-
const [copied, setCopied] =
|
|
12493
|
-
if (!addr) return /* @__PURE__ */ (0,
|
|
12494
|
-
return /* @__PURE__ */ (0,
|
|
12495
|
-
label && /* @__PURE__ */ (0,
|
|
12496
|
-
/* @__PURE__ */ (0,
|
|
12497
|
-
showCopy && /* @__PURE__ */ (0,
|
|
12563
|
+
const [copied, setCopied] = React17.useState(false);
|
|
12564
|
+
if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12566
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
12567
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
12568
|
+
showCopy && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
12498
12569
|
Button,
|
|
12499
12570
|
{
|
|
12500
12571
|
variant: "ghost",
|
|
12501
|
-
size: "
|
|
12572
|
+
size: "small",
|
|
12502
12573
|
title: copied ? "Copied" : "Copy address",
|
|
12503
12574
|
onClick: async () => {
|
|
12504
12575
|
try {
|
|
@@ -12508,10 +12579,10 @@ var Address = ({
|
|
|
12508
12579
|
} catch {
|
|
12509
12580
|
}
|
|
12510
12581
|
},
|
|
12511
|
-
children: /* @__PURE__ */ (0,
|
|
12582
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react41.Copy, { className: "h-4 w-4" })
|
|
12512
12583
|
}
|
|
12513
12584
|
),
|
|
12514
|
-
showExplorer && explorer && /* @__PURE__ */ (0,
|
|
12585
|
+
showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
12515
12586
|
"a",
|
|
12516
12587
|
{
|
|
12517
12588
|
href: explorer,
|
|
@@ -12519,14 +12590,38 @@ var Address = ({
|
|
|
12519
12590
|
rel: "noreferrer noopener",
|
|
12520
12591
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12521
12592
|
title: "Open in explorer",
|
|
12522
|
-
children: /* @__PURE__ */ (0,
|
|
12593
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react41.ExternalLink, { className: "h-4 w-4" })
|
|
12523
12594
|
}
|
|
12524
12595
|
)
|
|
12525
12596
|
] });
|
|
12526
12597
|
};
|
|
12527
12598
|
|
|
12599
|
+
// src/internal/components/ui/badge.tsx
|
|
12600
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
12601
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
12602
|
+
var badgeVariants = (0, import_class_variance_authority2.cva)(
|
|
12603
|
+
"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",
|
|
12604
|
+
{
|
|
12605
|
+
variants: {
|
|
12606
|
+
variant: {
|
|
12607
|
+
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12608
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12609
|
+
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12610
|
+
outline: "text-foreground",
|
|
12611
|
+
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12612
|
+
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12613
|
+
}
|
|
12614
|
+
},
|
|
12615
|
+
defaultVariants: {
|
|
12616
|
+
variant: "default"
|
|
12617
|
+
}
|
|
12618
|
+
}
|
|
12619
|
+
);
|
|
12620
|
+
function Badge({ className, variant, ...props }) {
|
|
12621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12622
|
+
}
|
|
12623
|
+
|
|
12528
12624
|
// src/internal/components/UserOpStatus.tsx
|
|
12529
|
-
init_base();
|
|
12530
12625
|
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
12531
12626
|
var UserOpStatus = ({
|
|
12532
12627
|
userOpHash,
|
|
@@ -12538,20 +12633,20 @@ var UserOpStatus = ({
|
|
|
12538
12633
|
externalState
|
|
12539
12634
|
}) => {
|
|
12540
12635
|
const useExternalState = !!externalState;
|
|
12541
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12542
|
-
const [internalMempool, setInternalMempool] =
|
|
12543
|
-
const [internalError, setInternalError] =
|
|
12544
|
-
const [attempt, setAttempt] =
|
|
12545
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12546
|
-
const [timedOut, setTimedOut] =
|
|
12547
|
-
const [rejected, setRejected] =
|
|
12548
|
-
const intervalRef =
|
|
12549
|
-
const startTimeRef =
|
|
12636
|
+
const [internalReceipt, setInternalReceipt] = React18.useState(null);
|
|
12637
|
+
const [internalMempool, setInternalMempool] = React18.useState(null);
|
|
12638
|
+
const [internalError, setInternalError] = React18.useState(null);
|
|
12639
|
+
const [attempt, setAttempt] = React18.useState(0);
|
|
12640
|
+
const [internalRefreshing, setInternalRefreshing] = React18.useState(false);
|
|
12641
|
+
const [timedOut, setTimedOut] = React18.useState(false);
|
|
12642
|
+
const [rejected, setRejected] = React18.useState(false);
|
|
12643
|
+
const intervalRef = React18.useRef(null);
|
|
12644
|
+
const startTimeRef = React18.useRef(Date.now());
|
|
12550
12645
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12551
12646
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12552
12647
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12553
12648
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12554
|
-
const rpc =
|
|
12649
|
+
const rpc = React18.useCallback(async (method, params) => {
|
|
12555
12650
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12556
12651
|
const res = await fetch(getBundlerUrl(), {
|
|
12557
12652
|
method: "POST",
|
|
@@ -12562,14 +12657,14 @@ var UserOpStatus = ({
|
|
|
12562
12657
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12563
12658
|
return json.result;
|
|
12564
12659
|
}, []);
|
|
12565
|
-
const extractMempoolInfo =
|
|
12660
|
+
const extractMempoolInfo = React18.useCallback((m) => {
|
|
12566
12661
|
if (!m) return null;
|
|
12567
12662
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12568
12663
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12569
12664
|
if (!entryPoint && !sender) return null;
|
|
12570
12665
|
return { entryPoint, sender };
|
|
12571
12666
|
}, []);
|
|
12572
|
-
const tick =
|
|
12667
|
+
const tick = React18.useCallback(async () => {
|
|
12573
12668
|
if (useExternalState) return;
|
|
12574
12669
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12575
12670
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12613,7 +12708,7 @@ var UserOpStatus = ({
|
|
|
12613
12708
|
setAttempt((x) => x + 1);
|
|
12614
12709
|
}
|
|
12615
12710
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12616
|
-
|
|
12711
|
+
React18.useEffect(() => {
|
|
12617
12712
|
if (useExternalState) return;
|
|
12618
12713
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12619
12714
|
startTimeRef.current = Date.now();
|
|
@@ -12625,7 +12720,7 @@ var UserOpStatus = ({
|
|
|
12625
12720
|
setAttempt(0);
|
|
12626
12721
|
setInternalRefreshing(false);
|
|
12627
12722
|
}, [userOpHash, useExternalState]);
|
|
12628
|
-
|
|
12723
|
+
React18.useEffect(() => {
|
|
12629
12724
|
if (useExternalState) {
|
|
12630
12725
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12631
12726
|
return;
|
|
@@ -12691,7 +12786,10 @@ var UserOpStatus = ({
|
|
|
12691
12786
|
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
12692
12787
|
"div",
|
|
12693
12788
|
{
|
|
12694
|
-
className: cn2(
|
|
12789
|
+
className: cn2(
|
|
12790
|
+
"lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]",
|
|
12791
|
+
className
|
|
12792
|
+
),
|
|
12695
12793
|
style: { textAlign: "left", listStyle: "none" },
|
|
12696
12794
|
children: [
|
|
12697
12795
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [
|
|
@@ -12699,7 +12797,7 @@ var UserOpStatus = ({
|
|
|
12699
12797
|
stateBadge(),
|
|
12700
12798
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
12701
12799
|
] }),
|
|
12702
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Button, { variant: "ghost", size: "
|
|
12800
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
12703
12801
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_lucide_react42.RefreshCw, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
12704
12802
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-xs", children: "Refresh" })
|
|
12705
12803
|
] })
|
|
@@ -12711,7 +12809,7 @@ var UserOpStatus = ({
|
|
|
12711
12809
|
Button,
|
|
12712
12810
|
{
|
|
12713
12811
|
variant: "ghost",
|
|
12714
|
-
size: "
|
|
12812
|
+
size: "small",
|
|
12715
12813
|
className: "h-8 w-8 p-0",
|
|
12716
12814
|
onClick: async () => {
|
|
12717
12815
|
try {
|
|
@@ -12730,7 +12828,7 @@ var UserOpStatus = ({
|
|
|
12730
12828
|
Button,
|
|
12731
12829
|
{
|
|
12732
12830
|
variant: "ghost",
|
|
12733
|
-
size: "
|
|
12831
|
+
size: "small",
|
|
12734
12832
|
className: "h-8 w-8 p-0",
|
|
12735
12833
|
onClick: async () => {
|
|
12736
12834
|
try {
|
|
@@ -12798,8 +12896,8 @@ var UserOpStatus = ({
|
|
|
12798
12896
|
};
|
|
12799
12897
|
|
|
12800
12898
|
// src/internal/components/Hash.tsx
|
|
12801
|
-
var React21 = __toESM(require("react"), 1);
|
|
12802
12899
|
var import_lucide_react43 = require("lucide-react");
|
|
12900
|
+
var React19 = __toESM(require("react"), 1);
|
|
12803
12901
|
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
12804
12902
|
function toExplorerUrl(kind, value, chain) {
|
|
12805
12903
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12823,7 +12921,7 @@ var Hash = ({
|
|
|
12823
12921
|
}) => {
|
|
12824
12922
|
const value = hash || "";
|
|
12825
12923
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12826
|
-
const [copied, setCopied] =
|
|
12924
|
+
const [copied, setCopied] = React19.useState(false);
|
|
12827
12925
|
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12828
12926
|
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12829
12927
|
label && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12832,7 +12930,7 @@ var Hash = ({
|
|
|
12832
12930
|
Button,
|
|
12833
12931
|
{
|
|
12834
12932
|
variant: "ghost",
|
|
12835
|
-
size: "
|
|
12933
|
+
size: "small",
|
|
12836
12934
|
title: copied ? "Copied" : "Copy",
|
|
12837
12935
|
onClick: async () => {
|
|
12838
12936
|
try {
|
|
@@ -12860,14 +12958,14 @@ var Hash = ({
|
|
|
12860
12958
|
};
|
|
12861
12959
|
|
|
12862
12960
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
12863
|
-
var
|
|
12961
|
+
var import_react52 = require("react");
|
|
12864
12962
|
init_base();
|
|
12865
12963
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
12866
12964
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
12867
|
-
const [transactions, setTransactions] = (0,
|
|
12868
|
-
const [loading, setLoading] = (0,
|
|
12869
|
-
const [error, setError] = (0,
|
|
12870
|
-
(0,
|
|
12965
|
+
const [transactions, setTransactions] = (0, import_react52.useState)([]);
|
|
12966
|
+
const [loading, setLoading] = (0, import_react52.useState)(true);
|
|
12967
|
+
const [error, setError] = (0, import_react52.useState)(null);
|
|
12968
|
+
(0, import_react52.useEffect)(() => {
|
|
12871
12969
|
const fetchTransactions = async () => {
|
|
12872
12970
|
try {
|
|
12873
12971
|
setLoading(true);
|
|
@@ -12893,7 +12991,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12893
12991
|
fetchTransactions();
|
|
12894
12992
|
}
|
|
12895
12993
|
}, [address, itemsCount]);
|
|
12896
|
-
const
|
|
12994
|
+
const formatValue3 = (value) => {
|
|
12897
12995
|
try {
|
|
12898
12996
|
const wei = BigInt(value);
|
|
12899
12997
|
const eth = Number(wei) / 1e18;
|
|
@@ -12963,7 +13061,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12963
13061
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { children: [
|
|
12964
13062
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "text-gray-600", children: "Value:" }),
|
|
12965
13063
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("span", { className: "font-semibold ml-1", children: [
|
|
12966
|
-
|
|
13064
|
+
formatValue3(tx.value),
|
|
12967
13065
|
" LUMIA"
|
|
12968
13066
|
] })
|
|
12969
13067
|
] })
|
|
@@ -12986,7 +13084,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12986
13084
|
};
|
|
12987
13085
|
|
|
12988
13086
|
// src/hooks/useUserOpStatus.ts
|
|
12989
|
-
var
|
|
13087
|
+
var React21 = __toESM(require("react"), 1);
|
|
12990
13088
|
init_base();
|
|
12991
13089
|
function useUserOpStatus(options = {}) {
|
|
12992
13090
|
const {
|
|
@@ -12998,16 +13096,16 @@ function useUserOpStatus(options = {}) {
|
|
|
12998
13096
|
onReceipt,
|
|
12999
13097
|
onTxHash
|
|
13000
13098
|
} = options;
|
|
13001
|
-
const [state, setState] =
|
|
13002
|
-
const [receipt, setReceipt] =
|
|
13003
|
-
const [mempool, setMempool] =
|
|
13004
|
-
const [txHash, setTxHash] =
|
|
13005
|
-
const [error, setError] =
|
|
13006
|
-
const [isPolling, setIsPolling] =
|
|
13007
|
-
const intervalRef =
|
|
13008
|
-
const startTimeRef =
|
|
13009
|
-
const prevStateRef =
|
|
13010
|
-
const rpc =
|
|
13099
|
+
const [state, setState] = React21.useState("waiting");
|
|
13100
|
+
const [receipt, setReceipt] = React21.useState(null);
|
|
13101
|
+
const [mempool, setMempool] = React21.useState(null);
|
|
13102
|
+
const [txHash, setTxHash] = React21.useState(null);
|
|
13103
|
+
const [error, setError] = React21.useState(null);
|
|
13104
|
+
const [isPolling, setIsPolling] = React21.useState(false);
|
|
13105
|
+
const intervalRef = React21.useRef(null);
|
|
13106
|
+
const startTimeRef = React21.useRef(Date.now());
|
|
13107
|
+
const prevStateRef = React21.useRef("waiting");
|
|
13108
|
+
const rpc = React21.useCallback(async (method, params) => {
|
|
13011
13109
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
13012
13110
|
const res = await fetch(getBundlerUrl(), {
|
|
13013
13111
|
method: "POST",
|
|
@@ -13018,21 +13116,21 @@ function useUserOpStatus(options = {}) {
|
|
|
13018
13116
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
13019
13117
|
return json.result;
|
|
13020
13118
|
}, []);
|
|
13021
|
-
const extractMempoolInfo =
|
|
13119
|
+
const extractMempoolInfo = React21.useCallback((m) => {
|
|
13022
13120
|
if (!m) return null;
|
|
13023
13121
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
13024
13122
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
13025
13123
|
if (!entryPoint && !sender) return null;
|
|
13026
13124
|
return { entryPoint, sender };
|
|
13027
13125
|
}, []);
|
|
13028
|
-
const updateState =
|
|
13126
|
+
const updateState = React21.useCallback((newState) => {
|
|
13029
13127
|
setState(newState);
|
|
13030
13128
|
if (prevStateRef.current !== newState) {
|
|
13031
13129
|
prevStateRef.current = newState;
|
|
13032
13130
|
onStateChange?.(newState);
|
|
13033
13131
|
}
|
|
13034
13132
|
}, [onStateChange]);
|
|
13035
|
-
const tick =
|
|
13133
|
+
const tick = React21.useCallback(async () => {
|
|
13036
13134
|
if (!userOpHash || !enabled) return;
|
|
13037
13135
|
if (receipt) {
|
|
13038
13136
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13105,7 +13203,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13105
13203
|
onTxHash,
|
|
13106
13204
|
onReceipt
|
|
13107
13205
|
]);
|
|
13108
|
-
|
|
13206
|
+
React21.useEffect(() => {
|
|
13109
13207
|
if (!userOpHash || !enabled) return;
|
|
13110
13208
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13111
13209
|
startTimeRef.current = Date.now();
|
|
@@ -13117,7 +13215,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13117
13215
|
setError(null);
|
|
13118
13216
|
setIsPolling(false);
|
|
13119
13217
|
}, [userOpHash, enabled]);
|
|
13120
|
-
|
|
13218
|
+
React21.useEffect(() => {
|
|
13121
13219
|
if (!userOpHash || !enabled) {
|
|
13122
13220
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13123
13221
|
return;
|
|
@@ -13153,7 +13251,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13153
13251
|
}
|
|
13154
13252
|
};
|
|
13155
13253
|
}, [userOpHash, enabled, pollMs]);
|
|
13156
|
-
const refresh =
|
|
13254
|
+
const refresh = React21.useCallback(async () => {
|
|
13157
13255
|
await tick();
|
|
13158
13256
|
}, [tick]);
|
|
13159
13257
|
return {
|
|
@@ -13168,22 +13266,22 @@ function useUserOpStatus(options = {}) {
|
|
|
13168
13266
|
}
|
|
13169
13267
|
|
|
13170
13268
|
// src/hooks/useLogout.ts
|
|
13171
|
-
var
|
|
13172
|
-
var
|
|
13269
|
+
var import_auth20 = require("@lumiapassport/core/auth");
|
|
13270
|
+
var import_react53 = require("react");
|
|
13173
13271
|
function useLogout() {
|
|
13174
13272
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13175
13273
|
const { callbacks } = useLumiaPassportConfig();
|
|
13176
|
-
const logout2 = (0,
|
|
13274
|
+
const logout2 = (0, import_react53.useCallback)(async () => {
|
|
13177
13275
|
const prevAddress = address;
|
|
13178
13276
|
let userId = null;
|
|
13179
13277
|
setIsLoading(true);
|
|
13180
13278
|
try {
|
|
13181
|
-
userId =
|
|
13279
|
+
userId = import_auth20.jwtTokenManager.getUserId() || null;
|
|
13182
13280
|
} catch (error) {
|
|
13183
13281
|
console.warn("[useLogout] Could not get userId:", error);
|
|
13184
13282
|
}
|
|
13185
13283
|
try {
|
|
13186
|
-
await (0,
|
|
13284
|
+
await (0, import_auth20.logout)();
|
|
13187
13285
|
} catch (error) {
|
|
13188
13286
|
console.warn("[useLogout] Core logout failed:", error);
|
|
13189
13287
|
}
|
|
@@ -13320,49 +13418,6 @@ function useSmartAccountTransactions() {
|
|
|
13320
13418
|
};
|
|
13321
13419
|
}
|
|
13322
13420
|
|
|
13323
|
-
// src/modules/linkedProfiles.ts
|
|
13324
|
-
var React24 = __toESM(require("react"), 1);
|
|
13325
|
-
init_auth();
|
|
13326
|
-
init_common();
|
|
13327
|
-
init_types();
|
|
13328
|
-
function useLumiaPassportLinkedProfiles() {
|
|
13329
|
-
const { providersVersion } = useLumiaPassportConfig();
|
|
13330
|
-
const [profiles, setProfiles] = React24.useState([]);
|
|
13331
|
-
const [avatar, setAvatar] = React24.useState(null);
|
|
13332
|
-
const [isLoading, setIsLoading] = React24.useState(false);
|
|
13333
|
-
const [error, setError] = React24.useState(null);
|
|
13334
|
-
const load = React24.useCallback(async () => {
|
|
13335
|
-
setIsLoading(true);
|
|
13336
|
-
setError(null);
|
|
13337
|
-
try {
|
|
13338
|
-
const list = await getLinkedProviders();
|
|
13339
|
-
const enriched = list.map((p) => {
|
|
13340
|
-
const info = getProviderDisplayInfo(p.provider);
|
|
13341
|
-
return {
|
|
13342
|
-
...p,
|
|
13343
|
-
displayName: info.name,
|
|
13344
|
-
icon: info.icon
|
|
13345
|
-
// color: info.color,
|
|
13346
|
-
};
|
|
13347
|
-
});
|
|
13348
|
-
setProfiles(enriched);
|
|
13349
|
-
try {
|
|
13350
|
-
setAvatar(import_auth3.jwtTokenManager.getAvatar() || null);
|
|
13351
|
-
} catch {
|
|
13352
|
-
setAvatar(null);
|
|
13353
|
-
}
|
|
13354
|
-
} catch (e) {
|
|
13355
|
-
setError(e?.message || "Failed to load linked profiles");
|
|
13356
|
-
} finally {
|
|
13357
|
-
setIsLoading(false);
|
|
13358
|
-
}
|
|
13359
|
-
}, []);
|
|
13360
|
-
React24.useEffect(() => {
|
|
13361
|
-
load();
|
|
13362
|
-
}, [load, providersVersion]);
|
|
13363
|
-
return { profiles, avatar, isLoading, error, refresh: load };
|
|
13364
|
-
}
|
|
13365
|
-
|
|
13366
13421
|
// src/index.ts
|
|
13367
13422
|
init_iframe_manager();
|
|
13368
13423
|
(() => {
|