@lumiapassport/ui-kit 1.13.8 → 1.13.10
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 +691 -584
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +607 -500
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4297,17 +4297,17 @@ __export(index_exports, {
|
|
|
4297
4297
|
module.exports = __toCommonJS(index_exports);
|
|
4298
4298
|
|
|
4299
4299
|
// src/styles/built.css
|
|
4300
|
-
var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-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 .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none;appearance:none;-webkit-appearance:none;-moz-appearance:none}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-l,0);overflow-y:auto;max-height: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 .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.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-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.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 .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .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 .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .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-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4300
|
+
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-2{top:-.5rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .mb-\\[var\\(--l-pass-gap\\)\\]{margin-bottom:var(--l-pass-gap)}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-1\\.5{margin-right:.375rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-1\\.5{margin-top:.375rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[32px\\]{height:32px}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-\\[var\\(--l-pass-maw\\)\\]{max-width:var(--l-pass-maw)}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-error)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-error)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-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-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .gap-\\[var\\(--l-pass-pd\\)\\]{gap:var(--l-pass-pd)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-800\\/80{border-color:rgba(153,27,27,.8)}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-\\[var\\(--l-pass-success\\)\\]{background-color:var(--l-pass-success)}.lumia-scope .bg-\\[var\\(--l-pass-warning\\)\\]{background-color:var(--l-pass-warning)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700\\/80{background-color:rgba(185,28,28,.8)}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950\\/90{background-color:rgba(69,10,10,.9)}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-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 .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-muted\\)\\]{color:var(--l-pass-muted)}.lumia-scope .text-\\[var\\(--l-pass-primary\\)\\]{color:var(--l-pass-primary)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-300\\/95{color:hsla(0,94%,82%,.95)}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-400\\/80{color:hsla(0,91%,71%,.8)}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-600\\/90{color:rgba(220,38,38,.9)}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,320px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#c9c9c9);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.9));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.7));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.9));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.7));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.5));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none;appearance:none;-webkit-appearance:none;-moz-appearance:none}.lumia-scope .lumia-passport-button{box-shadow:0 4px 10px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-r,0);overflow-y:auto;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 .file\\:mr-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{margin-right:var(--l-pass-pd)}.lumia-scope .file\\:h-8::file-selector-button{height:2rem}.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-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.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 .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-600\\/90:hover{background-color:rgba(220,38,38,.9)}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover{color:var(--l-pass-fg)}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .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 .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .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-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
|
|
4301
4301
|
|
|
4302
4302
|
// src/context/LumiaPassportContext.tsx
|
|
4303
4303
|
var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
|
|
4304
|
-
var
|
|
4305
|
-
var
|
|
4304
|
+
var import_lodash_es4 = require("lodash-es");
|
|
4305
|
+
var import_react50 = require("react");
|
|
4306
4306
|
init_lumiaPassport();
|
|
4307
4307
|
init_iframe_manager();
|
|
4308
4308
|
|
|
4309
4309
|
// src/context/LumiaPassportSessionContext.tsx
|
|
4310
|
-
var
|
|
4310
|
+
var import_react49 = require("react");
|
|
4311
4311
|
var import_zustand5 = require("zustand");
|
|
4312
4312
|
|
|
4313
4313
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
@@ -4325,7 +4325,7 @@ init_assets();
|
|
|
4325
4325
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4326
4326
|
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4327
4327
|
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4328
|
-
var
|
|
4328
|
+
var MAX_CONTENT_HEIGHT = 640;
|
|
4329
4329
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4330
4330
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4331
4331
|
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
@@ -4605,12 +4605,12 @@ function BalanceFeedProvider() {
|
|
|
4605
4605
|
|
|
4606
4606
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4607
4607
|
var import_framer_motion4 = require("framer-motion");
|
|
4608
|
-
var
|
|
4608
|
+
var import_react46 = require("react");
|
|
4609
4609
|
|
|
4610
4610
|
// package.json
|
|
4611
4611
|
var package_default = {
|
|
4612
4612
|
name: "@lumiapassport/ui-kit",
|
|
4613
|
-
version: "1.13.
|
|
4613
|
+
version: "1.13.10",
|
|
4614
4614
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4615
4615
|
type: "module",
|
|
4616
4616
|
main: "./dist/index.cjs",
|
|
@@ -5152,15 +5152,18 @@ function Header() {
|
|
|
5152
5152
|
|
|
5153
5153
|
// src/internal/components/ui/dialog.tsx
|
|
5154
5154
|
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
5155
|
+
var import_lodash_es = require("lodash-es");
|
|
5155
5156
|
var import_lucide_react5 = require("lucide-react");
|
|
5156
|
-
var
|
|
5157
|
+
var import_react5 = require("react");
|
|
5157
5158
|
|
|
5158
5159
|
// src/internal/hooks/useLayoutStore.ts
|
|
5159
5160
|
var import_zustand2 = require("zustand");
|
|
5160
5161
|
var useLayoutStore = (0, import_zustand2.create)((set) => ({
|
|
5161
5162
|
colorMode: "light",
|
|
5162
|
-
layoutView:
|
|
5163
|
+
// layoutView: 'desktop',
|
|
5163
5164
|
// deviceType: 'non-touch',
|
|
5165
|
+
isMobileView: false,
|
|
5166
|
+
maxScrollHeight: MAX_CONTENT_HEIGHT,
|
|
5164
5167
|
isDialogClosing: false,
|
|
5165
5168
|
isDialogOpen: false,
|
|
5166
5169
|
isDialogForced: false,
|
|
@@ -5169,8 +5172,10 @@ var useLayoutStore = (0, import_zustand2.create)((set) => ({
|
|
|
5169
5172
|
dialogContent: null,
|
|
5170
5173
|
isSettings: false,
|
|
5171
5174
|
setColorMode: (colorMode) => set({ colorMode }),
|
|
5172
|
-
setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
5175
|
+
// setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
5173
5176
|
// setDeviceType: (deviceType) => set(() => ({ deviceType })),
|
|
5177
|
+
setIsMobileView: (isMobileView) => set({ isMobileView }),
|
|
5178
|
+
setMaxScrollHeight: (maxScrollHeight) => set({ maxScrollHeight }),
|
|
5174
5179
|
setIsDialogClosing: (isDialogClosing) => set({ isDialogClosing }),
|
|
5175
5180
|
setIsDialogOpen: (isDialogOpen) => set({ isDialogOpen }),
|
|
5176
5181
|
setIsDialogForced: (isDialogForced) => set({ isDialogForced }),
|
|
@@ -5184,7 +5189,7 @@ var useLayoutStore = (0, import_zustand2.create)((set) => ({
|
|
|
5184
5189
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
5185
5190
|
var Dialog = DialogPrimitive.Root;
|
|
5186
5191
|
var DialogPortal = DialogPrimitive.Portal;
|
|
5187
|
-
var DialogOverlay =
|
|
5192
|
+
var DialogOverlay = (0, import_react5.forwardRef)(
|
|
5188
5193
|
({ className, closing, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5189
5194
|
DialogPrimitive.Overlay,
|
|
5190
5195
|
{
|
|
@@ -5200,37 +5205,51 @@ var DialogOverlay = React2.forwardRef(
|
|
|
5200
5205
|
)
|
|
5201
5206
|
);
|
|
5202
5207
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
5203
|
-
|
|
5208
|
+
function useDecideContentStyles() {
|
|
5209
|
+
const isMobileView = useLayoutStore((st) => st.isMobileView);
|
|
5210
|
+
const isDialogOpen = useLayoutStore((st) => st.isDialogOpen);
|
|
5211
|
+
const isDialogClosing = useLayoutStore((st) => st.isDialogClosing);
|
|
5212
|
+
const isClosing = isDialogOpen && isDialogClosing;
|
|
5213
|
+
console.log("[IS_MOBILE_VIEW]", isMobileView);
|
|
5214
|
+
const mobileStyles = isMobileView ? { "--l-pass-maw": "100%", "--l-pass-bdrs": "20px 20px 0px 0px" } : {};
|
|
5215
|
+
return {
|
|
5216
|
+
isClosing,
|
|
5217
|
+
isMobileView,
|
|
5218
|
+
style: (0, import_lodash_es.merge)({}, mobileStyles)
|
|
5219
|
+
};
|
|
5220
|
+
}
|
|
5221
|
+
var CONTENT_BG_SETUP = {
|
|
5222
|
+
backgroundColor: "var(--l-pass-bg)",
|
|
5223
|
+
border: "1px solid var(--l-pass-bd)",
|
|
5224
|
+
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
5225
|
+
};
|
|
5226
|
+
var DialogContent = (0, import_react5.forwardRef)(
|
|
5204
5227
|
({ className, children, hideClose, colorMode, ...props }, ref) => {
|
|
5205
5228
|
const isSettings = useLayoutStore((st) => st.isSettings);
|
|
5206
|
-
const isDialogOpen = useLayoutStore((st) => st.isDialogOpen);
|
|
5207
|
-
const isDialogClosing = useLayoutStore((st) => st.isDialogClosing);
|
|
5208
5229
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5209
5230
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
5210
|
-
const
|
|
5211
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lumia-scope", "data-lumia-passport-mode": colorMode, children: [
|
|
5212
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, { closing }),
|
|
5231
|
+
const { isMobileView, isClosing, style } = useDecideContentStyles();
|
|
5232
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "lumia-scope", "data-lumia-passport-mode": colorMode, style, children: [
|
|
5233
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, { closing: isClosing }),
|
|
5213
5234
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5214
5235
|
"div",
|
|
5215
5236
|
{
|
|
5216
5237
|
className: cn(
|
|
5217
5238
|
"fixed inset-0 z-[9999] flex items-center justify-center pointer-events-none",
|
|
5218
|
-
|
|
5239
|
+
isClosing ? "animate-dialog-out" : "animate-dialog-in",
|
|
5240
|
+
isMobileView ? "items-end" : "items-center"
|
|
5219
5241
|
),
|
|
5220
5242
|
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
5221
5243
|
DialogPrimitive.Content,
|
|
5222
5244
|
{
|
|
5223
5245
|
ref,
|
|
5224
|
-
style: !!className ? void 0 :
|
|
5225
|
-
backgroundColor: "var(--l-pass-bg)",
|
|
5226
|
-
border: "1px solid var(--l-pass-bd)",
|
|
5227
|
-
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
5228
|
-
},
|
|
5246
|
+
style: !!className ? void 0 : CONTENT_BG_SETUP,
|
|
5229
5247
|
className: cn(
|
|
5248
|
+
// isWalletLinking ? 'pointer-events-none' : 'pointer-events-auto',
|
|
5230
5249
|
"relative pointer-events-auto w-full",
|
|
5250
|
+
"max-w-[var(--l-pass-maw)] max-h-[95dvh] p-0 gap-0",
|
|
5231
5251
|
"text-[var(--l-pass-fg)]",
|
|
5232
5252
|
"rounded-[var(--l-pass-bdrs)] overflow-hidden",
|
|
5233
|
-
"max-w-[var(--l-pass-maw)] max-h-[95dvh] p-0 gap-0",
|
|
5234
5253
|
className
|
|
5235
5254
|
),
|
|
5236
5255
|
...props,
|
|
@@ -5288,7 +5307,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
5288
5307
|
DialogHeader.displayName = "DialogHeader";
|
|
5289
5308
|
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
|
|
5290
5309
|
DialogFooter.displayName = "DialogFooter";
|
|
5291
|
-
var DialogTitle =
|
|
5310
|
+
var DialogTitle = (0, import_react5.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
5292
5311
|
DialogPrimitive.Title,
|
|
5293
5312
|
{
|
|
5294
5313
|
ref,
|
|
@@ -5297,7 +5316,7 @@ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
5297
5316
|
}
|
|
5298
5317
|
));
|
|
5299
5318
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
5300
|
-
var DialogDescription =
|
|
5319
|
+
var DialogDescription = (0, import_react5.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
|
|
5301
5320
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
5302
5321
|
|
|
5303
5322
|
// src/internal/components/ui/visually-hidden.tsx
|
|
@@ -5305,7 +5324,7 @@ var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
|
5305
5324
|
var VisuallyHidden = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "sr-only absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0", children });
|
|
5306
5325
|
|
|
5307
5326
|
// src/internal/hooks/useAutoConnect.ts
|
|
5308
|
-
var
|
|
5327
|
+
var import_react6 = require("react");
|
|
5309
5328
|
function useAutoConnect() {
|
|
5310
5329
|
const {
|
|
5311
5330
|
config: { current: config },
|
|
@@ -5325,7 +5344,7 @@ function useAutoConnect() {
|
|
|
5325
5344
|
setIsIframeReady,
|
|
5326
5345
|
setIsLoading
|
|
5327
5346
|
} = useLumiaPassportSession();
|
|
5328
|
-
const createSessionWithKeyshare = (0,
|
|
5347
|
+
const createSessionWithKeyshare = (0, import_react6.useCallback)(
|
|
5329
5348
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
5330
5349
|
try {
|
|
5331
5350
|
try {
|
|
@@ -5359,8 +5378,8 @@ function useAutoConnect() {
|
|
|
5359
5378
|
},
|
|
5360
5379
|
[usePaymaster, setStatus, callbacks]
|
|
5361
5380
|
);
|
|
5362
|
-
const autoConnectAttemptedRef = (0,
|
|
5363
|
-
(0,
|
|
5381
|
+
const autoConnectAttemptedRef = (0, import_react6.useRef)(false);
|
|
5382
|
+
(0, import_react6.useEffect)(() => {
|
|
5364
5383
|
if (autoConnectAttemptedRef.current) return;
|
|
5365
5384
|
setIsLoading(true);
|
|
5366
5385
|
const tryAutoConnect = async (attempt) => {
|
|
@@ -5479,11 +5498,11 @@ function useAutoConnect() {
|
|
|
5479
5498
|
}
|
|
5480
5499
|
|
|
5481
5500
|
// src/internal/hooks/useBackupStatusChanges.ts
|
|
5482
|
-
var
|
|
5501
|
+
var import_react7 = require("react");
|
|
5483
5502
|
init_vaultClient();
|
|
5484
5503
|
function useBackupStatusChanges() {
|
|
5485
5504
|
const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
|
|
5486
|
-
(0,
|
|
5505
|
+
(0, import_react7.useEffect)(() => {
|
|
5487
5506
|
const handleBackupStatusChanged = async (event) => {
|
|
5488
5507
|
const customEvent = event;
|
|
5489
5508
|
const { method, success } = customEvent.detail || {};
|
|
@@ -5510,7 +5529,7 @@ function useBackupStatusChanges() {
|
|
|
5510
5529
|
|
|
5511
5530
|
// src/internal/hooks/useCheckVaultStatus.ts
|
|
5512
5531
|
var import_react_query5 = require("@tanstack/react-query");
|
|
5513
|
-
var
|
|
5532
|
+
var import_react8 = require("react");
|
|
5514
5533
|
init_vaultClient();
|
|
5515
5534
|
function useCheckVaultStatus() {
|
|
5516
5535
|
const address = useLumiaPassportSession((st) => st.address);
|
|
@@ -5529,19 +5548,42 @@ function useCheckVaultStatus() {
|
|
|
5529
5548
|
setHasServerVault(false);
|
|
5530
5549
|
}
|
|
5531
5550
|
});
|
|
5532
|
-
(0,
|
|
5551
|
+
(0, import_react8.useEffect)(() => {
|
|
5533
5552
|
if (!address) return setHasServerVault(false);
|
|
5534
5553
|
checkVaultStatus();
|
|
5535
5554
|
}, [address, checkVaultStatus]);
|
|
5536
5555
|
}
|
|
5537
5556
|
|
|
5557
|
+
// src/internal/hooks/useDetectMaxScrollHeight.ts
|
|
5558
|
+
var import_lodash_es2 = require("lodash-es");
|
|
5559
|
+
var import_react9 = require("react");
|
|
5560
|
+
var DEBOUNCE_DELAY = 50;
|
|
5561
|
+
function useDetectMaxScrollHeight() {
|
|
5562
|
+
const setIsMobileView = useLayoutStore((state) => state.setIsMobileView);
|
|
5563
|
+
const setMaxScrollHeight = useLayoutStore((state) => state.setMaxScrollHeight);
|
|
5564
|
+
const onResize = (0, import_react9.useCallback)(
|
|
5565
|
+
(0, import_lodash_es2.debounce)(({ width, height }) => {
|
|
5566
|
+
const limContentHeight = height * 0.92 - 116 - 72;
|
|
5567
|
+
setIsMobileView(width < height && (width < 475 || limContentHeight <= MAX_CONTENT_HEIGHT));
|
|
5568
|
+
setMaxScrollHeight(Math.min(limContentHeight, MAX_CONTENT_HEIGHT));
|
|
5569
|
+
}, DEBOUNCE_DELAY),
|
|
5570
|
+
[setMaxScrollHeight, setIsMobileView]
|
|
5571
|
+
);
|
|
5572
|
+
(0, import_react9.useEffect)(() => {
|
|
5573
|
+
const obs = new ResizeObserver(([entry]) => onResize(entry.contentRect));
|
|
5574
|
+
const doc = window.document.getElementsByTagName("html")[0];
|
|
5575
|
+
if (doc) obs.observe(doc);
|
|
5576
|
+
return () => obs.disconnect();
|
|
5577
|
+
}, [onResize]);
|
|
5578
|
+
}
|
|
5579
|
+
|
|
5538
5580
|
// src/internal/hooks/usePageMapper.tsx
|
|
5539
|
-
var
|
|
5581
|
+
var import_react43 = require("react");
|
|
5540
5582
|
|
|
5541
5583
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5542
5584
|
var import_framer_motion = require("framer-motion");
|
|
5543
5585
|
var import_lucide_react14 = require("lucide-react");
|
|
5544
|
-
var
|
|
5586
|
+
var import_react19 = require("react");
|
|
5545
5587
|
|
|
5546
5588
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5547
5589
|
var import_lucide_react6 = require("lucide-react");
|
|
@@ -5629,17 +5671,17 @@ function AuthFailedStep() {
|
|
|
5629
5671
|
|
|
5630
5672
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameInput.tsx
|
|
5631
5673
|
var import_lucide_react7 = require("lucide-react");
|
|
5632
|
-
var
|
|
5674
|
+
var import_react11 = require("react");
|
|
5633
5675
|
init_auth();
|
|
5634
5676
|
init_profile();
|
|
5635
5677
|
|
|
5636
5678
|
// src/internal/components/ui/input.tsx
|
|
5637
|
-
var
|
|
5679
|
+
var import_react10 = __toESM(require("react"), 1);
|
|
5638
5680
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
5639
|
-
var Input =
|
|
5681
|
+
var Input = import_react10.default.forwardRef((props, ref) => {
|
|
5640
5682
|
const { className, disabled, error, Icon, element, ...inputProps } = props;
|
|
5641
|
-
const internalRef = (0,
|
|
5642
|
-
(0,
|
|
5683
|
+
const internalRef = (0, import_react10.useRef)(null);
|
|
5684
|
+
(0, import_react10.useImperativeHandle)(ref, () => internalRef.current);
|
|
5643
5685
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cn("w-full flex flex-col gap-1", className), children: [
|
|
5644
5686
|
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
5645
5687
|
"div",
|
|
@@ -5685,9 +5727,9 @@ Input.displayName = "Input";
|
|
|
5685
5727
|
// src/internal/components/AuthMenu/DisaplayNameStep/DisplayNameInput.tsx
|
|
5686
5728
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
5687
5729
|
var DisplayNameInput = ({ onComplete, onSkip }) => {
|
|
5688
|
-
const [displayName, setDisplayName] = (0,
|
|
5689
|
-
const [isLoading, setIsLoading] = (0,
|
|
5690
|
-
const [error, setError] = (0,
|
|
5730
|
+
const [displayName, setDisplayName] = (0, import_react11.useState)("");
|
|
5731
|
+
const [isLoading, setIsLoading] = (0, import_react11.useState)(false);
|
|
5732
|
+
const [error, setError] = (0, import_react11.useState)("");
|
|
5691
5733
|
const handleSubmit = async (e) => {
|
|
5692
5734
|
e.preventDefault();
|
|
5693
5735
|
if (!displayName.trim()) {
|
|
@@ -5794,7 +5836,7 @@ function DisplayNameStep(props) {
|
|
|
5794
5836
|
|
|
5795
5837
|
// src/internal/components/AuthMenu/PassKeyStep.tsx
|
|
5796
5838
|
var import_lucide_react8 = require("lucide-react");
|
|
5797
|
-
var
|
|
5839
|
+
var import_react13 = require("react");
|
|
5798
5840
|
|
|
5799
5841
|
// src/internal/assets/PasskeyAddIcon.tsx
|
|
5800
5842
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
@@ -5827,16 +5869,16 @@ function PasskeyAddIcon(props) {
|
|
|
5827
5869
|
init_auth();
|
|
5828
5870
|
|
|
5829
5871
|
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
5830
|
-
var
|
|
5872
|
+
var import_react12 = require("react");
|
|
5831
5873
|
var useExpandable = (props) => {
|
|
5832
5874
|
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
5833
|
-
const expandableRef = (0,
|
|
5834
|
-
const contentRef = (0,
|
|
5835
|
-
(0,
|
|
5875
|
+
const expandableRef = (0, import_react12.useRef)(null);
|
|
5876
|
+
const contentRef = (0, import_react12.useRef)(null);
|
|
5877
|
+
(0, import_react12.useEffect)(() => {
|
|
5836
5878
|
if (!expandableRef.current) return;
|
|
5837
5879
|
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
5838
5880
|
}, []);
|
|
5839
|
-
const setExpandableHeight = (0,
|
|
5881
|
+
const setExpandableHeight = (0, import_react12.useCallback)(
|
|
5840
5882
|
(isExpnd) => {
|
|
5841
5883
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5842
5884
|
expandableRef.current.style.setProperty(
|
|
@@ -5847,7 +5889,7 @@ var useExpandable = (props) => {
|
|
|
5847
5889
|
// ON_RESIZE_DELEAY),
|
|
5848
5890
|
[minHeight]
|
|
5849
5891
|
);
|
|
5850
|
-
(0,
|
|
5892
|
+
(0, import_react12.useEffect)(() => {
|
|
5851
5893
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5852
5894
|
const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
|
|
5853
5895
|
obs.observe(expandableRef.current);
|
|
@@ -5911,7 +5953,7 @@ function PassKeyStep(props) {
|
|
|
5911
5953
|
setFailedMessage,
|
|
5912
5954
|
setFailedType
|
|
5913
5955
|
} = useAuthStore();
|
|
5914
|
-
const onPasskeyRegister = (0,
|
|
5956
|
+
const onPasskeyRegister = (0, import_react13.useCallback)(async () => {
|
|
5915
5957
|
setPasskeyError("");
|
|
5916
5958
|
setPasskeyStatus("registering passkey...");
|
|
5917
5959
|
setIsLoading(true);
|
|
@@ -5979,7 +6021,7 @@ function PassKeyStep(props) {
|
|
|
5979
6021
|
setIsLoading(false);
|
|
5980
6022
|
}
|
|
5981
6023
|
}, [onAuthSuccess, setPage, callbacks]);
|
|
5982
|
-
const onPasskeyAuth = (0,
|
|
6024
|
+
const onPasskeyAuth = (0, import_react13.useCallback)(async () => {
|
|
5983
6025
|
setPasskeyError("");
|
|
5984
6026
|
setPasskeyStatus("checking available passkeys...");
|
|
5985
6027
|
setIsLoading(true);
|
|
@@ -6101,7 +6143,7 @@ function PassKeyStep(props) {
|
|
|
6101
6143
|
|
|
6102
6144
|
// src/internal/components/AuthMenu/SignInStep/SignInStep.tsx
|
|
6103
6145
|
var import_lucide_react12 = require("lucide-react");
|
|
6104
|
-
var
|
|
6146
|
+
var import_react15 = require("react");
|
|
6105
6147
|
|
|
6106
6148
|
// src/internal/components/AuthMenu/SignInStep/Email.tsx
|
|
6107
6149
|
init_lumiaPassport();
|
|
@@ -6234,7 +6276,7 @@ function ErrorAlert(props) {
|
|
|
6234
6276
|
|
|
6235
6277
|
// src/internal/components/AuthMenu/SignInStep/Social.tsx
|
|
6236
6278
|
var import_lucide_react11 = require("lucide-react");
|
|
6237
|
-
var
|
|
6279
|
+
var import_react14 = require("react");
|
|
6238
6280
|
init_assets();
|
|
6239
6281
|
init_lumiaPassport();
|
|
6240
6282
|
init_auth();
|
|
@@ -6325,7 +6367,7 @@ function Social(props) {
|
|
|
6325
6367
|
setPasskeyError,
|
|
6326
6368
|
setPasskeyStatus
|
|
6327
6369
|
} = useAuthStore();
|
|
6328
|
-
const onSocialAuth = (0,
|
|
6370
|
+
const onSocialAuth = (0, import_react14.useCallback)(
|
|
6329
6371
|
async (providerId) => {
|
|
6330
6372
|
const normalizedProviderId = providerId.toLowerCase();
|
|
6331
6373
|
const provider = config.current?.social?.providers?.find(
|
|
@@ -6736,7 +6778,7 @@ function SignInStep(props) {
|
|
|
6736
6778
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "font-bold text-xl leading-6", children: "Sign In" })
|
|
6737
6779
|
] }),
|
|
6738
6780
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
6739
|
-
enabledWoPasskey.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
6781
|
+
enabledWoPasskey.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react15.Fragment, { children: [
|
|
6740
6782
|
idx > 0 && /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "flex items-center", children: [
|
|
6741
6783
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
6742
6784
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex-none px-2 text-xs leading-4", children: "Or sign in using" }),
|
|
@@ -6763,19 +6805,19 @@ function SignInStep(props) {
|
|
|
6763
6805
|
}
|
|
6764
6806
|
|
|
6765
6807
|
// src/internal/components/AuthMenu/useAuthMenuHanders.ts
|
|
6766
|
-
var
|
|
6808
|
+
var import_react16 = require("react");
|
|
6767
6809
|
init_auth();
|
|
6768
6810
|
function useAuthMenuHandlers() {
|
|
6769
6811
|
const {
|
|
6770
6812
|
config: { current: config },
|
|
6771
6813
|
callbacks
|
|
6772
6814
|
} = useLumiaPassportConfig();
|
|
6773
|
-
const pendingLoginResponseRef = (0,
|
|
6815
|
+
const pendingLoginResponseRef = (0, import_react16.useRef)(null);
|
|
6774
6816
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
6775
|
-
const [telegramCleanup, setTelegramCleanup] = (0,
|
|
6817
|
+
const [telegramCleanup, setTelegramCleanup] = (0, import_react16.useState)(null);
|
|
6776
6818
|
const { usePaymaster, setError, setStatus, setSession, setAddress, setRecoveryUserId, setHasServerVault } = useLumiaPassportSession();
|
|
6777
6819
|
const { setStep, setVerificationError, setCodeSendError, setFailedMessage } = useAuthStore();
|
|
6778
|
-
const createSessionWithKeyshare = (0,
|
|
6820
|
+
const createSessionWithKeyshare = (0, import_react16.useCallback)(
|
|
6779
6821
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
6780
6822
|
try {
|
|
6781
6823
|
try {
|
|
@@ -6809,7 +6851,7 @@ function useAuthMenuHandlers() {
|
|
|
6809
6851
|
},
|
|
6810
6852
|
[setStatus, callbacks, usePaymaster]
|
|
6811
6853
|
);
|
|
6812
|
-
const onAuthSuccess = (0,
|
|
6854
|
+
const onAuthSuccess = (0, import_react16.useCallback)(async () => {
|
|
6813
6855
|
console.log("[ConnectWalletButton] handleAuthModalSuccess called");
|
|
6814
6856
|
const loginResponse = pendingLoginResponseRef.current;
|
|
6815
6857
|
console.log("[ConnectWalletButton] loginResponse:", loginResponse);
|
|
@@ -6904,7 +6946,7 @@ function useAuthMenuHandlers() {
|
|
|
6904
6946
|
setHasServerVault,
|
|
6905
6947
|
createSessionWithKeyshare
|
|
6906
6948
|
]);
|
|
6907
|
-
const checkDisplayNameRequired = (0,
|
|
6949
|
+
const checkDisplayNameRequired = (0, import_react16.useCallback)(
|
|
6908
6950
|
async (loginResponse) => {
|
|
6909
6951
|
if (!config.features.displayNameNeeded) {
|
|
6910
6952
|
return false;
|
|
@@ -6931,7 +6973,7 @@ function useAuthMenuHandlers() {
|
|
|
6931
6973
|
},
|
|
6932
6974
|
[config.features.displayNameNeeded]
|
|
6933
6975
|
);
|
|
6934
|
-
const goBackToSignIn = (0,
|
|
6976
|
+
const goBackToSignIn = (0, import_react16.useCallback)(() => {
|
|
6935
6977
|
setStep("signin");
|
|
6936
6978
|
setVerificationError("");
|
|
6937
6979
|
setCodeSendError("");
|
|
@@ -6949,11 +6991,11 @@ function useAuthMenuHandlers() {
|
|
|
6949
6991
|
}
|
|
6950
6992
|
|
|
6951
6993
|
// src/internal/components/AuthMenu/useListenIframeAuthEvents.ts
|
|
6952
|
-
var
|
|
6994
|
+
var import_react17 = require("react");
|
|
6953
6995
|
function useListenIframeAuthEvents() {
|
|
6954
6996
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
6955
6997
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
6956
|
-
const handleIframeMessage = (0,
|
|
6998
|
+
const handleIframeMessage = (0, import_react17.useCallback)(
|
|
6957
6999
|
(event) => {
|
|
6958
7000
|
console.log("[AuthMenu] Received iframe message:", event.data);
|
|
6959
7001
|
if (event.data?.type === "LUMIA_PASSPORT_IFRAME_READY") {
|
|
@@ -6971,7 +7013,7 @@ function useListenIframeAuthEvents() {
|
|
|
6971
7013
|
},
|
|
6972
7014
|
[setPage, setIsIframeReady]
|
|
6973
7015
|
);
|
|
6974
|
-
(0,
|
|
7016
|
+
(0, import_react17.useEffect)(() => {
|
|
6975
7017
|
window.addEventListener("message", handleIframeMessage);
|
|
6976
7018
|
return () => window.removeEventListener("message", handleIframeMessage);
|
|
6977
7019
|
}, [handleIframeMessage]);
|
|
@@ -7000,21 +7042,21 @@ init_auth();
|
|
|
7000
7042
|
init_projectId();
|
|
7001
7043
|
|
|
7002
7044
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
7003
|
-
var
|
|
7045
|
+
var import_react18 = require("react");
|
|
7004
7046
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
7005
7047
|
var VerificationCodeInput = (props) => {
|
|
7006
7048
|
const { onVerifyCode, onResendCode, isLoading, expiresIn, error } = props;
|
|
7007
7049
|
const setVerificationError = useAuthStore((st) => st.setVerificationError);
|
|
7008
|
-
const [timeLeft, setTimeLeft] = (0,
|
|
7009
|
-
(0,
|
|
7010
|
-
(0,
|
|
7050
|
+
const [timeLeft, setTimeLeft] = (0, import_react18.useState)(expiresIn);
|
|
7051
|
+
(0, import_react18.useEffect)(() => setTimeLeft(expiresIn), [expiresIn]);
|
|
7052
|
+
(0, import_react18.useEffect)(() => {
|
|
7011
7053
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
7012
7054
|
return () => clearInterval(t);
|
|
7013
7055
|
}, []);
|
|
7014
|
-
const lastSubmittedRef = (0,
|
|
7015
|
-
const inputsRef = (0,
|
|
7016
|
-
const [digits, setDigits] = (0,
|
|
7017
|
-
(0,
|
|
7056
|
+
const lastSubmittedRef = (0, import_react18.useRef)(null);
|
|
7057
|
+
const inputsRef = (0, import_react18.useRef)([]);
|
|
7058
|
+
const [digits, setDigits] = (0, import_react18.useState)(["", "", "", "", "", ""]);
|
|
7059
|
+
(0, import_react18.useEffect)(() => {
|
|
7018
7060
|
const code = digits.join("");
|
|
7019
7061
|
if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
|
|
7020
7062
|
if (lastSubmittedRef.current !== code) {
|
|
@@ -7023,7 +7065,7 @@ var VerificationCodeInput = (props) => {
|
|
|
7023
7065
|
}
|
|
7024
7066
|
}
|
|
7025
7067
|
}, [digits, isLoading, onVerifyCode]);
|
|
7026
|
-
(0,
|
|
7068
|
+
(0, import_react18.useEffect)(() => {
|
|
7027
7069
|
const t = setTimeout(() => {
|
|
7028
7070
|
inputsRef.current[0]?.focus();
|
|
7029
7071
|
}, 0);
|
|
@@ -7299,7 +7341,7 @@ var AuthMenu = () => {
|
|
|
7299
7341
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7300
7342
|
const page = useLayoutDataStore((st) => st.page);
|
|
7301
7343
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7302
|
-
(0,
|
|
7344
|
+
(0, import_react19.useEffect)(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
7303
7345
|
const {
|
|
7304
7346
|
step,
|
|
7305
7347
|
setStep,
|
|
@@ -7310,7 +7352,7 @@ var AuthMenu = () => {
|
|
|
7310
7352
|
setFailedMessage,
|
|
7311
7353
|
setCodeSendError
|
|
7312
7354
|
} = useAuthStore();
|
|
7313
|
-
(0,
|
|
7355
|
+
(0, import_react19.useEffect)(() => {
|
|
7314
7356
|
if (page !== "auth" /* AUTH */) {
|
|
7315
7357
|
setStep("signin");
|
|
7316
7358
|
setEmail("");
|
|
@@ -7329,7 +7371,7 @@ var AuthMenu = () => {
|
|
|
7329
7371
|
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Initializing wallet..." })
|
|
7330
7372
|
] });
|
|
7331
7373
|
}
|
|
7332
|
-
const stepContent = (0,
|
|
7374
|
+
const stepContent = (0, import_react19.useMemo)(
|
|
7333
7375
|
() => ({
|
|
7334
7376
|
"failed": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(AuthFailedStep, {}),
|
|
7335
7377
|
"display-name": /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(DisplayNameStep, { onAuthSuccess }),
|
|
@@ -7477,7 +7519,7 @@ function RampnowIcon() {
|
|
|
7477
7519
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7478
7520
|
var import_react_query8 = require("@tanstack/react-query");
|
|
7479
7521
|
var import_lucide_react15 = require("lucide-react");
|
|
7480
|
-
var
|
|
7522
|
+
var import_react21 = require("react");
|
|
7481
7523
|
|
|
7482
7524
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7483
7525
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
@@ -7592,7 +7634,7 @@ async function createPreorderMutation(payload) {
|
|
|
7592
7634
|
}
|
|
7593
7635
|
|
|
7594
7636
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7595
|
-
var
|
|
7637
|
+
var import_react20 = require("react");
|
|
7596
7638
|
|
|
7597
7639
|
// src/internal/components/BuyMenu/binance/utils.ts
|
|
7598
7640
|
function getPayMethodID(pm) {
|
|
@@ -7612,7 +7654,7 @@ function handleErrors(errors) {
|
|
|
7612
7654
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7613
7655
|
var useQueriesErrorHandler = (errors, stateUpdater) => {
|
|
7614
7656
|
const { error: errorTitle, message: errorMessage } = handleErrors(errors);
|
|
7615
|
-
(0,
|
|
7657
|
+
(0, import_react20.useEffect)(() => {
|
|
7616
7658
|
if (!errorTitle && !errorMessage) return;
|
|
7617
7659
|
console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
|
|
7618
7660
|
stateUpdater(1);
|
|
@@ -7660,15 +7702,15 @@ function Binance(props) {
|
|
|
7660
7702
|
queryKey: [QUERY_KEYS2.binancePaymentModes, walletAddress, isLumiaAvailable, srcQueryAmount],
|
|
7661
7703
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7662
7704
|
});
|
|
7663
|
-
const lastLoadedPaymentModes = (0,
|
|
7664
|
-
(0,
|
|
7705
|
+
const lastLoadedPaymentModes = (0, import_react21.useRef)([]);
|
|
7706
|
+
(0, import_react21.useEffect)(() => {
|
|
7665
7707
|
if (!paymentModes?.length) return;
|
|
7666
7708
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
7667
7709
|
lastLoadedPaymentModes.current = paymentModes;
|
|
7668
7710
|
}, [paymentModes]);
|
|
7669
7711
|
const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
|
|
7670
7712
|
const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
|
|
7671
|
-
(0,
|
|
7713
|
+
(0, import_react21.useEffect)(() => setMinAmount(minimum), [minimum]);
|
|
7672
7714
|
const {
|
|
7673
7715
|
data: quoteData = null,
|
|
7674
7716
|
isLoading: isQuoteDataLoading,
|
|
@@ -7713,7 +7755,7 @@ function Binance(props) {
|
|
|
7713
7755
|
setRedirecting(false);
|
|
7714
7756
|
}
|
|
7715
7757
|
});
|
|
7716
|
-
(0,
|
|
7758
|
+
(0, import_react21.useEffect)(() => {
|
|
7717
7759
|
return () => {
|
|
7718
7760
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceNetworksQuery] });
|
|
7719
7761
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binancePaymentModes] });
|
|
@@ -7777,7 +7819,7 @@ function Binance(props) {
|
|
|
7777
7819
|
// src/internal/components/BuyMenu/rampnow/Rampnow.tsx
|
|
7778
7820
|
var import_react_query9 = require("@tanstack/react-query");
|
|
7779
7821
|
var import_lucide_react16 = require("lucide-react");
|
|
7780
|
-
var
|
|
7822
|
+
var import_react22 = require("react");
|
|
7781
7823
|
|
|
7782
7824
|
// src/internal/components/BuyMenu/rampnow/api.ts
|
|
7783
7825
|
var API_DOMAIN3 = "https://api.lumiapassport.com/on-ramp";
|
|
@@ -7842,7 +7884,7 @@ function Rampnow(props) {
|
|
|
7842
7884
|
setMinAmount
|
|
7843
7885
|
} = control;
|
|
7844
7886
|
const qc = (0, import_react_query9.useQueryClient)();
|
|
7845
|
-
(0,
|
|
7887
|
+
(0, import_react22.useEffect)(() => {
|
|
7846
7888
|
setMinAmount(MINIMUM_RAMP_AMOUNT);
|
|
7847
7889
|
setPaymentMode(PAYMENT_MODES[0].id);
|
|
7848
7890
|
}, []);
|
|
@@ -7899,7 +7941,7 @@ function Rampnow(props) {
|
|
|
7899
7941
|
console.error("Create CheckoutOrder failed:", err);
|
|
7900
7942
|
}
|
|
7901
7943
|
});
|
|
7902
|
-
(0,
|
|
7944
|
+
(0, import_react22.useEffect)(() => {
|
|
7903
7945
|
return () => {
|
|
7904
7946
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowConfig] });
|
|
7905
7947
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowQuote] });
|
|
@@ -7981,10 +8023,10 @@ var RAMP_PROVIDERS = {
|
|
|
7981
8023
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
7982
8024
|
|
|
7983
8025
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7984
|
-
var
|
|
8026
|
+
var import_react23 = require("react");
|
|
7985
8027
|
|
|
7986
8028
|
// src/internal/utils/debounce.ts
|
|
7987
|
-
function
|
|
8029
|
+
function debounce2(func, waitFor) {
|
|
7988
8030
|
let timeout;
|
|
7989
8031
|
return (...args) => {
|
|
7990
8032
|
if (timeout) clearTimeout(timeout);
|
|
@@ -7995,22 +8037,22 @@ function debounce(func, waitFor) {
|
|
|
7995
8037
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7996
8038
|
var ON_INPUT_QUERY_DELAY = 2e3;
|
|
7997
8039
|
var useSelectables = () => {
|
|
7998
|
-
const [redirecting, setRedirecting] = (0,
|
|
7999
|
-
const [rampProvider, setrRampProvider] = (0,
|
|
8000
|
-
const [minAmount, setMinAmount] = (0,
|
|
8001
|
-
const inputRef = (0,
|
|
8002
|
-
const [srcQueryAmount, setSrcQueryAmount] = (0,
|
|
8003
|
-
const [srcInputAmount, setSrcInputAmount] = (0,
|
|
8004
|
-
const [paymentMode, setPaymentMode] = (0,
|
|
8005
|
-
const setQueryAmountDebounced = (0,
|
|
8006
|
-
|
|
8040
|
+
const [redirecting, setRedirecting] = (0, import_react23.useState)(false);
|
|
8041
|
+
const [rampProvider, setrRampProvider] = (0, import_react23.useState)("binance");
|
|
8042
|
+
const [minAmount, setMinAmount] = (0, import_react23.useState)(0);
|
|
8043
|
+
const inputRef = (0, import_react23.useRef)(null);
|
|
8044
|
+
const [srcQueryAmount, setSrcQueryAmount] = (0, import_react23.useState)(0);
|
|
8045
|
+
const [srcInputAmount, setSrcInputAmount] = (0, import_react23.useState)(0);
|
|
8046
|
+
const [paymentMode, setPaymentMode] = (0, import_react23.useState)(null);
|
|
8047
|
+
const setQueryAmountDebounced = (0, import_react23.useCallback)(
|
|
8048
|
+
debounce2((inputAmount) => {
|
|
8007
8049
|
const checkedValue = Math.max(inputAmount, minAmount);
|
|
8008
8050
|
setSrcInputAmount(checkedValue);
|
|
8009
8051
|
setSrcQueryAmount(checkedValue);
|
|
8010
8052
|
}, ON_INPUT_QUERY_DELAY),
|
|
8011
8053
|
[minAmount]
|
|
8012
8054
|
);
|
|
8013
|
-
(0,
|
|
8055
|
+
(0, import_react23.useEffect)(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
|
|
8014
8056
|
return {
|
|
8015
8057
|
inputRef,
|
|
8016
8058
|
redirecting,
|
|
@@ -8062,7 +8104,7 @@ function BuyMenu() {
|
|
|
8062
8104
|
|
|
8063
8105
|
// src/internal/components/KeyshareBackupMenu/KeyshareBackupMenu.tsx
|
|
8064
8106
|
var import_lucide_react19 = require("lucide-react");
|
|
8065
|
-
var
|
|
8107
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
8066
8108
|
init_iframe_manager();
|
|
8067
8109
|
|
|
8068
8110
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -8095,32 +8137,33 @@ var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
|
8095
8137
|
function KeyshareBackupMenu() {
|
|
8096
8138
|
const session = useLumiaPassportSession((st) => st.session);
|
|
8097
8139
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8140
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8098
8141
|
const userId = session?.mpcUserId || "";
|
|
8099
8142
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
8100
|
-
(0,
|
|
8143
|
+
(0, import_react24.useEffect)(() => {
|
|
8101
8144
|
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
8102
8145
|
}, [userId, setPage]);
|
|
8103
|
-
const [backupStatus, setBackupStatus] =
|
|
8146
|
+
const [backupStatus, setBackupStatus] = import_react24.default.useState({
|
|
8104
8147
|
server: {},
|
|
8105
8148
|
cloud: {},
|
|
8106
8149
|
local: {}
|
|
8107
8150
|
});
|
|
8108
|
-
const [loading, setLoading] =
|
|
8151
|
+
const [loading, setLoading] = import_react24.default.useState({
|
|
8109
8152
|
server: false,
|
|
8110
8153
|
cloud: false,
|
|
8111
8154
|
local: false
|
|
8112
8155
|
});
|
|
8113
|
-
const [error, setError] =
|
|
8114
|
-
const [success, setSuccess] =
|
|
8115
|
-
const [showPassword, setShowPassword] =
|
|
8116
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8117
|
-
const [customPassword, setCustomPassword] =
|
|
8118
|
-
const [cloudProviders, setCloudProviders] =
|
|
8156
|
+
const [error, setError] = import_react24.default.useState(null);
|
|
8157
|
+
const [success, setSuccess] = import_react24.default.useState(null);
|
|
8158
|
+
const [showPassword, setShowPassword] = import_react24.default.useState(false);
|
|
8159
|
+
const [useCustomPassword, setUseCustomPassword] = import_react24.default.useState(false);
|
|
8160
|
+
const [customPassword, setCustomPassword] = import_react24.default.useState("");
|
|
8161
|
+
const [cloudProviders, setCloudProviders] = import_react24.default.useState(
|
|
8119
8162
|
[]
|
|
8120
8163
|
);
|
|
8121
|
-
const [selectedCloudProvider, setSelectedCloudProvider] =
|
|
8122
|
-
const [hasKeyshareData, setHasKeyshareData] =
|
|
8123
|
-
const iframeManager =
|
|
8164
|
+
const [selectedCloudProvider, setSelectedCloudProvider] = import_react24.default.useState(null);
|
|
8165
|
+
const [hasKeyshareData, setHasKeyshareData] = import_react24.default.useState(true);
|
|
8166
|
+
const iframeManager = import_react24.default.useMemo(() => {
|
|
8124
8167
|
try {
|
|
8125
8168
|
return getIframeManager();
|
|
8126
8169
|
} catch (e) {
|
|
@@ -8128,7 +8171,7 @@ function KeyshareBackupMenu() {
|
|
|
8128
8171
|
return null;
|
|
8129
8172
|
}
|
|
8130
8173
|
}, []);
|
|
8131
|
-
(0,
|
|
8174
|
+
(0, import_react24.useEffect)(() => {
|
|
8132
8175
|
const loadCloudProviders = async () => {
|
|
8133
8176
|
try {
|
|
8134
8177
|
const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
|
|
@@ -8148,7 +8191,7 @@ function KeyshareBackupMenu() {
|
|
|
8148
8191
|
};
|
|
8149
8192
|
loadCloudProviders();
|
|
8150
8193
|
}, [selectedCloudProvider]);
|
|
8151
|
-
const refreshStatus =
|
|
8194
|
+
const refreshStatus = import_react24.default.useCallback(async () => {
|
|
8152
8195
|
if (!iframeManager) return;
|
|
8153
8196
|
try {
|
|
8154
8197
|
const status = await iframeManager.getBackupStatus(userId);
|
|
@@ -8157,7 +8200,7 @@ function KeyshareBackupMenu() {
|
|
|
8157
8200
|
console.error("[KeyshareBackup] Failed to get backup status:", error2);
|
|
8158
8201
|
}
|
|
8159
8202
|
}, [iframeManager, userId]);
|
|
8160
|
-
(0,
|
|
8203
|
+
(0, import_react24.useEffect)(() => {
|
|
8161
8204
|
refreshStatus();
|
|
8162
8205
|
}, [refreshStatus]);
|
|
8163
8206
|
const handleBackup = async (method) => {
|
|
@@ -8246,164 +8289,161 @@ function KeyshareBackupMenu() {
|
|
|
8246
8289
|
const date = new Date(timestamp);
|
|
8247
8290
|
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
8248
8291
|
};
|
|
8249
|
-
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8250
|
-
|
|
8251
|
-
|
|
8252
|
-
|
|
8253
|
-
|
|
8254
|
-
|
|
8255
|
-
|
|
8256
|
-
onClick: () => setPage("settings" /* SETTINGS */),
|
|
8257
|
-
className: "
|
|
8258
|
-
title: "Back",
|
|
8259
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.ArrowLeft, { className: "h-4 w-4" })
|
|
8260
|
-
}
|
|
8261
|
-
),
|
|
8262
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xl font-semibold", children: "Create Backup" })
|
|
8263
|
-
] }),
|
|
8264
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xs", children: "Secure your keyshare with encrypted backups" }),
|
|
8265
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
8266
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8267
|
-
Checkbox,
|
|
8268
|
-
{
|
|
8269
|
-
name: "use-backup-password-checkbox",
|
|
8270
|
-
id: "use-backup-password",
|
|
8271
|
-
checked: useCustomPassword,
|
|
8272
|
-
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
8273
|
-
}
|
|
8274
|
-
),
|
|
8275
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("label", { htmlFor: "use-backup-password", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8276
|
-
] }),
|
|
8277
|
-
useCustomPassword ? /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
|
|
8278
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8279
|
-
Input,
|
|
8280
|
-
{
|
|
8281
|
-
Icon: import_lucide_react19.Key,
|
|
8282
|
-
type: showPassword ? "text" : "password",
|
|
8283
|
-
placeholder: "Enter backup password",
|
|
8284
|
-
value: customPassword,
|
|
8285
|
-
onChange: (e) => setCustomPassword(e.target.value),
|
|
8286
|
-
element: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Button, { variant: "ghost", size: "icon", type: "button", onClick: () => setShowPassword(!showPassword), children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Eye, { className: "h-4 w-4" }) })
|
|
8287
|
-
}
|
|
8288
|
-
),
|
|
8289
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
8290
|
-
Button,
|
|
8291
|
-
{
|
|
8292
|
-
size: "medium",
|
|
8293
|
-
onClick: () => handleBackup("server"),
|
|
8294
|
-
disabled: !!loading.server || !customPassword || !hasKeyshareData,
|
|
8295
|
-
className: "w-full",
|
|
8296
|
-
children: [
|
|
8297
|
-
loading.server ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(OtpIcon, { className: "h-4 w-4" }),
|
|
8298
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: loading.server ? "Backing up..." : "Create Backup with Password" })
|
|
8299
|
-
]
|
|
8300
|
-
}
|
|
8301
|
-
)
|
|
8302
|
-
] }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
|
|
8303
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { className: "h-12 flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8304
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Key, { className: "h-4 w-4 text-[var(--l-pass-info)] mx-1" }),
|
|
8305
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xs", children: "Backup will be encrypted with passkey" })
|
|
8306
|
-
] }),
|
|
8307
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
8308
|
-
Button,
|
|
8309
|
-
{
|
|
8310
|
-
size: "medium",
|
|
8311
|
-
onClick: () => handleBackup("server"),
|
|
8312
|
-
disabled: loading.server || !!customPassword || !hasKeyshareData,
|
|
8313
|
-
className: "w-full",
|
|
8314
|
-
children: [
|
|
8315
|
-
loading.server ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(PasskeyAddIcon, { className: "h-4 w-4" }),
|
|
8316
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: loading.server ? "Backing up..." : "Create Backup with Passkey" })
|
|
8317
|
-
]
|
|
8318
|
-
}
|
|
8319
|
-
)
|
|
8320
|
-
] }),
|
|
8321
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "w-full flex items-center", children: [
|
|
8322
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
8323
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "flex-none font-bold px-2 text-xs leading-4", children: "Alternative" }),
|
|
8324
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
8325
|
-
] }),
|
|
8326
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "grid grid-cols-2 gap-[var(--l-pass-gap)]", children: [
|
|
8327
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { children: [
|
|
8328
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8329
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Cloud, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8330
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "text-sm font-medium", children: "Cloud" })
|
|
8292
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8293
|
+
"div",
|
|
8294
|
+
{
|
|
8295
|
+
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
8296
|
+
className: "list-scrollbar-y w-full",
|
|
8297
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
8298
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
8299
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Button, { variant: "ghost", size: "icon", onClick: () => setPage("settings" /* SETTINGS */), title: "Back", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
8300
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xl font-semibold", children: "Create Backup" })
|
|
8331
8301
|
] }),
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8338
|
-
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
|
|
8342
|
-
|
|
8343
|
-
{
|
|
8344
|
-
className: "w-full",
|
|
8345
|
-
onClick: () => handleBackup("cloud"),
|
|
8346
|
-
disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
|
|
8347
|
-
children: loading.cloud ? "Creating..." : "Create"
|
|
8348
|
-
}
|
|
8349
|
-
)
|
|
8350
|
-
] }),
|
|
8351
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { children: [
|
|
8352
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8353
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Download, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8354
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "text-sm font-medium", children: "File" })
|
|
8302
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xs", children: "Secure your keyshare with encrypted backups" }),
|
|
8303
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
8304
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8305
|
+
Checkbox,
|
|
8306
|
+
{
|
|
8307
|
+
name: "use-backup-password-checkbox",
|
|
8308
|
+
id: "use-backup-password",
|
|
8309
|
+
checked: useCustomPassword,
|
|
8310
|
+
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
8311
|
+
}
|
|
8312
|
+
),
|
|
8313
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("label", { htmlFor: "use-backup-password", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8355
8314
|
] }),
|
|
8356
|
-
|
|
8357
|
-
|
|
8358
|
-
|
|
8359
|
-
|
|
8360
|
-
|
|
8361
|
-
|
|
8362
|
-
|
|
8363
|
-
|
|
8364
|
-
|
|
8365
|
-
|
|
8366
|
-
|
|
8367
|
-
|
|
8368
|
-
|
|
8369
|
-
|
|
8370
|
-
|
|
8371
|
-
|
|
8372
|
-
|
|
8373
|
-
|
|
8374
|
-
|
|
8375
|
-
|
|
8376
|
-
|
|
8377
|
-
|
|
8315
|
+
useCustomPassword ? /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
|
|
8316
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8317
|
+
Input,
|
|
8318
|
+
{
|
|
8319
|
+
Icon: import_lucide_react19.Key,
|
|
8320
|
+
type: showPassword ? "text" : "password",
|
|
8321
|
+
placeholder: "Enter backup password",
|
|
8322
|
+
value: customPassword,
|
|
8323
|
+
onChange: (e) => setCustomPassword(e.target.value),
|
|
8324
|
+
element: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Button, { variant: "ghost", size: "icon", type: "button", onClick: () => setShowPassword(!showPassword), children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Eye, { className: "h-4 w-4" }) })
|
|
8325
|
+
}
|
|
8326
|
+
),
|
|
8327
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
8328
|
+
Button,
|
|
8329
|
+
{
|
|
8330
|
+
size: "medium",
|
|
8331
|
+
onClick: () => handleBackup("server"),
|
|
8332
|
+
disabled: !!loading.server || !customPassword || !hasKeyshareData,
|
|
8333
|
+
className: "w-full",
|
|
8334
|
+
children: [
|
|
8335
|
+
loading.server ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(OtpIcon, { className: "h-4 w-4" }),
|
|
8336
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: loading.server ? "Backing up..." : "Create Backup with Password" })
|
|
8337
|
+
]
|
|
8338
|
+
}
|
|
8339
|
+
)
|
|
8340
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
|
|
8341
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { className: "h-12 flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8342
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Key, { className: "h-4 w-4 text-[var(--l-pass-info)] mx-1" }),
|
|
8343
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-xs", children: "Backup will be encrypted with passkey" })
|
|
8344
|
+
] }),
|
|
8345
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
8346
|
+
Button,
|
|
8347
|
+
{
|
|
8348
|
+
size: "medium",
|
|
8349
|
+
onClick: () => handleBackup("server"),
|
|
8350
|
+
disabled: loading.server || !!customPassword || !hasKeyshareData,
|
|
8351
|
+
className: "w-full",
|
|
8352
|
+
children: [
|
|
8353
|
+
loading.server ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(PasskeyAddIcon, { className: "h-4 w-4" }),
|
|
8354
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: loading.server ? "Backing up..." : "Create Backup with Passkey" })
|
|
8355
|
+
]
|
|
8356
|
+
}
|
|
8357
|
+
)
|
|
8358
|
+
] }),
|
|
8359
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "w-full flex items-center", children: [
|
|
8360
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
8361
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "flex-none font-bold px-2 text-xs leading-4", children: "Alternative" }),
|
|
8362
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
8363
|
+
] }),
|
|
8364
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "grid grid-cols-2 gap-[var(--l-pass-gap)]", children: [
|
|
8365
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { children: [
|
|
8366
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8367
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Cloud, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8368
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "text-sm font-medium", children: "Cloud" })
|
|
8369
|
+
] }),
|
|
8370
|
+
cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8371
|
+
"select",
|
|
8372
|
+
{
|
|
8373
|
+
value: selectedCloudProvider || "",
|
|
8374
|
+
onChange: (e) => setSelectedCloudProvider(e.target.value),
|
|
8375
|
+
className: "text-xs text-[var(--l-pass-fg)] border border-[var(--l-pass-bd)] rounded-[var(--l-pass-el-bdrs)] px-2 py-1 w-full mb-2 bg-transparent",
|
|
8376
|
+
children: cloudProviders.map((provider) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("option", { value: provider.id, disabled: !provider.available, children: provider.name }, provider.id))
|
|
8377
|
+
}
|
|
8378
|
+
),
|
|
8379
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8380
|
+
Button,
|
|
8381
|
+
{
|
|
8382
|
+
className: "w-full",
|
|
8383
|
+
onClick: () => handleBackup("cloud"),
|
|
8384
|
+
disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
|
|
8385
|
+
children: loading.cloud ? "Creating..." : "Create"
|
|
8386
|
+
}
|
|
8387
|
+
)
|
|
8388
|
+
] }),
|
|
8389
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { children: [
|
|
8390
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8391
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Download, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8392
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "text-sm font-medium", children: "File" })
|
|
8393
|
+
] }),
|
|
8394
|
+
cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "h-[32px]" }),
|
|
8395
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
8396
|
+
Button,
|
|
8397
|
+
{
|
|
8398
|
+
onClick: () => handleBackup("local"),
|
|
8399
|
+
disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
|
|
8400
|
+
className: "w-full",
|
|
8401
|
+
children: loading.local ? "Creating..." : "Download"
|
|
8402
|
+
}
|
|
8403
|
+
)
|
|
8404
|
+
] })
|
|
8405
|
+
] }),
|
|
8406
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { className: "flex items-start gap-[var(--l-pass-gap)]", type: "warning", children: [
|
|
8407
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.Lock, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8408
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { children: [
|
|
8409
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "font-medium", children: "Security Notice:" }),
|
|
8410
|
+
" All backups are encrypted with AES-256 using your",
|
|
8411
|
+
" ",
|
|
8412
|
+
useCustomPassword ? "custom password" : "passkey",
|
|
8413
|
+
".",
|
|
8414
|
+
useCustomPassword ? " Store your password securely - " : " Your passkey authenticator is required to restore backups. ",
|
|
8415
|
+
"Without backup access, you cannot recover your account if you lose this device."
|
|
8416
|
+
] })
|
|
8417
|
+
] }),
|
|
8418
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { type: "error", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8419
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8420
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: error })
|
|
8421
|
+
] }),
|
|
8422
|
+
success && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { type: "success", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8423
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8424
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: success })
|
|
8425
|
+
] })
|
|
8378
8426
|
] })
|
|
8379
|
-
|
|
8380
|
-
|
|
8381
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8382
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: error })
|
|
8383
|
-
] }),
|
|
8384
|
-
success && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(Highlight, { type: "success", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8385
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react19.CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8386
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: success })
|
|
8387
|
-
] })
|
|
8388
|
-
] }) });
|
|
8427
|
+
}
|
|
8428
|
+
);
|
|
8389
8429
|
}
|
|
8390
8430
|
|
|
8391
8431
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8392
8432
|
var import_react_query10 = require("@tanstack/react-query");
|
|
8393
8433
|
var import_lucide_react22 = require("lucide-react");
|
|
8394
|
-
var
|
|
8434
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
8395
8435
|
init_vaultClient();
|
|
8396
8436
|
|
|
8397
8437
|
// src/internal/components/KeyshareRestoreMenu/NoBackupFound.tsx
|
|
8398
8438
|
var import_lucide_react20 = require("lucide-react");
|
|
8399
|
-
var
|
|
8439
|
+
var import_react25 = require("react");
|
|
8400
8440
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
8401
8441
|
var ACCOUNT_RECOVERY_TEXT = `This device doesn't have access to your wallet keyshare, and no backup was found in the Vault. To access your wallet: use the original device where you created the account, create a backup from that device first, then try restoring on this device.`;
|
|
8402
8442
|
var ACCOUNT_FILE_RECOVERY_TEXT = `Try uploading a backup file if you have one saved locally, or create a different new account`;
|
|
8403
8443
|
function NoBackupFound(props) {
|
|
8404
8444
|
const { isLoading, restoreFromFile } = props;
|
|
8405
|
-
const [restoreFile, setRestoreFile] = (0,
|
|
8406
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
8445
|
+
const [restoreFile, setRestoreFile] = (0, import_react25.useState)(null);
|
|
8446
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_react25.Fragment, { children: [
|
|
8407
8447
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Highlight, { type: "error", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
|
|
8408
8448
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react20.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8409
8449
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
|
|
@@ -8444,7 +8484,7 @@ function NoBackupFound(props) {
|
|
|
8444
8484
|
|
|
8445
8485
|
// src/internal/components/KeyshareRestoreMenu/ServerBackupFound.tsx
|
|
8446
8486
|
var import_lucide_react21 = require("lucide-react");
|
|
8447
|
-
var
|
|
8487
|
+
var import_react26 = require("react");
|
|
8448
8488
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
8449
8489
|
function ServerBackupFound(props) {
|
|
8450
8490
|
const {
|
|
@@ -8460,7 +8500,7 @@ function ServerBackupFound(props) {
|
|
|
8460
8500
|
setRestorePassword,
|
|
8461
8501
|
setUseCustomPassword
|
|
8462
8502
|
} = props;
|
|
8463
|
-
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
8503
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_react26.Fragment, { children: [
|
|
8464
8504
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Highlight, { type: "success", className: "w-full flex gap-[var(--l-pass-gap)]", children: [
|
|
8465
8505
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react21.AlertCircle, { className: "h-4 w-4 flex-0" }),
|
|
8466
8506
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-full flex-1", children: [
|
|
@@ -8573,19 +8613,20 @@ var KeyshareRestoreMenu = () => {
|
|
|
8573
8613
|
config: { current: config },
|
|
8574
8614
|
callbacks
|
|
8575
8615
|
} = useLumiaPassportConfig();
|
|
8576
|
-
const
|
|
8616
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8577
8617
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8578
|
-
|
|
8618
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8619
|
+
(0, import_react27.useEffect)(() => setIsDialogForced(true), []);
|
|
8579
8620
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
8580
|
-
const [error, setError] =
|
|
8581
|
-
const [success, setSuccess] =
|
|
8582
|
-
const [showPassword, setShowPassword] =
|
|
8583
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8584
|
-
const [restoreFile, setRestoreFile] =
|
|
8585
|
-
const [restorePassword, setRestorePassword] =
|
|
8586
|
-
const [hasServerBackup, setHasServerBackup] =
|
|
8587
|
-
const [checkingBackup, setCheckingBackup] =
|
|
8588
|
-
const createSessionWithKeyshare = (0,
|
|
8621
|
+
const [error, setError] = import_react27.default.useState(null);
|
|
8622
|
+
const [success, setSuccess] = import_react27.default.useState(null);
|
|
8623
|
+
const [showPassword, setShowPassword] = import_react27.default.useState(false);
|
|
8624
|
+
const [useCustomPassword, setUseCustomPassword] = import_react27.default.useState(false);
|
|
8625
|
+
const [restoreFile, setRestoreFile] = import_react27.default.useState(null);
|
|
8626
|
+
const [restorePassword, setRestorePassword] = import_react27.default.useState("");
|
|
8627
|
+
const [hasServerBackup, setHasServerBackup] = import_react27.default.useState(null);
|
|
8628
|
+
const [checkingBackup, setCheckingBackup] = import_react27.default.useState(true);
|
|
8629
|
+
const createSessionWithKeyshare = (0, import_react27.useCallback)(
|
|
8589
8630
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
8590
8631
|
try {
|
|
8591
8632
|
try {
|
|
@@ -8619,7 +8660,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8619
8660
|
},
|
|
8620
8661
|
[setStatus, callbacks, usePaymaster]
|
|
8621
8662
|
);
|
|
8622
|
-
const onRestoreSuccess = (0,
|
|
8663
|
+
const onRestoreSuccess = (0, import_react27.useCallback)(async () => {
|
|
8623
8664
|
const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
8624
8665
|
const verify = await verifyToken2();
|
|
8625
8666
|
const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
|
|
@@ -8684,7 +8725,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8684
8725
|
callbacks,
|
|
8685
8726
|
config.projectId
|
|
8686
8727
|
]);
|
|
8687
|
-
(0,
|
|
8728
|
+
(0, import_react27.useEffect)(() => {
|
|
8688
8729
|
const checkBackupAvailability = async () => {
|
|
8689
8730
|
try {
|
|
8690
8731
|
setCheckingBackup(true);
|
|
@@ -8797,56 +8838,63 @@ var KeyshareRestoreMenu = () => {
|
|
|
8797
8838
|
setIsLoading(false);
|
|
8798
8839
|
}
|
|
8799
8840
|
});
|
|
8800
|
-
return /* @__PURE__ */ (0, import_jsx_runtime38.
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
|
|
8805
|
-
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8813
|
-
|
|
8814
|
-
|
|
8815
|
-
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
|
|
8835
|
-
|
|
8836
|
-
|
|
8837
|
-
|
|
8838
|
-
|
|
8839
|
-
|
|
8840
|
-
|
|
8841
|
-
|
|
8842
|
-
|
|
8843
|
-
|
|
8844
|
-
|
|
8845
|
-
|
|
8846
|
-
|
|
8847
|
-
|
|
8848
|
-
|
|
8849
|
-
|
|
8841
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
8842
|
+
"div",
|
|
8843
|
+
{
|
|
8844
|
+
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
8845
|
+
className: "list-scrollbar-y w-full",
|
|
8846
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
8847
|
+
checkingBackup && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
|
|
8848
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react22.Loader, { className: "w-5 h-5 animate-spin" }),
|
|
8849
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block w-full text-xs leading-4", children: "Checking for backups..." }),
|
|
8850
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block w-full text-xs leading-4", children: "Please wait while we check for available backups..." })
|
|
8851
|
+
] }),
|
|
8852
|
+
!checkingBackup && hasServerBackup === false && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(NoBackupFound, { isLoading: isRestoringFromFile || isDisconnecting, restoreFromFile }),
|
|
8853
|
+
!checkingBackup && hasServerBackup && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
8854
|
+
ServerBackupFound,
|
|
8855
|
+
{
|
|
8856
|
+
showPassword,
|
|
8857
|
+
setShowPassword,
|
|
8858
|
+
useCustomPassword,
|
|
8859
|
+
setUseCustomPassword,
|
|
8860
|
+
restorePassword,
|
|
8861
|
+
setRestorePassword,
|
|
8862
|
+
restoreFile,
|
|
8863
|
+
setRestoreFile,
|
|
8864
|
+
isLoading: isRestoringFromFile || isRestoringFromServer || isDisconnecting,
|
|
8865
|
+
restoreFromFile,
|
|
8866
|
+
restoreFromServer: restoreFromServer2
|
|
8867
|
+
}
|
|
8868
|
+
),
|
|
8869
|
+
!checkingBackup && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "w-full flex items-center", children: [
|
|
8870
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
8871
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Misc" }),
|
|
8872
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
8873
|
+
] }),
|
|
8874
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
8875
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react22.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8876
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "w-full flex-1 block", children: error })
|
|
8877
|
+
] }),
|
|
8878
|
+
success && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
8879
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react22.CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8880
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "w-full flex-1 block", children: success })
|
|
8881
|
+
] }),
|
|
8882
|
+
!checkingBackup && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
|
|
8883
|
+
Button,
|
|
8884
|
+
{
|
|
8885
|
+
size: "large",
|
|
8886
|
+
variant: "ghost",
|
|
8887
|
+
onClick: () => disconnect(),
|
|
8888
|
+
disabled: isDisconnecting || isRestoringFromFile || isRestoringFromServer,
|
|
8889
|
+
children: [
|
|
8890
|
+
isDisconnecting ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react22.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react22.LogOut, { className: "w-4 h-4" }),
|
|
8891
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { children: "Disconnect" })
|
|
8892
|
+
]
|
|
8893
|
+
}
|
|
8894
|
+
)
|
|
8895
|
+
] })
|
|
8896
|
+
}
|
|
8897
|
+
);
|
|
8850
8898
|
};
|
|
8851
8899
|
|
|
8852
8900
|
// src/internal/components/KYC/KycMenu.tsx
|
|
@@ -8856,7 +8904,7 @@ var import_lucide_react24 = require("lucide-react");
|
|
|
8856
8904
|
var import_lucide_react23 = require("lucide-react");
|
|
8857
8905
|
|
|
8858
8906
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8859
|
-
var
|
|
8907
|
+
var import_react28 = require("react");
|
|
8860
8908
|
|
|
8861
8909
|
// src/internal/components/KYC/api/sumsub.ts
|
|
8862
8910
|
init_httpClient();
|
|
@@ -8979,13 +9027,13 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8979
9027
|
config: { current: config }
|
|
8980
9028
|
} = useLumiaPassportConfig();
|
|
8981
9029
|
const { colorMode } = useLumiaPassportColorMode();
|
|
8982
|
-
const iframeRef = (0,
|
|
8983
|
-
const [isLoading, setIsLoading] = (0,
|
|
8984
|
-
const [error, setError] = (0,
|
|
8985
|
-
const [height, setHeight] = (0,
|
|
8986
|
-
const [status, setStatus] = (0,
|
|
9030
|
+
const iframeRef = (0, import_react28.useRef)(null);
|
|
9031
|
+
const [isLoading, setIsLoading] = (0, import_react28.useState)(true);
|
|
9032
|
+
const [error, setError] = (0, import_react28.useState)(null);
|
|
9033
|
+
const [height, setHeight] = (0, import_react28.useState)(0);
|
|
9034
|
+
const [status, setStatus] = (0, import_react28.useState)("");
|
|
8987
9035
|
const levelName = config.kyc?.options?.levelName;
|
|
8988
|
-
(0,
|
|
9036
|
+
(0, import_react28.useEffect)(() => {
|
|
8989
9037
|
setError(null);
|
|
8990
9038
|
setIsLoading(true);
|
|
8991
9039
|
setStatus("Preparing verification...");
|
|
@@ -9068,14 +9116,18 @@ var KycContent = () => {
|
|
|
9068
9116
|
};
|
|
9069
9117
|
function KycMenu() {
|
|
9070
9118
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9119
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9071
9120
|
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
9072
9121
|
"div",
|
|
9073
9122
|
{
|
|
9074
9123
|
style: {
|
|
9075
|
-
"--l-pass-scrollbar-mah":
|
|
9076
|
-
"--l-pass-list-scrollbar-pd-
|
|
9124
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
9125
|
+
"--l-pass-list-scrollbar-pd-r": "4px",
|
|
9126
|
+
"paddingTop": "var(--l-pass-pd)",
|
|
9127
|
+
"paddingBottom": "var(--l-pass-pd)",
|
|
9128
|
+
"paddingLeft": "4px"
|
|
9077
9129
|
},
|
|
9078
|
-
className: "list-scrollbar-y w-full
|
|
9130
|
+
className: "list-scrollbar-y w-full flex flex-col gap-[var(--l-pass-gap)]",
|
|
9079
9131
|
children: [
|
|
9080
9132
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9081
9133
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react24.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
@@ -9089,7 +9141,7 @@ function KycMenu() {
|
|
|
9089
9141
|
|
|
9090
9142
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9091
9143
|
var import_lucide_react26 = require("lucide-react");
|
|
9092
|
-
var
|
|
9144
|
+
var import_react29 = require("react");
|
|
9093
9145
|
|
|
9094
9146
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
9095
9147
|
var import_framer_motion2 = require("framer-motion");
|
|
@@ -9145,7 +9197,7 @@ function MainMenu() {
|
|
|
9145
9197
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9146
9198
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9147
9199
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9148
|
-
(0,
|
|
9200
|
+
(0, import_react29.useEffect)(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
9149
9201
|
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9150
9202
|
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "grid grid-cols-4 gap-[var(--l-pass-gap)]", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
9151
9203
|
Button,
|
|
@@ -9167,13 +9219,13 @@ function MainMenu() {
|
|
|
9167
9219
|
}
|
|
9168
9220
|
|
|
9169
9221
|
// src/internal/components/ManageWalletMenu/ManageWallet.tsx
|
|
9170
|
-
var
|
|
9222
|
+
var import_lodash_es3 = require("lodash-es");
|
|
9171
9223
|
var import_lucide_react30 = require("lucide-react");
|
|
9172
|
-
var
|
|
9224
|
+
var import_react33 = require("react");
|
|
9173
9225
|
|
|
9174
9226
|
// src/modules/linkedProfiles.ts
|
|
9175
9227
|
var import_react_query12 = require("@tanstack/react-query");
|
|
9176
|
-
var
|
|
9228
|
+
var import_react30 = require("react");
|
|
9177
9229
|
init_auth();
|
|
9178
9230
|
init_common();
|
|
9179
9231
|
init_types();
|
|
@@ -9206,7 +9258,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
9206
9258
|
queryFn: getLinkProfilesData
|
|
9207
9259
|
});
|
|
9208
9260
|
const { profiles = [], avatar = null } = data || {};
|
|
9209
|
-
const refresh = (0,
|
|
9261
|
+
const refresh = (0, import_react30.useCallback)(async () => {
|
|
9210
9262
|
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9211
9263
|
}, [qc, address]);
|
|
9212
9264
|
return { profiles, avatar, isLoading, error, refresh };
|
|
@@ -9245,7 +9297,9 @@ var useManageWalletStore = (0, import_zustand4.create)((set) => ({
|
|
|
9245
9297
|
setLinkIsLoading: (linkIsLoading) => set({ linkIsLoading }),
|
|
9246
9298
|
setLinkError: (linkError) => set({ linkError }),
|
|
9247
9299
|
setVerificationError: (verificationError) => set({ verificationError }),
|
|
9248
|
-
setProviderType: (providerType) =>
|
|
9300
|
+
setProviderType: (providerType) => {
|
|
9301
|
+
set({ providerType });
|
|
9302
|
+
},
|
|
9249
9303
|
setConfirmUnlink: (confirmUnlink) => set({ confirmUnlink })
|
|
9250
9304
|
}));
|
|
9251
9305
|
|
|
@@ -9607,7 +9661,7 @@ function EmailNotConnectedWarning() {
|
|
|
9607
9661
|
|
|
9608
9662
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9609
9663
|
var import_react_query18 = require("@tanstack/react-query");
|
|
9610
|
-
var
|
|
9664
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
9611
9665
|
init_auth();
|
|
9612
9666
|
function useLinkSocial() {
|
|
9613
9667
|
const qc = (0, import_react_query18.useQueryClient)();
|
|
@@ -9617,15 +9671,16 @@ function useLinkSocial() {
|
|
|
9617
9671
|
callbacks
|
|
9618
9672
|
} = useLumiaPassportConfig();
|
|
9619
9673
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9620
|
-
const { providerType, linkIsLoading, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9621
|
-
const handleLinkSocialProvider =
|
|
9674
|
+
const { providerType, linkIsLoading, isWalletLinking, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9675
|
+
const handleLinkSocialProvider = import_react31.default.useCallback(
|
|
9622
9676
|
async (providerIdRaw) => {
|
|
9623
9677
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9678
|
+
const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
|
|
9624
9679
|
try {
|
|
9625
9680
|
setLinkIsLoading(true);
|
|
9626
9681
|
setLinkError("");
|
|
9627
9682
|
const socialProvider = config.social?.providers?.find(
|
|
9628
|
-
(p) => (p.id || "").toLowerCase() ===
|
|
9683
|
+
(p) => (p.id || "").toLowerCase() === normalizedKey && p.enabled
|
|
9629
9684
|
);
|
|
9630
9685
|
if (!socialProvider) {
|
|
9631
9686
|
throw new Error(`${providerIdRaw} provider not configured`);
|
|
@@ -9669,23 +9724,29 @@ function useLinkSocial() {
|
|
|
9669
9724
|
},
|
|
9670
9725
|
[config.social?.providers, callbacks]
|
|
9671
9726
|
);
|
|
9672
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9673
|
-
(0,
|
|
9727
|
+
const [socialLinkStarted, setSocialLinkStarted] = import_react31.default.useState(false);
|
|
9728
|
+
(0, import_react31.useEffect)(() => {
|
|
9674
9729
|
const key = providerType?.toLowerCase();
|
|
9730
|
+
console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
|
|
9731
|
+
if (isWalletLinking) {
|
|
9732
|
+
console.log("[useLinkSocial] Skipping - wallet linking in progress");
|
|
9733
|
+
return;
|
|
9734
|
+
}
|
|
9675
9735
|
if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
|
|
9676
9736
|
if (!linkIsLoading && !socialLinkStarted) {
|
|
9737
|
+
console.log("[useLinkSocial] Starting social link flow for:", key);
|
|
9677
9738
|
setSocialLinkStarted(true);
|
|
9678
9739
|
handleLinkSocialProvider(key);
|
|
9679
9740
|
}
|
|
9680
9741
|
} else if (socialLinkStarted) {
|
|
9681
9742
|
setSocialLinkStarted(false);
|
|
9682
9743
|
}
|
|
9683
|
-
}, [providerType, linkIsLoading, socialLinkStarted, handleLinkSocialProvider]);
|
|
9744
|
+
}, [providerType, linkIsLoading, socialLinkStarted, isWalletLinking, handleLinkSocialProvider]);
|
|
9684
9745
|
}
|
|
9685
9746
|
|
|
9686
9747
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9687
9748
|
var import_react_query19 = require("@tanstack/react-query");
|
|
9688
|
-
var
|
|
9749
|
+
var import_react32 = require("react");
|
|
9689
9750
|
init_telegram2();
|
|
9690
9751
|
function useLinkTelegram() {
|
|
9691
9752
|
const {
|
|
@@ -9694,9 +9755,9 @@ function useLinkTelegram() {
|
|
|
9694
9755
|
} = useLumiaPassportConfig();
|
|
9695
9756
|
const qc = (0, import_react_query19.useQueryClient)();
|
|
9696
9757
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9697
|
-
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9758
|
+
const { providerType, linkIsLoading, isWalletLinking, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9698
9759
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9699
|
-
const handleLinkTelegram = (0,
|
|
9760
|
+
const handleLinkTelegram = (0, import_react32.useCallback)(async () => {
|
|
9700
9761
|
try {
|
|
9701
9762
|
setLinkIsLoading(true);
|
|
9702
9763
|
setLinkError("");
|
|
@@ -9738,14 +9799,20 @@ function useLinkTelegram() {
|
|
|
9738
9799
|
setLinkIsLoading(false);
|
|
9739
9800
|
}
|
|
9740
9801
|
}, [config.social?.providers, callbacks]);
|
|
9741
|
-
const [telegramLinkStarted, setTelegramLinkStarted] = (0,
|
|
9742
|
-
(0,
|
|
9802
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react32.useState)(false);
|
|
9803
|
+
(0, import_react32.useEffect)(() => {
|
|
9804
|
+
console.log("[useLinkTelegram] Effect triggered:", { providerType, linkIsLoading, telegramLinkStarted, isWalletLinking });
|
|
9805
|
+
if (isWalletLinking) {
|
|
9806
|
+
console.log("[useLinkTelegram] Skipping - wallet linking in progress");
|
|
9807
|
+
return;
|
|
9808
|
+
}
|
|
9743
9809
|
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9810
|
+
console.log("[useLinkTelegram] Starting Telegram link flow");
|
|
9744
9811
|
setTelegramLinkStarted(true);
|
|
9745
9812
|
handleLinkTelegram();
|
|
9746
9813
|
}
|
|
9747
|
-
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9748
|
-
(0,
|
|
9814
|
+
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
|
|
9815
|
+
(0, import_react32.useEffect)(() => {
|
|
9749
9816
|
if (providerType !== "telegram") {
|
|
9750
9817
|
setTelegramLinkStarted(false);
|
|
9751
9818
|
}
|
|
@@ -9827,7 +9894,7 @@ function getConfiguredProviders(config) {
|
|
|
9827
9894
|
});
|
|
9828
9895
|
return acc;
|
|
9829
9896
|
},
|
|
9830
|
-
(0,
|
|
9897
|
+
(0, import_lodash_es3.fromPairs)(POSSIBLE_PROVIDERS.map((p) => [p, false]))
|
|
9831
9898
|
);
|
|
9832
9899
|
}
|
|
9833
9900
|
function ManageWalletMenu() {
|
|
@@ -9837,6 +9904,7 @@ function ManageWalletMenu() {
|
|
|
9837
9904
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9838
9905
|
const {
|
|
9839
9906
|
providerType,
|
|
9907
|
+
isWalletLinking,
|
|
9840
9908
|
linkError,
|
|
9841
9909
|
verificationError,
|
|
9842
9910
|
emailCodeSentError,
|
|
@@ -9847,13 +9915,13 @@ function ManageWalletMenu() {
|
|
|
9847
9915
|
setEmailCodeExpiresIn,
|
|
9848
9916
|
setEmailCode,
|
|
9849
9917
|
setLinkError,
|
|
9850
|
-
setVerificationError
|
|
9918
|
+
setVerificationError,
|
|
9919
|
+
setIsWalletLinking
|
|
9851
9920
|
} = useManageWalletStore();
|
|
9852
9921
|
const configuredProviders = getConfiguredProviders(config);
|
|
9853
9922
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9854
|
-
|
|
9855
|
-
|
|
9856
|
-
const usedProviders = (0, import_lodash_es.fromPairs)(providers.map((p) => [p.provider, true]));
|
|
9923
|
+
const renderProviders = (0, import_react33.useMemo)(() => {
|
|
9924
|
+
const usedProviders = (0, import_lodash_es3.fromPairs)(providers.map((p) => [p.provider, true]));
|
|
9857
9925
|
const used = [];
|
|
9858
9926
|
const unused = [];
|
|
9859
9927
|
POSSIBLE_PROVIDERS.forEach((provider, providerIdx) => {
|
|
@@ -9871,7 +9939,9 @@ function ManageWalletMenu() {
|
|
|
9871
9939
|
variant: "default",
|
|
9872
9940
|
size: "medium",
|
|
9873
9941
|
className: "w-full",
|
|
9942
|
+
disabled: isWalletLinking,
|
|
9874
9943
|
onClick: () => {
|
|
9944
|
+
if (isWalletLinking) return;
|
|
9875
9945
|
switch (provider) {
|
|
9876
9946
|
case "email":
|
|
9877
9947
|
setEmail("");
|
|
@@ -9882,7 +9952,12 @@ function ManageWalletMenu() {
|
|
|
9882
9952
|
setProviderType(provider);
|
|
9883
9953
|
break;
|
|
9884
9954
|
case "twitter":
|
|
9885
|
-
|
|
9955
|
+
console.log("[ManageWallet] Twitter button clicked!");
|
|
9956
|
+
setProviderType("twitter");
|
|
9957
|
+
break;
|
|
9958
|
+
case "wallet":
|
|
9959
|
+
setProviderType(null);
|
|
9960
|
+
setIsWalletLinking(true);
|
|
9886
9961
|
break;
|
|
9887
9962
|
default:
|
|
9888
9963
|
setProviderType(provider);
|
|
@@ -9900,7 +9975,7 @@ function ManageWalletMenu() {
|
|
|
9900
9975
|
}
|
|
9901
9976
|
});
|
|
9902
9977
|
return [...used, ...unused];
|
|
9903
|
-
}, [providers, configuredProviders]);
|
|
9978
|
+
}, [providers, configuredProviders, isWalletLinking]);
|
|
9904
9979
|
useLinkTelegram();
|
|
9905
9980
|
useLinkSocial();
|
|
9906
9981
|
const showCurrentProviders = !isProvidersLoading && !providersError && (providerType !== "email" && providerType !== "passkey" || providerType === null);
|
|
@@ -9949,7 +10024,7 @@ function ManageWalletMenu() {
|
|
|
9949
10024
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
9950
10025
|
var import_react_query20 = require("@tanstack/react-query");
|
|
9951
10026
|
var import_lucide_react31 = require("lucide-react");
|
|
9952
|
-
var
|
|
10027
|
+
var import_react34 = require("react");
|
|
9953
10028
|
init_auth();
|
|
9954
10029
|
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
9955
10030
|
function UnlinkProviderMenu() {
|
|
@@ -9958,7 +10033,7 @@ function UnlinkProviderMenu() {
|
|
|
9958
10033
|
const { callbacks } = useLumiaPassportConfig();
|
|
9959
10034
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9960
10035
|
const { confirmUnlink, setConfirmUnlink, setLinkError } = useManageWalletStore();
|
|
9961
|
-
const [confirmInput, setConfirmInput] = (0,
|
|
10036
|
+
const [confirmInput, setConfirmInput] = (0, import_react34.useState)("");
|
|
9962
10037
|
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query20.useMutation)({
|
|
9963
10038
|
mutationFn: async () => {
|
|
9964
10039
|
if (!confirmUnlink) {
|
|
@@ -9968,14 +10043,15 @@ function UnlinkProviderMenu() {
|
|
|
9968
10043
|
await unlinkProvider(provider, externalId);
|
|
9969
10044
|
},
|
|
9970
10045
|
onSuccess: async () => {
|
|
9971
|
-
|
|
9972
|
-
|
|
10046
|
+
setConfirmUnlink(null);
|
|
10047
|
+
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
10048
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address], refetchType: "active" });
|
|
10049
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address], refetchType: "active" });
|
|
10050
|
+
await qc.refetchQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9973
10051
|
try {
|
|
9974
10052
|
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9975
10053
|
} catch {
|
|
9976
10054
|
}
|
|
9977
|
-
setConfirmUnlink(null);
|
|
9978
|
-
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9979
10055
|
},
|
|
9980
10056
|
onError: (error) => {
|
|
9981
10057
|
setLinkError(error?.message || "Failed to unlink provider");
|
|
@@ -10033,10 +10109,10 @@ function UnlinkProviderMenu() {
|
|
|
10033
10109
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10034
10110
|
var import_react_query22 = require("@tanstack/react-query");
|
|
10035
10111
|
var import_lucide_react33 = require("lucide-react");
|
|
10036
|
-
var
|
|
10112
|
+
var import_react36 = require("react");
|
|
10037
10113
|
|
|
10038
10114
|
// src/modules/assets.ts
|
|
10039
|
-
var
|
|
10115
|
+
var import_react35 = __toESM(require("react"), 1);
|
|
10040
10116
|
var import_wagmi2 = require("wagmi");
|
|
10041
10117
|
var import_viem4 = require("viem");
|
|
10042
10118
|
init_base();
|
|
@@ -10183,7 +10259,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10183
10259
|
}
|
|
10184
10260
|
});
|
|
10185
10261
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
10186
|
-
const formattedBalance =
|
|
10262
|
+
const formattedBalance = import_react35.default.useMemo(() => {
|
|
10187
10263
|
if (!balance || !tokenInfo) return "0";
|
|
10188
10264
|
return (0, import_viem4.formatUnits)(balance, tokenInfo.decimals);
|
|
10189
10265
|
}, [balance, tokenInfo]);
|
|
@@ -10292,29 +10368,30 @@ function PortfolioMenu() {
|
|
|
10292
10368
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10293
10369
|
const qc = (0, import_react_query22.useQueryClient)();
|
|
10294
10370
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10295
|
-
const
|
|
10296
|
-
const
|
|
10371
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10372
|
+
const assetsContainerListRef = (0, import_react36.useRef)(null);
|
|
10373
|
+
const assetsListRef = (0, import_react36.useRef)(null);
|
|
10297
10374
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10298
10375
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10299
|
-
const refreshAllAssetsBalances = (0,
|
|
10376
|
+
const refreshAllAssetsBalances = (0, import_react36.useCallback)(() => {
|
|
10300
10377
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10301
10378
|
refreshBalances();
|
|
10302
10379
|
}, [qc, projectAssets, refreshBalances]);
|
|
10303
|
-
(0,
|
|
10380
|
+
(0, import_react36.useEffect)(() => {
|
|
10304
10381
|
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10305
|
-
|
|
10306
|
-
|
|
10307
|
-
|
|
10308
|
-
|
|
10309
|
-
|
|
10310
|
-
|
|
10311
|
-
|
|
10312
|
-
|
|
10313
|
-
|
|
10314
|
-
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
}, []);
|
|
10382
|
+
const listTargetHeight = maxScrollHeight - 128;
|
|
10383
|
+
assetsContainerListRef.current.style.setProperty("--l-pass-scrollbar-mah", `${listTargetHeight}px`);
|
|
10384
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10385
|
+
"--l-pass-list-bd",
|
|
10386
|
+
assetsListRef.current.clientHeight >= listTargetHeight ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
10387
|
+
// hide border if no scrollbar
|
|
10388
|
+
);
|
|
10389
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10390
|
+
"--l-pass-list-scrollbar-pd-r",
|
|
10391
|
+
assetsListRef.current.clientHeight >= listTargetHeight ? "4px" : "0px"
|
|
10392
|
+
// remove padding if no scrollbar
|
|
10393
|
+
);
|
|
10394
|
+
}, [maxScrollHeight]);
|
|
10318
10395
|
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10319
10396
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10320
10397
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react33.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
@@ -10373,7 +10450,7 @@ function PortfolioMenu() {
|
|
|
10373
10450
|
|
|
10374
10451
|
// src/internal/components/SecurityMenu/SecurityMenu.tsx
|
|
10375
10452
|
var import_lucide_react34 = require("lucide-react");
|
|
10376
|
-
var
|
|
10453
|
+
var import_react37 = require("react");
|
|
10377
10454
|
init_auth();
|
|
10378
10455
|
init_keyshare();
|
|
10379
10456
|
init_vaultClient();
|
|
@@ -10385,18 +10462,18 @@ function SecurityMenu() {
|
|
|
10385
10462
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
10386
10463
|
const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
10387
10464
|
const backup = userId ? getBackupStatus(userId) : { server: { enabled: false }, cloud: { enabled: false }, local: { enabled: false } };
|
|
10388
|
-
const [isRefreshing, setIsRefreshing] = (0,
|
|
10389
|
-
const [localInfo, setLocalInfo] = (0,
|
|
10390
|
-
const [recoveryCreatedAt, setRecoveryCreatedAt] = (0,
|
|
10391
|
-
const [recoveryBrowser, setRecoveryBrowser] = (0,
|
|
10392
|
-
const [recoveryUa, setRecoveryUa] = (0,
|
|
10393
|
-
const [recoveryDeviceId, setRecoveryDeviceId] = (0,
|
|
10394
|
-
const [recoveryDeviceName, setRecoveryDeviceName] = (0,
|
|
10395
|
-
const [recoveryCountry, setRecoveryCountry] = (0,
|
|
10396
|
-
const [hasServerBackup, setHasServerBackup] = (0,
|
|
10397
|
-
const [trustedApps, setTrustedApps] = (0,
|
|
10398
|
-
const [appToRemove, setAppToRemove] = (0,
|
|
10399
|
-
const fetchRecovery = (0,
|
|
10465
|
+
const [isRefreshing, setIsRefreshing] = (0, import_react37.useState)(false);
|
|
10466
|
+
const [localInfo, setLocalInfo] = (0, import_react37.useState)(null);
|
|
10467
|
+
const [recoveryCreatedAt, setRecoveryCreatedAt] = (0, import_react37.useState)(null);
|
|
10468
|
+
const [recoveryBrowser, setRecoveryBrowser] = (0, import_react37.useState)(null);
|
|
10469
|
+
const [recoveryUa, setRecoveryUa] = (0, import_react37.useState)(null);
|
|
10470
|
+
const [recoveryDeviceId, setRecoveryDeviceId] = (0, import_react37.useState)(null);
|
|
10471
|
+
const [recoveryDeviceName, setRecoveryDeviceName] = (0, import_react37.useState)(null);
|
|
10472
|
+
const [recoveryCountry, setRecoveryCountry] = (0, import_react37.useState)(null);
|
|
10473
|
+
const [hasServerBackup, setHasServerBackup] = (0, import_react37.useState)(false);
|
|
10474
|
+
const [trustedApps, setTrustedApps] = (0, import_react37.useState)([]);
|
|
10475
|
+
const [appToRemove, setAppToRemove] = (0, import_react37.useState)(null);
|
|
10476
|
+
const fetchRecovery = (0, import_react37.useCallback)(async () => {
|
|
10400
10477
|
if (!userId) return;
|
|
10401
10478
|
try {
|
|
10402
10479
|
setIsRefreshing(true);
|
|
@@ -10429,7 +10506,7 @@ function SecurityMenu() {
|
|
|
10429
10506
|
setIsRefreshing(false);
|
|
10430
10507
|
}
|
|
10431
10508
|
}, [userId]);
|
|
10432
|
-
(0,
|
|
10509
|
+
(0, import_react37.useEffect)(() => {
|
|
10433
10510
|
if (open) fetchRecovery();
|
|
10434
10511
|
}, [open, fetchRecovery]);
|
|
10435
10512
|
const parseOS = (ua) => {
|
|
@@ -10621,21 +10698,21 @@ function SecurityMenu() {
|
|
|
10621
10698
|
|
|
10622
10699
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10623
10700
|
var import_lucide_react35 = require("lucide-react");
|
|
10624
|
-
var
|
|
10701
|
+
var import_react39 = require("react");
|
|
10625
10702
|
var import_viem6 = require("viem");
|
|
10626
10703
|
var import_wagmi3 = require("wagmi");
|
|
10627
10704
|
|
|
10628
10705
|
// src/hooks/useSendTransaction.ts
|
|
10629
|
-
var
|
|
10706
|
+
var import_react38 = require("react");
|
|
10630
10707
|
var import_viem5 = require("viem");
|
|
10631
10708
|
init_account();
|
|
10632
10709
|
function useSendTransaction() {
|
|
10633
10710
|
const session = useLumiaPassportSession((st) => st.session);
|
|
10634
10711
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10635
|
-
const [isLoading, setIsLoading] = (0,
|
|
10636
|
-
const [error, setError] = (0,
|
|
10637
|
-
const [userOpHash, setUserOpHash] = (0,
|
|
10638
|
-
const sendTransaction = (0,
|
|
10712
|
+
const [isLoading, setIsLoading] = (0, import_react38.useState)(false);
|
|
10713
|
+
const [error, setError] = (0, import_react38.useState)(null);
|
|
10714
|
+
const [userOpHash, setUserOpHash] = (0, import_react38.useState)(null);
|
|
10715
|
+
const sendTransaction = (0, import_react38.useCallback)(
|
|
10639
10716
|
async (params) => {
|
|
10640
10717
|
if (!session || !address) {
|
|
10641
10718
|
setError("No active session");
|
|
@@ -10675,7 +10752,7 @@ function useSendTransaction() {
|
|
|
10675
10752
|
},
|
|
10676
10753
|
[session, address]
|
|
10677
10754
|
);
|
|
10678
|
-
const reset = (0,
|
|
10755
|
+
const reset = (0, import_react38.useCallback)(() => {
|
|
10679
10756
|
setError(null);
|
|
10680
10757
|
setUserOpHash(null);
|
|
10681
10758
|
setIsLoading(false);
|
|
@@ -10703,13 +10780,13 @@ function SendLumiaMenu() {
|
|
|
10703
10780
|
address,
|
|
10704
10781
|
chainId: lumiaBeam.id
|
|
10705
10782
|
});
|
|
10706
|
-
const [recipient, setRecipient] = (0,
|
|
10707
|
-
const [amount, setAmount] = (0,
|
|
10708
|
-
const [txStep, setTxStep] = (0,
|
|
10709
|
-
const [validationError, setValidationError] = (0,
|
|
10783
|
+
const [recipient, setRecipient] = (0, import_react39.useState)("");
|
|
10784
|
+
const [amount, setAmount] = (0, import_react39.useState)("");
|
|
10785
|
+
const [txStep, setTxStep] = (0, import_react39.useState)("input");
|
|
10786
|
+
const [validationError, setValidationError] = (0, import_react39.useState)(null);
|
|
10710
10787
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10711
10788
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10712
|
-
(0,
|
|
10789
|
+
(0, import_react39.useEffect)(() => {
|
|
10713
10790
|
if (open) {
|
|
10714
10791
|
setTxStep("input");
|
|
10715
10792
|
setValidationError(null);
|
|
@@ -10873,17 +10950,18 @@ function SendLumiaMenu() {
|
|
|
10873
10950
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10874
10951
|
var import_lucide_react36 = require("lucide-react");
|
|
10875
10952
|
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
10876
|
-
var
|
|
10953
|
+
var import_react40 = require("react");
|
|
10877
10954
|
init_clients();
|
|
10878
10955
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
10879
10956
|
function ReceiveLumiaMenu() {
|
|
10957
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10880
10958
|
const page = useLayoutDataStore((st) => st.page);
|
|
10881
10959
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10960
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10882
10961
|
const open = page === "receive";
|
|
10883
|
-
const
|
|
10884
|
-
const [
|
|
10885
|
-
|
|
10886
|
-
(0, import_react38.useEffect)(() => {
|
|
10962
|
+
const [qrCodeUrl, setQrCodeUrl] = (0, import_react40.useState)("");
|
|
10963
|
+
const [copied, setCopied] = (0, import_react40.useState)(false);
|
|
10964
|
+
(0, import_react40.useEffect)(() => {
|
|
10887
10965
|
if (open && address) {
|
|
10888
10966
|
import_qrcode.default.toDataURL(address, {
|
|
10889
10967
|
width: 200,
|
|
@@ -10896,7 +10974,7 @@ function ReceiveLumiaMenu() {
|
|
|
10896
10974
|
});
|
|
10897
10975
|
}
|
|
10898
10976
|
}, [open, address]);
|
|
10899
|
-
const handleCopy = async () => {
|
|
10977
|
+
const handleCopy = (0, import_react40.useCallback)(async () => {
|
|
10900
10978
|
if (!address) return;
|
|
10901
10979
|
try {
|
|
10902
10980
|
await navigator.clipboard.writeText(address);
|
|
@@ -10905,34 +10983,44 @@ function ReceiveLumiaMenu() {
|
|
|
10905
10983
|
} catch (error) {
|
|
10906
10984
|
console.error("Failed to copy address:", error);
|
|
10907
10985
|
}
|
|
10908
|
-
};
|
|
10909
|
-
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
10910
|
-
|
|
10911
|
-
|
|
10912
|
-
|
|
10913
|
-
|
|
10914
|
-
|
|
10915
|
-
|
|
10916
|
-
|
|
10917
|
-
|
|
10918
|
-
|
|
10919
|
-
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
/* @__PURE__ */ (0, import_jsx_runtime53.
|
|
10923
|
-
|
|
10924
|
-
|
|
10925
|
-
|
|
10926
|
-
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("
|
|
10927
|
-
|
|
10928
|
-
|
|
10929
|
-
|
|
10930
|
-
|
|
10986
|
+
}, [address]);
|
|
10987
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
10988
|
+
"div",
|
|
10989
|
+
{
|
|
10990
|
+
style: {
|
|
10991
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10992
|
+
"--l-pass-list-scrollbar-pd-r": "8px"
|
|
10993
|
+
},
|
|
10994
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
10995
|
+
children: [
|
|
10996
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10997
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react36.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
10998
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10999
|
+
] }),
|
|
11000
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Highlight, { className: "text-center", type: "warning", children: [
|
|
11001
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
11002
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
11003
|
+
] }),
|
|
11004
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react36.Loader, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
11005
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(Highlight, { type: "info", children: [
|
|
11006
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
11007
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
11008
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react36.CheckCircle2, { className: "h-4 w-4" }),
|
|
11009
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Copied!" })
|
|
11010
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [
|
|
11011
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react36.Copy, { className: "h-4 w-4" }),
|
|
11012
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Copy Address" })
|
|
11013
|
+
] }) })
|
|
11014
|
+
] }),
|
|
11015
|
+
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
11016
|
+
]
|
|
11017
|
+
}
|
|
11018
|
+
);
|
|
10931
11019
|
}
|
|
10932
11020
|
|
|
10933
11021
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10934
11022
|
var import_lucide_react38 = require("lucide-react");
|
|
10935
|
-
var
|
|
11023
|
+
var import_react41 = require("react");
|
|
10936
11024
|
|
|
10937
11025
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10938
11026
|
var import_lucide_react37 = require("lucide-react");
|
|
@@ -10966,7 +11054,7 @@ function SettingsMenu() {
|
|
|
10966
11054
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10967
11055
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10968
11056
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10969
|
-
(0,
|
|
11057
|
+
(0, import_react41.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10970
11058
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10971
11059
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10972
11060
|
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
@@ -11026,7 +11114,7 @@ function TermsOfService() {
|
|
|
11026
11114
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
11027
11115
|
var import_react_query23 = require("@tanstack/react-query");
|
|
11028
11116
|
var import_lucide_react41 = require("lucide-react");
|
|
11029
|
-
var
|
|
11117
|
+
var import_react42 = require("react");
|
|
11030
11118
|
|
|
11031
11119
|
// src/internal/components/TransactionsMenu/api.ts
|
|
11032
11120
|
init_base();
|
|
@@ -11506,9 +11594,10 @@ function TransactionsMenu() {
|
|
|
11506
11594
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11507
11595
|
const page = useLayoutDataStore((st) => st.page);
|
|
11508
11596
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11509
|
-
const
|
|
11510
|
-
const
|
|
11511
|
-
const
|
|
11597
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11598
|
+
const txContainerListRef = (0, import_react42.useRef)(null);
|
|
11599
|
+
const txListRef = (0, import_react42.useRef)(null);
|
|
11600
|
+
const [expandedGroups, setExpandedGroups] = (0, import_react42.useState)({});
|
|
11512
11601
|
const {
|
|
11513
11602
|
data: txHistoryGroups = [],
|
|
11514
11603
|
isLoading: isTxHistoryLoading,
|
|
@@ -11520,26 +11609,26 @@ function TransactionsMenu() {
|
|
|
11520
11609
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
11521
11610
|
queryFn: () => getTransactionsListQuery(address)
|
|
11522
11611
|
});
|
|
11523
|
-
const refreshTxHistory = (0,
|
|
11612
|
+
const refreshTxHistory = (0, import_react42.useCallback)(
|
|
11524
11613
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
11525
11614
|
[qc, address]
|
|
11526
11615
|
);
|
|
11527
11616
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11528
|
-
(0,
|
|
11617
|
+
(0, import_react42.useEffect)(() => {
|
|
11529
11618
|
if (!txContainerListRef.current || !txListRef.current) return;
|
|
11530
|
-
|
|
11531
|
-
|
|
11532
|
-
|
|
11533
|
-
|
|
11534
|
-
|
|
11535
|
-
|
|
11536
|
-
|
|
11537
|
-
|
|
11538
|
-
|
|
11539
|
-
|
|
11540
|
-
|
|
11541
|
-
|
|
11542
|
-
}, []);
|
|
11619
|
+
const listTargetHeight = maxScrollHeight - 128;
|
|
11620
|
+
txContainerListRef.current.style.setProperty("--l-pass-scrollbar-mah", `${listTargetHeight}px`);
|
|
11621
|
+
txContainerListRef.current.style.setProperty(
|
|
11622
|
+
"--l-pass-list-bd",
|
|
11623
|
+
txListRef.current.clientHeight >= listTargetHeight ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
11624
|
+
// hide border if no scrollbar
|
|
11625
|
+
);
|
|
11626
|
+
txContainerListRef.current.style.setProperty(
|
|
11627
|
+
"--l-pass-list-scrollbar-pd-r",
|
|
11628
|
+
txListRef.current.clientHeight >= listTargetHeight ? "4px" : "0px"
|
|
11629
|
+
// remove padding if no scrollbar
|
|
11630
|
+
);
|
|
11631
|
+
}, [maxScrollHeight]);
|
|
11543
11632
|
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11544
11633
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
11545
11634
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react41.ArrowLeft, { className: "h-4 w-4" }) }),
|
|
@@ -11567,7 +11656,10 @@ function TransactionsMenu() {
|
|
|
11567
11656
|
"div",
|
|
11568
11657
|
{
|
|
11569
11658
|
ref: txContainerListRef,
|
|
11570
|
-
style: {
|
|
11659
|
+
style: {
|
|
11660
|
+
borderTop: "1px solid var(--l-pass-list-bd)",
|
|
11661
|
+
borderBottom: "1px solid var(--l-pass-list-bd)"
|
|
11662
|
+
},
|
|
11571
11663
|
className: "list-scrollbar-y relative",
|
|
11572
11664
|
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { ref: txListRef, className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
11573
11665
|
TransactionsGroup,
|
|
@@ -11693,7 +11785,7 @@ function usePageMapper() {
|
|
|
11693
11785
|
setIsDialogOpen,
|
|
11694
11786
|
setIsDialogClosing
|
|
11695
11787
|
} = useLayoutStore();
|
|
11696
|
-
const closeDialog = (0,
|
|
11788
|
+
const closeDialog = (0, import_react43.useCallback)(() => {
|
|
11697
11789
|
setIsDialogClosing(true);
|
|
11698
11790
|
setTimeout(() => {
|
|
11699
11791
|
setDialogContent(null);
|
|
@@ -11704,7 +11796,7 @@ function usePageMapper() {
|
|
|
11704
11796
|
setIsDialogOpen(false);
|
|
11705
11797
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11706
11798
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11707
|
-
const openDialog = (0,
|
|
11799
|
+
const openDialog = (0, import_react43.useCallback)(
|
|
11708
11800
|
(pageItem) => {
|
|
11709
11801
|
const PageContentComponent = pageItem.component;
|
|
11710
11802
|
setDialogTitle(pageItem.title);
|
|
@@ -11714,7 +11806,7 @@ function usePageMapper() {
|
|
|
11714
11806
|
},
|
|
11715
11807
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11716
11808
|
);
|
|
11717
|
-
(0,
|
|
11809
|
+
(0, import_react43.useEffect)(() => {
|
|
11718
11810
|
if (page === null) return closeDialog();
|
|
11719
11811
|
const pageItem = protectedRoutes[page];
|
|
11720
11812
|
if (!pageItem) {
|
|
@@ -11727,7 +11819,7 @@ function usePageMapper() {
|
|
|
11727
11819
|
}
|
|
11728
11820
|
|
|
11729
11821
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11730
|
-
var
|
|
11822
|
+
var import_react44 = require("react");
|
|
11731
11823
|
init_auth();
|
|
11732
11824
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11733
11825
|
id: "email-not-connected",
|
|
@@ -11744,13 +11836,13 @@ function useSettingsNotifications() {
|
|
|
11744
11836
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11745
11837
|
const providers = import_auth3.jwtTokenManager.getProviders();
|
|
11746
11838
|
const hasEmail = providers.includes("email");
|
|
11747
|
-
(0,
|
|
11839
|
+
(0, import_react44.useEffect)(() => {
|
|
11748
11840
|
setSettingsNotifications({
|
|
11749
11841
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11750
11842
|
status: hasServerVault ? "resolved" : "active"
|
|
11751
11843
|
});
|
|
11752
11844
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11753
|
-
(0,
|
|
11845
|
+
(0, import_react44.useEffect)(() => {
|
|
11754
11846
|
setSettingsNotifications({
|
|
11755
11847
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11756
11848
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11759,7 +11851,7 @@ function useSettingsNotifications() {
|
|
|
11759
11851
|
}
|
|
11760
11852
|
|
|
11761
11853
|
// src/internal/hooks/useWalletStatus.ts
|
|
11762
|
-
var
|
|
11854
|
+
var import_react45 = require("react");
|
|
11763
11855
|
init_auth();
|
|
11764
11856
|
function useWalletStatus() {
|
|
11765
11857
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -11769,7 +11861,7 @@ function useWalletStatus() {
|
|
|
11769
11861
|
config: { current: config },
|
|
11770
11862
|
callbacks
|
|
11771
11863
|
} = useLumiaPassportConfig();
|
|
11772
|
-
(0,
|
|
11864
|
+
(0, import_react45.useEffect)(() => {
|
|
11773
11865
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11774
11866
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
11775
11867
|
const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
|
|
@@ -11791,20 +11883,19 @@ function useWalletStatus() {
|
|
|
11791
11883
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11792
11884
|
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
11793
11885
|
function LumiaPassportDialog() {
|
|
11794
|
-
const
|
|
11795
|
-
|
|
11796
|
-
} = useLumiaPassportConfig();
|
|
11797
|
-
const className = config?.ui?.dialogClassName;
|
|
11886
|
+
const config = useLumiaPassportConfig().config;
|
|
11887
|
+
const className = config.current?.ui?.dialogClassName;
|
|
11798
11888
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11799
11889
|
const page = useLayoutDataStore((st) => st.page);
|
|
11800
11890
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11801
11891
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11802
11892
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11803
|
-
(0,
|
|
11893
|
+
(0, import_react46.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11804
11894
|
usePageMapper();
|
|
11805
11895
|
useAutoConnect();
|
|
11806
11896
|
useCheckVaultStatus();
|
|
11807
11897
|
useBackupStatusChanges();
|
|
11898
|
+
useDetectMaxScrollHeight();
|
|
11808
11899
|
useSettingsNotifications();
|
|
11809
11900
|
useWalletStatus();
|
|
11810
11901
|
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
@@ -11838,23 +11929,23 @@ function LumiaPassportDialog() {
|
|
|
11838
11929
|
}
|
|
11839
11930
|
|
|
11840
11931
|
// src/internal/components/TssManager.tsx
|
|
11841
|
-
var
|
|
11932
|
+
var import_react47 = __toESM(require("react"), 1);
|
|
11842
11933
|
init_auth();
|
|
11843
11934
|
init_clients();
|
|
11844
|
-
var TssManagerWithRef =
|
|
11935
|
+
var TssManagerWithRef = import_react47.default.forwardRef((props, ref) => {
|
|
11845
11936
|
const { mpcPin } = props;
|
|
11846
11937
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11847
11938
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11848
11939
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11849
11940
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11850
|
-
const onSessionCreated = (0,
|
|
11941
|
+
const onSessionCreated = (0, import_react47.useCallback)(
|
|
11851
11942
|
(session, address) => {
|
|
11852
11943
|
setSession(session);
|
|
11853
11944
|
setAddress(address);
|
|
11854
11945
|
},
|
|
11855
11946
|
[setSession, setAddress]
|
|
11856
11947
|
);
|
|
11857
|
-
const createSessionWithKeyshare =
|
|
11948
|
+
const createSessionWithKeyshare = import_react47.default.useCallback(
|
|
11858
11949
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11859
11950
|
setStatus("checking key management setup...");
|
|
11860
11951
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11875,87 +11966,103 @@ var TssManagerWithRef = import_react45.default.forwardRef((props, ref) => {
|
|
|
11875
11966
|
},
|
|
11876
11967
|
[setStatus, usePaymaster, mpcPin]
|
|
11877
11968
|
);
|
|
11878
|
-
|
|
11969
|
+
import_react47.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11879
11970
|
return null;
|
|
11880
11971
|
});
|
|
11881
11972
|
|
|
11882
11973
|
// src/internal/components/WalletConnectHandler.tsx
|
|
11883
11974
|
var import_rainbowkit = require("@rainbow-me/rainbowkit");
|
|
11884
11975
|
var import_react_query24 = require("@tanstack/react-query");
|
|
11885
|
-
var
|
|
11976
|
+
var import_react48 = __toESM(require("react"), 1);
|
|
11886
11977
|
var import_wagmi4 = require("wagmi");
|
|
11887
11978
|
init_wallet();
|
|
11888
11979
|
function WalletConnectHandler() {
|
|
11889
11980
|
const qc = (0, import_react_query24.useQueryClient)();
|
|
11890
11981
|
const { callbacks } = useLumiaPassportConfig();
|
|
11891
|
-
const
|
|
11982
|
+
const userAddress = useLumiaPassportSession((st) => st.address);
|
|
11983
|
+
const { address: walletAddress, isConnected, chain, connector } = (0, import_wagmi4.useAccount)();
|
|
11892
11984
|
const { disconnect } = (0, import_wagmi4.useDisconnect)();
|
|
11893
11985
|
const { signMessageAsync } = (0, import_wagmi4.useSignMessage)();
|
|
11894
11986
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11895
11987
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11896
|
-
const onError = (0,
|
|
11988
|
+
const onError = (0, import_react48.useCallback)((error) => {
|
|
11897
11989
|
setLinkError(error);
|
|
11898
11990
|
setIsWalletLinking(false);
|
|
11899
11991
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11900
11992
|
}, []);
|
|
11901
|
-
const onLinkingComplete = (0,
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
try {
|
|
11906
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11907
|
-
} catch {
|
|
11908
|
-
}
|
|
11993
|
+
const onLinkingComplete = (0, import_react48.useCallback)(
|
|
11994
|
+
async (success) => {
|
|
11995
|
+
console.log("[WalletConnectHandler] onLinkingComplete called:", { success, userAddress });
|
|
11996
|
+
setIsWalletLinking(false);
|
|
11909
11997
|
setProviderType(null);
|
|
11910
11998
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11911
|
-
|
|
11912
|
-
|
|
11913
|
-
|
|
11914
|
-
|
|
11915
|
-
|
|
11916
|
-
|
|
11917
|
-
|
|
11999
|
+
if (success) {
|
|
12000
|
+
console.log("[WalletConnectHandler] Invalidating and refetching queries with key:", [
|
|
12001
|
+
PROVIDERS_QUERY_KEY,
|
|
12002
|
+
userAddress
|
|
12003
|
+
]);
|
|
12004
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, userAddress], refetchType: "active" });
|
|
12005
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, userAddress], refetchType: "active" });
|
|
12006
|
+
await qc.refetchQueries({ queryKey: [PROVIDERS_QUERY_KEY, userAddress] });
|
|
12007
|
+
try {
|
|
12008
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, userAddress]) });
|
|
12009
|
+
} catch {
|
|
12010
|
+
}
|
|
12011
|
+
}
|
|
12012
|
+
},
|
|
12013
|
+
[qc, userAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
12014
|
+
);
|
|
12015
|
+
const { openConnectModal, connectModalOpen } = (0, import_rainbowkit.useConnectModal)();
|
|
12016
|
+
const [hasStartedLinking, setHasStartedLinking] = import_react48.default.useState(false);
|
|
12017
|
+
const timeoutRef = import_react48.default.useRef();
|
|
12018
|
+
(0, import_react48.useEffect)(() => {
|
|
11918
12019
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11919
12020
|
setHasStartedLinking(true);
|
|
12021
|
+
setProviderType(null);
|
|
11920
12022
|
if (isConnected) {
|
|
11921
12023
|
disconnect();
|
|
11922
12024
|
setTimeout(() => {
|
|
11923
12025
|
if (openConnectModal) {
|
|
12026
|
+
setPage(null);
|
|
11924
12027
|
openConnectModal();
|
|
11925
12028
|
}
|
|
11926
|
-
},
|
|
12029
|
+
}, 500);
|
|
11927
12030
|
} else {
|
|
11928
12031
|
if (openConnectModal) {
|
|
12032
|
+
setPage(null);
|
|
11929
12033
|
openConnectModal();
|
|
11930
12034
|
}
|
|
11931
12035
|
}
|
|
11932
|
-
timeoutRef.current = setTimeout(() => {
|
|
11933
|
-
if (!isConnected && isWalletLinking) {
|
|
11934
|
-
onLinkingComplete(false);
|
|
11935
|
-
setHasStartedLinking(false);
|
|
11936
|
-
}
|
|
11937
|
-
}, 3e4);
|
|
11938
12036
|
}
|
|
11939
12037
|
if (!isWalletLinking && hasStartedLinking) {
|
|
11940
12038
|
setHasStartedLinking(false);
|
|
11941
|
-
if (timeoutRef.current)
|
|
11942
|
-
|
|
11943
|
-
|
|
11944
|
-
|
|
11945
|
-
|
|
11946
|
-
|
|
12039
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
12040
|
+
if (isConnected) disconnect();
|
|
12041
|
+
}
|
|
12042
|
+
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
12043
|
+
(0, import_react48.useEffect)(() => {
|
|
12044
|
+
console.log("[WalletConnectHandler] Modal state check:", {
|
|
12045
|
+
hasStartedLinking,
|
|
12046
|
+
connectModalOpen,
|
|
12047
|
+
isConnected,
|
|
12048
|
+
isWalletLinking
|
|
12049
|
+
});
|
|
12050
|
+
if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
|
|
12051
|
+
console.log("[WalletConnectHandler] Modal closed without connecting, resetting state");
|
|
12052
|
+
onLinkingComplete(false);
|
|
12053
|
+
setHasStartedLinking(false);
|
|
11947
12054
|
}
|
|
11948
|
-
}, [
|
|
11949
|
-
(0,
|
|
11950
|
-
if (isConnected &&
|
|
12055
|
+
}, [connectModalOpen, hasStartedLinking, isConnected, isWalletLinking]);
|
|
12056
|
+
(0, import_react48.useEffect)(() => {
|
|
12057
|
+
if (isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
11951
12058
|
handleWalletSign();
|
|
11952
12059
|
}
|
|
11953
|
-
}, [isConnected,
|
|
12060
|
+
}, [isConnected, walletAddress, isWalletLinking, hasStartedLinking]);
|
|
11954
12061
|
const handleWalletSign = async () => {
|
|
11955
12062
|
if (timeoutRef.current) {
|
|
11956
12063
|
clearTimeout(timeoutRef.current);
|
|
11957
12064
|
}
|
|
11958
|
-
if (!
|
|
12065
|
+
if (!walletAddress || !chain) {
|
|
11959
12066
|
onError("No wallet connected");
|
|
11960
12067
|
disconnect();
|
|
11961
12068
|
onLinkingComplete(false);
|
|
@@ -11964,7 +12071,7 @@ function WalletConnectHandler() {
|
|
|
11964
12071
|
}
|
|
11965
12072
|
try {
|
|
11966
12073
|
setLinkIsLoading(true);
|
|
11967
|
-
const message = createSignatureMessage(
|
|
12074
|
+
const message = createSignatureMessage(walletAddress);
|
|
11968
12075
|
const signature = await signMessageAsync({ message });
|
|
11969
12076
|
if (!signature) {
|
|
11970
12077
|
throw new Error("Failed to get signature");
|
|
@@ -11977,7 +12084,7 @@ function WalletConnectHandler() {
|
|
|
11977
12084
|
connectorInfo: connector
|
|
11978
12085
|
});
|
|
11979
12086
|
await linkWallet({
|
|
11980
|
-
address,
|
|
12087
|
+
address: walletAddress,
|
|
11981
12088
|
signature,
|
|
11982
12089
|
message,
|
|
11983
12090
|
chainId: chain.id,
|
|
@@ -12034,7 +12141,7 @@ function LumiaPassportSessionProvider({ children }) {
|
|
|
12034
12141
|
const {
|
|
12035
12142
|
config: { current: config }
|
|
12036
12143
|
} = useLumiaPassportConfig();
|
|
12037
|
-
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
12144
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react49.Fragment, { children: [
|
|
12038
12145
|
children,
|
|
12039
12146
|
config.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(WalletConnectHandler, {}),
|
|
12040
12147
|
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BalanceFeedProvider, {}),
|
|
@@ -12086,14 +12193,14 @@ var LumiaWagmiProvider = ({ children }) => {
|
|
|
12086
12193
|
|
|
12087
12194
|
// src/context/LumiaPassportContext.tsx
|
|
12088
12195
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
12089
|
-
var LumiaPassportContext = (0,
|
|
12196
|
+
var LumiaPassportContext = (0, import_react50.createContext)(void 0);
|
|
12090
12197
|
function LumiaPassportProvider(props) {
|
|
12091
12198
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
12092
12199
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
12093
12200
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
12094
|
-
(0,
|
|
12095
|
-
const config = (0,
|
|
12096
|
-
const updateConfig = (0,
|
|
12201
|
+
(0, import_react50.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
|
|
12202
|
+
const config = (0, import_react50.useRef)({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
12203
|
+
const updateConfig = (0, import_react50.useCallback)((updates) => {
|
|
12097
12204
|
const prev = config.current;
|
|
12098
12205
|
const next = { ...prev };
|
|
12099
12206
|
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
@@ -12128,9 +12235,9 @@ function LumiaPassportProvider(props) {
|
|
|
12128
12235
|
}
|
|
12129
12236
|
config.current = next;
|
|
12130
12237
|
}, []);
|
|
12131
|
-
(0,
|
|
12238
|
+
(0, import_react50.useEffect)(() => {
|
|
12132
12239
|
if (typeof window === "undefined" || !projectId) return;
|
|
12133
|
-
const mergedConfig = (0,
|
|
12240
|
+
const mergedConfig = (0, import_lodash_es4.merge)(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12134
12241
|
updateConfig(mergedConfig);
|
|
12135
12242
|
console.log("[ MERGED PROVIDER STORED CONFIG ]", mergedConfig);
|
|
12136
12243
|
try {
|
|
@@ -12173,18 +12280,18 @@ function LumiaPassportProvider(props) {
|
|
|
12173
12280
|
console.error("[LumiaPassport] Error setting up iframe manager:", error);
|
|
12174
12281
|
}
|
|
12175
12282
|
}, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
|
|
12176
|
-
const contextValue = (0,
|
|
12283
|
+
const contextValue = (0, import_react50.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
|
|
12177
12284
|
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
|
|
12178
12285
|
}
|
|
12179
12286
|
var useLumiaPassportConfig = () => {
|
|
12180
|
-
const ctx = (0,
|
|
12287
|
+
const ctx = (0, import_react50.useContext)(LumiaPassportContext);
|
|
12181
12288
|
if (!ctx) throw new Error("useLumiaPassportConfig must be used within a LumiaPassportProvider");
|
|
12182
12289
|
return ctx;
|
|
12183
12290
|
};
|
|
12184
12291
|
|
|
12185
12292
|
// src/components/ConnectWalletButton.tsx
|
|
12186
12293
|
var import_lucide_react42 = require("lucide-react");
|
|
12187
|
-
var
|
|
12294
|
+
var import_react51 = require("react");
|
|
12188
12295
|
init_auth();
|
|
12189
12296
|
var import_jsx_runtime65 = (
|
|
12190
12297
|
/** external Buttons can be provided */
|
|
@@ -12207,10 +12314,10 @@ function ConnectWalletButton(props) {
|
|
|
12207
12314
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12208
12315
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12209
12316
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12210
|
-
(0,
|
|
12317
|
+
(0, import_react51.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12211
12318
|
const avatar = import_auth3.jwtTokenManager.getAvatar();
|
|
12212
12319
|
const displayName = import_auth3.jwtTokenManager.getDisplayName();
|
|
12213
|
-
const indicators = (0,
|
|
12320
|
+
const indicators = (0, import_react51.useMemo)(() => {
|
|
12214
12321
|
const userId = import_auth3.jwtTokenManager.getUserId();
|
|
12215
12322
|
if (!userId) return { server: false, local: false, backup: false };
|
|
12216
12323
|
const server = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
|
|
@@ -12362,13 +12469,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12362
12469
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12363
12470
|
|
|
12364
12471
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12365
|
-
var
|
|
12472
|
+
var import_react52 = require("react");
|
|
12366
12473
|
function useLumiaPassportOpen() {
|
|
12367
12474
|
const page = useLayoutDataStore((st) => st.page);
|
|
12368
12475
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12369
12476
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12370
12477
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12371
|
-
const open = (0,
|
|
12478
|
+
const open = (0, import_react52.useCallback)(
|
|
12372
12479
|
(passportPage, params) => {
|
|
12373
12480
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12374
12481
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12377,12 +12484,12 @@ function useLumiaPassportOpen() {
|
|
|
12377
12484
|
},
|
|
12378
12485
|
[setPage, setPageParams, address]
|
|
12379
12486
|
);
|
|
12380
|
-
const close = (0,
|
|
12487
|
+
const close = (0, import_react52.useCallback)(() => setPage(null), [setPage]);
|
|
12381
12488
|
return { open, close, isOpen: page !== null };
|
|
12382
12489
|
}
|
|
12383
12490
|
|
|
12384
12491
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12385
|
-
var
|
|
12492
|
+
var import_react53 = require("react");
|
|
12386
12493
|
function useLumiaPassportColorMode() {
|
|
12387
12494
|
const {
|
|
12388
12495
|
config: { current: config }
|
|
@@ -12390,14 +12497,14 @@ function useLumiaPassportColorMode() {
|
|
|
12390
12497
|
const preferedColorMode = config?.preferedColorMode;
|
|
12391
12498
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12392
12499
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12393
|
-
const setColorMode = (0,
|
|
12500
|
+
const setColorMode = (0, import_react53.useCallback)(
|
|
12394
12501
|
(mode) => {
|
|
12395
12502
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12396
12503
|
handleStoreColorMode(mode);
|
|
12397
12504
|
},
|
|
12398
12505
|
[handleStoreColorMode]
|
|
12399
12506
|
);
|
|
12400
|
-
(0,
|
|
12507
|
+
(0, import_react53.useEffect)(() => {
|
|
12401
12508
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12402
12509
|
if (!targetColorMode && !preferedColorMode) {
|
|
12403
12510
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12439,7 +12546,7 @@ function ThemeToggle(props) {
|
|
|
12439
12546
|
}
|
|
12440
12547
|
|
|
12441
12548
|
// src/context/RainbowKitContext.tsx
|
|
12442
|
-
var
|
|
12549
|
+
var import_react54 = __toESM(require("react"), 1);
|
|
12443
12550
|
var import_styles = require("@rainbow-me/rainbowkit/styles.css");
|
|
12444
12551
|
var import_rainbowkit3 = require("@rainbow-me/rainbowkit");
|
|
12445
12552
|
var import_wagmi8 = require("wagmi");
|
|
@@ -12586,10 +12693,10 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12586
12693
|
config: { current: config }
|
|
12587
12694
|
} = useLumiaPassportConfig();
|
|
12588
12695
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
12589
|
-
const rainbowConfig2 =
|
|
12696
|
+
const rainbowConfig2 = import_react54.default.useMemo(() => {
|
|
12590
12697
|
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12591
12698
|
}, [config.wallet?.walletConnectProjectId]);
|
|
12592
|
-
const customTheme =
|
|
12699
|
+
const customTheme = import_react54.default.useMemo(
|
|
12593
12700
|
() => isDark ? {
|
|
12594
12701
|
...(0, import_rainbowkit3.darkTheme)(),
|
|
12595
12702
|
colors: {
|
|
@@ -12618,7 +12725,7 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12618
12725
|
|
|
12619
12726
|
// src/internal/components/UserOpStatus.tsx
|
|
12620
12727
|
var import_lucide_react45 = require("lucide-react");
|
|
12621
|
-
var
|
|
12728
|
+
var React16 = __toESM(require("react"), 1);
|
|
12622
12729
|
init_base();
|
|
12623
12730
|
|
|
12624
12731
|
// src/internal/utils/cn.ts
|
|
@@ -12630,7 +12737,7 @@ function cn2(...inputs) {
|
|
|
12630
12737
|
|
|
12631
12738
|
// src/internal/components/Address.tsx
|
|
12632
12739
|
var import_lucide_react44 = require("lucide-react");
|
|
12633
|
-
var
|
|
12740
|
+
var React15 = __toESM(require("react"), 1);
|
|
12634
12741
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
12635
12742
|
function toExplorerAddressUrl(address, chain) {
|
|
12636
12743
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12652,7 +12759,7 @@ var Address = ({
|
|
|
12652
12759
|
}) => {
|
|
12653
12760
|
const addr = address || "";
|
|
12654
12761
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12655
|
-
const [copied, setCopied] =
|
|
12762
|
+
const [copied, setCopied] = React15.useState(false);
|
|
12656
12763
|
if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12657
12764
|
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12658
12765
|
label && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12725,20 +12832,20 @@ var UserOpStatus = ({
|
|
|
12725
12832
|
externalState
|
|
12726
12833
|
}) => {
|
|
12727
12834
|
const useExternalState = !!externalState;
|
|
12728
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12729
|
-
const [internalMempool, setInternalMempool] =
|
|
12730
|
-
const [internalError, setInternalError] =
|
|
12731
|
-
const [attempt, setAttempt] =
|
|
12732
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12733
|
-
const [timedOut, setTimedOut] =
|
|
12734
|
-
const [rejected, setRejected] =
|
|
12735
|
-
const intervalRef =
|
|
12736
|
-
const startTimeRef =
|
|
12835
|
+
const [internalReceipt, setInternalReceipt] = React16.useState(null);
|
|
12836
|
+
const [internalMempool, setInternalMempool] = React16.useState(null);
|
|
12837
|
+
const [internalError, setInternalError] = React16.useState(null);
|
|
12838
|
+
const [attempt, setAttempt] = React16.useState(0);
|
|
12839
|
+
const [internalRefreshing, setInternalRefreshing] = React16.useState(false);
|
|
12840
|
+
const [timedOut, setTimedOut] = React16.useState(false);
|
|
12841
|
+
const [rejected, setRejected] = React16.useState(false);
|
|
12842
|
+
const intervalRef = React16.useRef(null);
|
|
12843
|
+
const startTimeRef = React16.useRef(Date.now());
|
|
12737
12844
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12738
12845
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12739
12846
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12740
12847
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12741
|
-
const rpc =
|
|
12848
|
+
const rpc = React16.useCallback(async (method, params) => {
|
|
12742
12849
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12743
12850
|
const res = await fetch(getBundlerUrl(), {
|
|
12744
12851
|
method: "POST",
|
|
@@ -12749,14 +12856,14 @@ var UserOpStatus = ({
|
|
|
12749
12856
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12750
12857
|
return json.result;
|
|
12751
12858
|
}, []);
|
|
12752
|
-
const extractMempoolInfo =
|
|
12859
|
+
const extractMempoolInfo = React16.useCallback((m) => {
|
|
12753
12860
|
if (!m) return null;
|
|
12754
12861
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12755
12862
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12756
12863
|
if (!entryPoint && !sender) return null;
|
|
12757
12864
|
return { entryPoint, sender };
|
|
12758
12865
|
}, []);
|
|
12759
|
-
const tick =
|
|
12866
|
+
const tick = React16.useCallback(async () => {
|
|
12760
12867
|
if (useExternalState) return;
|
|
12761
12868
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12762
12869
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12800,7 +12907,7 @@ var UserOpStatus = ({
|
|
|
12800
12907
|
setAttempt((x) => x + 1);
|
|
12801
12908
|
}
|
|
12802
12909
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12803
|
-
|
|
12910
|
+
React16.useEffect(() => {
|
|
12804
12911
|
if (useExternalState) return;
|
|
12805
12912
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12806
12913
|
startTimeRef.current = Date.now();
|
|
@@ -12812,7 +12919,7 @@ var UserOpStatus = ({
|
|
|
12812
12919
|
setAttempt(0);
|
|
12813
12920
|
setInternalRefreshing(false);
|
|
12814
12921
|
}, [userOpHash, useExternalState]);
|
|
12815
|
-
|
|
12922
|
+
React16.useEffect(() => {
|
|
12816
12923
|
if (useExternalState) {
|
|
12817
12924
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12818
12925
|
return;
|
|
@@ -12989,7 +13096,7 @@ var UserOpStatus = ({
|
|
|
12989
13096
|
|
|
12990
13097
|
// src/internal/components/Hash.tsx
|
|
12991
13098
|
var import_lucide_react46 = require("lucide-react");
|
|
12992
|
-
var
|
|
13099
|
+
var React17 = __toESM(require("react"), 1);
|
|
12993
13100
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
12994
13101
|
function toExplorerUrl(kind, value, chain) {
|
|
12995
13102
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -13013,7 +13120,7 @@ var Hash = ({
|
|
|
13013
13120
|
}) => {
|
|
13014
13121
|
const value = hash || "";
|
|
13015
13122
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
13016
|
-
const [copied, setCopied] =
|
|
13123
|
+
const [copied, setCopied] = React17.useState(false);
|
|
13017
13124
|
if (!value) return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
13018
13125
|
return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
13019
13126
|
label && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -13050,14 +13157,14 @@ var Hash = ({
|
|
|
13050
13157
|
};
|
|
13051
13158
|
|
|
13052
13159
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
13053
|
-
var
|
|
13160
|
+
var import_react55 = require("react");
|
|
13054
13161
|
init_base();
|
|
13055
13162
|
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
13056
13163
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
13057
|
-
const [transactions, setTransactions] = (0,
|
|
13058
|
-
const [loading, setLoading] = (0,
|
|
13059
|
-
const [error, setError] = (0,
|
|
13060
|
-
(0,
|
|
13164
|
+
const [transactions, setTransactions] = (0, import_react55.useState)([]);
|
|
13165
|
+
const [loading, setLoading] = (0, import_react55.useState)(true);
|
|
13166
|
+
const [error, setError] = (0, import_react55.useState)(null);
|
|
13167
|
+
(0, import_react55.useEffect)(() => {
|
|
13061
13168
|
const fetchTransactions = async () => {
|
|
13062
13169
|
try {
|
|
13063
13170
|
setLoading(true);
|
|
@@ -13176,7 +13283,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
13176
13283
|
};
|
|
13177
13284
|
|
|
13178
13285
|
// src/hooks/useUserOpStatus.ts
|
|
13179
|
-
var
|
|
13286
|
+
var React19 = __toESM(require("react"), 1);
|
|
13180
13287
|
init_base();
|
|
13181
13288
|
function useUserOpStatus(options = {}) {
|
|
13182
13289
|
const {
|
|
@@ -13188,16 +13295,16 @@ function useUserOpStatus(options = {}) {
|
|
|
13188
13295
|
onReceipt,
|
|
13189
13296
|
onTxHash
|
|
13190
13297
|
} = options;
|
|
13191
|
-
const [state, setState] =
|
|
13192
|
-
const [receipt, setReceipt] =
|
|
13193
|
-
const [mempool, setMempool] =
|
|
13194
|
-
const [txHash, setTxHash] =
|
|
13195
|
-
const [error, setError] =
|
|
13196
|
-
const [isPolling, setIsPolling] =
|
|
13197
|
-
const intervalRef =
|
|
13198
|
-
const startTimeRef =
|
|
13199
|
-
const prevStateRef =
|
|
13200
|
-
const rpc =
|
|
13298
|
+
const [state, setState] = React19.useState("waiting");
|
|
13299
|
+
const [receipt, setReceipt] = React19.useState(null);
|
|
13300
|
+
const [mempool, setMempool] = React19.useState(null);
|
|
13301
|
+
const [txHash, setTxHash] = React19.useState(null);
|
|
13302
|
+
const [error, setError] = React19.useState(null);
|
|
13303
|
+
const [isPolling, setIsPolling] = React19.useState(false);
|
|
13304
|
+
const intervalRef = React19.useRef(null);
|
|
13305
|
+
const startTimeRef = React19.useRef(Date.now());
|
|
13306
|
+
const prevStateRef = React19.useRef("waiting");
|
|
13307
|
+
const rpc = React19.useCallback(async (method, params) => {
|
|
13201
13308
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
13202
13309
|
const res = await fetch(getBundlerUrl(), {
|
|
13203
13310
|
method: "POST",
|
|
@@ -13208,21 +13315,21 @@ function useUserOpStatus(options = {}) {
|
|
|
13208
13315
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
13209
13316
|
return json.result;
|
|
13210
13317
|
}, []);
|
|
13211
|
-
const extractMempoolInfo =
|
|
13318
|
+
const extractMempoolInfo = React19.useCallback((m) => {
|
|
13212
13319
|
if (!m) return null;
|
|
13213
13320
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
13214
13321
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
13215
13322
|
if (!entryPoint && !sender) return null;
|
|
13216
13323
|
return { entryPoint, sender };
|
|
13217
13324
|
}, []);
|
|
13218
|
-
const updateState =
|
|
13325
|
+
const updateState = React19.useCallback((newState) => {
|
|
13219
13326
|
setState(newState);
|
|
13220
13327
|
if (prevStateRef.current !== newState) {
|
|
13221
13328
|
prevStateRef.current = newState;
|
|
13222
13329
|
onStateChange?.(newState);
|
|
13223
13330
|
}
|
|
13224
13331
|
}, [onStateChange]);
|
|
13225
|
-
const tick =
|
|
13332
|
+
const tick = React19.useCallback(async () => {
|
|
13226
13333
|
if (!userOpHash || !enabled) return;
|
|
13227
13334
|
if (receipt) {
|
|
13228
13335
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13295,7 +13402,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13295
13402
|
onTxHash,
|
|
13296
13403
|
onReceipt
|
|
13297
13404
|
]);
|
|
13298
|
-
|
|
13405
|
+
React19.useEffect(() => {
|
|
13299
13406
|
if (!userOpHash || !enabled) return;
|
|
13300
13407
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13301
13408
|
startTimeRef.current = Date.now();
|
|
@@ -13307,7 +13414,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13307
13414
|
setError(null);
|
|
13308
13415
|
setIsPolling(false);
|
|
13309
13416
|
}, [userOpHash, enabled]);
|
|
13310
|
-
|
|
13417
|
+
React19.useEffect(() => {
|
|
13311
13418
|
if (!userOpHash || !enabled) {
|
|
13312
13419
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13313
13420
|
return;
|
|
@@ -13343,7 +13450,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13343
13450
|
}
|
|
13344
13451
|
};
|
|
13345
13452
|
}, [userOpHash, enabled, pollMs]);
|
|
13346
|
-
const refresh =
|
|
13453
|
+
const refresh = React19.useCallback(async () => {
|
|
13347
13454
|
await tick();
|
|
13348
13455
|
}, [tick]);
|
|
13349
13456
|
return {
|
|
@@ -13359,11 +13466,11 @@ function useUserOpStatus(options = {}) {
|
|
|
13359
13466
|
|
|
13360
13467
|
// src/hooks/useLogout.ts
|
|
13361
13468
|
var import_auth20 = require("@lumiapassport/core/auth");
|
|
13362
|
-
var
|
|
13469
|
+
var import_react56 = require("react");
|
|
13363
13470
|
function useLogout() {
|
|
13364
13471
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13365
13472
|
const { callbacks } = useLumiaPassportConfig();
|
|
13366
|
-
const logout2 = (0,
|
|
13473
|
+
const logout2 = (0, import_react56.useCallback)(async () => {
|
|
13367
13474
|
const prevAddress = address;
|
|
13368
13475
|
let userId = null;
|
|
13369
13476
|
setIsLoading(true);
|