@lumiapassport/ui-kit 1.15.1 → 1.15.3
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/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +1309 -605
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +48 -1
- package/dist/index.d.ts +48 -1
- package/dist/index.js +1419 -704
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4528,7 +4528,7 @@ var init_profile = __esm({
|
|
|
4528
4528
|
});
|
|
4529
4529
|
|
|
4530
4530
|
// src/styles/built.css
|
|
4531
|
-
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 .invisible{visibility:hidden}.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-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.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-0{right:0}.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-\\[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 .m-4{margin:1rem}.lumia-scope .-mx-1{margin-left:-.25rem;margin-right:-.25rem}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-1{margin-top:.25rem;margin-bottom:.25rem}.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 .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-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.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 .aspect-square{aspect-ratio:1/1}.lumia-scope .size-3{width:.75rem;height:.75rem}.lumia-scope .size-3\\.5{width:.875rem;height:.875rem}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.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-7{height:1.75rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[100dvh\\]{height:100dvh}.lumia-scope .h-\\[48px\\]{height:48px}.lumia-scope .h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.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-\\[95dvh\\]{max-height:95dvh}.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-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[40px\\]{width:40px}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.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-4{min-width:1rem}.lumia-scope .min-w-5{min-width:1.25rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[8rem\\]{min-width:8rem}.lumia-scope .min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[256px\\]{max-width:256px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.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-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.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-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.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 .grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lumia-scope .grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lumia-scope .grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lumia-scope .grid-cols-8{grid-template-columns:repeat(8,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-end{align-items:flex-end}.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-0\\.5{gap:.125rem}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-1\\.5{gap:.375rem}.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 :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-x-hidden{overflow-x:hidden}.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-normal{overflow-wrap:normal;word-break:normal}.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-border\\)\\]{border-color:var(--l-pass-border)}.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-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-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-accent\\)\\]{background-color:var(--l-pass-accent)}.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-muted\\)\\]{background-color:var(--l-pass-bg-muted)}.lumia-scope .bg-\\[var\\(--l-pass-bg-secondary\\)\\]{background-color:var(--l-pass-bg-secondary)}.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-error\\)\\]{background-color:var(--l-pass-error)}.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-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-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-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-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.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-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-gap\\)\\]{padding:var(--l-pass-gap)}.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-1{padding-left:.25rem;padding-right:.25rem}.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-\\[2px\\]{padding-left:2px;padding-right:2px}.lumia-scope .px-\\[var\\(--l-pass-gap\\)\\]{padding-left:var(--l-pass-gap);padding-right:var(--l-pass-gap)}.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-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pl-2{padding-left:.5rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pr-8{padding-right:2rem}.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-\\[14px\\]{font-size:14px}.lumia-scope .text-\\[16px\\]{font-size:16px}.lumia-scope .text-\\[8px\\]{font-size:8px}.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-normal{font-weight:400}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .lowercase{text-transform:lowercase}.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-8{line-height:2rem}.lumia-scope .leading-\\[8px\\]{line-height:8px}.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-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-black{--tw-text-opacity:1;color:rgb(0 0 0/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-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-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.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-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-2{text-underline-offset:2px}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.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 .shadow-sm,.lumia-scope .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-xl{--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)}.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 .grayscale{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 .grayscale{--tw-grayscale:grayscale(100%)}.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-\\[color\\2c box-shadow\\]{transition-property:color,box-shadow;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)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,384px);--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,#ebebeb);--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%,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.6));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.6));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.4));--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,.1));--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;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none!important;appearance:none!important;-webkit-appearance:none;-moz-appearance:none}.lumia-scope input,.lumia-scope textarea{font-size:16px!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 20px 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-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@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-r,0);overflow-y:auto;overflow-x:hidden;max-height:var(--l-pass-scrollbar-mah,300px)}.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 .noScrollbars::-webkit-scrollbar{display:none}.lumia-scope div[data-radix-popper-content-wrapper]{z-index:10000!important}.lumia-scope .file\\:mr-\\[var\\(--l-pass-gap\\)\\]::file-selector-button{margin-right:var(--l-pass-gap)}.lumia-scope .file\\:h-12::file-selector-button{height:3rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-\\[16px\\]::file-selector-button{font-size:16px}.lumia-scope .file\\:text-base::file-selector-button{font-size:1rem;line-height:1.5rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .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\\: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-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/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-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/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-h\\)\\]:hover{color:var(--l-pass-fg-h)}.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\\:underline:hover{text-decoration-line:underline}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-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\\:bg-\\[var\\(--l-pass-secondary\\)\\]:hover:disabled{background-color:var(--l-pass-secondary)}.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-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.lumia-scope .data-\\[size\\=default\\]\\:h-12[data-size=default]{height:3rem}.lumia-scope .data-\\[size\\=sm\\]\\:h-10[data-size=sm]{height:2.5rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{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 .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{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 .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.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)}.lumia-scope .data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1[data-slot=select-value]>*){overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex[data-slot=select-value]>*){display:flex}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center[data-slot=select-value]>*){align-items:center}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-\\[var\\(--l-pass-gap\\)\\][data-slot=select-value]>*){gap:var(--l-pass-gap)}@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 (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@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\\:not\\(\\[class\\*\\=\\\'size-\\\'\\]\\)\\]\\:size-4 svg:not([class*=size-])){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4531
|
+
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 .invisible{visibility:hidden}.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 .sticky{position:sticky}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-0{right:0}.lumia-scope .-right-0\\.5{right:-.125rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-0{top:0}.lumia-scope .-top-0\\.5{top:-.125rem}.lumia-scope .-top-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.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-0{right:0}.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-\\[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 .m-4{margin:1rem}.lumia-scope .-mx-1{margin-left:-.25rem;margin-right:-.25rem}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-1{margin-top:.25rem;margin-bottom:.25rem}.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 .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-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.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 .aspect-square{aspect-ratio:1/1}.lumia-scope .size-3{width:.75rem;height:.75rem}.lumia-scope .size-3\\.5{width:.875rem;height:.875rem}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .h-1{height:.25rem}.lumia-scope .h-1\\.5{height:.375rem}.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-7{height:1.75rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[100dvh\\]{height:100dvh}.lumia-scope .h-\\[48px\\]{height:48px}.lumia-scope .h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.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-64{max-height:16rem}.lumia-scope .max-h-80{max-height:20rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .max-h-full{max-height:100%}.lumia-scope .w-1{width:.25rem}.lumia-scope .w-1\\.5{width:.375rem}.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-72{width:18rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[40px\\]{width:40px}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.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-4{min-width:1rem}.lumia-scope .min-w-5{min-width:1.25rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[8rem\\]{min-width:8rem}.lumia-scope .min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[256px\\]{max-width:256px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[80px\\]{max-width:80px}.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 .rotate-180{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 .rotate-180{--tw-rotate:180deg}.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-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.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-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.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 .grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lumia-scope .grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lumia-scope .grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lumia-scope .grid-cols-8{grid-template-columns:repeat(8,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-end{align-items:flex-end}.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-0\\.5{gap:.125rem}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-1\\.5{gap:.375rem}.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 :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-x-hidden{overflow-x:hidden}.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-normal{overflow-wrap:normal;word-break:normal}.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-border\\)\\]{border-color:var(--l-pass-border)}.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-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-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-accent\\)\\]{background-color:var(--l-pass-accent)}.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-muted\\)\\]{background-color:var(--l-pass-bg-muted)}.lumia-scope .bg-\\[var\\(--l-pass-bg-secondary\\)\\]{background-color:var(--l-pass-bg-secondary)}.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-error\\)\\]{background-color:var(--l-pass-error)}.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-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-black\\/90{background-color:rgba(0,0,0,.9)}.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-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-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-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.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-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-gap\\)\\]{padding:var(--l-pass-gap)}.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-1{padding-left:.25rem;padding-right:.25rem}.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-\\[2px\\]{padding-left:2px;padding-right:2px}.lumia-scope .px-\\[var\\(--l-pass-gap\\)\\]{padding-left:var(--l-pass-gap);padding-right:var(--l-pass-gap)}.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-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pl-2{padding-left:.5rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pr-8{padding-right:2rem}.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-\\[14px\\]{font-size:14px}.lumia-scope .text-\\[16px\\]{font-size:16px}.lumia-scope .text-\\[8px\\]{font-size:8px}.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-normal{font-weight:400}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .lowercase{text-transform:lowercase}.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-8{line-height:2rem}.lumia-scope .leading-\\[8px\\]{line-height:8px}.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 .tracking-wider{letter-spacing:.05em}.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-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-black{--tw-text-opacity:1;color:rgb(0 0 0/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-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-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.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-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-2{text-underline-offset:2px}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.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 .shadow-sm,.lumia-scope .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-xl{--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)}.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 .grayscale{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 .grayscale{--tw-grayscale:grayscale(100%)}.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-\\[color\\2c box-shadow\\]{transition-property:color,box-shadow;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 .transition-transform{transition-property:transform;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)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,384px);--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,#ebebeb);--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%,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.6));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.6));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.4));--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,.1));--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;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none!important;appearance:none!important;-webkit-appearance:none;-moz-appearance:none}.lumia-scope input,.lumia-scope textarea{font-size:16px!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 20px 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-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@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-r,0);overflow-y:auto;overflow-x:hidden;max-height:var(--l-pass-scrollbar-mah,300px)}.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 .noScrollbars::-webkit-scrollbar{display:none}.lumia-scope div[data-radix-popper-content-wrapper]{z-index:10000!important}.lumia-scope .file\\:mr-\\[var\\(--l-pass-gap\\)\\]::file-selector-button{margin-right:var(--l-pass-gap)}.lumia-scope .file\\:h-12::file-selector-button{height:3rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-\\[16px\\]::file-selector-button{font-size:16px}.lumia-scope .file\\:text-base::file-selector-button{font-size:1rem;line-height:1.5rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .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\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg-secondary\\)\\]:hover{background-color:var(--l-pass-bg-secondary)}.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-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/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-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/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-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\\:underline:hover{text-decoration-line:underline}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-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\\:bg-\\[var\\(--l-pass-secondary\\)\\]:hover:disabled{background-color:var(--l-pass-secondary)}.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-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.lumia-scope .data-\\[size\\=default\\]\\:h-12[data-size=default]{height:3rem}.lumia-scope .data-\\[size\\=sm\\]\\:h-10[data-size=sm]{height:2.5rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{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 .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{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 .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.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)}.lumia-scope .data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1[data-slot=select-value]>*){overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex[data-slot=select-value]>*){display:flex}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center[data-slot=select-value]>*){align-items:center}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-\\[var\\(--l-pass-gap\\)\\][data-slot=select-value]>*){gap:var(--l-pass-gap)}@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 (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@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\\:not\\(\\[class\\*\\=\\\'size-\\\'\\]\\)\\]\\:size-4 svg:not([class*=size-])){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4532
4532
|
|
|
4533
4533
|
// src/context/LumiaPassportContext.tsx
|
|
4534
4534
|
init_lumiaPassport();
|
|
@@ -4537,15 +4537,15 @@ import { initSdkErrorTracking } from "@lumiapassport/core/internal/error-trackin
|
|
|
4537
4537
|
import { merge as merge2 } from "lodash-es";
|
|
4538
4538
|
import {
|
|
4539
4539
|
createContext,
|
|
4540
|
-
useCallback as
|
|
4540
|
+
useCallback as useCallback23,
|
|
4541
4541
|
useContext,
|
|
4542
|
-
useEffect as
|
|
4543
|
-
useMemo as
|
|
4544
|
-
useRef as
|
|
4542
|
+
useEffect as useEffect34,
|
|
4543
|
+
useMemo as useMemo7,
|
|
4544
|
+
useRef as useRef15
|
|
4545
4545
|
} from "react";
|
|
4546
4546
|
|
|
4547
4547
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4548
|
-
import { Fragment as
|
|
4548
|
+
import { Fragment as Fragment28 } from "react";
|
|
4549
4549
|
import { create as create6 } from "zustand";
|
|
4550
4550
|
|
|
4551
4551
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
@@ -4724,7 +4724,7 @@ function BalanceFeedProvider() {
|
|
|
4724
4724
|
|
|
4725
4725
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4726
4726
|
import { AnimatePresence as AnimatePresence3, motion as motion3 } from "framer-motion";
|
|
4727
|
-
import { useEffect as
|
|
4727
|
+
import { useEffect as useEffect32 } from "react";
|
|
4728
4728
|
|
|
4729
4729
|
// src/internal/components/Footer/Footer.tsx
|
|
4730
4730
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
@@ -5043,8 +5043,8 @@ function LumiaIcon(props) {
|
|
|
5043
5043
|
|
|
5044
5044
|
// src/internal/components/Header/Header.tsx
|
|
5045
5045
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
5046
|
-
import { Copy, Loader as Loader3 } from "lucide-react";
|
|
5047
|
-
import { useState as useState3 } from "react";
|
|
5046
|
+
import { Copy, Loader as Loader3, X } from "lucide-react";
|
|
5047
|
+
import { useCallback, useRef as useRef2, useState as useState3 } from "react";
|
|
5048
5048
|
|
|
5049
5049
|
// src/internal/assets/PositiveIcon.tsx
|
|
5050
5050
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
@@ -5407,6 +5407,23 @@ function Header() {
|
|
|
5407
5407
|
const config = useLumiaPassportConfig().config;
|
|
5408
5408
|
const address = useLumiaPassportSession((st) => st.address);
|
|
5409
5409
|
const [copied, setCopied] = useState3(false);
|
|
5410
|
+
const [showEasterEgg, setShowEasterEgg] = useState3(false);
|
|
5411
|
+
const clickCountRef = useRef2(0);
|
|
5412
|
+
const clickTimerRef = useRef2(null);
|
|
5413
|
+
const handleAvatarClick = useCallback(() => {
|
|
5414
|
+
clickCountRef.current += 1;
|
|
5415
|
+
if (clickTimerRef.current) {
|
|
5416
|
+
clearTimeout(clickTimerRef.current);
|
|
5417
|
+
}
|
|
5418
|
+
if (clickCountRef.current >= 5) {
|
|
5419
|
+
clickCountRef.current = 0;
|
|
5420
|
+
setShowEasterEgg(true);
|
|
5421
|
+
} else {
|
|
5422
|
+
clickTimerRef.current = setTimeout(() => {
|
|
5423
|
+
clickCountRef.current = 0;
|
|
5424
|
+
}, 1e3);
|
|
5425
|
+
}
|
|
5426
|
+
}, []);
|
|
5410
5427
|
const { data: profile, isLoading: isProfileLoading } = useQuery3({
|
|
5411
5428
|
retry: false,
|
|
5412
5429
|
enabled: !!address,
|
|
@@ -5424,7 +5441,14 @@ function Header() {
|
|
|
5424
5441
|
className: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)] pt-5",
|
|
5425
5442
|
children: [
|
|
5426
5443
|
/* @__PURE__ */ jsxs11("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
5427
|
-
/* @__PURE__ */ jsx12(
|
|
5444
|
+
/* @__PURE__ */ jsx12(
|
|
5445
|
+
"div",
|
|
5446
|
+
{
|
|
5447
|
+
className: "flex-none w-12 h-12 flex items-center justify-center cursor-pointer select-none",
|
|
5448
|
+
onClick: handleAvatarClick,
|
|
5449
|
+
children: avatar ? /* @__PURE__ */ jsx12("img", { src: avatar, alt: displayName, className: "w-full h-full object-cover rounded-full" }) : /* @__PURE__ */ jsx12(LumiaIcon, { width: 48, height: 48 })
|
|
5450
|
+
}
|
|
5451
|
+
),
|
|
5428
5452
|
/* @__PURE__ */ jsxs11(
|
|
5429
5453
|
"div",
|
|
5430
5454
|
{
|
|
@@ -5502,7 +5526,35 @@ function Header() {
|
|
|
5502
5526
|
}
|
|
5503
5527
|
)
|
|
5504
5528
|
] })
|
|
5505
|
-
] })
|
|
5529
|
+
] }),
|
|
5530
|
+
showEasterEgg && /* @__PURE__ */ jsxs11(
|
|
5531
|
+
"div",
|
|
5532
|
+
{
|
|
5533
|
+
className: "fixed inset-0 z-[9999] bg-black/90 flex items-center justify-center",
|
|
5534
|
+
onClick: () => setShowEasterEgg(false),
|
|
5535
|
+
children: [
|
|
5536
|
+
/* @__PURE__ */ jsx12(
|
|
5537
|
+
"button",
|
|
5538
|
+
{
|
|
5539
|
+
className: "absolute top-4 right-4 text-white hover:text-gray-300 transition-colors",
|
|
5540
|
+
onClick: () => setShowEasterEgg(false),
|
|
5541
|
+
children: /* @__PURE__ */ jsx12(X, { className: "w-8 h-8" })
|
|
5542
|
+
}
|
|
5543
|
+
),
|
|
5544
|
+
/* @__PURE__ */ jsx12(
|
|
5545
|
+
"video",
|
|
5546
|
+
{
|
|
5547
|
+
autoPlay: true,
|
|
5548
|
+
controls: true,
|
|
5549
|
+
className: "max-w-full max-h-full",
|
|
5550
|
+
onEnded: () => setShowEasterEgg(false),
|
|
5551
|
+
onClick: (e) => e.stopPropagation(),
|
|
5552
|
+
children: /* @__PURE__ */ jsx12("source", { src: "https://github.com/cyberkostyan/ABrobot-ESP32-C3/raw/main/2026.webm", type: "video/webm" })
|
|
5553
|
+
}
|
|
5554
|
+
)
|
|
5555
|
+
]
|
|
5556
|
+
}
|
|
5557
|
+
)
|
|
5506
5558
|
]
|
|
5507
5559
|
}
|
|
5508
5560
|
);
|
|
@@ -5511,7 +5563,7 @@ function Header() {
|
|
|
5511
5563
|
// package.json
|
|
5512
5564
|
var package_default = {
|
|
5513
5565
|
name: "@lumiapassport/ui-kit",
|
|
5514
|
-
version: "1.15.
|
|
5566
|
+
version: "1.15.3",
|
|
5515
5567
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
5516
5568
|
type: "module",
|
|
5517
5569
|
main: "./dist/index.cjs",
|
|
@@ -5602,7 +5654,7 @@ var package_default = {
|
|
|
5602
5654
|
// src/internal/components/ui/dialog.tsx
|
|
5603
5655
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
5604
5656
|
import { merge } from "lodash-es";
|
|
5605
|
-
import { ArrowLeft as ArrowLeft2, SlidersHorizontal, X } from "lucide-react";
|
|
5657
|
+
import { ArrowLeft as ArrowLeft2, SlidersHorizontal, X as X2 } from "lucide-react";
|
|
5606
5658
|
import { forwardRef as forwardRef3 } from "react";
|
|
5607
5659
|
import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
5608
5660
|
var Dialog = DialogPrimitive.Root;
|
|
@@ -5707,7 +5759,7 @@ var DialogContent = forwardRef3(
|
|
|
5707
5759
|
}
|
|
5708
5760
|
),
|
|
5709
5761
|
/* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsxs12(Button, { variant: "ghost", size: "icon", className: "w-4 h-4", children: [
|
|
5710
|
-
/* @__PURE__ */ jsx13(
|
|
5762
|
+
/* @__PURE__ */ jsx13(X2, { className: "h-4 w-4" }),
|
|
5711
5763
|
/* @__PURE__ */ jsx13("span", { className: "sr-only", children: "Close" })
|
|
5712
5764
|
] }) })
|
|
5713
5765
|
]
|
|
@@ -5743,11 +5795,11 @@ import { jsx as jsx14 } from "react/jsx-runtime";
|
|
|
5743
5795
|
var VisuallyHidden = ({ children }) => /* @__PURE__ */ jsx14("span", { className: "sr-only absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0", children });
|
|
5744
5796
|
|
|
5745
5797
|
// src/internal/hooks/useListenIframeAuthEvents.ts
|
|
5746
|
-
import { useCallback, useEffect as useEffect3 } from "react";
|
|
5798
|
+
import { useCallback as useCallback2, useEffect as useEffect3 } from "react";
|
|
5747
5799
|
function useListenIframeAuthEvents() {
|
|
5748
5800
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
5749
5801
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
5750
|
-
const handleIframeMessage =
|
|
5802
|
+
const handleIframeMessage = useCallback2(
|
|
5751
5803
|
(event) => {
|
|
5752
5804
|
if (event.data?.type === "LUMIA_PASSPORT_IFRAME_READY") {
|
|
5753
5805
|
console.log("[ IFRAME MESSAGE CACTHED ] Iframe is ready");
|
|
@@ -5769,7 +5821,7 @@ function useListenIframeAuthEvents() {
|
|
|
5769
5821
|
}
|
|
5770
5822
|
|
|
5771
5823
|
// src/internal/hooks/useAutoConnect.ts
|
|
5772
|
-
import { useCallback as
|
|
5824
|
+
import { useCallback as useCallback3, useEffect as useEffect4, useRef as useRef3 } from "react";
|
|
5773
5825
|
function useAutoConnect() {
|
|
5774
5826
|
const {
|
|
5775
5827
|
config: { current: config },
|
|
@@ -5789,7 +5841,7 @@ function useAutoConnect() {
|
|
|
5789
5841
|
setIsIframeReady,
|
|
5790
5842
|
setIsLoading
|
|
5791
5843
|
} = useLumiaPassportSession();
|
|
5792
|
-
const createSessionWithKeyshare =
|
|
5844
|
+
const createSessionWithKeyshare = useCallback3(
|
|
5793
5845
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
5794
5846
|
try {
|
|
5795
5847
|
try {
|
|
@@ -5823,7 +5875,7 @@ function useAutoConnect() {
|
|
|
5823
5875
|
},
|
|
5824
5876
|
[usePaymaster, setStatus, callbacks]
|
|
5825
5877
|
);
|
|
5826
|
-
const autoConnectAttemptedRef =
|
|
5878
|
+
const autoConnectAttemptedRef = useRef3(false);
|
|
5827
5879
|
useEffect4(() => {
|
|
5828
5880
|
if (autoConnectAttemptedRef.current) return;
|
|
5829
5881
|
setIsLoading(true);
|
|
@@ -5990,13 +6042,13 @@ function useBackupStatusChanges() {
|
|
|
5990
6042
|
|
|
5991
6043
|
// src/internal/hooks/useDetectMaxScrollHeight.ts
|
|
5992
6044
|
import { debounce } from "lodash-es";
|
|
5993
|
-
import { useCallback as
|
|
6045
|
+
import { useCallback as useCallback4, useEffect as useEffect6 } from "react";
|
|
5994
6046
|
var DEBOUNCE_DELAY = 50;
|
|
5995
6047
|
function useDetectMaxScrollHeight() {
|
|
5996
6048
|
const page = useLayoutDataStore((state) => state.page);
|
|
5997
6049
|
const setIsMobileView = useLayoutStore((state) => state.setIsMobileView);
|
|
5998
6050
|
const setMaxScrollHeight = useLayoutStore((state) => state.setMaxScrollHeight);
|
|
5999
|
-
const onResize =
|
|
6051
|
+
const onResize = useCallback4(
|
|
6000
6052
|
debounce(({ width, height }) => {
|
|
6001
6053
|
const headerHeight = page === "auth" /* AUTH */ || page === "keyshare-restore" /* KEYSHARE_RESTORE */ ? 0 : 116;
|
|
6002
6054
|
const limContentHeight = height * 0.92 - headerHeight - 57;
|
|
@@ -6014,24 +6066,24 @@ function useDetectMaxScrollHeight() {
|
|
|
6014
6066
|
}
|
|
6015
6067
|
|
|
6016
6068
|
// src/internal/hooks/usePageMapper.tsx
|
|
6017
|
-
import { useCallback as
|
|
6069
|
+
import { useCallback as useCallback20, useEffect as useEffect29 } from "react";
|
|
6018
6070
|
|
|
6019
6071
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
6020
6072
|
import { AnimatePresence, motion } from "framer-motion";
|
|
6021
6073
|
import { AlertTriangle as AlertTriangle2, Loader as Loader6 } from "lucide-react";
|
|
6022
|
-
import { useEffect as useEffect9, useMemo, useRef as
|
|
6074
|
+
import { useEffect as useEffect9, useMemo, useRef as useRef9, useState as useState6 } from "react";
|
|
6023
6075
|
|
|
6024
6076
|
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
6025
|
-
import { useCallback as
|
|
6077
|
+
import { useCallback as useCallback5, useEffect as useEffect7, useRef as useRef4 } from "react";
|
|
6026
6078
|
var useExpandable = (props) => {
|
|
6027
6079
|
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
6028
|
-
const expandableRef =
|
|
6029
|
-
const contentRef =
|
|
6080
|
+
const expandableRef = useRef4(null);
|
|
6081
|
+
const contentRef = useRef4(null);
|
|
6030
6082
|
useEffect7(() => {
|
|
6031
6083
|
if (!expandableRef.current) return;
|
|
6032
6084
|
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
6033
6085
|
}, []);
|
|
6034
|
-
const setExpandableHeight =
|
|
6086
|
+
const setExpandableHeight = useCallback5(
|
|
6035
6087
|
(isExpnd) => {
|
|
6036
6088
|
if (!contentRef.current || !expandableRef.current) return;
|
|
6037
6089
|
expandableRef.current.style.setProperty(
|
|
@@ -6172,7 +6224,7 @@ function AuthFailedStep() {
|
|
|
6172
6224
|
|
|
6173
6225
|
// src/internal/components/AuthMenu/PassKeyStep.tsx
|
|
6174
6226
|
import { ArrowLeft as ArrowLeft3, Key as Key3 } from "lucide-react";
|
|
6175
|
-
import { useCallback as
|
|
6227
|
+
import { useCallback as useCallback6 } from "react";
|
|
6176
6228
|
|
|
6177
6229
|
// src/internal/assets/PasskeyAddIcon.tsx
|
|
6178
6230
|
import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
@@ -6226,7 +6278,7 @@ function PassKeyStep(props) {
|
|
|
6226
6278
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6227
6279
|
const autoCloseOnSuccess = !recoveryUserId;
|
|
6228
6280
|
const { passkeyStatus, setStep, setPasskeyStatus, setAlert, setEmail, setFailedType } = useAuthStore();
|
|
6229
|
-
const onPasskeyRegister =
|
|
6281
|
+
const onPasskeyRegister = useCallback6(async () => {
|
|
6230
6282
|
setAlert(null);
|
|
6231
6283
|
setPasskeyStatus("registering passkey...");
|
|
6232
6284
|
setIsLoading(true);
|
|
@@ -6285,7 +6337,7 @@ function PassKeyStep(props) {
|
|
|
6285
6337
|
setIsLoading(false);
|
|
6286
6338
|
}
|
|
6287
6339
|
}, [onAuthSuccess, setPage, callbacks]);
|
|
6288
|
-
const onPasskeyAuth =
|
|
6340
|
+
const onPasskeyAuth = useCallback6(async () => {
|
|
6289
6341
|
setAlert(null);
|
|
6290
6342
|
setPasskeyStatus("checking available passkeys...");
|
|
6291
6343
|
setIsLoading(true);
|
|
@@ -6417,14 +6469,14 @@ init_lumiaPassport();
|
|
|
6417
6469
|
init_projectId();
|
|
6418
6470
|
import { useMutation as useMutation3 } from "@tanstack/react-query";
|
|
6419
6471
|
import { ChevronRight, Loader as Loader4, Mail as Mail3 } from "lucide-react";
|
|
6420
|
-
import { useRef as
|
|
6472
|
+
import { useRef as useRef6 } from "react";
|
|
6421
6473
|
|
|
6422
6474
|
// src/internal/components/ui/input.tsx
|
|
6423
|
-
import React, { useImperativeHandle, useRef as
|
|
6475
|
+
import React, { useImperativeHandle, useRef as useRef5 } from "react";
|
|
6424
6476
|
import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
6425
6477
|
var Input = React.forwardRef((props, ref) => {
|
|
6426
6478
|
const { className, disabled, error, Icon: Icon2, element, ...inputProps } = props;
|
|
6427
|
-
const internalRef =
|
|
6479
|
+
const internalRef = useRef5(null);
|
|
6428
6480
|
useImperativeHandle(ref, () => internalRef.current);
|
|
6429
6481
|
return /* @__PURE__ */ jsxs16("div", { className: cn("w-full flex flex-col gap-1", className), children: [
|
|
6430
6482
|
/* @__PURE__ */ jsxs16(
|
|
@@ -6472,7 +6524,7 @@ Input.displayName = "Input";
|
|
|
6472
6524
|
import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
6473
6525
|
function Email() {
|
|
6474
6526
|
const { config, callbacks } = useLumiaPassportConfig();
|
|
6475
|
-
const buttonRef =
|
|
6527
|
+
const buttonRef = useRef6(null);
|
|
6476
6528
|
const isLoading = useLumiaPassportSession((st) => st.isLoading);
|
|
6477
6529
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6478
6530
|
const { email, alert: alert2, setEmail, setExpiresIn, setStep, setAlert } = useAuthStore();
|
|
@@ -6575,7 +6627,7 @@ function Email() {
|
|
|
6575
6627
|
init_assets();
|
|
6576
6628
|
init_lumiaPassport();
|
|
6577
6629
|
init_auth();
|
|
6578
|
-
import { useCallback as
|
|
6630
|
+
import { useCallback as useCallback7 } from "react";
|
|
6579
6631
|
init_projectId();
|
|
6580
6632
|
|
|
6581
6633
|
// src/internal/components/AuthMenu/SignInStep/utils.ts
|
|
@@ -6746,7 +6798,7 @@ function Social(props) {
|
|
|
6746
6798
|
const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
|
|
6747
6799
|
const setIsWalletLinking = useLayoutDataStore((st) => st.setIsWalletLinking);
|
|
6748
6800
|
const { alert: alert2, setStep, setEmail, setFailedType, setAlert, setPasskeyStatus } = useAuthStore();
|
|
6749
|
-
const onSocialAuth =
|
|
6801
|
+
const onSocialAuth = useCallback7(
|
|
6750
6802
|
async (providerId) => {
|
|
6751
6803
|
const normalizedProviderId = providerId.toLowerCase();
|
|
6752
6804
|
const provider = config.current?.social?.providers?.find(
|
|
@@ -7074,11 +7126,11 @@ function SignInStep(props) {
|
|
|
7074
7126
|
// src/internal/components/AuthMenu/useAuthMenuHanders.ts
|
|
7075
7127
|
init_auth();
|
|
7076
7128
|
import { useQueryClient as useQueryClient2 } from "@tanstack/react-query";
|
|
7077
|
-
import { useCallback as
|
|
7129
|
+
import { useCallback as useCallback8, useRef as useRef7, useState as useState4 } from "react";
|
|
7078
7130
|
function useAuthMenuHandlers() {
|
|
7079
7131
|
const { config, callbacks } = useLumiaPassportConfig();
|
|
7080
7132
|
const qc = useQueryClient2();
|
|
7081
|
-
const pendingLoginResponseRef =
|
|
7133
|
+
const pendingLoginResponseRef = useRef7(null);
|
|
7082
7134
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
7083
7135
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
7084
7136
|
const [telegramCleanup, setTelegramCleanup] = useState4(null);
|
|
@@ -7094,7 +7146,7 @@ function useAuthMenuHandlers() {
|
|
|
7094
7146
|
} = useLumiaPassportSession();
|
|
7095
7147
|
const setStep = useAuthStore((st) => st.setStep);
|
|
7096
7148
|
const setAlert = useAuthStore((st) => st.setAlert);
|
|
7097
|
-
const createSessionWithKeyshare =
|
|
7149
|
+
const createSessionWithKeyshare = useCallback8(
|
|
7098
7150
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
7099
7151
|
try {
|
|
7100
7152
|
try {
|
|
@@ -7128,7 +7180,7 @@ function useAuthMenuHandlers() {
|
|
|
7128
7180
|
},
|
|
7129
7181
|
[setStatus, callbacks, usePaymaster]
|
|
7130
7182
|
);
|
|
7131
|
-
const onAuthSuccess =
|
|
7183
|
+
const onAuthSuccess = useCallback8(async () => {
|
|
7132
7184
|
setIsLoading(true);
|
|
7133
7185
|
const loginResponse = pendingLoginResponseRef.current;
|
|
7134
7186
|
if (!loginResponse || !loginResponse.userId) {
|
|
@@ -7231,7 +7283,7 @@ function useAuthMenuHandlers() {
|
|
|
7231
7283
|
setIsDialogForced,
|
|
7232
7284
|
createSessionWithKeyshare
|
|
7233
7285
|
]);
|
|
7234
|
-
const goBackToSignIn =
|
|
7286
|
+
const goBackToSignIn = useCallback8(() => {
|
|
7235
7287
|
setStep("signin");
|
|
7236
7288
|
setAlert(null);
|
|
7237
7289
|
if (telegramCleanup) {
|
|
@@ -7268,7 +7320,7 @@ function OtpIcon(props) {
|
|
|
7268
7320
|
init_projectId();
|
|
7269
7321
|
|
|
7270
7322
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
7271
|
-
import { useEffect as useEffect8, useRef as
|
|
7323
|
+
import { useEffect as useEffect8, useRef as useRef8, useState as useState5 } from "react";
|
|
7272
7324
|
import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
7273
7325
|
var VerificationCodeInput = (props) => {
|
|
7274
7326
|
const { onVerifyCode, onResendCode, isLoading, expiresIn } = props;
|
|
@@ -7279,8 +7331,8 @@ var VerificationCodeInput = (props) => {
|
|
|
7279
7331
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
7280
7332
|
return () => clearInterval(t);
|
|
7281
7333
|
}, []);
|
|
7282
|
-
const lastSubmittedRef =
|
|
7283
|
-
const inputsRef =
|
|
7334
|
+
const lastSubmittedRef = useRef8(null);
|
|
7335
|
+
const inputsRef = useRef8([]);
|
|
7284
7336
|
const [digits, setDigits] = useState5(["", "", "", "", "", ""]);
|
|
7285
7337
|
useEffect8(() => {
|
|
7286
7338
|
const code = digits.join("");
|
|
@@ -7568,7 +7620,7 @@ var AuthMenu = () => {
|
|
|
7568
7620
|
const { step, alert: alert2, setStep, setPasskeyStatus, setEmail, setAlert } = useAuthStore();
|
|
7569
7621
|
const { pendingLoginResponseRef, onAuthSuccess, goBackToSignIn } = useAuthMenuHandlers();
|
|
7570
7622
|
const [isAlertShowReady, setIsAlertShowReady] = useState6(false);
|
|
7571
|
-
const readyTimeout =
|
|
7623
|
+
const readyTimeout = useRef9(null);
|
|
7572
7624
|
useEffect9(() => {
|
|
7573
7625
|
if (readyTimeout.current) {
|
|
7574
7626
|
clearTimeout(readyTimeout.current);
|
|
@@ -7736,7 +7788,7 @@ function RampnowIcon() {
|
|
|
7736
7788
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7737
7789
|
import { useMutation as useMutation5, useQuery as useQuery4, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
7738
7790
|
import { DollarSign, LoaderIcon as LoaderIcon2 } from "lucide-react";
|
|
7739
|
-
import { useEffect as useEffect11, useRef as
|
|
7791
|
+
import { useEffect as useEffect11, useRef as useRef10 } from "react";
|
|
7740
7792
|
|
|
7741
7793
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7742
7794
|
import { jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
@@ -7901,7 +7953,7 @@ function Binance(props) {
|
|
|
7901
7953
|
queryKey: [QUERY_KEYS3.binancePaymentModes, walletAddress, isLumiaAvailable, srcQueryAmount],
|
|
7902
7954
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7903
7955
|
});
|
|
7904
|
-
const lastLoadedPaymentModes =
|
|
7956
|
+
const lastLoadedPaymentModes = useRef10([]);
|
|
7905
7957
|
useEffect11(() => {
|
|
7906
7958
|
if (!paymentModes?.length) return;
|
|
7907
7959
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
@@ -8222,7 +8274,7 @@ var RAMP_PROVIDERS = {
|
|
|
8222
8274
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
8223
8275
|
|
|
8224
8276
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
8225
|
-
import { useCallback as
|
|
8277
|
+
import { useCallback as useCallback9, useEffect as useEffect13, useRef as useRef11, useState as useState7 } from "react";
|
|
8226
8278
|
|
|
8227
8279
|
// src/internal/utils/debounce.ts
|
|
8228
8280
|
function debounce2(func, waitFor) {
|
|
@@ -8239,11 +8291,11 @@ var useSelectables = () => {
|
|
|
8239
8291
|
const [redirecting, setRedirecting] = useState7(false);
|
|
8240
8292
|
const [rampProvider, setrRampProvider] = useState7("binance");
|
|
8241
8293
|
const [minAmount, setMinAmount] = useState7(0);
|
|
8242
|
-
const inputRef =
|
|
8294
|
+
const inputRef = useRef11(null);
|
|
8243
8295
|
const [srcQueryAmount, setSrcQueryAmount] = useState7(0);
|
|
8244
8296
|
const [srcInputAmount, setSrcInputAmount] = useState7(0);
|
|
8245
8297
|
const [paymentMode, setPaymentMode] = useState7(null);
|
|
8246
|
-
const setQueryAmountDebounced =
|
|
8298
|
+
const setQueryAmountDebounced = useCallback9(
|
|
8247
8299
|
debounce2((inputAmount) => {
|
|
8248
8300
|
const checkedValue = Math.max(inputAmount, minAmount);
|
|
8249
8301
|
setSrcInputAmount(checkedValue);
|
|
@@ -8384,7 +8436,7 @@ import { Cloud, FileDown, FileUp } from "lucide-react";
|
|
|
8384
8436
|
import { Fragment as Fragment8, useMemo as useMemo2 } from "react";
|
|
8385
8437
|
|
|
8386
8438
|
// src/internal/components/KeyshareRestoreMenu/hooks/useOnRestoreSuccess.ts
|
|
8387
|
-
import { useCallback as
|
|
8439
|
+
import { useCallback as useCallback10 } from "react";
|
|
8388
8440
|
|
|
8389
8441
|
// src/internal/components/KeyshareRestoreMenu/hooks/useRestoreStore.ts
|
|
8390
8442
|
import { create as create4 } from "zustand";
|
|
@@ -8420,7 +8472,7 @@ function useOnRestoreSuccess() {
|
|
|
8420
8472
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8421
8473
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus } = useLumiaPassportSession();
|
|
8422
8474
|
const { setError, setSuccess } = useRestoreStore();
|
|
8423
|
-
const createSessionWithKeyshare =
|
|
8475
|
+
const createSessionWithKeyshare = useCallback10(
|
|
8424
8476
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
8425
8477
|
try {
|
|
8426
8478
|
try {
|
|
@@ -8454,7 +8506,7 @@ function useOnRestoreSuccess() {
|
|
|
8454
8506
|
},
|
|
8455
8507
|
[setStatus, callbacks, usePaymaster]
|
|
8456
8508
|
);
|
|
8457
|
-
const onRestoreSuccess =
|
|
8509
|
+
const onRestoreSuccess = useCallback10(async () => {
|
|
8458
8510
|
const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
8459
8511
|
const verify = await verifyToken2();
|
|
8460
8512
|
const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
|
|
@@ -8882,7 +8934,7 @@ import { AlertCircle, FileUp as FileUp2, Upload, User } from "lucide-react";
|
|
|
8882
8934
|
|
|
8883
8935
|
// src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
|
|
8884
8936
|
import { ChevronRight as ChevronRight2, Eye, EyeOff, Info, Key as Key4, Loader as Loader7 } from "lucide-react";
|
|
8885
|
-
import { useRef as
|
|
8937
|
+
import { useRef as useRef12 } from "react";
|
|
8886
8938
|
import { Fragment as Fragment9, jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
8887
8939
|
function PasswordPasskey(props) {
|
|
8888
8940
|
const {
|
|
@@ -8895,7 +8947,7 @@ function PasswordPasskey(props) {
|
|
|
8895
8947
|
actionHandler
|
|
8896
8948
|
} = props;
|
|
8897
8949
|
const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
|
|
8898
|
-
const actionRef =
|
|
8950
|
+
const actionRef = useRef12(null);
|
|
8899
8951
|
const {
|
|
8900
8952
|
showPassword,
|
|
8901
8953
|
restorePassword,
|
|
@@ -9787,7 +9839,7 @@ import { useMemo as useMemo3 } from "react";
|
|
|
9787
9839
|
|
|
9788
9840
|
// src/modules/linkedProfiles.ts
|
|
9789
9841
|
import { useQuery as useQuery10, useQueryClient as useQueryClient8 } from "@tanstack/react-query";
|
|
9790
|
-
import { useCallback as
|
|
9842
|
+
import { useCallback as useCallback11 } from "react";
|
|
9791
9843
|
init_auth();
|
|
9792
9844
|
init_common();
|
|
9793
9845
|
init_types();
|
|
@@ -9820,7 +9872,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
9820
9872
|
queryFn: getLinkProfilesData
|
|
9821
9873
|
});
|
|
9822
9874
|
const { profiles = [], avatar = null } = data || {};
|
|
9823
|
-
const refresh =
|
|
9875
|
+
const refresh = useCallback11(async () => {
|
|
9824
9876
|
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9825
9877
|
}, [qc, address]);
|
|
9826
9878
|
return { profiles, avatar, isLoading, error, refresh };
|
|
@@ -10287,7 +10339,7 @@ function useLinkSocial() {
|
|
|
10287
10339
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
10288
10340
|
init_telegram2();
|
|
10289
10341
|
import { useQueryClient as useQueryClient12 } from "@tanstack/react-query";
|
|
10290
|
-
import { useCallback as
|
|
10342
|
+
import { useCallback as useCallback12, useEffect as useEffect22, useState as useState10 } from "react";
|
|
10291
10343
|
function useLinkTelegram() {
|
|
10292
10344
|
const {
|
|
10293
10345
|
config: { current: config },
|
|
@@ -10298,7 +10350,7 @@ function useLinkTelegram() {
|
|
|
10298
10350
|
const isWalletLinking = useLayoutDataStore((st) => st.isWalletLinking);
|
|
10299
10351
|
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setAlert } = useManageWalletStore();
|
|
10300
10352
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10301
|
-
const handleLinkTelegram =
|
|
10353
|
+
const handleLinkTelegram = useCallback12(async () => {
|
|
10302
10354
|
try {
|
|
10303
10355
|
setLinkIsLoading(true);
|
|
10304
10356
|
setAlert(null);
|
|
@@ -10696,7 +10748,7 @@ function useNicknameInfo(enabled = true) {
|
|
|
10696
10748
|
|
|
10697
10749
|
// src/internal/components/NicknameSettings/NicknameEditForm.tsx
|
|
10698
10750
|
import { Check as Check2, Loader as Loader15 } from "lucide-react";
|
|
10699
|
-
import { useCallback as
|
|
10751
|
+
import { useCallback as useCallback14, useState as useState13 } from "react";
|
|
10700
10752
|
|
|
10701
10753
|
// src/internal/hooks/useChangeNickname.ts
|
|
10702
10754
|
init_nickname();
|
|
@@ -10833,7 +10885,7 @@ function getNicknameErrorMessage(code, params) {
|
|
|
10833
10885
|
}
|
|
10834
10886
|
|
|
10835
10887
|
// src/internal/components/NicknameSettings/NicknameAvailabilityIndicator.tsx
|
|
10836
|
-
import { Loader as Loader14, Check, X as
|
|
10888
|
+
import { Loader as Loader14, Check, X as X3 } from "lucide-react";
|
|
10837
10889
|
import { jsx as jsx53, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
10838
10890
|
function NicknameAvailabilityIndicator({
|
|
10839
10891
|
isChecking,
|
|
@@ -10860,7 +10912,7 @@ function NicknameAvailabilityIndicator({
|
|
|
10860
10912
|
}
|
|
10861
10913
|
const reason = availability.reason ? getNicknameErrorMessage(availability.reason) : "This nickname is not available";
|
|
10862
10914
|
return /* @__PURE__ */ jsxs46("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-error)]", children: [
|
|
10863
|
-
/* @__PURE__ */ jsx53(
|
|
10915
|
+
/* @__PURE__ */ jsx53(X3, { className: "w-3 h-3" }),
|
|
10864
10916
|
/* @__PURE__ */ jsx53("span", { children: reason })
|
|
10865
10917
|
] });
|
|
10866
10918
|
}
|
|
@@ -10882,7 +10934,7 @@ function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
|
|
|
10882
10934
|
onSuccess?.();
|
|
10883
10935
|
}
|
|
10884
10936
|
});
|
|
10885
|
-
const handleInputChange =
|
|
10937
|
+
const handleInputChange = useCallback14(
|
|
10886
10938
|
(e) => {
|
|
10887
10939
|
const value = e.target.value;
|
|
10888
10940
|
setInputValue(value);
|
|
@@ -10897,7 +10949,7 @@ function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
|
|
|
10897
10949
|
},
|
|
10898
10950
|
[clientError, isError, isSuccess, reset]
|
|
10899
10951
|
);
|
|
10900
|
-
const handleSubmit =
|
|
10952
|
+
const handleSubmit = useCallback14(
|
|
10901
10953
|
(e) => {
|
|
10902
10954
|
e.preventDefault();
|
|
10903
10955
|
const normalized2 = normalizeNickname(inputValue);
|
|
@@ -11052,12 +11104,12 @@ function NicknameSettings() {
|
|
|
11052
11104
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
11053
11105
|
import { useQueryClient as useQueryClient16 } from "@tanstack/react-query";
|
|
11054
11106
|
import { AlertCircle as AlertCircle4, ArrowLeft as ArrowLeft10, Gem, Loader as Loader18, RefreshCw } from "lucide-react";
|
|
11055
|
-
import { useCallback as
|
|
11107
|
+
import { useCallback as useCallback16 } from "react";
|
|
11056
11108
|
|
|
11057
11109
|
// src/internal/hooks/useBlockscoutAssets.ts
|
|
11058
11110
|
init_lumiaPassport();
|
|
11059
11111
|
init_base();
|
|
11060
|
-
import { useCallback as
|
|
11112
|
+
import { useCallback as useCallback15, useMemo as useMemo4, useRef as useRef13 } from "react";
|
|
11061
11113
|
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
11062
11114
|
import { useBalance as useBalance2, usePublicClient } from "wagmi";
|
|
11063
11115
|
import { formatUnits as formatUnits2 } from "viem";
|
|
@@ -11205,7 +11257,7 @@ function useBlockscoutAssets(options) {
|
|
|
11205
11257
|
[blockscoutApiUrl]
|
|
11206
11258
|
);
|
|
11207
11259
|
const publicClient2 = usePublicClient({ chainId: lumiaBeam.id });
|
|
11208
|
-
const lastRefreshRef =
|
|
11260
|
+
const lastRefreshRef = useRef13(0);
|
|
11209
11261
|
const {
|
|
11210
11262
|
data: nativeBalanceData,
|
|
11211
11263
|
isLoading: nativeLoading,
|
|
@@ -11337,7 +11389,7 @@ function useBlockscoutAssets(options) {
|
|
|
11337
11389
|
if (!tokensError) return null;
|
|
11338
11390
|
return createError(tokensError);
|
|
11339
11391
|
}, [tokensError]);
|
|
11340
|
-
const refreshBalances =
|
|
11392
|
+
const refreshBalances = useCallback15(async () => {
|
|
11341
11393
|
const now = Date.now();
|
|
11342
11394
|
if (now - lastRefreshRef.current < BLOCKSCOUT_REFRESH_DEBOUNCE) {
|
|
11343
11395
|
return;
|
|
@@ -11345,7 +11397,7 @@ function useBlockscoutAssets(options) {
|
|
|
11345
11397
|
lastRefreshRef.current = now;
|
|
11346
11398
|
await Promise.all([refetchNative(), refetchTokens(), refetchNfts()]);
|
|
11347
11399
|
}, [refetchNative, refetchTokens, refetchNfts]);
|
|
11348
|
-
const getTokenBalance =
|
|
11400
|
+
const getTokenBalance = useCallback15(
|
|
11349
11401
|
(tokenAddress) => {
|
|
11350
11402
|
return assets.find((a) => a.address?.toLowerCase() === tokenAddress.toLowerCase()) || null;
|
|
11351
11403
|
},
|
|
@@ -11532,7 +11584,7 @@ function PortfolioMenu() {
|
|
|
11532
11584
|
} = useBlockscoutAssets({
|
|
11533
11585
|
address
|
|
11534
11586
|
});
|
|
11535
|
-
const refreshAllAssetsBalances =
|
|
11587
|
+
const refreshAllAssetsBalances = useCallback16(() => {
|
|
11536
11588
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
11537
11589
|
refreshBlockscoutBalances();
|
|
11538
11590
|
}, [qc, projectAssets, refreshBlockscoutBalances]);
|
|
@@ -11945,10 +11997,81 @@ function SecurityMenu() {
|
|
|
11945
11997
|
}
|
|
11946
11998
|
|
|
11947
11999
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
11948
|
-
import {
|
|
11949
|
-
|
|
11950
|
-
|
|
11951
|
-
|
|
12000
|
+
import {
|
|
12001
|
+
AlertCircle as AlertCircle5,
|
|
12002
|
+
AlertTriangle as AlertTriangle4,
|
|
12003
|
+
ArrowLeft as ArrowLeft12,
|
|
12004
|
+
AtSign,
|
|
12005
|
+
CheckCircle2 as CheckCircle23,
|
|
12006
|
+
Image as ImageIcon3,
|
|
12007
|
+
Loader as Loader22,
|
|
12008
|
+
Shield as Shield3,
|
|
12009
|
+
ShieldAlert,
|
|
12010
|
+
Sparkles as Sparkles3,
|
|
12011
|
+
Wallet as Wallet3
|
|
12012
|
+
} from "lucide-react";
|
|
12013
|
+
import { useEffect as useEffect26, useMemo as useMemo6, useState as useState19 } from "react";
|
|
12014
|
+
import { formatUnits as formatUnits5, isAddress as isAddress2, parseUnits as parseUnits2 } from "viem";
|
|
12015
|
+
|
|
12016
|
+
// src/hooks/useErc3643Compliance.ts
|
|
12017
|
+
init_base();
|
|
12018
|
+
import { useReadContract } from "wagmi";
|
|
12019
|
+
var ERC3643_CAN_TRANSFER_ABI = [
|
|
12020
|
+
{
|
|
12021
|
+
type: "function",
|
|
12022
|
+
name: "canTransfer",
|
|
12023
|
+
inputs: [
|
|
12024
|
+
{ name: "_to", type: "address" },
|
|
12025
|
+
{ name: "_value", type: "uint256" }
|
|
12026
|
+
],
|
|
12027
|
+
outputs: [{ name: "", type: "bool" }]
|
|
12028
|
+
}
|
|
12029
|
+
];
|
|
12030
|
+
function useErc3643Compliance(options) {
|
|
12031
|
+
const { tokenAddress, to, amount, enabled = true } = options;
|
|
12032
|
+
const isQueryEnabled = enabled && !!tokenAddress && !!to && amount !== void 0;
|
|
12033
|
+
const {
|
|
12034
|
+
data: canTransferResult,
|
|
12035
|
+
isLoading,
|
|
12036
|
+
error: queryError,
|
|
12037
|
+
refetch
|
|
12038
|
+
} = useReadContract({
|
|
12039
|
+
address: tokenAddress,
|
|
12040
|
+
abi: ERC3643_CAN_TRANSFER_ABI,
|
|
12041
|
+
functionName: "canTransfer",
|
|
12042
|
+
args: to && amount !== void 0 ? [to, amount] : void 0,
|
|
12043
|
+
chainId: lumiaBeam.id,
|
|
12044
|
+
query: {
|
|
12045
|
+
enabled: isQueryEnabled
|
|
12046
|
+
}
|
|
12047
|
+
});
|
|
12048
|
+
let error = null;
|
|
12049
|
+
if (queryError) {
|
|
12050
|
+
const errorMessage = queryError.message || "";
|
|
12051
|
+
if (errorMessage.includes("IDENTITY_NOT_VERIFIED")) {
|
|
12052
|
+
error = "Recipient identity is not verified for this security token";
|
|
12053
|
+
} else if (errorMessage.includes("COUNTRY_NOT_ALLOWED")) {
|
|
12054
|
+
error = "Transfer not allowed to recipient country";
|
|
12055
|
+
} else if (errorMessage.includes("INVESTOR_LIMIT_EXCEEDED")) {
|
|
12056
|
+
error = "Maximum investor limit exceeded for this token";
|
|
12057
|
+
} else if (errorMessage.includes("HOLDING_PERIOD_NOT_MET")) {
|
|
12058
|
+
error = "Holding period requirement not met";
|
|
12059
|
+
} else if (errorMessage.includes("AMOUNT_EXCEEDS_LIMIT")) {
|
|
12060
|
+
error = "Transfer amount exceeds allowed limit";
|
|
12061
|
+
} else {
|
|
12062
|
+
error = "Compliance check failed. Transfer may not be allowed.";
|
|
12063
|
+
}
|
|
12064
|
+
} else if (canTransferResult === false) {
|
|
12065
|
+
error = "Transfer not allowed by token compliance rules";
|
|
12066
|
+
}
|
|
12067
|
+
const canTransfer = typeof canTransferResult === "boolean" ? canTransferResult : void 0;
|
|
12068
|
+
return {
|
|
12069
|
+
canTransfer,
|
|
12070
|
+
isLoading,
|
|
12071
|
+
error,
|
|
12072
|
+
refetch
|
|
12073
|
+
};
|
|
12074
|
+
}
|
|
11952
12075
|
|
|
11953
12076
|
// src/hooks/useNicknameResolve.ts
|
|
11954
12077
|
init_nickname();
|
|
@@ -12096,16 +12219,53 @@ function useNicknameResolve(input, options) {
|
|
|
12096
12219
|
}
|
|
12097
12220
|
|
|
12098
12221
|
// src/hooks/useSendTransaction.ts
|
|
12099
|
-
import { useCallback as
|
|
12100
|
-
import { isAddress, parseEther as parseEther2 } from "viem";
|
|
12222
|
+
import { useCallback as useCallback17, useState as useState17 } from "react";
|
|
12223
|
+
import { encodeFunctionData as encodeFunctionData2, isAddress, parseEther as parseEther2, parseUnits } from "viem";
|
|
12101
12224
|
init_account();
|
|
12225
|
+
var ERC20_TRANSFER_ABI = [
|
|
12226
|
+
{
|
|
12227
|
+
type: "function",
|
|
12228
|
+
name: "transfer",
|
|
12229
|
+
inputs: [
|
|
12230
|
+
{ name: "to", type: "address" },
|
|
12231
|
+
{ name: "amount", type: "uint256" }
|
|
12232
|
+
],
|
|
12233
|
+
outputs: [{ name: "", type: "bool" }]
|
|
12234
|
+
}
|
|
12235
|
+
];
|
|
12236
|
+
var ERC721_SAFE_TRANSFER_ABI = [
|
|
12237
|
+
{
|
|
12238
|
+
type: "function",
|
|
12239
|
+
name: "safeTransferFrom",
|
|
12240
|
+
inputs: [
|
|
12241
|
+
{ name: "from", type: "address" },
|
|
12242
|
+
{ name: "to", type: "address" },
|
|
12243
|
+
{ name: "tokenId", type: "uint256" }
|
|
12244
|
+
],
|
|
12245
|
+
outputs: []
|
|
12246
|
+
}
|
|
12247
|
+
];
|
|
12248
|
+
var ERC1155_SAFE_TRANSFER_ABI = [
|
|
12249
|
+
{
|
|
12250
|
+
type: "function",
|
|
12251
|
+
name: "safeTransferFrom",
|
|
12252
|
+
inputs: [
|
|
12253
|
+
{ name: "from", type: "address" },
|
|
12254
|
+
{ name: "to", type: "address" },
|
|
12255
|
+
{ name: "id", type: "uint256" },
|
|
12256
|
+
{ name: "amount", type: "uint256" },
|
|
12257
|
+
{ name: "data", type: "bytes" }
|
|
12258
|
+
],
|
|
12259
|
+
outputs: []
|
|
12260
|
+
}
|
|
12261
|
+
];
|
|
12102
12262
|
function useSendTransaction() {
|
|
12103
12263
|
const session = useLumiaPassportSession((st) => st.session);
|
|
12104
12264
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12105
12265
|
const [isLoading, setIsLoading] = useState17(false);
|
|
12106
12266
|
const [error, setError] = useState17(null);
|
|
12107
12267
|
const [userOpHash, setUserOpHash] = useState17(null);
|
|
12108
|
-
const sendTransaction =
|
|
12268
|
+
const sendTransaction = useCallback17(
|
|
12109
12269
|
async (params) => {
|
|
12110
12270
|
if (!session || !address) {
|
|
12111
12271
|
setError("No active session");
|
|
@@ -12115,21 +12275,80 @@ function useSendTransaction() {
|
|
|
12115
12275
|
setError("Invalid recipient address");
|
|
12116
12276
|
return null;
|
|
12117
12277
|
}
|
|
12118
|
-
const
|
|
12119
|
-
if (
|
|
12120
|
-
|
|
12278
|
+
const assetType = params.assetType || "native";
|
|
12279
|
+
if (assetType !== "erc721") {
|
|
12280
|
+
const value = parseFloat(params.value);
|
|
12281
|
+
if (isNaN(value) || value < 0) {
|
|
12282
|
+
setError("Invalid amount");
|
|
12283
|
+
return null;
|
|
12284
|
+
}
|
|
12285
|
+
}
|
|
12286
|
+
if (assetType !== "native" && !params.tokenAddress) {
|
|
12287
|
+
setError("Token address is required for token transfers");
|
|
12288
|
+
return null;
|
|
12289
|
+
}
|
|
12290
|
+
if ((assetType === "erc721" || assetType === "erc1155") && !params.tokenId) {
|
|
12291
|
+
setError("Token ID is required for NFT transfers");
|
|
12121
12292
|
return null;
|
|
12122
12293
|
}
|
|
12123
12294
|
setIsLoading(true);
|
|
12124
12295
|
setError(null);
|
|
12125
12296
|
setUserOpHash(null);
|
|
12126
12297
|
try {
|
|
12127
|
-
|
|
12298
|
+
let callTarget;
|
|
12299
|
+
let valueWei;
|
|
12300
|
+
let innerData;
|
|
12301
|
+
switch (assetType) {
|
|
12302
|
+
case "native": {
|
|
12303
|
+
callTarget = params.to;
|
|
12304
|
+
valueWei = parseEther2(params.value).toString();
|
|
12305
|
+
innerData = params.data || "0x";
|
|
12306
|
+
break;
|
|
12307
|
+
}
|
|
12308
|
+
case "erc20":
|
|
12309
|
+
case "erc3643": {
|
|
12310
|
+
const decimals = params.decimals ?? 18;
|
|
12311
|
+
const amount = parseUnits(params.value, decimals);
|
|
12312
|
+
callTarget = params.tokenAddress;
|
|
12313
|
+
valueWei = "0";
|
|
12314
|
+
innerData = encodeFunctionData2({
|
|
12315
|
+
abi: ERC20_TRANSFER_ABI,
|
|
12316
|
+
functionName: "transfer",
|
|
12317
|
+
args: [params.to, amount]
|
|
12318
|
+
});
|
|
12319
|
+
break;
|
|
12320
|
+
}
|
|
12321
|
+
case "erc721": {
|
|
12322
|
+
callTarget = params.tokenAddress;
|
|
12323
|
+
valueWei = "0";
|
|
12324
|
+
innerData = encodeFunctionData2({
|
|
12325
|
+
abi: ERC721_SAFE_TRANSFER_ABI,
|
|
12326
|
+
functionName: "safeTransferFrom",
|
|
12327
|
+
args: [address, params.to, BigInt(params.tokenId)]
|
|
12328
|
+
});
|
|
12329
|
+
break;
|
|
12330
|
+
}
|
|
12331
|
+
case "erc1155": {
|
|
12332
|
+
const amount = params.value ? BigInt(params.value) : 1n;
|
|
12333
|
+
callTarget = params.tokenAddress;
|
|
12334
|
+
valueWei = "0";
|
|
12335
|
+
innerData = encodeFunctionData2({
|
|
12336
|
+
abi: ERC1155_SAFE_TRANSFER_ABI,
|
|
12337
|
+
functionName: "safeTransferFrom",
|
|
12338
|
+
args: [address, params.to, BigInt(params.tokenId), amount, "0x"]
|
|
12339
|
+
});
|
|
12340
|
+
break;
|
|
12341
|
+
}
|
|
12342
|
+
default: {
|
|
12343
|
+
setError(`Unsupported asset type: ${assetType}`);
|
|
12344
|
+
return null;
|
|
12345
|
+
}
|
|
12346
|
+
}
|
|
12128
12347
|
const hash = await sendUserOperation(
|
|
12129
12348
|
session,
|
|
12130
|
-
|
|
12349
|
+
callTarget,
|
|
12131
12350
|
valueWei,
|
|
12132
|
-
|
|
12351
|
+
innerData,
|
|
12133
12352
|
"standard",
|
|
12134
12353
|
"v0.7"
|
|
12135
12354
|
);
|
|
@@ -12145,7 +12364,7 @@ function useSendTransaction() {
|
|
|
12145
12364
|
},
|
|
12146
12365
|
[session, address]
|
|
12147
12366
|
);
|
|
12148
|
-
const reset =
|
|
12367
|
+
const reset = useCallback17(() => {
|
|
12149
12368
|
setError(null);
|
|
12150
12369
|
setUserOpHash(null);
|
|
12151
12370
|
setIsLoading(false);
|
|
@@ -12159,185 +12378,331 @@ function useSendTransaction() {
|
|
|
12159
12378
|
};
|
|
12160
12379
|
}
|
|
12161
12380
|
|
|
12162
|
-
// src/
|
|
12381
|
+
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
12163
12382
|
init_base();
|
|
12164
|
-
|
|
12165
|
-
|
|
12166
|
-
import {
|
|
12167
|
-
|
|
12168
|
-
|
|
12169
|
-
|
|
12170
|
-
|
|
12171
|
-
|
|
12172
|
-
|
|
12173
|
-
|
|
12174
|
-
|
|
12175
|
-
|
|
12176
|
-
|
|
12177
|
-
|
|
12178
|
-
|
|
12179
|
-
|
|
12180
|
-
|
|
12181
|
-
|
|
12182
|
-
|
|
12183
|
-
|
|
12184
|
-
|
|
12185
|
-
|
|
12186
|
-
|
|
12187
|
-
|
|
12188
|
-
|
|
12189
|
-
|
|
12190
|
-
|
|
12191
|
-
|
|
12192
|
-
const
|
|
12193
|
-
|
|
12194
|
-
|
|
12195
|
-
|
|
12196
|
-
|
|
12197
|
-
|
|
12198
|
-
|
|
12199
|
-
|
|
12200
|
-
|
|
12201
|
-
|
|
12202
|
-
|
|
12203
|
-
|
|
12204
|
-
|
|
12205
|
-
symbol: "LUMIA",
|
|
12206
|
-
balance: nativeBalance.value.toString(),
|
|
12207
|
-
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
12208
|
-
decimals: 18
|
|
12209
|
-
});
|
|
12210
|
-
}
|
|
12211
|
-
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
12212
|
-
tokenBalances.forEach((balance, index) => {
|
|
12213
|
-
const token = COMMON_TOKENS[index];
|
|
12214
|
-
if (balance.status === "success" && balance.result) {
|
|
12215
|
-
const balanceValue = balance.result;
|
|
12216
|
-
const formattedBalance = formatUnits4(balanceValue, token.decimals);
|
|
12217
|
-
assets.push({
|
|
12218
|
-
type: "erc20",
|
|
12219
|
-
address: token.address,
|
|
12220
|
-
name: token.name,
|
|
12221
|
-
symbol: token.symbol,
|
|
12222
|
-
balance: balanceValue.toString(),
|
|
12223
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
12224
|
-
decimals: token.decimals,
|
|
12225
|
-
logo: token.logo
|
|
12226
|
-
});
|
|
12383
|
+
|
|
12384
|
+
// src/internal/components/SendRecieveMenu/AssetSelector.tsx
|
|
12385
|
+
import { ChevronDown, Image as ImageIcon2, Shield as Shield2, Sparkles as Sparkles2, X as X4 } from "lucide-react";
|
|
12386
|
+
import { useState as useState18, useRef as useRef14, useEffect as useEffect25 } from "react";
|
|
12387
|
+
import { formatUnits as formatUnits4 } from "viem";
|
|
12388
|
+
import { Fragment as Fragment24, jsx as jsx64, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
12389
|
+
function isNftAsset2(asset) {
|
|
12390
|
+
return asset.type === "erc721" || asset.type === "erc1155";
|
|
12391
|
+
}
|
|
12392
|
+
function isSecurityToken2(asset) {
|
|
12393
|
+
return asset.type === "erc3643";
|
|
12394
|
+
}
|
|
12395
|
+
function getAssetBalance(asset) {
|
|
12396
|
+
if (isNftAsset2(asset)) {
|
|
12397
|
+
return "1";
|
|
12398
|
+
}
|
|
12399
|
+
const balance = Number(formatUnits4(BigInt(asset?.balance || "0"), asset?.decimals || 18));
|
|
12400
|
+
if (balance >= 1e6) {
|
|
12401
|
+
return `${(balance / 1e6).toFixed(2)}M`;
|
|
12402
|
+
}
|
|
12403
|
+
if (balance >= 1e3) {
|
|
12404
|
+
return `${(balance / 1e3).toFixed(2)}K`;
|
|
12405
|
+
}
|
|
12406
|
+
return balance.toFixed(4);
|
|
12407
|
+
}
|
|
12408
|
+
function AssetIcon({ asset, size = "sm" }) {
|
|
12409
|
+
const [imageError, setImageError] = useState18(false);
|
|
12410
|
+
const sizeClasses = size === "sm" ? "w-6 h-6" : "w-10 h-10";
|
|
12411
|
+
const textSize = size === "sm" ? "text-xs" : "text-sm";
|
|
12412
|
+
const isNft = isNftAsset2(asset);
|
|
12413
|
+
const nftImage = asset.image || asset.nftMetadata?.image;
|
|
12414
|
+
const isSecurity = isSecurityToken2(asset);
|
|
12415
|
+
if (isNft && nftImage && !imageError) {
|
|
12416
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-[var(--l-pass-el-bdrs)] overflow-hidden relative flex-shrink-0"), children: [
|
|
12417
|
+
/* @__PURE__ */ jsx64(
|
|
12418
|
+
"img",
|
|
12419
|
+
{
|
|
12420
|
+
src: nftImage,
|
|
12421
|
+
alt: asset.nftMetadata?.name || asset.name,
|
|
12422
|
+
className: "w-full h-full object-cover",
|
|
12423
|
+
onError: () => setImageError(true)
|
|
12227
12424
|
}
|
|
12228
|
-
|
|
12229
|
-
|
|
12230
|
-
|
|
12425
|
+
),
|
|
12426
|
+
/* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-[var(--l-pass-accent)] flex items-center justify-center", children: /* @__PURE__ */ jsx64(Sparkles2, { className: "w-2 h-2 text-[var(--l-pass-fg-inverted)]" }) })
|
|
12427
|
+
] });
|
|
12428
|
+
}
|
|
12429
|
+
if (isNft) {
|
|
12430
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-fg)] flex items-center justify-center relative flex-shrink-0"), children: [
|
|
12431
|
+
/* @__PURE__ */ jsx64(ImageIcon2, { className: cn(size === "sm" ? "w-3 h-3" : "w-5 h-5", "text-[var(--l-pass-fg-inverted)]") }),
|
|
12432
|
+
/* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-[var(--l-pass-accent)] flex items-center justify-center", children: /* @__PURE__ */ jsx64(Sparkles2, { className: "w-2 h-2 text-[var(--l-pass-fg-inverted)]" }) })
|
|
12433
|
+
] });
|
|
12434
|
+
}
|
|
12435
|
+
if (asset.logo && !imageError) {
|
|
12436
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-full overflow-hidden relative flex-shrink-0"), children: [
|
|
12437
|
+
/* @__PURE__ */ jsx64(
|
|
12438
|
+
"img",
|
|
12439
|
+
{
|
|
12440
|
+
src: asset.logo,
|
|
12441
|
+
alt: asset.symbol,
|
|
12442
|
+
className: "w-full h-full object-cover",
|
|
12443
|
+
onError: () => setImageError(true)
|
|
12444
|
+
}
|
|
12445
|
+
),
|
|
12446
|
+
isSecurity && /* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-amber-500 flex items-center justify-center", children: /* @__PURE__ */ jsx64(Shield2, { className: "w-2 h-2 text-white" }) })
|
|
12447
|
+
] });
|
|
12448
|
+
}
|
|
12449
|
+
return /* @__PURE__ */ jsxs57("div", { className: cn(sizeClasses, "rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center relative flex-shrink-0"), children: [
|
|
12450
|
+
/* @__PURE__ */ jsx64("span", { className: cn("text-[var(--l-pass-fg-inverted)] font-bold", textSize), children: asset.symbol.charAt(0) }),
|
|
12451
|
+
isSecurity && /* @__PURE__ */ jsx64("div", { className: "absolute -top-0.5 -right-0.5 w-3 h-3 rounded-full bg-amber-500 flex items-center justify-center", children: /* @__PURE__ */ jsx64(Shield2, { className: "w-2 h-2 text-white" }) })
|
|
12452
|
+
] });
|
|
12453
|
+
}
|
|
12454
|
+
function AssetListItem({ asset, onSelect, isSelected }) {
|
|
12455
|
+
const isNft = isNftAsset2(asset);
|
|
12456
|
+
const handleClick = (e) => {
|
|
12457
|
+
e.preventDefault();
|
|
12458
|
+
e.stopPropagation();
|
|
12459
|
+
onSelect();
|
|
12231
12460
|
};
|
|
12232
|
-
|
|
12233
|
-
|
|
12234
|
-
|
|
12235
|
-
|
|
12236
|
-
|
|
12237
|
-
|
|
12461
|
+
return /* @__PURE__ */ jsxs57(
|
|
12462
|
+
"button",
|
|
12463
|
+
{
|
|
12464
|
+
type: "button",
|
|
12465
|
+
className: cn(
|
|
12466
|
+
"w-full flex items-center gap-3 p-3 rounded-[var(--l-pass-el-bdrs)]",
|
|
12467
|
+
"hover:bg-[var(--l-pass-bg-secondary)] transition-colors cursor-pointer",
|
|
12468
|
+
isSelected && "bg-[var(--l-pass-bg-secondary)]"
|
|
12469
|
+
),
|
|
12470
|
+
onClick: handleClick,
|
|
12471
|
+
children: [
|
|
12472
|
+
/* @__PURE__ */ jsx64(AssetIcon, { asset, size: "md" }),
|
|
12473
|
+
/* @__PURE__ */ jsxs57("div", { className: "flex-1 min-w-0 text-left", children: [
|
|
12474
|
+
/* @__PURE__ */ jsx64("div", { className: "font-semibold text-[var(--l-pass-fg)] truncate", children: isNft ? asset.nftMetadata?.name || asset.name : asset.name }),
|
|
12475
|
+
/* @__PURE__ */ jsx64("div", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: isNft ? /* @__PURE__ */ jsxs57(Fragment24, { children: [
|
|
12476
|
+
asset.symbol,
|
|
12477
|
+
asset.tokenId && /* @__PURE__ */ jsxs57("span", { className: "ml-1", children: [
|
|
12478
|
+
"#",
|
|
12479
|
+
asset.tokenId.length > 6 ? `${asset.tokenId.slice(0, 4)}...` : asset.tokenId
|
|
12480
|
+
] })
|
|
12481
|
+
] }) : /* @__PURE__ */ jsxs57(Fragment24, { children: [
|
|
12482
|
+
getAssetBalance(asset),
|
|
12483
|
+
" ",
|
|
12484
|
+
asset.symbol
|
|
12485
|
+
] }) })
|
|
12486
|
+
] })
|
|
12487
|
+
]
|
|
12238
12488
|
}
|
|
12239
|
-
|
|
12240
|
-
|
|
12241
|
-
|
|
12242
|
-
|
|
12243
|
-
|
|
12244
|
-
|
|
12245
|
-
|
|
12246
|
-
|
|
12247
|
-
|
|
12248
|
-
|
|
12249
|
-
|
|
12250
|
-
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
12251
|
-
logo: token.logo
|
|
12252
|
-
};
|
|
12489
|
+
);
|
|
12490
|
+
}
|
|
12491
|
+
function AssetSelector({ assets, selectedAsset, onSelect, disabled }) {
|
|
12492
|
+
const [isOpen, setIsOpen] = useState18(false);
|
|
12493
|
+
const dropdownRef = useRef14(null);
|
|
12494
|
+
const buttonRef = useRef14(null);
|
|
12495
|
+
useEffect25(() => {
|
|
12496
|
+
function handleClickOutside(event) {
|
|
12497
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target) && buttonRef.current && !buttonRef.current.contains(event.target)) {
|
|
12498
|
+
setIsOpen(false);
|
|
12499
|
+
}
|
|
12253
12500
|
}
|
|
12254
|
-
|
|
12501
|
+
if (isOpen) {
|
|
12502
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
12503
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
12504
|
+
}
|
|
12505
|
+
}, [isOpen]);
|
|
12506
|
+
const transferableAssets = assets.filter((asset) => {
|
|
12507
|
+
if (isNftAsset2(asset)) return true;
|
|
12508
|
+
const balance = BigInt(asset.balance || "0");
|
|
12509
|
+
return balance > 0n;
|
|
12510
|
+
});
|
|
12511
|
+
const nativeAssets = transferableAssets.filter((a) => a.type === "native");
|
|
12512
|
+
const tokenAssets = transferableAssets.filter((a) => a.type === "erc20");
|
|
12513
|
+
const securityAssets = transferableAssets.filter((a) => a.type === "erc3643");
|
|
12514
|
+
const nftAssets = transferableAssets.filter((a) => a.type === "erc721" || a.type === "erc1155");
|
|
12515
|
+
const handleSelect = (asset) => {
|
|
12516
|
+
onSelect(asset);
|
|
12517
|
+
setIsOpen(false);
|
|
12255
12518
|
};
|
|
12256
|
-
const
|
|
12257
|
-
|
|
12258
|
-
|
|
12259
|
-
|
|
12260
|
-
|
|
12519
|
+
const handleToggle = (e) => {
|
|
12520
|
+
e.preventDefault();
|
|
12521
|
+
e.stopPropagation();
|
|
12522
|
+
if (!disabled) {
|
|
12523
|
+
setIsOpen(!isOpen);
|
|
12524
|
+
}
|
|
12261
12525
|
};
|
|
12262
|
-
|
|
12263
|
-
|
|
12264
|
-
|
|
12265
|
-
|
|
12266
|
-
getTokenBalance,
|
|
12267
|
-
refreshBalances,
|
|
12268
|
-
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
12269
|
-
isConnected: !!address
|
|
12526
|
+
const handleClose = (e) => {
|
|
12527
|
+
e.preventDefault();
|
|
12528
|
+
e.stopPropagation();
|
|
12529
|
+
setIsOpen(false);
|
|
12270
12530
|
};
|
|
12271
|
-
|
|
12272
|
-
|
|
12273
|
-
const readContractsResult = useReadContracts({
|
|
12274
|
-
contracts: [
|
|
12275
|
-
{ address: tokenAddress, abi: erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
12276
|
-
{ address: tokenAddress, abi: erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
12277
|
-
{ address: tokenAddress, abi: erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
12278
|
-
]
|
|
12279
|
-
});
|
|
12280
|
-
const { data: tokenData, isLoading } = readContractsResult;
|
|
12281
|
-
if (!tokenData || isLoading) {
|
|
12282
|
-
return { isLoading, tokenInfo: null };
|
|
12531
|
+
if (!selectedAsset) {
|
|
12532
|
+
return null;
|
|
12283
12533
|
}
|
|
12284
|
-
const
|
|
12285
|
-
|
|
12286
|
-
|
|
12287
|
-
|
|
12288
|
-
|
|
12289
|
-
|
|
12290
|
-
|
|
12291
|
-
|
|
12292
|
-
|
|
12534
|
+
const isNft = isNftAsset2(selectedAsset);
|
|
12535
|
+
return /* @__PURE__ */ jsxs57("div", { className: "relative", style: { zIndex: isOpen ? 100 : "auto" }, children: [
|
|
12536
|
+
/* @__PURE__ */ jsxs57(
|
|
12537
|
+
"button",
|
|
12538
|
+
{
|
|
12539
|
+
ref: buttonRef,
|
|
12540
|
+
type: "button",
|
|
12541
|
+
disabled,
|
|
12542
|
+
className: cn(
|
|
12543
|
+
"flex items-center gap-1.5 px-2 py-1 rounded-[var(--l-pass-el-bdrs)]",
|
|
12544
|
+
"bg-[var(--l-pass-bg)] hover:bg-[var(--l-pass-bg-secondary)]",
|
|
12545
|
+
"transition-colors cursor-pointer",
|
|
12546
|
+
disabled && "opacity-50 cursor-not-allowed"
|
|
12547
|
+
),
|
|
12548
|
+
onClick: handleToggle,
|
|
12549
|
+
children: [
|
|
12550
|
+
/* @__PURE__ */ jsx64(AssetIcon, { asset: selectedAsset, size: "sm" }),
|
|
12551
|
+
/* @__PURE__ */ jsx64("span", { className: "text-sm font-semibold text-[var(--l-pass-fg)] max-w-[80px] truncate", children: isNft ? selectedAsset.nftMetadata?.name || selectedAsset.symbol : selectedAsset.symbol }),
|
|
12552
|
+
/* @__PURE__ */ jsx64(ChevronDown, { className: cn("w-4 h-4 text-[var(--l-pass-fg-muted)] transition-transform", isOpen && "rotate-180") })
|
|
12553
|
+
]
|
|
12293
12554
|
}
|
|
12294
|
-
|
|
12295
|
-
|
|
12296
|
-
|
|
12297
|
-
|
|
12298
|
-
|
|
12299
|
-
|
|
12300
|
-
|
|
12301
|
-
|
|
12302
|
-
|
|
12303
|
-
|
|
12304
|
-
|
|
12305
|
-
|
|
12306
|
-
|
|
12307
|
-
|
|
12308
|
-
|
|
12309
|
-
|
|
12310
|
-
|
|
12311
|
-
|
|
12312
|
-
|
|
12313
|
-
|
|
12314
|
-
|
|
12315
|
-
|
|
12316
|
-
|
|
12317
|
-
|
|
12318
|
-
|
|
12319
|
-
|
|
12320
|
-
|
|
12555
|
+
),
|
|
12556
|
+
isOpen && /* @__PURE__ */ jsxs57(
|
|
12557
|
+
"div",
|
|
12558
|
+
{
|
|
12559
|
+
ref: dropdownRef,
|
|
12560
|
+
className: cn(
|
|
12561
|
+
"absolute left-0 bottom-full mb-2",
|
|
12562
|
+
"w-72 max-h-64 overflow-y-auto",
|
|
12563
|
+
"bg-[var(--l-pass-bg)] border border-[var(--l-pass-bd)]",
|
|
12564
|
+
"rounded-[var(--l-pass-el-bdrs)] shadow-lg"
|
|
12565
|
+
),
|
|
12566
|
+
style: { zIndex: 100 },
|
|
12567
|
+
onClick: (e) => e.stopPropagation(),
|
|
12568
|
+
children: [
|
|
12569
|
+
/* @__PURE__ */ jsxs57("div", { className: "sticky top-0 flex items-center justify-between px-3 py-2 bg-[var(--l-pass-bg)] border-b border-[var(--l-pass-bd)]", children: [
|
|
12570
|
+
/* @__PURE__ */ jsx64("span", { className: "text-sm font-semibold text-[var(--l-pass-fg)]", children: "Select Asset" }),
|
|
12571
|
+
/* @__PURE__ */ jsx64(Button, { variant: "ghost", size: "icon", onClick: handleClose, children: /* @__PURE__ */ jsx64(X4, { className: "w-4 h-4" }) })
|
|
12572
|
+
] }),
|
|
12573
|
+
/* @__PURE__ */ jsxs57("div", { className: "p-2", children: [
|
|
12574
|
+
nativeAssets.length > 0 && /* @__PURE__ */ jsx64(Fragment24, { children: nativeAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12575
|
+
AssetListItem,
|
|
12576
|
+
{
|
|
12577
|
+
asset,
|
|
12578
|
+
onSelect: () => handleSelect(asset),
|
|
12579
|
+
isSelected: selectedAsset?.type === asset.type && selectedAsset?.symbol === asset.symbol
|
|
12580
|
+
},
|
|
12581
|
+
`native-${asset.symbol}`
|
|
12582
|
+
)) }),
|
|
12583
|
+
tokenAssets.length > 0 && /* @__PURE__ */ jsxs57(Fragment24, { children: [
|
|
12584
|
+
/* @__PURE__ */ jsx64("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "Tokens" }),
|
|
12585
|
+
tokenAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12586
|
+
AssetListItem,
|
|
12587
|
+
{
|
|
12588
|
+
asset,
|
|
12589
|
+
onSelect: () => handleSelect(asset),
|
|
12590
|
+
isSelected: selectedAsset?.address === asset.address && selectedAsset?.type === asset.type
|
|
12591
|
+
},
|
|
12592
|
+
`token-${asset.address}`
|
|
12593
|
+
))
|
|
12594
|
+
] }),
|
|
12595
|
+
securityAssets.length > 0 && /* @__PURE__ */ jsxs57(Fragment24, { children: [
|
|
12596
|
+
/* @__PURE__ */ jsx64("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "Security Tokens" }),
|
|
12597
|
+
securityAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12598
|
+
AssetListItem,
|
|
12599
|
+
{
|
|
12600
|
+
asset,
|
|
12601
|
+
onSelect: () => handleSelect(asset),
|
|
12602
|
+
isSelected: selectedAsset?.address === asset.address && selectedAsset?.type === asset.type
|
|
12603
|
+
},
|
|
12604
|
+
`security-${asset.address}`
|
|
12605
|
+
))
|
|
12606
|
+
] }),
|
|
12607
|
+
nftAssets.length > 0 && /* @__PURE__ */ jsxs57(Fragment24, { children: [
|
|
12608
|
+
/* @__PURE__ */ jsx64("div", { className: "px-3 py-1 text-xs text-[var(--l-pass-fg-muted)] uppercase tracking-wider mt-2", children: "NFTs" }),
|
|
12609
|
+
nftAssets.map((asset) => /* @__PURE__ */ jsx64(
|
|
12610
|
+
AssetListItem,
|
|
12611
|
+
{
|
|
12612
|
+
asset,
|
|
12613
|
+
onSelect: () => handleSelect(asset),
|
|
12614
|
+
isSelected: selectedAsset?.address === asset.address && selectedAsset?.tokenId === asset.tokenId
|
|
12615
|
+
},
|
|
12616
|
+
`nft-${asset.address}-${asset.tokenId}`
|
|
12617
|
+
))
|
|
12618
|
+
] }),
|
|
12619
|
+
transferableAssets.length === 0 && /* @__PURE__ */ jsx64("div", { className: "p-4 text-center text-sm text-[var(--l-pass-fg-muted)]", children: "No assets available" })
|
|
12620
|
+
] })
|
|
12621
|
+
]
|
|
12622
|
+
}
|
|
12623
|
+
)
|
|
12624
|
+
] });
|
|
12321
12625
|
}
|
|
12322
12626
|
|
|
12323
12627
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
12324
|
-
|
|
12325
|
-
|
|
12628
|
+
import { Fragment as Fragment25, jsx as jsx65, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
12629
|
+
function isNftAsset3(asset) {
|
|
12630
|
+
if (!asset) return false;
|
|
12631
|
+
return asset.type === "erc721" || asset.type === "erc1155";
|
|
12632
|
+
}
|
|
12633
|
+
function isSecurityToken3(asset) {
|
|
12634
|
+
if (!asset) return false;
|
|
12635
|
+
return asset.type === "erc3643";
|
|
12636
|
+
}
|
|
12637
|
+
function getAssetBalance2(asset) {
|
|
12638
|
+
if (!asset) return 0;
|
|
12639
|
+
if (isNftAsset3(asset)) return 1;
|
|
12640
|
+
return Number(formatUnits5(BigInt(asset.balance || "0"), asset.decimals || 18));
|
|
12641
|
+
}
|
|
12642
|
+
function formatBalance(balance, decimals = 4) {
|
|
12643
|
+
if (balance >= 1e6) {
|
|
12644
|
+
return `${(balance / 1e6).toFixed(2)}M`;
|
|
12645
|
+
}
|
|
12646
|
+
if (balance >= 1e3) {
|
|
12647
|
+
return `${(balance / 1e3).toFixed(2)}K`;
|
|
12648
|
+
}
|
|
12649
|
+
return balance.toFixed(decimals);
|
|
12650
|
+
}
|
|
12651
|
+
function NftDisplayCard({ asset }) {
|
|
12652
|
+
const [imageError, setImageError] = useState19(false);
|
|
12653
|
+
const nftImage = asset.image || asset.nftMetadata?.image;
|
|
12654
|
+
return /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-3 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
12655
|
+
nftImage && !imageError ? /* @__PURE__ */ jsx65(
|
|
12656
|
+
"img",
|
|
12657
|
+
{
|
|
12658
|
+
src: nftImage,
|
|
12659
|
+
alt: asset.nftMetadata?.name || asset.name,
|
|
12660
|
+
className: "w-16 h-16 rounded-[var(--l-pass-el-bdrs)] object-cover",
|
|
12661
|
+
onError: () => setImageError(true)
|
|
12662
|
+
}
|
|
12663
|
+
) : /* @__PURE__ */ jsx65("div", { className: "w-16 h-16 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-fg)] flex items-center justify-center", children: /* @__PURE__ */ jsx65(ImageIcon3, { className: "w-8 h-8 text-[var(--l-pass-fg-inverted)]" }) }),
|
|
12664
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex-1 min-w-0", children: [
|
|
12665
|
+
/* @__PURE__ */ jsx65("div", { className: "font-semibold text-[var(--l-pass-fg)] truncate", children: asset.nftMetadata?.name || asset.name }),
|
|
12666
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
12667
|
+
asset.symbol,
|
|
12668
|
+
asset.tokenId && /* @__PURE__ */ jsxs58("span", { className: "ml-1", children: [
|
|
12669
|
+
"#",
|
|
12670
|
+
asset.tokenId.length > 8 ? `${asset.tokenId.slice(0, 6)}...` : asset.tokenId
|
|
12671
|
+
] })
|
|
12672
|
+
] }),
|
|
12673
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-xs text-[var(--l-pass-fg-muted)] mt-1 flex items-center gap-1", children: [
|
|
12674
|
+
/* @__PURE__ */ jsx65(Sparkles3, { className: "w-3 h-3" }),
|
|
12675
|
+
/* @__PURE__ */ jsx65("span", { children: asset.type === "erc721" ? "ERC-721" : "ERC-1155" })
|
|
12676
|
+
] })
|
|
12677
|
+
] })
|
|
12678
|
+
] });
|
|
12679
|
+
}
|
|
12326
12680
|
function SendLumiaMenu() {
|
|
12327
12681
|
const page = useLayoutDataStore((st) => st.page);
|
|
12328
12682
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12329
12683
|
const open = page === "send";
|
|
12330
12684
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12331
|
-
const {
|
|
12332
|
-
|
|
12333
|
-
|
|
12334
|
-
|
|
12335
|
-
|
|
12685
|
+
const {
|
|
12686
|
+
assets,
|
|
12687
|
+
refreshBalances,
|
|
12688
|
+
isLoading: isAssetsLoading
|
|
12689
|
+
} = useBlockscoutAssets({
|
|
12690
|
+
address
|
|
12336
12691
|
});
|
|
12337
|
-
const
|
|
12338
|
-
const [
|
|
12339
|
-
const [
|
|
12340
|
-
const [
|
|
12692
|
+
const { sendTransaction, isLoading, error, userOpHash, reset } = useSendTransaction();
|
|
12693
|
+
const [recipient, setRecipient] = useState19("");
|
|
12694
|
+
const [amount, setAmount] = useState19("");
|
|
12695
|
+
const [selectedAsset, setSelectedAsset] = useState19(null);
|
|
12696
|
+
const [txStep, setTxStep] = useState19("input");
|
|
12697
|
+
const [validationError, setValidationError] = useState19(null);
|
|
12698
|
+
useEffect26(() => {
|
|
12699
|
+
if (assets.length > 0 && !selectedAsset) {
|
|
12700
|
+
const nativeAsset = assets.find((a) => a.type === "native");
|
|
12701
|
+
if (nativeAsset) {
|
|
12702
|
+
setSelectedAsset(nativeAsset);
|
|
12703
|
+
}
|
|
12704
|
+
}
|
|
12705
|
+
}, [assets, selectedAsset]);
|
|
12341
12706
|
const isNicknameInput = looksLikeNickname(recipient);
|
|
12342
12707
|
const {
|
|
12343
12708
|
resolvedAddress,
|
|
@@ -12346,22 +12711,46 @@ function SendLumiaMenu() {
|
|
|
12346
12711
|
isWalletNotSetup,
|
|
12347
12712
|
isFrozen,
|
|
12348
12713
|
isFingerprintVerified,
|
|
12349
|
-
fingerprintVerification,
|
|
12350
12714
|
data: nicknameData
|
|
12351
12715
|
} = useNicknameResolve(recipient, {
|
|
12352
12716
|
enabled: isNicknameInput,
|
|
12353
12717
|
chainId: lumiaBeam.id
|
|
12354
12718
|
});
|
|
12355
12719
|
const effectiveAddress = isNicknameInput ? resolvedAddress : recipient;
|
|
12356
|
-
const
|
|
12357
|
-
const
|
|
12358
|
-
|
|
12720
|
+
const balance = getAssetBalance2(selectedAsset);
|
|
12721
|
+
const isNft = isNftAsset3(selectedAsset);
|
|
12722
|
+
const isSecurity = isSecurityToken3(selectedAsset);
|
|
12723
|
+
const complianceAmount = useMemo6(() => {
|
|
12724
|
+
if (!isSecurity || !amount || !selectedAsset) return void 0;
|
|
12725
|
+
try {
|
|
12726
|
+
return parseUnits2(amount, selectedAsset.decimals || 18);
|
|
12727
|
+
} catch {
|
|
12728
|
+
return void 0;
|
|
12729
|
+
}
|
|
12730
|
+
}, [isSecurity, amount, selectedAsset]);
|
|
12731
|
+
const {
|
|
12732
|
+
canTransfer: erc3643CanTransfer,
|
|
12733
|
+
isLoading: isComplianceLoading,
|
|
12734
|
+
error: complianceError
|
|
12735
|
+
} = useErc3643Compliance({
|
|
12736
|
+
tokenAddress: selectedAsset?.address,
|
|
12737
|
+
to: effectiveAddress,
|
|
12738
|
+
amount: complianceAmount,
|
|
12739
|
+
enabled: isSecurity && !!effectiveAddress && !!complianceAmount
|
|
12740
|
+
});
|
|
12741
|
+
useEffect26(() => {
|
|
12359
12742
|
if (open) {
|
|
12360
12743
|
setTxStep("input");
|
|
12361
12744
|
setValidationError(null);
|
|
12745
|
+
setRecipient("");
|
|
12746
|
+
setAmount("");
|
|
12362
12747
|
reset();
|
|
12748
|
+
const nativeAsset = assets.find((a) => a.type === "native");
|
|
12749
|
+
if (nativeAsset) {
|
|
12750
|
+
setSelectedAsset(nativeAsset);
|
|
12751
|
+
}
|
|
12363
12752
|
}
|
|
12364
|
-
}, [open, reset]);
|
|
12753
|
+
}, [open, reset, assets]);
|
|
12365
12754
|
const validateInput = () => {
|
|
12366
12755
|
if (!recipient) {
|
|
12367
12756
|
setValidationError("Please enter a recipient address or @nickname");
|
|
@@ -12396,14 +12785,34 @@ function SendLumiaMenu() {
|
|
|
12396
12785
|
setValidationError("Cannot send to yourself");
|
|
12397
12786
|
return false;
|
|
12398
12787
|
}
|
|
12399
|
-
|
|
12400
|
-
|
|
12401
|
-
setValidationError("Please enter a valid amount");
|
|
12788
|
+
if (!selectedAsset) {
|
|
12789
|
+
setValidationError("Please select an asset to send");
|
|
12402
12790
|
return false;
|
|
12403
12791
|
}
|
|
12404
|
-
if (
|
|
12405
|
-
|
|
12406
|
-
|
|
12792
|
+
if (!isNft) {
|
|
12793
|
+
const amountNum = parseFloat(amount);
|
|
12794
|
+
if (!amount || isNaN(amountNum) || amountNum <= 0) {
|
|
12795
|
+
setValidationError("Please enter a valid amount");
|
|
12796
|
+
return false;
|
|
12797
|
+
}
|
|
12798
|
+
if (amountNum > balance) {
|
|
12799
|
+
setValidationError("Insufficient balance");
|
|
12800
|
+
return false;
|
|
12801
|
+
}
|
|
12802
|
+
}
|
|
12803
|
+
if (isSecurity) {
|
|
12804
|
+
if (isComplianceLoading) {
|
|
12805
|
+
setValidationError("Checking compliance...");
|
|
12806
|
+
return false;
|
|
12807
|
+
}
|
|
12808
|
+
if (complianceError) {
|
|
12809
|
+
setValidationError(complianceError);
|
|
12810
|
+
return false;
|
|
12811
|
+
}
|
|
12812
|
+
if (erc3643CanTransfer === false) {
|
|
12813
|
+
setValidationError("Transfer not allowed by token compliance rules");
|
|
12814
|
+
return false;
|
|
12815
|
+
}
|
|
12407
12816
|
}
|
|
12408
12817
|
setValidationError(null);
|
|
12409
12818
|
return true;
|
|
@@ -12413,34 +12822,51 @@ function SendLumiaMenu() {
|
|
|
12413
12822
|
setTxStep("confirm");
|
|
12414
12823
|
};
|
|
12415
12824
|
const handleConfirm = async () => {
|
|
12416
|
-
if (!effectiveAddress) return;
|
|
12825
|
+
if (!effectiveAddress || !selectedAsset) return;
|
|
12417
12826
|
setTxStep("pending");
|
|
12827
|
+
const txAmount = isNft ? "1" : amount;
|
|
12418
12828
|
const hash = await sendTransaction({
|
|
12419
12829
|
to: effectiveAddress,
|
|
12420
|
-
value:
|
|
12830
|
+
value: txAmount,
|
|
12831
|
+
assetType: selectedAsset.type,
|
|
12832
|
+
tokenAddress: selectedAsset.address,
|
|
12833
|
+
tokenId: selectedAsset.tokenId,
|
|
12834
|
+
decimals: selectedAsset.decimals
|
|
12421
12835
|
});
|
|
12422
12836
|
if (hash) {
|
|
12423
12837
|
setTxStep("success");
|
|
12424
|
-
setTimeout(() =>
|
|
12425
|
-
refetchBalance();
|
|
12426
|
-
}, 2e3);
|
|
12838
|
+
setTimeout(() => refreshBalances(), 3e3);
|
|
12427
12839
|
} else {
|
|
12428
12840
|
setTxStep("input");
|
|
12429
12841
|
}
|
|
12430
12842
|
};
|
|
12431
12843
|
const handleMaxAmount = () => {
|
|
12432
|
-
|
|
12433
|
-
|
|
12844
|
+
if (!selectedAsset || isNft) return;
|
|
12845
|
+
if (selectedAsset.type === "native") {
|
|
12846
|
+
const maxAmount = Math.max(0, balance - 1e-3);
|
|
12847
|
+
setAmount(maxAmount.toFixed(6));
|
|
12848
|
+
} else {
|
|
12849
|
+
setAmount(formatUnits5(BigInt(selectedAsset.balance || "0"), selectedAsset.decimals || 18));
|
|
12850
|
+
}
|
|
12851
|
+
};
|
|
12852
|
+
const handleAssetSelect = (asset) => {
|
|
12853
|
+
setSelectedAsset(asset);
|
|
12854
|
+
setAmount("");
|
|
12434
12855
|
};
|
|
12435
|
-
|
|
12436
|
-
|
|
12437
|
-
|
|
12438
|
-
|
|
12856
|
+
const getPageTitle = () => {
|
|
12857
|
+
if (!selectedAsset) return "Send";
|
|
12858
|
+
if (isNft) return `Send NFT`;
|
|
12859
|
+
return `Send ${selectedAsset.symbol}`;
|
|
12860
|
+
};
|
|
12861
|
+
return /* @__PURE__ */ jsxs58("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
12862
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
12863
|
+
txStep === "input" && /* @__PURE__ */ jsx65(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx65(ArrowLeft12, { className: "h-4 w-4" }) }),
|
|
12864
|
+
/* @__PURE__ */ jsx65("span", { className: "text-xl font-semibold", children: getPageTitle() })
|
|
12439
12865
|
] }),
|
|
12440
|
-
txStep === "input" && /* @__PURE__ */
|
|
12441
|
-
/* @__PURE__ */
|
|
12442
|
-
/* @__PURE__ */
|
|
12443
|
-
/* @__PURE__ */
|
|
12866
|
+
txStep === "input" && /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
12867
|
+
/* @__PURE__ */ jsxs58("div", { className: "w-full flex flex-col gap-2", children: [
|
|
12868
|
+
/* @__PURE__ */ jsx65("span", { className: "block text-sm font-medium mb-2 text-[var(--l-pass-fg-muted)]", children: "Recipient" }),
|
|
12869
|
+
/* @__PURE__ */ jsx65(
|
|
12444
12870
|
Input,
|
|
12445
12871
|
{
|
|
12446
12872
|
Icon: isNicknameInput ? AtSign : Wallet3,
|
|
@@ -12448,159 +12874,247 @@ function SendLumiaMenu() {
|
|
|
12448
12874
|
value: recipient,
|
|
12449
12875
|
onChange: (e) => setRecipient(e.target.value),
|
|
12450
12876
|
placeholder: "0x... or @nickname",
|
|
12451
|
-
element: isNicknameInput && isResolving ? /* @__PURE__ */
|
|
12877
|
+
element: isNicknameInput && isResolving ? /* @__PURE__ */ jsx65(Loader22, { className: "w-4 h-4 animate-spin text-[var(--l-pass-fg-muted)]" }) : null
|
|
12452
12878
|
}
|
|
12453
12879
|
),
|
|
12454
|
-
isNicknameInput && resolvedAddress && !isResolving && nicknameData && /* @__PURE__ */
|
|
12455
|
-
nicknameData.avatarSvg ? /* @__PURE__ */
|
|
12456
|
-
"
|
|
12880
|
+
isNicknameInput && resolvedAddress && !isResolving && nicknameData && /* @__PURE__ */ jsxs58("div", { className: "flex items-start gap-3 p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-secondary)]", children: [
|
|
12881
|
+
nicknameData.avatarSvg ? /* @__PURE__ */ jsx65(
|
|
12882
|
+
"img",
|
|
12457
12883
|
{
|
|
12458
|
-
|
|
12459
|
-
|
|
12884
|
+
src: nicknameData.avatarSvg,
|
|
12885
|
+
alt: nicknameData.handle,
|
|
12886
|
+
className: "w-10 h-10 rounded-full object-cover flex-shrink-0"
|
|
12460
12887
|
}
|
|
12461
|
-
) : /* @__PURE__ */
|
|
12462
|
-
/* @__PURE__ */
|
|
12463
|
-
/* @__PURE__ */
|
|
12464
|
-
/* @__PURE__ */
|
|
12465
|
-
/* @__PURE__ */
|
|
12888
|
+
) : /* @__PURE__ */ jsx65("div", { className: "w-10 h-10 rounded-full bg-[var(--l-pass-bg)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx65(AtSign, { className: "w-5 h-5 text-[var(--l-pass-fg-muted)]" }) }),
|
|
12889
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
12890
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-success)]", children: [
|
|
12891
|
+
/* @__PURE__ */ jsx65(CheckCircle23, { className: "w-3 h-3 flex-shrink-0" }),
|
|
12892
|
+
/* @__PURE__ */ jsx65("span", { className: "font-mono", children: `${resolvedAddress.slice(0, 6)}...${resolvedAddress.slice(-4)}` })
|
|
12466
12893
|
] }),
|
|
12467
|
-
nicknameData.fingerprint && /* @__PURE__ */
|
|
12468
|
-
isFingerprintVerified ? /* @__PURE__ */
|
|
12469
|
-
/* @__PURE__ */
|
|
12894
|
+
nicknameData.fingerprint && /* @__PURE__ */ jsxs58("div", { className: `flex items-center gap-1.5 text-xs ${isFingerprintVerified ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-error)]"}`, children: [
|
|
12895
|
+
isFingerprintVerified ? /* @__PURE__ */ jsx65(Shield3, { className: "w-3 h-3 flex-shrink-0" }) : /* @__PURE__ */ jsx65(ShieldAlert, { className: "w-3 h-3 flex-shrink-0" }),
|
|
12896
|
+
/* @__PURE__ */ jsxs58("span", { children: [
|
|
12470
12897
|
"Fingerprint: ",
|
|
12471
12898
|
nicknameData.fingerprint
|
|
12472
12899
|
] }),
|
|
12473
|
-
/* @__PURE__ */
|
|
12900
|
+
/* @__PURE__ */ jsx65("span", { children: isFingerprintVerified ? "Verified" : "FAILED" })
|
|
12474
12901
|
] })
|
|
12475
12902
|
] })
|
|
12476
12903
|
] }),
|
|
12477
|
-
isNicknameInput && isFrozen && !isResolving && /* @__PURE__ */
|
|
12478
|
-
/* @__PURE__ */
|
|
12479
|
-
/* @__PURE__ */
|
|
12904
|
+
isNicknameInput && isFrozen && !isResolving && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-warning)]", children: [
|
|
12905
|
+
/* @__PURE__ */ jsx65(AlertTriangle4, { className: "w-3 h-3" }),
|
|
12906
|
+
/* @__PURE__ */ jsx65("span", { children: "This handle is frozen. Proceed with caution." })
|
|
12480
12907
|
] }),
|
|
12481
|
-
isNicknameInput && isWalletNotSetup && !isResolving && /* @__PURE__ */
|
|
12482
|
-
/* @__PURE__ */
|
|
12483
|
-
/* @__PURE__ */
|
|
12908
|
+
isNicknameInput && isWalletNotSetup && !isResolving && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-error)]", children: [
|
|
12909
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "w-3 h-3" }),
|
|
12910
|
+
/* @__PURE__ */ jsx65("span", { children: "This user has not set up their wallet yet" })
|
|
12484
12911
|
] }),
|
|
12485
|
-
isNicknameInput && isNotFound && !isResolving && /* @__PURE__ */
|
|
12486
|
-
/* @__PURE__ */
|
|
12487
|
-
/* @__PURE__ */
|
|
12912
|
+
isNicknameInput && isNotFound && !isResolving && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-bg-error)]", children: [
|
|
12913
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "w-3 h-3" }),
|
|
12914
|
+
/* @__PURE__ */ jsx65("span", { children: "Nickname not found" })
|
|
12488
12915
|
] })
|
|
12489
12916
|
] }),
|
|
12490
|
-
/* @__PURE__ */
|
|
12491
|
-
/* @__PURE__ */
|
|
12492
|
-
/* @__PURE__ */
|
|
12493
|
-
/* @__PURE__ */
|
|
12917
|
+
/* @__PURE__ */ jsxs58("div", { className: "w-full flex flex-col gap-2", children: [
|
|
12918
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between items-center", children: [
|
|
12919
|
+
/* @__PURE__ */ jsx65("span", { className: "block text-sm font-medium text-[var(--l-pass-fg-muted)]", children: isNft ? "Asset" : "Amount" }),
|
|
12920
|
+
!isNft && selectedAsset && /* @__PURE__ */ jsxs58("span", { className: "block text-sm text-[var(--l-pass-fg-muted)]", children: [
|
|
12494
12921
|
"Balance: ",
|
|
12495
|
-
balance
|
|
12496
|
-
"
|
|
12922
|
+
formatBalance(balance),
|
|
12923
|
+
" ",
|
|
12924
|
+
selectedAsset.symbol
|
|
12497
12925
|
] })
|
|
12498
12926
|
] }),
|
|
12499
|
-
|
|
12500
|
-
|
|
12501
|
-
{
|
|
12502
|
-
|
|
12503
|
-
|
|
12504
|
-
|
|
12505
|
-
|
|
12506
|
-
|
|
12507
|
-
|
|
12508
|
-
|
|
12509
|
-
|
|
12510
|
-
|
|
12927
|
+
isNft && selectedAsset ? (
|
|
12928
|
+
// NFT display card
|
|
12929
|
+
/* @__PURE__ */ jsx65(NftDisplayCard, { asset: selectedAsset })
|
|
12930
|
+
) : (
|
|
12931
|
+
// Fungible token amount input
|
|
12932
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex h-12 w-full rounded-[var(--l-pass-el-bdrs)] items-center gap-[var(--l-pass-gap)] px-[var(--l-pass-pd)] bg-[var(--l-pass-secondary)] hover:bg-[var(--l-pass-secondary-h)] transition-colors duration-200 ease-in-out focus-within:bg-[var(--l-pass-secondary-a)]", children: [
|
|
12933
|
+
selectedAsset && /* @__PURE__ */ jsx65(
|
|
12934
|
+
AssetSelector,
|
|
12935
|
+
{
|
|
12936
|
+
assets,
|
|
12937
|
+
selectedAsset,
|
|
12938
|
+
onSelect: handleAssetSelect,
|
|
12939
|
+
disabled: isAssetsLoading
|
|
12940
|
+
}
|
|
12941
|
+
),
|
|
12942
|
+
/* @__PURE__ */ jsx65(
|
|
12943
|
+
"input",
|
|
12944
|
+
{
|
|
12945
|
+
type: "number",
|
|
12946
|
+
value: amount,
|
|
12947
|
+
onChange: (e) => setAmount(e.target.value),
|
|
12948
|
+
placeholder: "0.0",
|
|
12949
|
+
step: "0.000001",
|
|
12950
|
+
className: cn(
|
|
12951
|
+
"text-[16px] text-[var(--l-pass-fg)] font-semibold",
|
|
12952
|
+
"placeholder:text-[var(--l-pass-fg-muted)]",
|
|
12953
|
+
"focus-visible:outline-none focus-visible:ring-0",
|
|
12954
|
+
"w-full h-full flex-1 border-0 bg-transparent px-0"
|
|
12955
|
+
)
|
|
12956
|
+
}
|
|
12957
|
+
),
|
|
12958
|
+
/* @__PURE__ */ jsx65(Button, { onClick: handleMaxAmount, variant: "ghost", size: "medium", children: "MAX" })
|
|
12959
|
+
] })
|
|
12960
|
+
),
|
|
12961
|
+
isNft && selectedAsset && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 mt-2", children: [
|
|
12962
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Change asset:" }),
|
|
12963
|
+
/* @__PURE__ */ jsx65(
|
|
12964
|
+
AssetSelector,
|
|
12965
|
+
{
|
|
12966
|
+
assets,
|
|
12967
|
+
selectedAsset,
|
|
12968
|
+
onSelect: handleAssetSelect,
|
|
12969
|
+
disabled: isAssetsLoading
|
|
12970
|
+
}
|
|
12971
|
+
)
|
|
12972
|
+
] })
|
|
12511
12973
|
] }),
|
|
12512
|
-
|
|
12513
|
-
|
|
12514
|
-
|
|
12974
|
+
isSecurity && effectiveAddress && amount && /* @__PURE__ */ jsx65("div", { className: cn(
|
|
12975
|
+
"flex items-center gap-2 p-3 rounded-[var(--l-pass-el-bdrs)]",
|
|
12976
|
+
isComplianceLoading && "bg-[var(--l-pass-bg-info)] text-[var(--l-pass-info)]",
|
|
12977
|
+
!isComplianceLoading && erc3643CanTransfer && "bg-[var(--l-pass-bg-success)] text-[var(--l-pass-success)]",
|
|
12978
|
+
!isComplianceLoading && !erc3643CanTransfer && "bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)]"
|
|
12979
|
+
), children: isComplianceLoading ? /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
12980
|
+
/* @__PURE__ */ jsx65(Loader22, { className: "h-4 w-4 animate-spin" }),
|
|
12981
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Checking compliance..." })
|
|
12982
|
+
] }) : erc3643CanTransfer ? /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
12983
|
+
/* @__PURE__ */ jsx65(CheckCircle23, { className: "h-4 w-4" }),
|
|
12984
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: "Transfer compliant" })
|
|
12985
|
+
] }) : /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
12986
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "h-4 w-4" }),
|
|
12987
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: complianceError || "Transfer not allowed" })
|
|
12988
|
+
] }) }),
|
|
12989
|
+
(validationError || error) && /* @__PURE__ */ jsxs58("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: [
|
|
12990
|
+
/* @__PURE__ */ jsx65(AlertCircle5, { className: "h-4 w-4" }),
|
|
12991
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm", children: validationError || error })
|
|
12515
12992
|
] }),
|
|
12516
|
-
/* @__PURE__ */
|
|
12993
|
+
/* @__PURE__ */ jsx65(Button, { onClick: handleSend, disabled: isLoading || isComplianceLoading, className: "w-full", size: "large", children: "Continue" })
|
|
12517
12994
|
] }),
|
|
12518
|
-
txStep === "confirm" && effectiveAddress && /* @__PURE__ */
|
|
12519
|
-
isNicknameInput && isFrozen && /* @__PURE__ */
|
|
12520
|
-
/* @__PURE__ */
|
|
12521
|
-
/* @__PURE__ */
|
|
12995
|
+
txStep === "confirm" && effectiveAddress && selectedAsset && /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
12996
|
+
isNicknameInput && isFrozen && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-warning)] text-[var(--l-pass-warning)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
12997
|
+
/* @__PURE__ */ jsx65(AlertTriangle4, { className: "h-4 w-4 flex-shrink-0" }),
|
|
12998
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm font-medium", children: "This handle is frozen. Proceed with caution." })
|
|
12522
12999
|
] }),
|
|
12523
|
-
/* @__PURE__ */
|
|
12524
|
-
/* @__PURE__ */
|
|
12525
|
-
|
|
12526
|
-
|
|
13000
|
+
isSecurity && erc3643CanTransfer && /* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-success)] text-[var(--l-pass-success)] rounded-[var(--l-pass-el-bdrs)]", children: [
|
|
13001
|
+
/* @__PURE__ */ jsx65(Shield3, { className: "h-4 w-4 flex-shrink-0" }),
|
|
13002
|
+
/* @__PURE__ */ jsx65("span", { className: "text-sm font-medium", children: "Security token compliance verified" })
|
|
13003
|
+
] }),
|
|
13004
|
+
/* @__PURE__ */ jsx65("div", { className: "bg-[var(--l-pass-bg-secondary)] rounded-[var(--l-pass-el-bdrs)] p-4", children: isNicknameInput && nicknameData ? /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
13005
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex items-start gap-3 mb-4", children: [
|
|
13006
|
+
nicknameData.avatarSvg ? /* @__PURE__ */ jsx65(
|
|
13007
|
+
"img",
|
|
12527
13008
|
{
|
|
12528
|
-
|
|
12529
|
-
|
|
13009
|
+
src: nicknameData.avatarSvg,
|
|
13010
|
+
alt: nicknameData.handle,
|
|
13011
|
+
className: "w-12 h-12 rounded-full object-cover flex-shrink-0"
|
|
12530
13012
|
}
|
|
12531
|
-
) : /* @__PURE__ */
|
|
12532
|
-
/* @__PURE__ */
|
|
12533
|
-
/* @__PURE__ */
|
|
12534
|
-
nicknameData.fingerprint && /* @__PURE__ */
|
|
12535
|
-
isFingerprintVerified ? /* @__PURE__ */
|
|
12536
|
-
/* @__PURE__ */
|
|
13013
|
+
) : /* @__PURE__ */ jsx65("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-bg)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx65(AtSign, { className: "w-6 h-6 text-[var(--l-pass-fg-muted)]" }) }),
|
|
13014
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex flex-col gap-1 min-w-0", children: [
|
|
13015
|
+
/* @__PURE__ */ jsx65("span", { className: "font-semibold text-lg text-[var(--l-pass-fg)] truncate", children: nicknameData.handle }),
|
|
13016
|
+
nicknameData.fingerprint && /* @__PURE__ */ jsxs58("div", { className: `flex items-center gap-1.5 text-sm ${isFingerprintVerified ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-error)]"}`, children: [
|
|
13017
|
+
isFingerprintVerified ? /* @__PURE__ */ jsx65(Shield3, { className: "w-4 h-4 flex-shrink-0" }) : /* @__PURE__ */ jsx65(ShieldAlert, { className: "w-4 h-4 flex-shrink-0" }),
|
|
13018
|
+
/* @__PURE__ */ jsxs58("span", { children: [
|
|
12537
13019
|
"Fingerprint: ",
|
|
12538
13020
|
nicknameData.fingerprint
|
|
12539
13021
|
] }),
|
|
12540
|
-
isFingerprintVerified && /* @__PURE__ */
|
|
12541
|
-
/* @__PURE__ */
|
|
13022
|
+
isFingerprintVerified && /* @__PURE__ */ jsx65(CheckCircle23, { className: "w-3 h-3" }),
|
|
13023
|
+
/* @__PURE__ */ jsx65("span", { className: "text-xs", children: isFingerprintVerified ? "Verified" : "FAILED" })
|
|
12542
13024
|
] }),
|
|
12543
|
-
/* @__PURE__ */
|
|
13025
|
+
/* @__PURE__ */ jsxs58("span", { className: "font-mono text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
12544
13026
|
"Address: ",
|
|
12545
13027
|
`${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-6)}`
|
|
12546
13028
|
] })
|
|
12547
13029
|
] })
|
|
12548
13030
|
] }),
|
|
12549
|
-
/* @__PURE__ */
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
/* @__PURE__ */
|
|
12553
|
-
|
|
12554
|
-
"
|
|
13031
|
+
/* @__PURE__ */ jsxs58("div", { className: "border-t border-[var(--l-pass-border)] pt-3 space-y-2 text-sm text-[var(--l-pass-fg)]", children: [
|
|
13032
|
+
isNft ? (
|
|
13033
|
+
// NFT details
|
|
13034
|
+
/* @__PURE__ */ jsx65(Fragment25, { children: /* @__PURE__ */ jsxs58("div", { className: "flex justify-between items-start", children: [
|
|
13035
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "NFT:" }),
|
|
13036
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-right", children: [
|
|
13037
|
+
/* @__PURE__ */ jsx65("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
|
|
13038
|
+
selectedAsset.tokenId && /* @__PURE__ */ jsxs58("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13039
|
+
"#",
|
|
13040
|
+
selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
|
|
13041
|
+
] })
|
|
13042
|
+
] })
|
|
13043
|
+
] }) })
|
|
13044
|
+
) : (
|
|
13045
|
+
// Fungible token details
|
|
13046
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13047
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Amount:" }),
|
|
13048
|
+
/* @__PURE__ */ jsxs58("span", { className: "font-semibold", children: [
|
|
13049
|
+
amount,
|
|
13050
|
+
" ",
|
|
13051
|
+
selectedAsset.symbol
|
|
13052
|
+
] })
|
|
12555
13053
|
] })
|
|
12556
|
-
|
|
12557
|
-
/* @__PURE__ */
|
|
12558
|
-
/* @__PURE__ */
|
|
12559
|
-
/* @__PURE__ */
|
|
13054
|
+
),
|
|
13055
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13056
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Network:" }),
|
|
13057
|
+
/* @__PURE__ */ jsx65("span", { children: "Lumia Beam" })
|
|
12560
13058
|
] })
|
|
12561
13059
|
] })
|
|
12562
|
-
] }) : /* @__PURE__ */
|
|
12563
|
-
/* @__PURE__ */
|
|
12564
|
-
/* @__PURE__ */
|
|
12565
|
-
/* @__PURE__ */
|
|
12566
|
-
/* @__PURE__ */
|
|
12567
|
-
/* @__PURE__ */
|
|
13060
|
+
] }) : /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
13061
|
+
/* @__PURE__ */ jsx65("h3", { className: "font-medium mb-3 text-[var(--l-pass-fg)]", children: "Transaction Details" }),
|
|
13062
|
+
/* @__PURE__ */ jsxs58("div", { className: "space-y-2 text-sm text-[var(--l-pass-fg)]", children: [
|
|
13063
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13064
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "To:" }),
|
|
13065
|
+
/* @__PURE__ */ jsx65("span", { className: "font-mono text-xs", children: `${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-4)}` })
|
|
12568
13066
|
] }),
|
|
12569
|
-
|
|
12570
|
-
|
|
12571
|
-
/* @__PURE__ */
|
|
12572
|
-
|
|
12573
|
-
"
|
|
13067
|
+
isNft ? (
|
|
13068
|
+
// NFT details
|
|
13069
|
+
/* @__PURE__ */ jsx65(Fragment25, { children: /* @__PURE__ */ jsxs58("div", { className: "flex justify-between items-start", children: [
|
|
13070
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "NFT:" }),
|
|
13071
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-right", children: [
|
|
13072
|
+
/* @__PURE__ */ jsx65("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
|
|
13073
|
+
selectedAsset.tokenId && /* @__PURE__ */ jsxs58("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: [
|
|
13074
|
+
"#",
|
|
13075
|
+
selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
|
|
13076
|
+
] })
|
|
13077
|
+
] })
|
|
13078
|
+
] }) })
|
|
13079
|
+
) : (
|
|
13080
|
+
// Fungible token details
|
|
13081
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13082
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Amount:" }),
|
|
13083
|
+
/* @__PURE__ */ jsxs58("span", { className: "font-semibold", children: [
|
|
13084
|
+
amount,
|
|
13085
|
+
" ",
|
|
13086
|
+
selectedAsset.symbol
|
|
13087
|
+
] })
|
|
12574
13088
|
] })
|
|
12575
|
-
|
|
12576
|
-
/* @__PURE__ */
|
|
12577
|
-
/* @__PURE__ */
|
|
12578
|
-
/* @__PURE__ */
|
|
13089
|
+
),
|
|
13090
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex justify-between", children: [
|
|
13091
|
+
/* @__PURE__ */ jsx65("span", { className: "text-[var(--l-pass-fg-muted)]", children: "Network:" }),
|
|
13092
|
+
/* @__PURE__ */ jsx65("span", { children: "Lumia Beam" })
|
|
12579
13093
|
] })
|
|
12580
13094
|
] })
|
|
12581
13095
|
] }) }),
|
|
12582
|
-
/* @__PURE__ */
|
|
12583
|
-
/* @__PURE__ */
|
|
12584
|
-
/* @__PURE__ */
|
|
12585
|
-
isLoading && /* @__PURE__ */
|
|
13096
|
+
/* @__PURE__ */ jsxs58("div", { className: "flex gap-2", children: [
|
|
13097
|
+
/* @__PURE__ */ jsx65(Button, { onClick: () => setTxStep("input"), variant: "outline", className: "flex-1", size: "large", children: "Back" }),
|
|
13098
|
+
/* @__PURE__ */ jsxs58(Button, { onClick: handleConfirm, disabled: isLoading, className: "flex-1", size: "large", children: [
|
|
13099
|
+
isLoading && /* @__PURE__ */ jsx65(Loader22, { className: "h-4 w-4 animate-spin" }),
|
|
12586
13100
|
"Confirm"
|
|
12587
13101
|
] })
|
|
12588
13102
|
] })
|
|
12589
13103
|
] }),
|
|
12590
|
-
txStep === "pending" && /* @__PURE__ */
|
|
12591
|
-
/* @__PURE__ */
|
|
12592
|
-
/* @__PURE__ */
|
|
12593
|
-
/* @__PURE__ */
|
|
12594
|
-
/* @__PURE__ */
|
|
13104
|
+
txStep === "pending" && /* @__PURE__ */ jsxs58("div", { className: "py-8 text-center space-y-4", children: [
|
|
13105
|
+
/* @__PURE__ */ jsx65(Loader22, { className: "h-5 w-5 animate-spin mx-auto" }),
|
|
13106
|
+
/* @__PURE__ */ jsxs58("div", { children: [
|
|
13107
|
+
/* @__PURE__ */ jsx65("span", { className: "block font-medium", children: "Transaction Pending" }),
|
|
13108
|
+
/* @__PURE__ */ jsx65("span", { className: "block text-sm mt-1", children: "Please wait while we process your transaction" })
|
|
12595
13109
|
] })
|
|
12596
13110
|
] }),
|
|
12597
|
-
txStep === "success" && userOpHash && /* @__PURE__ */
|
|
12598
|
-
/* @__PURE__ */
|
|
12599
|
-
/* @__PURE__ */
|
|
12600
|
-
/* @__PURE__ */
|
|
12601
|
-
/* @__PURE__ */
|
|
13111
|
+
txStep === "success" && userOpHash && /* @__PURE__ */ jsxs58(Fragment25, { children: [
|
|
13112
|
+
/* @__PURE__ */ jsxs58("div", { className: "text-center py-4", children: [
|
|
13113
|
+
/* @__PURE__ */ jsx65(CheckCircle23, { className: "h-12 w-12 text-[var(--l-pass-success)] mx-auto mb-3" }),
|
|
13114
|
+
/* @__PURE__ */ jsx65("p", { className: "font-medium", children: "Transaction Sent!" }),
|
|
13115
|
+
/* @__PURE__ */ jsx65("p", { className: "text-sm mt-1", children: "Your transaction is being processed" })
|
|
12602
13116
|
] }),
|
|
12603
|
-
/* @__PURE__ */
|
|
13117
|
+
/* @__PURE__ */ jsx65(Button, { onClick: () => setPage("transactions" /* TRANSACTIONS */), className: "w-full", size: "large", children: "Done" })
|
|
12604
13118
|
] })
|
|
12605
13119
|
] });
|
|
12606
13120
|
}
|
|
@@ -12609,17 +13123,17 @@ function SendLumiaMenu() {
|
|
|
12609
13123
|
init_clients();
|
|
12610
13124
|
import { ArrowLeft as ArrowLeft13, CheckCircle2 as CheckCircle24, Copy as Copy2, Loader as Loader23 } from "lucide-react";
|
|
12611
13125
|
import QRCode from "qrcode";
|
|
12612
|
-
import { useCallback as
|
|
12613
|
-
import { Fragment as
|
|
13126
|
+
import { useCallback as useCallback18, useEffect as useEffect27, useState as useState20 } from "react";
|
|
13127
|
+
import { Fragment as Fragment26, jsx as jsx66, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
12614
13128
|
function ReceiveLumiaMenu() {
|
|
12615
13129
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12616
13130
|
const page = useLayoutDataStore((st) => st.page);
|
|
12617
13131
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12618
13132
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
12619
13133
|
const open = page === "receive";
|
|
12620
|
-
const [qrCodeUrl, setQrCodeUrl] =
|
|
12621
|
-
const [copied, setCopied] =
|
|
12622
|
-
|
|
13134
|
+
const [qrCodeUrl, setQrCodeUrl] = useState20("");
|
|
13135
|
+
const [copied, setCopied] = useState20(false);
|
|
13136
|
+
useEffect27(() => {
|
|
12623
13137
|
if (open && address) {
|
|
12624
13138
|
QRCode.toDataURL(address, {
|
|
12625
13139
|
width: 200,
|
|
@@ -12632,7 +13146,7 @@ function ReceiveLumiaMenu() {
|
|
|
12632
13146
|
});
|
|
12633
13147
|
}
|
|
12634
13148
|
}, [open, address]);
|
|
12635
|
-
const handleCopy =
|
|
13149
|
+
const handleCopy = useCallback18(async () => {
|
|
12636
13150
|
if (!address) return;
|
|
12637
13151
|
try {
|
|
12638
13152
|
await navigator.clipboard.writeText(address);
|
|
@@ -12642,7 +13156,7 @@ function ReceiveLumiaMenu() {
|
|
|
12642
13156
|
console.error("Failed to copy address:", error);
|
|
12643
13157
|
}
|
|
12644
13158
|
}, [address]);
|
|
12645
|
-
return /* @__PURE__ */
|
|
13159
|
+
return /* @__PURE__ */ jsxs59(
|
|
12646
13160
|
"div",
|
|
12647
13161
|
{
|
|
12648
13162
|
style: {
|
|
@@ -12651,26 +13165,26 @@ function ReceiveLumiaMenu() {
|
|
|
12651
13165
|
},
|
|
12652
13166
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
12653
13167
|
children: [
|
|
12654
|
-
/* @__PURE__ */
|
|
12655
|
-
/* @__PURE__ */
|
|
12656
|
-
/* @__PURE__ */
|
|
13168
|
+
/* @__PURE__ */ jsxs59("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13169
|
+
/* @__PURE__ */ jsx66(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx66(ArrowLeft13, { className: "h-4 w-4" }) }),
|
|
13170
|
+
/* @__PURE__ */ jsx66("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
12657
13171
|
] }),
|
|
12658
|
-
/* @__PURE__ */
|
|
12659
|
-
/* @__PURE__ */
|
|
12660
|
-
/* @__PURE__ */
|
|
13172
|
+
/* @__PURE__ */ jsxs59(Highlight, { className: "text-center", type: "warning", children: [
|
|
13173
|
+
/* @__PURE__ */ jsx66("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
13174
|
+
/* @__PURE__ */ jsx66("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
12661
13175
|
] }),
|
|
12662
|
-
/* @__PURE__ */
|
|
12663
|
-
/* @__PURE__ */
|
|
12664
|
-
/* @__PURE__ */
|
|
12665
|
-
/* @__PURE__ */
|
|
12666
|
-
/* @__PURE__ */
|
|
12667
|
-
/* @__PURE__ */
|
|
12668
|
-
] }) : /* @__PURE__ */
|
|
12669
|
-
/* @__PURE__ */
|
|
12670
|
-
/* @__PURE__ */
|
|
13176
|
+
/* @__PURE__ */ jsx66("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx66("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx66(Loader23, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
13177
|
+
/* @__PURE__ */ jsxs59(Highlight, { type: "info", children: [
|
|
13178
|
+
/* @__PURE__ */ jsx66("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
13179
|
+
/* @__PURE__ */ jsx66(Button, { onClick: handleCopy, className: "w-full", size: "large", children: copied ? /* @__PURE__ */ jsxs59(Fragment26, { children: [
|
|
13180
|
+
/* @__PURE__ */ jsx66(CheckCircle24, { className: "h-4 w-4" }),
|
|
13181
|
+
/* @__PURE__ */ jsx66("span", { children: "Copied!" })
|
|
13182
|
+
] }) : /* @__PURE__ */ jsxs59(Fragment26, { children: [
|
|
13183
|
+
/* @__PURE__ */ jsx66(Copy2, { className: "h-4 w-4" }),
|
|
13184
|
+
/* @__PURE__ */ jsx66("span", { children: "Copy Address" })
|
|
12671
13185
|
] }) })
|
|
12672
13186
|
] }),
|
|
12673
|
-
/* @__PURE__ */
|
|
13187
|
+
/* @__PURE__ */ jsx66("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx66("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
12674
13188
|
]
|
|
12675
13189
|
}
|
|
12676
13190
|
);
|
|
@@ -12678,16 +13192,16 @@ function ReceiveLumiaMenu() {
|
|
|
12678
13192
|
|
|
12679
13193
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
12680
13194
|
import { ArrowLeft as ArrowLeft14 } from "lucide-react";
|
|
12681
|
-
import { useEffect as
|
|
13195
|
+
import { useEffect as useEffect28 } from "react";
|
|
12682
13196
|
|
|
12683
13197
|
// src/internal/components/SettingsMenu/constants.ts
|
|
12684
13198
|
import { ArrowLeftRight, AtSign as AtSign2, DatabaseBackup, LockKeyhole, UsersRound } from "lucide-react";
|
|
12685
13199
|
|
|
12686
13200
|
// src/internal/assets/KycIcon.tsx
|
|
12687
|
-
import { jsx as
|
|
13201
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
12688
13202
|
function KycIcon(props) {
|
|
12689
13203
|
const { width = "24", height = "24", ...rest } = props;
|
|
12690
|
-
return /* @__PURE__ */
|
|
13204
|
+
return /* @__PURE__ */ jsx67("svg", { ...rest, width, height, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx67(
|
|
12691
13205
|
"path",
|
|
12692
13206
|
{
|
|
12693
13207
|
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",
|
|
@@ -12707,18 +13221,18 @@ var NAV_BUTTONS = [
|
|
|
12707
13221
|
];
|
|
12708
13222
|
|
|
12709
13223
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
12710
|
-
import { jsx as
|
|
13224
|
+
import { jsx as jsx68, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
12711
13225
|
function SettingsMenu() {
|
|
12712
13226
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12713
13227
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12714
13228
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
12715
13229
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
12716
13230
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
12717
|
-
|
|
13231
|
+
useEffect28(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
12718
13232
|
useProvidersList();
|
|
12719
13233
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
12720
13234
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
12721
|
-
return /* @__PURE__ */
|
|
13235
|
+
return /* @__PURE__ */ jsxs60(
|
|
12722
13236
|
"div",
|
|
12723
13237
|
{
|
|
12724
13238
|
style: {
|
|
@@ -12727,11 +13241,11 @@ function SettingsMenu() {
|
|
|
12727
13241
|
},
|
|
12728
13242
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
12729
13243
|
children: [
|
|
12730
|
-
/* @__PURE__ */
|
|
12731
|
-
/* @__PURE__ */
|
|
12732
|
-
/* @__PURE__ */
|
|
13244
|
+
/* @__PURE__ */ jsxs60("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13245
|
+
/* @__PURE__ */ jsx68(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx68(ArrowLeft14, { className: "h-4 w-4" }) }),
|
|
13246
|
+
/* @__PURE__ */ jsx68("span", { className: "text-xl font-semibold", children: "Settings" })
|
|
12733
13247
|
] }),
|
|
12734
|
-
/* @__PURE__ */
|
|
13248
|
+
/* @__PURE__ */ jsx68("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */ jsxs60(
|
|
12735
13249
|
Button,
|
|
12736
13250
|
{
|
|
12737
13251
|
variant: "outline",
|
|
@@ -12744,8 +13258,8 @@ function SettingsMenu() {
|
|
|
12744
13258
|
highlightedKeys.includes(id) && "animate-glow-warning"
|
|
12745
13259
|
),
|
|
12746
13260
|
children: [
|
|
12747
|
-
/* @__PURE__ */
|
|
12748
|
-
/* @__PURE__ */
|
|
13261
|
+
/* @__PURE__ */ jsx68(Icon2, { className: "w-4 h-4" }),
|
|
13262
|
+
/* @__PURE__ */ jsx68("span", { children: name })
|
|
12749
13263
|
]
|
|
12750
13264
|
},
|
|
12751
13265
|
id
|
|
@@ -12757,27 +13271,27 @@ function SettingsMenu() {
|
|
|
12757
13271
|
|
|
12758
13272
|
// src/internal/components/TermsOfService.tsx
|
|
12759
13273
|
import { ArrowLeft as ArrowLeft15 } from "lucide-react";
|
|
12760
|
-
import { jsx as
|
|
13274
|
+
import { jsx as jsx69, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
12761
13275
|
function TermsOfService() {
|
|
12762
13276
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12763
13277
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12764
|
-
return /* @__PURE__ */
|
|
12765
|
-
/* @__PURE__ */
|
|
12766
|
-
/* @__PURE__ */
|
|
13278
|
+
return /* @__PURE__ */ jsxs61("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
13279
|
+
/* @__PURE__ */ jsxs61("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13280
|
+
/* @__PURE__ */ jsx69(
|
|
12767
13281
|
Button,
|
|
12768
13282
|
{
|
|
12769
13283
|
variant: "ghost",
|
|
12770
13284
|
size: "icon",
|
|
12771
13285
|
title: "Back",
|
|
12772
13286
|
onClick: () => setPage(!!address ? "settings" /* SETTINGS */ : "auth" /* AUTH */),
|
|
12773
|
-
children: /* @__PURE__ */
|
|
13287
|
+
children: /* @__PURE__ */ jsx69(ArrowLeft15, { className: "h-4 w-4" })
|
|
12774
13288
|
}
|
|
12775
13289
|
),
|
|
12776
|
-
/* @__PURE__ */
|
|
13290
|
+
/* @__PURE__ */ jsx69("span", { className: "text-xl font-semibold", children: "Terms of Service" })
|
|
12777
13291
|
] }),
|
|
12778
|
-
/* @__PURE__ */
|
|
12779
|
-
/* @__PURE__ */
|
|
12780
|
-
/* @__PURE__ */
|
|
13292
|
+
/* @__PURE__ */ jsxs61(Highlight, { type: "warning", className: "text-center", children: [
|
|
13293
|
+
/* @__PURE__ */ jsx69("span", { className: "block text-xs", children: "By using Lumia Passport you agree to our terms." }),
|
|
13294
|
+
/* @__PURE__ */ jsx69("span", { className: "block text-xs", children: "To be updated..." })
|
|
12781
13295
|
] })
|
|
12782
13296
|
] });
|
|
12783
13297
|
}
|
|
@@ -12785,7 +13299,7 @@ function TermsOfService() {
|
|
|
12785
13299
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
12786
13300
|
import { useQuery as useQuery17, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
|
|
12787
13301
|
import { ArrowLeft as ArrowLeft16, Loader as Loader24, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
12788
|
-
import { useCallback as
|
|
13302
|
+
import { useCallback as useCallback19, useState as useState21 } from "react";
|
|
12789
13303
|
|
|
12790
13304
|
// src/internal/components/TransactionsMenu/api.ts
|
|
12791
13305
|
init_base();
|
|
@@ -12996,19 +13510,52 @@ async function getTransactionsListQuery(address) {
|
|
|
12996
13510
|
group.internals = [];
|
|
12997
13511
|
}
|
|
12998
13512
|
});
|
|
13513
|
+
const orphanGroupMap = /* @__PURE__ */ new Map();
|
|
12999
13514
|
orphanInternals.forEach((internalItem) => {
|
|
13000
13515
|
if (internalItem.isEntryPoint || toBigInt(internalItem.value) === 0n) {
|
|
13001
13516
|
return;
|
|
13002
13517
|
}
|
|
13518
|
+
const key = internalItem.parentHash.toLowerCase();
|
|
13519
|
+
const existing = orphanGroupMap.get(key) || [];
|
|
13520
|
+
existing.push(internalItem);
|
|
13521
|
+
orphanGroupMap.set(key, existing);
|
|
13522
|
+
});
|
|
13523
|
+
orphanGroupMap.forEach((internals, parentHash) => {
|
|
13524
|
+
const incomingInternals = internals.filter((internal) => {
|
|
13525
|
+
if (internal.direction !== "in") return false;
|
|
13526
|
+
const amount = toBigInt(internal.value);
|
|
13527
|
+
return amount > 0n;
|
|
13528
|
+
});
|
|
13529
|
+
if (incomingInternals.length === 0) {
|
|
13530
|
+
return;
|
|
13531
|
+
}
|
|
13532
|
+
let totalIn = 0n;
|
|
13533
|
+
incomingInternals.forEach((internal) => {
|
|
13534
|
+
totalIn += toBigInt(internal.value);
|
|
13535
|
+
});
|
|
13536
|
+
const sorted = incomingInternals.map((internal) => ({
|
|
13537
|
+
internal,
|
|
13538
|
+
amount: toBigInt(internal.value)
|
|
13539
|
+
})).sort((a, b) => {
|
|
13540
|
+
if (a.amount === b.amount) return 0;
|
|
13541
|
+
return a.amount > b.amount ? -1 : 1;
|
|
13542
|
+
});
|
|
13543
|
+
const primary = sorted[0].internal;
|
|
13544
|
+
const syntheticParent = {
|
|
13545
|
+
...primary,
|
|
13546
|
+
id: `orphan-${parentHash}`,
|
|
13547
|
+
direction: "in",
|
|
13548
|
+
value: totalIn.toString()
|
|
13549
|
+
};
|
|
13003
13550
|
groups.push({
|
|
13004
|
-
id:
|
|
13005
|
-
parent:
|
|
13551
|
+
id: syntheticParent.id,
|
|
13552
|
+
parent: syntheticParent,
|
|
13006
13553
|
internals: [],
|
|
13007
|
-
timestampMs:
|
|
13554
|
+
timestampMs: Math.max(...incomingInternals.map((i) => i.timestampMs))
|
|
13008
13555
|
});
|
|
13009
13556
|
});
|
|
13010
13557
|
tokenTransfersData.forEach((transfer, index) => {
|
|
13011
|
-
const rawValue = transfer.value ?? "0";
|
|
13558
|
+
const rawValue = transfer.total?.value ?? transfer.value ?? "0";
|
|
13012
13559
|
const amount = toBigInt(rawValue);
|
|
13013
13560
|
if (amount === 0n) {
|
|
13014
13561
|
return;
|
|
@@ -13024,7 +13571,7 @@ async function getTransactionsListQuery(address) {
|
|
|
13024
13571
|
}
|
|
13025
13572
|
const tsInput = transfer.timestamp;
|
|
13026
13573
|
const timestampMs = typeof tsInput === "number" ? tsInput > 1e12 ? tsInput : tsInput * 1e3 : tsInput ? new Date(tsInput).getTime() : now;
|
|
13027
|
-
const decimalsRaw = transfer.token?.decimals;
|
|
13574
|
+
const decimalsRaw = transfer.total?.decimals ?? transfer.token?.decimals;
|
|
13028
13575
|
const decimals = typeof decimalsRaw === "string" ? parseInt(decimalsRaw, 10) : typeof decimalsRaw === "number" ? decimalsRaw : 18;
|
|
13029
13576
|
const assetSymbol = transfer.token?.symbol || "Token";
|
|
13030
13577
|
const tokenItem = {
|
|
@@ -13123,22 +13670,22 @@ var formatTimestamp = (timestampMs) => {
|
|
|
13123
13670
|
};
|
|
13124
13671
|
|
|
13125
13672
|
// src/internal/components/TransactionsMenu/TransactionsGroup.tsx
|
|
13126
|
-
import { Fragment as
|
|
13673
|
+
import { Fragment as Fragment27, jsx as jsx70, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
13127
13674
|
function InternalTransaction({ internal, assetSymbol, assetDecimals }) {
|
|
13128
13675
|
const internalSymbol = internal.assetSymbol || assetSymbol;
|
|
13129
13676
|
const internalDecimals = internal.decimals ?? assetDecimals;
|
|
13130
|
-
return /* @__PURE__ */
|
|
13131
|
-
/* @__PURE__ */
|
|
13132
|
-
/* @__PURE__ */
|
|
13133
|
-
/* @__PURE__ */
|
|
13677
|
+
return /* @__PURE__ */ jsxs62("div", { className: "border-t border-dashed border-[var(--l-pass-bd)]", children: [
|
|
13678
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
13679
|
+
/* @__PURE__ */ jsx70("span", { className: "text-[var(--l-pass-fg-muted)]", children: internal.method || "CALL" }),
|
|
13680
|
+
/* @__PURE__ */ jsxs62("span", { children: [
|
|
13134
13681
|
formatValue2(internal.value, internalDecimals),
|
|
13135
13682
|
" ",
|
|
13136
13683
|
internalSymbol
|
|
13137
13684
|
] })
|
|
13138
13685
|
] }),
|
|
13139
|
-
/* @__PURE__ */
|
|
13140
|
-
/* @__PURE__ */
|
|
13141
|
-
/* @__PURE__ */
|
|
13686
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex gap-2 items-center justify-between", children: [
|
|
13687
|
+
/* @__PURE__ */ jsx70("span", { children: internal.direction === "in" ? "From" : "To" }),
|
|
13688
|
+
/* @__PURE__ */ jsx70("span", { className: "font-mono", children: internal.counterpartyName || formatAddress2(internal.counterparty) })
|
|
13142
13689
|
] })
|
|
13143
13690
|
] });
|
|
13144
13691
|
}
|
|
@@ -13149,7 +13696,7 @@ function TransactionsGroup(props) {
|
|
|
13149
13696
|
const assetSymbol = parent.assetSymbol || "LUMIA";
|
|
13150
13697
|
const assetDecimals = parent.decimals ?? 18;
|
|
13151
13698
|
const internalsToRender = group.internals.filter((internal) => parseValue(internal.value) !== 0n);
|
|
13152
|
-
return /* @__PURE__ */
|
|
13699
|
+
return /* @__PURE__ */ jsxs62(
|
|
13153
13700
|
"div",
|
|
13154
13701
|
{
|
|
13155
13702
|
onClick: () => openInExplorer2(parent.parentHash),
|
|
@@ -13159,22 +13706,28 @@ function TransactionsGroup(props) {
|
|
|
13159
13706
|
"bg-transparent hover:bg-[var(--l-pass-secondary-h)] active:bg-[var(--l-pass-secondary-a)]"
|
|
13160
13707
|
),
|
|
13161
13708
|
children: [
|
|
13162
|
-
/* @__PURE__ */
|
|
13163
|
-
/* @__PURE__ */
|
|
13164
|
-
parent.direction === "in" ? /* @__PURE__ */
|
|
13165
|
-
/* @__PURE__ */
|
|
13166
|
-
parent.status === "ok" ? /* @__PURE__ */
|
|
13709
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
13710
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center gap-1 flex-0 w-fit", children: [
|
|
13711
|
+
parent.direction === "in" ? /* @__PURE__ */ jsx70(ChevronLeft2, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx70(ChevronRight5, { className: "w-4 h-4" }),
|
|
13712
|
+
/* @__PURE__ */ jsx70("span", { className: "text-[10px]", children: isIncoming ? "RECEIVED" : "SENT" }),
|
|
13713
|
+
parent.status === "ok" ? /* @__PURE__ */ jsx70(PositiveIcon, {}) : /* @__PURE__ */ jsx70(NegativeIcon, {})
|
|
13167
13714
|
] }),
|
|
13168
|
-
/* @__PURE__ */
|
|
13715
|
+
/* @__PURE__ */ jsx70("span", { className: "block flex-0 font-mono text-[10px] text-[var(--l-pass-fg-muted)]", children: formatTimestamp(group.timestampMs) })
|
|
13169
13716
|
] }),
|
|
13170
|
-
/* @__PURE__ */
|
|
13171
|
-
/* @__PURE__ */
|
|
13172
|
-
|
|
13173
|
-
|
|
13174
|
-
|
|
13717
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
|
|
13718
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex flex-col gap-0", children: [
|
|
13719
|
+
/* @__PURE__ */ jsxs62("span", { className: "font-bold", children: [
|
|
13720
|
+
formatValue2(parent.value, assetDecimals),
|
|
13721
|
+
" ",
|
|
13722
|
+
assetSymbol
|
|
13723
|
+
] }),
|
|
13724
|
+
/* @__PURE__ */ jsxs62("span", { className: "text-[10px] font-mono text-[var(--l-pass-fg-muted)]", children: [
|
|
13725
|
+
isIncoming ? "From: " : "To: ",
|
|
13726
|
+
parent.counterpartyName || formatAddress2(parent.counterparty)
|
|
13727
|
+
] })
|
|
13175
13728
|
] }),
|
|
13176
|
-
/* @__PURE__ */
|
|
13177
|
-
/* @__PURE__ */
|
|
13729
|
+
/* @__PURE__ */ jsxs62("div", { className: "flex items-center gap-0", children: [
|
|
13730
|
+
/* @__PURE__ */ jsx70(
|
|
13178
13731
|
Button,
|
|
13179
13732
|
{
|
|
13180
13733
|
variant: "ghost",
|
|
@@ -13183,10 +13736,10 @@ function TransactionsGroup(props) {
|
|
|
13183
13736
|
onClick: (e) => {
|
|
13184
13737
|
e.stopPropagation();
|
|
13185
13738
|
},
|
|
13186
|
-
children: /* @__PURE__ */
|
|
13739
|
+
children: /* @__PURE__ */ jsx70(Copy3, { className: "w-4 h-4" })
|
|
13187
13740
|
}
|
|
13188
13741
|
),
|
|
13189
|
-
/* @__PURE__ */
|
|
13742
|
+
/* @__PURE__ */ jsx70(
|
|
13190
13743
|
Button,
|
|
13191
13744
|
{
|
|
13192
13745
|
variant: "ghost",
|
|
@@ -13195,24 +13748,24 @@ function TransactionsGroup(props) {
|
|
|
13195
13748
|
onClick: (e) => {
|
|
13196
13749
|
e.stopPropagation();
|
|
13197
13750
|
},
|
|
13198
|
-
children: /* @__PURE__ */
|
|
13751
|
+
children: /* @__PURE__ */ jsx70(LumiaIcon, { className: "w-4 h-4" })
|
|
13199
13752
|
}
|
|
13200
13753
|
)
|
|
13201
13754
|
] })
|
|
13202
13755
|
] }),
|
|
13203
|
-
internalsToRender.length > 0 && /* @__PURE__ */
|
|
13204
|
-
/* @__PURE__ */
|
|
13205
|
-
/* @__PURE__ */
|
|
13206
|
-
/* @__PURE__ */
|
|
13207
|
-
/* @__PURE__ */
|
|
13756
|
+
internalsToRender.length > 0 && /* @__PURE__ */ jsxs62(Fragment27, { children: [
|
|
13757
|
+
/* @__PURE__ */ jsxs62("div", { className: "w-full flex items-center", children: [
|
|
13758
|
+
/* @__PURE__ */ jsx70("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
13759
|
+
/* @__PURE__ */ jsx70("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Internals" }),
|
|
13760
|
+
/* @__PURE__ */ jsx70("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
13208
13761
|
] }),
|
|
13209
|
-
/* @__PURE__ */
|
|
13762
|
+
/* @__PURE__ */ jsxs62(
|
|
13210
13763
|
"div",
|
|
13211
13764
|
{
|
|
13212
13765
|
className: "w-full rounded-[var(--l-pass-el-bdrs)] border border-dashed border-[var(--l-pass-bd)]",
|
|
13213
13766
|
onClick: (event) => event.stopPropagation(),
|
|
13214
13767
|
children: [
|
|
13215
|
-
/* @__PURE__ */
|
|
13768
|
+
/* @__PURE__ */ jsxs62(
|
|
13216
13769
|
Button,
|
|
13217
13770
|
{
|
|
13218
13771
|
variant: "ghost",
|
|
@@ -13220,16 +13773,16 @@ function TransactionsGroup(props) {
|
|
|
13220
13773
|
className: "w-full justify-between",
|
|
13221
13774
|
onClick: () => onToggleExpanded(group.id),
|
|
13222
13775
|
children: [
|
|
13223
|
-
/* @__PURE__ */
|
|
13776
|
+
/* @__PURE__ */ jsxs62("span", { children: [
|
|
13224
13777
|
"View internal calls (",
|
|
13225
13778
|
internalsToRender.length,
|
|
13226
13779
|
")"
|
|
13227
13780
|
] }),
|
|
13228
|
-
/* @__PURE__ */
|
|
13781
|
+
/* @__PURE__ */ jsx70("span", { children: expanded ? "Hide" : "Show" })
|
|
13229
13782
|
]
|
|
13230
13783
|
}
|
|
13231
13784
|
),
|
|
13232
|
-
expanded && /* @__PURE__ */
|
|
13785
|
+
expanded && /* @__PURE__ */ jsx70("div", { className: "px-2 pb-2 flex flex-col gap-2 text-xs", children: internalsToRender.map((internal) => /* @__PURE__ */ jsx70(
|
|
13233
13786
|
InternalTransaction,
|
|
13234
13787
|
{
|
|
13235
13788
|
internal,
|
|
@@ -13248,14 +13801,14 @@ function TransactionsGroup(props) {
|
|
|
13248
13801
|
}
|
|
13249
13802
|
|
|
13250
13803
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
13251
|
-
import { jsx as
|
|
13804
|
+
import { jsx as jsx71, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
13252
13805
|
function TransactionsMenu() {
|
|
13253
13806
|
const qc = useQueryClient18();
|
|
13254
13807
|
const address = useLumiaPassportSession((st) => st.address);
|
|
13255
13808
|
const page = useLayoutDataStore((st) => st.page);
|
|
13256
13809
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
13257
13810
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
13258
|
-
const [expandedGroups, setExpandedGroups] =
|
|
13811
|
+
const [expandedGroups, setExpandedGroups] = useState21({});
|
|
13259
13812
|
const {
|
|
13260
13813
|
data: txHistoryGroups = [],
|
|
13261
13814
|
isLoading: isTxHistoryLoading,
|
|
@@ -13267,12 +13820,12 @@ function TransactionsMenu() {
|
|
|
13267
13820
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
13268
13821
|
queryFn: () => getTransactionsListQuery(address)
|
|
13269
13822
|
});
|
|
13270
|
-
const refreshTxHistory =
|
|
13823
|
+
const refreshTxHistory = useCallback19(
|
|
13271
13824
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
13272
13825
|
[qc, address]
|
|
13273
13826
|
);
|
|
13274
13827
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
13275
|
-
return /* @__PURE__ */
|
|
13828
|
+
return /* @__PURE__ */ jsx71(
|
|
13276
13829
|
"div",
|
|
13277
13830
|
{
|
|
13278
13831
|
style: {
|
|
@@ -13280,11 +13833,11 @@ function TransactionsMenu() {
|
|
|
13280
13833
|
"--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
|
|
13281
13834
|
},
|
|
13282
13835
|
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
|
|
13283
|
-
children: /* @__PURE__ */
|
|
13284
|
-
/* @__PURE__ */
|
|
13285
|
-
/* @__PURE__ */
|
|
13286
|
-
/* @__PURE__ */
|
|
13287
|
-
/* @__PURE__ */
|
|
13836
|
+
children: /* @__PURE__ */ jsxs63(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
13837
|
+
/* @__PURE__ */ jsxs63("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
13838
|
+
/* @__PURE__ */ jsx71(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx71(ArrowLeft16, { className: "h-4 w-4" }) }),
|
|
13839
|
+
/* @__PURE__ */ jsx71("span", { className: "text-xl font-semibold", children: "Transaction History" }),
|
|
13840
|
+
/* @__PURE__ */ jsx71(
|
|
13288
13841
|
Button,
|
|
13289
13842
|
{
|
|
13290
13843
|
variant: "ghost",
|
|
@@ -13292,17 +13845,17 @@ function TransactionsMenu() {
|
|
|
13292
13845
|
onClick: refreshTxHistory,
|
|
13293
13846
|
disabled: isTxHistoryFetching,
|
|
13294
13847
|
title: "Refresh transactions",
|
|
13295
|
-
children: isTxHistoryFetching ? /* @__PURE__ */
|
|
13848
|
+
children: isTxHistoryFetching ? /* @__PURE__ */ jsx71(Loader24, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ jsx71(RefreshCw3, { className: "h-4 w-4" })
|
|
13296
13849
|
}
|
|
13297
13850
|
)
|
|
13298
13851
|
] }),
|
|
13299
|
-
isTxHistoryLoading && /* @__PURE__ */
|
|
13300
|
-
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */
|
|
13301
|
-
/* @__PURE__ */
|
|
13302
|
-
/* @__PURE__ */
|
|
13852
|
+
isTxHistoryLoading && /* @__PURE__ */ jsx71("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx71(Loader24, { className: "h-5 w-5 animate-spin" }) }),
|
|
13853
|
+
!isTxHistoryLoading && txHistoryResolvedError && /* @__PURE__ */ jsxs63(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
13854
|
+
/* @__PURE__ */ jsx71(XCircle2, { className: "w-4 h-4 flex-none" }),
|
|
13855
|
+
/* @__PURE__ */ jsx71("span", { className: "block w-full flex-1 text-center text-xs", children: txHistoryResolvedError })
|
|
13303
13856
|
] }),
|
|
13304
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */
|
|
13305
|
-
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */
|
|
13857
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length === 0 && /* @__PURE__ */ jsx71(Highlight, { type: "warning", children: /* @__PURE__ */ jsx71("span", { children: "No transactions found." }) }),
|
|
13858
|
+
!isTxHistoryLoading && !txHistoryResolvedError && txHistoryGroups.length > 0 && /* @__PURE__ */ jsx71("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx71(
|
|
13306
13859
|
TransactionsGroup,
|
|
13307
13860
|
{
|
|
13308
13861
|
group,
|
|
@@ -13417,7 +13970,7 @@ var PAGE_MAP = {
|
|
|
13417
13970
|
};
|
|
13418
13971
|
|
|
13419
13972
|
// src/internal/hooks/usePageMapper.tsx
|
|
13420
|
-
import { jsx as
|
|
13973
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
13421
13974
|
var CLEAR_DIALOG_TIMEOUT = MAIN_DIALOG_ANIMATION_SPEED + 5;
|
|
13422
13975
|
function usePageMapper() {
|
|
13423
13976
|
const page = useLayoutDataStore((st) => st.page);
|
|
@@ -13429,7 +13982,7 @@ function usePageMapper() {
|
|
|
13429
13982
|
setIsDialogOpen,
|
|
13430
13983
|
setIsDialogClosing
|
|
13431
13984
|
} = useLayoutStore();
|
|
13432
|
-
const closeDialog =
|
|
13985
|
+
const closeDialog = useCallback20(() => {
|
|
13433
13986
|
setIsDialogClosing(true);
|
|
13434
13987
|
setTimeout(() => {
|
|
13435
13988
|
setDialogContent(null);
|
|
@@ -13440,17 +13993,17 @@ function usePageMapper() {
|
|
|
13440
13993
|
setIsDialogOpen(false);
|
|
13441
13994
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
13442
13995
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
13443
|
-
const openDialog =
|
|
13996
|
+
const openDialog = useCallback20(
|
|
13444
13997
|
(pageItem) => {
|
|
13445
13998
|
const PageContentComponent = pageItem.component;
|
|
13446
13999
|
setDialogTitle(pageItem.title);
|
|
13447
14000
|
setDialogDescription(pageItem.description);
|
|
13448
|
-
setDialogContent(/* @__PURE__ */
|
|
14001
|
+
setDialogContent(/* @__PURE__ */ jsx72(PageContentComponent, {}));
|
|
13449
14002
|
setIsDialogOpen(true);
|
|
13450
14003
|
},
|
|
13451
14004
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
13452
14005
|
);
|
|
13453
|
-
|
|
14006
|
+
useEffect29(() => {
|
|
13454
14007
|
if (page === null) return closeDialog();
|
|
13455
14008
|
const pageItem = PAGE_MAP[page];
|
|
13456
14009
|
if (!pageItem) {
|
|
@@ -13464,7 +14017,7 @@ function usePageMapper() {
|
|
|
13464
14017
|
|
|
13465
14018
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
13466
14019
|
init_auth();
|
|
13467
|
-
import { useEffect as
|
|
14020
|
+
import { useEffect as useEffect30 } from "react";
|
|
13468
14021
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
13469
14022
|
id: "email-not-connected",
|
|
13470
14023
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -13474,7 +14027,7 @@ function useSettingsNotifications() {
|
|
|
13474
14027
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
13475
14028
|
const providers = jwtTokenManager2.getProviders();
|
|
13476
14029
|
const hasEmail = providers.includes("email");
|
|
13477
|
-
|
|
14030
|
+
useEffect30(() => {
|
|
13478
14031
|
setSettingsNotifications({
|
|
13479
14032
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
13480
14033
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -13483,7 +14036,7 @@ function useSettingsNotifications() {
|
|
|
13483
14036
|
}
|
|
13484
14037
|
|
|
13485
14038
|
// src/internal/hooks/useWalletStatus.ts
|
|
13486
|
-
import { useEffect as
|
|
14039
|
+
import { useEffect as useEffect31 } from "react";
|
|
13487
14040
|
init_auth();
|
|
13488
14041
|
function useWalletStatus() {
|
|
13489
14042
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -13493,7 +14046,7 @@ function useWalletStatus() {
|
|
|
13493
14046
|
config: { current: config },
|
|
13494
14047
|
callbacks
|
|
13495
14048
|
} = useLumiaPassportConfig();
|
|
13496
|
-
|
|
14049
|
+
useEffect31(() => {
|
|
13497
14050
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
13498
14051
|
const userId = jwtTokenManager2.getUserId();
|
|
13499
14052
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -13513,7 +14066,7 @@ function useWalletStatus() {
|
|
|
13513
14066
|
}
|
|
13514
14067
|
|
|
13515
14068
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
13516
|
-
import { jsx as
|
|
14069
|
+
import { jsx as jsx73, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
13517
14070
|
function LumiaPassportDialog() {
|
|
13518
14071
|
const config = useLumiaPassportConfig().config;
|
|
13519
14072
|
const className = config.current?.ui?.dialogClassName;
|
|
@@ -13523,7 +14076,7 @@ function LumiaPassportDialog() {
|
|
|
13523
14076
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
13524
14077
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
13525
14078
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
13526
|
-
|
|
14079
|
+
useEffect32(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
13527
14080
|
usePageMapper();
|
|
13528
14081
|
useAutoConnect();
|
|
13529
14082
|
useBackupStatusChanges();
|
|
@@ -13532,7 +14085,7 @@ function LumiaPassportDialog() {
|
|
|
13532
14085
|
useListenIframeAuthEvents();
|
|
13533
14086
|
useWalletStatus();
|
|
13534
14087
|
const isHeaderHidden = !session || page === "keysare-backup" /* KEYSARE_BACKUP */ && !hasServerVault;
|
|
13535
|
-
return /* @__PURE__ */
|
|
14088
|
+
return /* @__PURE__ */ jsx73(
|
|
13536
14089
|
Dialog,
|
|
13537
14090
|
{
|
|
13538
14091
|
open: isDialogOpen,
|
|
@@ -13540,11 +14093,11 @@ function LumiaPassportDialog() {
|
|
|
13540
14093
|
if (isDialogForced) return;
|
|
13541
14094
|
if (!open) setPage(null);
|
|
13542
14095
|
},
|
|
13543
|
-
children: /* @__PURE__ */
|
|
13544
|
-
/* @__PURE__ */
|
|
13545
|
-
/* @__PURE__ */
|
|
13546
|
-
!isHeaderHidden && /* @__PURE__ */
|
|
13547
|
-
/* @__PURE__ */
|
|
14096
|
+
children: /* @__PURE__ */ jsxs64(DialogContent, { colorMode, className, children: [
|
|
14097
|
+
/* @__PURE__ */ jsx73(VisuallyHidden, { children: /* @__PURE__ */ jsx73(DialogTitle, { children: dialogTitle }) }),
|
|
14098
|
+
/* @__PURE__ */ jsx73(DialogDescription, { className: "sr-only", children: dialogDescription }),
|
|
14099
|
+
!isHeaderHidden && /* @__PURE__ */ jsx73(Header, {}),
|
|
14100
|
+
/* @__PURE__ */ jsx73(AnimatePresence3, { mode: "wait", initial: false, children: /* @__PURE__ */ jsx73(
|
|
13548
14101
|
motion3.div,
|
|
13549
14102
|
{
|
|
13550
14103
|
initial: { opacity: 0, height: mainPageHeight },
|
|
@@ -13556,30 +14109,30 @@ function LumiaPassportDialog() {
|
|
|
13556
14109
|
},
|
|
13557
14110
|
page || "empty"
|
|
13558
14111
|
) }),
|
|
13559
|
-
/* @__PURE__ */
|
|
14112
|
+
/* @__PURE__ */ jsx73(Footer, {})
|
|
13560
14113
|
] })
|
|
13561
14114
|
}
|
|
13562
14115
|
);
|
|
13563
14116
|
}
|
|
13564
14117
|
|
|
13565
14118
|
// src/internal/components/TssManager.tsx
|
|
13566
|
-
import
|
|
14119
|
+
import React7, { useCallback as useCallback21 } from "react";
|
|
13567
14120
|
init_auth();
|
|
13568
14121
|
init_clients();
|
|
13569
|
-
var TssManagerWithRef =
|
|
14122
|
+
var TssManagerWithRef = React7.forwardRef((props, ref) => {
|
|
13570
14123
|
const { mpcPin } = props;
|
|
13571
14124
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
13572
14125
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
13573
14126
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
13574
14127
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
13575
|
-
const onSessionCreated =
|
|
14128
|
+
const onSessionCreated = useCallback21(
|
|
13576
14129
|
(session, address) => {
|
|
13577
14130
|
setSession(session);
|
|
13578
14131
|
setAddress(address);
|
|
13579
14132
|
},
|
|
13580
14133
|
[setSession, setAddress]
|
|
13581
14134
|
);
|
|
13582
|
-
const createSessionWithKeyshare =
|
|
14135
|
+
const createSessionWithKeyshare = React7.useCallback(
|
|
13583
14136
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
13584
14137
|
setStatus("checking key management setup...");
|
|
13585
14138
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -13600,7 +14153,7 @@ var TssManagerWithRef = React8.forwardRef((props, ref) => {
|
|
|
13600
14153
|
},
|
|
13601
14154
|
[setStatus, usePaymaster, mpcPin]
|
|
13602
14155
|
);
|
|
13603
|
-
|
|
14156
|
+
React7.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
13604
14157
|
return null;
|
|
13605
14158
|
});
|
|
13606
14159
|
|
|
@@ -13608,7 +14161,7 @@ var TssManagerWithRef = React8.forwardRef((props, ref) => {
|
|
|
13608
14161
|
init_wallet();
|
|
13609
14162
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
13610
14163
|
import { useMutation as useMutation15, useQueryClient as useQueryClient19 } from "@tanstack/react-query";
|
|
13611
|
-
import
|
|
14164
|
+
import React8, { useCallback as useCallback22, useEffect as useEffect33 } from "react";
|
|
13612
14165
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
13613
14166
|
function WalletConnectHandler() {
|
|
13614
14167
|
const qc = useQueryClient19();
|
|
@@ -13625,7 +14178,7 @@ function WalletConnectHandler() {
|
|
|
13625
14178
|
const setManageWalletLinkError = useManageWalletStore((st) => st.setLinkError);
|
|
13626
14179
|
const setLinkIsLoading = useManageWalletStore((st) => st.setLinkIsLoading);
|
|
13627
14180
|
const setProviderType = useManageWalletStore((st) => st.setProviderType);
|
|
13628
|
-
const onLinkingComplete =
|
|
14181
|
+
const onLinkingComplete = useCallback22(
|
|
13629
14182
|
async (success) => {
|
|
13630
14183
|
setIsWalletLinking(false);
|
|
13631
14184
|
if (!success && !passportWalletAddress) {
|
|
@@ -13652,8 +14205,8 @@ function WalletConnectHandler() {
|
|
|
13652
14205
|
},
|
|
13653
14206
|
[qc, passportWalletAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
13654
14207
|
);
|
|
13655
|
-
const [hasStartedLinking, setHasStartedLinking] =
|
|
13656
|
-
|
|
14208
|
+
const [hasStartedLinking, setHasStartedLinking] = React8.useState(false);
|
|
14209
|
+
useEffect33(() => {
|
|
13657
14210
|
if (isWalletLinking && !hasStartedLinking) {
|
|
13658
14211
|
setHasStartedLinking(true);
|
|
13659
14212
|
setProviderType(null);
|
|
@@ -13673,7 +14226,7 @@ function WalletConnectHandler() {
|
|
|
13673
14226
|
if (isConnected) disconnect();
|
|
13674
14227
|
}
|
|
13675
14228
|
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
13676
|
-
|
|
14229
|
+
useEffect33(() => {
|
|
13677
14230
|
if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
|
|
13678
14231
|
console.log("[WalletConnectHandler] Modal closed without connecting");
|
|
13679
14232
|
onLinkingComplete(false);
|
|
@@ -13749,7 +14302,7 @@ function WalletConnectHandler() {
|
|
|
13749
14302
|
setPage(passportWalletAddress ? "manage-wallet" /* MANAGE_WALLET */ : "auth" /* AUTH */);
|
|
13750
14303
|
}
|
|
13751
14304
|
});
|
|
13752
|
-
|
|
14305
|
+
useEffect33(() => {
|
|
13753
14306
|
if (!!chain?.id && isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
13754
14307
|
console.log("[WalletConnectHandler] handleWalletSign triggered");
|
|
13755
14308
|
handleWalletSign({ chainId: chain.id, signingWalletAddress: walletAddress });
|
|
@@ -13759,7 +14312,7 @@ function WalletConnectHandler() {
|
|
|
13759
14312
|
}
|
|
13760
14313
|
|
|
13761
14314
|
// src/context/LumiaPassportSessionContext.tsx
|
|
13762
|
-
import { jsx as
|
|
14315
|
+
import { jsx as jsx74, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
13763
14316
|
var useLumiaPassportSession = create6((set) => ({
|
|
13764
14317
|
isLoading: false,
|
|
13765
14318
|
usePaymaster: true,
|
|
@@ -13785,17 +14338,17 @@ var useLumiaPassportSession = create6((set) => ({
|
|
|
13785
14338
|
}));
|
|
13786
14339
|
function LumiaPassportSessionProvider({ children }) {
|
|
13787
14340
|
const config = useLumiaPassportConfig().config;
|
|
13788
|
-
return /* @__PURE__ */
|
|
14341
|
+
return /* @__PURE__ */ jsxs65(Fragment28, { children: [
|
|
13789
14342
|
children,
|
|
13790
|
-
config.current?.wallet?.enabled && /* @__PURE__ */
|
|
13791
|
-
/* @__PURE__ */
|
|
13792
|
-
/* @__PURE__ */
|
|
14343
|
+
config.current?.wallet?.enabled && /* @__PURE__ */ jsx74(WalletConnectHandler, {}),
|
|
14344
|
+
/* @__PURE__ */ jsx74(BalanceFeedProvider, {}),
|
|
14345
|
+
/* @__PURE__ */ jsx74(
|
|
13793
14346
|
TssManagerWithRef,
|
|
13794
14347
|
{
|
|
13795
14348
|
mpcPin: void 0
|
|
13796
14349
|
}
|
|
13797
14350
|
),
|
|
13798
|
-
/* @__PURE__ */
|
|
14351
|
+
/* @__PURE__ */ jsx74(LumiaPassportDialog, {})
|
|
13799
14352
|
] });
|
|
13800
14353
|
}
|
|
13801
14354
|
|
|
@@ -13830,21 +14383,21 @@ var wagmiConfig = createConfig({
|
|
|
13830
14383
|
});
|
|
13831
14384
|
|
|
13832
14385
|
// src/context/WagmiContext.tsx
|
|
13833
|
-
import { jsx as
|
|
14386
|
+
import { jsx as jsx75 } from "react/jsx-runtime";
|
|
13834
14387
|
var LumiaWagmiProvider = ({ children }) => {
|
|
13835
|
-
return /* @__PURE__ */
|
|
14388
|
+
return /* @__PURE__ */ jsx75(WagmiProvider, { config: wagmiConfig, children });
|
|
13836
14389
|
};
|
|
13837
14390
|
|
|
13838
14391
|
// src/context/LumiaPassportContext.tsx
|
|
13839
|
-
import { jsx as
|
|
14392
|
+
import { jsx as jsx76 } from "react/jsx-runtime";
|
|
13840
14393
|
var LumiaPassportContext = createContext(void 0);
|
|
13841
14394
|
function LumiaPassportProvider(props) {
|
|
13842
14395
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
13843
14396
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
13844
14397
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
13845
|
-
|
|
13846
|
-
const config =
|
|
13847
|
-
const updateConfig =
|
|
14398
|
+
useEffect34(() => notifyNoProjetctId(projectId), [projectId]);
|
|
14399
|
+
const config = useRef15({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
14400
|
+
const updateConfig = useCallback23((updates) => {
|
|
13848
14401
|
const prev = config.current;
|
|
13849
14402
|
const next = { ...prev };
|
|
13850
14403
|
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
@@ -13879,7 +14432,7 @@ function LumiaPassportProvider(props) {
|
|
|
13879
14432
|
}
|
|
13880
14433
|
config.current = next;
|
|
13881
14434
|
}, []);
|
|
13882
|
-
|
|
14435
|
+
useEffect34(() => {
|
|
13883
14436
|
if (typeof window === "undefined" || !projectId) return;
|
|
13884
14437
|
const mergedConfig = merge2(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
13885
14438
|
updateConfig(mergedConfig);
|
|
@@ -13924,8 +14477,8 @@ function LumiaPassportProvider(props) {
|
|
|
13924
14477
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
13925
14478
|
}
|
|
13926
14479
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
13927
|
-
const contextValue =
|
|
13928
|
-
return /* @__PURE__ */
|
|
14480
|
+
const contextValue = useMemo7(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
14481
|
+
return /* @__PURE__ */ jsx76(LumiaWagmiProvider, { children: /* @__PURE__ */ jsx76(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
13929
14482
|
}
|
|
13930
14483
|
var useLumiaPassportConfig = () => {
|
|
13931
14484
|
const ctx = useContext(LumiaPassportContext);
|
|
@@ -13935,11 +14488,11 @@ var useLumiaPassportConfig = () => {
|
|
|
13935
14488
|
|
|
13936
14489
|
// src/components/ConnectWalletButton.tsx
|
|
13937
14490
|
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
13938
|
-
import { Cloud as Cloud5, Laptop as Laptop2, Loader as Loader25, Shield as
|
|
13939
|
-
import { useEffect as
|
|
14491
|
+
import { Cloud as Cloud5, Laptop as Laptop2, Loader as Loader25, Shield as Shield4 } from "lucide-react";
|
|
14492
|
+
import { useEffect as useEffect35, useMemo as useMemo8 } from "react";
|
|
13940
14493
|
init_auth();
|
|
13941
14494
|
init_profile();
|
|
13942
|
-
import { Fragment as
|
|
14495
|
+
import { Fragment as Fragment29, jsx as jsx77, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
13943
14496
|
function getFormattedStatus(label, status, showStatus) {
|
|
13944
14497
|
const isStatus = showStatus && status && status !== "idle" && status !== "ready";
|
|
13945
14498
|
if (!isStatus) return label;
|
|
@@ -13958,7 +14511,7 @@ function ConnectWalletButton(props) {
|
|
|
13958
14511
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
13959
14512
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
13960
14513
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
13961
|
-
|
|
14514
|
+
useEffect35(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
13962
14515
|
const { data: profile, isLoading: isProfileLoading } = useQuery18({
|
|
13963
14516
|
retry: false,
|
|
13964
14517
|
enabled: !!address,
|
|
@@ -13967,7 +14520,7 @@ function ConnectWalletButton(props) {
|
|
|
13967
14520
|
});
|
|
13968
14521
|
const avatar = jwtTokenManager2.getAvatar();
|
|
13969
14522
|
const displayName = profile?.nicknameDisplay || profile?.displayName || jwtTokenManager2.getDisplayName();
|
|
13970
|
-
const indicators =
|
|
14523
|
+
const indicators = useMemo8(() => {
|
|
13971
14524
|
const userId = jwtTokenManager2.getUserId();
|
|
13972
14525
|
if (!userId) return { server: false, local: false, backup: false };
|
|
13973
14526
|
const server = jwtTokenManager2.getHasKeyshare() ?? false;
|
|
@@ -13975,20 +14528,20 @@ function ConnectWalletButton(props) {
|
|
|
13975
14528
|
return { server, local, backup: hasServerVault };
|
|
13976
14529
|
}, [session, address, hasServerVault]);
|
|
13977
14530
|
const isConnecting = connectButtonLabel !== label || isLoading;
|
|
13978
|
-
return /* @__PURE__ */
|
|
14531
|
+
return /* @__PURE__ */ jsx77("div", { "data-lumia-passport-mode": colorMode, className: cn("lumia-scope w-fit h-fit", className), children: !address ? (
|
|
13979
14532
|
/** external Buttons can be provided */
|
|
13980
|
-
/* @__PURE__ */
|
|
14533
|
+
/* @__PURE__ */ jsx77(Fragment29, { children: ConnectButton ? /* @__PURE__ */ jsxs66(
|
|
13981
14534
|
ConnectButton,
|
|
13982
14535
|
{
|
|
13983
14536
|
type: "button",
|
|
13984
14537
|
disabled: isConnecting,
|
|
13985
14538
|
onClick: () => setPage("auth" /* AUTH */),
|
|
13986
14539
|
children: [
|
|
13987
|
-
isConnecting && /* @__PURE__ */
|
|
14540
|
+
isConnecting && /* @__PURE__ */ jsx77(Loader25, { className: "w-4 h-4 animate-spin" }),
|
|
13988
14541
|
connectButtonLabel
|
|
13989
14542
|
]
|
|
13990
14543
|
}
|
|
13991
|
-
) : /* @__PURE__ */
|
|
14544
|
+
) : /* @__PURE__ */ jsxs66(
|
|
13992
14545
|
Button,
|
|
13993
14546
|
{
|
|
13994
14547
|
type: "button",
|
|
@@ -14005,12 +14558,12 @@ function ConnectWalletButton(props) {
|
|
|
14005
14558
|
"disabled:hover:bg-[var(--l-pass-bg)] disabled:active:bg-[var(--l-pass-bg)]"
|
|
14006
14559
|
),
|
|
14007
14560
|
children: [
|
|
14008
|
-
isConnecting && /* @__PURE__ */
|
|
14561
|
+
isConnecting && /* @__PURE__ */ jsx77(Loader25, { className: "w-4 h-4 animate-spin" }),
|
|
14009
14562
|
connectButtonLabel.toUpperCase()
|
|
14010
14563
|
]
|
|
14011
14564
|
}
|
|
14012
14565
|
) })
|
|
14013
|
-
) : /* @__PURE__ */
|
|
14566
|
+
) : /* @__PURE__ */ jsxs66(
|
|
14014
14567
|
"button",
|
|
14015
14568
|
{
|
|
14016
14569
|
type: "button",
|
|
@@ -14023,23 +14576,23 @@ function ConnectWalletButton(props) {
|
|
|
14023
14576
|
"rounded-[var(--l-pass-bdrs)] p-4 max-w-sm min-w-[256px]"
|
|
14024
14577
|
),
|
|
14025
14578
|
children: [
|
|
14026
|
-
/* @__PURE__ */
|
|
14027
|
-
/* @__PURE__ */
|
|
14028
|
-
/* @__PURE__ */
|
|
14029
|
-
isProfileLoading ? /* @__PURE__ */
|
|
14030
|
-
/* @__PURE__ */
|
|
14579
|
+
/* @__PURE__ */ jsx77("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ jsx77("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx77(LumiaIcon, { width: 48, height: 48 }) }),
|
|
14580
|
+
/* @__PURE__ */ jsxs66("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
|
|
14581
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
14582
|
+
isProfileLoading ? /* @__PURE__ */ jsx77(Loader25, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx77("span", { className: "w-fit text-[14px] leading-4 truncate max-w-[144px] text-[var(--l-pass-fg)]", children: displayName }),
|
|
14583
|
+
/* @__PURE__ */ jsx77(KYCStatus, {})
|
|
14031
14584
|
] }),
|
|
14032
|
-
/* @__PURE__ */
|
|
14585
|
+
/* @__PURE__ */ jsx77(BalanceView, {})
|
|
14033
14586
|
] }),
|
|
14034
|
-
/* @__PURE__ */
|
|
14035
|
-
/* @__PURE__ */
|
|
14036
|
-
/* @__PURE__ */
|
|
14587
|
+
/* @__PURE__ */ jsxs66("div", { className: "flex items-center space-x-1", children: [
|
|
14588
|
+
/* @__PURE__ */ jsxs66("div", { className: "group relative", children: [
|
|
14589
|
+
/* @__PURE__ */ jsx77(
|
|
14037
14590
|
Cloud5,
|
|
14038
14591
|
{
|
|
14039
14592
|
className: `w-3 h-3 ${indicators.server ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14040
14593
|
}
|
|
14041
14594
|
),
|
|
14042
|
-
/* @__PURE__ */
|
|
14595
|
+
/* @__PURE__ */ jsxs66(
|
|
14043
14596
|
"div",
|
|
14044
14597
|
{
|
|
14045
14598
|
className: cn(
|
|
@@ -14054,14 +14607,14 @@ function ConnectWalletButton(props) {
|
|
|
14054
14607
|
}
|
|
14055
14608
|
)
|
|
14056
14609
|
] }),
|
|
14057
|
-
/* @__PURE__ */
|
|
14058
|
-
/* @__PURE__ */
|
|
14610
|
+
/* @__PURE__ */ jsxs66("div", { className: "group relative", children: [
|
|
14611
|
+
/* @__PURE__ */ jsx77(
|
|
14059
14612
|
Laptop2,
|
|
14060
14613
|
{
|
|
14061
14614
|
className: `w-3 h-3 ${indicators.local ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14062
14615
|
}
|
|
14063
14616
|
),
|
|
14064
|
-
/* @__PURE__ */
|
|
14617
|
+
/* @__PURE__ */ jsxs66(
|
|
14065
14618
|
"div",
|
|
14066
14619
|
{
|
|
14067
14620
|
className: cn(
|
|
@@ -14076,14 +14629,14 @@ function ConnectWalletButton(props) {
|
|
|
14076
14629
|
}
|
|
14077
14630
|
)
|
|
14078
14631
|
] }),
|
|
14079
|
-
/* @__PURE__ */
|
|
14080
|
-
/* @__PURE__ */
|
|
14081
|
-
|
|
14632
|
+
/* @__PURE__ */ jsxs66("div", { className: "group relative", children: [
|
|
14633
|
+
/* @__PURE__ */ jsx77(
|
|
14634
|
+
Shield4,
|
|
14082
14635
|
{
|
|
14083
14636
|
className: `w-3 h-3 ${indicators.backup ? "text-[var(--l-pass-bg-success)]" : "text-[var(--l-pass-bg-warning)]"}`
|
|
14084
14637
|
}
|
|
14085
14638
|
),
|
|
14086
|
-
/* @__PURE__ */
|
|
14639
|
+
/* @__PURE__ */ jsxs66(
|
|
14087
14640
|
"div",
|
|
14088
14641
|
{
|
|
14089
14642
|
className: cn(
|
|
@@ -14099,7 +14652,7 @@ function ConnectWalletButton(props) {
|
|
|
14099
14652
|
)
|
|
14100
14653
|
] })
|
|
14101
14654
|
] }),
|
|
14102
|
-
!!settingsNotifications.length && /* @__PURE__ */
|
|
14655
|
+
!!settingsNotifications.length && /* @__PURE__ */ jsx77(
|
|
14103
14656
|
"div",
|
|
14104
14657
|
{
|
|
14105
14658
|
className: cn(
|
|
@@ -14140,13 +14693,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
14140
14693
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
14141
14694
|
|
|
14142
14695
|
// src/hooks/useLumiaPassportOpen.ts
|
|
14143
|
-
import { useCallback as
|
|
14696
|
+
import { useCallback as useCallback24 } from "react";
|
|
14144
14697
|
function useLumiaPassportOpen() {
|
|
14145
14698
|
const page = useLayoutDataStore((st) => st.page);
|
|
14146
14699
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
14147
14700
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
14148
14701
|
const address = useLumiaPassportSession((st) => st.address);
|
|
14149
|
-
const open =
|
|
14702
|
+
const open = useCallback24(
|
|
14150
14703
|
(passportPage, params) => {
|
|
14151
14704
|
if (!address) return setPage("auth" /* AUTH */);
|
|
14152
14705
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -14155,12 +14708,12 @@ function useLumiaPassportOpen() {
|
|
|
14155
14708
|
},
|
|
14156
14709
|
[setPage, setPageParams, address]
|
|
14157
14710
|
);
|
|
14158
|
-
const close =
|
|
14711
|
+
const close = useCallback24(() => setPage(null), [setPage]);
|
|
14159
14712
|
return { open, close, isOpen: page !== null };
|
|
14160
14713
|
}
|
|
14161
14714
|
|
|
14162
14715
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
14163
|
-
import { useCallback as
|
|
14716
|
+
import { useCallback as useCallback25, useEffect as useEffect36 } from "react";
|
|
14164
14717
|
function useLumiaPassportColorMode() {
|
|
14165
14718
|
const {
|
|
14166
14719
|
config: { current: config }
|
|
@@ -14168,14 +14721,14 @@ function useLumiaPassportColorMode() {
|
|
|
14168
14721
|
const preferedColorMode = config?.preferedColorMode;
|
|
14169
14722
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
14170
14723
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
14171
|
-
const setColorMode =
|
|
14724
|
+
const setColorMode = useCallback25(
|
|
14172
14725
|
(mode) => {
|
|
14173
14726
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
14174
14727
|
handleStoreColorMode(mode);
|
|
14175
14728
|
},
|
|
14176
14729
|
[handleStoreColorMode]
|
|
14177
14730
|
);
|
|
14178
|
-
|
|
14731
|
+
useEffect36(() => {
|
|
14179
14732
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
14180
14733
|
if (!targetColorMode && !preferedColorMode) {
|
|
14181
14734
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -14193,23 +14746,23 @@ function useLumiaPassportColorMode() {
|
|
|
14193
14746
|
|
|
14194
14747
|
// src/components/ThemeToggle.tsx
|
|
14195
14748
|
import { Moon, Sun } from "lucide-react";
|
|
14196
|
-
import { jsx as
|
|
14749
|
+
import { jsx as jsx78 } from "react/jsx-runtime";
|
|
14197
14750
|
function ThemeToggle(props) {
|
|
14198
14751
|
const { colorMode, setColorMode } = useLumiaPassportColorMode();
|
|
14199
|
-
return /* @__PURE__ */
|
|
14752
|
+
return /* @__PURE__ */ jsx78(
|
|
14200
14753
|
"div",
|
|
14201
14754
|
{
|
|
14202
14755
|
className: "lumia-scope",
|
|
14203
14756
|
"data-lumia-passport-mode": colorMode,
|
|
14204
14757
|
style: { width: "fit-content", height: "fit-content" },
|
|
14205
|
-
children: /* @__PURE__ */
|
|
14758
|
+
children: /* @__PURE__ */ jsx78(
|
|
14206
14759
|
Button,
|
|
14207
14760
|
{
|
|
14208
14761
|
...props,
|
|
14209
14762
|
variant: "ghost",
|
|
14210
14763
|
onClick: () => setColorMode(colorMode === "light" ? "dark" : "light"),
|
|
14211
14764
|
title: `Current theme: ${colorMode}. Click to switch.`,
|
|
14212
|
-
children: colorMode === "dark" ? /* @__PURE__ */
|
|
14765
|
+
children: colorMode === "dark" ? /* @__PURE__ */ jsx78(Sun, { className: "w-4 h-4" }) : /* @__PURE__ */ jsx78(Moon, { className: "w-4 h-4" })
|
|
14213
14766
|
}
|
|
14214
14767
|
)
|
|
14215
14768
|
}
|
|
@@ -14218,7 +14771,7 @@ function ThemeToggle(props) {
|
|
|
14218
14771
|
|
|
14219
14772
|
// src/context/RainbowKitContext.tsx
|
|
14220
14773
|
import { darkTheme, lightTheme, RainbowKitProvider } from "@rainbow-me/rainbowkit";
|
|
14221
|
-
import { useMemo as
|
|
14774
|
+
import { useMemo as useMemo9 } from "react";
|
|
14222
14775
|
import { WagmiProvider as WagmiProvider2 } from "wagmi";
|
|
14223
14776
|
|
|
14224
14777
|
// src/config/rainbowkit.ts
|
|
@@ -14446,12 +14999,12 @@ var rainbowTheme = {
|
|
|
14446
14999
|
|
|
14447
15000
|
// src/context/RainbowKitContext.tsx
|
|
14448
15001
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
14449
|
-
import { Fragment as
|
|
15002
|
+
import { Fragment as Fragment30, jsx as jsx79 } from "react/jsx-runtime";
|
|
14450
15003
|
function LumiaRainbowKitProvider({ children }) {
|
|
14451
15004
|
const config = useLumiaPassportConfig().config;
|
|
14452
15005
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
14453
|
-
const rainbowConfig2 =
|
|
14454
|
-
const customTheme =
|
|
15006
|
+
const rainbowConfig2 = useMemo9(() => createRainbowConfig(config.current?.wallet?.walletConnectProjectId), [config]);
|
|
15007
|
+
const customTheme = useMemo9(
|
|
14455
15008
|
() => colorMode === "dark" ? {
|
|
14456
15009
|
...darkTheme(),
|
|
14457
15010
|
colors: { ...darkTheme().colors, ...rainbowTheme.darkMode.colors },
|
|
@@ -14465,14 +15018,14 @@ function LumiaRainbowKitProvider({ children }) {
|
|
|
14465
15018
|
},
|
|
14466
15019
|
[colorMode]
|
|
14467
15020
|
);
|
|
14468
|
-
if (!config.current?.wallet?.enabled) return /* @__PURE__ */
|
|
14469
|
-
return /* @__PURE__ */
|
|
15021
|
+
if (!config.current?.wallet?.enabled) return /* @__PURE__ */ jsx79(Fragment30, { children });
|
|
15022
|
+
return /* @__PURE__ */ jsx79(WagmiProvider2, { config: rainbowConfig2, children: /* @__PURE__ */ jsx79(RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
|
|
14470
15023
|
}
|
|
14471
15024
|
|
|
14472
15025
|
// src/internal/components/UserOpStatus.tsx
|
|
14473
15026
|
init_base();
|
|
14474
15027
|
import { AlertCircle as AlertCircle6, CheckCircle2 as CheckCircle26, Clock as Clock2, Copy as Copy5, ExternalLink as ExternalLink2, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
14475
|
-
import * as
|
|
15028
|
+
import * as React10 from "react";
|
|
14476
15029
|
|
|
14477
15030
|
// src/internal/utils/cn.ts
|
|
14478
15031
|
import { clsx as clsx2 } from "clsx";
|
|
@@ -14483,8 +15036,8 @@ function cn2(...inputs) {
|
|
|
14483
15036
|
|
|
14484
15037
|
// src/internal/components/Address.tsx
|
|
14485
15038
|
import { Copy as Copy4, ExternalLink } from "lucide-react";
|
|
14486
|
-
import * as
|
|
14487
|
-
import { jsx as
|
|
15039
|
+
import * as React9 from "react";
|
|
15040
|
+
import { jsx as jsx80, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
14488
15041
|
function toExplorerAddressUrl(address, chain) {
|
|
14489
15042
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
14490
15043
|
if (!base2) return null;
|
|
@@ -14505,12 +15058,12 @@ var Address = ({
|
|
|
14505
15058
|
}) => {
|
|
14506
15059
|
const addr = address || "";
|
|
14507
15060
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
14508
|
-
const [copied, setCopied] =
|
|
14509
|
-
if (!addr) return /* @__PURE__ */
|
|
14510
|
-
return /* @__PURE__ */
|
|
14511
|
-
label && /* @__PURE__ */
|
|
14512
|
-
/* @__PURE__ */
|
|
14513
|
-
showCopy && /* @__PURE__ */
|
|
15061
|
+
const [copied, setCopied] = React9.useState(false);
|
|
15062
|
+
if (!addr) return /* @__PURE__ */ jsx80("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
15063
|
+
return /* @__PURE__ */ jsxs67("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
15064
|
+
label && /* @__PURE__ */ jsx80("span", { className: "text-sm font-medium", children: label }),
|
|
15065
|
+
/* @__PURE__ */ jsx80("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
|
|
15066
|
+
showCopy && /* @__PURE__ */ jsx80(
|
|
14514
15067
|
Button,
|
|
14515
15068
|
{
|
|
14516
15069
|
variant: "ghost",
|
|
@@ -14524,10 +15077,10 @@ var Address = ({
|
|
|
14524
15077
|
} catch {
|
|
14525
15078
|
}
|
|
14526
15079
|
},
|
|
14527
|
-
children: /* @__PURE__ */
|
|
15080
|
+
children: /* @__PURE__ */ jsx80(Copy4, { className: "h-4 w-4" })
|
|
14528
15081
|
}
|
|
14529
15082
|
),
|
|
14530
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
15083
|
+
showExplorer && explorer && /* @__PURE__ */ jsx80(
|
|
14531
15084
|
"a",
|
|
14532
15085
|
{
|
|
14533
15086
|
href: explorer,
|
|
@@ -14535,7 +15088,7 @@ var Address = ({
|
|
|
14535
15088
|
rel: "noreferrer noopener",
|
|
14536
15089
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
14537
15090
|
title: "Open in explorer",
|
|
14538
|
-
children: /* @__PURE__ */
|
|
15091
|
+
children: /* @__PURE__ */ jsx80(ExternalLink, { className: "h-4 w-4" })
|
|
14539
15092
|
}
|
|
14540
15093
|
)
|
|
14541
15094
|
] });
|
|
@@ -14543,7 +15096,7 @@ var Address = ({
|
|
|
14543
15096
|
|
|
14544
15097
|
// src/internal/components/ui/badge.tsx
|
|
14545
15098
|
import { cva as cva2 } from "class-variance-authority";
|
|
14546
|
-
import { jsx as
|
|
15099
|
+
import { jsx as jsx81 } from "react/jsx-runtime";
|
|
14547
15100
|
var badgeVariants = cva2(
|
|
14548
15101
|
"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",
|
|
14549
15102
|
{
|
|
@@ -14563,11 +15116,11 @@ var badgeVariants = cva2(
|
|
|
14563
15116
|
}
|
|
14564
15117
|
);
|
|
14565
15118
|
function Badge({ className, variant, ...props }) {
|
|
14566
|
-
return /* @__PURE__ */
|
|
15119
|
+
return /* @__PURE__ */ jsx81("div", { className: cn2(badgeVariants({ variant }), className), ...props });
|
|
14567
15120
|
}
|
|
14568
15121
|
|
|
14569
15122
|
// src/internal/components/UserOpStatus.tsx
|
|
14570
|
-
import { jsx as
|
|
15123
|
+
import { jsx as jsx82, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
14571
15124
|
var UserOpStatus = ({
|
|
14572
15125
|
userOpHash,
|
|
14573
15126
|
chain,
|
|
@@ -14578,20 +15131,20 @@ var UserOpStatus = ({
|
|
|
14578
15131
|
externalState
|
|
14579
15132
|
}) => {
|
|
14580
15133
|
const useExternalState = !!externalState;
|
|
14581
|
-
const [internalReceipt, setInternalReceipt] =
|
|
14582
|
-
const [internalMempool, setInternalMempool] =
|
|
14583
|
-
const [internalError, setInternalError] =
|
|
14584
|
-
const [attempt, setAttempt] =
|
|
14585
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
14586
|
-
const [timedOut, setTimedOut] =
|
|
14587
|
-
const [rejected, setRejected] =
|
|
14588
|
-
const intervalRef =
|
|
14589
|
-
const startTimeRef =
|
|
15134
|
+
const [internalReceipt, setInternalReceipt] = React10.useState(null);
|
|
15135
|
+
const [internalMempool, setInternalMempool] = React10.useState(null);
|
|
15136
|
+
const [internalError, setInternalError] = React10.useState(null);
|
|
15137
|
+
const [attempt, setAttempt] = React10.useState(0);
|
|
15138
|
+
const [internalRefreshing, setInternalRefreshing] = React10.useState(false);
|
|
15139
|
+
const [timedOut, setTimedOut] = React10.useState(false);
|
|
15140
|
+
const [rejected, setRejected] = React10.useState(false);
|
|
15141
|
+
const intervalRef = React10.useRef(null);
|
|
15142
|
+
const startTimeRef = React10.useRef(Date.now());
|
|
14590
15143
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
14591
15144
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
14592
15145
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
14593
15146
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
14594
|
-
const rpc =
|
|
15147
|
+
const rpc = React10.useCallback(async (method, params) => {
|
|
14595
15148
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
14596
15149
|
const res = await fetch(getBundlerUrl(), {
|
|
14597
15150
|
method: "POST",
|
|
@@ -14602,14 +15155,14 @@ var UserOpStatus = ({
|
|
|
14602
15155
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
14603
15156
|
return json.result;
|
|
14604
15157
|
}, []);
|
|
14605
|
-
const extractMempoolInfo =
|
|
15158
|
+
const extractMempoolInfo = React10.useCallback((m) => {
|
|
14606
15159
|
if (!m) return null;
|
|
14607
15160
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
14608
15161
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
14609
15162
|
if (!entryPoint && !sender) return null;
|
|
14610
15163
|
return { entryPoint, sender };
|
|
14611
15164
|
}, []);
|
|
14612
|
-
const tick =
|
|
15165
|
+
const tick = React10.useCallback(async () => {
|
|
14613
15166
|
if (useExternalState) return;
|
|
14614
15167
|
const elapsed = Date.now() - startTimeRef.current;
|
|
14615
15168
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -14653,7 +15206,7 @@ var UserOpStatus = ({
|
|
|
14653
15206
|
setAttempt((x) => x + 1);
|
|
14654
15207
|
}
|
|
14655
15208
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
14656
|
-
|
|
15209
|
+
React10.useEffect(() => {
|
|
14657
15210
|
if (useExternalState) return;
|
|
14658
15211
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
14659
15212
|
startTimeRef.current = Date.now();
|
|
@@ -14665,7 +15218,7 @@ var UserOpStatus = ({
|
|
|
14665
15218
|
setAttempt(0);
|
|
14666
15219
|
setInternalRefreshing(false);
|
|
14667
15220
|
}, [userOpHash, useExternalState]);
|
|
14668
|
-
|
|
15221
|
+
React10.useEffect(() => {
|
|
14669
15222
|
if (useExternalState) {
|
|
14670
15223
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
14671
15224
|
return;
|
|
@@ -14700,35 +15253,35 @@ var UserOpStatus = ({
|
|
|
14700
15253
|
const stateBadge = () => {
|
|
14701
15254
|
if (receipt) {
|
|
14702
15255
|
const ok = !!receipt.success;
|
|
14703
|
-
return /* @__PURE__ */
|
|
14704
|
-
ok ? /* @__PURE__ */
|
|
15256
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
|
|
15257
|
+
ok ? /* @__PURE__ */ jsx82(CheckCircle26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx82(AlertCircle6, { className: "h-3 w-3" }),
|
|
14705
15258
|
ok ? "Included" : "Failed"
|
|
14706
15259
|
] });
|
|
14707
15260
|
}
|
|
14708
15261
|
if (rejected) {
|
|
14709
|
-
return /* @__PURE__ */
|
|
14710
|
-
/* @__PURE__ */
|
|
15262
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
15263
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-3 w-3" }),
|
|
14711
15264
|
" Rejected by bundler"
|
|
14712
15265
|
] });
|
|
14713
15266
|
}
|
|
14714
15267
|
if (timedOut) {
|
|
14715
|
-
return /* @__PURE__ */
|
|
14716
|
-
/* @__PURE__ */
|
|
15268
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "warning", className: "gap-1", children: [
|
|
15269
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-3 w-3" }),
|
|
14717
15270
|
" Timeout - may be rejected"
|
|
14718
15271
|
] });
|
|
14719
15272
|
}
|
|
14720
15273
|
if (mempool) {
|
|
14721
|
-
return /* @__PURE__ */
|
|
14722
|
-
/* @__PURE__ */
|
|
15274
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "outline", className: "gap-1", children: [
|
|
15275
|
+
/* @__PURE__ */ jsx82(Clock2, { className: "h-3 w-3" }),
|
|
14723
15276
|
" Pending in bundler"
|
|
14724
15277
|
] });
|
|
14725
15278
|
}
|
|
14726
|
-
return /* @__PURE__ */
|
|
14727
|
-
/* @__PURE__ */
|
|
15279
|
+
return /* @__PURE__ */ jsxs68(Badge, { variant: "secondary", className: "gap-1", children: [
|
|
15280
|
+
/* @__PURE__ */ jsx82(Clock2, { className: "h-3 w-3" }),
|
|
14728
15281
|
" Waiting"
|
|
14729
15282
|
] });
|
|
14730
15283
|
};
|
|
14731
|
-
return /* @__PURE__ */
|
|
15284
|
+
return /* @__PURE__ */ jsxs68(
|
|
14732
15285
|
"div",
|
|
14733
15286
|
{
|
|
14734
15287
|
className: cn2(
|
|
@@ -14737,20 +15290,20 @@ var UserOpStatus = ({
|
|
|
14737
15290
|
),
|
|
14738
15291
|
style: { textAlign: "left", listStyle: "none" },
|
|
14739
15292
|
children: [
|
|
14740
|
-
/* @__PURE__ */
|
|
14741
|
-
/* @__PURE__ */
|
|
15293
|
+
/* @__PURE__ */ jsxs68("div", { className: "flex items-center justify-between mb-3", children: [
|
|
15294
|
+
/* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-2", children: [
|
|
14742
15295
|
stateBadge(),
|
|
14743
|
-
/* @__PURE__ */
|
|
15296
|
+
/* @__PURE__ */ jsx82("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
|
|
14744
15297
|
] }),
|
|
14745
|
-
/* @__PURE__ */
|
|
14746
|
-
/* @__PURE__ */
|
|
14747
|
-
/* @__PURE__ */
|
|
15298
|
+
/* @__PURE__ */ jsxs68(Button, { variant: "ghost", size: "small", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
|
|
15299
|
+
/* @__PURE__ */ jsx82(RefreshCw4, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
|
|
15300
|
+
/* @__PURE__ */ jsx82("span", { className: "text-xs", children: "Refresh" })
|
|
14748
15301
|
] })
|
|
14749
15302
|
] }),
|
|
14750
|
-
/* @__PURE__ */
|
|
14751
|
-
/* @__PURE__ */
|
|
14752
|
-
/* @__PURE__ */
|
|
14753
|
-
/* @__PURE__ */
|
|
15303
|
+
/* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-2 mb-2", children: [
|
|
15304
|
+
/* @__PURE__ */ jsx82("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
|
|
15305
|
+
/* @__PURE__ */ jsx82("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
|
|
15306
|
+
/* @__PURE__ */ jsx82(
|
|
14754
15307
|
Button,
|
|
14755
15308
|
{
|
|
14756
15309
|
variant: "ghost",
|
|
@@ -14762,14 +15315,14 @@ var UserOpStatus = ({
|
|
|
14762
15315
|
} catch {
|
|
14763
15316
|
}
|
|
14764
15317
|
},
|
|
14765
|
-
children: /* @__PURE__ */
|
|
15318
|
+
children: /* @__PURE__ */ jsx82(Copy5, { className: "h-3.5 w-3.5" })
|
|
14766
15319
|
}
|
|
14767
15320
|
)
|
|
14768
15321
|
] }),
|
|
14769
|
-
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */
|
|
14770
|
-
/* @__PURE__ */
|
|
14771
|
-
/* @__PURE__ */
|
|
14772
|
-
/* @__PURE__ */
|
|
15322
|
+
receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
15323
|
+
/* @__PURE__ */ jsx82("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
|
|
15324
|
+
/* @__PURE__ */ jsx82("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
|
|
15325
|
+
/* @__PURE__ */ jsx82(
|
|
14773
15326
|
Button,
|
|
14774
15327
|
{
|
|
14775
15328
|
variant: "ghost",
|
|
@@ -14781,10 +15334,10 @@ var UserOpStatus = ({
|
|
|
14781
15334
|
} catch {
|
|
14782
15335
|
}
|
|
14783
15336
|
},
|
|
14784
|
-
children: /* @__PURE__ */
|
|
15337
|
+
children: /* @__PURE__ */ jsx82(Copy5, { className: "h-3.5 w-3.5" })
|
|
14785
15338
|
}
|
|
14786
15339
|
),
|
|
14787
|
-
chain?.blockExplorers?.default?.url && /* @__PURE__ */
|
|
15340
|
+
chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx82(
|
|
14788
15341
|
"a",
|
|
14789
15342
|
{
|
|
14790
15343
|
href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
|
|
@@ -14792,11 +15345,11 @@ var UserOpStatus = ({
|
|
|
14792
15345
|
rel: "noreferrer noopener",
|
|
14793
15346
|
className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
|
|
14794
15347
|
title: "Open in explorer",
|
|
14795
|
-
children: /* @__PURE__ */
|
|
15348
|
+
children: /* @__PURE__ */ jsx82(ExternalLink2, { className: "h-3.5 w-3.5" })
|
|
14796
15349
|
}
|
|
14797
15350
|
)
|
|
14798
15351
|
] }),
|
|
14799
|
-
receipt && /* @__PURE__ */
|
|
15352
|
+
receipt && /* @__PURE__ */ jsxs68("div", { className: "text-xs text-muted-foreground mb-3", children: [
|
|
14800
15353
|
"Block ",
|
|
14801
15354
|
parseInt(receipt.receipt?.blockNumber || "0x0", 16),
|
|
14802
15355
|
" \u2022 Gas Used",
|
|
@@ -14805,32 +15358,32 @@ var UserOpStatus = ({
|
|
|
14805
15358
|
" \u2022 Success ",
|
|
14806
15359
|
String(!!receipt.success)
|
|
14807
15360
|
] }),
|
|
14808
|
-
/* @__PURE__ */
|
|
15361
|
+
/* @__PURE__ */ jsx82("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs68("span", { className: "ml-2", children: [
|
|
14809
15362
|
"\u2022 Polling for ",
|
|
14810
15363
|
Math.round((Date.now() - startTimeRef.current) / 1e3),
|
|
14811
15364
|
"s"
|
|
14812
15365
|
] }) }),
|
|
14813
|
-
mempool && /* @__PURE__ */
|
|
14814
|
-
/* @__PURE__ */
|
|
15366
|
+
mempool && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
|
|
15367
|
+
/* @__PURE__ */ jsxs68("div", { children: [
|
|
14815
15368
|
"Seen by bundler at ",
|
|
14816
|
-
/* @__PURE__ */
|
|
15369
|
+
/* @__PURE__ */ jsx82(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
|
|
14817
15370
|
] }),
|
|
14818
|
-
/* @__PURE__ */
|
|
15371
|
+
/* @__PURE__ */ jsxs68("div", { children: [
|
|
14819
15372
|
"sender ",
|
|
14820
|
-
/* @__PURE__ */
|
|
15373
|
+
/* @__PURE__ */ jsx82(Address, { address: mempool.sender, chain, truncate: false })
|
|
14821
15374
|
] })
|
|
14822
15375
|
] }),
|
|
14823
|
-
error && /* @__PURE__ */
|
|
14824
|
-
/* @__PURE__ */
|
|
15376
|
+
error && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15377
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-4 w-4" }),
|
|
14825
15378
|
" ",
|
|
14826
15379
|
error
|
|
14827
15380
|
] }),
|
|
14828
|
-
rejected && /* @__PURE__ */
|
|
14829
|
-
/* @__PURE__ */
|
|
15381
|
+
rejected && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15382
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-4 w-4" }),
|
|
14830
15383
|
"UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
|
|
14831
15384
|
] }),
|
|
14832
|
-
timedOut && /* @__PURE__ */
|
|
14833
|
-
/* @__PURE__ */
|
|
15385
|
+
timedOut && /* @__PURE__ */ jsxs68("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
|
|
15386
|
+
/* @__PURE__ */ jsx82(AlertCircle6, { className: "h-4 w-4" }),
|
|
14834
15387
|
"Stopped polling after ",
|
|
14835
15388
|
Math.round(maxPollTimeMs / 1e3),
|
|
14836
15389
|
"s. UserOperation may have been rejected by the bundler."
|
|
@@ -14842,8 +15395,8 @@ var UserOpStatus = ({
|
|
|
14842
15395
|
|
|
14843
15396
|
// src/internal/components/Hash.tsx
|
|
14844
15397
|
import { Copy as Copy6, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
14845
|
-
import * as
|
|
14846
|
-
import { jsx as
|
|
15398
|
+
import * as React11 from "react";
|
|
15399
|
+
import { jsx as jsx83, jsxs as jsxs69 } from "react/jsx-runtime";
|
|
14847
15400
|
function toExplorerUrl(kind, value, chain) {
|
|
14848
15401
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
14849
15402
|
if (!base2) return null;
|
|
@@ -14866,12 +15419,12 @@ var Hash = ({
|
|
|
14866
15419
|
}) => {
|
|
14867
15420
|
const value = hash || "";
|
|
14868
15421
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
14869
|
-
const [copied, setCopied] =
|
|
14870
|
-
if (!value) return /* @__PURE__ */
|
|
14871
|
-
return /* @__PURE__ */
|
|
14872
|
-
label && /* @__PURE__ */
|
|
14873
|
-
/* @__PURE__ */
|
|
14874
|
-
showCopy && /* @__PURE__ */
|
|
15422
|
+
const [copied, setCopied] = React11.useState(false);
|
|
15423
|
+
if (!value) return /* @__PURE__ */ jsx83("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
15424
|
+
return /* @__PURE__ */ jsxs69("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
15425
|
+
label && /* @__PURE__ */ jsx83("span", { className: "text-sm font-medium", children: label }),
|
|
15426
|
+
/* @__PURE__ */ jsx83("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
|
|
15427
|
+
showCopy && /* @__PURE__ */ jsx83(
|
|
14875
15428
|
Button,
|
|
14876
15429
|
{
|
|
14877
15430
|
variant: "ghost",
|
|
@@ -14885,10 +15438,10 @@ var Hash = ({
|
|
|
14885
15438
|
} catch {
|
|
14886
15439
|
}
|
|
14887
15440
|
},
|
|
14888
|
-
children: /* @__PURE__ */
|
|
15441
|
+
children: /* @__PURE__ */ jsx83(Copy6, { className: "h-4 w-4" })
|
|
14889
15442
|
}
|
|
14890
15443
|
),
|
|
14891
|
-
showExplorer && explorer && /* @__PURE__ */
|
|
15444
|
+
showExplorer && explorer && /* @__PURE__ */ jsx83(
|
|
14892
15445
|
"a",
|
|
14893
15446
|
{
|
|
14894
15447
|
href: explorer,
|
|
@@ -14896,7 +15449,7 @@ var Hash = ({
|
|
|
14896
15449
|
rel: "noreferrer noopener",
|
|
14897
15450
|
className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
|
|
14898
15451
|
title: "Open in explorer",
|
|
14899
|
-
children: /* @__PURE__ */
|
|
15452
|
+
children: /* @__PURE__ */ jsx83(ExternalLink3, { className: "h-4 w-4" })
|
|
14900
15453
|
}
|
|
14901
15454
|
)
|
|
14902
15455
|
] });
|
|
@@ -14904,13 +15457,13 @@ var Hash = ({
|
|
|
14904
15457
|
|
|
14905
15458
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
14906
15459
|
init_base();
|
|
14907
|
-
import { useEffect as
|
|
14908
|
-
import { jsx as
|
|
15460
|
+
import { useEffect as useEffect38, useState as useState25 } from "react";
|
|
15461
|
+
import { jsx as jsx84, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
14909
15462
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
14910
|
-
const [transactions, setTransactions] =
|
|
14911
|
-
const [loading, setLoading] =
|
|
14912
|
-
const [error, setError] =
|
|
14913
|
-
|
|
15463
|
+
const [transactions, setTransactions] = useState25([]);
|
|
15464
|
+
const [loading, setLoading] = useState25(true);
|
|
15465
|
+
const [error, setError] = useState25(null);
|
|
15466
|
+
useEffect38(() => {
|
|
14914
15467
|
const fetchTransactions = async () => {
|
|
14915
15468
|
try {
|
|
14916
15469
|
setLoading(true);
|
|
@@ -14956,31 +15509,31 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
14956
15509
|
window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
|
|
14957
15510
|
};
|
|
14958
15511
|
if (loading) {
|
|
14959
|
-
return /* @__PURE__ */
|
|
14960
|
-
/* @__PURE__ */
|
|
14961
|
-
/* @__PURE__ */
|
|
15512
|
+
return /* @__PURE__ */ jsxs70("div", { className: "p-4 text-center", children: [
|
|
15513
|
+
/* @__PURE__ */ jsx84("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
|
|
15514
|
+
/* @__PURE__ */ jsx84("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
|
|
14962
15515
|
] });
|
|
14963
15516
|
}
|
|
14964
15517
|
if (error) {
|
|
14965
|
-
return /* @__PURE__ */
|
|
14966
|
-
/* @__PURE__ */
|
|
14967
|
-
/* @__PURE__ */
|
|
15518
|
+
return /* @__PURE__ */ jsxs70("div", { className: "p-4 text-center", children: [
|
|
15519
|
+
/* @__PURE__ */ jsx84("p", { className: "text-red-600 text-sm", children: error }),
|
|
15520
|
+
/* @__PURE__ */ jsx84("button", { onClick: () => window.location.reload(), className: "mt-2 text-blue-600 text-sm hover:underline", children: "Retry" })
|
|
14968
15521
|
] });
|
|
14969
15522
|
}
|
|
14970
15523
|
if (transactions.length === 0) {
|
|
14971
|
-
return /* @__PURE__ */
|
|
15524
|
+
return /* @__PURE__ */ jsx84("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx84("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
|
|
14972
15525
|
}
|
|
14973
|
-
return /* @__PURE__ */
|
|
15526
|
+
return /* @__PURE__ */ jsx84("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx84("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs70(
|
|
14974
15527
|
"div",
|
|
14975
15528
|
{
|
|
14976
15529
|
className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
14977
15530
|
onClick: () => openTransaction(tx.hash),
|
|
14978
15531
|
children: [
|
|
14979
|
-
/* @__PURE__ */
|
|
14980
|
-
/* @__PURE__ */
|
|
14981
|
-
/* @__PURE__ */
|
|
14982
|
-
/* @__PURE__ */
|
|
14983
|
-
/* @__PURE__ */
|
|
15532
|
+
/* @__PURE__ */ jsxs70("div", { className: "flex justify-between items-start mb-2", children: [
|
|
15533
|
+
/* @__PURE__ */ jsxs70("div", { className: "flex-1", children: [
|
|
15534
|
+
/* @__PURE__ */ jsxs70("div", { className: "flex items-center space-x-2 mb-1", children: [
|
|
15535
|
+
/* @__PURE__ */ jsx84("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress3(tx.hash) }),
|
|
15536
|
+
/* @__PURE__ */ jsx84(
|
|
14984
15537
|
"span",
|
|
14985
15538
|
{
|
|
14986
15539
|
className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`,
|
|
@@ -14988,40 +15541,40 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
14988
15541
|
}
|
|
14989
15542
|
)
|
|
14990
15543
|
] }),
|
|
14991
|
-
/* @__PURE__ */
|
|
14992
|
-
/* @__PURE__ */
|
|
14993
|
-
/* @__PURE__ */
|
|
14994
|
-
/* @__PURE__ */
|
|
15544
|
+
/* @__PURE__ */ jsxs70("div", { className: "text-sm space-y-1", children: [
|
|
15545
|
+
/* @__PURE__ */ jsxs70("div", { children: [
|
|
15546
|
+
/* @__PURE__ */ jsx84("span", { className: "text-gray-600", children: "From:" }),
|
|
15547
|
+
/* @__PURE__ */ jsxs70("span", { className: "font-mono ml-1", children: [
|
|
14995
15548
|
formatAddress3(tx.from.hash),
|
|
14996
|
-
tx.from.is_contract && /* @__PURE__ */
|
|
15549
|
+
tx.from.is_contract && /* @__PURE__ */ jsx84("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
14997
15550
|
] })
|
|
14998
15551
|
] }),
|
|
14999
|
-
/* @__PURE__ */
|
|
15000
|
-
/* @__PURE__ */
|
|
15001
|
-
/* @__PURE__ */
|
|
15552
|
+
/* @__PURE__ */ jsxs70("div", { children: [
|
|
15553
|
+
/* @__PURE__ */ jsx84("span", { className: "text-gray-600", children: "To:" }),
|
|
15554
|
+
/* @__PURE__ */ jsxs70("span", { className: "font-mono ml-1", children: [
|
|
15002
15555
|
formatAddress3(tx.to.hash),
|
|
15003
|
-
tx.to.is_contract && /* @__PURE__ */
|
|
15556
|
+
tx.to.is_contract && /* @__PURE__ */ jsx84("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
|
|
15004
15557
|
] })
|
|
15005
15558
|
] }),
|
|
15006
|
-
/* @__PURE__ */
|
|
15007
|
-
/* @__PURE__ */
|
|
15008
|
-
/* @__PURE__ */
|
|
15559
|
+
/* @__PURE__ */ jsxs70("div", { children: [
|
|
15560
|
+
/* @__PURE__ */ jsx84("span", { className: "text-gray-600", children: "Value:" }),
|
|
15561
|
+
/* @__PURE__ */ jsxs70("span", { className: "font-semibold ml-1", children: [
|
|
15009
15562
|
formatValue3(tx.value),
|
|
15010
15563
|
" LUMIA"
|
|
15011
15564
|
] })
|
|
15012
15565
|
] })
|
|
15013
15566
|
] })
|
|
15014
15567
|
] }),
|
|
15015
|
-
/* @__PURE__ */
|
|
15016
|
-
/* @__PURE__ */
|
|
15017
|
-
/* @__PURE__ */
|
|
15568
|
+
/* @__PURE__ */ jsxs70("div", { className: "text-right text-xs text-gray-500", children: [
|
|
15569
|
+
/* @__PURE__ */ jsx84("div", { children: formatDate3(tx.timestamp) }),
|
|
15570
|
+
/* @__PURE__ */ jsxs70("div", { className: "mt-1", children: [
|
|
15018
15571
|
"Gas: ",
|
|
15019
15572
|
parseInt(tx.gas_used).toLocaleString()
|
|
15020
15573
|
] }),
|
|
15021
|
-
tx.method && /* @__PURE__ */
|
|
15574
|
+
tx.method && /* @__PURE__ */ jsx84("div", { className: "mt-1 text-blue-600", children: tx.method })
|
|
15022
15575
|
] })
|
|
15023
15576
|
] }),
|
|
15024
|
-
tx.transaction_types.length > 0 && /* @__PURE__ */
|
|
15577
|
+
tx.transaction_types.length > 0 && /* @__PURE__ */ jsx84("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx84("span", { className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full", children: type.replace("_", " ") }, idx)) })
|
|
15025
15578
|
]
|
|
15026
15579
|
},
|
|
15027
15580
|
tx.hash
|
|
@@ -15030,7 +15583,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
15030
15583
|
|
|
15031
15584
|
// src/hooks/useUserOpStatus.ts
|
|
15032
15585
|
init_base();
|
|
15033
|
-
import * as
|
|
15586
|
+
import * as React13 from "react";
|
|
15034
15587
|
function useUserOpStatus(options = {}) {
|
|
15035
15588
|
const {
|
|
15036
15589
|
userOpHash,
|
|
@@ -15041,16 +15594,16 @@ function useUserOpStatus(options = {}) {
|
|
|
15041
15594
|
onReceipt,
|
|
15042
15595
|
onTxHash
|
|
15043
15596
|
} = options;
|
|
15044
|
-
const [state, setState] =
|
|
15045
|
-
const [receipt, setReceipt] =
|
|
15046
|
-
const [mempool, setMempool] =
|
|
15047
|
-
const [txHash, setTxHash] =
|
|
15048
|
-
const [error, setError] =
|
|
15049
|
-
const [isPolling, setIsPolling] =
|
|
15050
|
-
const intervalRef =
|
|
15051
|
-
const startTimeRef =
|
|
15052
|
-
const prevStateRef =
|
|
15053
|
-
const rpc =
|
|
15597
|
+
const [state, setState] = React13.useState("waiting");
|
|
15598
|
+
const [receipt, setReceipt] = React13.useState(null);
|
|
15599
|
+
const [mempool, setMempool] = React13.useState(null);
|
|
15600
|
+
const [txHash, setTxHash] = React13.useState(null);
|
|
15601
|
+
const [error, setError] = React13.useState(null);
|
|
15602
|
+
const [isPolling, setIsPolling] = React13.useState(false);
|
|
15603
|
+
const intervalRef = React13.useRef(null);
|
|
15604
|
+
const startTimeRef = React13.useRef(Date.now());
|
|
15605
|
+
const prevStateRef = React13.useRef("waiting");
|
|
15606
|
+
const rpc = React13.useCallback(async (method, params) => {
|
|
15054
15607
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
15055
15608
|
const res = await fetch(getBundlerUrl(), {
|
|
15056
15609
|
method: "POST",
|
|
@@ -15061,21 +15614,21 @@ function useUserOpStatus(options = {}) {
|
|
|
15061
15614
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
15062
15615
|
return json.result;
|
|
15063
15616
|
}, []);
|
|
15064
|
-
const extractMempoolInfo =
|
|
15617
|
+
const extractMempoolInfo = React13.useCallback((m) => {
|
|
15065
15618
|
if (!m) return null;
|
|
15066
15619
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
15067
15620
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
15068
15621
|
if (!entryPoint && !sender) return null;
|
|
15069
15622
|
return { entryPoint, sender };
|
|
15070
15623
|
}, []);
|
|
15071
|
-
const updateState =
|
|
15624
|
+
const updateState = React13.useCallback((newState) => {
|
|
15072
15625
|
setState(newState);
|
|
15073
15626
|
if (prevStateRef.current !== newState) {
|
|
15074
15627
|
prevStateRef.current = newState;
|
|
15075
15628
|
onStateChange?.(newState);
|
|
15076
15629
|
}
|
|
15077
15630
|
}, [onStateChange]);
|
|
15078
|
-
const tick =
|
|
15631
|
+
const tick = React13.useCallback(async () => {
|
|
15079
15632
|
if (!userOpHash || !enabled) return;
|
|
15080
15633
|
if (receipt) {
|
|
15081
15634
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -15148,7 +15701,7 @@ function useUserOpStatus(options = {}) {
|
|
|
15148
15701
|
onTxHash,
|
|
15149
15702
|
onReceipt
|
|
15150
15703
|
]);
|
|
15151
|
-
|
|
15704
|
+
React13.useEffect(() => {
|
|
15152
15705
|
if (!userOpHash || !enabled) return;
|
|
15153
15706
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
15154
15707
|
startTimeRef.current = Date.now();
|
|
@@ -15160,7 +15713,7 @@ function useUserOpStatus(options = {}) {
|
|
|
15160
15713
|
setError(null);
|
|
15161
15714
|
setIsPolling(false);
|
|
15162
15715
|
}, [userOpHash, enabled]);
|
|
15163
|
-
|
|
15716
|
+
React13.useEffect(() => {
|
|
15164
15717
|
if (!userOpHash || !enabled) {
|
|
15165
15718
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
15166
15719
|
return;
|
|
@@ -15196,7 +15749,7 @@ function useUserOpStatus(options = {}) {
|
|
|
15196
15749
|
}
|
|
15197
15750
|
};
|
|
15198
15751
|
}, [userOpHash, enabled, pollMs]);
|
|
15199
|
-
const refresh =
|
|
15752
|
+
const refresh = React13.useCallback(async () => {
|
|
15200
15753
|
await tick();
|
|
15201
15754
|
}, [tick]);
|
|
15202
15755
|
return {
|
|
@@ -15212,11 +15765,11 @@ function useUserOpStatus(options = {}) {
|
|
|
15212
15765
|
|
|
15213
15766
|
// src/hooks/useLogout.ts
|
|
15214
15767
|
import { logout as coreLogout, jwtTokenManager as jwtTokenManager3 } from "@lumiapassport/core/auth";
|
|
15215
|
-
import { useCallback as
|
|
15768
|
+
import { useCallback as useCallback28 } from "react";
|
|
15216
15769
|
function useLogout() {
|
|
15217
15770
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
15218
15771
|
const { callbacks } = useLumiaPassportConfig();
|
|
15219
|
-
const logout2 =
|
|
15772
|
+
const logout2 = useCallback28(async () => {
|
|
15220
15773
|
const prevAddress = address;
|
|
15221
15774
|
let userId = null;
|
|
15222
15775
|
setIsLoading(true);
|
|
@@ -15257,7 +15810,7 @@ init_errors();
|
|
|
15257
15810
|
// src/modules/transactions.ts
|
|
15258
15811
|
init_base();
|
|
15259
15812
|
import { usePublicClient as usePublicClient2, useWalletClient, useAccount as useAccount2 } from "wagmi";
|
|
15260
|
-
import { parseEther as
|
|
15813
|
+
import { parseEther as parseEther3 } from "viem";
|
|
15261
15814
|
function useTransactions() {
|
|
15262
15815
|
const publicClient2 = usePublicClient2({ chainId: lumiaBeam.id });
|
|
15263
15816
|
const { data: walletClient } = useWalletClient();
|
|
@@ -15268,7 +15821,7 @@ function useTransactions() {
|
|
|
15268
15821
|
}
|
|
15269
15822
|
const txParams = {
|
|
15270
15823
|
to: params.to,
|
|
15271
|
-
value:
|
|
15824
|
+
value: parseEther3(params.value),
|
|
15272
15825
|
data: params.data,
|
|
15273
15826
|
chain: lumiaBeam
|
|
15274
15827
|
};
|
|
@@ -15317,6 +15870,167 @@ function useTransactions() {
|
|
|
15317
15870
|
};
|
|
15318
15871
|
}
|
|
15319
15872
|
|
|
15873
|
+
// src/modules/assets.ts
|
|
15874
|
+
init_base();
|
|
15875
|
+
import React14 from "react";
|
|
15876
|
+
import { useBalance as useBalance3, useReadContract as useReadContract2, useReadContracts } from "wagmi";
|
|
15877
|
+
import { formatUnits as formatUnits6, erc20Abi } from "viem";
|
|
15878
|
+
var COMMON_TOKENS = [
|
|
15879
|
+
// Add real token addresses here when available
|
|
15880
|
+
// {
|
|
15881
|
+
// address: '0x....',
|
|
15882
|
+
// name: 'USD Coin',
|
|
15883
|
+
// symbol: 'USDC',
|
|
15884
|
+
// decimals: 6,
|
|
15885
|
+
// logo: 'https://...'
|
|
15886
|
+
// }
|
|
15887
|
+
];
|
|
15888
|
+
function useAssets(address) {
|
|
15889
|
+
const { data: nativeBalance, isLoading: nativeBalanceLoading, refetch: refetchNativeBalance } = useBalance3({
|
|
15890
|
+
address,
|
|
15891
|
+
chainId: lumiaBeam.id,
|
|
15892
|
+
query: {
|
|
15893
|
+
enabled: !!address
|
|
15894
|
+
}
|
|
15895
|
+
});
|
|
15896
|
+
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
15897
|
+
address: token.address,
|
|
15898
|
+
abi: erc20Abi,
|
|
15899
|
+
functionName: "balanceOf",
|
|
15900
|
+
args: [address],
|
|
15901
|
+
chainId: lumiaBeam.id
|
|
15902
|
+
}));
|
|
15903
|
+
const readContractsResult = useReadContracts({
|
|
15904
|
+
contracts: tokenContracts,
|
|
15905
|
+
query: {
|
|
15906
|
+
enabled: !!address && COMMON_TOKENS.length > 0
|
|
15907
|
+
}
|
|
15908
|
+
});
|
|
15909
|
+
const { data: tokenBalances, isLoading: tokenBalancesLoading, refetch: refetchTokenBalances } = readContractsResult;
|
|
15910
|
+
const getAllAssets = () => {
|
|
15911
|
+
const assets = [];
|
|
15912
|
+
if (nativeBalance) {
|
|
15913
|
+
assets.push({
|
|
15914
|
+
type: "native",
|
|
15915
|
+
name: "Lumia",
|
|
15916
|
+
symbol: "LUMIA",
|
|
15917
|
+
balance: nativeBalance.value.toString(),
|
|
15918
|
+
formattedBalance: parseFloat(nativeBalance.formatted).toFixed(4),
|
|
15919
|
+
decimals: 18
|
|
15920
|
+
});
|
|
15921
|
+
}
|
|
15922
|
+
if (tokenBalances && COMMON_TOKENS.length > 0) {
|
|
15923
|
+
tokenBalances.forEach((balance, index) => {
|
|
15924
|
+
const token = COMMON_TOKENS[index];
|
|
15925
|
+
if (balance.status === "success" && balance.result) {
|
|
15926
|
+
const balanceValue = balance.result;
|
|
15927
|
+
const formattedBalance = formatUnits6(balanceValue, token.decimals);
|
|
15928
|
+
assets.push({
|
|
15929
|
+
type: "erc20",
|
|
15930
|
+
address: token.address,
|
|
15931
|
+
name: token.name,
|
|
15932
|
+
symbol: token.symbol,
|
|
15933
|
+
balance: balanceValue.toString(),
|
|
15934
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
15935
|
+
decimals: token.decimals,
|
|
15936
|
+
logo: token.logo
|
|
15937
|
+
});
|
|
15938
|
+
}
|
|
15939
|
+
});
|
|
15940
|
+
}
|
|
15941
|
+
return assets;
|
|
15942
|
+
};
|
|
15943
|
+
const getTokenBalance = (tokenAddress) => {
|
|
15944
|
+
const tokenIndex = COMMON_TOKENS.findIndex(
|
|
15945
|
+
(token2) => token2.address.toLowerCase() === tokenAddress.toLowerCase()
|
|
15946
|
+
);
|
|
15947
|
+
if (tokenIndex === -1 || !tokenBalances?.[tokenIndex]) {
|
|
15948
|
+
return null;
|
|
15949
|
+
}
|
|
15950
|
+
const balance = tokenBalances[tokenIndex];
|
|
15951
|
+
const token = COMMON_TOKENS[tokenIndex];
|
|
15952
|
+
if (balance.status === "success" && balance.result) {
|
|
15953
|
+
const balanceValue = balance.result;
|
|
15954
|
+
const formattedBalance = formatUnits6(balanceValue, token.decimals);
|
|
15955
|
+
return {
|
|
15956
|
+
address: token.address,
|
|
15957
|
+
name: token.name,
|
|
15958
|
+
symbol: token.symbol,
|
|
15959
|
+
decimals: token.decimals,
|
|
15960
|
+
balance: balanceValue.toString(),
|
|
15961
|
+
formattedBalance: parseFloat(formattedBalance).toFixed(4),
|
|
15962
|
+
logo: token.logo
|
|
15963
|
+
};
|
|
15964
|
+
}
|
|
15965
|
+
return null;
|
|
15966
|
+
};
|
|
15967
|
+
const refreshBalances = async () => {
|
|
15968
|
+
await Promise.all([
|
|
15969
|
+
refetchNativeBalance(),
|
|
15970
|
+
refetchTokenBalances()
|
|
15971
|
+
]);
|
|
15972
|
+
};
|
|
15973
|
+
return {
|
|
15974
|
+
nativeBalance,
|
|
15975
|
+
tokenBalances,
|
|
15976
|
+
assets: getAllAssets(),
|
|
15977
|
+
getTokenBalance,
|
|
15978
|
+
refreshBalances,
|
|
15979
|
+
isLoading: nativeBalanceLoading || tokenBalancesLoading,
|
|
15980
|
+
isConnected: !!address
|
|
15981
|
+
};
|
|
15982
|
+
}
|
|
15983
|
+
function useTokenInfo(tokenAddress) {
|
|
15984
|
+
const readContractsResult = useReadContracts({
|
|
15985
|
+
contracts: [
|
|
15986
|
+
{ address: tokenAddress, abi: erc20Abi, functionName: "name", chainId: lumiaBeam.id },
|
|
15987
|
+
{ address: tokenAddress, abi: erc20Abi, functionName: "symbol", chainId: lumiaBeam.id },
|
|
15988
|
+
{ address: tokenAddress, abi: erc20Abi, functionName: "decimals", chainId: lumiaBeam.id }
|
|
15989
|
+
]
|
|
15990
|
+
});
|
|
15991
|
+
const { data: tokenData, isLoading } = readContractsResult;
|
|
15992
|
+
if (!tokenData || isLoading) {
|
|
15993
|
+
return { isLoading, tokenInfo: null };
|
|
15994
|
+
}
|
|
15995
|
+
const [nameResult, symbolResult, decimalsResult] = tokenData;
|
|
15996
|
+
if (nameResult.status === "success" && symbolResult.status === "success" && decimalsResult.status === "success") {
|
|
15997
|
+
return {
|
|
15998
|
+
isLoading: false,
|
|
15999
|
+
tokenInfo: {
|
|
16000
|
+
name: nameResult.result,
|
|
16001
|
+
symbol: symbolResult.result,
|
|
16002
|
+
decimals: decimalsResult.result,
|
|
16003
|
+
address: tokenAddress
|
|
16004
|
+
}
|
|
16005
|
+
};
|
|
16006
|
+
}
|
|
16007
|
+
return { isLoading: false, tokenInfo: null };
|
|
16008
|
+
}
|
|
16009
|
+
function useTokenBalance(tokenAddress, userAddress) {
|
|
16010
|
+
const { data: balance, isLoading, refetch } = useReadContract2({
|
|
16011
|
+
address: tokenAddress,
|
|
16012
|
+
abi: erc20Abi,
|
|
16013
|
+
functionName: "balanceOf",
|
|
16014
|
+
args: userAddress ? [userAddress] : void 0,
|
|
16015
|
+
chainId: lumiaBeam.id,
|
|
16016
|
+
query: {
|
|
16017
|
+
enabled: !!userAddress
|
|
16018
|
+
}
|
|
16019
|
+
});
|
|
16020
|
+
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
16021
|
+
const formattedBalance = React14.useMemo(() => {
|
|
16022
|
+
if (!balance || !tokenInfo) return "0";
|
|
16023
|
+
return formatUnits6(balance, tokenInfo.decimals);
|
|
16024
|
+
}, [balance, tokenInfo]);
|
|
16025
|
+
return {
|
|
16026
|
+
balance,
|
|
16027
|
+
formattedBalance,
|
|
16028
|
+
tokenInfo,
|
|
16029
|
+
isLoading,
|
|
16030
|
+
refetch
|
|
16031
|
+
};
|
|
16032
|
+
}
|
|
16033
|
+
|
|
15320
16034
|
// src/modules/smartAccountTransactions.ts
|
|
15321
16035
|
init_base();
|
|
15322
16036
|
import { parseAbiItem } from "viem";
|
|
@@ -15415,6 +16129,7 @@ export {
|
|
|
15415
16129
|
signTypedData,
|
|
15416
16130
|
updateUserProfile,
|
|
15417
16131
|
useAssets,
|
|
16132
|
+
useErc3643Compliance,
|
|
15418
16133
|
useLogout,
|
|
15419
16134
|
useLumiaPassportAccountSession,
|
|
15420
16135
|
useLumiaPassportAddress,
|