@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.js
CHANGED
|
@@ -4251,26 +4251,34 @@ var init_profile = __esm({
|
|
|
4251
4251
|
});
|
|
4252
4252
|
|
|
4253
4253
|
// src/styles/built.css
|
|
4254
|
-
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60dvh\\]{max-height:60dvh}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .\\!bg-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:Inter;src:url(@/src/styles/Inter-VariableFont_opsz,wght.ttf) format("truetype-variations");font-weight:100 900;font-stretch:75% 125%;font-style:normal;font-display:swap}.lumia-scope{--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.8));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.6));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.9));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.7));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,system-ui,Inter,sans-serif;font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:calc(100% + 8px);padding-right:4px;overflow-y:auto;max-height:calc(var(--l-pass-maw)*2/3)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:opacity-90::file-selector-button:hover{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4254
|
+
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-\\[var\\(--l-pass-list-bd\\)\\]{border-color:var(--l-pass-list-bd)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@font-face{font-family:Inter;src:url(@/src/styles/Inter-VariableFont_opsz,wght.ttf) format("truetype-variations");font-weight:100 900;font-stretch:75% 125%;font-style:normal;font-display:swap}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff);margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{appearance:none;-webkit-appearance:none;-moz-appearance:none;border-style:solid;outline:none}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-l,0);overflow-y:auto;max-height:320px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .file\\:mr-3::file-selector-button{margin-right:.75rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-bg-info\\)\\]::file-selector-button{background-color:var(--l-pass-bg-info)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-3::file-selector-button{padding-left:.75rem;padding-right:.75rem}.lumia-scope .file\\:py-1\\.5::file-selector-button{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:text-xs::file-selector-button{font-size:.75rem;line-height:1rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-info\\)\\]::file-selector-button{color:var(--l-pass-info)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:opacity-90::file-selector-button:hover{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4255
4255
|
|
|
4256
4256
|
// src/context/LumiaPassportContext.tsx
|
|
4257
4257
|
init_lumiaPassport();
|
|
4258
4258
|
init_iframe_manager();
|
|
4259
4259
|
import { initSdkErrorTracking } from "@lumiapassport/core/internal/error-tracking";
|
|
4260
|
-
import {
|
|
4260
|
+
import { merge } from "lodash-es";
|
|
4261
|
+
import {
|
|
4262
|
+
createContext,
|
|
4263
|
+
useCallback as useCallback17,
|
|
4264
|
+
useContext,
|
|
4265
|
+
useEffect as useEffect30,
|
|
4266
|
+
useMemo as useMemo3,
|
|
4267
|
+
useRef as useRef10
|
|
4268
|
+
} from "react";
|
|
4261
4269
|
|
|
4262
4270
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4263
|
-
import { Fragment as
|
|
4271
|
+
import { Fragment as Fragment11 } from "react";
|
|
4264
4272
|
import { create as create5 } from "zustand";
|
|
4265
4273
|
|
|
4266
4274
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4267
4275
|
import { AnimatePresence as AnimatePresence4, motion as motion4 } from "framer-motion";
|
|
4268
|
-
import { useEffect as
|
|
4276
|
+
import { useEffect as useEffect26 } from "react";
|
|
4269
4277
|
|
|
4270
4278
|
// package.json
|
|
4271
4279
|
var package_default = {
|
|
4272
4280
|
name: "@lumiapassport/ui-kit",
|
|
4273
|
-
version: "1.
|
|
4281
|
+
version: "1.13.1",
|
|
4274
4282
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4275
4283
|
type: "module",
|
|
4276
4284
|
main: "./dist/index.cjs",
|
|
@@ -4359,7 +4367,7 @@ var package_default = {
|
|
|
4359
4367
|
|
|
4360
4368
|
// src/internal/components/Footer/Footer.tsx
|
|
4361
4369
|
import { useMutation } from "@tanstack/react-query";
|
|
4362
|
-
import { LogOut } from "lucide-react";
|
|
4370
|
+
import { Loader, LogOut } from "lucide-react";
|
|
4363
4371
|
|
|
4364
4372
|
// src/internal/assets/LumiaLogo.tsx
|
|
4365
4373
|
import { forwardRef } from "react";
|
|
@@ -4422,8 +4430,10 @@ import { create } from "zustand";
|
|
|
4422
4430
|
// src/internal/constants.ts
|
|
4423
4431
|
init_assets();
|
|
4424
4432
|
import { Key as Key2, Mail as Mail2, Wallet2 as Wallet22 } from "lucide-react";
|
|
4425
|
-
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4426
4433
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4434
|
+
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4435
|
+
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4436
|
+
var MAX_LIST_HEIGHT = 320;
|
|
4427
4437
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4428
4438
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4429
4439
|
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
@@ -4525,37 +4535,32 @@ var buttonVariants = cva(
|
|
|
4525
4535
|
default: cn(
|
|
4526
4536
|
"border border-transparent",
|
|
4527
4537
|
"bg-[var(--l-pass-primary)] text-[var(--l-pass-fg-inverted)]",
|
|
4528
|
-
"hover:bg-[var(--l-pass-primary-h)]
|
|
4529
|
-
"active:bg-[var(--l-pass-primary-a)]"
|
|
4538
|
+
"hover:bg-[var(--l-pass-primary-h)]",
|
|
4539
|
+
"active:bg-[var(--l-pass-primary-a)]",
|
|
4540
|
+
"disabled:hover:bg-[var(--l-pass-primary)] disabled:active:bg-[var(--l-pass-primary)]"
|
|
4530
4541
|
),
|
|
4531
4542
|
outline: cn(
|
|
4532
4543
|
"border border-[var(--l-pass-bd)] bg-transparent text-[var(--l-pass-fg)]",
|
|
4533
|
-
"hover:text-[var(--l-pass-fg-h)]
|
|
4534
|
-
"active:text-[var(--l-pass-fg-a)]
|
|
4544
|
+
"hover:text-[var(--l-pass-fg-h)]",
|
|
4545
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4546
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4535
4547
|
),
|
|
4536
4548
|
ghost: cn(
|
|
4537
|
-
"border border-transparent",
|
|
4538
|
-
"bg-transparent text-[var(--l-pass-fg)]",
|
|
4549
|
+
"border border-transparent bg-transparent text-[var(--l-pass-fg)]",
|
|
4539
4550
|
"hover:text-[var(--l-pass-fg-h)]",
|
|
4540
|
-
"
|
|
4541
|
-
"active:text-[var(--l-pass-fg
|
|
4542
|
-
)
|
|
4543
|
-
// deprecate
|
|
4544
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
4545
|
-
secondary: "bg-gray-600 text-white hover:bg-gray-500 dark:bg-gray-700 dark:hover:bg-gray-600",
|
|
4546
|
-
link: "bg-transparent !bg-transparent text-blue-600 hover:text-blue-700 underline-offset-4 hover:underline",
|
|
4547
|
-
telegram: "bg-[#0088cc] text-white hover:bg-[#0077bb]",
|
|
4548
|
-
success: "bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600"
|
|
4551
|
+
"active:text-[var(--l-pass-fg-a)]",
|
|
4552
|
+
"disabled:hover:text-[var(--l-pass-fg)] disabled:active:text-[var(--l-pass-fg)]"
|
|
4553
|
+
)
|
|
4549
4554
|
},
|
|
4550
4555
|
size: {
|
|
4551
4556
|
small: "h-6 px-2 rounded-[5px]",
|
|
4552
4557
|
medium: "h-8 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4553
4558
|
large: "h-12 px-4 rounded-[var(--l-pass-el-bdrs)]",
|
|
4554
|
-
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4559
|
+
icon: "h-8 w-8 p-0 rounded-[5px]"
|
|
4555
4560
|
// deprecate
|
|
4556
|
-
default:
|
|
4557
|
-
sm:
|
|
4558
|
-
lg:
|
|
4561
|
+
// default: 'h-10 px-4 py-2',
|
|
4562
|
+
// sm: 'h-9 rounded-xl px-3',
|
|
4563
|
+
// lg: 'h-11 rounded-xl px-8'
|
|
4559
4564
|
}
|
|
4560
4565
|
},
|
|
4561
4566
|
defaultVariants: {
|
|
@@ -4609,10 +4614,8 @@ function Footer() {
|
|
|
4609
4614
|
return /* @__PURE__ */ jsxs3(
|
|
4610
4615
|
"div",
|
|
4611
4616
|
{
|
|
4612
|
-
|
|
4613
|
-
|
|
4614
|
-
"border-t border-[var(--l-pass-bd)]"
|
|
4615
|
-
),
|
|
4617
|
+
style: { borderTop: "1px solid var(--l-pass-bd)" },
|
|
4618
|
+
className: cn("w-full flex flex-col gap-1 items-center p-[var(--l-pass-pd)] pb-5"),
|
|
4616
4619
|
children: [
|
|
4617
4620
|
/* @__PURE__ */ jsxs3("div", { className: "w-full flex items-center justify-between", children: [
|
|
4618
4621
|
/* @__PURE__ */ jsxs3(
|
|
@@ -4651,12 +4654,12 @@ function Footer() {
|
|
|
4651
4654
|
disabled: isDisconnecting,
|
|
4652
4655
|
children: [
|
|
4653
4656
|
/* @__PURE__ */ jsx4("span", { children: "Log Out" }),
|
|
4654
|
-
/* @__PURE__ */ jsx4(LogOut, { className: "w-4 h-4" })
|
|
4657
|
+
isDisconnecting ? /* @__PURE__ */ jsx4(Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx4(LogOut, { className: "w-4 h-4" })
|
|
4655
4658
|
]
|
|
4656
4659
|
}
|
|
4657
|
-
) : /* @__PURE__ */ jsx4("span", { className: "text-
|
|
4660
|
+
) : /* @__PURE__ */ jsx4("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4658
4661
|
] }),
|
|
4659
|
-
!!address && /* @__PURE__ */ jsx4("span", { className: "text-
|
|
4662
|
+
!!address && /* @__PURE__ */ jsx4("span", { className: "font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: `v${package_default.version}` })
|
|
4660
4663
|
]
|
|
4661
4664
|
}
|
|
4662
4665
|
);
|
|
@@ -4713,7 +4716,7 @@ function LumiaIcon(props) {
|
|
|
4713
4716
|
|
|
4714
4717
|
// src/internal/components/Header/Header.tsx
|
|
4715
4718
|
import { useQuery } from "@tanstack/react-query";
|
|
4716
|
-
import { Check, CheckCircle2, Copy, Loader } from "lucide-react";
|
|
4719
|
+
import { Check, CheckCircle2, Copy, Loader as Loader2 } from "lucide-react";
|
|
4717
4720
|
import { useState } from "react";
|
|
4718
4721
|
init_auth();
|
|
4719
4722
|
init_clients();
|
|
@@ -4745,7 +4748,9 @@ function formatAddress(addr) {
|
|
|
4745
4748
|
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
4746
4749
|
}
|
|
4747
4750
|
function Header() {
|
|
4748
|
-
const {
|
|
4751
|
+
const {
|
|
4752
|
+
config: { current: config }
|
|
4753
|
+
} = useLumiaPassportConfig();
|
|
4749
4754
|
const address = useLumiaPassportSession((st) => st.address);
|
|
4750
4755
|
const [copied, setCopied] = useState(false);
|
|
4751
4756
|
const avatar = jwtTokenManager2.getAvatar();
|
|
@@ -4759,91 +4764,107 @@ function Header() {
|
|
|
4759
4764
|
const isKycVerified = !isUserProfileLoading && userProfile?.kycDetails?.kycStatus === "verified" || true;
|
|
4760
4765
|
const { name, logo, logoDataUri } = lumiaBeam;
|
|
4761
4766
|
const isNetworkIcon = !!logoDataUri || logo === "lumia";
|
|
4762
|
-
return /* @__PURE__ */ jsxs6(
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
className: "flex-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
/* @__PURE__ */ jsx7(
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
)
|
|
4788
|
-
] }),
|
|
4789
|
-
isUserProfileLoading && /* @__PURE__ */ jsx7(Loader, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" })
|
|
4790
|
-
] })
|
|
4791
|
-
]
|
|
4792
|
-
}
|
|
4793
|
-
)
|
|
4794
|
-
] }),
|
|
4795
|
-
!!address && /* @__PURE__ */ jsxs6("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
4796
|
-
/* @__PURE__ */ jsx7("span", { className: "block text-xs text-[var(--l-pass-fg-muted)]", children: formatAddress(address) }),
|
|
4797
|
-
/* @__PURE__ */ jsxs6("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] justify-between", children: [
|
|
4798
|
-
/* @__PURE__ */ jsxs6(
|
|
4799
|
-
Button,
|
|
4800
|
-
{
|
|
4801
|
-
size: "small",
|
|
4802
|
-
variant: "ghost",
|
|
4803
|
-
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4804
|
-
onClick: async () => {
|
|
4805
|
-
await navigator.clipboard.writeText(address);
|
|
4806
|
-
setCopied(true);
|
|
4807
|
-
setTimeout(() => setCopied(false), 1500);
|
|
4808
|
-
},
|
|
4809
|
-
children: [
|
|
4810
|
-
copied ? /* @__PURE__ */ jsx7(Check, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }) : /* @__PURE__ */ jsx7(Copy, { className: "w-4 h-4" }),
|
|
4811
|
-
/* @__PURE__ */ jsx7("span", { children: "COPY" })
|
|
4812
|
-
]
|
|
4813
|
-
}
|
|
4814
|
-
),
|
|
4815
|
-
/* @__PURE__ */ jsxs6(
|
|
4816
|
-
Button,
|
|
4817
|
-
{
|
|
4818
|
-
size: "small",
|
|
4819
|
-
variant: "ghost",
|
|
4820
|
-
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4821
|
-
onClick: () => {
|
|
4822
|
-
if (!address) return;
|
|
4823
|
-
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
4824
|
-
},
|
|
4825
|
-
children: [
|
|
4826
|
-
/* @__PURE__ */ jsxs6(
|
|
4827
|
-
"div",
|
|
4828
|
-
{
|
|
4829
|
-
className: cn(
|
|
4830
|
-
"flex-none w-4 h-4 rounded-full flex items-center justify-center overflow-hidden",
|
|
4831
|
-
isNetworkIcon ? "bg-transparent" : "bg-[var(--l-pass-primary)]"
|
|
4767
|
+
return /* @__PURE__ */ jsxs6(
|
|
4768
|
+
"div",
|
|
4769
|
+
{
|
|
4770
|
+
style: { borderBottom: "1px solid var(--l-pass-bd)" },
|
|
4771
|
+
className: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)] pt-5",
|
|
4772
|
+
children: [
|
|
4773
|
+
/* @__PURE__ */ jsxs6("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
4774
|
+
/* @__PURE__ */ jsx7("div", { className: "flex-none w-12 h-12 flex items-center justify-center", children: avatar ? /* @__PURE__ */ jsx7("img", { src: avatar, alt: displayName, className: "w-full h-full object-cover rounded-full" }) : /* @__PURE__ */ jsx7(LumiaIcon, { width: 48, height: 48 }) }),
|
|
4775
|
+
/* @__PURE__ */ jsxs6(
|
|
4776
|
+
"div",
|
|
4777
|
+
{
|
|
4778
|
+
style: { width: "calc(100% - 48px - var(--l-pass-gap))" },
|
|
4779
|
+
className: "flex-1 flex flex-col justify-center gap-1",
|
|
4780
|
+
children: [
|
|
4781
|
+
!!address && /* @__PURE__ */ jsx7(UsdBalance, { className: "text-lg leading-5 font-bold" }),
|
|
4782
|
+
/* @__PURE__ */ jsxs6("div", { className: "w-full flex items-center gap-2", children: [
|
|
4783
|
+
/* @__PURE__ */ jsx7(
|
|
4784
|
+
"span",
|
|
4785
|
+
{
|
|
4786
|
+
className: cn(
|
|
4787
|
+
"max-w-full font-mono text-xs leading-4 font-medium text-[var(--l-pass-fg-muted)",
|
|
4788
|
+
"text-ellipsis overflow-hidden whitespace-nowrap"
|
|
4789
|
+
),
|
|
4790
|
+
children: displayName || config.ui.title || "LumiaPassport"
|
|
4791
|
+
}
|
|
4832
4792
|
),
|
|
4833
|
-
children: [
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
|
|
4843
|
-
|
|
4844
|
-
|
|
4845
|
-
|
|
4846
|
-
|
|
4793
|
+
isKycVerified && /* @__PURE__ */ jsxs6("div", { className: "group relative flex flex-shrink-0", children: [
|
|
4794
|
+
/* @__PURE__ */ jsx7(CheckCircle2, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }),
|
|
4795
|
+
/* @__PURE__ */ jsx7(
|
|
4796
|
+
"div",
|
|
4797
|
+
{
|
|
4798
|
+
className: cn(
|
|
4799
|
+
"transition-opacity pointer-events-none whitespace-nowrap z-50",
|
|
4800
|
+
"absolute top-1/2 right-full -translate-y-1/2 -translate-x-[var(--l-pass-gap)]",
|
|
4801
|
+
"px-2 py-1 bg-[var(--l-pass-bg-success)] text-[var(--l-pass-fg)] text-xs rounded-full",
|
|
4802
|
+
"opacity-0 group-hover:opacity-100"
|
|
4803
|
+
),
|
|
4804
|
+
children: "KYC Verified"
|
|
4805
|
+
}
|
|
4806
|
+
)
|
|
4807
|
+
] }),
|
|
4808
|
+
isUserProfileLoading && /* @__PURE__ */ jsx7(Loader2, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" })
|
|
4809
|
+
] })
|
|
4810
|
+
]
|
|
4811
|
+
}
|
|
4812
|
+
)
|
|
4813
|
+
] }),
|
|
4814
|
+
!!address && /* @__PURE__ */ jsxs6("div", { className: "w-full flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
4815
|
+
/* @__PURE__ */ jsx7("span", { className: "block font-mono text-[10px] break-all leading-6 text-[var(--l-pass-fg-muted)]", children: formatAddress(address) }),
|
|
4816
|
+
/* @__PURE__ */ jsxs6("div", { className: "w-fit flex items-center gap-[var(--l-pass-gap)] justify-between", children: [
|
|
4817
|
+
/* @__PURE__ */ jsxs6(
|
|
4818
|
+
Button,
|
|
4819
|
+
{
|
|
4820
|
+
size: "small",
|
|
4821
|
+
variant: "ghost",
|
|
4822
|
+
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4823
|
+
onClick: async () => {
|
|
4824
|
+
await navigator.clipboard.writeText(address);
|
|
4825
|
+
setCopied(true);
|
|
4826
|
+
setTimeout(() => setCopied(false), 1500);
|
|
4827
|
+
},
|
|
4828
|
+
children: [
|
|
4829
|
+
copied ? /* @__PURE__ */ jsx7(Check, { className: "w-4 h-4 text-[var(--l-pass-bg-success)]" }) : /* @__PURE__ */ jsx7(Copy, { className: "w-4 h-4" }),
|
|
4830
|
+
/* @__PURE__ */ jsx7("span", { children: "COPY" })
|
|
4831
|
+
]
|
|
4832
|
+
}
|
|
4833
|
+
),
|
|
4834
|
+
/* @__PURE__ */ jsxs6(
|
|
4835
|
+
Button,
|
|
4836
|
+
{
|
|
4837
|
+
size: "small",
|
|
4838
|
+
variant: "ghost",
|
|
4839
|
+
className: "text-[10px] px-0 text-[var(--l-pass-fg-muted)] hover:text-[var(--l-pass-fg)]",
|
|
4840
|
+
onClick: () => {
|
|
4841
|
+
if (!address) return;
|
|
4842
|
+
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
4843
|
+
},
|
|
4844
|
+
children: [
|
|
4845
|
+
/* @__PURE__ */ jsxs6(
|
|
4846
|
+
"div",
|
|
4847
|
+
{
|
|
4848
|
+
className: cn(
|
|
4849
|
+
"flex-none w-4 h-4 rounded-full flex items-center justify-center overflow-hidden",
|
|
4850
|
+
isNetworkIcon ? "bg-transparent" : "bg-[var(--l-pass-primary)]"
|
|
4851
|
+
),
|
|
4852
|
+
children: [
|
|
4853
|
+
logoDataUri && logo !== "lumia" && /* @__PURE__ */ jsx7("img", { src: logoDataUri, alt: "Chain Logo", className: "w-4 h-4 object-cover" }),
|
|
4854
|
+
!logoDataUri && logo === "lumia" && /* @__PURE__ */ jsx7(LumiaLogo, { size: 16 }),
|
|
4855
|
+
!logoDataUri && logo !== "lumia" && /* @__PURE__ */ jsx7("span", { className: "text-[var(--l-pass-fg-inverted)] text-xs font-bold", children: (name || "L").charAt(0) })
|
|
4856
|
+
]
|
|
4857
|
+
}
|
|
4858
|
+
),
|
|
4859
|
+
"EXPLORER"
|
|
4860
|
+
]
|
|
4861
|
+
}
|
|
4862
|
+
)
|
|
4863
|
+
] })
|
|
4864
|
+
] })
|
|
4865
|
+
]
|
|
4866
|
+
}
|
|
4867
|
+
);
|
|
4847
4868
|
}
|
|
4848
4869
|
{
|
|
4849
4870
|
}
|
|
@@ -4919,14 +4940,16 @@ var DialogContent = React2.forwardRef(
|
|
|
4919
4940
|
DialogPrimitive.Content,
|
|
4920
4941
|
{
|
|
4921
4942
|
ref,
|
|
4922
|
-
style: !!className ? void 0 : {
|
|
4943
|
+
style: !!className ? void 0 : {
|
|
4944
|
+
backgroundColor: "var(--l-pass-bg)",
|
|
4945
|
+
border: "1px solid var(--l-pass-bd)",
|
|
4946
|
+
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
4947
|
+
},
|
|
4923
4948
|
className: cn(
|
|
4924
4949
|
"relative pointer-events-auto w-full",
|
|
4925
4950
|
"text-[var(--l-pass-fg)]",
|
|
4926
4951
|
"rounded-[var(--l-pass-bdrs)] overflow-hidden",
|
|
4927
4952
|
"max-w-[var(--l-pass-maw)] max-h-[80vh] p-0 gap-0",
|
|
4928
|
-
// this gives complete dialog bg & border control by external className
|
|
4929
|
-
!className && "bg-[var(--l-pass-bg)] border border-[var(--l-pass-bd)]",
|
|
4930
4953
|
className
|
|
4931
4954
|
),
|
|
4932
4955
|
...props,
|
|
@@ -5003,7 +5026,10 @@ var VisuallyHidden = ({ children }) => /* @__PURE__ */ jsx9("span", { className:
|
|
|
5003
5026
|
// src/internal/hooks/useAutoConnect.ts
|
|
5004
5027
|
import { useCallback, useEffect, useRef } from "react";
|
|
5005
5028
|
function useAutoConnect() {
|
|
5006
|
-
const {
|
|
5029
|
+
const {
|
|
5030
|
+
config: { current: config },
|
|
5031
|
+
callbacks
|
|
5032
|
+
} = useLumiaPassportConfig();
|
|
5007
5033
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5008
5034
|
const {
|
|
5009
5035
|
session,
|
|
@@ -5229,11 +5255,11 @@ function useCheckVaultStatus() {
|
|
|
5229
5255
|
}
|
|
5230
5256
|
|
|
5231
5257
|
// src/internal/hooks/usePageMapper.tsx
|
|
5232
|
-
import { useCallback as
|
|
5258
|
+
import { useCallback as useCallback14, useEffect as useEffect23 } from "react";
|
|
5233
5259
|
|
|
5234
5260
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5235
5261
|
import { AnimatePresence, motion } from "framer-motion";
|
|
5236
|
-
import { Loader as
|
|
5262
|
+
import { Loader as Loader5 } from "lucide-react";
|
|
5237
5263
|
import { useEffect as useEffect7, useMemo } from "react";
|
|
5238
5264
|
|
|
5239
5265
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
@@ -5492,10 +5518,13 @@ import { Fragment } from "react";
|
|
|
5492
5518
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
5493
5519
|
init_lumiaPassport();
|
|
5494
5520
|
init_projectId();
|
|
5495
|
-
import { ChevronRight, Loader as
|
|
5521
|
+
import { ChevronRight, Loader as Loader3, Mail as Mail3 } from "lucide-react";
|
|
5496
5522
|
import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
5497
5523
|
function Email() {
|
|
5498
|
-
const {
|
|
5524
|
+
const {
|
|
5525
|
+
config: { current: config },
|
|
5526
|
+
callbacks
|
|
5527
|
+
} = useLumiaPassportConfig();
|
|
5499
5528
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5500
5529
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
5501
5530
|
const { email, codeSendError, setEmail, setCodeSendError, setExpiresIn, setStep } = useAuthStore();
|
|
@@ -5566,7 +5595,7 @@ function Email() {
|
|
|
5566
5595
|
size: "large",
|
|
5567
5596
|
disabled: !email || isLoading,
|
|
5568
5597
|
onClick: onSendVerificationCode,
|
|
5569
|
-
children: isLoading ? /* @__PURE__ */ jsx14(
|
|
5598
|
+
children: isLoading ? /* @__PURE__ */ jsx14(Loader3, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx14(ChevronRight, { className: "w-4 h-4" })
|
|
5570
5599
|
}
|
|
5571
5600
|
)
|
|
5572
5601
|
] });
|
|
@@ -5649,7 +5678,10 @@ var normalizeLoginResponse = async (rawLoginResponse, providerKey, userData) =>
|
|
|
5649
5678
|
};
|
|
5650
5679
|
function Social(props) {
|
|
5651
5680
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
5652
|
-
const {
|
|
5681
|
+
const {
|
|
5682
|
+
config: { current: config },
|
|
5683
|
+
callbacks
|
|
5684
|
+
} = useLumiaPassportConfig();
|
|
5653
5685
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5654
5686
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
5655
5687
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
@@ -6062,7 +6094,9 @@ function getSignInEnabledMethods(params) {
|
|
|
6062
6094
|
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
6063
6095
|
function SignInStep(props) {
|
|
6064
6096
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6065
|
-
const {
|
|
6097
|
+
const {
|
|
6098
|
+
config: { current: config }
|
|
6099
|
+
} = useLumiaPassportConfig();
|
|
6066
6100
|
const alert2 = useAuthStore((st) => st.alert);
|
|
6067
6101
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6068
6102
|
const enabledWoPasskey = getSignInEnabledMethods({ order: config.ui.authOrder, config, exclude: ["passkey"] });
|
|
@@ -6186,7 +6220,7 @@ function Expandable(props) {
|
|
|
6186
6220
|
{
|
|
6187
6221
|
...divProps,
|
|
6188
6222
|
ref: expandableRef,
|
|
6189
|
-
className: cn("w-full overflow-hidden", className),
|
|
6223
|
+
className: cn("w-full overflow-y-hidden", className),
|
|
6190
6224
|
style: { height: "var(--ifo-basic-expandable-h)", transition: "height 375ms ease" },
|
|
6191
6225
|
children: /* @__PURE__ */ jsx19("div", { className: cn("w-full", contentClassName), ref: contentRef, style: minHeight ? { minHeight } : void 0, children })
|
|
6192
6226
|
}
|
|
@@ -6207,9 +6241,12 @@ function normalizeWebAuthnError(err) {
|
|
|
6207
6241
|
}
|
|
6208
6242
|
function PassKeyStep(props) {
|
|
6209
6243
|
const { pendingLoginResponseRef, onAuthSuccess, checkDisplayNameRequired } = props;
|
|
6210
|
-
const {
|
|
6211
|
-
|
|
6244
|
+
const {
|
|
6245
|
+
config: { current: config },
|
|
6246
|
+
callbacks
|
|
6247
|
+
} = useLumiaPassportConfig();
|
|
6212
6248
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6249
|
+
const recoveryUserId = useLumiaPassportSession((st) => st.recoveryUserId);
|
|
6213
6250
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6214
6251
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6215
6252
|
const autoCloseOnSuccess = !recoveryUserId;
|
|
@@ -6417,7 +6454,10 @@ function PassKeyStep(props) {
|
|
|
6417
6454
|
init_auth();
|
|
6418
6455
|
import { useCallback as useCallback5, useRef as useRef4, useState as useState3 } from "react";
|
|
6419
6456
|
function useAuthMenuHandlers() {
|
|
6420
|
-
const {
|
|
6457
|
+
const {
|
|
6458
|
+
config: { current: config },
|
|
6459
|
+
callbacks
|
|
6460
|
+
} = useLumiaPassportConfig();
|
|
6421
6461
|
const pendingLoginResponseRef = useRef4(null);
|
|
6422
6462
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6423
6463
|
const [telegramCleanup, setTelegramCleanup] = useState3(null);
|
|
@@ -6628,7 +6668,7 @@ function useListenIframeAuthEvents() {
|
|
|
6628
6668
|
// src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
|
|
6629
6669
|
init_lumiaPassport();
|
|
6630
6670
|
import { useMutation as useMutation3 } from "@tanstack/react-query";
|
|
6631
|
-
import { ArrowLeft as ArrowLeft3, Loader as
|
|
6671
|
+
import { ArrowLeft as ArrowLeft3, Loader as Loader4 } from "lucide-react";
|
|
6632
6672
|
|
|
6633
6673
|
// src/internal/assets/OtpIcon.tsx
|
|
6634
6674
|
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
@@ -6739,7 +6779,7 @@ var VerificationCodeInput = (props) => {
|
|
|
6739
6779
|
className: cn(
|
|
6740
6780
|
isLoading ? "cursor-default opacity-50" : "cursor-text",
|
|
6741
6781
|
"text-[var(--l-pass-fg)]",
|
|
6742
|
-
"w-10 h-12 text-lg text-center font-semibold rounded-[var(--l-pass-el-bdrs)]
|
|
6782
|
+
"w-10 h-12 text-lg text-center font-semibold rounded-[var(--l-pass-el-bdrs)]",
|
|
6743
6783
|
"bg-[var(--l-pass-secondary)] focus:bg-[var(--l-pass-secondary-a)] hover:bg-[var(--l-pass-secondary-h)]",
|
|
6744
6784
|
"focus:outline-none focus:bg-[var(--l-pass-secondary-a)] focus:inset-ring-2 focus:inset-ring-[var(--l-pass-bd-intense)]"
|
|
6745
6785
|
)
|
|
@@ -6904,7 +6944,7 @@ function VerifyStep(props) {
|
|
|
6904
6944
|
/* @__PURE__ */ jsxs18("div", { className: "relative flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
|
|
6905
6945
|
/* @__PURE__ */ jsx23(OtpIcon, { className: "w-6 h-6" }),
|
|
6906
6946
|
/* @__PURE__ */ jsx23("span", { className: "font-bold text-xl leading-6", children: "Verification code" }),
|
|
6907
|
-
isLoading && /* @__PURE__ */ jsx23(
|
|
6947
|
+
isLoading && /* @__PURE__ */ jsx23(Loader4, { className: "h-4 w-4 animate-spin" }),
|
|
6908
6948
|
/* @__PURE__ */ jsxs18(
|
|
6909
6949
|
Button,
|
|
6910
6950
|
{
|
|
@@ -6942,10 +6982,10 @@ function VerifyStep(props) {
|
|
|
6942
6982
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
6943
6983
|
import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
6944
6984
|
var AuthMenu = () => {
|
|
6985
|
+
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
6945
6986
|
const page = useLayoutDataStore((st) => st.page);
|
|
6946
6987
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
6947
6988
|
useEffect7(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
6948
|
-
const { isIframeReady } = useLumiaPassportSession();
|
|
6949
6989
|
const {
|
|
6950
6990
|
step,
|
|
6951
6991
|
setStep,
|
|
@@ -6971,7 +7011,7 @@ var AuthMenu = () => {
|
|
|
6971
7011
|
const { pendingLoginResponseRef, onAuthSuccess, goBackToSignIn, checkDisplayNameRequired } = useAuthMenuHandlers();
|
|
6972
7012
|
if (!isIframeReady) {
|
|
6973
7013
|
return /* @__PURE__ */ jsxs19("div", { className: "w-full p-8 flex flex-col justify-center items-center", "data-auth-step": "initializing", children: [
|
|
6974
|
-
/* @__PURE__ */ jsx24(
|
|
7014
|
+
/* @__PURE__ */ jsx24(Loader5, { className: "w-6 h-6 animate-spin mb-3" }),
|
|
6975
7015
|
/* @__PURE__ */ jsx24("p", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Initializing wallet..." })
|
|
6976
7016
|
] });
|
|
6977
7017
|
}
|
|
@@ -7735,7 +7775,7 @@ var useSelectables = () => {
|
|
|
7735
7775
|
// src/internal/components/BuyMenu/ByuMenu.tsx
|
|
7736
7776
|
import { jsx as jsx33, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
7737
7777
|
function BuyMenu() {
|
|
7738
|
-
const walletAddress = useLumiaPassportSession().address;
|
|
7778
|
+
const walletAddress = useLumiaPassportSession((st) => st.address);
|
|
7739
7779
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7740
7780
|
const control = useSelectables();
|
|
7741
7781
|
const { rampProvider, setrRampProvider } = control;
|
|
@@ -7822,7 +7862,7 @@ function Highlight(props) {
|
|
|
7822
7862
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
7823
7863
|
import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
7824
7864
|
function KeyshareBackupMenu() {
|
|
7825
|
-
const
|
|
7865
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
7826
7866
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7827
7867
|
const userId = session?.mpcUserId || "";
|
|
7828
7868
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
@@ -8113,12 +8153,15 @@ function KeyshareBackupMenu() {
|
|
|
8113
8153
|
|
|
8114
8154
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8115
8155
|
import { useMutation as useMutation6 } from "@tanstack/react-query";
|
|
8116
|
-
import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle23, Eye as Eye2, EyeOff as EyeOff2, Key as Key6, Loader as
|
|
8156
|
+
import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle23, Eye as Eye2, EyeOff as EyeOff2, Key as Key6, Loader as Loader6, Server as Server2, Upload } from "lucide-react";
|
|
8117
8157
|
import React10, { useCallback as useCallback8, useEffect as useEffect13 } from "react";
|
|
8118
8158
|
init_vaultClient();
|
|
8119
8159
|
import { Fragment as Fragment5, jsx as jsx37, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
8120
8160
|
var KeyshareRestoreMenu = () => {
|
|
8121
|
-
const {
|
|
8161
|
+
const {
|
|
8162
|
+
config: { current: config },
|
|
8163
|
+
callbacks
|
|
8164
|
+
} = useLumiaPassportConfig();
|
|
8122
8165
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8123
8166
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8124
8167
|
useEffect13(() => setIsDialogForced(true), []);
|
|
@@ -8323,7 +8366,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8323
8366
|
return /* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col p-4", children: [
|
|
8324
8367
|
/* @__PURE__ */ jsxs27("div", { className: "w-full flex flex-col gap-1", children: [
|
|
8325
8368
|
/* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", children: [
|
|
8326
|
-
/* @__PURE__ */ jsx37(
|
|
8369
|
+
/* @__PURE__ */ jsx37(Loader6, { className: "w-5 h-5 animate-spin" }),
|
|
8327
8370
|
/* @__PURE__ */ jsx37("span", { className: "text-xl leading-5 font-semibold", children: "Checking Backup Availability" })
|
|
8328
8371
|
] }),
|
|
8329
8372
|
/* @__PURE__ */ jsx37("span", { className: "text-sm", children: "Please wait while we check for available backups..." })
|
|
@@ -8694,13 +8737,15 @@ var SumsubIframeManager = class {
|
|
|
8694
8737
|
|
|
8695
8738
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8696
8739
|
function useSumsubIframe({ iframeUrl }) {
|
|
8740
|
+
const {
|
|
8741
|
+
config: { current: config }
|
|
8742
|
+
} = useLumiaPassportConfig();
|
|
8697
8743
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8698
8744
|
const iframeRef = useRef8(null);
|
|
8699
8745
|
const [isLoading, setIsLoading] = useState6(true);
|
|
8700
8746
|
const [error, setError] = useState6(null);
|
|
8701
8747
|
const [height, setHeight] = useState6(0);
|
|
8702
8748
|
const [status, setStatus] = useState6("");
|
|
8703
|
-
const { config } = useLumiaPassportConfig();
|
|
8704
8749
|
const levelName = config.kyc?.options?.levelName;
|
|
8705
8750
|
useEffect14(() => {
|
|
8706
8751
|
setError(null);
|
|
@@ -8748,7 +8793,9 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8748
8793
|
import { Fragment as Fragment6, jsx as jsx38, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
8749
8794
|
var MAX_IFRAME_HEIGHT = 650;
|
|
8750
8795
|
var SumsubIframe = () => {
|
|
8751
|
-
const {
|
|
8796
|
+
const {
|
|
8797
|
+
config: { current: config }
|
|
8798
|
+
} = useLumiaPassportConfig();
|
|
8752
8799
|
const iframeUrl = `${config.services.iframeUrl}/kyc/sumsub.html`;
|
|
8753
8800
|
const { iframeRef, isLoading, error, height, status } = useSumsubIframe({ iframeUrl });
|
|
8754
8801
|
return /* @__PURE__ */ jsxs28(Fragment6, { children: [
|
|
@@ -8779,7 +8826,9 @@ var SumsubIframe = () => {
|
|
|
8779
8826
|
// src/internal/components/KYC/KycContent.tsx
|
|
8780
8827
|
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
8781
8828
|
var KycContent = () => {
|
|
8782
|
-
const {
|
|
8829
|
+
const {
|
|
8830
|
+
config: { current: config }
|
|
8831
|
+
} = useLumiaPassportConfig();
|
|
8783
8832
|
const provider = config.kyc?.provider;
|
|
8784
8833
|
switch (provider) {
|
|
8785
8834
|
case "sumsub":
|
|
@@ -8812,7 +8861,9 @@ import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-m
|
|
|
8812
8861
|
import { DatabaseBackup } from "lucide-react";
|
|
8813
8862
|
import { jsx as jsx41, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
8814
8863
|
function BackupWarning() {
|
|
8815
|
-
const {
|
|
8864
|
+
const {
|
|
8865
|
+
config: { current: config }
|
|
8866
|
+
} = useLumiaPassportConfig();
|
|
8816
8867
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8817
8868
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8818
8869
|
const isShown = config.warnings?.backupWarning && !hasServerVault;
|
|
@@ -8882,18 +8933,59 @@ function MainMenu() {
|
|
|
8882
8933
|
|
|
8883
8934
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
8884
8935
|
import { fromPairs } from "lodash-es";
|
|
8885
|
-
import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft7, Loader as
|
|
8936
|
+
import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft7, Loader as Loader8 } from "lucide-react";
|
|
8886
8937
|
import { useMemo as useMemo2 } from "react";
|
|
8887
8938
|
|
|
8939
|
+
// src/modules/linkedProfiles.ts
|
|
8940
|
+
import { useQuery as useQuery4, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
8941
|
+
import { useCallback as useCallback9 } from "react";
|
|
8942
|
+
init_auth();
|
|
8943
|
+
init_common();
|
|
8944
|
+
init_types();
|
|
8945
|
+
var LINKED_PROFILES_QUERY_KEY = "lumia-passport-linked-profiles-query";
|
|
8946
|
+
async function getLinkProfilesData() {
|
|
8947
|
+
const list = await getLinkedProviders();
|
|
8948
|
+
const loadedProfiles = list.map((p) => {
|
|
8949
|
+
const info = getProviderDisplayInfo(p.provider);
|
|
8950
|
+
return { ...p, displayName: info.name, icon: info.icon };
|
|
8951
|
+
});
|
|
8952
|
+
let avatar = null;
|
|
8953
|
+
try {
|
|
8954
|
+
avatar = jwtTokenManager2.getAvatar() || null;
|
|
8955
|
+
} catch {
|
|
8956
|
+
avatar = null;
|
|
8957
|
+
}
|
|
8958
|
+
return { profiles: loadedProfiles, avatar };
|
|
8959
|
+
}
|
|
8960
|
+
function useLumiaPassportLinkedProfiles() {
|
|
8961
|
+
const qc = useQueryClient3();
|
|
8962
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
8963
|
+
const {
|
|
8964
|
+
data,
|
|
8965
|
+
isFetching: isLoading,
|
|
8966
|
+
error
|
|
8967
|
+
} = useQuery4({
|
|
8968
|
+
retry: false,
|
|
8969
|
+
enabled: !!address,
|
|
8970
|
+
queryKey: [LINKED_PROFILES_QUERY_KEY, address],
|
|
8971
|
+
queryFn: getLinkProfilesData
|
|
8972
|
+
});
|
|
8973
|
+
const { profiles = [], avatar = null } = data || {};
|
|
8974
|
+
const refresh = useCallback9(async () => {
|
|
8975
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
8976
|
+
}, [qc, address]);
|
|
8977
|
+
return { profiles, avatar, isLoading, error, refresh };
|
|
8978
|
+
}
|
|
8979
|
+
|
|
8888
8980
|
// src/internal/components/ManageWalletMenu/AddProvider.tsx
|
|
8889
|
-
import { useQueryClient as
|
|
8981
|
+
import { useQueryClient as useQueryClient5 } from "@tanstack/react-query";
|
|
8890
8982
|
init_passkey2();
|
|
8891
8983
|
|
|
8892
8984
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8893
8985
|
init_lumiaPassport();
|
|
8894
8986
|
init_projectId();
|
|
8895
8987
|
import { useMutation as useMutation7 } from "@tanstack/react-query";
|
|
8896
|
-
import { ChevronRight as ChevronRight3, Loader as
|
|
8988
|
+
import { ChevronRight as ChevronRight3, Loader as Loader7, Mail as Mail4 } from "lucide-react";
|
|
8897
8989
|
|
|
8898
8990
|
// src/internal/components/ManageWalletMenu/hooks/useStore.ts
|
|
8899
8991
|
import { create as create4 } from "zustand";
|
|
@@ -8925,7 +9017,10 @@ var useManageWalletStore = create4((set) => ({
|
|
|
8925
9017
|
// src/internal/components/ManageWalletMenu/EmailForm.tsx
|
|
8926
9018
|
import { jsx as jsx43, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
8927
9019
|
function EmailForm() {
|
|
8928
|
-
const {
|
|
9020
|
+
const {
|
|
9021
|
+
config: { current: config },
|
|
9022
|
+
callbacks
|
|
9023
|
+
} = useLumiaPassportConfig();
|
|
8929
9024
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
8930
9025
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
8931
9026
|
const { email, setEmail, setEmailCodeSentError, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
|
|
@@ -8999,23 +9094,24 @@ function EmailForm() {
|
|
|
8999
9094
|
size: "large",
|
|
9000
9095
|
disabled: !email || isLoading,
|
|
9001
9096
|
onClick: () => onSendVerificationCode(),
|
|
9002
|
-
children: isLoading ? /* @__PURE__ */ jsx43(
|
|
9097
|
+
children: isLoading ? /* @__PURE__ */ jsx43(Loader7, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx43(ChevronRight3, { className: "w-4 h-4" })
|
|
9003
9098
|
}
|
|
9004
9099
|
)
|
|
9005
9100
|
] });
|
|
9006
9101
|
}
|
|
9007
9102
|
|
|
9008
9103
|
// src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
|
|
9009
|
-
import { useQuery as useQuery4 } from "@tanstack/react-query";
|
|
9010
9104
|
init_common();
|
|
9105
|
+
import { useQuery as useQuery5 } from "@tanstack/react-query";
|
|
9011
9106
|
var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
|
|
9012
9107
|
function useProvidersList() {
|
|
9013
|
-
const
|
|
9014
|
-
|
|
9108
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9109
|
+
const page = useLayoutDataStore((st) => st.page);
|
|
9110
|
+
return useQuery5({
|
|
9015
9111
|
retry: false,
|
|
9016
|
-
enabled: !!
|
|
9017
|
-
queryKey: [PROVIDERS_QUERY_KEY,
|
|
9018
|
-
queryFn: getLinkedProviders
|
|
9112
|
+
enabled: !!address && page === "manage-wallet" /* MANAGE_WALLET */,
|
|
9113
|
+
queryKey: [PROVIDERS_QUERY_KEY, address],
|
|
9114
|
+
queryFn: async () => getLinkedProviders()
|
|
9019
9115
|
});
|
|
9020
9116
|
}
|
|
9021
9117
|
|
|
@@ -9047,12 +9143,12 @@ function useSendVerificationCode() {
|
|
|
9047
9143
|
}
|
|
9048
9144
|
|
|
9049
9145
|
// src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
|
|
9050
|
-
import { useMutation as useMutation9, useQueryClient as
|
|
9146
|
+
import { useMutation as useMutation9, useQueryClient as useQueryClient4 } from "@tanstack/react-query";
|
|
9051
9147
|
init_email();
|
|
9052
9148
|
function useVerifyCode() {
|
|
9053
|
-
const { callbacks
|
|
9054
|
-
const qc =
|
|
9055
|
-
const
|
|
9149
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9150
|
+
const qc = useQueryClient4();
|
|
9151
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9056
9152
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
9057
9153
|
const {
|
|
9058
9154
|
email,
|
|
@@ -9079,7 +9175,8 @@ function useVerifyCode() {
|
|
|
9079
9175
|
return await verifyEmailLinkCode(email, code);
|
|
9080
9176
|
},
|
|
9081
9177
|
onSuccess: async () => {
|
|
9082
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9178
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9179
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9083
9180
|
setProviderType(null);
|
|
9084
9181
|
setEmail("");
|
|
9085
9182
|
setEmailCode("");
|
|
@@ -9087,8 +9184,7 @@ function useVerifyCode() {
|
|
|
9087
9184
|
setEmailCodeSentError("");
|
|
9088
9185
|
setEmailStep("input");
|
|
9089
9186
|
try {
|
|
9090
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9091
|
-
notifyProvidersUpdate?.();
|
|
9187
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9092
9188
|
} catch {
|
|
9093
9189
|
}
|
|
9094
9190
|
setIsLoading(false);
|
|
@@ -9115,9 +9211,9 @@ function normalizePasskeyLinkError(msg) {
|
|
|
9115
9211
|
return msg;
|
|
9116
9212
|
}
|
|
9117
9213
|
function AddProvider() {
|
|
9118
|
-
const qc =
|
|
9119
|
-
const
|
|
9120
|
-
const
|
|
9214
|
+
const qc = useQueryClient5();
|
|
9215
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9216
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9121
9217
|
const {
|
|
9122
9218
|
linkIsLoading,
|
|
9123
9219
|
providerType,
|
|
@@ -9175,12 +9271,12 @@ function AddProvider() {
|
|
|
9175
9271
|
userVerification: "preferred"
|
|
9176
9272
|
}
|
|
9177
9273
|
});
|
|
9178
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9274
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9275
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9179
9276
|
try {
|
|
9180
9277
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9181
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9278
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9182
9279
|
});
|
|
9183
|
-
notifyProvidersUpdate?.();
|
|
9184
9280
|
} catch {
|
|
9185
9281
|
}
|
|
9186
9282
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9216,12 +9312,12 @@ function AddProvider() {
|
|
|
9216
9312
|
userVerification: "preferred"
|
|
9217
9313
|
}
|
|
9218
9314
|
});
|
|
9219
|
-
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] });
|
|
9220
9317
|
try {
|
|
9221
9318
|
callbacks?.onLumiaPassportUpdate?.({
|
|
9222
|
-
providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9319
|
+
providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address])
|
|
9223
9320
|
});
|
|
9224
|
-
notifyProvidersUpdate?.();
|
|
9225
9321
|
} catch {
|
|
9226
9322
|
}
|
|
9227
9323
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9252,7 +9348,9 @@ import { jsx as jsx45, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
|
9252
9348
|
function EmailNotConnectedWarning() {
|
|
9253
9349
|
const providers = jwtTokenManager2.getProviders();
|
|
9254
9350
|
const hasEmail = providers.includes("email");
|
|
9255
|
-
const {
|
|
9351
|
+
const {
|
|
9352
|
+
config: { current: config }
|
|
9353
|
+
} = useLumiaPassportConfig();
|
|
9256
9354
|
const isShown = config.warnings?.emailNotConnectedWarning && !hasEmail;
|
|
9257
9355
|
return /* @__PURE__ */ jsx45(AnimatePresence3, { mode: "wait", initial: false, children: isShown ? /* @__PURE__ */ jsx45(
|
|
9258
9356
|
motion3.div,
|
|
@@ -9261,7 +9359,7 @@ function EmailNotConnectedWarning() {
|
|
|
9261
9359
|
animate: { opacity: 1, height: "auto" },
|
|
9262
9360
|
exit: { opacity: 0, height: 0 },
|
|
9263
9361
|
transition: Y_ANIMATION_SETUP,
|
|
9264
|
-
children: /* @__PURE__ */ jsxs34(Highlight, { className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9362
|
+
children: /* @__PURE__ */ jsxs34(Highlight, { type: "warning", className: "flex flex-col gap-[var(--l-pass-gap)] items-center text-center", children: [
|
|
9265
9363
|
/* @__PURE__ */ jsxs34("span", { className: "flex items-center gap-[var(--l-pass-gap)] text-lg font-bold", children: [
|
|
9266
9364
|
/* @__PURE__ */ jsx45(Mail5, { className: "w-5 h-5" }),
|
|
9267
9365
|
"CONNECT EMAIL"
|
|
@@ -9273,13 +9371,16 @@ function EmailNotConnectedWarning() {
|
|
|
9273
9371
|
}
|
|
9274
9372
|
|
|
9275
9373
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9276
|
-
import { useQueryClient as
|
|
9374
|
+
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
9277
9375
|
import React11, { useEffect as useEffect16 } from "react";
|
|
9278
9376
|
init_auth();
|
|
9279
9377
|
function useLinkSocial() {
|
|
9280
|
-
const qc =
|
|
9281
|
-
const
|
|
9282
|
-
const {
|
|
9378
|
+
const qc = useQueryClient6();
|
|
9379
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9380
|
+
const {
|
|
9381
|
+
config: { current: config },
|
|
9382
|
+
callbacks
|
|
9383
|
+
} = useLumiaPassportConfig();
|
|
9283
9384
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9284
9385
|
const { providerType, linkIsLoading, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9285
9386
|
const handleLinkSocialProvider = React11.useCallback(
|
|
@@ -9314,10 +9415,10 @@ function useLinkSocial() {
|
|
|
9314
9415
|
if (!result.success) {
|
|
9315
9416
|
throw new Error(result.error || `${socialProvider.name || providerIdRaw} authentication failed`);
|
|
9316
9417
|
}
|
|
9317
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9418
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9419
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9318
9420
|
try {
|
|
9319
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9320
|
-
notifyProvidersUpdate?.();
|
|
9421
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9321
9422
|
} catch {
|
|
9322
9423
|
}
|
|
9323
9424
|
setProviderType(null);
|
|
@@ -9348,16 +9449,19 @@ function useLinkSocial() {
|
|
|
9348
9449
|
}
|
|
9349
9450
|
|
|
9350
9451
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9351
|
-
import { useQueryClient as
|
|
9352
|
-
import { useCallback as
|
|
9452
|
+
import { useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
9453
|
+
import { useCallback as useCallback10, useEffect as useEffect17, useState as useState7 } from "react";
|
|
9353
9454
|
init_telegram2();
|
|
9354
9455
|
function useLinkTelegram() {
|
|
9355
|
-
const {
|
|
9356
|
-
|
|
9357
|
-
|
|
9456
|
+
const {
|
|
9457
|
+
config: { current: config },
|
|
9458
|
+
callbacks
|
|
9459
|
+
} = useLumiaPassportConfig();
|
|
9460
|
+
const qc = useQueryClient7();
|
|
9461
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9358
9462
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9359
9463
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9360
|
-
const handleLinkTelegram =
|
|
9464
|
+
const handleLinkTelegram = useCallback10(async () => {
|
|
9361
9465
|
try {
|
|
9362
9466
|
setLinkIsLoading(true);
|
|
9363
9467
|
setLinkError("");
|
|
@@ -9383,10 +9487,10 @@ function useLinkTelegram() {
|
|
|
9383
9487
|
}
|
|
9384
9488
|
console.log("[ManageWallet] Linking Telegram with data:", user);
|
|
9385
9489
|
await linkTelegram(user);
|
|
9386
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9490
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9491
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9387
9492
|
try {
|
|
9388
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9389
|
-
notifyProvidersUpdate?.();
|
|
9493
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9390
9494
|
} catch {
|
|
9391
9495
|
}
|
|
9392
9496
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -9492,7 +9596,9 @@ function getConfiguredProviders(config) {
|
|
|
9492
9596
|
);
|
|
9493
9597
|
}
|
|
9494
9598
|
function ManageWalletMenu() {
|
|
9495
|
-
const {
|
|
9599
|
+
const {
|
|
9600
|
+
config: { current: config }
|
|
9601
|
+
} = useLumiaPassportConfig();
|
|
9496
9602
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9497
9603
|
const {
|
|
9498
9604
|
providerType,
|
|
@@ -9509,13 +9615,14 @@ function ManageWalletMenu() {
|
|
|
9509
9615
|
setVerificationError
|
|
9510
9616
|
} = useManageWalletStore();
|
|
9511
9617
|
const configuredProviders = getConfiguredProviders(config);
|
|
9512
|
-
const { data: providers = [],
|
|
9618
|
+
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9619
|
+
console.log("[MANAGE WALLET MENU] RENDER", providers);
|
|
9513
9620
|
const renderProviders = useMemo2(() => {
|
|
9514
9621
|
const usedProviders = fromPairs(providers.map((p) => [p.provider, true]));
|
|
9515
9622
|
const used = [];
|
|
9516
9623
|
const unused = [];
|
|
9517
9624
|
POSSIBLE_PROVIDERS.forEach((provider, providerIdx) => {
|
|
9518
|
-
if (!configuredProviders[provider]) return
|
|
9625
|
+
if (!configuredProviders[provider]) return;
|
|
9519
9626
|
const Icon = PROVIDERS_META2[provider].icon;
|
|
9520
9627
|
if (usedProviders[provider]) {
|
|
9521
9628
|
used.push(
|
|
@@ -9595,7 +9702,7 @@ function ManageWalletMenu() {
|
|
|
9595
9702
|
/* @__PURE__ */ jsx47(AlertTriangle3, { className: "w-4 h-4 shrink-0" }),
|
|
9596
9703
|
/* @__PURE__ */ jsx47("span", { className: "block", children: providersError.message })
|
|
9597
9704
|
] }),
|
|
9598
|
-
isProvidersLoading && /* @__PURE__ */ jsx47("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx47(
|
|
9705
|
+
isProvidersLoading && /* @__PURE__ */ jsx47("div", { className: "flex items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx47(Loader8, { className: "w-5 h-5 animate-spin" }) }),
|
|
9599
9706
|
/* @__PURE__ */ jsx47(EmailNotConnectedWarning, {}),
|
|
9600
9707
|
showCurrentProviders && renderProviders.map((node) => node),
|
|
9601
9708
|
showExtraProvidersUi && /* @__PURE__ */ jsx47(AddProvider, {}),
|
|
@@ -9605,15 +9712,15 @@ function ManageWalletMenu() {
|
|
|
9605
9712
|
}
|
|
9606
9713
|
|
|
9607
9714
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9608
|
-
import { useMutation as useMutation10, useQueryClient as
|
|
9609
|
-
import { Key as Key7, Loader as
|
|
9715
|
+
import { useMutation as useMutation10, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
9716
|
+
import { Key as Key7, Loader as Loader9 } from "lucide-react";
|
|
9610
9717
|
import { useState as useState8 } from "react";
|
|
9611
9718
|
init_auth();
|
|
9612
9719
|
import { jsx as jsx48, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
9613
9720
|
function UnlinkProviderMenu() {
|
|
9614
|
-
const qc =
|
|
9615
|
-
const
|
|
9616
|
-
const { callbacks
|
|
9721
|
+
const qc = useQueryClient8();
|
|
9722
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
9723
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
9617
9724
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9618
9725
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9619
9726
|
const [confirmInput, setConfirmInput] = useState8("");
|
|
@@ -9626,10 +9733,10 @@ function UnlinkProviderMenu() {
|
|
|
9626
9733
|
await unlinkProvider(provider, externalId);
|
|
9627
9734
|
},
|
|
9628
9735
|
onSuccess: async () => {
|
|
9629
|
-
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY,
|
|
9736
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9737
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9630
9738
|
try {
|
|
9631
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY,
|
|
9632
|
-
notifyProvidersUpdate?.();
|
|
9739
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9633
9740
|
} catch {
|
|
9634
9741
|
}
|
|
9635
9742
|
setConfirmUnlink(null);
|
|
@@ -9679,7 +9786,7 @@ function UnlinkProviderMenu() {
|
|
|
9679
9786
|
disabled: !!isProviderUnlinking || !confirmUnlink || confirmInput !== confirmUnlink.externalId,
|
|
9680
9787
|
className: "w-full flex-1",
|
|
9681
9788
|
children: [
|
|
9682
|
-
isProviderUnlinking && /* @__PURE__ */ jsx48(
|
|
9789
|
+
isProviderUnlinking && /* @__PURE__ */ jsx48(Loader9, { className: "animate-spin h-4 w-4" }),
|
|
9683
9790
|
isProviderUnlinking ? "Removing\u2026" : "Remove"
|
|
9684
9791
|
]
|
|
9685
9792
|
}
|
|
@@ -9688,353 +9795,31 @@ function UnlinkProviderMenu() {
|
|
|
9688
9795
|
] });
|
|
9689
9796
|
}
|
|
9690
9797
|
|
|
9691
|
-
// src/internal/components/
|
|
9692
|
-
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
|
|
9696
|
-
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
|
|
9700
|
-
|
|
9701
|
-
|
|
9702
|
-
|
|
9703
|
-
|
|
9704
|
-
|
|
9705
|
-
|
|
9706
|
-
|
|
9707
|
-
|
|
9708
|
-
|
|
9709
|
-
|
|
9710
|
-
function
|
|
9711
|
-
const
|
|
9712
|
-
|
|
9713
|
-
|
|
9714
|
-
|
|
9715
|
-
|
|
9716
|
-
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
9717
|
-
const [isRefreshing, setIsRefreshing] = useState9(false);
|
|
9718
|
-
const [localInfo, setLocalInfo] = useState9(null);
|
|
9719
|
-
const [recoveryCreatedAt, setRecoveryCreatedAt] = useState9(null);
|
|
9720
|
-
const [recoveryBrowser, setRecoveryBrowser] = useState9(null);
|
|
9721
|
-
const [recoveryUa, setRecoveryUa] = useState9(null);
|
|
9722
|
-
const [recoveryDeviceId, setRecoveryDeviceId] = useState9(null);
|
|
9723
|
-
const [recoveryDeviceName, setRecoveryDeviceName] = useState9(null);
|
|
9724
|
-
const [recoveryCountry, setRecoveryCountry] = useState9(null);
|
|
9725
|
-
const [hasServerBackup, setHasServerBackup] = useState9(false);
|
|
9726
|
-
const [trustedApps, setTrustedApps] = useState9([]);
|
|
9727
|
-
const [appToRemove, setAppToRemove] = useState9(null);
|
|
9728
|
-
const fetchRecovery = useCallback10(async () => {
|
|
9729
|
-
if (!userId) return;
|
|
9730
|
-
try {
|
|
9731
|
-
setIsRefreshing(true);
|
|
9732
|
-
const keyshareInfo = await getKeyshareInfo(userId);
|
|
9733
|
-
setLocalInfo(keyshareInfo);
|
|
9734
|
-
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
9735
|
-
try {
|
|
9736
|
-
console.log("[SecurityModal] Loading trusted apps for user:", userId);
|
|
9737
|
-
const iframeManager = getIframeManager2();
|
|
9738
|
-
const apps = await iframeManager.getTrustedApps(userId);
|
|
9739
|
-
console.log("[SecurityModal] Received trusted apps:", apps);
|
|
9740
|
-
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
9741
|
-
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
9742
|
-
setTrustedApps(apps);
|
|
9743
|
-
} catch (error) {
|
|
9744
|
-
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
9745
|
-
setTrustedApps([]);
|
|
9746
|
-
}
|
|
9747
|
-
const stats = await getShareRecoveryStats();
|
|
9748
|
-
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
9749
|
-
setHasServerBackup(!!hasRecoveryData);
|
|
9750
|
-
const created = stats?.created;
|
|
9751
|
-
setRecoveryCreatedAt(created?.at || null);
|
|
9752
|
-
setRecoveryBrowser(created?.browser || null);
|
|
9753
|
-
setRecoveryUa(created?.ua || null);
|
|
9754
|
-
setRecoveryDeviceId(created?.deviceId || null);
|
|
9755
|
-
setRecoveryDeviceName(created?.deviceName || null);
|
|
9756
|
-
setRecoveryCountry(created?.country || null);
|
|
9757
|
-
} finally {
|
|
9758
|
-
setIsRefreshing(false);
|
|
9759
|
-
}
|
|
9760
|
-
}, [userId]);
|
|
9761
|
-
useEffect18(() => {
|
|
9762
|
-
if (open) fetchRecovery();
|
|
9763
|
-
}, [open, fetchRecovery]);
|
|
9764
|
-
const parseOS = (ua) => {
|
|
9765
|
-
if (!ua) return null;
|
|
9766
|
-
if (ua.includes("Mac OS X")) return "macOS";
|
|
9767
|
-
if (ua.includes("Windows")) return "Windows";
|
|
9768
|
-
if (ua.includes("Android")) return "Android";
|
|
9769
|
-
if (ua.includes("Linux")) return "Linux";
|
|
9770
|
-
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
9771
|
-
return null;
|
|
9772
|
-
};
|
|
9773
|
-
return /* @__PURE__ */ jsxs38("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
9774
|
-
/* @__PURE__ */ jsx49("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-2", children: [
|
|
9775
|
-
/* @__PURE__ */ jsx49(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx49(ArrowLeft8, { className: "h-4 w-4" }) }),
|
|
9776
|
-
/* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
9777
|
-
/* @__PURE__ */ jsx49("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
9778
|
-
/* @__PURE__ */ jsx49(Button, { variant: "ghost", size: "icon", title: "Refresh", onClick: fetchRecovery, children: isRefreshing ? /* @__PURE__ */ jsx49(Loader9, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx49(RefreshCw, { className: "h-4 w-4" }) })
|
|
9779
|
-
] })
|
|
9780
|
-
] }) }),
|
|
9781
|
-
/* @__PURE__ */ jsxs38("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
9782
|
-
/* @__PURE__ */ jsxs38("div", { className: "space-y-2 text-center", children: [
|
|
9783
|
-
/* @__PURE__ */ jsxs38("div", { className: "flex items-center justify-center gap-2", children: [
|
|
9784
|
-
/* @__PURE__ */ jsx49(Cloud2, { className: "h-4 w-4" }),
|
|
9785
|
-
/* @__PURE__ */ jsx49("span", { className: "text-sm font-medium", children: "Server" })
|
|
9786
|
-
] }),
|
|
9787
|
-
/* @__PURE__ */ jsxs38(
|
|
9788
|
-
"span",
|
|
9789
|
-
{
|
|
9790
|
-
className: cn(
|
|
9791
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
9792
|
-
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9793
|
-
),
|
|
9794
|
-
children: [
|
|
9795
|
-
serverHasKeyshare ? /* @__PURE__ */ jsx49(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx49(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9796
|
-
serverHasKeyshare ? "Ready" : "Missing"
|
|
9797
|
-
]
|
|
9798
|
-
}
|
|
9799
|
-
)
|
|
9800
|
-
] }),
|
|
9801
|
-
/* @__PURE__ */ jsxs38("div", { className: "space-y-2 text-center", children: [
|
|
9802
|
-
/* @__PURE__ */ jsxs38("div", { className: "flex items-center justify-center gap-2", children: [
|
|
9803
|
-
/* @__PURE__ */ jsx49(Laptop, { className: "h-4 w-4" }),
|
|
9804
|
-
/* @__PURE__ */ jsx49("span", { className: "text-sm font-medium", children: "Local" })
|
|
9805
|
-
] }),
|
|
9806
|
-
/* @__PURE__ */ jsxs38(
|
|
9807
|
-
"span",
|
|
9808
|
-
{
|
|
9809
|
-
className: cn(
|
|
9810
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
9811
|
-
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9812
|
-
),
|
|
9813
|
-
children: [
|
|
9814
|
-
localInfo?.hasKeyshare ? /* @__PURE__ */ jsx49(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx49(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9815
|
-
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
9816
|
-
]
|
|
9817
|
-
}
|
|
9818
|
-
)
|
|
9819
|
-
] }),
|
|
9820
|
-
/* @__PURE__ */ jsxs38("div", { className: "space-y-2 text-center", children: [
|
|
9821
|
-
/* @__PURE__ */ jsxs38("div", { className: "flex items-center justify-center gap-2", children: [
|
|
9822
|
-
/* @__PURE__ */ jsx49(Shield, { className: "h-4 w-4" }),
|
|
9823
|
-
/* @__PURE__ */ jsx49("span", { className: "text-sm font-medium", children: "Vault" })
|
|
9824
|
-
] }),
|
|
9825
|
-
/* @__PURE__ */ jsxs38(
|
|
9826
|
-
"span",
|
|
9827
|
-
{
|
|
9828
|
-
className: cn(
|
|
9829
|
-
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
9830
|
-
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
9831
|
-
),
|
|
9832
|
-
children: [
|
|
9833
|
-
hasServerBackup ? /* @__PURE__ */ jsx49(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx49(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
9834
|
-
hasServerBackup ? "Ready" : "None"
|
|
9835
|
-
]
|
|
9836
|
-
}
|
|
9837
|
-
)
|
|
9838
|
-
] })
|
|
9839
|
-
] }),
|
|
9840
|
-
/* @__PURE__ */ jsxs38(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
9841
|
-
localInfo?.hasKeyshare && /* @__PURE__ */ jsxs38("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
9842
|
-
localInfo.ownerAddress && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9843
|
-
/* @__PURE__ */ jsx49("span", { children: "Owner: " }),
|
|
9844
|
-
/* @__PURE__ */ jsx49("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
9845
|
-
] }),
|
|
9846
|
-
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9847
|
-
/* @__PURE__ */ jsx49("span", { children: "Size: " }),
|
|
9848
|
-
/* @__PURE__ */ jsx49("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
9849
|
-
] }),
|
|
9850
|
-
localInfo.sessionId && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9851
|
-
/* @__PURE__ */ jsx49("span", { children: "Session: " }),
|
|
9852
|
-
/* @__PURE__ */ jsx49("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
9853
|
-
] })
|
|
9854
|
-
] }),
|
|
9855
|
-
/* @__PURE__ */ jsxs38("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
9856
|
-
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9857
|
-
/* @__PURE__ */ jsx49(Server3, { className: "h-2.5 w-2.5" }),
|
|
9858
|
-
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9859
|
-
"Server: ",
|
|
9860
|
-
new Date(backup.server.lastBackup).toLocaleString()
|
|
9861
|
-
] })
|
|
9862
|
-
] }),
|
|
9863
|
-
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9864
|
-
/* @__PURE__ */ jsx49(Server3, { className: "h-2.5 w-2.5" }),
|
|
9865
|
-
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9866
|
-
"Server: ",
|
|
9867
|
-
new Date(recoveryCreatedAt).toLocaleString()
|
|
9868
|
-
] })
|
|
9869
|
-
] }),
|
|
9870
|
-
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9871
|
-
/* @__PURE__ */ jsx49(Cloud2, { className: "h-2.5 w-2.5" }),
|
|
9872
|
-
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9873
|
-
"Cloud: ",
|
|
9874
|
-
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
9875
|
-
] })
|
|
9876
|
-
] }),
|
|
9877
|
-
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-1", children: [
|
|
9878
|
-
/* @__PURE__ */ jsx49(HardDrive, { className: "h-2.5 w-2.5" }),
|
|
9879
|
-
/* @__PURE__ */ jsxs38("span", { children: [
|
|
9880
|
-
"Local: ",
|
|
9881
|
-
new Date(backup.local.lastBackup).toLocaleString()
|
|
9882
|
-
] })
|
|
9883
|
-
] })
|
|
9884
|
-
] }),
|
|
9885
|
-
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ jsxs38("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
9886
|
-
/* @__PURE__ */ jsx49("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: "Device Information:" }),
|
|
9887
|
-
recoveryCreatedAt && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9888
|
-
"Created: ",
|
|
9889
|
-
new Date(recoveryCreatedAt).toLocaleString(),
|
|
9890
|
-
" "
|
|
9891
|
-
] }),
|
|
9892
|
-
recoveryCountry && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9893
|
-
"Country: ",
|
|
9894
|
-
recoveryCountry
|
|
9895
|
-
] }),
|
|
9896
|
-
recoveryBrowser && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9897
|
-
"Browser: ",
|
|
9898
|
-
recoveryBrowser
|
|
9899
|
-
] }),
|
|
9900
|
-
parseOS(recoveryUa) && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9901
|
-
"OS: ",
|
|
9902
|
-
parseOS(recoveryUa)
|
|
9903
|
-
] }),
|
|
9904
|
-
recoveryDeviceName && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9905
|
-
"Device: ",
|
|
9906
|
-
recoveryDeviceName
|
|
9907
|
-
] }),
|
|
9908
|
-
recoveryDeviceId && /* @__PURE__ */ jsxs38("div", { children: [
|
|
9909
|
-
"Device ID: ",
|
|
9910
|
-
/* @__PURE__ */ jsx49("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
9911
|
-
] })
|
|
9912
|
-
] }),
|
|
9913
|
-
trustedApps.length > 0 && /* @__PURE__ */ jsxs38("div", { className: "w-full space-y-2", children: [
|
|
9914
|
-
/* @__PURE__ */ jsx49("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
9915
|
-
/* @__PURE__ */ jsx49("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs38(
|
|
9916
|
-
"div",
|
|
9917
|
-
{
|
|
9918
|
-
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
9919
|
-
children: [
|
|
9920
|
-
/* @__PURE__ */ jsxs38("div", { className: "flex-1 min-w-0", children: [
|
|
9921
|
-
/* @__PURE__ */ jsx49("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
9922
|
-
/* @__PURE__ */ jsxs38("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
9923
|
-
"Trusted: ",
|
|
9924
|
-
new Date(app.trustedAt).toLocaleDateString()
|
|
9925
|
-
] })
|
|
9926
|
-
] }),
|
|
9927
|
-
/* @__PURE__ */ jsx49(
|
|
9928
|
-
Button,
|
|
9929
|
-
{
|
|
9930
|
-
variant: "ghost",
|
|
9931
|
-
size: "icon",
|
|
9932
|
-
title: "Remove from trusted",
|
|
9933
|
-
className: "text-[var(--l-pass-error)]",
|
|
9934
|
-
onClick: () => setAppToRemove({
|
|
9935
|
-
projectId: app.projectId,
|
|
9936
|
-
origin: app.origin,
|
|
9937
|
-
hostname: new URL(app.origin).hostname
|
|
9938
|
-
}),
|
|
9939
|
-
children: /* @__PURE__ */ jsx49(Trash22, { className: "h-3 w-3" })
|
|
9940
|
-
}
|
|
9941
|
-
)
|
|
9942
|
-
]
|
|
9943
|
-
},
|
|
9944
|
-
index
|
|
9945
|
-
)) })
|
|
9946
|
-
] })
|
|
9947
|
-
] })
|
|
9948
|
-
] });
|
|
9949
|
-
}
|
|
9950
|
-
|
|
9951
|
-
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
9952
|
-
import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft9, CheckCircle2 as CheckCircle25, Loader as Loader10, Wallet } from "lucide-react";
|
|
9953
|
-
import { useEffect as useEffect19, useState as useState11 } from "react";
|
|
9954
|
-
import { isAddress as isAddress2 } from "viem";
|
|
9955
|
-
import { useBalance as useBalance2 } from "wagmi";
|
|
9956
|
-
|
|
9957
|
-
// src/hooks/useSendTransaction.ts
|
|
9958
|
-
init_account();
|
|
9959
|
-
import { useState as useState10, useCallback as useCallback11 } from "react";
|
|
9960
|
-
import { parseEther as parseEther2, isAddress } from "viem";
|
|
9961
|
-
function useSendTransaction() {
|
|
9962
|
-
const { session, address } = useLumiaPassportSession();
|
|
9963
|
-
const [isLoading, setIsLoading] = useState10(false);
|
|
9964
|
-
const [error, setError] = useState10(null);
|
|
9965
|
-
const [userOpHash, setUserOpHash] = useState10(null);
|
|
9966
|
-
const sendTransaction = useCallback11(async (params) => {
|
|
9967
|
-
if (!session || !address) {
|
|
9968
|
-
setError("No active session");
|
|
9969
|
-
return null;
|
|
9970
|
-
}
|
|
9971
|
-
if (!isAddress(params.to)) {
|
|
9972
|
-
setError("Invalid recipient address");
|
|
9973
|
-
return null;
|
|
9974
|
-
}
|
|
9975
|
-
const value = parseFloat(params.value);
|
|
9976
|
-
if (isNaN(value) || value < 0) {
|
|
9977
|
-
setError("Invalid amount");
|
|
9978
|
-
return null;
|
|
9979
|
-
}
|
|
9980
|
-
setIsLoading(true);
|
|
9981
|
-
setError(null);
|
|
9982
|
-
setUserOpHash(null);
|
|
9983
|
-
try {
|
|
9984
|
-
const valueWei = parseEther2(params.value).toString();
|
|
9985
|
-
const hash = await sendUserOperation(
|
|
9986
|
-
session,
|
|
9987
|
-
params.to,
|
|
9988
|
-
valueWei,
|
|
9989
|
-
params.data || "0x",
|
|
9990
|
-
"standard",
|
|
9991
|
-
"v0.7"
|
|
9992
|
-
);
|
|
9993
|
-
setUserOpHash(hash);
|
|
9994
|
-
return hash;
|
|
9995
|
-
} catch (err) {
|
|
9996
|
-
const errorMessage = err instanceof Error ? err.message : "Transaction failed";
|
|
9997
|
-
setError(errorMessage);
|
|
9998
|
-
return null;
|
|
9999
|
-
} finally {
|
|
10000
|
-
setIsLoading(false);
|
|
10001
|
-
}
|
|
10002
|
-
}, [session, address]);
|
|
10003
|
-
const reset = useCallback11(() => {
|
|
10004
|
-
setError(null);
|
|
10005
|
-
setUserOpHash(null);
|
|
10006
|
-
setIsLoading(false);
|
|
10007
|
-
}, []);
|
|
10008
|
-
return {
|
|
10009
|
-
sendTransaction,
|
|
10010
|
-
isLoading,
|
|
10011
|
-
error,
|
|
10012
|
-
userOpHash,
|
|
10013
|
-
reset
|
|
10014
|
-
};
|
|
10015
|
-
}
|
|
10016
|
-
|
|
10017
|
-
// src/modules/assets.ts
|
|
10018
|
-
init_base();
|
|
10019
|
-
import React12 from "react";
|
|
10020
|
-
import { useBalance, useReadContract, useReadContracts } from "wagmi";
|
|
10021
|
-
import { formatUnits, erc20Abi } from "viem";
|
|
10022
|
-
var COMMON_TOKENS = [
|
|
10023
|
-
// Add real token addresses here when available
|
|
10024
|
-
// {
|
|
10025
|
-
// address: '0x....',
|
|
10026
|
-
// name: 'USD Coin',
|
|
10027
|
-
// symbol: 'USDC',
|
|
10028
|
-
// decimals: 6,
|
|
10029
|
-
// logo: 'https://...'
|
|
10030
|
-
// }
|
|
10031
|
-
];
|
|
10032
|
-
function useAssets(address) {
|
|
10033
|
-
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = useBalance({
|
|
10034
|
-
address,
|
|
10035
|
-
chainId: lumiaBeam.id,
|
|
10036
|
-
query: {
|
|
10037
|
-
enabled: !!address
|
|
9798
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
9799
|
+
import { ArrowLeft as ArrowLeft8, Gem, Loader as Loader11, RefreshCw } from "lucide-react";
|
|
9800
|
+
import { useEffect as useEffect18, useRef as useRef9 } from "react";
|
|
9801
|
+
|
|
9802
|
+
// src/modules/assets.ts
|
|
9803
|
+
init_base();
|
|
9804
|
+
import React12 from "react";
|
|
9805
|
+
import { useBalance, useReadContract, useReadContracts } from "wagmi";
|
|
9806
|
+
import { formatUnits, erc20Abi } from "viem";
|
|
9807
|
+
var COMMON_TOKENS = [
|
|
9808
|
+
// Add real token addresses here when available
|
|
9809
|
+
// {
|
|
9810
|
+
// address: '0x....',
|
|
9811
|
+
// name: 'USD Coin',
|
|
9812
|
+
// symbol: 'USDC',
|
|
9813
|
+
// decimals: 6,
|
|
9814
|
+
// logo: 'https://...'
|
|
9815
|
+
// }
|
|
9816
|
+
];
|
|
9817
|
+
function useAssets(address) {
|
|
9818
|
+
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = useBalance({
|
|
9819
|
+
address,
|
|
9820
|
+
chainId: lumiaBeam.id,
|
|
9821
|
+
query: {
|
|
9822
|
+
enabled: !!address
|
|
10038
9823
|
}
|
|
10039
9824
|
});
|
|
10040
9825
|
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
@@ -10167,22 +9952,501 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10167
9952
|
return formatUnits(balance, tokenInfo.decimals);
|
|
10168
9953
|
}, [balance, tokenInfo]);
|
|
10169
9954
|
return {
|
|
10170
|
-
balance,
|
|
10171
|
-
formattedBalance,
|
|
10172
|
-
tokenInfo,
|
|
9955
|
+
balance,
|
|
9956
|
+
formattedBalance,
|
|
9957
|
+
tokenInfo,
|
|
9958
|
+
isLoading,
|
|
9959
|
+
refetch
|
|
9960
|
+
};
|
|
9961
|
+
}
|
|
9962
|
+
|
|
9963
|
+
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
9964
|
+
init_base();
|
|
9965
|
+
import { useQuery as useQuery6 } from "@tanstack/react-query";
|
|
9966
|
+
import { Loader as Loader10 } from "lucide-react";
|
|
9967
|
+
import { Fragment as Fragment8, jsx as jsx49, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
9968
|
+
var price16 = Intl.NumberFormat("en-US", { minimumFractionDigits: 16, maximumFractionDigits: 16 });
|
|
9969
|
+
function formatValue(price) {
|
|
9970
|
+
console.log("[---PRICE---]", price);
|
|
9971
|
+
if (!price) return /* @__PURE__ */ jsx49(Fragment8, { children: `0.00` });
|
|
9972
|
+
if (price < 0.01) {
|
|
9973
|
+
const strigified = price16.format(price);
|
|
9974
|
+
const absValue = parseInt(strigified.replace(/^0\./, "")).toString().slice(0, 2);
|
|
9975
|
+
const zeroQnt = strigified.replace(/^0\./, "").split("").findIndex((el) => +el > 0);
|
|
9976
|
+
return /* @__PURE__ */ jsxs38(Fragment8, { children: [
|
|
9977
|
+
`0.0`,
|
|
9978
|
+
/* @__PURE__ */ jsx49("sub", { className: "text-[10px]", children: zeroQnt }),
|
|
9979
|
+
absValue
|
|
9980
|
+
] });
|
|
9981
|
+
}
|
|
9982
|
+
return /* @__PURE__ */ jsx49(Fragment8, { children: price.toFixed(2) });
|
|
9983
|
+
}
|
|
9984
|
+
function openInExplorer(address) {
|
|
9985
|
+
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
9986
|
+
}
|
|
9987
|
+
async function getAssetRate(symbol) {
|
|
9988
|
+
const assetURL = `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}USDT`;
|
|
9989
|
+
const response = await fetch(assetURL);
|
|
9990
|
+
return await response.json();
|
|
9991
|
+
}
|
|
9992
|
+
var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
|
|
9993
|
+
function PortfolioItem(props) {
|
|
9994
|
+
const { address, asset } = props;
|
|
9995
|
+
const { data: assetRate, isLoading: isRateLoading } = useQuery6({
|
|
9996
|
+
retry: false,
|
|
9997
|
+
staleTime: 4 * 60 * 1e3,
|
|
9998
|
+
enabled: !!address && !!asset.symbol,
|
|
9999
|
+
queryKey: [ASSETS_RATES_QUERY_KEY, address, asset.symbol],
|
|
10000
|
+
queryFn: async () => await getAssetRate(asset.symbol)
|
|
10001
|
+
});
|
|
10002
|
+
return /* @__PURE__ */ jsxs38(
|
|
10003
|
+
"div",
|
|
10004
|
+
{
|
|
10005
|
+
className: cn(
|
|
10006
|
+
"group cursor-pointer",
|
|
10007
|
+
"w-full flex items-center gap-[var(--l-pass-gap)]",
|
|
10008
|
+
"hover:text-[var(--l-pass-fg-h)] transition-colors"
|
|
10009
|
+
),
|
|
10010
|
+
onClick: () => openInExplorer(asset.address),
|
|
10011
|
+
children: [
|
|
10012
|
+
/* @__PURE__ */ jsx49(
|
|
10013
|
+
"div",
|
|
10014
|
+
{
|
|
10015
|
+
className: cn(
|
|
10016
|
+
"flex-none w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center",
|
|
10017
|
+
"group-hover:opacity-60 transition-opacity"
|
|
10018
|
+
),
|
|
10019
|
+
children: /* @__PURE__ */ jsx49("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) })
|
|
10020
|
+
}
|
|
10021
|
+
),
|
|
10022
|
+
/* @__PURE__ */ jsxs38("div", { className: "w-full flex-1", children: [
|
|
10023
|
+
/* @__PURE__ */ jsxs38("div", { className: "w-full flex items-center justify-between text-xs", children: [
|
|
10024
|
+
/* @__PURE__ */ jsx49("span", { children: asset.name }),
|
|
10025
|
+
/* @__PURE__ */ jsx49("span", { className: "text-[var(--l-pass-fg-muted)]", children: "USD" })
|
|
10026
|
+
] }),
|
|
10027
|
+
/* @__PURE__ */ jsxs38("div", { className: "w-full flex items-center justify-between font-bold text-lg leading-5", children: [
|
|
10028
|
+
/* @__PURE__ */ jsxs38("span", { children: [
|
|
10029
|
+
/* @__PURE__ */ jsx49("span", { children: formatValue(Number(asset.formattedBalance)) }),
|
|
10030
|
+
/* @__PURE__ */ jsx49("span", { children: " " + asset.symbol })
|
|
10031
|
+
] }),
|
|
10032
|
+
isRateLoading && /* @__PURE__ */ jsx49(Loader10, { className: "h-4 w-4 animate-spin" }),
|
|
10033
|
+
!!assetRate?.price && /* @__PURE__ */ jsx49("span", { children: (Number(asset.formattedBalance) * Number(assetRate.price)).toLocaleString("en-US", {
|
|
10034
|
+
minimumFractionDigits: 2,
|
|
10035
|
+
maximumFractionDigits: 2,
|
|
10036
|
+
currency: "USD",
|
|
10037
|
+
style: "currency"
|
|
10038
|
+
}) })
|
|
10039
|
+
] })
|
|
10040
|
+
] })
|
|
10041
|
+
]
|
|
10042
|
+
}
|
|
10043
|
+
);
|
|
10044
|
+
}
|
|
10045
|
+
{
|
|
10046
|
+
}
|
|
10047
|
+
|
|
10048
|
+
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10049
|
+
import { jsx as jsx50, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
10050
|
+
function PortfolioMenu() {
|
|
10051
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10052
|
+
const assetsContainerListRef = useRef9(null);
|
|
10053
|
+
const assetsListRef = useRef9(null);
|
|
10054
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10055
|
+
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10056
|
+
useEffect18(() => {
|
|
10057
|
+
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10058
|
+
if (assetsContainerListRef.current) {
|
|
10059
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10060
|
+
"--l-pass-list-bd",
|
|
10061
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
10062
|
+
// hide border if no scrollbar
|
|
10063
|
+
);
|
|
10064
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10065
|
+
"--l-pass-list-scrollbar-pd-l",
|
|
10066
|
+
assetsListRef.current.clientHeight >= MAX_LIST_HEIGHT ? "4px" : "0px"
|
|
10067
|
+
// remove padding if no scrollbar
|
|
10068
|
+
);
|
|
10069
|
+
}
|
|
10070
|
+
}, []);
|
|
10071
|
+
return /* @__PURE__ */ jsxs39("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10072
|
+
/* @__PURE__ */ jsxs39("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10073
|
+
/* @__PURE__ */ jsx50(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx50(ArrowLeft8, { className: "h-4 w-4" }) }),
|
|
10074
|
+
/* @__PURE__ */ jsx50("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
10075
|
+
/* @__PURE__ */ jsx50(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ jsx50(Loader11, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx50(RefreshCw, { className: "h-4 w-4" }) })
|
|
10076
|
+
] }),
|
|
10077
|
+
/* @__PURE__ */ jsxs39(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10078
|
+
isLoading && /* @__PURE__ */ jsxs39("div", { className: "w-full flex items-center justify-center gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
10079
|
+
/* @__PURE__ */ jsx50(Loader11, { className: "h-5 w-5 animate-spin" }),
|
|
10080
|
+
/* @__PURE__ */ jsx50("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
10081
|
+
] }),
|
|
10082
|
+
!isLoading && assets.length === 0 && /* @__PURE__ */ jsxs39("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
10083
|
+
/* @__PURE__ */ jsx50(Gem, { className: "w-12 h-12 mb-2" }),
|
|
10084
|
+
/* @__PURE__ */ jsx50("p", { children: "No assets found" })
|
|
10085
|
+
] }),
|
|
10086
|
+
!isLoading && assets.length > 0 && /* @__PURE__ */ jsx50(
|
|
10087
|
+
"div",
|
|
10088
|
+
{
|
|
10089
|
+
ref: assetsContainerListRef,
|
|
10090
|
+
className: "list-scrollbar-y relative border-t border-b border-[var(--l-pass-list-bd)]",
|
|
10091
|
+
children: /* @__PURE__ */ jsx50(
|
|
10092
|
+
"div",
|
|
10093
|
+
{
|
|
10094
|
+
ref: assetsListRef,
|
|
10095
|
+
className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]",
|
|
10096
|
+
children: assets.map((asset, index) => /* @__PURE__ */ jsx50(
|
|
10097
|
+
PortfolioItem,
|
|
10098
|
+
{
|
|
10099
|
+
address,
|
|
10100
|
+
asset
|
|
10101
|
+
},
|
|
10102
|
+
`${asset.type}-${asset.address || "native"}-${index}`
|
|
10103
|
+
))
|
|
10104
|
+
}
|
|
10105
|
+
)
|
|
10106
|
+
}
|
|
10107
|
+
)
|
|
10108
|
+
] })
|
|
10109
|
+
] });
|
|
10110
|
+
}
|
|
10111
|
+
|
|
10112
|
+
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10113
|
+
init_auth();
|
|
10114
|
+
init_keyshare();
|
|
10115
|
+
import {
|
|
10116
|
+
AlertTriangle as AlertTriangle4,
|
|
10117
|
+
ArrowLeft as ArrowLeft9,
|
|
10118
|
+
CheckCircle2 as CheckCircle24,
|
|
10119
|
+
Cloud as Cloud2,
|
|
10120
|
+
HardDrive,
|
|
10121
|
+
Laptop,
|
|
10122
|
+
Loader as Loader12,
|
|
10123
|
+
RefreshCw as RefreshCw2,
|
|
10124
|
+
Server as Server3,
|
|
10125
|
+
Shield,
|
|
10126
|
+
Trash2 as Trash22
|
|
10127
|
+
} from "lucide-react";
|
|
10128
|
+
import { useCallback as useCallback11, useEffect as useEffect19, useState as useState9 } from "react";
|
|
10129
|
+
init_vaultClient();
|
|
10130
|
+
import { jsx as jsx51, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
10131
|
+
function SecurityMenu() {
|
|
10132
|
+
const page = useLayoutDataStore((st) => st.page);
|
|
10133
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10134
|
+
const open = page === "security";
|
|
10135
|
+
const userId = jwtTokenManager2.getUserId();
|
|
10136
|
+
const serverHasKeyshare = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
10137
|
+
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10138
|
+
const [isRefreshing, setIsRefreshing] = useState9(false);
|
|
10139
|
+
const [localInfo, setLocalInfo] = useState9(null);
|
|
10140
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = useState9(null);
|
|
10141
|
+
const [recoveryBrowser, setRecoveryBrowser] = useState9(null);
|
|
10142
|
+
const [recoveryUa, setRecoveryUa] = useState9(null);
|
|
10143
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = useState9(null);
|
|
10144
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = useState9(null);
|
|
10145
|
+
const [recoveryCountry, setRecoveryCountry] = useState9(null);
|
|
10146
|
+
const [hasServerBackup, setHasServerBackup] = useState9(false);
|
|
10147
|
+
const [trustedApps, setTrustedApps] = useState9([]);
|
|
10148
|
+
const [appToRemove, setAppToRemove] = useState9(null);
|
|
10149
|
+
const fetchRecovery = useCallback11(async () => {
|
|
10150
|
+
if (!userId) return;
|
|
10151
|
+
try {
|
|
10152
|
+
setIsRefreshing(true);
|
|
10153
|
+
const keyshareInfo = await getKeyshareInfo(userId);
|
|
10154
|
+
setLocalInfo(keyshareInfo);
|
|
10155
|
+
const { getIframeManager: getIframeManager2 } = await Promise.resolve().then(() => (init_iframe_manager(), iframe_manager_exports));
|
|
10156
|
+
try {
|
|
10157
|
+
console.log("[SecurityModal] Loading trusted apps for user:", userId);
|
|
10158
|
+
const iframeManager = getIframeManager2();
|
|
10159
|
+
const apps = await iframeManager.getTrustedApps(userId);
|
|
10160
|
+
console.log("[SecurityModal] Received trusted apps:", apps);
|
|
10161
|
+
console.log("[SecurityModal] Trusted apps count:", apps?.length);
|
|
10162
|
+
console.log("[SecurityModal] Setting trusted apps state with:", apps);
|
|
10163
|
+
setTrustedApps(apps);
|
|
10164
|
+
} catch (error) {
|
|
10165
|
+
console.error("[SecurityModal] Failed to load trusted apps:", error);
|
|
10166
|
+
setTrustedApps([]);
|
|
10167
|
+
}
|
|
10168
|
+
const stats = await getShareRecoveryStats();
|
|
10169
|
+
const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
|
|
10170
|
+
setHasServerBackup(!!hasRecoveryData);
|
|
10171
|
+
const created = stats?.created;
|
|
10172
|
+
setRecoveryCreatedAt(created?.at || null);
|
|
10173
|
+
setRecoveryBrowser(created?.browser || null);
|
|
10174
|
+
setRecoveryUa(created?.ua || null);
|
|
10175
|
+
setRecoveryDeviceId(created?.deviceId || null);
|
|
10176
|
+
setRecoveryDeviceName(created?.deviceName || null);
|
|
10177
|
+
setRecoveryCountry(created?.country || null);
|
|
10178
|
+
} finally {
|
|
10179
|
+
setIsRefreshing(false);
|
|
10180
|
+
}
|
|
10181
|
+
}, [userId]);
|
|
10182
|
+
useEffect19(() => {
|
|
10183
|
+
if (open) fetchRecovery();
|
|
10184
|
+
}, [open, fetchRecovery]);
|
|
10185
|
+
const parseOS = (ua) => {
|
|
10186
|
+
if (!ua) return null;
|
|
10187
|
+
if (ua.includes("Mac OS X")) return "macOS";
|
|
10188
|
+
if (ua.includes("Windows")) return "Windows";
|
|
10189
|
+
if (ua.includes("Android")) return "Android";
|
|
10190
|
+
if (ua.includes("Linux")) return "Linux";
|
|
10191
|
+
if (ua.includes("iPhone") || ua.includes("iPad") || ua.includes("iOS")) return "iOS";
|
|
10192
|
+
return null;
|
|
10193
|
+
};
|
|
10194
|
+
return /* @__PURE__ */ jsxs40("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
10195
|
+
/* @__PURE__ */ jsx51("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-2", children: [
|
|
10196
|
+
/* @__PURE__ */ jsx51(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx51(ArrowLeft9, { className: "h-4 w-4" }) }),
|
|
10197
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-2 font-semibold", children: [
|
|
10198
|
+
/* @__PURE__ */ jsx51("span", { className: "text-xl font-semibold", children: "Keyshare Status" }),
|
|
10199
|
+
/* @__PURE__ */ jsx51(Button, { variant: "ghost", size: "icon", title: "Refresh", onClick: fetchRecovery, children: isRefreshing ? /* @__PURE__ */ jsx51(Loader12, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx51(RefreshCw2, { className: "h-4 w-4" }) })
|
|
10200
|
+
] })
|
|
10201
|
+
] }) }),
|
|
10202
|
+
/* @__PURE__ */ jsxs40("div", { className: "grid grid-cols-3 gap-4", children: [
|
|
10203
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-2 text-center", children: [
|
|
10204
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10205
|
+
/* @__PURE__ */ jsx51(Cloud2, { className: "h-4 w-4" }),
|
|
10206
|
+
/* @__PURE__ */ jsx51("span", { className: "text-sm font-medium", children: "Server" })
|
|
10207
|
+
] }),
|
|
10208
|
+
/* @__PURE__ */ jsxs40(
|
|
10209
|
+
"span",
|
|
10210
|
+
{
|
|
10211
|
+
className: cn(
|
|
10212
|
+
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10213
|
+
serverHasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10214
|
+
),
|
|
10215
|
+
children: [
|
|
10216
|
+
serverHasKeyshare ? /* @__PURE__ */ jsx51(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx51(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
10217
|
+
serverHasKeyshare ? "Ready" : "Missing"
|
|
10218
|
+
]
|
|
10219
|
+
}
|
|
10220
|
+
)
|
|
10221
|
+
] }),
|
|
10222
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-2 text-center", children: [
|
|
10223
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10224
|
+
/* @__PURE__ */ jsx51(Laptop, { className: "h-4 w-4" }),
|
|
10225
|
+
/* @__PURE__ */ jsx51("span", { className: "text-sm font-medium", children: "Local" })
|
|
10226
|
+
] }),
|
|
10227
|
+
/* @__PURE__ */ jsxs40(
|
|
10228
|
+
"span",
|
|
10229
|
+
{
|
|
10230
|
+
className: cn(
|
|
10231
|
+
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10232
|
+
localInfo?.hasKeyshare ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10233
|
+
),
|
|
10234
|
+
children: [
|
|
10235
|
+
localInfo?.hasKeyshare ? /* @__PURE__ */ jsx51(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx51(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
10236
|
+
localInfo?.hasKeyshare ? "Ready" : "Missing"
|
|
10237
|
+
]
|
|
10238
|
+
}
|
|
10239
|
+
)
|
|
10240
|
+
] }),
|
|
10241
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-2 text-center", children: [
|
|
10242
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex items-center justify-center gap-2", children: [
|
|
10243
|
+
/* @__PURE__ */ jsx51(Shield, { className: "h-4 w-4" }),
|
|
10244
|
+
/* @__PURE__ */ jsx51("span", { className: "text-sm font-medium", children: "Vault" })
|
|
10245
|
+
] }),
|
|
10246
|
+
/* @__PURE__ */ jsxs40(
|
|
10247
|
+
"span",
|
|
10248
|
+
{
|
|
10249
|
+
className: cn(
|
|
10250
|
+
"inline-flex items-center text-sm px-3 py-2 rounded-full text-white",
|
|
10251
|
+
hasServerBackup ? "bg-[var(--l-pass-success)]" : "bg-[var(--l-pass-warning)]"
|
|
10252
|
+
),
|
|
10253
|
+
children: [
|
|
10254
|
+
hasServerBackup ? /* @__PURE__ */ jsx51(CheckCircle24, { className: "h-4 w-4 mr-1" }) : /* @__PURE__ */ jsx51(AlertTriangle4, { className: "h-4 w-4 mr-1" }),
|
|
10255
|
+
hasServerBackup ? "Ready" : "None"
|
|
10256
|
+
]
|
|
10257
|
+
}
|
|
10258
|
+
)
|
|
10259
|
+
] })
|
|
10260
|
+
] }),
|
|
10261
|
+
/* @__PURE__ */ jsxs40(Expandable, { isExpanded: true, contentClassName: "flex flex-col gap-4", children: [
|
|
10262
|
+
localInfo?.hasKeyshare && /* @__PURE__ */ jsxs40("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10263
|
+
localInfo.ownerAddress && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10264
|
+
/* @__PURE__ */ jsx51("span", { children: "Owner: " }),
|
|
10265
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono break-all", children: localInfo.ownerAddress })
|
|
10266
|
+
] }),
|
|
10267
|
+
typeof localInfo.keyshareSize === "number" && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10268
|
+
/* @__PURE__ */ jsx51("span", { children: "Size: " }),
|
|
10269
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono", children: `${Math.round((localInfo.keyshareSize || 0) / 1024)}KB` })
|
|
10270
|
+
] }),
|
|
10271
|
+
localInfo.sessionId && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10272
|
+
/* @__PURE__ */ jsx51("span", { children: "Session: " }),
|
|
10273
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono break-all", children: localInfo.sessionId })
|
|
10274
|
+
] })
|
|
10275
|
+
] }),
|
|
10276
|
+
/* @__PURE__ */ jsxs40("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10277
|
+
backup.server.enabled && backup.server.lastBackup && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10278
|
+
/* @__PURE__ */ jsx51(Server3, { className: "h-2.5 w-2.5" }),
|
|
10279
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
10280
|
+
"Server: ",
|
|
10281
|
+
new Date(backup.server.lastBackup).toLocaleString()
|
|
10282
|
+
] })
|
|
10283
|
+
] }),
|
|
10284
|
+
!backup.server.lastBackup && recoveryCreatedAt && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10285
|
+
/* @__PURE__ */ jsx51(Server3, { className: "h-2.5 w-2.5" }),
|
|
10286
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
10287
|
+
"Server: ",
|
|
10288
|
+
new Date(recoveryCreatedAt).toLocaleString()
|
|
10289
|
+
] })
|
|
10290
|
+
] }),
|
|
10291
|
+
backup.cloud.enabled && backup.cloud.lastBackup && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10292
|
+
/* @__PURE__ */ jsx51(Cloud2, { className: "h-2.5 w-2.5" }),
|
|
10293
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
10294
|
+
"Cloud: ",
|
|
10295
|
+
new Date(backup.cloud.lastBackup).toLocaleString()
|
|
10296
|
+
] })
|
|
10297
|
+
] }),
|
|
10298
|
+
backup.local.enabled && backup.local.lastBackup && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
|
|
10299
|
+
/* @__PURE__ */ jsx51(HardDrive, { className: "h-2.5 w-2.5" }),
|
|
10300
|
+
/* @__PURE__ */ jsxs40("span", { children: [
|
|
10301
|
+
"Local: ",
|
|
10302
|
+
new Date(backup.local.lastBackup).toLocaleString()
|
|
10303
|
+
] })
|
|
10304
|
+
] })
|
|
10305
|
+
] }),
|
|
10306
|
+
(recoveryCreatedAt || recoveryBrowser || recoveryUa || recoveryDeviceId || recoveryDeviceName) && /* @__PURE__ */ jsxs40("div", { className: "space-y-0.5 text-[10px] leading-tight text-[var(--l-pass-fg-muted)]", children: [
|
|
10307
|
+
/* @__PURE__ */ jsx51("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: "Device Information:" }),
|
|
10308
|
+
recoveryCreatedAt && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10309
|
+
"Created: ",
|
|
10310
|
+
new Date(recoveryCreatedAt).toLocaleString(),
|
|
10311
|
+
" "
|
|
10312
|
+
] }),
|
|
10313
|
+
recoveryCountry && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10314
|
+
"Country: ",
|
|
10315
|
+
recoveryCountry
|
|
10316
|
+
] }),
|
|
10317
|
+
recoveryBrowser && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10318
|
+
"Browser: ",
|
|
10319
|
+
recoveryBrowser
|
|
10320
|
+
] }),
|
|
10321
|
+
parseOS(recoveryUa) && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10322
|
+
"OS: ",
|
|
10323
|
+
parseOS(recoveryUa)
|
|
10324
|
+
] }),
|
|
10325
|
+
recoveryDeviceName && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10326
|
+
"Device: ",
|
|
10327
|
+
recoveryDeviceName
|
|
10328
|
+
] }),
|
|
10329
|
+
recoveryDeviceId && /* @__PURE__ */ jsxs40("div", { children: [
|
|
10330
|
+
"Device ID: ",
|
|
10331
|
+
/* @__PURE__ */ jsx51("span", { className: "font-mono break-all", children: recoveryDeviceId })
|
|
10332
|
+
] })
|
|
10333
|
+
] }),
|
|
10334
|
+
trustedApps.length > 0 && /* @__PURE__ */ jsxs40("div", { className: "w-full space-y-2", children: [
|
|
10335
|
+
/* @__PURE__ */ jsx51("div", { className: "font-medium text-sm text-[var(--l-pass-primary)]", children: `Trusted Applications (${trustedApps.length}):` }),
|
|
10336
|
+
/* @__PURE__ */ jsx51("div", { className: "w-full space-y-1", children: trustedApps.map((app, index) => /* @__PURE__ */ jsxs40(
|
|
10337
|
+
"div",
|
|
10338
|
+
{
|
|
10339
|
+
className: "text-[10px] leading-tight p-2 rounded flex items-start justify-between gap-2 bg-[var(--l-pass-secondary)]",
|
|
10340
|
+
children: [
|
|
10341
|
+
/* @__PURE__ */ jsxs40("div", { className: "flex-1 min-w-0", children: [
|
|
10342
|
+
/* @__PURE__ */ jsx51("div", { className: "font-medium", children: new URL(app.origin).hostname }),
|
|
10343
|
+
/* @__PURE__ */ jsxs40("div", { className: "text-[var(--l-pass-fg-muted)]", children: [
|
|
10344
|
+
"Trusted: ",
|
|
10345
|
+
new Date(app.trustedAt).toLocaleDateString()
|
|
10346
|
+
] })
|
|
10347
|
+
] }),
|
|
10348
|
+
/* @__PURE__ */ jsx51(
|
|
10349
|
+
Button,
|
|
10350
|
+
{
|
|
10351
|
+
variant: "ghost",
|
|
10352
|
+
size: "icon",
|
|
10353
|
+
title: "Remove from trusted",
|
|
10354
|
+
className: "text-[var(--l-pass-error)]",
|
|
10355
|
+
onClick: () => setAppToRemove({
|
|
10356
|
+
projectId: app.projectId,
|
|
10357
|
+
origin: app.origin,
|
|
10358
|
+
hostname: new URL(app.origin).hostname
|
|
10359
|
+
}),
|
|
10360
|
+
children: /* @__PURE__ */ jsx51(Trash22, { className: "h-3 w-3" })
|
|
10361
|
+
}
|
|
10362
|
+
)
|
|
10363
|
+
]
|
|
10364
|
+
},
|
|
10365
|
+
index
|
|
10366
|
+
)) })
|
|
10367
|
+
] })
|
|
10368
|
+
] })
|
|
10369
|
+
] });
|
|
10370
|
+
}
|
|
10371
|
+
|
|
10372
|
+
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10373
|
+
import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft10, CheckCircle2 as CheckCircle25, Loader as Loader13, Wallet } from "lucide-react";
|
|
10374
|
+
import { useEffect as useEffect20, useState as useState11 } from "react";
|
|
10375
|
+
import { isAddress as isAddress2 } from "viem";
|
|
10376
|
+
import { useBalance as useBalance2 } from "wagmi";
|
|
10377
|
+
|
|
10378
|
+
// src/hooks/useSendTransaction.ts
|
|
10379
|
+
import { useCallback as useCallback12, useState as useState10 } from "react";
|
|
10380
|
+
import { isAddress, parseEther as parseEther2 } from "viem";
|
|
10381
|
+
init_account();
|
|
10382
|
+
function useSendTransaction() {
|
|
10383
|
+
const session = useLumiaPassportSession((st) => st.session);
|
|
10384
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10385
|
+
const [isLoading, setIsLoading] = useState10(false);
|
|
10386
|
+
const [error, setError] = useState10(null);
|
|
10387
|
+
const [userOpHash, setUserOpHash] = useState10(null);
|
|
10388
|
+
const sendTransaction = useCallback12(
|
|
10389
|
+
async (params) => {
|
|
10390
|
+
if (!session || !address) {
|
|
10391
|
+
setError("No active session");
|
|
10392
|
+
return null;
|
|
10393
|
+
}
|
|
10394
|
+
if (!isAddress(params.to)) {
|
|
10395
|
+
setError("Invalid recipient address");
|
|
10396
|
+
return null;
|
|
10397
|
+
}
|
|
10398
|
+
const value = parseFloat(params.value);
|
|
10399
|
+
if (isNaN(value) || value < 0) {
|
|
10400
|
+
setError("Invalid amount");
|
|
10401
|
+
return null;
|
|
10402
|
+
}
|
|
10403
|
+
setIsLoading(true);
|
|
10404
|
+
setError(null);
|
|
10405
|
+
setUserOpHash(null);
|
|
10406
|
+
try {
|
|
10407
|
+
const valueWei = parseEther2(params.value).toString();
|
|
10408
|
+
const hash = await sendUserOperation(
|
|
10409
|
+
session,
|
|
10410
|
+
params.to,
|
|
10411
|
+
valueWei,
|
|
10412
|
+
params.data || "0x",
|
|
10413
|
+
"standard",
|
|
10414
|
+
"v0.7"
|
|
10415
|
+
);
|
|
10416
|
+
setUserOpHash(hash);
|
|
10417
|
+
return hash;
|
|
10418
|
+
} catch (err) {
|
|
10419
|
+
const errorMessage = err instanceof Error ? err.message : "Transaction failed";
|
|
10420
|
+
setError(errorMessage);
|
|
10421
|
+
return null;
|
|
10422
|
+
} finally {
|
|
10423
|
+
setIsLoading(false);
|
|
10424
|
+
}
|
|
10425
|
+
},
|
|
10426
|
+
[session, address]
|
|
10427
|
+
);
|
|
10428
|
+
const reset = useCallback12(() => {
|
|
10429
|
+
setError(null);
|
|
10430
|
+
setUserOpHash(null);
|
|
10431
|
+
setIsLoading(false);
|
|
10432
|
+
}, []);
|
|
10433
|
+
return {
|
|
10434
|
+
sendTransaction,
|
|
10173
10435
|
isLoading,
|
|
10174
|
-
|
|
10436
|
+
error,
|
|
10437
|
+
userOpHash,
|
|
10438
|
+
reset
|
|
10175
10439
|
};
|
|
10176
10440
|
}
|
|
10177
10441
|
|
|
10178
10442
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10179
10443
|
init_base();
|
|
10180
|
-
import { Fragment as
|
|
10444
|
+
import { Fragment as Fragment9, jsx as jsx52, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10181
10445
|
function SendLumiaMenu() {
|
|
10182
10446
|
const page = useLayoutDataStore((st) => st.page);
|
|
10183
10447
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10184
10448
|
const open = page === "send";
|
|
10185
|
-
const
|
|
10449
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10186
10450
|
const { assets } = useAssets(address);
|
|
10187
10451
|
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
10188
10452
|
const { refetch: refetchBalance } = useBalance2({
|
|
@@ -10195,7 +10459,7 @@ function SendLumiaMenu() {
|
|
|
10195
10459
|
const [validationError, setValidationError] = useState11(null);
|
|
10196
10460
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10197
10461
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10198
|
-
|
|
10462
|
+
useEffect20(() => {
|
|
10199
10463
|
if (open) {
|
|
10200
10464
|
setTxStep("input");
|
|
10201
10465
|
setValidationError(null);
|
|
@@ -10250,15 +10514,15 @@ function SendLumiaMenu() {
|
|
|
10250
10514
|
const maxAmount = Math.max(0, balance - 1e-3);
|
|
10251
10515
|
setAmount(maxAmount.toFixed(6));
|
|
10252
10516
|
};
|
|
10253
|
-
return /* @__PURE__ */
|
|
10254
|
-
/* @__PURE__ */
|
|
10255
|
-
txStep === "input" && /* @__PURE__ */
|
|
10256
|
-
/* @__PURE__ */
|
|
10517
|
+
return /* @__PURE__ */ jsxs41("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10518
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10519
|
+
txStep === "input" && /* @__PURE__ */ jsx52(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx52(ArrowLeft10, { className: "h-4 w-4" }) }),
|
|
10520
|
+
/* @__PURE__ */ jsx52("span", { className: "text-xl font-semibold", children: "Send LUMIA" })
|
|
10257
10521
|
] }),
|
|
10258
|
-
txStep === "input" && /* @__PURE__ */
|
|
10259
|
-
/* @__PURE__ */
|
|
10260
|
-
/* @__PURE__ */
|
|
10261
|
-
/* @__PURE__ */
|
|
10522
|
+
txStep === "input" && /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10523
|
+
/* @__PURE__ */ jsxs41("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10524
|
+
/* @__PURE__ */ jsx52("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient Address" }),
|
|
10525
|
+
/* @__PURE__ */ jsx52(
|
|
10262
10526
|
Input,
|
|
10263
10527
|
{
|
|
10264
10528
|
Icon: Wallet,
|
|
@@ -10269,17 +10533,17 @@ function SendLumiaMenu() {
|
|
|
10269
10533
|
}
|
|
10270
10534
|
)
|
|
10271
10535
|
] }),
|
|
10272
|
-
/* @__PURE__ */
|
|
10273
|
-
/* @__PURE__ */
|
|
10274
|
-
/* @__PURE__ */
|
|
10275
|
-
/* @__PURE__ */
|
|
10536
|
+
/* @__PURE__ */ jsxs41("div", { className: "w-full flex flex-col gap-2", children: [
|
|
10537
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between items-center", children: [
|
|
10538
|
+
/* @__PURE__ */ jsx52("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: "Amount" }),
|
|
10539
|
+
/* @__PURE__ */ jsxs41("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
10276
10540
|
"Balance: ",
|
|
10277
10541
|
balance.toFixed(4),
|
|
10278
10542
|
" LUMIA"
|
|
10279
10543
|
] })
|
|
10280
10544
|
] }),
|
|
10281
|
-
/* @__PURE__ */
|
|
10282
|
-
/* @__PURE__ */
|
|
10545
|
+
/* @__PURE__ */ jsxs41("div", { className: "w-full relative", children: [
|
|
10546
|
+
/* @__PURE__ */ jsx52(
|
|
10283
10547
|
Input,
|
|
10284
10548
|
{
|
|
10285
10549
|
Icon: LumiaIcon,
|
|
@@ -10290,7 +10554,7 @@ function SendLumiaMenu() {
|
|
|
10290
10554
|
step: "0.000001"
|
|
10291
10555
|
}
|
|
10292
10556
|
),
|
|
10293
|
-
/* @__PURE__ */
|
|
10557
|
+
/* @__PURE__ */ jsx52(
|
|
10294
10558
|
Button,
|
|
10295
10559
|
{
|
|
10296
10560
|
onClick: handleMaxAmount,
|
|
@@ -10303,65 +10567,65 @@ function SendLumiaMenu() {
|
|
|
10303
10567
|
)
|
|
10304
10568
|
] })
|
|
10305
10569
|
] }),
|
|
10306
|
-
(validationError || error) && /* @__PURE__ */
|
|
10307
|
-
/* @__PURE__ */
|
|
10308
|
-
/* @__PURE__ */
|
|
10570
|
+
(validationError || error) && /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
10571
|
+
/* @__PURE__ */ jsx52(AlertCircle3, { className: "h-4 w-4" }),
|
|
10572
|
+
/* @__PURE__ */ jsx52("span", { className: "text-sm", children: validationError || error })
|
|
10309
10573
|
] }),
|
|
10310
|
-
/* @__PURE__ */
|
|
10574
|
+
/* @__PURE__ */ jsx52(Button, { onClick: handleSend, disabled: isLoading, className: "w-full", size: "large", children: "Continue" })
|
|
10311
10575
|
] }),
|
|
10312
|
-
txStep === "confirm" && /* @__PURE__ */
|
|
10313
|
-
/* @__PURE__ */
|
|
10314
|
-
/* @__PURE__ */
|
|
10315
|
-
/* @__PURE__ */
|
|
10316
|
-
/* @__PURE__ */
|
|
10317
|
-
/* @__PURE__ */
|
|
10318
|
-
/* @__PURE__ */
|
|
10576
|
+
txStep === "confirm" && /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10577
|
+
/* @__PURE__ */ jsxs41("div", { className: "bg-gray-50 rounded-lg p-4", children: [
|
|
10578
|
+
/* @__PURE__ */ jsx52("h3", { className: "font-medium mb-3", children: "Transaction Details" }),
|
|
10579
|
+
/* @__PURE__ */ jsxs41("div", { className: "space-y-2 text-sm", children: [
|
|
10580
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between", children: [
|
|
10581
|
+
/* @__PURE__ */ jsx52("span", { children: "To:" }),
|
|
10582
|
+
/* @__PURE__ */ jsx52("span", { className: `font-mono`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
|
|
10319
10583
|
] }),
|
|
10320
|
-
/* @__PURE__ */
|
|
10321
|
-
/* @__PURE__ */
|
|
10322
|
-
/* @__PURE__ */
|
|
10584
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between", children: [
|
|
10585
|
+
/* @__PURE__ */ jsx52("span", { children: "Amount:" }),
|
|
10586
|
+
/* @__PURE__ */ jsxs41("span", { className: `font-semibold`, children: [
|
|
10323
10587
|
amount,
|
|
10324
10588
|
" LUMIA"
|
|
10325
10589
|
] })
|
|
10326
10590
|
] }),
|
|
10327
|
-
/* @__PURE__ */
|
|
10328
|
-
/* @__PURE__ */
|
|
10329
|
-
/* @__PURE__ */
|
|
10591
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex justify-between", children: [
|
|
10592
|
+
/* @__PURE__ */ jsx52("span", { children: "Network:" }),
|
|
10593
|
+
/* @__PURE__ */ jsx52("span", { children: "Lumia Beam" })
|
|
10330
10594
|
] })
|
|
10331
10595
|
] })
|
|
10332
10596
|
] }),
|
|
10333
|
-
/* @__PURE__ */
|
|
10334
|
-
/* @__PURE__ */
|
|
10335
|
-
/* @__PURE__ */
|
|
10336
|
-
isLoading && /* @__PURE__ */
|
|
10597
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex gap-2", children: [
|
|
10598
|
+
/* @__PURE__ */ jsx52(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
10599
|
+
/* @__PURE__ */ jsxs41(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
10600
|
+
isLoading && /* @__PURE__ */ jsx52(Loader13, { className: "h-4 w-4 animate-spin" }),
|
|
10337
10601
|
"Confirm"
|
|
10338
10602
|
] })
|
|
10339
10603
|
] })
|
|
10340
10604
|
] }),
|
|
10341
|
-
txStep === "pending" && /* @__PURE__ */
|
|
10342
|
-
/* @__PURE__ */
|
|
10343
|
-
/* @__PURE__ */
|
|
10344
|
-
/* @__PURE__ */
|
|
10345
|
-
/* @__PURE__ */
|
|
10605
|
+
txStep === "pending" && /* @__PURE__ */ jsxs41("div", { className: "py-8 text-center space-y-4", children: [
|
|
10606
|
+
/* @__PURE__ */ jsx52(Loader13, { className: "h-12 w-12 animate-spin mx-auto" }),
|
|
10607
|
+
/* @__PURE__ */ jsxs41("div", { children: [
|
|
10608
|
+
/* @__PURE__ */ jsx52("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
10609
|
+
/* @__PURE__ */ jsx52("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
10346
10610
|
] })
|
|
10347
10611
|
] }),
|
|
10348
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
10349
|
-
/* @__PURE__ */
|
|
10350
|
-
/* @__PURE__ */
|
|
10351
|
-
/* @__PURE__ */
|
|
10352
|
-
/* @__PURE__ */
|
|
10612
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10613
|
+
/* @__PURE__ */ jsxs41("div", { className: "text-center py-4", children: [
|
|
10614
|
+
/* @__PURE__ */ jsx52(CheckCircle25, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
10615
|
+
/* @__PURE__ */ jsx52("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
10616
|
+
/* @__PURE__ */ jsx52("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
10353
10617
|
] }),
|
|
10354
|
-
/* @__PURE__ */
|
|
10618
|
+
/* @__PURE__ */ jsx52(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
10355
10619
|
] })
|
|
10356
10620
|
] });
|
|
10357
10621
|
}
|
|
10358
10622
|
|
|
10359
10623
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10360
|
-
import { ArrowLeft as
|
|
10624
|
+
import { ArrowLeft as ArrowLeft11, CheckCircle2 as CheckCircle26, Copy as Copy2, Loader as Loader14 } from "lucide-react";
|
|
10361
10625
|
import QRCode from "qrcode";
|
|
10362
|
-
import { useEffect as
|
|
10626
|
+
import { useEffect as useEffect21, useState as useState12 } from "react";
|
|
10363
10627
|
init_clients();
|
|
10364
|
-
import { Fragment as
|
|
10628
|
+
import { Fragment as Fragment10, jsx as jsx53, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10365
10629
|
function ReceiveLumiaMenu() {
|
|
10366
10630
|
const page = useLayoutDataStore((st) => st.page);
|
|
10367
10631
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10369,7 +10633,7 @@ function ReceiveLumiaMenu() {
|
|
|
10369
10633
|
const { address } = useLumiaPassportSession();
|
|
10370
10634
|
const [qrCodeUrl, setQrCodeUrl] = useState12("");
|
|
10371
10635
|
const [copied, setCopied] = useState12(false);
|
|
10372
|
-
|
|
10636
|
+
useEffect21(() => {
|
|
10373
10637
|
if (open && address) {
|
|
10374
10638
|
QRCode.toDataURL(address, {
|
|
10375
10639
|
width: 200,
|
|
@@ -10392,41 +10656,42 @@ function ReceiveLumiaMenu() {
|
|
|
10392
10656
|
console.error("Failed to copy address:", error);
|
|
10393
10657
|
}
|
|
10394
10658
|
};
|
|
10395
|
-
return /* @__PURE__ */
|
|
10396
|
-
/* @__PURE__ */
|
|
10397
|
-
/* @__PURE__ */
|
|
10398
|
-
/* @__PURE__ */
|
|
10659
|
+
return /* @__PURE__ */ jsxs42("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10660
|
+
/* @__PURE__ */ jsxs42("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10661
|
+
/* @__PURE__ */ jsx53(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx53(ArrowLeft11, { className: "h-4 w-4" }) }),
|
|
10662
|
+
/* @__PURE__ */ jsx53("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10399
10663
|
] }),
|
|
10400
|
-
/* @__PURE__ */
|
|
10401
|
-
/* @__PURE__ */
|
|
10402
|
-
/* @__PURE__ */
|
|
10664
|
+
/* @__PURE__ */ jsxs42(Highlight, { className: "text-center", type: "warning", children: [
|
|
10665
|
+
/* @__PURE__ */ jsx53("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
10666
|
+
/* @__PURE__ */ jsx53("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
10403
10667
|
] }),
|
|
10404
|
-
/* @__PURE__ */
|
|
10405
|
-
/* @__PURE__ */
|
|
10406
|
-
/* @__PURE__ */
|
|
10407
|
-
/* @__PURE__ */
|
|
10408
|
-
/* @__PURE__ */
|
|
10409
|
-
/* @__PURE__ */
|
|
10410
|
-
] }) : /* @__PURE__ */
|
|
10411
|
-
/* @__PURE__ */
|
|
10412
|
-
/* @__PURE__ */
|
|
10668
|
+
/* @__PURE__ */ jsx53("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx53("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx53(Loader14, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
10669
|
+
/* @__PURE__ */ jsxs42(Highlight, { type: "info", children: [
|
|
10670
|
+
/* @__PURE__ */ jsx53("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
10671
|
+
/* @__PURE__ */ jsx53(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ jsxs42(Fragment10, { children: [
|
|
10672
|
+
/* @__PURE__ */ jsx53(CheckCircle26, { className: "h-4 w-4" }),
|
|
10673
|
+
/* @__PURE__ */ jsx53("span", { children: "Copied!" })
|
|
10674
|
+
] }) : /* @__PURE__ */ jsxs42(Fragment10, { children: [
|
|
10675
|
+
/* @__PURE__ */ jsx53(Copy2, { className: "h-4 w-4" }),
|
|
10676
|
+
/* @__PURE__ */ jsx53("span", { children: "Copy Address" })
|
|
10413
10677
|
] }) })
|
|
10414
10678
|
] }),
|
|
10415
|
-
/* @__PURE__ */
|
|
10679
|
+
/* @__PURE__ */ jsx53("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx53("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
10416
10680
|
] });
|
|
10417
10681
|
}
|
|
10418
10682
|
|
|
10419
10683
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10420
|
-
import { ArrowLeft as
|
|
10684
|
+
import { ArrowLeft as ArrowLeft12 } from "lucide-react";
|
|
10685
|
+
import { useEffect as useEffect22 } from "react";
|
|
10421
10686
|
|
|
10422
10687
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10423
10688
|
import { ArrowLeftRight, DatabaseBackup as DatabaseBackup2, LockKeyhole, UsersRound } from "lucide-react";
|
|
10424
10689
|
|
|
10425
10690
|
// src/internal/assets/KycIcon.tsx
|
|
10426
|
-
import { jsx as
|
|
10691
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
10427
10692
|
function KycIcon(props) {
|
|
10428
10693
|
const { width = "24", height = "24", ...rest } = props;
|
|
10429
|
-
return /* @__PURE__ */
|
|
10694
|
+
return /* @__PURE__ */ jsx54("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx54(
|
|
10430
10695
|
"path",
|
|
10431
10696
|
{
|
|
10432
10697
|
d: "M12 18.5455C10.1727 18.5455 8.625 17.9114 7.35682 16.6432C6.08864 15.375 5.45455 13.8273 5.45455 12C5.45455 10.1727 6.08864 8.625 7.35682 7.35682C8.625 6.08864 10.1727 5.45455 12 5.45455C13.8273 5.45455 15.375 6.08864 16.6432 7.35682C17.9114 8.625 18.5455 10.1727 18.5455 12C18.5455 13.8273 17.9114 15.375 16.6432 16.6432C15.375 17.9114 13.8273 18.5455 12 18.5455ZM12 16.9091C13.3636 16.9091 14.5227 16.4318 15.4773 15.4773C16.4318 14.5227 16.9091 13.3636 16.9091 12C16.9091 11.7682 16.892 11.5398 16.858 11.3148C16.8239 11.0898 16.7727 10.8682 16.7045 10.65C16.5 10.6909 16.2955 10.7216 16.0909 10.742C15.8864 10.7625 15.6818 10.7727 15.4773 10.7727C14.6182 10.7727 13.8 10.6091 13.0227 10.2818C12.2455 9.95455 11.55 9.47727 10.9364 8.85C10.5545 9.62727 10.0295 10.3023 9.36136 10.875C8.69318 11.4477 7.93636 11.8636 7.09091 12.1227C7.13182 13.4591 7.62614 14.5909 8.57386 15.5182C9.52159 16.4455 10.6636 16.9091 12 16.9091ZM7.41818 10.2409C8.01818 9.92727 8.475 9.5625 8.78864 9.14659C9.10227 8.73068 9.40909 8.23636 9.70909 7.66364C9.19091 7.93636 8.73409 8.29432 8.33864 8.7375C7.94318 9.18068 7.63636 9.68182 7.41818 10.2409ZM9.95455 13.6364C9.72273 13.6364 9.52841 13.558 9.37159 13.4011C9.21477 13.2443 9.13636 13.05 9.13636 12.8182C9.13636 12.5864 9.21477 12.392 9.37159 12.2352C9.52841 12.0784 9.72273 12 9.95455 12C10.1864 12 10.3807 12.0784 10.5375 12.2352C10.6943 12.392 10.7727 12.5864 10.7727 12.8182C10.7727 13.05 10.6943 13.2443 10.5375 13.4011C10.3807 13.558 10.1864 13.6364 9.95455 13.6364ZM15.4773 9.13636H15.7227C15.8045 9.13636 15.8864 9.12955 15.9682 9.11591C15.5182 8.50227 14.9489 8.01136 14.2602 7.64318C13.5716 7.275 12.8182 7.09091 12 7.09091H11.7545C11.6727 7.09091 11.5977 7.09773 11.5295 7.11136C12.0614 7.725 12.6239 8.21591 13.217 8.58409C13.8102 8.95227 14.5636 9.13636 15.4773 9.13636ZM14.0455 13.6364C13.8136 13.6364 13.6193 13.558 13.4625 13.4011C13.3057 13.2443 13.2273 13.05 13.2273 12.8182C13.2273 12.5864 13.3057 12.392 13.4625 12.2352C13.6193 12.0784 13.8136 12 14.0455 12C14.2773 12 14.4716 12.0784 14.6284 12.2352C14.7852 12.392 14.8636 12.5864 14.8636 12.8182C14.8636 13.05 14.7852 13.2443 14.6284 13.4011C14.4716 13.558 14.2773 13.6364 14.0455 13.6364ZM3 7.09091V4.63636C3 4.18636 3.16023 3.80114 3.48068 3.48068C3.80114 3.16023 4.18636 3 4.63636 3H7.09091V4.63636H4.63636V7.09091H3ZM7.09091 21H4.63636C4.18636 21 3.80114 20.8398 3.48068 20.5193C3.16023 20.1989 3 19.8136 3 19.3636V16.9091H4.63636V19.3636H7.09091V21ZM16.9091 21V19.3636H19.3636V16.9091H21V19.3636C21 19.8136 20.8398 20.1989 20.5193 20.5193C20.1989 20.8398 19.8136 21 19.3636 21H16.9091ZM19.3636 7.09091V4.63636H16.9091V3H19.3636C19.8136 3 20.1989 3.16023 20.5193 3.48068C20.8398 3.80114 21 4.18636 21 4.63636V7.09091H19.3636Z",
|
|
@@ -10445,19 +10710,21 @@ var NAV_BUTTONS = [
|
|
|
10445
10710
|
];
|
|
10446
10711
|
|
|
10447
10712
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10448
|
-
import { jsx as
|
|
10713
|
+
import { jsx as jsx55, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
10449
10714
|
function SettingsMenu() {
|
|
10450
10715
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10451
10716
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10452
10717
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10718
|
+
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10719
|
+
useEffect22(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10453
10720
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10454
10721
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10455
|
-
return /* @__PURE__ */
|
|
10456
|
-
/* @__PURE__ */
|
|
10457
|
-
/* @__PURE__ */
|
|
10458
|
-
/* @__PURE__ */
|
|
10722
|
+
return /* @__PURE__ */ jsxs43("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10723
|
+
/* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10724
|
+
/* @__PURE__ */ jsx55(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx55(ArrowLeft12, { className: "h-4 w-4" }) }),
|
|
10725
|
+
/* @__PURE__ */ jsx55("span", { className: "text-xl font-semibold", children: "Wallet Details" })
|
|
10459
10726
|
] }),
|
|
10460
|
-
/* @__PURE__ */
|
|
10727
|
+
/* @__PURE__ */ jsx55("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon, onClick }) => /* @__PURE__ */ jsxs43(
|
|
10461
10728
|
Button,
|
|
10462
10729
|
{
|
|
10463
10730
|
variant: "outline",
|
|
@@ -10470,8 +10737,8 @@ function SettingsMenu() {
|
|
|
10470
10737
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
10471
10738
|
),
|
|
10472
10739
|
children: [
|
|
10473
|
-
/* @__PURE__ */
|
|
10474
|
-
/* @__PURE__ */
|
|
10740
|
+
/* @__PURE__ */ jsx55(Icon, { className: "w-4 h-4" }),
|
|
10741
|
+
/* @__PURE__ */ jsx55("span", { children: name })
|
|
10475
10742
|
]
|
|
10476
10743
|
},
|
|
10477
10744
|
id
|
|
@@ -10480,15 +10747,15 @@ function SettingsMenu() {
|
|
|
10480
10747
|
}
|
|
10481
10748
|
|
|
10482
10749
|
// src/internal/components/TermsOfService.tsx
|
|
10483
|
-
import { jsx as
|
|
10750
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
10484
10751
|
function TermsOfService() {
|
|
10485
|
-
return /* @__PURE__ */
|
|
10752
|
+
return /* @__PURE__ */ jsx56("div", { className: "w-full p-4 flex flex-col gap-4", children: /* @__PURE__ */ jsx56("span", { className: "prose text-sm", children: "By using Lumia Passport you agree to our terms." }) });
|
|
10486
10753
|
}
|
|
10487
10754
|
|
|
10488
10755
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10489
|
-
import { useQuery as
|
|
10490
|
-
import { Activity, ArrowLeft as
|
|
10491
|
-
import { useCallback as
|
|
10756
|
+
import { useQuery as useQuery7, useQueryClient as useQueryClient9 } from "@tanstack/react-query";
|
|
10757
|
+
import { Activity, ArrowLeft as ArrowLeft13, Loader as Loader15, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
10758
|
+
import { useCallback as useCallback13, useState as useState13 } from "react";
|
|
10492
10759
|
|
|
10493
10760
|
// src/internal/components/TransactionsMenu/api.ts
|
|
10494
10761
|
init_base();
|
|
@@ -10797,7 +11064,7 @@ var parseValue = (value) => {
|
|
|
10797
11064
|
return 0n;
|
|
10798
11065
|
}
|
|
10799
11066
|
};
|
|
10800
|
-
var
|
|
11067
|
+
var formatValue2 = (value, decimals = 18) => {
|
|
10801
11068
|
const amount = parseValue(value);
|
|
10802
11069
|
if (amount === 0n) return "0";
|
|
10803
11070
|
if (decimals <= 0) {
|
|
@@ -10813,7 +11080,7 @@ var formatValue = (value, decimals = 18) => {
|
|
|
10813
11080
|
const trimmed = fractionStr.slice(0, Math.min(6, fractionStr.length));
|
|
10814
11081
|
return `${whole.toString()}.${trimmed}`;
|
|
10815
11082
|
};
|
|
10816
|
-
var
|
|
11083
|
+
var openInExplorer2 = (txHash) => {
|
|
10817
11084
|
const explorerUrl = getExplorerUrl();
|
|
10818
11085
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
10819
11086
|
};
|
|
@@ -10826,24 +11093,24 @@ var formatTimestamp = (timestampMs) => {
|
|
|
10826
11093
|
};
|
|
10827
11094
|
|
|
10828
11095
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
10829
|
-
import { jsx as
|
|
10830
|
-
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */
|
|
10831
|
-
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */
|
|
11096
|
+
import { jsx as jsx57, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
11097
|
+
var getStatusIcon = (status) => status === "ok" ? /* @__PURE__ */ jsx57(CheckCircle27, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(XCircle, { className: "w-4 h-4 text-[var(--l-pass-error)]" });
|
|
11098
|
+
var getTransactionIcon = (direction) => direction === "in" ? /* @__PURE__ */ jsx57(ArrowDownRight, { className: "w-4 h-4 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(ArrowUpRight, { className: "w-4 h-4 text-[var(--l-pass-info)]" });
|
|
10832
11099
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
10833
11100
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
10834
11101
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
10835
|
-
return /* @__PURE__ */
|
|
10836
|
-
/* @__PURE__ */
|
|
10837
|
-
/* @__PURE__ */
|
|
10838
|
-
/* @__PURE__ */
|
|
10839
|
-
|
|
11102
|
+
return /* @__PURE__ */ jsxs44("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
11103
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11104
|
+
/* @__PURE__ */ jsx57("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
11105
|
+
/* @__PURE__ */ jsxs44("span", { children: [
|
|
11106
|
+
formatValue2(internal.value, internalDecimals),
|
|
10840
11107
|
" ",
|
|
10841
11108
|
internalSymbol
|
|
10842
11109
|
] })
|
|
10843
11110
|
] }),
|
|
10844
|
-
/* @__PURE__ */
|
|
10845
|
-
/* @__PURE__ */
|
|
10846
|
-
/* @__PURE__ */
|
|
11111
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
11112
|
+
/* @__PURE__ */ jsx57("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
11113
|
+
/* @__PURE__ */ jsx57("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
10847
11114
|
] })
|
|
10848
11115
|
] });
|
|
10849
11116
|
}
|
|
@@ -10854,22 +11121,22 @@ function TransactionsGroup(props) {
|
|
|
10854
11121
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
10855
11122
|
const assetDecimals = parent.decimals ?? 18;
|
|
10856
11123
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
10857
|
-
return /* @__PURE__ */
|
|
11124
|
+
return /* @__PURE__ */ jsxs44(
|
|
10858
11125
|
"div",
|
|
10859
11126
|
{
|
|
10860
|
-
onClick: () =>
|
|
11127
|
+
onClick: () => openInExplorer2(parent.parentHash),
|
|
10861
11128
|
className: cn(
|
|
10862
11129
|
"rounded-[var(--l-pass-el-bdrs)] p-2 transition-colors cursor-pointer border border-[var(--l-pass-bd)]",
|
|
10863
11130
|
"bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
10864
11131
|
),
|
|
10865
11132
|
children: [
|
|
10866
|
-
/* @__PURE__ */
|
|
10867
|
-
/* @__PURE__ */
|
|
11133
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between gap-2", children: [
|
|
11134
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
10868
11135
|
getTransactionIcon(parent.direction),
|
|
10869
|
-
/* @__PURE__ */
|
|
11136
|
+
/* @__PURE__ */ jsx57("span", { className: "font-medium", children: isIncoming ? "Received" : "Sent" }),
|
|
10870
11137
|
getStatusIcon(parent.status)
|
|
10871
11138
|
] }),
|
|
10872
|
-
parent.badgeLabel && /* @__PURE__ */
|
|
11139
|
+
parent.badgeLabel && /* @__PURE__ */ jsx57(
|
|
10873
11140
|
"span",
|
|
10874
11141
|
{
|
|
10875
11142
|
className: cn(
|
|
@@ -10880,39 +11147,39 @@ function TransactionsGroup(props) {
|
|
|
10880
11147
|
}
|
|
10881
11148
|
)
|
|
10882
11149
|
] }),
|
|
10883
|
-
/* @__PURE__ */
|
|
10884
|
-
/* @__PURE__ */
|
|
10885
|
-
/* @__PURE__ */
|
|
10886
|
-
/* @__PURE__ */
|
|
10887
|
-
/* @__PURE__ */
|
|
11150
|
+
/* @__PURE__ */ jsx57("span", { className: "block w-full leading-4 mb-1 text-xs text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) }),
|
|
11151
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex flex-col gap-0 text-sm", children: [
|
|
11152
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11153
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: isIncoming ? "From:" : "To:" }),
|
|
11154
|
+
/* @__PURE__ */ jsxs44("span", { className: "font-mono", children: [
|
|
10888
11155
|
parent.counterpartyName || formatAddress2(parent.counterparty),
|
|
10889
|
-
parent.counterpartyIsContract && /* @__PURE__ */
|
|
11156
|
+
parent.counterpartyIsContract && /* @__PURE__ */ jsx57("span", { className: "text-xs text-[var(--l-pass-info)] ml-1", children: "(Contract)" })
|
|
10890
11157
|
] })
|
|
10891
11158
|
] }),
|
|
10892
|
-
/* @__PURE__ */
|
|
10893
|
-
/* @__PURE__ */
|
|
10894
|
-
/* @__PURE__ */
|
|
10895
|
-
|
|
11159
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11160
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Value:" }),
|
|
11161
|
+
/* @__PURE__ */ jsxs44("span", { className: "font-semibold", children: [
|
|
11162
|
+
formatValue2(parent.value, assetDecimals),
|
|
10896
11163
|
" ",
|
|
10897
11164
|
assetSymbol
|
|
10898
11165
|
] })
|
|
10899
11166
|
] }),
|
|
10900
|
-
/* @__PURE__ */
|
|
10901
|
-
/* @__PURE__ */
|
|
10902
|
-
/* @__PURE__ */
|
|
11167
|
+
/* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11168
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs leading-5 text-[var(--l-pass-fg-muted)]", children: "Block:" }),
|
|
11169
|
+
/* @__PURE__ */ jsx57("span", { className: "font-mono", children: parent.blockNumber ? `#${parent.blockNumber}` : "-" })
|
|
10903
11170
|
] }),
|
|
10904
|
-
parent.method && /* @__PURE__ */
|
|
10905
|
-
/* @__PURE__ */
|
|
10906
|
-
/* @__PURE__ */
|
|
11171
|
+
parent.method && /* @__PURE__ */ jsxs44("div", { className: "flex justify-between", children: [
|
|
11172
|
+
/* @__PURE__ */ jsx57("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Method:" }),
|
|
11173
|
+
/* @__PURE__ */ jsx57("span", { className: "text-[var(--l-pass-info)] text-xs", children: parent.method })
|
|
10907
11174
|
] })
|
|
10908
11175
|
] }),
|
|
10909
|
-
internalsToRender.length > 0 && /* @__PURE__ */
|
|
11176
|
+
internalsToRender.length > 0 && /* @__PURE__ */ jsxs44(
|
|
10910
11177
|
"div",
|
|
10911
11178
|
{
|
|
10912
11179
|
className: "mt-4 rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
10913
11180
|
onClick: (event) => event.stopPropagation(),
|
|
10914
11181
|
children: [
|
|
10915
|
-
/* @__PURE__ */
|
|
11182
|
+
/* @__PURE__ */ jsxs44(
|
|
10916
11183
|
Button,
|
|
10917
11184
|
{
|
|
10918
11185
|
variant: "ghost",
|
|
@@ -10920,16 +11187,16 @@ function TransactionsGroup(props) {
|
|
|
10920
11187
|
className: "w-full justify-between",
|
|
10921
11188
|
onClick: () => onToggleExpanded(group.id),
|
|
10922
11189
|
children: [
|
|
10923
|
-
/* @__PURE__ */
|
|
11190
|
+
/* @__PURE__ */ jsxs44("span", { children: [
|
|
10924
11191
|
"View internal calls (",
|
|
10925
11192
|
internalsToRender.length,
|
|
10926
11193
|
")"
|
|
10927
11194
|
] }),
|
|
10928
|
-
/* @__PURE__ */
|
|
11195
|
+
/* @__PURE__ */ jsx57("span", { children: expanded ? "Hide" : "Show" })
|
|
10929
11196
|
]
|
|
10930
11197
|
}
|
|
10931
11198
|
),
|
|
10932
|
-
expanded && /* @__PURE__ */
|
|
11199
|
+
expanded && /* @__PURE__ */ jsx57("div", { className: "px-3 pb-3 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ jsx57(
|
|
10933
11200
|
InternalTransaction,
|
|
10934
11201
|
{
|
|
10935
11202
|
internal,
|
|
@@ -10947,9 +11214,9 @@ function TransactionsGroup(props) {
|
|
|
10947
11214
|
}
|
|
10948
11215
|
|
|
10949
11216
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
10950
|
-
import { jsx as
|
|
11217
|
+
import { jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
10951
11218
|
function TransactionsMenu() {
|
|
10952
|
-
const qc =
|
|
11219
|
+
const qc = useQueryClient9();
|
|
10953
11220
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10954
11221
|
const page = useLayoutDataStore((st) => st.page);
|
|
10955
11222
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
@@ -10959,22 +11226,22 @@ function TransactionsMenu() {
|
|
|
10959
11226
|
isLoading: isTxHistoryLoading,
|
|
10960
11227
|
isFetching: isTxHistoryFetching,
|
|
10961
11228
|
error: txHistoryError
|
|
10962
|
-
} =
|
|
11229
|
+
} = useQuery7({
|
|
10963
11230
|
retry: false,
|
|
10964
11231
|
enabled: !!address && page === "transactions",
|
|
10965
11232
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
10966
11233
|
queryFn: () => getTransactionsListQuery(address)
|
|
10967
11234
|
});
|
|
10968
|
-
const refreshTxHistory =
|
|
11235
|
+
const refreshTxHistory = useCallback13(
|
|
10969
11236
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
10970
11237
|
[qc, address]
|
|
10971
11238
|
);
|
|
10972
11239
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
10973
|
-
return /* @__PURE__ */
|
|
10974
|
-
/* @__PURE__ */
|
|
10975
|
-
/* @__PURE__ */
|
|
10976
|
-
/* @__PURE__ */
|
|
10977
|
-
/* @__PURE__ */
|
|
11240
|
+
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11241
|
+
/* @__PURE__ */ jsx58("div", { className: "w-full", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
11242
|
+
/* @__PURE__ */ jsx58(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx58(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
11243
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
11244
|
+
/* @__PURE__ */ jsx58(
|
|
10978
11245
|
Button,
|
|
10979
11246
|
{
|
|
10980
11247
|
variant: "ghost",
|
|
@@ -10982,13 +11249,13 @@ function TransactionsMenu() {
|
|
|
10982
11249
|
onClick: refreshTxHistory,
|
|
10983
11250
|
disabled: isTxHistoryFetching,
|
|
10984
11251
|
title: "Refresh transactions",
|
|
10985
|
-
children: isTxHistoryFetching ? /* @__PURE__ */
|
|
11252
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ jsx58(Loader15, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx58(RefreshCw3, { className: "h-4 w-4" })
|
|
10986
11253
|
}
|
|
10987
11254
|
)
|
|
10988
11255
|
] }) }),
|
|
10989
|
-
/* @__PURE__ */
|
|
10990
|
-
isTxHistoryLoading && /* @__PURE__ */
|
|
10991
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */
|
|
11256
|
+
/* @__PURE__ */ jsxs45("div", { className: "max-h-[60vh] overflow-y-auto", children: [
|
|
11257
|
+
isTxHistoryLoading && /* @__PURE__ */ jsx58("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx58(Loader15, { className: "h-5 w-5 animate-spin" }) }),
|
|
11258
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs45(
|
|
10992
11259
|
"div",
|
|
10993
11260
|
{
|
|
10994
11261
|
className: cn(
|
|
@@ -10997,20 +11264,20 @@ function TransactionsMenu() {
|
|
|
10997
11264
|
"text-[var(--l-pass-error)]"
|
|
10998
11265
|
),
|
|
10999
11266
|
children: [
|
|
11000
|
-
/* @__PURE__ */
|
|
11001
|
-
/* @__PURE__ */
|
|
11267
|
+
/* @__PURE__ */ jsx58(XCircle2, { className: "w-12 h-12 mb-2" }),
|
|
11268
|
+
/* @__PURE__ */ jsx58("span", { className: "block w-full text-center text-sm", children: txHistoryResolvedError })
|
|
11002
11269
|
]
|
|
11003
11270
|
}
|
|
11004
11271
|
),
|
|
11005
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */
|
|
11006
|
-
/* @__PURE__ */
|
|
11007
|
-
/* @__PURE__ */
|
|
11008
|
-
/* @__PURE__ */
|
|
11009
|
-
/* @__PURE__ */
|
|
11010
|
-
/* @__PURE__ */
|
|
11272
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsxs45("div", { className: "flex flex-col gap-2 items-center justify-center p-4 text-[var(--l-pass-fg-muted)]", children: [
|
|
11273
|
+
/* @__PURE__ */ jsx58(Activity, { className: "w-12 h-12" }),
|
|
11274
|
+
/* @__PURE__ */ jsxs45("span", { className: "block w-full text-center", children: [
|
|
11275
|
+
/* @__PURE__ */ jsx58("span", { children: "No transactions found" }),
|
|
11276
|
+
/* @__PURE__ */ jsx58("br", {}),
|
|
11277
|
+
/* @__PURE__ */ jsx58("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
|
|
11011
11278
|
] })
|
|
11012
11279
|
] }),
|
|
11013
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */
|
|
11280
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ jsx58("div", { className: "w-full flex flex-col gap-2", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx58(
|
|
11014
11281
|
TransactionsGroup,
|
|
11015
11282
|
{
|
|
11016
11283
|
group,
|
|
@@ -11023,127 +11290,6 @@ function TransactionsMenu() {
|
|
|
11023
11290
|
] });
|
|
11024
11291
|
}
|
|
11025
11292
|
|
|
11026
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11027
|
-
import { ArrowLeft as ArrowLeft13, Gem, Loader as Loader13, RefreshCw as RefreshCw3 } from "lucide-react";
|
|
11028
|
-
|
|
11029
|
-
// src/internal/components/ViewAssetsMenu/AssetItem.tsx
|
|
11030
|
-
init_base();
|
|
11031
|
-
import { Check as Check2, Copy as Copy3, ExternalLink } from "lucide-react";
|
|
11032
|
-
import React14 from "react";
|
|
11033
|
-
import { jsx as jsx57, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
11034
|
-
var openInExplorer2 = (address) => {
|
|
11035
|
-
window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank");
|
|
11036
|
-
};
|
|
11037
|
-
function AssetItem(props) {
|
|
11038
|
-
const { address, asset } = props;
|
|
11039
|
-
const [copied, setCopied] = React14.useState(null);
|
|
11040
|
-
const handleCopy = async (text, type) => {
|
|
11041
|
-
try {
|
|
11042
|
-
await navigator.clipboard.writeText(text);
|
|
11043
|
-
setCopied(type);
|
|
11044
|
-
setTimeout(() => setCopied(null), 1500);
|
|
11045
|
-
} catch (error) {
|
|
11046
|
-
console.error("Failed to copy:", error);
|
|
11047
|
-
}
|
|
11048
|
-
};
|
|
11049
|
-
return /* @__PURE__ */ jsxs44("div", { className: "w-full border border-[var(--l-pass-bd)] bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] rounded-xl p-3 transition-colors", children: [
|
|
11050
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between mb-2", children: [
|
|
11051
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-3", children: [
|
|
11052
|
-
/* @__PURE__ */ jsx57("div", { className: "w-10 h-10 bg-[var(--l-pass-primary)] rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx57("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
|
|
11053
|
-
/* @__PURE__ */ jsxs44("div", { children: [
|
|
11054
|
-
/* @__PURE__ */ jsx57("div", { className: "font-medium", children: asset.name }),
|
|
11055
|
-
/* @__PURE__ */ jsx57("div", { className: "text-sm", children: asset.symbol })
|
|
11056
|
-
] })
|
|
11057
|
-
] }),
|
|
11058
|
-
/* @__PURE__ */ jsxs44("div", { className: "text-right", children: [
|
|
11059
|
-
/* @__PURE__ */ jsx57("div", { className: "font-mono", children: asset.formattedBalance }),
|
|
11060
|
-
/* @__PURE__ */ jsx57("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: asset.symbol })
|
|
11061
|
-
] })
|
|
11062
|
-
] }),
|
|
11063
|
-
asset.address && /* @__PURE__ */ jsxs44("div", { className: "w-full space-y-2 mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: [
|
|
11064
|
-
/* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11065
|
-
/* @__PURE__ */ jsx57("span", { children: "Contract Address:" }),
|
|
11066
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11067
|
-
/* @__PURE__ */ jsx57("span", { className: `font-mono text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
|
|
11068
|
-
/* @__PURE__ */ jsx57(
|
|
11069
|
-
Button,
|
|
11070
|
-
{
|
|
11071
|
-
variant: "ghost",
|
|
11072
|
-
size: "icon",
|
|
11073
|
-
title: "Copy address",
|
|
11074
|
-
onClick: () => handleCopy(asset.address, "address"),
|
|
11075
|
-
children: copied === "address" ? /* @__PURE__ */ jsx57(Check2, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(Copy3, { className: "w-3 h-3" })
|
|
11076
|
-
}
|
|
11077
|
-
),
|
|
11078
|
-
/* @__PURE__ */ jsx57(
|
|
11079
|
-
Button,
|
|
11080
|
-
{
|
|
11081
|
-
variant: "ghost",
|
|
11082
|
-
size: "icon",
|
|
11083
|
-
onClick: () => openInExplorer2(asset.address),
|
|
11084
|
-
title: "View in explorer",
|
|
11085
|
-
children: /* @__PURE__ */ jsx57(ExternalLink, { className: "w-3 h-3" })
|
|
11086
|
-
}
|
|
11087
|
-
)
|
|
11088
|
-
] })
|
|
11089
|
-
] }),
|
|
11090
|
-
asset.decimals && /* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center justify-between text-sm", children: [
|
|
11091
|
-
/* @__PURE__ */ jsx57("span", { children: "Decimals:" }),
|
|
11092
|
-
/* @__PURE__ */ jsx57("span", { children: asset.decimals })
|
|
11093
|
-
] })
|
|
11094
|
-
] }),
|
|
11095
|
-
asset.type === "native" && address && /* @__PURE__ */ jsx57("div", { className: "mt-3 pt-3 border-t border-[var(--l-pass-bd)]", children: /* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between text-sm", children: [
|
|
11096
|
-
/* @__PURE__ */ jsx57("span", { children: "Your Address:" }),
|
|
11097
|
-
/* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-2", children: [
|
|
11098
|
-
/* @__PURE__ */ jsx57("span", { className: "font-mono text-xs", children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
|
|
11099
|
-
/* @__PURE__ */ jsx57(
|
|
11100
|
-
Button,
|
|
11101
|
-
{
|
|
11102
|
-
variant: "ghost",
|
|
11103
|
-
size: "icon",
|
|
11104
|
-
onClick: () => handleCopy(address, "wallet"),
|
|
11105
|
-
title: "Copy wallet address",
|
|
11106
|
-
children: copied === "wallet" ? /* @__PURE__ */ jsx57(Check2, { className: "w-3 h-3 text-[var(--l-pass-success)]" }) : /* @__PURE__ */ jsx57(Copy3, { className: "w-3 h-3" })
|
|
11107
|
-
}
|
|
11108
|
-
),
|
|
11109
|
-
/* @__PURE__ */ jsx57(Button, { variant: "ghost", size: "icon", onClick: () => openInExplorer2(address), title: "View in explorer", children: /* @__PURE__ */ jsx57(ExternalLink, { className: "w-3 h-3" }) })
|
|
11110
|
-
] })
|
|
11111
|
-
] }) })
|
|
11112
|
-
] });
|
|
11113
|
-
}
|
|
11114
|
-
|
|
11115
|
-
// src/internal/components/ViewAssetsMenu/ViewAssetsMenu.tsx
|
|
11116
|
-
import { jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
11117
|
-
function ViewAssetsMenu() {
|
|
11118
|
-
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11119
|
-
const { address } = useLumiaPassportSession();
|
|
11120
|
-
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
11121
|
-
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-4 flex flex-col gap-4", children: [
|
|
11122
|
-
/* @__PURE__ */ jsx58("div", { className: "w-full", children: /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
11123
|
-
/* @__PURE__ */ jsx58(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx58(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
11124
|
-
/* @__PURE__ */ jsx58("span", { className: "text-xl font-semibold", children: "Your Assets" }),
|
|
11125
|
-
/* @__PURE__ */ jsx58(Button, { title: "Refresh balances", variant: "ghost", size: "icon", onClick: refreshBalances, disabled: isLoading, children: isLoading ? /* @__PURE__ */ jsx58(Loader13, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx58(RefreshCw3, { className: "h-4 w-4" }) })
|
|
11126
|
-
] }) }),
|
|
11127
|
-
/* @__PURE__ */ jsxs45(Expandable, { isExpanded: true, contentClassName: "w-full max-h-[60dvh] overflow-y-auto", children: [
|
|
11128
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full text-sm text-[var(--l-pass-muted)] mb-4", children: [
|
|
11129
|
-
"Total: ",
|
|
11130
|
-
assets.length,
|
|
11131
|
-
" asset",
|
|
11132
|
-
assets.length !== 1 ? "s" : ""
|
|
11133
|
-
] }),
|
|
11134
|
-
isLoading && /* @__PURE__ */ jsxs45("div", { className: "w-full flex items-center justify-center gap-2 p-4", children: [
|
|
11135
|
-
/* @__PURE__ */ jsx58(Loader13, { className: "h-5 w-5 mr-2 animate-spin" }),
|
|
11136
|
-
/* @__PURE__ */ jsx58("span", { className: "text-[var(--l-pass-muted)]", children: "Loading assets..." })
|
|
11137
|
-
] }),
|
|
11138
|
-
!isLoading && assets.length === 0 && /* @__PURE__ */ jsxs45("div", { className: "w-full flex flex-col items-center justify-center py-8 text-[var(--l-pass-muted)]", children: [
|
|
11139
|
-
/* @__PURE__ */ jsx58(Gem, { className: "w-12 h-12 mb-2" }),
|
|
11140
|
-
/* @__PURE__ */ jsx58("p", { children: "No assets found" })
|
|
11141
|
-
] }),
|
|
11142
|
-
!isLoading && assets.length > 0 && /* @__PURE__ */ jsx58("div", { className: "w-full flex flex-col gap-2", children: assets.map((asset, index) => /* @__PURE__ */ jsx58(AssetItem, { address, asset }, `${asset.type}-${asset.address || "native"}-${index}`)) })
|
|
11143
|
-
] })
|
|
11144
|
-
] });
|
|
11145
|
-
}
|
|
11146
|
-
|
|
11147
11293
|
// src/internal/components/PageMap.tsx
|
|
11148
11294
|
var PAGE_MAP = {
|
|
11149
11295
|
["auth" /* AUTH */]: {
|
|
@@ -11202,9 +11348,9 @@ var PAGE_MAP = {
|
|
|
11202
11348
|
},
|
|
11203
11349
|
["assets" /* ASSETS */]: {
|
|
11204
11350
|
key: "assets" /* ASSETS */,
|
|
11205
|
-
title: "
|
|
11351
|
+
title: "Assets Portfolio Menu",
|
|
11206
11352
|
description: "View your token balances and assets",
|
|
11207
|
-
component:
|
|
11353
|
+
component: PortfolioMenu
|
|
11208
11354
|
},
|
|
11209
11355
|
["manage-wallet" /* MANAGE_WALLET */]: {
|
|
11210
11356
|
key: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11253,7 +11399,7 @@ function usePageMapper() {
|
|
|
11253
11399
|
setIsDialogOpen,
|
|
11254
11400
|
setIsDialogClosing
|
|
11255
11401
|
} = useLayoutStore();
|
|
11256
|
-
const closeDialog =
|
|
11402
|
+
const closeDialog = useCallback14(() => {
|
|
11257
11403
|
setIsDialogClosing(true);
|
|
11258
11404
|
setTimeout(() => {
|
|
11259
11405
|
setDialogContent(null);
|
|
@@ -11264,7 +11410,7 @@ function usePageMapper() {
|
|
|
11264
11410
|
setIsDialogOpen(false);
|
|
11265
11411
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11266
11412
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11267
|
-
const openDialog =
|
|
11413
|
+
const openDialog = useCallback14(
|
|
11268
11414
|
(pageItem) => {
|
|
11269
11415
|
const PageContentComponent = pageItem.component;
|
|
11270
11416
|
setDialogTitle(pageItem.title);
|
|
@@ -11274,7 +11420,7 @@ function usePageMapper() {
|
|
|
11274
11420
|
},
|
|
11275
11421
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11276
11422
|
);
|
|
11277
|
-
|
|
11423
|
+
useEffect23(() => {
|
|
11278
11424
|
if (page === null) return closeDialog();
|
|
11279
11425
|
const pageItem = protectedRoutes[page];
|
|
11280
11426
|
if (!pageItem) {
|
|
@@ -11288,7 +11434,7 @@ function usePageMapper() {
|
|
|
11288
11434
|
|
|
11289
11435
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11290
11436
|
init_auth();
|
|
11291
|
-
import { useEffect as
|
|
11437
|
+
import { useEffect as useEffect24 } from "react";
|
|
11292
11438
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11293
11439
|
id: "email-not-connected",
|
|
11294
11440
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11304,13 +11450,13 @@ function useSettingsNotifications() {
|
|
|
11304
11450
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11305
11451
|
const providers = jwtTokenManager2.getProviders();
|
|
11306
11452
|
const hasEmail = providers.includes("email");
|
|
11307
|
-
|
|
11453
|
+
useEffect24(() => {
|
|
11308
11454
|
setSettingsNotifications({
|
|
11309
11455
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11310
11456
|
status: hasServerVault ? "resolved" : "active"
|
|
11311
11457
|
});
|
|
11312
11458
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11313
|
-
|
|
11459
|
+
useEffect24(() => {
|
|
11314
11460
|
setSettingsNotifications({
|
|
11315
11461
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11316
11462
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11319,14 +11465,17 @@ function useSettingsNotifications() {
|
|
|
11319
11465
|
}
|
|
11320
11466
|
|
|
11321
11467
|
// src/internal/hooks/useWalletStatus.ts
|
|
11322
|
-
import { useEffect as
|
|
11468
|
+
import { useEffect as useEffect25 } from "react";
|
|
11323
11469
|
init_auth();
|
|
11324
11470
|
function useWalletStatus() {
|
|
11325
11471
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
11326
11472
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11327
11473
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11328
|
-
const {
|
|
11329
|
-
|
|
11474
|
+
const {
|
|
11475
|
+
config: { current: config },
|
|
11476
|
+
callbacks
|
|
11477
|
+
} = useLumiaPassportConfig();
|
|
11478
|
+
useEffect25(() => {
|
|
11330
11479
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11331
11480
|
const userId = jwtTokenManager2.getUserId();
|
|
11332
11481
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -11348,13 +11497,16 @@ function useWalletStatus() {
|
|
|
11348
11497
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11349
11498
|
import { jsx as jsx60, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
11350
11499
|
function LumiaPassportDialog() {
|
|
11351
|
-
const
|
|
11500
|
+
const {
|
|
11501
|
+
config: { current: config }
|
|
11502
|
+
} = useLumiaPassportConfig();
|
|
11503
|
+
const className = config?.ui?.dialogClassName;
|
|
11352
11504
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11353
11505
|
const page = useLayoutDataStore((st) => st.page);
|
|
11354
11506
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11355
11507
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11356
11508
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11357
|
-
|
|
11509
|
+
useEffect26(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11358
11510
|
usePageMapper();
|
|
11359
11511
|
useAutoConnect();
|
|
11360
11512
|
useCheckVaultStatus();
|
|
@@ -11392,13 +11544,13 @@ function LumiaPassportDialog() {
|
|
|
11392
11544
|
}
|
|
11393
11545
|
|
|
11394
11546
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11395
|
-
import { useEffect as
|
|
11547
|
+
import { useEffect as useEffect28 } from "react";
|
|
11396
11548
|
import { useBalance as useBalance3 } from "wagmi";
|
|
11397
11549
|
init_base();
|
|
11398
11550
|
|
|
11399
11551
|
// src/internal/hooks/useLumiaPriceSSE.ts
|
|
11400
11552
|
import { useMutation as useMutation11 } from "@tanstack/react-query";
|
|
11401
|
-
import { useEffect as
|
|
11553
|
+
import { useEffect as useEffect27 } from "react";
|
|
11402
11554
|
|
|
11403
11555
|
// src/internal/lib/LumiaPriceSSEService.ts
|
|
11404
11556
|
var FALLBACK3 = "https://fallback.lumia.passport.io";
|
|
@@ -11533,7 +11685,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11533
11685
|
console.error("Lumia Price SSE connection error:", err);
|
|
11534
11686
|
}
|
|
11535
11687
|
});
|
|
11536
|
-
|
|
11688
|
+
useEffect27(() => {
|
|
11537
11689
|
const isConnected = lumiaPriceSSE.getConnectionStatus();
|
|
11538
11690
|
console.log("[LUMIA PRICE SSE MANAGER] SSE status:", { enabled, isConnected });
|
|
11539
11691
|
if (!enabled) {
|
|
@@ -11550,7 +11702,7 @@ function useLumiaPriceSSE(enabled, updateCurrentPrice) {
|
|
|
11550
11702
|
|
|
11551
11703
|
// src/internal/components/LumiaPriceSSE.tsx
|
|
11552
11704
|
function LumiaPriceSSE() {
|
|
11553
|
-
const address = useLumiaPassportSession().address;
|
|
11705
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
11554
11706
|
const { data: balance } = useBalance3({
|
|
11555
11707
|
address,
|
|
11556
11708
|
chainId: lumiaBeam.id,
|
|
@@ -11564,7 +11716,7 @@ function LumiaPriceSSE() {
|
|
|
11564
11716
|
});
|
|
11565
11717
|
const { lumiaRate, setLumiaRate, setUsdBalance, setBalance } = useLayoutDataStore();
|
|
11566
11718
|
useLumiaPriceSSE(!!address, (update) => setLumiaRate(update.price || 1));
|
|
11567
|
-
|
|
11719
|
+
useEffect28(() => {
|
|
11568
11720
|
const usdBalance = Number(balance?.formatted || 0) * lumiaRate;
|
|
11569
11721
|
setUsdBalance(usdBalance);
|
|
11570
11722
|
setBalance(balance);
|
|
@@ -11573,23 +11725,23 @@ function LumiaPriceSSE() {
|
|
|
11573
11725
|
}
|
|
11574
11726
|
|
|
11575
11727
|
// src/internal/components/TssManager.tsx
|
|
11576
|
-
import
|
|
11728
|
+
import React14, { useCallback as useCallback15 } from "react";
|
|
11577
11729
|
init_auth();
|
|
11578
11730
|
init_clients();
|
|
11579
|
-
var TssManagerWithRef =
|
|
11731
|
+
var TssManagerWithRef = React14.forwardRef((props, ref) => {
|
|
11580
11732
|
const { mpcPin } = props;
|
|
11581
11733
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11582
11734
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11583
11735
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11584
11736
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11585
|
-
const onSessionCreated =
|
|
11737
|
+
const onSessionCreated = useCallback15(
|
|
11586
11738
|
(session, address) => {
|
|
11587
11739
|
setSession(session);
|
|
11588
11740
|
setAddress(address);
|
|
11589
11741
|
},
|
|
11590
11742
|
[setSession, setAddress]
|
|
11591
11743
|
);
|
|
11592
|
-
const createSessionWithKeyshare =
|
|
11744
|
+
const createSessionWithKeyshare = React14.useCallback(
|
|
11593
11745
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11594
11746
|
setStatus("checking key management setup...");
|
|
11595
11747
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11610,50 +11762,46 @@ var TssManagerWithRef = React15.forwardRef((props, ref) => {
|
|
|
11610
11762
|
},
|
|
11611
11763
|
[setStatus, usePaymaster, mpcPin]
|
|
11612
11764
|
);
|
|
11613
|
-
|
|
11765
|
+
React14.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11614
11766
|
return null;
|
|
11615
11767
|
});
|
|
11616
11768
|
|
|
11617
11769
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11770
|
+
init_wallet();
|
|
11618
11771
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
11619
|
-
import { useQueryClient as
|
|
11620
|
-
import
|
|
11772
|
+
import { useQueryClient as useQueryClient10 } from "@tanstack/react-query";
|
|
11773
|
+
import React15, { useCallback as useCallback16, useEffect as useEffect29 } from "react";
|
|
11621
11774
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
11622
|
-
init_wallet();
|
|
11623
11775
|
function WalletConnectHandler() {
|
|
11624
|
-
const qc =
|
|
11625
|
-
const { callbacks
|
|
11776
|
+
const qc = useQueryClient10();
|
|
11777
|
+
const { callbacks } = useLumiaPassportConfig();
|
|
11778
|
+
const { address, isConnected, chain, connector } = useAccount();
|
|
11779
|
+
const { disconnect } = useDisconnect();
|
|
11780
|
+
const { signMessageAsync } = useSignMessage();
|
|
11626
11781
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11627
11782
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11628
|
-
const onError =
|
|
11783
|
+
const onError = useCallback16((error) => {
|
|
11629
11784
|
setLinkError(error);
|
|
11630
11785
|
setIsWalletLinking(false);
|
|
11631
11786
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11632
11787
|
}, []);
|
|
11633
|
-
const onLinkingComplete =
|
|
11634
|
-
setIsWalletLinking(false);
|
|
11788
|
+
const onLinkingComplete = useCallback16(async (success) => {
|
|
11635
11789
|
if (success) {
|
|
11790
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
11791
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
11636
11792
|
try {
|
|
11637
|
-
|
|
11638
|
-
|
|
11639
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11640
|
-
notifyProvidersUpdate?.();
|
|
11641
|
-
} catch {
|
|
11642
|
-
}
|
|
11643
|
-
} catch (e) {
|
|
11644
|
-
console.error("Failed to load providers:", e);
|
|
11793
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11794
|
+
} catch {
|
|
11645
11795
|
}
|
|
11646
11796
|
setProviderType(null);
|
|
11647
11797
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11648
11798
|
}
|
|
11799
|
+
setIsWalletLinking(false);
|
|
11649
11800
|
}, []);
|
|
11650
11801
|
const { openConnectModal } = useConnectModal();
|
|
11651
|
-
const
|
|
11652
|
-
const
|
|
11653
|
-
|
|
11654
|
-
const [hasStartedLinking, setHasStartedLinking] = React16.useState(false);
|
|
11655
|
-
const timeoutRef = React16.useRef();
|
|
11656
|
-
useEffect27(() => {
|
|
11802
|
+
const [hasStartedLinking, setHasStartedLinking] = React15.useState(false);
|
|
11803
|
+
const timeoutRef = React15.useRef();
|
|
11804
|
+
useEffect29(() => {
|
|
11657
11805
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11658
11806
|
setHasStartedLinking(true);
|
|
11659
11807
|
if (isConnected) {
|
|
@@ -11685,7 +11833,7 @@ function WalletConnectHandler() {
|
|
|
11685
11833
|
}
|
|
11686
11834
|
}
|
|
11687
11835
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect]);
|
|
11688
|
-
|
|
11836
|
+
useEffect29(() => {
|
|
11689
11837
|
if (isConnected && address && isWalletLinking && hasStartedLinking) {
|
|
11690
11838
|
handleWalletSign();
|
|
11691
11839
|
}
|
|
@@ -11770,9 +11918,10 @@ var useLumiaPassportSession = create5((set) => ({
|
|
|
11770
11918
|
setWalletReadyStatus: (status) => set({ walletReadyStatus: status })
|
|
11771
11919
|
}));
|
|
11772
11920
|
function LumiaPassportSessionProvider({ children }) {
|
|
11773
|
-
const {
|
|
11774
|
-
|
|
11775
|
-
|
|
11921
|
+
const {
|
|
11922
|
+
config: { current: config }
|
|
11923
|
+
} = useLumiaPassportConfig();
|
|
11924
|
+
return /* @__PURE__ */ jsxs47(Fragment11, { children: [
|
|
11776
11925
|
children,
|
|
11777
11926
|
config.wallet?.enabled && /* @__PURE__ */ jsx61(WalletConnectHandler, {}),
|
|
11778
11927
|
/* @__PURE__ */ jsx61(LumiaPriceSSE, {}),
|
|
@@ -11829,39 +11978,51 @@ function LumiaPassportProvider(props) {
|
|
|
11829
11978
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
11830
11979
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
11831
11980
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
11832
|
-
|
|
11833
|
-
const
|
|
11834
|
-
const
|
|
11835
|
-
const
|
|
11836
|
-
|
|
11837
|
-
|
|
11838
|
-
|
|
11839
|
-
|
|
11840
|
-
|
|
11841
|
-
|
|
11842
|
-
|
|
11843
|
-
|
|
11844
|
-
if (
|
|
11845
|
-
|
|
11846
|
-
|
|
11847
|
-
|
|
11848
|
-
|
|
11849
|
-
if (
|
|
11850
|
-
|
|
11851
|
-
|
|
11852
|
-
|
|
11853
|
-
}
|
|
11854
|
-
if (
|
|
11855
|
-
|
|
11856
|
-
|
|
11857
|
-
|
|
11858
|
-
|
|
11859
|
-
|
|
11981
|
+
useEffect30(() => notifyNoProjetctId(projectId), [projectId]);
|
|
11982
|
+
const config = useRef10({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
11983
|
+
const updateConfig = useCallback17((updates) => {
|
|
11984
|
+
const prev = config.current;
|
|
11985
|
+
const next = { ...prev };
|
|
11986
|
+
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
11987
|
+
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
11988
|
+
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
11989
|
+
if (updates.social) {
|
|
11990
|
+
next.social = { ...next.social, ...updates.social };
|
|
11991
|
+
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
11992
|
+
}
|
|
11993
|
+
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
11994
|
+
if (updates.ui) {
|
|
11995
|
+
next.ui = { ...next.ui, ...updates.ui };
|
|
11996
|
+
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
11997
|
+
}
|
|
11998
|
+
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
11999
|
+
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
12000
|
+
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
12001
|
+
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
12002
|
+
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
12003
|
+
if (updates.services && typeof window !== "undefined") {
|
|
12004
|
+
try {
|
|
12005
|
+
window.__LUMIA_SERVICES__ = next.services;
|
|
12006
|
+
} catch {
|
|
12007
|
+
}
|
|
12008
|
+
}
|
|
12009
|
+
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
12010
|
+
try {
|
|
12011
|
+
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
12012
|
+
} catch {
|
|
12013
|
+
}
|
|
12014
|
+
}
|
|
12015
|
+
config.current = next;
|
|
12016
|
+
}, []);
|
|
12017
|
+
useEffect30(() => {
|
|
12018
|
+
if (typeof window === "undefined" || !projectId) return;
|
|
12019
|
+
const mergedConfig = merge(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12020
|
+
updateConfig(mergedConfig);
|
|
12021
|
+
console.log("[ MERGED PROVIDER STORED CONFIG ]", mergedConfig);
|
|
11860
12022
|
try {
|
|
11861
12023
|
if (typeof window !== "undefined") {
|
|
11862
|
-
window.__LUMIA_SERVICES__ =
|
|
12024
|
+
window.__LUMIA_SERVICES__ = mergedConfig.services;
|
|
11863
12025
|
window.__LUMIA_PROJECT_ID__ = projectId;
|
|
11864
|
-
console.log("[LumiaPassportProvider] Setting window.__LUMIA_SERVICES__:", merged.services);
|
|
11865
12026
|
const resolvedServices = getServiceUrls();
|
|
11866
12027
|
console.log("[LumiaPassportProvider] Resolved services:", resolvedServices);
|
|
11867
12028
|
}
|
|
@@ -11874,60 +12035,12 @@ function LumiaPassportProvider(props) {
|
|
|
11874
12035
|
console.warn("[LumiaPassport] Failed to initialize SDK error tracking:", error);
|
|
11875
12036
|
}
|
|
11876
12037
|
}
|
|
11877
|
-
return merged;
|
|
11878
|
-
});
|
|
11879
|
-
const updateConfig = useCallback16((updates) => {
|
|
11880
|
-
setConfig((prev) => {
|
|
11881
|
-
const next = { ...prev };
|
|
11882
|
-
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
11883
|
-
if (updates.passkey) next.passkey = { ...next.passkey, ...updates.passkey };
|
|
11884
|
-
if (updates.email) next.email = { ...next.email, ...updates.email };
|
|
11885
|
-
if (updates.social) {
|
|
11886
|
-
next.social = { ...next.social, ...updates.social };
|
|
11887
|
-
if (updates.social.providers) next.social.providers = updates.social.providers;
|
|
11888
|
-
}
|
|
11889
|
-
if (updates.development) next.development = { ...next.development, ...updates.development };
|
|
11890
|
-
if (updates.ui) {
|
|
11891
|
-
next.ui = { ...next.ui, ...updates.ui };
|
|
11892
|
-
if (updates.ui.branding) next.ui.branding = { ...next.ui.branding, ...updates.ui.branding };
|
|
11893
|
-
}
|
|
11894
|
-
if (updates.network) next.network = { ...next.network, ...updates.network };
|
|
11895
|
-
if (updates.services) next.services = { ...next.services, ...updates.services };
|
|
11896
|
-
if (updates.features) next.features = { ...next.features, ...updates.features };
|
|
11897
|
-
if (updates.warnings) next.warnings = { ...next.warnings, ...updates.warnings };
|
|
11898
|
-
if (updates.kyc) next.kyc = { ...next.kyc, ...updates.kyc };
|
|
11899
|
-
if (updates.services && typeof window !== "undefined") {
|
|
11900
|
-
try {
|
|
11901
|
-
window.__LUMIA_SERVICES__ = next.services;
|
|
11902
|
-
console.log("[LumiaPassportProvider] Updated window.__LUMIA_SERVICES__:", next.services);
|
|
11903
|
-
} catch {
|
|
11904
|
-
}
|
|
11905
|
-
}
|
|
11906
|
-
if (updates.projectId !== void 0 && typeof window !== "undefined") {
|
|
11907
|
-
try {
|
|
11908
|
-
;
|
|
11909
|
-
window.__LUMIA_PROJECT_ID__ = next.projectId;
|
|
11910
|
-
console.log("[LumiaPassportProvider] Updated __LUMIA_PROJECT_ID__:", next.projectId);
|
|
11911
|
-
} catch {
|
|
11912
|
-
}
|
|
11913
|
-
}
|
|
11914
|
-
return next;
|
|
11915
|
-
});
|
|
11916
|
-
}, []);
|
|
11917
|
-
useEffect28(() => {
|
|
11918
|
-
if (typeof window === "undefined") return;
|
|
11919
|
-
if (!config.projectId) return;
|
|
11920
12038
|
const iframeUrl = getIframeUrl();
|
|
11921
|
-
console.log("[LumiaPassport] Initializing secure iframe wallet:", {
|
|
11922
|
-
iframeUrl,
|
|
11923
|
-
projectId: `${projectId.substring(0, 10)}...`,
|
|
11924
|
-
note: "All MPC operations will happen in isolated iframe context"
|
|
11925
|
-
});
|
|
11926
12039
|
try {
|
|
11927
12040
|
const iframeManager = getIframeManager({
|
|
11928
12041
|
iframeUrl,
|
|
11929
12042
|
projectId,
|
|
11930
|
-
debug:
|
|
12043
|
+
debug: mergedConfig.features?.mpcSecurity ?? true,
|
|
11931
12044
|
onWalletReady: (status) => {
|
|
11932
12045
|
callbacks?.onWalletReady?.(status);
|
|
11933
12046
|
setWalletReadyStatus(status);
|
|
@@ -11935,7 +12048,6 @@ function LumiaPassportProvider(props) {
|
|
|
11935
12048
|
});
|
|
11936
12049
|
iframeManager.initialize().then(() => {
|
|
11937
12050
|
setIsIframeReady(true);
|
|
11938
|
-
console.log("[LumiaPassport] \u2705 Secure iframe wallet initialized successfully");
|
|
11939
12051
|
}).catch((error) => {
|
|
11940
12052
|
console.error("[LumiaPassport] \u274C Failed to initialize iframe wallet:", error);
|
|
11941
12053
|
});
|
|
@@ -11946,14 +12058,9 @@ function LumiaPassportProvider(props) {
|
|
|
11946
12058
|
} catch (error) {
|
|
11947
12059
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
11948
12060
|
}
|
|
11949
|
-
}, [
|
|
11950
|
-
|
|
11951
|
-
|
|
11952
|
-
{
|
|
11953
|
-
value: { config, updateConfig, callbacks, providersVersion, notifyProvidersUpdate },
|
|
11954
|
-
children
|
|
11955
|
-
}
|
|
11956
|
-
) });
|
|
12061
|
+
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12062
|
+
const contextValue = useMemo3(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12063
|
+
return /* @__PURE__ */ jsx63(LumiaWagmiProvider, { children: /* @__PURE__ */ jsx63(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
11957
12064
|
}
|
|
11958
12065
|
var useLumiaPassportConfig = () => {
|
|
11959
12066
|
const ctx = useContext(LumiaPassportContext);
|
|
@@ -11962,10 +12069,10 @@ var useLumiaPassportConfig = () => {
|
|
|
11962
12069
|
};
|
|
11963
12070
|
|
|
11964
12071
|
// src/components/ConnectWalletButton.tsx
|
|
11965
|
-
import { Cloud as Cloud3, Laptop as Laptop2, Loader as
|
|
11966
|
-
import { useEffect as
|
|
12072
|
+
import { Cloud as Cloud3, Laptop as Laptop2, Loader as Loader16, Shield as Shield2 } from "lucide-react";
|
|
12073
|
+
import { useEffect as useEffect31, useMemo as useMemo4 } from "react";
|
|
11967
12074
|
init_auth();
|
|
11968
|
-
import { Fragment as
|
|
12075
|
+
import { Fragment as Fragment12, jsx as jsx64, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
11969
12076
|
function getFormattedStatus(label, status, showStatus) {
|
|
11970
12077
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
11971
12078
|
if (!isStatus) return label;
|
|
@@ -11979,15 +12086,14 @@ function ConnectWalletButton(props) {
|
|
|
11979
12086
|
// TODO: provide usePaymaster via config context
|
|
11980
12087
|
usePaymaster = true
|
|
11981
12088
|
} = props;
|
|
11982
|
-
console.log("[ CONNECT BUTTON RENDER ] should be as minimal as possible");
|
|
11983
12089
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11984
12090
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
11985
12091
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
11986
12092
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
11987
|
-
|
|
12093
|
+
useEffect31(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
11988
12094
|
const avatar = jwtTokenManager2.getAvatar();
|
|
11989
12095
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
11990
|
-
const indicators =
|
|
12096
|
+
const indicators = useMemo4(() => {
|
|
11991
12097
|
const userId = jwtTokenManager2.getUserId();
|
|
11992
12098
|
if (!userId) return { server: false, local: false, backup: false };
|
|
11993
12099
|
const server = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
@@ -11997,14 +12103,14 @@ function ConnectWalletButton(props) {
|
|
|
11997
12103
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
11998
12104
|
return /* @__PURE__ */ jsx64("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
11999
12105
|
/** external Buttons can be provided */
|
|
12000
|
-
/* @__PURE__ */ jsx64(
|
|
12106
|
+
/* @__PURE__ */ jsx64(Fragment12, { children: ConnectButton ? /* @__PURE__ */ jsxs48(
|
|
12001
12107
|
ConnectButton,
|
|
12002
12108
|
{
|
|
12003
12109
|
type: "button",
|
|
12004
12110
|
disabled: isConnecting,
|
|
12005
12111
|
onClick: () => setPage("auth" /* AUTH */),
|
|
12006
12112
|
children: [
|
|
12007
|
-
isConnecting && /* @__PURE__ */ jsx64(
|
|
12113
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader16, { className: "w-4 h-4 animate-spin" }),
|
|
12008
12114
|
connectButtonLabel
|
|
12009
12115
|
]
|
|
12010
12116
|
}
|
|
@@ -12022,7 +12128,7 @@ function ConnectWalletButton(props) {
|
|
|
12022
12128
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
12023
12129
|
),
|
|
12024
12130
|
children: [
|
|
12025
|
-
isConnecting && /* @__PURE__ */ jsx64(
|
|
12131
|
+
isConnecting && /* @__PURE__ */ jsx64(Loader16, { className: "w-4 h-4 animate-spin" }),
|
|
12026
12132
|
connectButtonLabel.toUpperCase()
|
|
12027
12133
|
]
|
|
12028
12134
|
}
|
|
@@ -12038,14 +12144,7 @@ function ConnectWalletButton(props) {
|
|
|
12038
12144
|
"rounded-[var(--l-pass-el-bdrs)] p-2 max-w-sm min-w-[256px]"
|
|
12039
12145
|
),
|
|
12040
12146
|
children: [
|
|
12041
|
-
/* @__PURE__ */ jsx64("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx64(
|
|
12042
|
-
"img",
|
|
12043
|
-
{
|
|
12044
|
-
src: avatar,
|
|
12045
|
-
alt: "User avatar",
|
|
12046
|
-
className: "w-full h-full object-cover"
|
|
12047
|
-
}
|
|
12048
|
-
) : /* @__PURE__ */ jsx64(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12147
|
+
/* @__PURE__ */ jsx64("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx64("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx64(LumiaIcon, { width: 48, height: 48 }) }),
|
|
12049
12148
|
/* @__PURE__ */ jsxs48("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
12050
12149
|
/* @__PURE__ */ jsx64("div", { className: "font-semibold text-base truncate max-w-[144px]", children: displayName }),
|
|
12051
12150
|
/* @__PURE__ */ jsx64(UsdBalance, { className: "font-semibold text-base text-[var(--l-pass-fg-muted)]" })
|
|
@@ -12142,13 +12241,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12142
12241
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12143
12242
|
|
|
12144
12243
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12145
|
-
import { useCallback as
|
|
12244
|
+
import { useCallback as useCallback18 } from "react";
|
|
12146
12245
|
function useLumiaPassportOpen() {
|
|
12147
12246
|
const page = useLayoutDataStore((st) => st.page);
|
|
12148
12247
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12149
12248
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12150
|
-
const address = useLumiaPassportSession().address;
|
|
12151
|
-
const open =
|
|
12249
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
12250
|
+
const open = useCallback18(
|
|
12152
12251
|
(passportPage, params) => {
|
|
12153
12252
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12154
12253
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12157,24 +12256,27 @@ function useLumiaPassportOpen() {
|
|
|
12157
12256
|
},
|
|
12158
12257
|
[setPage, setPageParams, address]
|
|
12159
12258
|
);
|
|
12160
|
-
const close =
|
|
12259
|
+
const close = useCallback18(() => setPage(null), [setPage]);
|
|
12161
12260
|
return { open, close, isOpen: page !== null };
|
|
12162
12261
|
}
|
|
12163
12262
|
|
|
12164
12263
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12165
|
-
import { useCallback as
|
|
12264
|
+
import { useCallback as useCallback19, useEffect as useEffect32 } from "react";
|
|
12166
12265
|
function useLumiaPassportColorMode() {
|
|
12167
|
-
const
|
|
12266
|
+
const {
|
|
12267
|
+
config: { current: config }
|
|
12268
|
+
} = useLumiaPassportConfig();
|
|
12269
|
+
const preferedColorMode = config?.preferedColorMode;
|
|
12168
12270
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12169
12271
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12170
|
-
const setColorMode =
|
|
12272
|
+
const setColorMode = useCallback19(
|
|
12171
12273
|
(mode) => {
|
|
12172
12274
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12173
12275
|
handleStoreColorMode(mode);
|
|
12174
12276
|
},
|
|
12175
12277
|
[handleStoreColorMode]
|
|
12176
12278
|
);
|
|
12177
|
-
|
|
12279
|
+
useEffect32(() => {
|
|
12178
12280
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12179
12281
|
if (!targetColorMode && !preferedColorMode) {
|
|
12180
12282
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12216,7 +12318,7 @@ function ThemeToggle(props) {
|
|
|
12216
12318
|
}
|
|
12217
12319
|
|
|
12218
12320
|
// src/context/RainbowKitContext.tsx
|
|
12219
|
-
import
|
|
12321
|
+
import React16 from "react";
|
|
12220
12322
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
12221
12323
|
import { darkTheme, lightTheme, RainbowKitProvider } from "@rainbow-me/rainbowkit";
|
|
12222
12324
|
import { WagmiProvider as WagmiProvider2 } from "wagmi";
|
|
@@ -12366,14 +12468,16 @@ var rainbowTheme = {
|
|
|
12366
12468
|
};
|
|
12367
12469
|
|
|
12368
12470
|
// src/context/RainbowKitContext.tsx
|
|
12369
|
-
import { Fragment as
|
|
12471
|
+
import { Fragment as Fragment13, jsx as jsx66 } from "react/jsx-runtime";
|
|
12370
12472
|
var LumiaRainbowKitProvider = ({ children }) => {
|
|
12371
|
-
const {
|
|
12473
|
+
const {
|
|
12474
|
+
config: { current: config }
|
|
12475
|
+
} = useLumiaPassportConfig();
|
|
12372
12476
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
12373
|
-
const rainbowConfig2 =
|
|
12477
|
+
const rainbowConfig2 = React16.useMemo(() => {
|
|
12374
12478
|
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12375
12479
|
}, [config.wallet?.walletConnectProjectId]);
|
|
12376
|
-
const customTheme =
|
|
12480
|
+
const customTheme = React16.useMemo(
|
|
12377
12481
|
() => isDark ? {
|
|
12378
12482
|
...darkTheme(),
|
|
12379
12483
|
colors: {
|
|
@@ -12395,17 +12499,15 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12395
12499
|
);
|
|
12396
12500
|
const isWalletEnabled = config.wallet?.enabled ?? false;
|
|
12397
12501
|
if (!isWalletEnabled) {
|
|
12398
|
-
return /* @__PURE__ */ jsx66(
|
|
12502
|
+
return /* @__PURE__ */ jsx66(Fragment13, { children });
|
|
12399
12503
|
}
|
|
12400
12504
|
return /* @__PURE__ */ jsx66(WagmiProvider2, { config: rainbowConfig2, children: /* @__PURE__ */ jsx66(RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
12401
12505
|
};
|
|
12402
12506
|
|
|
12403
12507
|
// src/internal/components/UserOpStatus.tsx
|
|
12404
|
-
|
|
12405
|
-
import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle28, Clock as Clock2, Copy as
|
|
12406
|
-
|
|
12407
|
-
// src/internal/components/ui/badge.tsx
|
|
12408
|
-
import { cva as cva2 } from "class-variance-authority";
|
|
12508
|
+
init_base();
|
|
12509
|
+
import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle28, Clock as Clock2, Copy as Copy4, ExternalLink as ExternalLink2, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
12510
|
+
import * as React18 from "react";
|
|
12409
12511
|
|
|
12410
12512
|
// src/internal/utils/cn.ts
|
|
12411
12513
|
import { clsx as clsx3 } from "clsx";
|
|
@@ -12414,34 +12516,10 @@ function cn2(...inputs) {
|
|
|
12414
12516
|
return twMerge2(clsx3(inputs));
|
|
12415
12517
|
}
|
|
12416
12518
|
|
|
12417
|
-
// src/internal/components/ui/badge.tsx
|
|
12418
|
-
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
12419
|
-
var badgeVariants = cva2(
|
|
12420
|
-
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
12421
|
-
{
|
|
12422
|
-
variants: {
|
|
12423
|
-
variant: {
|
|
12424
|
-
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12425
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12426
|
-
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12427
|
-
outline: "text-foreground",
|
|
12428
|
-
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12429
|
-
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12430
|
-
}
|
|
12431
|
-
},
|
|
12432
|
-
defaultVariants: {
|
|
12433
|
-
variant: "default"
|
|
12434
|
-
}
|
|
12435
|
-
}
|
|
12436
|
-
);
|
|
12437
|
-
function Badge({ className, variant, ...props }) {
|
|
12438
|
-
return /* @__PURE__ */ jsx67("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12439
|
-
}
|
|
12440
|
-
|
|
12441
12519
|
// src/internal/components/Address.tsx
|
|
12442
|
-
import
|
|
12443
|
-
import
|
|
12444
|
-
import { jsx as
|
|
12520
|
+
import { Copy as Copy3, ExternalLink } from "lucide-react";
|
|
12521
|
+
import * as React17 from "react";
|
|
12522
|
+
import { jsx as jsx67, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
12445
12523
|
function toExplorerAddressUrl(address, chain) {
|
|
12446
12524
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
12447
12525
|
if (!base2) return null;
|
|
@@ -12462,16 +12540,16 @@ var Address = ({
|
|
|
12462
12540
|
}) => {
|
|
12463
12541
|
const addr = address || "";
|
|
12464
12542
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12465
|
-
const [copied, setCopied] =
|
|
12466
|
-
if (!addr) return /* @__PURE__ */
|
|
12543
|
+
const [copied, setCopied] = React17.useState(false);
|
|
12544
|
+
if (!addr) return /* @__PURE__ */ jsx67("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12467
12545
|
return /* @__PURE__ */ jsxs49("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12468
|
-
label && /* @__PURE__ */
|
|
12469
|
-
/* @__PURE__ */
|
|
12470
|
-
showCopy && /* @__PURE__ */
|
|
12546
|
+
label && /* @__PURE__ */ jsx67("span", { className: "text-sm font-medium", children: label }),
|
|
12547
|
+
/* @__PURE__ */ jsx67("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
12548
|
+
showCopy && /* @__PURE__ */ jsx67(
|
|
12471
12549
|
Button,
|
|
12472
12550
|
{
|
|
12473
12551
|
variant: "ghost",
|
|
12474
|
-
size: "
|
|
12552
|
+
size: "small",
|
|
12475
12553
|
title: copied ? "Copied" : "Copy address",
|
|
12476
12554
|
onClick: async () => {
|
|
12477
12555
|
try {
|
|
@@ -12481,10 +12559,10 @@ var Address = ({
|
|
|
12481
12559
|
} catch {
|
|
12482
12560
|
}
|
|
12483
12561
|
},
|
|
12484
|
-
children: /* @__PURE__ */
|
|
12562
|
+
children: /* @__PURE__ */ jsx67(Copy3, { className: "h-4 w-4" })
|
|
12485
12563
|
}
|
|
12486
12564
|
),
|
|
12487
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
12565
|
+
showExplorer && explorer && /* @__PURE__ */ jsx67(
|
|
12488
12566
|
"a",
|
|
12489
12567
|
{
|
|
12490
12568
|
href: explorer,
|
|
@@ -12492,14 +12570,38 @@ var Address = ({
|
|
|
12492
12570
|
rel: "noreferrer noopener",
|
|
12493
12571
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12494
12572
|
title: "Open in explorer",
|
|
12495
|
-
children: /* @__PURE__ */
|
|
12573
|
+
children: /* @__PURE__ */ jsx67(ExternalLink, { className: "h-4 w-4" })
|
|
12496
12574
|
}
|
|
12497
12575
|
)
|
|
12498
12576
|
] });
|
|
12499
12577
|
};
|
|
12500
12578
|
|
|
12579
|
+
// src/internal/components/ui/badge.tsx
|
|
12580
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
12581
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
12582
|
+
var badgeVariants = cva2(
|
|
12583
|
+
"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",
|
|
12584
|
+
{
|
|
12585
|
+
variants: {
|
|
12586
|
+
variant: {
|
|
12587
|
+
default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12588
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
12589
|
+
destructive: "border-transparent bg-red-600 text-white hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-600",
|
|
12590
|
+
outline: "text-foreground",
|
|
12591
|
+
success: "border-transparent bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600",
|
|
12592
|
+
warning: "border-transparent bg-yellow-500 text-white hover:bg-yellow-600 dark:bg-yellow-600 dark:hover:bg-yellow-500"
|
|
12593
|
+
}
|
|
12594
|
+
},
|
|
12595
|
+
defaultVariants: {
|
|
12596
|
+
variant: "default"
|
|
12597
|
+
}
|
|
12598
|
+
}
|
|
12599
|
+
);
|
|
12600
|
+
function Badge({ className, variant, ...props }) {
|
|
12601
|
+
return /* @__PURE__ */ jsx68("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
12602
|
+
}
|
|
12603
|
+
|
|
12501
12604
|
// src/internal/components/UserOpStatus.tsx
|
|
12502
|
-
init_base();
|
|
12503
12605
|
import { jsx as jsx69, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
12504
12606
|
var UserOpStatus = ({
|
|
12505
12607
|
userOpHash,
|
|
@@ -12511,20 +12613,20 @@ var UserOpStatus = ({
|
|
|
12511
12613
|
externalState
|
|
12512
12614
|
}) => {
|
|
12513
12615
|
const useExternalState = !!externalState;
|
|
12514
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12515
|
-
const [internalMempool, setInternalMempool] =
|
|
12516
|
-
const [internalError, setInternalError] =
|
|
12517
|
-
const [attempt, setAttempt] =
|
|
12518
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12519
|
-
const [timedOut, setTimedOut] =
|
|
12520
|
-
const [rejected, setRejected] =
|
|
12521
|
-
const intervalRef =
|
|
12522
|
-
const startTimeRef =
|
|
12616
|
+
const [internalReceipt, setInternalReceipt] = React18.useState(null);
|
|
12617
|
+
const [internalMempool, setInternalMempool] = React18.useState(null);
|
|
12618
|
+
const [internalError, setInternalError] = React18.useState(null);
|
|
12619
|
+
const [attempt, setAttempt] = React18.useState(0);
|
|
12620
|
+
const [internalRefreshing, setInternalRefreshing] = React18.useState(false);
|
|
12621
|
+
const [timedOut, setTimedOut] = React18.useState(false);
|
|
12622
|
+
const [rejected, setRejected] = React18.useState(false);
|
|
12623
|
+
const intervalRef = React18.useRef(null);
|
|
12624
|
+
const startTimeRef = React18.useRef(Date.now());
|
|
12523
12625
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12524
12626
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12525
12627
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12526
12628
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12527
|
-
const rpc =
|
|
12629
|
+
const rpc = React18.useCallback(async (method, params) => {
|
|
12528
12630
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12529
12631
|
const res = await fetch(getBundlerUrl(), {
|
|
12530
12632
|
method: "POST",
|
|
@@ -12535,14 +12637,14 @@ var UserOpStatus = ({
|
|
|
12535
12637
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12536
12638
|
return json.result;
|
|
12537
12639
|
}, []);
|
|
12538
|
-
const extractMempoolInfo =
|
|
12640
|
+
const extractMempoolInfo = React18.useCallback((m) => {
|
|
12539
12641
|
if (!m) return null;
|
|
12540
12642
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12541
12643
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12542
12644
|
if (!entryPoint && !sender) return null;
|
|
12543
12645
|
return { entryPoint, sender };
|
|
12544
12646
|
}, []);
|
|
12545
|
-
const tick =
|
|
12647
|
+
const tick = React18.useCallback(async () => {
|
|
12546
12648
|
if (useExternalState) return;
|
|
12547
12649
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12548
12650
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12586,7 +12688,7 @@ var UserOpStatus = ({
|
|
|
12586
12688
|
setAttempt((x) => x + 1);
|
|
12587
12689
|
}
|
|
12588
12690
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12589
|
-
|
|
12691
|
+
React18.useEffect(() => {
|
|
12590
12692
|
if (useExternalState) return;
|
|
12591
12693
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12592
12694
|
startTimeRef.current = Date.now();
|
|
@@ -12598,7 +12700,7 @@ var UserOpStatus = ({
|
|
|
12598
12700
|
setAttempt(0);
|
|
12599
12701
|
setInternalRefreshing(false);
|
|
12600
12702
|
}, [userOpHash, useExternalState]);
|
|
12601
|
-
|
|
12703
|
+
React18.useEffect(() => {
|
|
12602
12704
|
if (useExternalState) {
|
|
12603
12705
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12604
12706
|
return;
|
|
@@ -12664,7 +12766,10 @@ var UserOpStatus = ({
|
|
|
12664
12766
|
return /* @__PURE__ */ jsxs50(
|
|
12665
12767
|
"div",
|
|
12666
12768
|
{
|
|
12667
|
-
className: cn2(
|
|
12769
|
+
className: cn2(
|
|
12770
|
+
"lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]",
|
|
12771
|
+
className
|
|
12772
|
+
),
|
|
12668
12773
|
style: { textAlign: "left", listStyle: "none" },
|
|
12669
12774
|
children: [
|
|
12670
12775
|
/* @__PURE__ */ jsxs50("div", { className: "flex items-center justify-between mb-3", children: [
|
|
@@ -12672,7 +12777,7 @@ var UserOpStatus = ({
|
|
|
12672
12777
|
stateBadge(),
|
|
12673
12778
|
/* @__PURE__ */ jsx69("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
12674
12779
|
] }),
|
|
12675
|
-
/* @__PURE__ */ jsxs50(Button, { variant: "ghost", size: "
|
|
12780
|
+
/* @__PURE__ */ jsxs50(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
12676
12781
|
/* @__PURE__ */ jsx69(RefreshCw4, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
12677
12782
|
/* @__PURE__ */ jsx69("span", { className: "text-xs", children: "Refresh" })
|
|
12678
12783
|
] })
|
|
@@ -12684,7 +12789,7 @@ var UserOpStatus = ({
|
|
|
12684
12789
|
Button,
|
|
12685
12790
|
{
|
|
12686
12791
|
variant: "ghost",
|
|
12687
|
-
size: "
|
|
12792
|
+
size: "small",
|
|
12688
12793
|
className: "h-8 w-8 p-0",
|
|
12689
12794
|
onClick: async () => {
|
|
12690
12795
|
try {
|
|
@@ -12692,7 +12797,7 @@ var UserOpStatus = ({
|
|
|
12692
12797
|
} catch {
|
|
12693
12798
|
}
|
|
12694
12799
|
},
|
|
12695
|
-
children: /* @__PURE__ */ jsx69(
|
|
12800
|
+
children: /* @__PURE__ */ jsx69(Copy4, { className: "h-3.5 w-3.5" })
|
|
12696
12801
|
}
|
|
12697
12802
|
)
|
|
12698
12803
|
] }),
|
|
@@ -12703,7 +12808,7 @@ var UserOpStatus = ({
|
|
|
12703
12808
|
Button,
|
|
12704
12809
|
{
|
|
12705
12810
|
variant: "ghost",
|
|
12706
|
-
size: "
|
|
12811
|
+
size: "small",
|
|
12707
12812
|
className: "h-8 w-8 p-0",
|
|
12708
12813
|
onClick: async () => {
|
|
12709
12814
|
try {
|
|
@@ -12711,7 +12816,7 @@ var UserOpStatus = ({
|
|
|
12711
12816
|
} catch {
|
|
12712
12817
|
}
|
|
12713
12818
|
},
|
|
12714
|
-
children: /* @__PURE__ */ jsx69(
|
|
12819
|
+
children: /* @__PURE__ */ jsx69(Copy4, { className: "h-3.5 w-3.5" })
|
|
12715
12820
|
}
|
|
12716
12821
|
),
|
|
12717
12822
|
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx69(
|
|
@@ -12722,7 +12827,7 @@ var UserOpStatus = ({
|
|
|
12722
12827
|
rel: "noreferrer noopener",
|
|
12723
12828
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
12724
12829
|
title: "Open in explorer",
|
|
12725
|
-
children: /* @__PURE__ */ jsx69(
|
|
12830
|
+
children: /* @__PURE__ */ jsx69(ExternalLink2, { className: "h-3.5 w-3.5" })
|
|
12726
12831
|
}
|
|
12727
12832
|
)
|
|
12728
12833
|
] }),
|
|
@@ -12771,8 +12876,8 @@ var UserOpStatus = ({
|
|
|
12771
12876
|
};
|
|
12772
12877
|
|
|
12773
12878
|
// src/internal/components/Hash.tsx
|
|
12774
|
-
import
|
|
12775
|
-
import
|
|
12879
|
+
import { Copy as Copy5, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
12880
|
+
import * as React19 from "react";
|
|
12776
12881
|
import { jsx as jsx70, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
12777
12882
|
function toExplorerUrl(kind, value, chain) {
|
|
12778
12883
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12796,7 +12901,7 @@ var Hash = ({
|
|
|
12796
12901
|
}) => {
|
|
12797
12902
|
const value = hash || "";
|
|
12798
12903
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
12799
|
-
const [copied, setCopied] =
|
|
12904
|
+
const [copied, setCopied] = React19.useState(false);
|
|
12800
12905
|
if (!value) return /* @__PURE__ */ jsx70("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12801
12906
|
return /* @__PURE__ */ jsxs51("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
12802
12907
|
label && /* @__PURE__ */ jsx70("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12805,7 +12910,7 @@ var Hash = ({
|
|
|
12805
12910
|
Button,
|
|
12806
12911
|
{
|
|
12807
12912
|
variant: "ghost",
|
|
12808
|
-
size: "
|
|
12913
|
+
size: "small",
|
|
12809
12914
|
title: copied ? "Copied" : "Copy",
|
|
12810
12915
|
onClick: async () => {
|
|
12811
12916
|
try {
|
|
@@ -12815,7 +12920,7 @@ var Hash = ({
|
|
|
12815
12920
|
} catch {
|
|
12816
12921
|
}
|
|
12817
12922
|
},
|
|
12818
|
-
children: /* @__PURE__ */ jsx70(
|
|
12923
|
+
children: /* @__PURE__ */ jsx70(Copy5, { className: "h-4 w-4" })
|
|
12819
12924
|
}
|
|
12820
12925
|
),
|
|
12821
12926
|
showExplorer && explorer && /* @__PURE__ */ jsx70(
|
|
@@ -12826,7 +12931,7 @@ var Hash = ({
|
|
|
12826
12931
|
rel: "noreferrer noopener",
|
|
12827
12932
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
12828
12933
|
title: "Open in explorer",
|
|
12829
|
-
children: /* @__PURE__ */ jsx70(
|
|
12934
|
+
children: /* @__PURE__ */ jsx70(ExternalLink3, { className: "h-4 w-4" })
|
|
12830
12935
|
}
|
|
12831
12936
|
)
|
|
12832
12937
|
] });
|
|
@@ -12834,13 +12939,13 @@ var Hash = ({
|
|
|
12834
12939
|
|
|
12835
12940
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
12836
12941
|
init_base();
|
|
12837
|
-
import { useEffect as
|
|
12942
|
+
import { useEffect as useEffect34, useState as useState17 } from "react";
|
|
12838
12943
|
import { jsx as jsx71, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
12839
12944
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
12840
|
-
const [transactions, setTransactions] =
|
|
12841
|
-
const [loading, setLoading] =
|
|
12842
|
-
const [error, setError] =
|
|
12843
|
-
|
|
12945
|
+
const [transactions, setTransactions] = useState17([]);
|
|
12946
|
+
const [loading, setLoading] = useState17(true);
|
|
12947
|
+
const [error, setError] = useState17(null);
|
|
12948
|
+
useEffect34(() => {
|
|
12844
12949
|
const fetchTransactions = async () => {
|
|
12845
12950
|
try {
|
|
12846
12951
|
setLoading(true);
|
|
@@ -12866,7 +12971,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12866
12971
|
fetchTransactions();
|
|
12867
12972
|
}
|
|
12868
12973
|
}, [address, itemsCount]);
|
|
12869
|
-
const
|
|
12974
|
+
const formatValue3 = (value) => {
|
|
12870
12975
|
try {
|
|
12871
12976
|
const wei = BigInt(value);
|
|
12872
12977
|
const eth = Number(wei) / 1e18;
|
|
@@ -12936,7 +13041,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12936
13041
|
/* @__PURE__ */ jsxs52("div", { children: [
|
|
12937
13042
|
/* @__PURE__ */ jsx71("span", { className: "text-gray-600", children: "Value:" }),
|
|
12938
13043
|
/* @__PURE__ */ jsxs52("span", { className: "font-semibold ml-1", children: [
|
|
12939
|
-
|
|
13044
|
+
formatValue3(tx.value),
|
|
12940
13045
|
" LUMIA"
|
|
12941
13046
|
] })
|
|
12942
13047
|
] })
|
|
@@ -12960,7 +13065,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
12960
13065
|
|
|
12961
13066
|
// src/hooks/useUserOpStatus.ts
|
|
12962
13067
|
init_base();
|
|
12963
|
-
import * as
|
|
13068
|
+
import * as React21 from "react";
|
|
12964
13069
|
function useUserOpStatus(options = {}) {
|
|
12965
13070
|
const {
|
|
12966
13071
|
userOpHash,
|
|
@@ -12971,16 +13076,16 @@ function useUserOpStatus(options = {}) {
|
|
|
12971
13076
|
onReceipt,
|
|
12972
13077
|
onTxHash
|
|
12973
13078
|
} = options;
|
|
12974
|
-
const [state, setState] =
|
|
12975
|
-
const [receipt, setReceipt] =
|
|
12976
|
-
const [mempool, setMempool] =
|
|
12977
|
-
const [txHash, setTxHash] =
|
|
12978
|
-
const [error, setError] =
|
|
12979
|
-
const [isPolling, setIsPolling] =
|
|
12980
|
-
const intervalRef =
|
|
12981
|
-
const startTimeRef =
|
|
12982
|
-
const prevStateRef =
|
|
12983
|
-
const rpc =
|
|
13079
|
+
const [state, setState] = React21.useState("waiting");
|
|
13080
|
+
const [receipt, setReceipt] = React21.useState(null);
|
|
13081
|
+
const [mempool, setMempool] = React21.useState(null);
|
|
13082
|
+
const [txHash, setTxHash] = React21.useState(null);
|
|
13083
|
+
const [error, setError] = React21.useState(null);
|
|
13084
|
+
const [isPolling, setIsPolling] = React21.useState(false);
|
|
13085
|
+
const intervalRef = React21.useRef(null);
|
|
13086
|
+
const startTimeRef = React21.useRef(Date.now());
|
|
13087
|
+
const prevStateRef = React21.useRef("waiting");
|
|
13088
|
+
const rpc = React21.useCallback(async (method, params) => {
|
|
12984
13089
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12985
13090
|
const res = await fetch(getBundlerUrl(), {
|
|
12986
13091
|
method: "POST",
|
|
@@ -12991,21 +13096,21 @@ function useUserOpStatus(options = {}) {
|
|
|
12991
13096
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12992
13097
|
return json.result;
|
|
12993
13098
|
}, []);
|
|
12994
|
-
const extractMempoolInfo =
|
|
13099
|
+
const extractMempoolInfo = React21.useCallback((m) => {
|
|
12995
13100
|
if (!m) return null;
|
|
12996
13101
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12997
13102
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12998
13103
|
if (!entryPoint && !sender) return null;
|
|
12999
13104
|
return { entryPoint, sender };
|
|
13000
13105
|
}, []);
|
|
13001
|
-
const updateState =
|
|
13106
|
+
const updateState = React21.useCallback((newState) => {
|
|
13002
13107
|
setState(newState);
|
|
13003
13108
|
if (prevStateRef.current !== newState) {
|
|
13004
13109
|
prevStateRef.current = newState;
|
|
13005
13110
|
onStateChange?.(newState);
|
|
13006
13111
|
}
|
|
13007
13112
|
}, [onStateChange]);
|
|
13008
|
-
const tick =
|
|
13113
|
+
const tick = React21.useCallback(async () => {
|
|
13009
13114
|
if (!userOpHash || !enabled) return;
|
|
13010
13115
|
if (receipt) {
|
|
13011
13116
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13078,7 +13183,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13078
13183
|
onTxHash,
|
|
13079
13184
|
onReceipt
|
|
13080
13185
|
]);
|
|
13081
|
-
|
|
13186
|
+
React21.useEffect(() => {
|
|
13082
13187
|
if (!userOpHash || !enabled) return;
|
|
13083
13188
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13084
13189
|
startTimeRef.current = Date.now();
|
|
@@ -13090,7 +13195,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13090
13195
|
setError(null);
|
|
13091
13196
|
setIsPolling(false);
|
|
13092
13197
|
}, [userOpHash, enabled]);
|
|
13093
|
-
|
|
13198
|
+
React21.useEffect(() => {
|
|
13094
13199
|
if (!userOpHash || !enabled) {
|
|
13095
13200
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13096
13201
|
return;
|
|
@@ -13126,7 +13231,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13126
13231
|
}
|
|
13127
13232
|
};
|
|
13128
13233
|
}, [userOpHash, enabled, pollMs]);
|
|
13129
|
-
const refresh =
|
|
13234
|
+
const refresh = React21.useCallback(async () => {
|
|
13130
13235
|
await tick();
|
|
13131
13236
|
}, [tick]);
|
|
13132
13237
|
return {
|
|
@@ -13142,11 +13247,11 @@ function useUserOpStatus(options = {}) {
|
|
|
13142
13247
|
|
|
13143
13248
|
// src/hooks/useLogout.ts
|
|
13144
13249
|
import { logout as coreLogout, jwtTokenManager as jwtTokenManager3 } from "@lumiapassport/core/auth";
|
|
13145
|
-
import { useCallback as
|
|
13250
|
+
import { useCallback as useCallback22 } from "react";
|
|
13146
13251
|
function useLogout() {
|
|
13147
13252
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13148
13253
|
const { callbacks } = useLumiaPassportConfig();
|
|
13149
|
-
const logout2 =
|
|
13254
|
+
const logout2 = useCallback22(async () => {
|
|
13150
13255
|
const prevAddress = address;
|
|
13151
13256
|
let userId = null;
|
|
13152
13257
|
setIsLoading(true);
|
|
@@ -13293,49 +13398,6 @@ function useSmartAccountTransactions() {
|
|
|
13293
13398
|
};
|
|
13294
13399
|
}
|
|
13295
13400
|
|
|
13296
|
-
// src/modules/linkedProfiles.ts
|
|
13297
|
-
import * as React24 from "react";
|
|
13298
|
-
init_auth();
|
|
13299
|
-
init_common();
|
|
13300
|
-
init_types();
|
|
13301
|
-
function useLumiaPassportLinkedProfiles() {
|
|
13302
|
-
const { providersVersion } = useLumiaPassportConfig();
|
|
13303
|
-
const [profiles, setProfiles] = React24.useState([]);
|
|
13304
|
-
const [avatar, setAvatar] = React24.useState(null);
|
|
13305
|
-
const [isLoading, setIsLoading] = React24.useState(false);
|
|
13306
|
-
const [error, setError] = React24.useState(null);
|
|
13307
|
-
const load = React24.useCallback(async () => {
|
|
13308
|
-
setIsLoading(true);
|
|
13309
|
-
setError(null);
|
|
13310
|
-
try {
|
|
13311
|
-
const list = await getLinkedProviders();
|
|
13312
|
-
const enriched = list.map((p) => {
|
|
13313
|
-
const info = getProviderDisplayInfo(p.provider);
|
|
13314
|
-
return {
|
|
13315
|
-
...p,
|
|
13316
|
-
displayName: info.name,
|
|
13317
|
-
icon: info.icon
|
|
13318
|
-
// color: info.color,
|
|
13319
|
-
};
|
|
13320
|
-
});
|
|
13321
|
-
setProfiles(enriched);
|
|
13322
|
-
try {
|
|
13323
|
-
setAvatar(jwtTokenManager2.getAvatar() || null);
|
|
13324
|
-
} catch {
|
|
13325
|
-
setAvatar(null);
|
|
13326
|
-
}
|
|
13327
|
-
} catch (e) {
|
|
13328
|
-
setError(e?.message || "Failed to load linked profiles");
|
|
13329
|
-
} finally {
|
|
13330
|
-
setIsLoading(false);
|
|
13331
|
-
}
|
|
13332
|
-
}, []);
|
|
13333
|
-
React24.useEffect(() => {
|
|
13334
|
-
load();
|
|
13335
|
-
}, [load, providersVersion]);
|
|
13336
|
-
return { profiles, avatar, isLoading, error, refresh: load };
|
|
13337
|
-
}
|
|
13338
|
-
|
|
13339
13401
|
// src/index.ts
|
|
13340
13402
|
init_iframe_manager();
|
|
13341
13403
|
(() => {
|