@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.js
CHANGED
|
@@ -4249,18 +4249,18 @@ var init_profile = __esm({
|
|
|
4249
4249
|
});
|
|
4250
4250
|
|
|
4251
4251
|
// src/styles/built.css
|
|
4252
|
-
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}';
|
|
4252
|
+
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}';
|
|
4253
4253
|
|
|
4254
4254
|
// src/context/LumiaPassportContext.tsx
|
|
4255
4255
|
init_lumiaPassport();
|
|
4256
4256
|
init_iframe_manager();
|
|
4257
4257
|
import { initSdkErrorTracking } from "@lumiapassport/core/internal/error-tracking";
|
|
4258
|
-
import { merge } from "lodash-es";
|
|
4258
|
+
import { merge as merge2 } from "lodash-es";
|
|
4259
4259
|
import {
|
|
4260
4260
|
createContext,
|
|
4261
|
-
useCallback as
|
|
4261
|
+
useCallback as useCallback20,
|
|
4262
4262
|
useContext,
|
|
4263
|
-
useEffect as
|
|
4263
|
+
useEffect as useEffect32,
|
|
4264
4264
|
useMemo as useMemo3,
|
|
4265
4265
|
useRef as useRef11
|
|
4266
4266
|
} from "react";
|
|
@@ -4284,7 +4284,7 @@ import { Key as Key2, Mail as Mail2, Wallet2 as Wallet22 } from "lucide-react";
|
|
|
4284
4284
|
var DEFAULT_AUTH_MENU_HEIGHT = 253;
|
|
4285
4285
|
var DEFAULT_MAIN_MENU_HEIGHT = 90;
|
|
4286
4286
|
var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
|
|
4287
|
-
var
|
|
4287
|
+
var MAX_CONTENT_HEIGHT = 640;
|
|
4288
4288
|
var MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
4289
4289
|
var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
4290
4290
|
var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
|
|
@@ -4564,12 +4564,12 @@ function BalanceFeedProvider() {
|
|
|
4564
4564
|
|
|
4565
4565
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
4566
4566
|
import { AnimatePresence as AnimatePresence4, motion as motion4 } from "framer-motion";
|
|
4567
|
-
import { useEffect as
|
|
4567
|
+
import { useEffect as useEffect30 } from "react";
|
|
4568
4568
|
|
|
4569
4569
|
// package.json
|
|
4570
4570
|
var package_default = {
|
|
4571
4571
|
name: "@lumiapassport/ui-kit",
|
|
4572
|
-
version: "1.13.
|
|
4572
|
+
version: "1.13.10",
|
|
4573
4573
|
description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
|
|
4574
4574
|
type: "module",
|
|
4575
4575
|
main: "./dist/index.cjs",
|
|
@@ -5111,15 +5111,18 @@ function Header() {
|
|
|
5111
5111
|
|
|
5112
5112
|
// src/internal/components/ui/dialog.tsx
|
|
5113
5113
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
5114
|
+
import { merge } from "lodash-es";
|
|
5114
5115
|
import { ArrowLeft, SlidersHorizontal, X } from "lucide-react";
|
|
5115
|
-
import
|
|
5116
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
5116
5117
|
|
|
5117
5118
|
// src/internal/hooks/useLayoutStore.ts
|
|
5118
5119
|
import { create as create2 } from "zustand";
|
|
5119
5120
|
var useLayoutStore = create2((set) => ({
|
|
5120
5121
|
colorMode: "light",
|
|
5121
|
-
layoutView:
|
|
5122
|
+
// layoutView: 'desktop',
|
|
5122
5123
|
// deviceType: 'non-touch',
|
|
5124
|
+
isMobileView: false,
|
|
5125
|
+
maxScrollHeight: MAX_CONTENT_HEIGHT,
|
|
5123
5126
|
isDialogClosing: false,
|
|
5124
5127
|
isDialogOpen: false,
|
|
5125
5128
|
isDialogForced: false,
|
|
@@ -5128,8 +5131,10 @@ var useLayoutStore = create2((set) => ({
|
|
|
5128
5131
|
dialogContent: null,
|
|
5129
5132
|
isSettings: false,
|
|
5130
5133
|
setColorMode: (colorMode) => set({ colorMode }),
|
|
5131
|
-
setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
5134
|
+
// setLayoutView: (layoutView) => set(() => ({ layoutView })),
|
|
5132
5135
|
// setDeviceType: (deviceType) => set(() => ({ deviceType })),
|
|
5136
|
+
setIsMobileView: (isMobileView) => set({ isMobileView }),
|
|
5137
|
+
setMaxScrollHeight: (maxScrollHeight) => set({ maxScrollHeight }),
|
|
5133
5138
|
setIsDialogClosing: (isDialogClosing) => set({ isDialogClosing }),
|
|
5134
5139
|
setIsDialogOpen: (isDialogOpen) => set({ isDialogOpen }),
|
|
5135
5140
|
setIsDialogForced: (isDialogForced) => set({ isDialogForced }),
|
|
@@ -5143,7 +5148,7 @@ var useLayoutStore = create2((set) => ({
|
|
|
5143
5148
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
5144
5149
|
var Dialog = DialogPrimitive.Root;
|
|
5145
5150
|
var DialogPortal = DialogPrimitive.Portal;
|
|
5146
|
-
var DialogOverlay =
|
|
5151
|
+
var DialogOverlay = forwardRef3(
|
|
5147
5152
|
({ className, closing, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
5148
5153
|
DialogPrimitive.Overlay,
|
|
5149
5154
|
{
|
|
@@ -5159,37 +5164,51 @@ var DialogOverlay = React2.forwardRef(
|
|
|
5159
5164
|
)
|
|
5160
5165
|
);
|
|
5161
5166
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
5162
|
-
|
|
5167
|
+
function useDecideContentStyles() {
|
|
5168
|
+
const isMobileView = useLayoutStore((st) => st.isMobileView);
|
|
5169
|
+
const isDialogOpen = useLayoutStore((st) => st.isDialogOpen);
|
|
5170
|
+
const isDialogClosing = useLayoutStore((st) => st.isDialogClosing);
|
|
5171
|
+
const isClosing = isDialogOpen && isDialogClosing;
|
|
5172
|
+
console.log("[IS_MOBILE_VIEW]", isMobileView);
|
|
5173
|
+
const mobileStyles = isMobileView ? { "--l-pass-maw": "100%", "--l-pass-bdrs": "20px 20px 0px 0px" } : {};
|
|
5174
|
+
return {
|
|
5175
|
+
isClosing,
|
|
5176
|
+
isMobileView,
|
|
5177
|
+
style: merge({}, mobileStyles)
|
|
5178
|
+
};
|
|
5179
|
+
}
|
|
5180
|
+
var CONTENT_BG_SETUP = {
|
|
5181
|
+
backgroundColor: "var(--l-pass-bg)",
|
|
5182
|
+
border: "1px solid var(--l-pass-bd)",
|
|
5183
|
+
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
5184
|
+
};
|
|
5185
|
+
var DialogContent = forwardRef3(
|
|
5163
5186
|
({ className, children, hideClose, colorMode, ...props }, ref) => {
|
|
5164
5187
|
const isSettings = useLayoutStore((st) => st.isSettings);
|
|
5165
|
-
const isDialogOpen = useLayoutStore((st) => st.isDialogOpen);
|
|
5166
|
-
const isDialogClosing = useLayoutStore((st) => st.isDialogClosing);
|
|
5167
5188
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
5168
5189
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
5169
|
-
const
|
|
5170
|
-
return /* @__PURE__ */ jsx9(DialogPortal, { children: /* @__PURE__ */ jsxs8("div", { className: "lumia-scope", "data-lumia-passport-mode": colorMode, children: [
|
|
5171
|
-
/* @__PURE__ */ jsx9(DialogOverlay, { closing }),
|
|
5190
|
+
const { isMobileView, isClosing, style } = useDecideContentStyles();
|
|
5191
|
+
return /* @__PURE__ */ jsx9(DialogPortal, { children: /* @__PURE__ */ jsxs8("div", { className: "lumia-scope", "data-lumia-passport-mode": colorMode, style, children: [
|
|
5192
|
+
/* @__PURE__ */ jsx9(DialogOverlay, { closing: isClosing }),
|
|
5172
5193
|
/* @__PURE__ */ jsx9(
|
|
5173
5194
|
"div",
|
|
5174
5195
|
{
|
|
5175
5196
|
className: cn(
|
|
5176
5197
|
"fixed inset-0 z-[9999] flex items-center justify-center pointer-events-none",
|
|
5177
|
-
|
|
5198
|
+
isClosing ? "animate-dialog-out" : "animate-dialog-in",
|
|
5199
|
+
isMobileView ? "items-end" : "items-center"
|
|
5178
5200
|
),
|
|
5179
5201
|
children: /* @__PURE__ */ jsxs8(
|
|
5180
5202
|
DialogPrimitive.Content,
|
|
5181
5203
|
{
|
|
5182
5204
|
ref,
|
|
5183
|
-
style: !!className ? void 0 :
|
|
5184
|
-
backgroundColor: "var(--l-pass-bg)",
|
|
5185
|
-
border: "1px solid var(--l-pass-bd)",
|
|
5186
|
-
boxShadow: "0px 4px 10px var(--l-pass-shadow-c)"
|
|
5187
|
-
},
|
|
5205
|
+
style: !!className ? void 0 : CONTENT_BG_SETUP,
|
|
5188
5206
|
className: cn(
|
|
5207
|
+
// isWalletLinking ? 'pointer-events-none' : 'pointer-events-auto',
|
|
5189
5208
|
"relative pointer-events-auto w-full",
|
|
5209
|
+
"max-w-[var(--l-pass-maw)] max-h-[95dvh] p-0 gap-0",
|
|
5190
5210
|
"text-[var(--l-pass-fg)]",
|
|
5191
5211
|
"rounded-[var(--l-pass-bdrs)] overflow-hidden",
|
|
5192
|
-
"max-w-[var(--l-pass-maw)] max-h-[95dvh] p-0 gap-0",
|
|
5193
5212
|
className
|
|
5194
5213
|
),
|
|
5195
5214
|
...props,
|
|
@@ -5247,7 +5266,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { cl
|
|
|
5247
5266
|
DialogHeader.displayName = "DialogHeader";
|
|
5248
5267
|
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
|
|
5249
5268
|
DialogFooter.displayName = "DialogFooter";
|
|
5250
|
-
var DialogTitle =
|
|
5269
|
+
var DialogTitle = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
5251
5270
|
DialogPrimitive.Title,
|
|
5252
5271
|
{
|
|
5253
5272
|
ref,
|
|
@@ -5256,7 +5275,7 @@ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
5256
5275
|
}
|
|
5257
5276
|
));
|
|
5258
5277
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
5259
|
-
var DialogDescription =
|
|
5278
|
+
var DialogDescription = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
|
|
5260
5279
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
5261
5280
|
|
|
5262
5281
|
// src/internal/components/ui/visually-hidden.tsx
|
|
@@ -5494,13 +5513,36 @@ function useCheckVaultStatus() {
|
|
|
5494
5513
|
}, [address, checkVaultStatus]);
|
|
5495
5514
|
}
|
|
5496
5515
|
|
|
5516
|
+
// src/internal/hooks/useDetectMaxScrollHeight.ts
|
|
5517
|
+
import { debounce } from "lodash-es";
|
|
5518
|
+
import { useCallback as useCallback2, useEffect as useEffect6 } from "react";
|
|
5519
|
+
var DEBOUNCE_DELAY = 50;
|
|
5520
|
+
function useDetectMaxScrollHeight() {
|
|
5521
|
+
const setIsMobileView = useLayoutStore((state) => state.setIsMobileView);
|
|
5522
|
+
const setMaxScrollHeight = useLayoutStore((state) => state.setMaxScrollHeight);
|
|
5523
|
+
const onResize = useCallback2(
|
|
5524
|
+
debounce(({ width, height }) => {
|
|
5525
|
+
const limContentHeight = height * 0.92 - 116 - 72;
|
|
5526
|
+
setIsMobileView(width < height && (width < 475 || limContentHeight <= MAX_CONTENT_HEIGHT));
|
|
5527
|
+
setMaxScrollHeight(Math.min(limContentHeight, MAX_CONTENT_HEIGHT));
|
|
5528
|
+
}, DEBOUNCE_DELAY),
|
|
5529
|
+
[setMaxScrollHeight, setIsMobileView]
|
|
5530
|
+
);
|
|
5531
|
+
useEffect6(() => {
|
|
5532
|
+
const obs = new ResizeObserver(([entry]) => onResize(entry.contentRect));
|
|
5533
|
+
const doc = window.document.getElementsByTagName("html")[0];
|
|
5534
|
+
if (doc) obs.observe(doc);
|
|
5535
|
+
return () => obs.disconnect();
|
|
5536
|
+
}, [onResize]);
|
|
5537
|
+
}
|
|
5538
|
+
|
|
5497
5539
|
// src/internal/hooks/usePageMapper.tsx
|
|
5498
|
-
import { useCallback as
|
|
5540
|
+
import { useCallback as useCallback17, useEffect as useEffect27 } from "react";
|
|
5499
5541
|
|
|
5500
5542
|
// src/internal/components/AuthMenu/AuthMenu.tsx
|
|
5501
5543
|
import { AnimatePresence, motion } from "framer-motion";
|
|
5502
5544
|
import { Loader as Loader5 } from "lucide-react";
|
|
5503
|
-
import { useEffect as
|
|
5545
|
+
import { useEffect as useEffect10, useMemo } from "react";
|
|
5504
5546
|
|
|
5505
5547
|
// src/internal/components/AuthMenu/AuthFailedStep.tsx
|
|
5506
5548
|
import { AlertTriangle, Cross } from "lucide-react";
|
|
@@ -5593,9 +5635,9 @@ init_auth();
|
|
|
5593
5635
|
init_profile();
|
|
5594
5636
|
|
|
5595
5637
|
// src/internal/components/ui/input.tsx
|
|
5596
|
-
import
|
|
5638
|
+
import React2, { useImperativeHandle, useRef as useRef2 } from "react";
|
|
5597
5639
|
import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
5598
|
-
var Input =
|
|
5640
|
+
var Input = React2.forwardRef((props, ref) => {
|
|
5599
5641
|
const { className, disabled, error, Icon, element, ...inputProps } = props;
|
|
5600
5642
|
const internalRef = useRef2(null);
|
|
5601
5643
|
useImperativeHandle(ref, () => internalRef.current);
|
|
@@ -5753,7 +5795,7 @@ function DisplayNameStep(props) {
|
|
|
5753
5795
|
|
|
5754
5796
|
// src/internal/components/AuthMenu/PassKeyStep.tsx
|
|
5755
5797
|
import { ArrowLeft as ArrowLeft2, Key as Key3 } from "lucide-react";
|
|
5756
|
-
import { useCallback as
|
|
5798
|
+
import { useCallback as useCallback4 } from "react";
|
|
5757
5799
|
|
|
5758
5800
|
// src/internal/assets/PasskeyAddIcon.tsx
|
|
5759
5801
|
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
@@ -5786,16 +5828,16 @@ function PasskeyAddIcon(props) {
|
|
|
5786
5828
|
init_auth();
|
|
5787
5829
|
|
|
5788
5830
|
// src/internal/components/Expandable/hooks/useExpandable.ts
|
|
5789
|
-
import { useCallback as
|
|
5831
|
+
import { useCallback as useCallback3, useEffect as useEffect7, useRef as useRef3 } from "react";
|
|
5790
5832
|
var useExpandable = (props) => {
|
|
5791
5833
|
const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
|
|
5792
5834
|
const expandableRef = useRef3(null);
|
|
5793
5835
|
const contentRef = useRef3(null);
|
|
5794
|
-
|
|
5836
|
+
useEffect7(() => {
|
|
5795
5837
|
if (!expandableRef.current) return;
|
|
5796
5838
|
expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
|
|
5797
5839
|
}, []);
|
|
5798
|
-
const setExpandableHeight =
|
|
5840
|
+
const setExpandableHeight = useCallback3(
|
|
5799
5841
|
(isExpnd) => {
|
|
5800
5842
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5801
5843
|
expandableRef.current.style.setProperty(
|
|
@@ -5806,7 +5848,7 @@ var useExpandable = (props) => {
|
|
|
5806
5848
|
// ON_RESIZE_DELEAY),
|
|
5807
5849
|
[minHeight]
|
|
5808
5850
|
);
|
|
5809
|
-
|
|
5851
|
+
useEffect7(() => {
|
|
5810
5852
|
if (!contentRef.current || !expandableRef.current) return;
|
|
5811
5853
|
const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
|
|
5812
5854
|
obs.observe(expandableRef.current);
|
|
@@ -5870,7 +5912,7 @@ function PassKeyStep(props) {
|
|
|
5870
5912
|
setFailedMessage,
|
|
5871
5913
|
setFailedType
|
|
5872
5914
|
} = useAuthStore();
|
|
5873
|
-
const onPasskeyRegister =
|
|
5915
|
+
const onPasskeyRegister = useCallback4(async () => {
|
|
5874
5916
|
setPasskeyError("");
|
|
5875
5917
|
setPasskeyStatus("registering passkey...");
|
|
5876
5918
|
setIsLoading(true);
|
|
@@ -5938,7 +5980,7 @@ function PassKeyStep(props) {
|
|
|
5938
5980
|
setIsLoading(false);
|
|
5939
5981
|
}
|
|
5940
5982
|
}, [onAuthSuccess, setPage, callbacks]);
|
|
5941
|
-
const onPasskeyAuth =
|
|
5983
|
+
const onPasskeyAuth = useCallback4(async () => {
|
|
5942
5984
|
setPasskeyError("");
|
|
5943
5985
|
setPasskeyStatus("checking available passkeys...");
|
|
5944
5986
|
setIsLoading(true);
|
|
@@ -6196,7 +6238,7 @@ init_assets();
|
|
|
6196
6238
|
init_lumiaPassport();
|
|
6197
6239
|
init_auth();
|
|
6198
6240
|
import { Key as Key4 } from "lucide-react";
|
|
6199
|
-
import { useCallback as
|
|
6241
|
+
import { useCallback as useCallback5 } from "react";
|
|
6200
6242
|
init_projectId();
|
|
6201
6243
|
|
|
6202
6244
|
// src/internal/components/AuthMenu/SignInStep/utils.ts
|
|
@@ -6284,7 +6326,7 @@ function Social(props) {
|
|
|
6284
6326
|
setPasskeyError,
|
|
6285
6327
|
setPasskeyStatus
|
|
6286
6328
|
} = useAuthStore();
|
|
6287
|
-
const onSocialAuth =
|
|
6329
|
+
const onSocialAuth = useCallback5(
|
|
6288
6330
|
async (providerId) => {
|
|
6289
6331
|
const normalizedProviderId = providerId.toLowerCase();
|
|
6290
6332
|
const provider = config.current?.social?.providers?.find(
|
|
@@ -6723,7 +6765,7 @@ function SignInStep(props) {
|
|
|
6723
6765
|
|
|
6724
6766
|
// src/internal/components/AuthMenu/useAuthMenuHanders.ts
|
|
6725
6767
|
init_auth();
|
|
6726
|
-
import { useCallback as
|
|
6768
|
+
import { useCallback as useCallback6, useRef as useRef4, useState as useState4 } from "react";
|
|
6727
6769
|
function useAuthMenuHandlers() {
|
|
6728
6770
|
const {
|
|
6729
6771
|
config: { current: config },
|
|
@@ -6734,7 +6776,7 @@ function useAuthMenuHandlers() {
|
|
|
6734
6776
|
const [telegramCleanup, setTelegramCleanup] = useState4(null);
|
|
6735
6777
|
const { usePaymaster, setError, setStatus, setSession, setAddress, setRecoveryUserId, setHasServerVault } = useLumiaPassportSession();
|
|
6736
6778
|
const { setStep, setVerificationError, setCodeSendError, setFailedMessage } = useAuthStore();
|
|
6737
|
-
const createSessionWithKeyshare =
|
|
6779
|
+
const createSessionWithKeyshare = useCallback6(
|
|
6738
6780
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
6739
6781
|
try {
|
|
6740
6782
|
try {
|
|
@@ -6768,7 +6810,7 @@ function useAuthMenuHandlers() {
|
|
|
6768
6810
|
},
|
|
6769
6811
|
[setStatus, callbacks, usePaymaster]
|
|
6770
6812
|
);
|
|
6771
|
-
const onAuthSuccess =
|
|
6813
|
+
const onAuthSuccess = useCallback6(async () => {
|
|
6772
6814
|
console.log("[ConnectWalletButton] handleAuthModalSuccess called");
|
|
6773
6815
|
const loginResponse = pendingLoginResponseRef.current;
|
|
6774
6816
|
console.log("[ConnectWalletButton] loginResponse:", loginResponse);
|
|
@@ -6863,7 +6905,7 @@ function useAuthMenuHandlers() {
|
|
|
6863
6905
|
setHasServerVault,
|
|
6864
6906
|
createSessionWithKeyshare
|
|
6865
6907
|
]);
|
|
6866
|
-
const checkDisplayNameRequired =
|
|
6908
|
+
const checkDisplayNameRequired = useCallback6(
|
|
6867
6909
|
async (loginResponse) => {
|
|
6868
6910
|
if (!config.features.displayNameNeeded) {
|
|
6869
6911
|
return false;
|
|
@@ -6890,7 +6932,7 @@ function useAuthMenuHandlers() {
|
|
|
6890
6932
|
},
|
|
6891
6933
|
[config.features.displayNameNeeded]
|
|
6892
6934
|
);
|
|
6893
|
-
const goBackToSignIn =
|
|
6935
|
+
const goBackToSignIn = useCallback6(() => {
|
|
6894
6936
|
setStep("signin");
|
|
6895
6937
|
setVerificationError("");
|
|
6896
6938
|
setCodeSendError("");
|
|
@@ -6908,11 +6950,11 @@ function useAuthMenuHandlers() {
|
|
|
6908
6950
|
}
|
|
6909
6951
|
|
|
6910
6952
|
// src/internal/components/AuthMenu/useListenIframeAuthEvents.ts
|
|
6911
|
-
import { useCallback as
|
|
6953
|
+
import { useCallback as useCallback7, useEffect as useEffect8 } from "react";
|
|
6912
6954
|
function useListenIframeAuthEvents() {
|
|
6913
6955
|
const setPage = useLayoutDataStore((state) => state.setPage);
|
|
6914
6956
|
const setIsIframeReady = useLumiaPassportSession((state) => state.setIsIframeReady);
|
|
6915
|
-
const handleIframeMessage =
|
|
6957
|
+
const handleIframeMessage = useCallback7(
|
|
6916
6958
|
(event) => {
|
|
6917
6959
|
console.log("[AuthMenu] Received iframe message:", event.data);
|
|
6918
6960
|
if (event.data?.type === "LUMIA_PASSPORT_IFRAME_READY") {
|
|
@@ -6930,7 +6972,7 @@ function useListenIframeAuthEvents() {
|
|
|
6930
6972
|
},
|
|
6931
6973
|
[setPage, setIsIframeReady]
|
|
6932
6974
|
);
|
|
6933
|
-
|
|
6975
|
+
useEffect8(() => {
|
|
6934
6976
|
window.addEventListener("message", handleIframeMessage);
|
|
6935
6977
|
return () => window.removeEventListener("message", handleIframeMessage);
|
|
6936
6978
|
}, [handleIframeMessage]);
|
|
@@ -6959,21 +7001,21 @@ init_auth();
|
|
|
6959
7001
|
init_projectId();
|
|
6960
7002
|
|
|
6961
7003
|
// src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
|
|
6962
|
-
import { useEffect as
|
|
7004
|
+
import { useEffect as useEffect9, useRef as useRef5, useState as useState5 } from "react";
|
|
6963
7005
|
import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
6964
7006
|
var VerificationCodeInput = (props) => {
|
|
6965
7007
|
const { onVerifyCode, onResendCode, isLoading, expiresIn, error } = props;
|
|
6966
7008
|
const setVerificationError = useAuthStore((st) => st.setVerificationError);
|
|
6967
7009
|
const [timeLeft, setTimeLeft] = useState5(expiresIn);
|
|
6968
|
-
|
|
6969
|
-
|
|
7010
|
+
useEffect9(() => setTimeLeft(expiresIn), [expiresIn]);
|
|
7011
|
+
useEffect9(() => {
|
|
6970
7012
|
const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
|
|
6971
7013
|
return () => clearInterval(t);
|
|
6972
7014
|
}, []);
|
|
6973
7015
|
const lastSubmittedRef = useRef5(null);
|
|
6974
7016
|
const inputsRef = useRef5([]);
|
|
6975
7017
|
const [digits, setDigits] = useState5(["", "", "", "", "", ""]);
|
|
6976
|
-
|
|
7018
|
+
useEffect9(() => {
|
|
6977
7019
|
const code = digits.join("");
|
|
6978
7020
|
if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
|
|
6979
7021
|
if (lastSubmittedRef.current !== code) {
|
|
@@ -6982,7 +7024,7 @@ var VerificationCodeInput = (props) => {
|
|
|
6982
7024
|
}
|
|
6983
7025
|
}
|
|
6984
7026
|
}, [digits, isLoading, onVerifyCode]);
|
|
6985
|
-
|
|
7027
|
+
useEffect9(() => {
|
|
6986
7028
|
const t = setTimeout(() => {
|
|
6987
7029
|
inputsRef.current[0]?.focus();
|
|
6988
7030
|
}, 0);
|
|
@@ -7258,7 +7300,7 @@ var AuthMenu = () => {
|
|
|
7258
7300
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
7259
7301
|
const page = useLayoutDataStore((st) => st.page);
|
|
7260
7302
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
7261
|
-
|
|
7303
|
+
useEffect10(() => setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT), [setMainPageHeight]);
|
|
7262
7304
|
const {
|
|
7263
7305
|
step,
|
|
7264
7306
|
setStep,
|
|
@@ -7269,7 +7311,7 @@ var AuthMenu = () => {
|
|
|
7269
7311
|
setFailedMessage,
|
|
7270
7312
|
setCodeSendError
|
|
7271
7313
|
} = useAuthStore();
|
|
7272
|
-
|
|
7314
|
+
useEffect10(() => {
|
|
7273
7315
|
if (page !== "auth" /* AUTH */) {
|
|
7274
7316
|
setStep("signin");
|
|
7275
7317
|
setEmail("");
|
|
@@ -7436,7 +7478,7 @@ function RampnowIcon() {
|
|
|
7436
7478
|
// src/internal/components/BuyMenu/binance/Binance.tsx
|
|
7437
7479
|
import { useMutation as useMutation6, useQuery as useQuery3, useQueryClient } from "@tanstack/react-query";
|
|
7438
7480
|
import { DollarSign, LoaderIcon } from "lucide-react";
|
|
7439
|
-
import { useEffect as
|
|
7481
|
+
import { useEffect as useEffect12, useRef as useRef6 } from "react";
|
|
7440
7482
|
|
|
7441
7483
|
// src/internal/components/BuyMenu/components/PaymentSelector.tsx
|
|
7442
7484
|
import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
@@ -7551,7 +7593,7 @@ async function createPreorderMutation(payload) {
|
|
|
7551
7593
|
}
|
|
7552
7594
|
|
|
7553
7595
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7554
|
-
import { useEffect as
|
|
7596
|
+
import { useEffect as useEffect11 } from "react";
|
|
7555
7597
|
|
|
7556
7598
|
// src/internal/components/BuyMenu/binance/utils.ts
|
|
7557
7599
|
function getPayMethodID(pm) {
|
|
@@ -7571,7 +7613,7 @@ function handleErrors(errors) {
|
|
|
7571
7613
|
// src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
|
|
7572
7614
|
var useQueriesErrorHandler = (errors, stateUpdater) => {
|
|
7573
7615
|
const { error: errorTitle, message: errorMessage } = handleErrors(errors);
|
|
7574
|
-
|
|
7616
|
+
useEffect11(() => {
|
|
7575
7617
|
if (!errorTitle && !errorMessage) return;
|
|
7576
7618
|
console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
|
|
7577
7619
|
stateUpdater(1);
|
|
@@ -7620,14 +7662,14 @@ function Binance(props) {
|
|
|
7620
7662
|
queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
|
|
7621
7663
|
});
|
|
7622
7664
|
const lastLoadedPaymentModes = useRef6([]);
|
|
7623
|
-
|
|
7665
|
+
useEffect12(() => {
|
|
7624
7666
|
if (!paymentModes?.length) return;
|
|
7625
7667
|
setPaymentMode(getPayMethodID(paymentModes[0]));
|
|
7626
7668
|
lastLoadedPaymentModes.current = paymentModes;
|
|
7627
7669
|
}, [paymentModes]);
|
|
7628
7670
|
const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
|
|
7629
7671
|
const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
|
|
7630
|
-
|
|
7672
|
+
useEffect12(() => setMinAmount(minimum), [minimum]);
|
|
7631
7673
|
const {
|
|
7632
7674
|
data: quoteData = null,
|
|
7633
7675
|
isLoading: isQuoteDataLoading,
|
|
@@ -7672,7 +7714,7 @@ function Binance(props) {
|
|
|
7672
7714
|
setRedirecting(false);
|
|
7673
7715
|
}
|
|
7674
7716
|
});
|
|
7675
|
-
|
|
7717
|
+
useEffect12(() => {
|
|
7676
7718
|
return () => {
|
|
7677
7719
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceNetworksQuery] });
|
|
7678
7720
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.binancePaymentModes] });
|
|
@@ -7736,7 +7778,7 @@ function Binance(props) {
|
|
|
7736
7778
|
// src/internal/components/BuyMenu/rampnow/Rampnow.tsx
|
|
7737
7779
|
import { useMutation as useMutation7, useQuery as useQuery4, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
|
|
7738
7780
|
import { DollarSign as DollarSign2, LoaderIcon as LoaderIcon2 } from "lucide-react";
|
|
7739
|
-
import { useEffect as
|
|
7781
|
+
import { useEffect as useEffect13 } from "react";
|
|
7740
7782
|
|
|
7741
7783
|
// src/internal/components/BuyMenu/rampnow/api.ts
|
|
7742
7784
|
var API_DOMAIN3 = "https://api.lumiapassport.com/on-ramp";
|
|
@@ -7801,7 +7843,7 @@ function Rampnow(props) {
|
|
|
7801
7843
|
setMinAmount
|
|
7802
7844
|
} = control;
|
|
7803
7845
|
const qc = useQueryClient2();
|
|
7804
|
-
|
|
7846
|
+
useEffect13(() => {
|
|
7805
7847
|
setMinAmount(MINIMUM_RAMP_AMOUNT);
|
|
7806
7848
|
setPaymentMode(PAYMENT_MODES[0].id);
|
|
7807
7849
|
}, []);
|
|
@@ -7858,7 +7900,7 @@ function Rampnow(props) {
|
|
|
7858
7900
|
console.error("Create CheckoutOrder failed:", err);
|
|
7859
7901
|
}
|
|
7860
7902
|
});
|
|
7861
|
-
|
|
7903
|
+
useEffect13(() => {
|
|
7862
7904
|
return () => {
|
|
7863
7905
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowConfig] });
|
|
7864
7906
|
qc.resetQueries({ queryKey: [QUERY_KEYS2.getRampNowQuote] });
|
|
@@ -7940,10 +7982,10 @@ var RAMP_PROVIDERS = {
|
|
|
7940
7982
|
var REDIRECT_TIMEOUT_MS = 1500;
|
|
7941
7983
|
|
|
7942
7984
|
// src/internal/components/BuyMenu/useSelectables.ts
|
|
7943
|
-
import { useCallback as
|
|
7985
|
+
import { useCallback as useCallback8, useEffect as useEffect14, useRef as useRef7, useState as useState6 } from "react";
|
|
7944
7986
|
|
|
7945
7987
|
// src/internal/utils/debounce.ts
|
|
7946
|
-
function
|
|
7988
|
+
function debounce2(func, waitFor) {
|
|
7947
7989
|
let timeout;
|
|
7948
7990
|
return (...args) => {
|
|
7949
7991
|
if (timeout) clearTimeout(timeout);
|
|
@@ -7961,15 +8003,15 @@ var useSelectables = () => {
|
|
|
7961
8003
|
const [srcQueryAmount, setSrcQueryAmount] = useState6(0);
|
|
7962
8004
|
const [srcInputAmount, setSrcInputAmount] = useState6(0);
|
|
7963
8005
|
const [paymentMode, setPaymentMode] = useState6(null);
|
|
7964
|
-
const setQueryAmountDebounced =
|
|
7965
|
-
|
|
8006
|
+
const setQueryAmountDebounced = useCallback8(
|
|
8007
|
+
debounce2((inputAmount) => {
|
|
7966
8008
|
const checkedValue = Math.max(inputAmount, minAmount);
|
|
7967
8009
|
setSrcInputAmount(checkedValue);
|
|
7968
8010
|
setSrcQueryAmount(checkedValue);
|
|
7969
8011
|
}, ON_INPUT_QUERY_DELAY),
|
|
7970
8012
|
[minAmount]
|
|
7971
8013
|
);
|
|
7972
|
-
|
|
8014
|
+
useEffect14(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
|
|
7973
8015
|
return {
|
|
7974
8016
|
inputRef,
|
|
7975
8017
|
redirecting,
|
|
@@ -8032,7 +8074,7 @@ import {
|
|
|
8032
8074
|
Loader as Loader6,
|
|
8033
8075
|
Lock
|
|
8034
8076
|
} from "lucide-react";
|
|
8035
|
-
import
|
|
8077
|
+
import React7, { useEffect as useEffect15 } from "react";
|
|
8036
8078
|
init_iframe_manager();
|
|
8037
8079
|
|
|
8038
8080
|
// src/internal/components/ui/checkbox.tsx
|
|
@@ -8065,32 +8107,33 @@ import { Fragment as Fragment5, jsx as jsx35, jsxs as jsxs26 } from "react/jsx-r
|
|
|
8065
8107
|
function KeyshareBackupMenu() {
|
|
8066
8108
|
const session = useLumiaPassportSession((st) => st.session);
|
|
8067
8109
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8110
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8068
8111
|
const userId = session?.mpcUserId || "";
|
|
8069
8112
|
const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
|
|
8070
|
-
|
|
8113
|
+
useEffect15(() => {
|
|
8071
8114
|
if (!userId) setPage("main-menu" /* MAIN_MENU */);
|
|
8072
8115
|
}, [userId, setPage]);
|
|
8073
|
-
const [backupStatus, setBackupStatus] =
|
|
8116
|
+
const [backupStatus, setBackupStatus] = React7.useState({
|
|
8074
8117
|
server: {},
|
|
8075
8118
|
cloud: {},
|
|
8076
8119
|
local: {}
|
|
8077
8120
|
});
|
|
8078
|
-
const [loading, setLoading] =
|
|
8121
|
+
const [loading, setLoading] = React7.useState({
|
|
8079
8122
|
server: false,
|
|
8080
8123
|
cloud: false,
|
|
8081
8124
|
local: false
|
|
8082
8125
|
});
|
|
8083
|
-
const [error, setError] =
|
|
8084
|
-
const [success, setSuccess] =
|
|
8085
|
-
const [showPassword, setShowPassword] =
|
|
8086
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8087
|
-
const [customPassword, setCustomPassword] =
|
|
8088
|
-
const [cloudProviders, setCloudProviders] =
|
|
8126
|
+
const [error, setError] = React7.useState(null);
|
|
8127
|
+
const [success, setSuccess] = React7.useState(null);
|
|
8128
|
+
const [showPassword, setShowPassword] = React7.useState(false);
|
|
8129
|
+
const [useCustomPassword, setUseCustomPassword] = React7.useState(false);
|
|
8130
|
+
const [customPassword, setCustomPassword] = React7.useState("");
|
|
8131
|
+
const [cloudProviders, setCloudProviders] = React7.useState(
|
|
8089
8132
|
[]
|
|
8090
8133
|
);
|
|
8091
|
-
const [selectedCloudProvider, setSelectedCloudProvider] =
|
|
8092
|
-
const [hasKeyshareData, setHasKeyshareData] =
|
|
8093
|
-
const iframeManager =
|
|
8134
|
+
const [selectedCloudProvider, setSelectedCloudProvider] = React7.useState(null);
|
|
8135
|
+
const [hasKeyshareData, setHasKeyshareData] = React7.useState(true);
|
|
8136
|
+
const iframeManager = React7.useMemo(() => {
|
|
8094
8137
|
try {
|
|
8095
8138
|
return getIframeManager();
|
|
8096
8139
|
} catch (e) {
|
|
@@ -8098,7 +8141,7 @@ function KeyshareBackupMenu() {
|
|
|
8098
8141
|
return null;
|
|
8099
8142
|
}
|
|
8100
8143
|
}, []);
|
|
8101
|
-
|
|
8144
|
+
useEffect15(() => {
|
|
8102
8145
|
const loadCloudProviders = async () => {
|
|
8103
8146
|
try {
|
|
8104
8147
|
const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
|
|
@@ -8118,7 +8161,7 @@ function KeyshareBackupMenu() {
|
|
|
8118
8161
|
};
|
|
8119
8162
|
loadCloudProviders();
|
|
8120
8163
|
}, [selectedCloudProvider]);
|
|
8121
|
-
const refreshStatus =
|
|
8164
|
+
const refreshStatus = React7.useCallback(async () => {
|
|
8122
8165
|
if (!iframeManager) return;
|
|
8123
8166
|
try {
|
|
8124
8167
|
const status = await iframeManager.getBackupStatus(userId);
|
|
@@ -8127,7 +8170,7 @@ function KeyshareBackupMenu() {
|
|
|
8127
8170
|
console.error("[KeyshareBackup] Failed to get backup status:", error2);
|
|
8128
8171
|
}
|
|
8129
8172
|
}, [iframeManager, userId]);
|
|
8130
|
-
|
|
8173
|
+
useEffect15(() => {
|
|
8131
8174
|
refreshStatus();
|
|
8132
8175
|
}, [refreshStatus]);
|
|
8133
8176
|
const handleBackup = async (method) => {
|
|
@@ -8216,152 +8259,149 @@ function KeyshareBackupMenu() {
|
|
|
8216
8259
|
const date = new Date(timestamp);
|
|
8217
8260
|
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
8218
8261
|
};
|
|
8219
|
-
return /* @__PURE__ */ jsx35(
|
|
8220
|
-
|
|
8221
|
-
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
|
|
8225
|
-
|
|
8226
|
-
onClick: () => setPage("settings" /* SETTINGS */),
|
|
8227
|
-
className: "
|
|
8228
|
-
title: "Back",
|
|
8229
|
-
children: /* @__PURE__ */ jsx35(ArrowLeft5, { className: "h-4 w-4" })
|
|
8230
|
-
}
|
|
8231
|
-
),
|
|
8232
|
-
/* @__PURE__ */ jsx35("span", { className: "text-xl font-semibold", children: "Create Backup" })
|
|
8233
|
-
] }),
|
|
8234
|
-
/* @__PURE__ */ jsx35("span", { className: "text-xs", children: "Secure your keyshare with encrypted backups" }),
|
|
8235
|
-
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2", children: [
|
|
8236
|
-
/* @__PURE__ */ jsx35(
|
|
8237
|
-
Checkbox,
|
|
8238
|
-
{
|
|
8239
|
-
name: "use-backup-password-checkbox",
|
|
8240
|
-
id: "use-backup-password",
|
|
8241
|
-
checked: useCustomPassword,
|
|
8242
|
-
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
8243
|
-
}
|
|
8244
|
-
),
|
|
8245
|
-
/* @__PURE__ */ jsx35("label", { htmlFor: "use-backup-password", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8246
|
-
] }),
|
|
8247
|
-
useCustomPassword ? /* @__PURE__ */ jsxs26(Fragment5, { children: [
|
|
8248
|
-
/* @__PURE__ */ jsx35(
|
|
8249
|
-
Input,
|
|
8250
|
-
{
|
|
8251
|
-
Icon: Key5,
|
|
8252
|
-
type: showPassword ? "text" : "password",
|
|
8253
|
-
placeholder: "Enter backup password",
|
|
8254
|
-
value: customPassword,
|
|
8255
|
-
onChange: (e) => setCustomPassword(e.target.value),
|
|
8256
|
-
element: /* @__PURE__ */ jsx35(Button, { variant: "ghost", size: "icon", type: "button", onClick: () => setShowPassword(!showPassword), children: showPassword ? /* @__PURE__ */ jsx35(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx35(Eye, { className: "h-4 w-4" }) })
|
|
8257
|
-
}
|
|
8258
|
-
),
|
|
8259
|
-
/* @__PURE__ */ jsxs26(
|
|
8260
|
-
Button,
|
|
8261
|
-
{
|
|
8262
|
-
size: "medium",
|
|
8263
|
-
onClick: () => handleBackup("server"),
|
|
8264
|
-
disabled: !!loading.server || !customPassword || !hasKeyshareData,
|
|
8265
|
-
className: "w-full",
|
|
8266
|
-
children: [
|
|
8267
|
-
loading.server ? /* @__PURE__ */ jsx35(Loader6, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ jsx35(OtpIcon, { className: "h-4 w-4" }),
|
|
8268
|
-
/* @__PURE__ */ jsx35("span", { children: loading.server ? "Backing up..." : "Create Backup with Password" })
|
|
8269
|
-
]
|
|
8270
|
-
}
|
|
8271
|
-
)
|
|
8272
|
-
] }) : /* @__PURE__ */ jsxs26(Fragment5, { children: [
|
|
8273
|
-
/* @__PURE__ */ jsxs26(Highlight, { className: "h-12 flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8274
|
-
/* @__PURE__ */ jsx35(Key5, { className: "h-4 w-4 text-[var(--l-pass-info)] mx-1" }),
|
|
8275
|
-
/* @__PURE__ */ jsx35("span", { className: "text-xs", children: "Backup will be encrypted with passkey" })
|
|
8276
|
-
] }),
|
|
8277
|
-
/* @__PURE__ */ jsxs26(
|
|
8278
|
-
Button,
|
|
8279
|
-
{
|
|
8280
|
-
size: "medium",
|
|
8281
|
-
onClick: () => handleBackup("server"),
|
|
8282
|
-
disabled: loading.server || !!customPassword || !hasKeyshareData,
|
|
8283
|
-
className: "w-full",
|
|
8284
|
-
children: [
|
|
8285
|
-
loading.server ? /* @__PURE__ */ jsx35(Loader6, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ jsx35(PasskeyAddIcon, { className: "h-4 w-4" }),
|
|
8286
|
-
/* @__PURE__ */ jsx35("span", { children: loading.server ? "Backing up..." : "Create Backup with Passkey" })
|
|
8287
|
-
]
|
|
8288
|
-
}
|
|
8289
|
-
)
|
|
8290
|
-
] }),
|
|
8291
|
-
/* @__PURE__ */ jsxs26("div", { className: "w-full flex items-center", children: [
|
|
8292
|
-
/* @__PURE__ */ jsx35("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
8293
|
-
/* @__PURE__ */ jsx35("div", { className: "flex-none font-bold px-2 text-xs leading-4", children: "Alternative" }),
|
|
8294
|
-
/* @__PURE__ */ jsx35("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
8295
|
-
] }),
|
|
8296
|
-
/* @__PURE__ */ jsxs26("div", { className: "grid grid-cols-2 gap-[var(--l-pass-gap)]", children: [
|
|
8297
|
-
/* @__PURE__ */ jsxs26(Highlight, { children: [
|
|
8298
|
-
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8299
|
-
/* @__PURE__ */ jsx35(Cloud, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8300
|
-
/* @__PURE__ */ jsx35("div", { className: "text-sm font-medium", children: "Cloud" })
|
|
8262
|
+
return /* @__PURE__ */ jsx35(
|
|
8263
|
+
"div",
|
|
8264
|
+
{
|
|
8265
|
+
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
8266
|
+
className: "list-scrollbar-y w-full",
|
|
8267
|
+
children: /* @__PURE__ */ jsxs26(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
8268
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2", children: [
|
|
8269
|
+
/* @__PURE__ */ jsx35(Button, { variant: "ghost", size: "icon", onClick: () => setPage("settings" /* SETTINGS */), title: "Back", children: /* @__PURE__ */ jsx35(ArrowLeft5, { className: "h-4 w-4" }) }),
|
|
8270
|
+
/* @__PURE__ */ jsx35("span", { className: "text-xl font-semibold", children: "Create Backup" })
|
|
8301
8271
|
] }),
|
|
8302
|
-
|
|
8303
|
-
|
|
8304
|
-
|
|
8305
|
-
|
|
8306
|
-
|
|
8307
|
-
|
|
8308
|
-
|
|
8309
|
-
|
|
8310
|
-
|
|
8311
|
-
|
|
8312
|
-
|
|
8313
|
-
{
|
|
8314
|
-
className: "w-full",
|
|
8315
|
-
onClick: () => handleBackup("cloud"),
|
|
8316
|
-
disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
|
|
8317
|
-
children: loading.cloud ? "Creating..." : "Create"
|
|
8318
|
-
}
|
|
8319
|
-
)
|
|
8320
|
-
] }),
|
|
8321
|
-
/* @__PURE__ */ jsxs26(Highlight, { children: [
|
|
8322
|
-
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8323
|
-
/* @__PURE__ */ jsx35(Download, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8324
|
-
/* @__PURE__ */ jsx35("div", { className: "text-sm font-medium", children: "File" })
|
|
8272
|
+
/* @__PURE__ */ jsx35("span", { className: "text-xs", children: "Secure your keyshare with encrypted backups" }),
|
|
8273
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2", children: [
|
|
8274
|
+
/* @__PURE__ */ jsx35(
|
|
8275
|
+
Checkbox,
|
|
8276
|
+
{
|
|
8277
|
+
name: "use-backup-password-checkbox",
|
|
8278
|
+
id: "use-backup-password",
|
|
8279
|
+
checked: useCustomPassword,
|
|
8280
|
+
onCheckedChange: (checked) => setUseCustomPassword(!!checked)
|
|
8281
|
+
}
|
|
8282
|
+
),
|
|
8283
|
+
/* @__PURE__ */ jsx35("label", { htmlFor: "use-backup-password", className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Use custom password instead of passkey" })
|
|
8325
8284
|
] }),
|
|
8326
|
-
|
|
8327
|
-
|
|
8328
|
-
|
|
8329
|
-
|
|
8330
|
-
|
|
8331
|
-
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
|
|
8335
|
-
|
|
8336
|
-
|
|
8337
|
-
|
|
8338
|
-
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
|
|
8342
|
-
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8346
|
-
|
|
8347
|
-
|
|
8285
|
+
useCustomPassword ? /* @__PURE__ */ jsxs26(Fragment5, { children: [
|
|
8286
|
+
/* @__PURE__ */ jsx35(
|
|
8287
|
+
Input,
|
|
8288
|
+
{
|
|
8289
|
+
Icon: Key5,
|
|
8290
|
+
type: showPassword ? "text" : "password",
|
|
8291
|
+
placeholder: "Enter backup password",
|
|
8292
|
+
value: customPassword,
|
|
8293
|
+
onChange: (e) => setCustomPassword(e.target.value),
|
|
8294
|
+
element: /* @__PURE__ */ jsx35(Button, { variant: "ghost", size: "icon", type: "button", onClick: () => setShowPassword(!showPassword), children: showPassword ? /* @__PURE__ */ jsx35(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx35(Eye, { className: "h-4 w-4" }) })
|
|
8295
|
+
}
|
|
8296
|
+
),
|
|
8297
|
+
/* @__PURE__ */ jsxs26(
|
|
8298
|
+
Button,
|
|
8299
|
+
{
|
|
8300
|
+
size: "medium",
|
|
8301
|
+
onClick: () => handleBackup("server"),
|
|
8302
|
+
disabled: !!loading.server || !customPassword || !hasKeyshareData,
|
|
8303
|
+
className: "w-full",
|
|
8304
|
+
children: [
|
|
8305
|
+
loading.server ? /* @__PURE__ */ jsx35(Loader6, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ jsx35(OtpIcon, { className: "h-4 w-4" }),
|
|
8306
|
+
/* @__PURE__ */ jsx35("span", { children: loading.server ? "Backing up..." : "Create Backup with Password" })
|
|
8307
|
+
]
|
|
8308
|
+
}
|
|
8309
|
+
)
|
|
8310
|
+
] }) : /* @__PURE__ */ jsxs26(Fragment5, { children: [
|
|
8311
|
+
/* @__PURE__ */ jsxs26(Highlight, { className: "h-12 flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8312
|
+
/* @__PURE__ */ jsx35(Key5, { className: "h-4 w-4 text-[var(--l-pass-info)] mx-1" }),
|
|
8313
|
+
/* @__PURE__ */ jsx35("span", { className: "text-xs", children: "Backup will be encrypted with passkey" })
|
|
8314
|
+
] }),
|
|
8315
|
+
/* @__PURE__ */ jsxs26(
|
|
8316
|
+
Button,
|
|
8317
|
+
{
|
|
8318
|
+
size: "medium",
|
|
8319
|
+
onClick: () => handleBackup("server"),
|
|
8320
|
+
disabled: loading.server || !!customPassword || !hasKeyshareData,
|
|
8321
|
+
className: "w-full",
|
|
8322
|
+
children: [
|
|
8323
|
+
loading.server ? /* @__PURE__ */ jsx35(Loader6, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ jsx35(PasskeyAddIcon, { className: "h-4 w-4" }),
|
|
8324
|
+
/* @__PURE__ */ jsx35("span", { children: loading.server ? "Backing up..." : "Create Backup with Passkey" })
|
|
8325
|
+
]
|
|
8326
|
+
}
|
|
8327
|
+
)
|
|
8328
|
+
] }),
|
|
8329
|
+
/* @__PURE__ */ jsxs26("div", { className: "w-full flex items-center", children: [
|
|
8330
|
+
/* @__PURE__ */ jsx35("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
8331
|
+
/* @__PURE__ */ jsx35("div", { className: "flex-none font-bold px-2 text-xs leading-4", children: "Alternative" }),
|
|
8332
|
+
/* @__PURE__ */ jsx35("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
8333
|
+
] }),
|
|
8334
|
+
/* @__PURE__ */ jsxs26("div", { className: "grid grid-cols-2 gap-[var(--l-pass-gap)]", children: [
|
|
8335
|
+
/* @__PURE__ */ jsxs26(Highlight, { children: [
|
|
8336
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8337
|
+
/* @__PURE__ */ jsx35(Cloud, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8338
|
+
/* @__PURE__ */ jsx35("div", { className: "text-sm font-medium", children: "Cloud" })
|
|
8339
|
+
] }),
|
|
8340
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx35(
|
|
8341
|
+
"select",
|
|
8342
|
+
{
|
|
8343
|
+
value: selectedCloudProvider || "",
|
|
8344
|
+
onChange: (e) => setSelectedCloudProvider(e.target.value),
|
|
8345
|
+
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",
|
|
8346
|
+
children: cloudProviders.map((provider) => /* @__PURE__ */ jsx35("option", { value: provider.id, disabled: !provider.available, children: provider.name }, provider.id))
|
|
8347
|
+
}
|
|
8348
|
+
),
|
|
8349
|
+
/* @__PURE__ */ jsx35(
|
|
8350
|
+
Button,
|
|
8351
|
+
{
|
|
8352
|
+
className: "w-full",
|
|
8353
|
+
onClick: () => handleBackup("cloud"),
|
|
8354
|
+
disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
|
|
8355
|
+
children: loading.cloud ? "Creating..." : "Create"
|
|
8356
|
+
}
|
|
8357
|
+
)
|
|
8358
|
+
] }),
|
|
8359
|
+
/* @__PURE__ */ jsxs26(Highlight, { children: [
|
|
8360
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-[var(--l-pass-gap)] mb-[var(--l-pass-gap)]", children: [
|
|
8361
|
+
/* @__PURE__ */ jsx35(Download, { className: "h-4 w-4 text-[var(--l-pass-info)]" }),
|
|
8362
|
+
/* @__PURE__ */ jsx35("div", { className: "text-sm font-medium", children: "File" })
|
|
8363
|
+
] }),
|
|
8364
|
+
cloudProviders.length > 1 && /* @__PURE__ */ jsx35("div", { className: "h-[32px]" }),
|
|
8365
|
+
/* @__PURE__ */ jsx35(
|
|
8366
|
+
Button,
|
|
8367
|
+
{
|
|
8368
|
+
onClick: () => handleBackup("local"),
|
|
8369
|
+
disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
|
|
8370
|
+
className: "w-full",
|
|
8371
|
+
children: loading.local ? "Creating..." : "Download"
|
|
8372
|
+
}
|
|
8373
|
+
)
|
|
8374
|
+
] })
|
|
8375
|
+
] }),
|
|
8376
|
+
/* @__PURE__ */ jsxs26(Highlight, { className: "flex items-start gap-[var(--l-pass-gap)]", type: "warning", children: [
|
|
8377
|
+
/* @__PURE__ */ jsx35(Lock, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8378
|
+
/* @__PURE__ */ jsxs26("div", { children: [
|
|
8379
|
+
/* @__PURE__ */ jsx35("span", { className: "font-medium", children: "Security Notice:" }),
|
|
8380
|
+
" All backups are encrypted with AES-256 using your",
|
|
8381
|
+
" ",
|
|
8382
|
+
useCustomPassword ? "custom password" : "passkey",
|
|
8383
|
+
".",
|
|
8384
|
+
useCustomPassword ? " Store your password securely - " : " Your passkey authenticator is required to restore backups. ",
|
|
8385
|
+
"Without backup access, you cannot recover your account if you lose this device."
|
|
8386
|
+
] })
|
|
8387
|
+
] }),
|
|
8388
|
+
error && /* @__PURE__ */ jsxs26(Highlight, { type: "error", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8389
|
+
/* @__PURE__ */ jsx35(AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8390
|
+
/* @__PURE__ */ jsx35("span", { children: error })
|
|
8391
|
+
] }),
|
|
8392
|
+
success && /* @__PURE__ */ jsxs26(Highlight, { type: "success", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8393
|
+
/* @__PURE__ */ jsx35(CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8394
|
+
/* @__PURE__ */ jsx35("span", { children: success })
|
|
8395
|
+
] })
|
|
8348
8396
|
] })
|
|
8349
|
-
|
|
8350
|
-
|
|
8351
|
-
/* @__PURE__ */ jsx35(AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8352
|
-
/* @__PURE__ */ jsx35("span", { children: error })
|
|
8353
|
-
] }),
|
|
8354
|
-
success && /* @__PURE__ */ jsxs26(Highlight, { type: "success", className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
8355
|
-
/* @__PURE__ */ jsx35(CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8356
|
-
/* @__PURE__ */ jsx35("span", { children: success })
|
|
8357
|
-
] })
|
|
8358
|
-
] }) });
|
|
8397
|
+
}
|
|
8398
|
+
);
|
|
8359
8399
|
}
|
|
8360
8400
|
|
|
8361
8401
|
// src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
|
|
8362
8402
|
import { useMutation as useMutation8 } from "@tanstack/react-query";
|
|
8363
8403
|
import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle22, Loader as Loader9, LogOut as LogOut2 } from "lucide-react";
|
|
8364
|
-
import
|
|
8404
|
+
import React8, { useCallback as useCallback9, useEffect as useEffect16 } from "react";
|
|
8365
8405
|
init_vaultClient();
|
|
8366
8406
|
|
|
8367
8407
|
// src/internal/components/KeyshareRestoreMenu/NoBackupFound.tsx
|
|
@@ -8543,19 +8583,20 @@ var KeyshareRestoreMenu = () => {
|
|
|
8543
8583
|
config: { current: config },
|
|
8544
8584
|
callbacks
|
|
8545
8585
|
} = useLumiaPassportConfig();
|
|
8546
|
-
const
|
|
8586
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
8547
8587
|
const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
|
|
8548
|
-
|
|
8588
|
+
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
8589
|
+
useEffect16(() => setIsDialogForced(true), []);
|
|
8549
8590
|
const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
|
|
8550
|
-
const [error, setError] =
|
|
8551
|
-
const [success, setSuccess] =
|
|
8552
|
-
const [showPassword, setShowPassword] =
|
|
8553
|
-
const [useCustomPassword, setUseCustomPassword] =
|
|
8554
|
-
const [restoreFile, setRestoreFile] =
|
|
8555
|
-
const [restorePassword, setRestorePassword] =
|
|
8556
|
-
const [hasServerBackup, setHasServerBackup] =
|
|
8557
|
-
const [checkingBackup, setCheckingBackup] =
|
|
8558
|
-
const createSessionWithKeyshare =
|
|
8591
|
+
const [error, setError] = React8.useState(null);
|
|
8592
|
+
const [success, setSuccess] = React8.useState(null);
|
|
8593
|
+
const [showPassword, setShowPassword] = React8.useState(false);
|
|
8594
|
+
const [useCustomPassword, setUseCustomPassword] = React8.useState(false);
|
|
8595
|
+
const [restoreFile, setRestoreFile] = React8.useState(null);
|
|
8596
|
+
const [restorePassword, setRestorePassword] = React8.useState("");
|
|
8597
|
+
const [hasServerBackup, setHasServerBackup] = React8.useState(null);
|
|
8598
|
+
const [checkingBackup, setCheckingBackup] = React8.useState(true);
|
|
8599
|
+
const createSessionWithKeyshare = useCallback9(
|
|
8559
8600
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
8560
8601
|
try {
|
|
8561
8602
|
try {
|
|
@@ -8589,7 +8630,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8589
8630
|
},
|
|
8590
8631
|
[setStatus, callbacks, usePaymaster]
|
|
8591
8632
|
);
|
|
8592
|
-
const onRestoreSuccess =
|
|
8633
|
+
const onRestoreSuccess = useCallback9(async () => {
|
|
8593
8634
|
const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
|
|
8594
8635
|
const verify = await verifyToken2();
|
|
8595
8636
|
const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
|
|
@@ -8654,7 +8695,7 @@ var KeyshareRestoreMenu = () => {
|
|
|
8654
8695
|
callbacks,
|
|
8655
8696
|
config.projectId
|
|
8656
8697
|
]);
|
|
8657
|
-
|
|
8698
|
+
useEffect16(() => {
|
|
8658
8699
|
const checkBackupAvailability = async () => {
|
|
8659
8700
|
try {
|
|
8660
8701
|
setCheckingBackup(true);
|
|
@@ -8767,56 +8808,63 @@ var KeyshareRestoreMenu = () => {
|
|
|
8767
8808
|
setIsLoading(false);
|
|
8768
8809
|
}
|
|
8769
8810
|
});
|
|
8770
|
-
return /* @__PURE__ */
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
|
|
8785
|
-
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
|
|
8805
|
-
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8813
|
-
|
|
8814
|
-
|
|
8815
|
-
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8811
|
+
return /* @__PURE__ */ jsx38(
|
|
8812
|
+
"div",
|
|
8813
|
+
{
|
|
8814
|
+
style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
|
|
8815
|
+
className: "list-scrollbar-y w-full",
|
|
8816
|
+
children: /* @__PURE__ */ jsxs29(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
|
|
8817
|
+
checkingBackup && /* @__PURE__ */ jsxs29("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
|
|
8818
|
+
/* @__PURE__ */ jsx38(Loader9, { className: "w-5 h-5 animate-spin" }),
|
|
8819
|
+
/* @__PURE__ */ jsx38("span", { className: "block w-full text-xs leading-4", children: "Checking for backups..." }),
|
|
8820
|
+
/* @__PURE__ */ jsx38("span", { className: "block w-full text-xs leading-4", children: "Please wait while we check for available backups..." })
|
|
8821
|
+
] }),
|
|
8822
|
+
!checkingBackup && hasServerBackup === false && /* @__PURE__ */ jsx38(NoBackupFound, { isLoading: isRestoringFromFile || isDisconnecting, restoreFromFile }),
|
|
8823
|
+
!checkingBackup && hasServerBackup && /* @__PURE__ */ jsx38(
|
|
8824
|
+
ServerBackupFound,
|
|
8825
|
+
{
|
|
8826
|
+
showPassword,
|
|
8827
|
+
setShowPassword,
|
|
8828
|
+
useCustomPassword,
|
|
8829
|
+
setUseCustomPassword,
|
|
8830
|
+
restorePassword,
|
|
8831
|
+
setRestorePassword,
|
|
8832
|
+
restoreFile,
|
|
8833
|
+
setRestoreFile,
|
|
8834
|
+
isLoading: isRestoringFromFile || isRestoringFromServer || isDisconnecting,
|
|
8835
|
+
restoreFromFile,
|
|
8836
|
+
restoreFromServer: restoreFromServer2
|
|
8837
|
+
}
|
|
8838
|
+
),
|
|
8839
|
+
!checkingBackup && /* @__PURE__ */ jsxs29("div", { className: "w-full flex items-center", children: [
|
|
8840
|
+
/* @__PURE__ */ jsx38("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
|
|
8841
|
+
/* @__PURE__ */ jsx38("div", { className: "flex-none font-bold px-2 text-xs leading-4 text-[var(--l-pass-fg-muted)]", children: "Misc" }),
|
|
8842
|
+
/* @__PURE__ */ jsx38("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" })
|
|
8843
|
+
] }),
|
|
8844
|
+
error && /* @__PURE__ */ jsxs29(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
8845
|
+
/* @__PURE__ */ jsx38(AlertCircle4, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8846
|
+
/* @__PURE__ */ jsx38("span", { className: "w-full flex-1 block", children: error })
|
|
8847
|
+
] }),
|
|
8848
|
+
success && /* @__PURE__ */ jsxs29(Highlight, { type: "success", className: "flex gap-[var(--l-pass-gap)]", children: [
|
|
8849
|
+
/* @__PURE__ */ jsx38(CheckCircle22, { className: "h-4 w-4 flex-shrink-0" }),
|
|
8850
|
+
/* @__PURE__ */ jsx38("span", { className: "w-full flex-1 block", children: success })
|
|
8851
|
+
] }),
|
|
8852
|
+
!checkingBackup && /* @__PURE__ */ jsxs29(
|
|
8853
|
+
Button,
|
|
8854
|
+
{
|
|
8855
|
+
size: "large",
|
|
8856
|
+
variant: "ghost",
|
|
8857
|
+
onClick: () => disconnect(),
|
|
8858
|
+
disabled: isDisconnecting || isRestoringFromFile || isRestoringFromServer,
|
|
8859
|
+
children: [
|
|
8860
|
+
isDisconnecting ? /* @__PURE__ */ jsx38(Loader9, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ jsx38(LogOut2, { className: "w-4 h-4" }),
|
|
8861
|
+
/* @__PURE__ */ jsx38("span", { children: "Disconnect" })
|
|
8862
|
+
]
|
|
8863
|
+
}
|
|
8864
|
+
)
|
|
8865
|
+
] })
|
|
8866
|
+
}
|
|
8867
|
+
);
|
|
8820
8868
|
};
|
|
8821
8869
|
|
|
8822
8870
|
// src/internal/components/KYC/KycMenu.tsx
|
|
@@ -8826,7 +8874,7 @@ import { ArrowLeft as ArrowLeft6 } from "lucide-react";
|
|
|
8826
8874
|
import { LoaderIcon as LoaderIcon3 } from "lucide-react";
|
|
8827
8875
|
|
|
8828
8876
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
8829
|
-
import { useEffect as
|
|
8877
|
+
import { useEffect as useEffect17, useRef as useRef8, useState as useState8 } from "react";
|
|
8830
8878
|
|
|
8831
8879
|
// src/internal/components/KYC/api/sumsub.ts
|
|
8832
8880
|
init_httpClient();
|
|
@@ -8955,7 +9003,7 @@ function useSumsubIframe({ iframeUrl }) {
|
|
|
8955
9003
|
const [height, setHeight] = useState8(0);
|
|
8956
9004
|
const [status, setStatus] = useState8("");
|
|
8957
9005
|
const levelName = config.kyc?.options?.levelName;
|
|
8958
|
-
|
|
9006
|
+
useEffect17(() => {
|
|
8959
9007
|
setError(null);
|
|
8960
9008
|
setIsLoading(true);
|
|
8961
9009
|
setStatus("Preparing verification...");
|
|
@@ -9038,14 +9086,18 @@ var KycContent = () => {
|
|
|
9038
9086
|
};
|
|
9039
9087
|
function KycMenu() {
|
|
9040
9088
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9089
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
9041
9090
|
return /* @__PURE__ */ jsxs31(
|
|
9042
9091
|
"div",
|
|
9043
9092
|
{
|
|
9044
9093
|
style: {
|
|
9045
|
-
"--l-pass-scrollbar-mah":
|
|
9046
|
-
"--l-pass-list-scrollbar-pd-
|
|
9094
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
9095
|
+
"--l-pass-list-scrollbar-pd-r": "4px",
|
|
9096
|
+
"paddingTop": "var(--l-pass-pd)",
|
|
9097
|
+
"paddingBottom": "var(--l-pass-pd)",
|
|
9098
|
+
"paddingLeft": "4px"
|
|
9047
9099
|
},
|
|
9048
|
-
className: "list-scrollbar-y w-full
|
|
9100
|
+
className: "list-scrollbar-y w-full flex flex-col gap-[var(--l-pass-gap)]",
|
|
9049
9101
|
children: [
|
|
9050
9102
|
/* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
9051
9103
|
/* @__PURE__ */ jsx40(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx40(ArrowLeft6, { className: "h-4 w-4" }) }),
|
|
@@ -9059,7 +9111,7 @@ function KycMenu() {
|
|
|
9059
9111
|
|
|
9060
9112
|
// src/internal/components/MainMenu/MainMenu.tsx
|
|
9061
9113
|
import { ChevronLeft, ChevronRight as ChevronRight2, DollarSign as DollarSign3, Wallet2 as Wallet23 } from "lucide-react";
|
|
9062
|
-
import { useEffect as
|
|
9114
|
+
import { useEffect as useEffect18 } from "react";
|
|
9063
9115
|
|
|
9064
9116
|
// src/internal/components/MainMenu/BackupWarning.tsx
|
|
9065
9117
|
import { AnimatePresence as AnimatePresence2, motion as motion2 } from "framer-motion";
|
|
@@ -9115,7 +9167,7 @@ function MainMenu() {
|
|
|
9115
9167
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9116
9168
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9117
9169
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
9118
|
-
|
|
9170
|
+
useEffect18(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
|
|
9119
9171
|
return /* @__PURE__ */ jsxs33("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
9120
9172
|
/* @__PURE__ */ jsx42("div", { className: "grid grid-cols-4 gap-[var(--l-pass-gap)]", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon }) => /* @__PURE__ */ jsxs33(
|
|
9121
9173
|
Button,
|
|
@@ -9143,7 +9195,7 @@ import { useMemo as useMemo2 } from "react";
|
|
|
9143
9195
|
|
|
9144
9196
|
// src/modules/linkedProfiles.ts
|
|
9145
9197
|
import { useQuery as useQuery5, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
9146
|
-
import { useCallback as
|
|
9198
|
+
import { useCallback as useCallback10 } from "react";
|
|
9147
9199
|
init_auth();
|
|
9148
9200
|
init_common();
|
|
9149
9201
|
init_types();
|
|
@@ -9176,7 +9228,7 @@ function useLumiaPassportLinkedProfiles() {
|
|
|
9176
9228
|
queryFn: getLinkProfilesData
|
|
9177
9229
|
});
|
|
9178
9230
|
const { profiles = [], avatar = null } = data || {};
|
|
9179
|
-
const refresh =
|
|
9231
|
+
const refresh = useCallback10(async () => {
|
|
9180
9232
|
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
|
|
9181
9233
|
}, [qc, address]);
|
|
9182
9234
|
return { profiles, avatar, isLoading, error, refresh };
|
|
@@ -9215,7 +9267,9 @@ var useManageWalletStore = create4((set) => ({
|
|
|
9215
9267
|
setLinkIsLoading: (linkIsLoading) => set({ linkIsLoading }),
|
|
9216
9268
|
setLinkError: (linkError) => set({ linkError }),
|
|
9217
9269
|
setVerificationError: (verificationError) => set({ verificationError }),
|
|
9218
|
-
setProviderType: (providerType) =>
|
|
9270
|
+
setProviderType: (providerType) => {
|
|
9271
|
+
set({ providerType });
|
|
9272
|
+
},
|
|
9219
9273
|
setConfirmUnlink: (confirmUnlink) => set({ confirmUnlink })
|
|
9220
9274
|
}));
|
|
9221
9275
|
|
|
@@ -9577,7 +9631,7 @@ function EmailNotConnectedWarning() {
|
|
|
9577
9631
|
|
|
9578
9632
|
// src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
|
|
9579
9633
|
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
9580
|
-
import
|
|
9634
|
+
import React9, { useEffect as useEffect19 } from "react";
|
|
9581
9635
|
init_auth();
|
|
9582
9636
|
function useLinkSocial() {
|
|
9583
9637
|
const qc = useQueryClient6();
|
|
@@ -9587,15 +9641,16 @@ function useLinkSocial() {
|
|
|
9587
9641
|
callbacks
|
|
9588
9642
|
} = useLumiaPassportConfig();
|
|
9589
9643
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9590
|
-
const { providerType, linkIsLoading, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9591
|
-
const handleLinkSocialProvider =
|
|
9644
|
+
const { providerType, linkIsLoading, isWalletLinking, setProviderType, setLinkIsLoading, setLinkError } = useManageWalletStore();
|
|
9645
|
+
const handleLinkSocialProvider = React9.useCallback(
|
|
9592
9646
|
async (providerIdRaw) => {
|
|
9593
9647
|
const providerKey = providerIdRaw.toLowerCase();
|
|
9648
|
+
const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
|
|
9594
9649
|
try {
|
|
9595
9650
|
setLinkIsLoading(true);
|
|
9596
9651
|
setLinkError("");
|
|
9597
9652
|
const socialProvider = config.social?.providers?.find(
|
|
9598
|
-
(p) => (p.id || "").toLowerCase() ===
|
|
9653
|
+
(p) => (p.id || "").toLowerCase() === normalizedKey && p.enabled
|
|
9599
9654
|
);
|
|
9600
9655
|
if (!socialProvider) {
|
|
9601
9656
|
throw new Error(`${providerIdRaw} provider not configured`);
|
|
@@ -9639,23 +9694,29 @@ function useLinkSocial() {
|
|
|
9639
9694
|
},
|
|
9640
9695
|
[config.social?.providers, callbacks]
|
|
9641
9696
|
);
|
|
9642
|
-
const [socialLinkStarted, setSocialLinkStarted] =
|
|
9643
|
-
|
|
9697
|
+
const [socialLinkStarted, setSocialLinkStarted] = React9.useState(false);
|
|
9698
|
+
useEffect19(() => {
|
|
9644
9699
|
const key = providerType?.toLowerCase();
|
|
9700
|
+
console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
|
|
9701
|
+
if (isWalletLinking) {
|
|
9702
|
+
console.log("[useLinkSocial] Skipping - wallet linking in progress");
|
|
9703
|
+
return;
|
|
9704
|
+
}
|
|
9645
9705
|
if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
|
|
9646
9706
|
if (!linkIsLoading && !socialLinkStarted) {
|
|
9707
|
+
console.log("[useLinkSocial] Starting social link flow for:", key);
|
|
9647
9708
|
setSocialLinkStarted(true);
|
|
9648
9709
|
handleLinkSocialProvider(key);
|
|
9649
9710
|
}
|
|
9650
9711
|
} else if (socialLinkStarted) {
|
|
9651
9712
|
setSocialLinkStarted(false);
|
|
9652
9713
|
}
|
|
9653
|
-
}, [providerType, linkIsLoading, socialLinkStarted, handleLinkSocialProvider]);
|
|
9714
|
+
}, [providerType, linkIsLoading, socialLinkStarted, isWalletLinking, handleLinkSocialProvider]);
|
|
9654
9715
|
}
|
|
9655
9716
|
|
|
9656
9717
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
9657
9718
|
import { useQueryClient as useQueryClient7 } from "@tanstack/react-query";
|
|
9658
|
-
import { useCallback as
|
|
9719
|
+
import { useCallback as useCallback11, useEffect as useEffect20, useState as useState9 } from "react";
|
|
9659
9720
|
init_telegram2();
|
|
9660
9721
|
function useLinkTelegram() {
|
|
9661
9722
|
const {
|
|
@@ -9664,9 +9725,9 @@ function useLinkTelegram() {
|
|
|
9664
9725
|
} = useLumiaPassportConfig();
|
|
9665
9726
|
const qc = useQueryClient7();
|
|
9666
9727
|
const address = useLumiaPassportSession((st) => st.address);
|
|
9667
|
-
const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9728
|
+
const { providerType, linkIsLoading, isWalletLinking, setLinkIsLoading, setProviderType, setLinkError } = useManageWalletStore();
|
|
9668
9729
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9669
|
-
const handleLinkTelegram =
|
|
9730
|
+
const handleLinkTelegram = useCallback11(async () => {
|
|
9670
9731
|
try {
|
|
9671
9732
|
setLinkIsLoading(true);
|
|
9672
9733
|
setLinkError("");
|
|
@@ -9709,13 +9770,19 @@ function useLinkTelegram() {
|
|
|
9709
9770
|
}
|
|
9710
9771
|
}, [config.social?.providers, callbacks]);
|
|
9711
9772
|
const [telegramLinkStarted, setTelegramLinkStarted] = useState9(false);
|
|
9712
|
-
|
|
9773
|
+
useEffect20(() => {
|
|
9774
|
+
console.log("[useLinkTelegram] Effect triggered:", { providerType, linkIsLoading, telegramLinkStarted, isWalletLinking });
|
|
9775
|
+
if (isWalletLinking) {
|
|
9776
|
+
console.log("[useLinkTelegram] Skipping - wallet linking in progress");
|
|
9777
|
+
return;
|
|
9778
|
+
}
|
|
9713
9779
|
if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
|
|
9780
|
+
console.log("[useLinkTelegram] Starting Telegram link flow");
|
|
9714
9781
|
setTelegramLinkStarted(true);
|
|
9715
9782
|
handleLinkTelegram();
|
|
9716
9783
|
}
|
|
9717
|
-
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
|
|
9718
|
-
|
|
9784
|
+
}, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
|
|
9785
|
+
useEffect20(() => {
|
|
9719
9786
|
if (providerType !== "telegram") {
|
|
9720
9787
|
setTelegramLinkStarted(false);
|
|
9721
9788
|
}
|
|
@@ -9807,6 +9874,7 @@ function ManageWalletMenu() {
|
|
|
9807
9874
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
9808
9875
|
const {
|
|
9809
9876
|
providerType,
|
|
9877
|
+
isWalletLinking,
|
|
9810
9878
|
linkError,
|
|
9811
9879
|
verificationError,
|
|
9812
9880
|
emailCodeSentError,
|
|
@@ -9817,11 +9885,11 @@ function ManageWalletMenu() {
|
|
|
9817
9885
|
setEmailCodeExpiresIn,
|
|
9818
9886
|
setEmailCode,
|
|
9819
9887
|
setLinkError,
|
|
9820
|
-
setVerificationError
|
|
9888
|
+
setVerificationError,
|
|
9889
|
+
setIsWalletLinking
|
|
9821
9890
|
} = useManageWalletStore();
|
|
9822
9891
|
const configuredProviders = getConfiguredProviders(config);
|
|
9823
9892
|
const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
|
|
9824
|
-
console.log("[MANAGE WALLET MENU] RENDER", providers);
|
|
9825
9893
|
const renderProviders = useMemo2(() => {
|
|
9826
9894
|
const usedProviders = fromPairs(providers.map((p) => [p.provider, true]));
|
|
9827
9895
|
const used = [];
|
|
@@ -9841,7 +9909,9 @@ function ManageWalletMenu() {
|
|
|
9841
9909
|
variant: "default",
|
|
9842
9910
|
size: "medium",
|
|
9843
9911
|
className: "w-full",
|
|
9912
|
+
disabled: isWalletLinking,
|
|
9844
9913
|
onClick: () => {
|
|
9914
|
+
if (isWalletLinking) return;
|
|
9845
9915
|
switch (provider) {
|
|
9846
9916
|
case "email":
|
|
9847
9917
|
setEmail("");
|
|
@@ -9852,7 +9922,12 @@ function ManageWalletMenu() {
|
|
|
9852
9922
|
setProviderType(provider);
|
|
9853
9923
|
break;
|
|
9854
9924
|
case "twitter":
|
|
9855
|
-
|
|
9925
|
+
console.log("[ManageWallet] Twitter button clicked!");
|
|
9926
|
+
setProviderType("twitter");
|
|
9927
|
+
break;
|
|
9928
|
+
case "wallet":
|
|
9929
|
+
setProviderType(null);
|
|
9930
|
+
setIsWalletLinking(true);
|
|
9856
9931
|
break;
|
|
9857
9932
|
default:
|
|
9858
9933
|
setProviderType(provider);
|
|
@@ -9870,7 +9945,7 @@ function ManageWalletMenu() {
|
|
|
9870
9945
|
}
|
|
9871
9946
|
});
|
|
9872
9947
|
return [...used, ...unused];
|
|
9873
|
-
}, [providers, configuredProviders]);
|
|
9948
|
+
}, [providers, configuredProviders, isWalletLinking]);
|
|
9874
9949
|
useLinkTelegram();
|
|
9875
9950
|
useLinkSocial();
|
|
9876
9951
|
const showCurrentProviders = !isProvidersLoading && !providersError && (providerType !== "email" && providerType !== "passkey" || providerType === null);
|
|
@@ -9938,14 +10013,15 @@ function UnlinkProviderMenu() {
|
|
|
9938
10013
|
await unlinkProvider(provider, externalId);
|
|
9939
10014
|
},
|
|
9940
10015
|
onSuccess: async () => {
|
|
9941
|
-
|
|
9942
|
-
|
|
10016
|
+
setConfirmUnlink(null);
|
|
10017
|
+
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
10018
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, address], refetchType: "active" });
|
|
10019
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address], refetchType: "active" });
|
|
10020
|
+
await qc.refetchQueries({ queryKey: [PROVIDERS_QUERY_KEY, address] });
|
|
9943
10021
|
try {
|
|
9944
10022
|
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
9945
10023
|
} catch {
|
|
9946
10024
|
}
|
|
9947
|
-
setConfirmUnlink(null);
|
|
9948
|
-
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
9949
10025
|
},
|
|
9950
10026
|
onError: (error) => {
|
|
9951
10027
|
setLinkError(error?.message || "Failed to unlink provider");
|
|
@@ -10003,11 +10079,11 @@ function UnlinkProviderMenu() {
|
|
|
10003
10079
|
// src/internal/components/PortfolioMenu/PortfolioMenu.tsx
|
|
10004
10080
|
import { useQueryClient as useQueryClient10 } from "@tanstack/react-query";
|
|
10005
10081
|
import { ArrowLeft as ArrowLeft8, Gem, Loader as Loader14, RefreshCw } from "lucide-react";
|
|
10006
|
-
import { useCallback as
|
|
10082
|
+
import { useCallback as useCallback12, useEffect as useEffect21, useRef as useRef9 } from "react";
|
|
10007
10083
|
|
|
10008
10084
|
// src/modules/assets.ts
|
|
10009
10085
|
init_base();
|
|
10010
|
-
import
|
|
10086
|
+
import React10 from "react";
|
|
10011
10087
|
import { useBalance as useBalance2, useReadContract, useReadContracts } from "wagmi";
|
|
10012
10088
|
import { formatUnits, erc20Abi } from "viem";
|
|
10013
10089
|
var COMMON_TOKENS = [
|
|
@@ -10153,7 +10229,7 @@ function useTokenBalance(tokenAddress, userAddress) {
|
|
|
10153
10229
|
}
|
|
10154
10230
|
});
|
|
10155
10231
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
10156
|
-
const formattedBalance =
|
|
10232
|
+
const formattedBalance = React10.useMemo(() => {
|
|
10157
10233
|
if (!balance || !tokenInfo) return "0";
|
|
10158
10234
|
return formatUnits(balance, tokenInfo.decimals);
|
|
10159
10235
|
}, [balance, tokenInfo]);
|
|
@@ -10262,29 +10338,30 @@ function PortfolioMenu() {
|
|
|
10262
10338
|
const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
|
|
10263
10339
|
const qc = useQueryClient10();
|
|
10264
10340
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10341
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10265
10342
|
const assetsContainerListRef = useRef9(null);
|
|
10266
10343
|
const assetsListRef = useRef9(null);
|
|
10267
10344
|
const address = useLumiaPassportSession((st) => st.address);
|
|
10268
10345
|
const { assets, refreshBalances, isLoading } = useAssets(address);
|
|
10269
|
-
const refreshAllAssetsBalances =
|
|
10346
|
+
const refreshAllAssetsBalances = useCallback12(() => {
|
|
10270
10347
|
Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
|
|
10271
10348
|
refreshBalances();
|
|
10272
10349
|
}, [qc, projectAssets, refreshBalances]);
|
|
10273
|
-
|
|
10350
|
+
useEffect21(() => {
|
|
10274
10351
|
if (!assetsContainerListRef.current || !assetsListRef.current) return;
|
|
10275
|
-
|
|
10276
|
-
|
|
10277
|
-
|
|
10278
|
-
|
|
10279
|
-
|
|
10280
|
-
|
|
10281
|
-
|
|
10282
|
-
|
|
10283
|
-
|
|
10284
|
-
|
|
10285
|
-
|
|
10286
|
-
|
|
10287
|
-
}, []);
|
|
10352
|
+
const listTargetHeight = maxScrollHeight - 128;
|
|
10353
|
+
assetsContainerListRef.current.style.setProperty("--l-pass-scrollbar-mah", `${listTargetHeight}px`);
|
|
10354
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10355
|
+
"--l-pass-list-bd",
|
|
10356
|
+
assetsListRef.current.clientHeight >= listTargetHeight ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
10357
|
+
// hide border if no scrollbar
|
|
10358
|
+
);
|
|
10359
|
+
assetsContainerListRef.current.style.setProperty(
|
|
10360
|
+
"--l-pass-list-scrollbar-pd-r",
|
|
10361
|
+
assetsListRef.current.clientHeight >= listTargetHeight ? "4px" : "0px"
|
|
10362
|
+
// remove padding if no scrollbar
|
|
10363
|
+
);
|
|
10364
|
+
}, [maxScrollHeight]);
|
|
10288
10365
|
return /* @__PURE__ */ jsxs41("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
10289
10366
|
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10290
10367
|
/* @__PURE__ */ jsx50(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx50(ArrowLeft8, { className: "h-4 w-4" }) }),
|
|
@@ -10357,7 +10434,7 @@ import {
|
|
|
10357
10434
|
Shield,
|
|
10358
10435
|
Trash2 as Trash22
|
|
10359
10436
|
} from "lucide-react";
|
|
10360
|
-
import { useCallback as
|
|
10437
|
+
import { useCallback as useCallback13, useEffect as useEffect22, useState as useState11 } from "react";
|
|
10361
10438
|
init_vaultClient();
|
|
10362
10439
|
import { jsx as jsx51, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10363
10440
|
function SecurityMenu() {
|
|
@@ -10378,7 +10455,7 @@ function SecurityMenu() {
|
|
|
10378
10455
|
const [hasServerBackup, setHasServerBackup] = useState11(false);
|
|
10379
10456
|
const [trustedApps, setTrustedApps] = useState11([]);
|
|
10380
10457
|
const [appToRemove, setAppToRemove] = useState11(null);
|
|
10381
|
-
const fetchRecovery =
|
|
10458
|
+
const fetchRecovery = useCallback13(async () => {
|
|
10382
10459
|
if (!userId) return;
|
|
10383
10460
|
try {
|
|
10384
10461
|
setIsRefreshing(true);
|
|
@@ -10411,7 +10488,7 @@ function SecurityMenu() {
|
|
|
10411
10488
|
setIsRefreshing(false);
|
|
10412
10489
|
}
|
|
10413
10490
|
}, [userId]);
|
|
10414
|
-
|
|
10491
|
+
useEffect22(() => {
|
|
10415
10492
|
if (open) fetchRecovery();
|
|
10416
10493
|
}, [open, fetchRecovery]);
|
|
10417
10494
|
const parseOS = (ua) => {
|
|
@@ -10603,12 +10680,12 @@ function SecurityMenu() {
|
|
|
10603
10680
|
|
|
10604
10681
|
// src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
|
|
10605
10682
|
import { AlertCircle as AlertCircle5, ArrowLeft as ArrowLeft10, CheckCircle2 as CheckCircle24, Loader as Loader16, Wallet } from "lucide-react";
|
|
10606
|
-
import { useEffect as
|
|
10683
|
+
import { useEffect as useEffect23, useState as useState13 } from "react";
|
|
10607
10684
|
import { isAddress as isAddress2 } from "viem";
|
|
10608
10685
|
import { useBalance as useBalance3 } from "wagmi";
|
|
10609
10686
|
|
|
10610
10687
|
// src/hooks/useSendTransaction.ts
|
|
10611
|
-
import { useCallback as
|
|
10688
|
+
import { useCallback as useCallback14, useState as useState12 } from "react";
|
|
10612
10689
|
import { isAddress, parseEther as parseEther2 } from "viem";
|
|
10613
10690
|
init_account();
|
|
10614
10691
|
function useSendTransaction() {
|
|
@@ -10617,7 +10694,7 @@ function useSendTransaction() {
|
|
|
10617
10694
|
const [isLoading, setIsLoading] = useState12(false);
|
|
10618
10695
|
const [error, setError] = useState12(null);
|
|
10619
10696
|
const [userOpHash, setUserOpHash] = useState12(null);
|
|
10620
|
-
const sendTransaction =
|
|
10697
|
+
const sendTransaction = useCallback14(
|
|
10621
10698
|
async (params) => {
|
|
10622
10699
|
if (!session || !address) {
|
|
10623
10700
|
setError("No active session");
|
|
@@ -10657,7 +10734,7 @@ function useSendTransaction() {
|
|
|
10657
10734
|
},
|
|
10658
10735
|
[session, address]
|
|
10659
10736
|
);
|
|
10660
|
-
const reset =
|
|
10737
|
+
const reset = useCallback14(() => {
|
|
10661
10738
|
setError(null);
|
|
10662
10739
|
setUserOpHash(null);
|
|
10663
10740
|
setIsLoading(false);
|
|
@@ -10691,7 +10768,7 @@ function SendLumiaMenu() {
|
|
|
10691
10768
|
const [validationError, setValidationError] = useState13(null);
|
|
10692
10769
|
const nativeAsset = assets.find((a) => a.type === "native");
|
|
10693
10770
|
const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
|
|
10694
|
-
|
|
10771
|
+
useEffect23(() => {
|
|
10695
10772
|
if (open) {
|
|
10696
10773
|
setTxStep("input");
|
|
10697
10774
|
setValidationError(null);
|
|
@@ -10853,19 +10930,20 @@ function SendLumiaMenu() {
|
|
|
10853
10930
|
}
|
|
10854
10931
|
|
|
10855
10932
|
// src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
|
|
10933
|
+
init_clients();
|
|
10856
10934
|
import { ArrowLeft as ArrowLeft11, CheckCircle2 as CheckCircle25, Copy as Copy2, Loader as Loader17 } from "lucide-react";
|
|
10857
10935
|
import QRCode from "qrcode";
|
|
10858
|
-
import { useEffect as
|
|
10859
|
-
init_clients();
|
|
10936
|
+
import { useCallback as useCallback15, useEffect as useEffect24, useState as useState14 } from "react";
|
|
10860
10937
|
import { Fragment as Fragment13, jsx as jsx53, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
10861
10938
|
function ReceiveLumiaMenu() {
|
|
10939
|
+
const address = useLumiaPassportSession((st) => st.address);
|
|
10862
10940
|
const page = useLayoutDataStore((st) => st.page);
|
|
10863
10941
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10942
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
10864
10943
|
const open = page === "receive";
|
|
10865
|
-
const { address } = useLumiaPassportSession();
|
|
10866
10944
|
const [qrCodeUrl, setQrCodeUrl] = useState14("");
|
|
10867
10945
|
const [copied, setCopied] = useState14(false);
|
|
10868
|
-
|
|
10946
|
+
useEffect24(() => {
|
|
10869
10947
|
if (open && address) {
|
|
10870
10948
|
QRCode.toDataURL(address, {
|
|
10871
10949
|
width: 200,
|
|
@@ -10878,7 +10956,7 @@ function ReceiveLumiaMenu() {
|
|
|
10878
10956
|
});
|
|
10879
10957
|
}
|
|
10880
10958
|
}, [open, address]);
|
|
10881
|
-
const handleCopy = async () => {
|
|
10959
|
+
const handleCopy = useCallback15(async () => {
|
|
10882
10960
|
if (!address) return;
|
|
10883
10961
|
try {
|
|
10884
10962
|
await navigator.clipboard.writeText(address);
|
|
@@ -10887,34 +10965,44 @@ function ReceiveLumiaMenu() {
|
|
|
10887
10965
|
} catch (error) {
|
|
10888
10966
|
console.error("Failed to copy address:", error);
|
|
10889
10967
|
}
|
|
10890
|
-
};
|
|
10891
|
-
return /* @__PURE__ */ jsxs44(
|
|
10892
|
-
|
|
10893
|
-
|
|
10894
|
-
|
|
10895
|
-
|
|
10896
|
-
|
|
10897
|
-
|
|
10898
|
-
|
|
10899
|
-
|
|
10900
|
-
|
|
10901
|
-
|
|
10902
|
-
|
|
10903
|
-
|
|
10904
|
-
/* @__PURE__ */
|
|
10905
|
-
|
|
10906
|
-
|
|
10907
|
-
|
|
10908
|
-
/* @__PURE__ */ jsx53("
|
|
10909
|
-
|
|
10910
|
-
|
|
10911
|
-
|
|
10912
|
-
|
|
10968
|
+
}, [address]);
|
|
10969
|
+
return /* @__PURE__ */ jsxs44(
|
|
10970
|
+
"div",
|
|
10971
|
+
{
|
|
10972
|
+
style: {
|
|
10973
|
+
"--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
|
|
10974
|
+
"--l-pass-list-scrollbar-pd-r": "8px"
|
|
10975
|
+
},
|
|
10976
|
+
className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
|
|
10977
|
+
children: [
|
|
10978
|
+
/* @__PURE__ */ jsxs44("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
|
|
10979
|
+
/* @__PURE__ */ jsx53(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ jsx53(ArrowLeft11, { className: "h-4 w-4" }) }),
|
|
10980
|
+
/* @__PURE__ */ jsx53("span", { className: "text-xl font-semibold", children: "Receive LUMIA" })
|
|
10981
|
+
] }),
|
|
10982
|
+
/* @__PURE__ */ jsxs44(Highlight, { className: "text-center", type: "warning", children: [
|
|
10983
|
+
/* @__PURE__ */ jsx53("strong", { className: "block w-full", children: `Network: ${lumiaBeam.name}` }),
|
|
10984
|
+
/* @__PURE__ */ jsx53("span", { className: "block w-full", children: "Ensure sender is on the same network" })
|
|
10985
|
+
] }),
|
|
10986
|
+
/* @__PURE__ */ jsx53("div", { className: "flex items-center justify-center p-[var(--l-pass-pd)]", style: { minHeight: "216px" }, children: qrCodeUrl ? /* @__PURE__ */ jsx53("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) : /* @__PURE__ */ jsx53(Loader17, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }) }),
|
|
10987
|
+
/* @__PURE__ */ jsxs44(Highlight, { type: "info", children: [
|
|
10988
|
+
/* @__PURE__ */ jsx53("span", { className: "block w-full text-center font-mono text-[10px] break-all mb-2", children: address }),
|
|
10989
|
+
/* @__PURE__ */ jsx53(Button, { onClick: handleCopy, className: "w-full", size: "medium", children: copied ? /* @__PURE__ */ jsxs44(Fragment13, { children: [
|
|
10990
|
+
/* @__PURE__ */ jsx53(CheckCircle25, { className: "h-4 w-4" }),
|
|
10991
|
+
/* @__PURE__ */ jsx53("span", { children: "Copied!" })
|
|
10992
|
+
] }) : /* @__PURE__ */ jsxs44(Fragment13, { children: [
|
|
10993
|
+
/* @__PURE__ */ jsx53(Copy2, { className: "h-4 w-4" }),
|
|
10994
|
+
/* @__PURE__ */ jsx53("span", { children: "Copy Address" })
|
|
10995
|
+
] }) })
|
|
10996
|
+
] }),
|
|
10997
|
+
/* @__PURE__ */ jsx53("div", { className: "text-center text-xs text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ jsx53("span", { className: "block", children: "Share this address to receive LUMIA tokens." }) })
|
|
10998
|
+
]
|
|
10999
|
+
}
|
|
11000
|
+
);
|
|
10913
11001
|
}
|
|
10914
11002
|
|
|
10915
11003
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
10916
11004
|
import { ArrowLeft as ArrowLeft12 } from "lucide-react";
|
|
10917
|
-
import { useEffect as
|
|
11005
|
+
import { useEffect as useEffect25 } from "react";
|
|
10918
11006
|
|
|
10919
11007
|
// src/internal/components/SettingsMenu/constants.ts
|
|
10920
11008
|
import { ArrowLeftRight, DatabaseBackup as DatabaseBackup2, LockKeyhole, UsersRound } from "lucide-react";
|
|
@@ -10948,7 +11036,7 @@ function SettingsMenu() {
|
|
|
10948
11036
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
10949
11037
|
const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
|
|
10950
11038
|
const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
|
|
10951
|
-
|
|
11039
|
+
useEffect25(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
|
|
10952
11040
|
const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
|
|
10953
11041
|
const highlightedKeys = settingsNotifications.map((n) => n.target);
|
|
10954
11042
|
return /* @__PURE__ */ jsxs45("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
@@ -11008,7 +11096,7 @@ function TermsOfService() {
|
|
|
11008
11096
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
11009
11097
|
import { useQuery as useQuery8, useQueryClient as useQueryClient11 } from "@tanstack/react-query";
|
|
11010
11098
|
import { ArrowLeft as ArrowLeft14, Loader as Loader18, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
|
|
11011
|
-
import { useCallback as
|
|
11099
|
+
import { useCallback as useCallback16, useEffect as useEffect26, useRef as useRef10, useState as useState15 } from "react";
|
|
11012
11100
|
|
|
11013
11101
|
// src/internal/components/TransactionsMenu/api.ts
|
|
11014
11102
|
init_base();
|
|
@@ -11488,6 +11576,7 @@ function TransactionsMenu() {
|
|
|
11488
11576
|
const address = useLumiaPassportSession((st) => st.address);
|
|
11489
11577
|
const page = useLayoutDataStore((st) => st.page);
|
|
11490
11578
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11579
|
+
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11491
11580
|
const txContainerListRef = useRef10(null);
|
|
11492
11581
|
const txListRef = useRef10(null);
|
|
11493
11582
|
const [expandedGroups, setExpandedGroups] = useState15({});
|
|
@@ -11502,26 +11591,26 @@ function TransactionsMenu() {
|
|
|
11502
11591
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
|
|
11503
11592
|
queryFn: () => getTransactionsListQuery(address)
|
|
11504
11593
|
});
|
|
11505
|
-
const refreshTxHistory =
|
|
11594
|
+
const refreshTxHistory = useCallback16(
|
|
11506
11595
|
() => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
|
|
11507
11596
|
[qc, address]
|
|
11508
11597
|
);
|
|
11509
11598
|
const txHistoryResolvedError = txHistoryError ? txHistoryError instanceof Error ? txHistoryError.message : "Failed to load transactions" : null;
|
|
11510
|
-
|
|
11599
|
+
useEffect26(() => {
|
|
11511
11600
|
if (!txContainerListRef.current || !txListRef.current) return;
|
|
11512
|
-
|
|
11513
|
-
|
|
11514
|
-
|
|
11515
|
-
|
|
11516
|
-
|
|
11517
|
-
|
|
11518
|
-
|
|
11519
|
-
|
|
11520
|
-
|
|
11521
|
-
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
}, []);
|
|
11601
|
+
const listTargetHeight = maxScrollHeight - 128;
|
|
11602
|
+
txContainerListRef.current.style.setProperty("--l-pass-scrollbar-mah", `${listTargetHeight}px`);
|
|
11603
|
+
txContainerListRef.current.style.setProperty(
|
|
11604
|
+
"--l-pass-list-bd",
|
|
11605
|
+
txListRef.current.clientHeight >= listTargetHeight ? "var(--l-pass-bd)" : "var(--l-pass-bg)"
|
|
11606
|
+
// hide border if no scrollbar
|
|
11607
|
+
);
|
|
11608
|
+
txContainerListRef.current.style.setProperty(
|
|
11609
|
+
"--l-pass-list-scrollbar-pd-r",
|
|
11610
|
+
txListRef.current.clientHeight >= listTargetHeight ? "4px" : "0px"
|
|
11611
|
+
// remove padding if no scrollbar
|
|
11612
|
+
);
|
|
11613
|
+
}, [maxScrollHeight]);
|
|
11525
11614
|
return /* @__PURE__ */ jsxs49("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
|
|
11526
11615
|
/* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-2", children: [
|
|
11527
11616
|
/* @__PURE__ */ jsx59(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ jsx59(ArrowLeft14, { className: "h-4 w-4" }) }),
|
|
@@ -11549,7 +11638,10 @@ function TransactionsMenu() {
|
|
|
11549
11638
|
"div",
|
|
11550
11639
|
{
|
|
11551
11640
|
ref: txContainerListRef,
|
|
11552
|
-
style: {
|
|
11641
|
+
style: {
|
|
11642
|
+
borderTop: "1px solid var(--l-pass-list-bd)",
|
|
11643
|
+
borderBottom: "1px solid var(--l-pass-list-bd)"
|
|
11644
|
+
},
|
|
11553
11645
|
className: "list-scrollbar-y relative",
|
|
11554
11646
|
children: /* @__PURE__ */ jsx59("div", { ref: txListRef, className: "w-full flex flex-col gap-[var(--l-pass-gap)] py-[var(--l-pass-pd)]", children: txHistoryGroups.map((group) => /* @__PURE__ */ jsx59(
|
|
11555
11647
|
TransactionsGroup,
|
|
@@ -11675,7 +11767,7 @@ function usePageMapper() {
|
|
|
11675
11767
|
setIsDialogOpen,
|
|
11676
11768
|
setIsDialogClosing
|
|
11677
11769
|
} = useLayoutStore();
|
|
11678
|
-
const closeDialog =
|
|
11770
|
+
const closeDialog = useCallback17(() => {
|
|
11679
11771
|
setIsDialogClosing(true);
|
|
11680
11772
|
setTimeout(() => {
|
|
11681
11773
|
setDialogContent(null);
|
|
@@ -11686,7 +11778,7 @@ function usePageMapper() {
|
|
|
11686
11778
|
setIsDialogOpen(false);
|
|
11687
11779
|
}, CLEAR_DIALOG_TIMEOUT);
|
|
11688
11780
|
}, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
|
|
11689
|
-
const openDialog =
|
|
11781
|
+
const openDialog = useCallback17(
|
|
11690
11782
|
(pageItem) => {
|
|
11691
11783
|
const PageContentComponent = pageItem.component;
|
|
11692
11784
|
setDialogTitle(pageItem.title);
|
|
@@ -11696,7 +11788,7 @@ function usePageMapper() {
|
|
|
11696
11788
|
},
|
|
11697
11789
|
[setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
|
|
11698
11790
|
);
|
|
11699
|
-
|
|
11791
|
+
useEffect27(() => {
|
|
11700
11792
|
if (page === null) return closeDialog();
|
|
11701
11793
|
const pageItem = protectedRoutes[page];
|
|
11702
11794
|
if (!pageItem) {
|
|
@@ -11710,7 +11802,7 @@ function usePageMapper() {
|
|
|
11710
11802
|
|
|
11711
11803
|
// src/internal/hooks/useSettingsNotifications.ts
|
|
11712
11804
|
init_auth();
|
|
11713
|
-
import { useEffect as
|
|
11805
|
+
import { useEffect as useEffect28 } from "react";
|
|
11714
11806
|
var EMAIL_NOT_CONNECTED_NOTIFICATION = {
|
|
11715
11807
|
id: "email-not-connected",
|
|
11716
11808
|
target: "manage-wallet" /* MANAGE_WALLET */,
|
|
@@ -11726,13 +11818,13 @@ function useSettingsNotifications() {
|
|
|
11726
11818
|
const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
|
|
11727
11819
|
const providers = jwtTokenManager2.getProviders();
|
|
11728
11820
|
const hasEmail = providers.includes("email");
|
|
11729
|
-
|
|
11821
|
+
useEffect28(() => {
|
|
11730
11822
|
setSettingsNotifications({
|
|
11731
11823
|
...BACKUP_IS_NOT_CREATED_NOTIFICATION,
|
|
11732
11824
|
status: hasServerVault ? "resolved" : "active"
|
|
11733
11825
|
});
|
|
11734
11826
|
}, [hasServerVault, setSettingsNotifications]);
|
|
11735
|
-
|
|
11827
|
+
useEffect28(() => {
|
|
11736
11828
|
setSettingsNotifications({
|
|
11737
11829
|
...EMAIL_NOT_CONNECTED_NOTIFICATION,
|
|
11738
11830
|
status: hasEmail ? "resolved" : "active"
|
|
@@ -11741,7 +11833,7 @@ function useSettingsNotifications() {
|
|
|
11741
11833
|
}
|
|
11742
11834
|
|
|
11743
11835
|
// src/internal/hooks/useWalletStatus.ts
|
|
11744
|
-
import { useEffect as
|
|
11836
|
+
import { useEffect as useEffect29 } from "react";
|
|
11745
11837
|
init_auth();
|
|
11746
11838
|
function useWalletStatus() {
|
|
11747
11839
|
const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
|
|
@@ -11751,7 +11843,7 @@ function useWalletStatus() {
|
|
|
11751
11843
|
config: { current: config },
|
|
11752
11844
|
callbacks
|
|
11753
11845
|
} = useLumiaPassportConfig();
|
|
11754
|
-
|
|
11846
|
+
useEffect29(() => {
|
|
11755
11847
|
if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
|
|
11756
11848
|
const userId = jwtTokenManager2.getUserId();
|
|
11757
11849
|
const hasKeyshare = jwtTokenManager2.getHasKeyshare();
|
|
@@ -11773,20 +11865,19 @@ function useWalletStatus() {
|
|
|
11773
11865
|
// src/internal/components/Dialog/LumiaPassportDialog.tsx
|
|
11774
11866
|
import { jsx as jsx61, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
11775
11867
|
function LumiaPassportDialog() {
|
|
11776
|
-
const
|
|
11777
|
-
|
|
11778
|
-
} = useLumiaPassportConfig();
|
|
11779
|
-
const className = config?.ui?.dialogClassName;
|
|
11868
|
+
const config = useLumiaPassportConfig().config;
|
|
11869
|
+
const className = config.current?.ui?.dialogClassName;
|
|
11780
11870
|
const session = useLumiaPassportSession((st) => st.session);
|
|
11781
11871
|
const page = useLayoutDataStore((st) => st.page);
|
|
11782
11872
|
const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
|
|
11783
11873
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11784
11874
|
const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
|
|
11785
|
-
|
|
11875
|
+
useEffect30(() => setIsSettings(!!session), [session, setIsSettings]);
|
|
11786
11876
|
usePageMapper();
|
|
11787
11877
|
useAutoConnect();
|
|
11788
11878
|
useCheckVaultStatus();
|
|
11789
11879
|
useBackupStatusChanges();
|
|
11880
|
+
useDetectMaxScrollHeight();
|
|
11790
11881
|
useSettingsNotifications();
|
|
11791
11882
|
useWalletStatus();
|
|
11792
11883
|
return /* @__PURE__ */ jsx61(
|
|
@@ -11820,23 +11911,23 @@ function LumiaPassportDialog() {
|
|
|
11820
11911
|
}
|
|
11821
11912
|
|
|
11822
11913
|
// src/internal/components/TssManager.tsx
|
|
11823
|
-
import
|
|
11914
|
+
import React12, { useCallback as useCallback18 } from "react";
|
|
11824
11915
|
init_auth();
|
|
11825
11916
|
init_clients();
|
|
11826
|
-
var TssManagerWithRef =
|
|
11917
|
+
var TssManagerWithRef = React12.forwardRef((props, ref) => {
|
|
11827
11918
|
const { mpcPin } = props;
|
|
11828
11919
|
const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
|
|
11829
11920
|
const setStatus = useLumiaPassportSession((st) => st.setStatus);
|
|
11830
11921
|
const setSession = useLumiaPassportSession((st) => st.setSession);
|
|
11831
11922
|
const setAddress = useLumiaPassportSession((st) => st.setAddress);
|
|
11832
|
-
const onSessionCreated =
|
|
11923
|
+
const onSessionCreated = useCallback18(
|
|
11833
11924
|
(session, address) => {
|
|
11834
11925
|
setSession(session);
|
|
11835
11926
|
setAddress(address);
|
|
11836
11927
|
},
|
|
11837
11928
|
[setSession, setAddress]
|
|
11838
11929
|
);
|
|
11839
|
-
const createSessionWithKeyshare =
|
|
11930
|
+
const createSessionWithKeyshare = React12.useCallback(
|
|
11840
11931
|
async (userId, hasServerKeyshare, isNewUser) => {
|
|
11841
11932
|
setStatus("checking key management setup...");
|
|
11842
11933
|
await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
|
|
@@ -11857,7 +11948,7 @@ var TssManagerWithRef = React13.forwardRef((props, ref) => {
|
|
|
11857
11948
|
},
|
|
11858
11949
|
[setStatus, usePaymaster, mpcPin]
|
|
11859
11950
|
);
|
|
11860
|
-
|
|
11951
|
+
React12.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
|
|
11861
11952
|
return null;
|
|
11862
11953
|
});
|
|
11863
11954
|
|
|
@@ -11865,79 +11956,95 @@ var TssManagerWithRef = React13.forwardRef((props, ref) => {
|
|
|
11865
11956
|
init_wallet();
|
|
11866
11957
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
11867
11958
|
import { useQueryClient as useQueryClient12 } from "@tanstack/react-query";
|
|
11868
|
-
import
|
|
11959
|
+
import React13, { useCallback as useCallback19, useEffect as useEffect31 } from "react";
|
|
11869
11960
|
import { useAccount, useDisconnect, useSignMessage } from "wagmi";
|
|
11870
11961
|
function WalletConnectHandler() {
|
|
11871
11962
|
const qc = useQueryClient12();
|
|
11872
11963
|
const { callbacks } = useLumiaPassportConfig();
|
|
11873
|
-
const
|
|
11964
|
+
const userAddress = useLumiaPassportSession((st) => st.address);
|
|
11965
|
+
const { address: walletAddress, isConnected, chain, connector } = useAccount();
|
|
11874
11966
|
const { disconnect } = useDisconnect();
|
|
11875
11967
|
const { signMessageAsync } = useSignMessage();
|
|
11876
11968
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
11877
11969
|
const { isWalletLinking, setLinkError, setIsWalletLinking, setLinkIsLoading, setProviderType } = useManageWalletStore();
|
|
11878
|
-
const onError =
|
|
11970
|
+
const onError = useCallback19((error) => {
|
|
11879
11971
|
setLinkError(error);
|
|
11880
11972
|
setIsWalletLinking(false);
|
|
11881
11973
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11882
11974
|
}, []);
|
|
11883
|
-
const onLinkingComplete =
|
|
11884
|
-
|
|
11885
|
-
|
|
11886
|
-
|
|
11887
|
-
try {
|
|
11888
|
-
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, address]) });
|
|
11889
|
-
} catch {
|
|
11890
|
-
}
|
|
11975
|
+
const onLinkingComplete = useCallback19(
|
|
11976
|
+
async (success) => {
|
|
11977
|
+
console.log("[WalletConnectHandler] onLinkingComplete called:", { success, userAddress });
|
|
11978
|
+
setIsWalletLinking(false);
|
|
11891
11979
|
setProviderType(null);
|
|
11892
11980
|
setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
|
|
11896
|
-
|
|
11897
|
-
|
|
11898
|
-
|
|
11899
|
-
|
|
11981
|
+
if (success) {
|
|
11982
|
+
console.log("[WalletConnectHandler] Invalidating and refetching queries with key:", [
|
|
11983
|
+
PROVIDERS_QUERY_KEY,
|
|
11984
|
+
userAddress
|
|
11985
|
+
]);
|
|
11986
|
+
await qc.invalidateQueries({ queryKey: [PROVIDERS_QUERY_KEY, userAddress], refetchType: "active" });
|
|
11987
|
+
await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, userAddress], refetchType: "active" });
|
|
11988
|
+
await qc.refetchQueries({ queryKey: [PROVIDERS_QUERY_KEY, userAddress] });
|
|
11989
|
+
try {
|
|
11990
|
+
callbacks?.onLumiaPassportUpdate?.({ providers: qc.getQueryData([PROVIDERS_QUERY_KEY, userAddress]) });
|
|
11991
|
+
} catch {
|
|
11992
|
+
}
|
|
11993
|
+
}
|
|
11994
|
+
},
|
|
11995
|
+
[qc, userAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
|
|
11996
|
+
);
|
|
11997
|
+
const { openConnectModal, connectModalOpen } = useConnectModal();
|
|
11998
|
+
const [hasStartedLinking, setHasStartedLinking] = React13.useState(false);
|
|
11999
|
+
const timeoutRef = React13.useRef();
|
|
12000
|
+
useEffect31(() => {
|
|
11900
12001
|
if (isWalletLinking && !hasStartedLinking) {
|
|
11901
12002
|
setHasStartedLinking(true);
|
|
12003
|
+
setProviderType(null);
|
|
11902
12004
|
if (isConnected) {
|
|
11903
12005
|
disconnect();
|
|
11904
12006
|
setTimeout(() => {
|
|
11905
12007
|
if (openConnectModal) {
|
|
12008
|
+
setPage(null);
|
|
11906
12009
|
openConnectModal();
|
|
11907
12010
|
}
|
|
11908
|
-
},
|
|
12011
|
+
}, 500);
|
|
11909
12012
|
} else {
|
|
11910
12013
|
if (openConnectModal) {
|
|
12014
|
+
setPage(null);
|
|
11911
12015
|
openConnectModal();
|
|
11912
12016
|
}
|
|
11913
12017
|
}
|
|
11914
|
-
timeoutRef.current = setTimeout(() => {
|
|
11915
|
-
if (!isConnected && isWalletLinking) {
|
|
11916
|
-
onLinkingComplete(false);
|
|
11917
|
-
setHasStartedLinking(false);
|
|
11918
|
-
}
|
|
11919
|
-
}, 3e4);
|
|
11920
12018
|
}
|
|
11921
12019
|
if (!isWalletLinking && hasStartedLinking) {
|
|
11922
12020
|
setHasStartedLinking(false);
|
|
11923
|
-
if (timeoutRef.current)
|
|
11924
|
-
|
|
11925
|
-
}
|
|
11926
|
-
if (isConnected) {
|
|
11927
|
-
disconnect();
|
|
11928
|
-
}
|
|
12021
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
12022
|
+
if (isConnected) disconnect();
|
|
11929
12023
|
}
|
|
11930
|
-
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect]);
|
|
11931
|
-
|
|
11932
|
-
|
|
12024
|
+
}, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
|
|
12025
|
+
useEffect31(() => {
|
|
12026
|
+
console.log("[WalletConnectHandler] Modal state check:", {
|
|
12027
|
+
hasStartedLinking,
|
|
12028
|
+
connectModalOpen,
|
|
12029
|
+
isConnected,
|
|
12030
|
+
isWalletLinking
|
|
12031
|
+
});
|
|
12032
|
+
if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
|
|
12033
|
+
console.log("[WalletConnectHandler] Modal closed without connecting, resetting state");
|
|
12034
|
+
onLinkingComplete(false);
|
|
12035
|
+
setHasStartedLinking(false);
|
|
12036
|
+
}
|
|
12037
|
+
}, [connectModalOpen, hasStartedLinking, isConnected, isWalletLinking]);
|
|
12038
|
+
useEffect31(() => {
|
|
12039
|
+
if (isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
|
|
11933
12040
|
handleWalletSign();
|
|
11934
12041
|
}
|
|
11935
|
-
}, [isConnected,
|
|
12042
|
+
}, [isConnected, walletAddress, isWalletLinking, hasStartedLinking]);
|
|
11936
12043
|
const handleWalletSign = async () => {
|
|
11937
12044
|
if (timeoutRef.current) {
|
|
11938
12045
|
clearTimeout(timeoutRef.current);
|
|
11939
12046
|
}
|
|
11940
|
-
if (!
|
|
12047
|
+
if (!walletAddress || !chain) {
|
|
11941
12048
|
onError("No wallet connected");
|
|
11942
12049
|
disconnect();
|
|
11943
12050
|
onLinkingComplete(false);
|
|
@@ -11946,7 +12053,7 @@ function WalletConnectHandler() {
|
|
|
11946
12053
|
}
|
|
11947
12054
|
try {
|
|
11948
12055
|
setLinkIsLoading(true);
|
|
11949
|
-
const message = createSignatureMessage(
|
|
12056
|
+
const message = createSignatureMessage(walletAddress);
|
|
11950
12057
|
const signature = await signMessageAsync({ message });
|
|
11951
12058
|
if (!signature) {
|
|
11952
12059
|
throw new Error("Failed to get signature");
|
|
@@ -11959,7 +12066,7 @@ function WalletConnectHandler() {
|
|
|
11959
12066
|
connectorInfo: connector
|
|
11960
12067
|
});
|
|
11961
12068
|
await linkWallet({
|
|
11962
|
-
address,
|
|
12069
|
+
address: walletAddress,
|
|
11963
12070
|
signature,
|
|
11964
12071
|
message,
|
|
11965
12072
|
chainId: chain.id,
|
|
@@ -12073,9 +12180,9 @@ function LumiaPassportProvider(props) {
|
|
|
12073
12180
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
12074
12181
|
const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
|
|
12075
12182
|
const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
|
|
12076
|
-
|
|
12183
|
+
useEffect32(() => notifyNoProjetctId(projectId), [projectId]);
|
|
12077
12184
|
const config = useRef11({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
|
|
12078
|
-
const updateConfig =
|
|
12185
|
+
const updateConfig = useCallback20((updates) => {
|
|
12079
12186
|
const prev = config.current;
|
|
12080
12187
|
const next = { ...prev };
|
|
12081
12188
|
if (updates.projectId !== void 0) next.projectId = updates.projectId;
|
|
@@ -12110,9 +12217,9 @@ function LumiaPassportProvider(props) {
|
|
|
12110
12217
|
}
|
|
12111
12218
|
config.current = next;
|
|
12112
12219
|
}, []);
|
|
12113
|
-
|
|
12220
|
+
useEffect32(() => {
|
|
12114
12221
|
if (typeof window === "undefined" || !projectId) return;
|
|
12115
|
-
const mergedConfig =
|
|
12222
|
+
const mergedConfig = merge2(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
|
|
12116
12223
|
updateConfig(mergedConfig);
|
|
12117
12224
|
console.log("[ MERGED PROVIDER STORED CONFIG ]", mergedConfig);
|
|
12118
12225
|
try {
|
|
@@ -12166,7 +12273,7 @@ var useLumiaPassportConfig = () => {
|
|
|
12166
12273
|
|
|
12167
12274
|
// src/components/ConnectWalletButton.tsx
|
|
12168
12275
|
import { Cloud as Cloud3, Laptop as Laptop2, Loader as Loader19, Shield as Shield2 } from "lucide-react";
|
|
12169
|
-
import { useEffect as
|
|
12276
|
+
import { useEffect as useEffect33, useMemo as useMemo4 } from "react";
|
|
12170
12277
|
init_auth();
|
|
12171
12278
|
import { Fragment as Fragment16, jsx as jsx65, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
12172
12279
|
function getFormattedStatus(label, status, showStatus) {
|
|
@@ -12186,7 +12293,7 @@ function ConnectWalletButton(props) {
|
|
|
12186
12293
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12187
12294
|
const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
|
|
12188
12295
|
const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
|
|
12189
|
-
|
|
12296
|
+
useEffect33(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
|
|
12190
12297
|
const avatar = jwtTokenManager2.getAvatar();
|
|
12191
12298
|
const displayName = jwtTokenManager2.getDisplayName();
|
|
12192
12299
|
const indicators = useMemo4(() => {
|
|
@@ -12344,13 +12451,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
|
|
|
12344
12451
|
var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
|
|
12345
12452
|
|
|
12346
12453
|
// src/hooks/useLumiaPassportOpen.ts
|
|
12347
|
-
import { useCallback as
|
|
12454
|
+
import { useCallback as useCallback21 } from "react";
|
|
12348
12455
|
function useLumiaPassportOpen() {
|
|
12349
12456
|
const page = useLayoutDataStore((st) => st.page);
|
|
12350
12457
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
12351
12458
|
const setPageParams = useLayoutDataStore((st) => st.setPageParams);
|
|
12352
12459
|
const address = useLumiaPassportSession((st) => st.address);
|
|
12353
|
-
const open =
|
|
12460
|
+
const open = useCallback21(
|
|
12354
12461
|
(passportPage, params) => {
|
|
12355
12462
|
if (!address) return setPage("auth" /* AUTH */);
|
|
12356
12463
|
if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
|
|
@@ -12359,12 +12466,12 @@ function useLumiaPassportOpen() {
|
|
|
12359
12466
|
},
|
|
12360
12467
|
[setPage, setPageParams, address]
|
|
12361
12468
|
);
|
|
12362
|
-
const close =
|
|
12469
|
+
const close = useCallback21(() => setPage(null), [setPage]);
|
|
12363
12470
|
return { open, close, isOpen: page !== null };
|
|
12364
12471
|
}
|
|
12365
12472
|
|
|
12366
12473
|
// src/hooks/useLumiaPassportColorMode.ts
|
|
12367
|
-
import { useCallback as
|
|
12474
|
+
import { useCallback as useCallback22, useEffect as useEffect34 } from "react";
|
|
12368
12475
|
function useLumiaPassportColorMode() {
|
|
12369
12476
|
const {
|
|
12370
12477
|
config: { current: config }
|
|
@@ -12372,14 +12479,14 @@ function useLumiaPassportColorMode() {
|
|
|
12372
12479
|
const preferedColorMode = config?.preferedColorMode;
|
|
12373
12480
|
const colorMode = useLayoutStore((st) => st.colorMode);
|
|
12374
12481
|
const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
|
|
12375
|
-
const setColorMode =
|
|
12482
|
+
const setColorMode = useCallback22(
|
|
12376
12483
|
(mode) => {
|
|
12377
12484
|
localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
|
|
12378
12485
|
handleStoreColorMode(mode);
|
|
12379
12486
|
},
|
|
12380
12487
|
[handleStoreColorMode]
|
|
12381
12488
|
);
|
|
12382
|
-
|
|
12489
|
+
useEffect34(() => {
|
|
12383
12490
|
let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
|
|
12384
12491
|
if (!targetColorMode && !preferedColorMode) {
|
|
12385
12492
|
const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
@@ -12421,7 +12528,7 @@ function ThemeToggle(props) {
|
|
|
12421
12528
|
}
|
|
12422
12529
|
|
|
12423
12530
|
// src/context/RainbowKitContext.tsx
|
|
12424
|
-
import
|
|
12531
|
+
import React14 from "react";
|
|
12425
12532
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
12426
12533
|
import { darkTheme, lightTheme, RainbowKitProvider } from "@rainbow-me/rainbowkit";
|
|
12427
12534
|
import { WagmiProvider as WagmiProvider2 } from "wagmi";
|
|
@@ -12577,10 +12684,10 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12577
12684
|
config: { current: config }
|
|
12578
12685
|
} = useLumiaPassportConfig();
|
|
12579
12686
|
const isDark = useLayoutStore((st) => st.colorMode === "dark");
|
|
12580
|
-
const rainbowConfig2 =
|
|
12687
|
+
const rainbowConfig2 = React14.useMemo(() => {
|
|
12581
12688
|
return createRainbowConfig(config.wallet?.walletConnectProjectId);
|
|
12582
12689
|
}, [config.wallet?.walletConnectProjectId]);
|
|
12583
|
-
const customTheme =
|
|
12690
|
+
const customTheme = React14.useMemo(
|
|
12584
12691
|
() => isDark ? {
|
|
12585
12692
|
...darkTheme(),
|
|
12586
12693
|
colors: {
|
|
@@ -12610,7 +12717,7 @@ var LumiaRainbowKitProvider = ({ children }) => {
|
|
|
12610
12717
|
// src/internal/components/UserOpStatus.tsx
|
|
12611
12718
|
init_base();
|
|
12612
12719
|
import { AlertCircle as AlertCircle6, CheckCircle2 as CheckCircle27, Clock as Clock2, Copy as Copy5, ExternalLink as ExternalLink2, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
12613
|
-
import * as
|
|
12720
|
+
import * as React16 from "react";
|
|
12614
12721
|
|
|
12615
12722
|
// src/internal/utils/cn.ts
|
|
12616
12723
|
import { clsx as clsx2 } from "clsx";
|
|
@@ -12621,7 +12728,7 @@ function cn2(...inputs) {
|
|
|
12621
12728
|
|
|
12622
12729
|
// src/internal/components/Address.tsx
|
|
12623
12730
|
import { Copy as Copy4, ExternalLink } from "lucide-react";
|
|
12624
|
-
import * as
|
|
12731
|
+
import * as React15 from "react";
|
|
12625
12732
|
import { jsx as jsx68, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
12626
12733
|
function toExplorerAddressUrl(address, chain) {
|
|
12627
12734
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -12643,7 +12750,7 @@ var Address = ({
|
|
|
12643
12750
|
}) => {
|
|
12644
12751
|
const addr = address || "";
|
|
12645
12752
|
const explorer = toExplorerAddressUrl(addr, chain || void 0);
|
|
12646
|
-
const [copied, setCopied] =
|
|
12753
|
+
const [copied, setCopied] = React15.useState(false);
|
|
12647
12754
|
if (!addr) return /* @__PURE__ */ jsx68("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
12648
12755
|
return /* @__PURE__ */ jsxs53("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
|
|
12649
12756
|
label && /* @__PURE__ */ jsx68("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -12716,20 +12823,20 @@ var UserOpStatus = ({
|
|
|
12716
12823
|
externalState
|
|
12717
12824
|
}) => {
|
|
12718
12825
|
const useExternalState = !!externalState;
|
|
12719
|
-
const [internalReceipt, setInternalReceipt] =
|
|
12720
|
-
const [internalMempool, setInternalMempool] =
|
|
12721
|
-
const [internalError, setInternalError] =
|
|
12722
|
-
const [attempt, setAttempt] =
|
|
12723
|
-
const [internalRefreshing, setInternalRefreshing] =
|
|
12724
|
-
const [timedOut, setTimedOut] =
|
|
12725
|
-
const [rejected, setRejected] =
|
|
12726
|
-
const intervalRef =
|
|
12727
|
-
const startTimeRef =
|
|
12826
|
+
const [internalReceipt, setInternalReceipt] = React16.useState(null);
|
|
12827
|
+
const [internalMempool, setInternalMempool] = React16.useState(null);
|
|
12828
|
+
const [internalError, setInternalError] = React16.useState(null);
|
|
12829
|
+
const [attempt, setAttempt] = React16.useState(0);
|
|
12830
|
+
const [internalRefreshing, setInternalRefreshing] = React16.useState(false);
|
|
12831
|
+
const [timedOut, setTimedOut] = React16.useState(false);
|
|
12832
|
+
const [rejected, setRejected] = React16.useState(false);
|
|
12833
|
+
const intervalRef = React16.useRef(null);
|
|
12834
|
+
const startTimeRef = React16.useRef(Date.now());
|
|
12728
12835
|
const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
|
|
12729
12836
|
const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
|
|
12730
12837
|
const error = useExternalState ? externalState.error ?? null : internalError;
|
|
12731
12838
|
const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
|
|
12732
|
-
const rpc =
|
|
12839
|
+
const rpc = React16.useCallback(async (method, params) => {
|
|
12733
12840
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
12734
12841
|
const res = await fetch(getBundlerUrl(), {
|
|
12735
12842
|
method: "POST",
|
|
@@ -12740,14 +12847,14 @@ var UserOpStatus = ({
|
|
|
12740
12847
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
12741
12848
|
return json.result;
|
|
12742
12849
|
}, []);
|
|
12743
|
-
const extractMempoolInfo =
|
|
12850
|
+
const extractMempoolInfo = React16.useCallback((m) => {
|
|
12744
12851
|
if (!m) return null;
|
|
12745
12852
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
12746
12853
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
12747
12854
|
if (!entryPoint && !sender) return null;
|
|
12748
12855
|
return { entryPoint, sender };
|
|
12749
12856
|
}, []);
|
|
12750
|
-
const tick =
|
|
12857
|
+
const tick = React16.useCallback(async () => {
|
|
12751
12858
|
if (useExternalState) return;
|
|
12752
12859
|
const elapsed = Date.now() - startTimeRef.current;
|
|
12753
12860
|
if (elapsed > maxPollTimeMs) {
|
|
@@ -12791,7 +12898,7 @@ var UserOpStatus = ({
|
|
|
12791
12898
|
setAttempt((x) => x + 1);
|
|
12792
12899
|
}
|
|
12793
12900
|
}, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
|
|
12794
|
-
|
|
12901
|
+
React16.useEffect(() => {
|
|
12795
12902
|
if (useExternalState) return;
|
|
12796
12903
|
console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
|
|
12797
12904
|
startTimeRef.current = Date.now();
|
|
@@ -12803,7 +12910,7 @@ var UserOpStatus = ({
|
|
|
12803
12910
|
setAttempt(0);
|
|
12804
12911
|
setInternalRefreshing(false);
|
|
12805
12912
|
}, [userOpHash, useExternalState]);
|
|
12806
|
-
|
|
12913
|
+
React16.useEffect(() => {
|
|
12807
12914
|
if (useExternalState) {
|
|
12808
12915
|
console.log("[UserOpStatus] Using external state, skipping internal polling");
|
|
12809
12916
|
return;
|
|
@@ -12980,7 +13087,7 @@ var UserOpStatus = ({
|
|
|
12980
13087
|
|
|
12981
13088
|
// src/internal/components/Hash.tsx
|
|
12982
13089
|
import { Copy as Copy6, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
12983
|
-
import * as
|
|
13090
|
+
import * as React17 from "react";
|
|
12984
13091
|
import { jsx as jsx71, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
12985
13092
|
function toExplorerUrl(kind, value, chain) {
|
|
12986
13093
|
const base2 = chain?.blockExplorers?.default?.url;
|
|
@@ -13004,7 +13111,7 @@ var Hash = ({
|
|
|
13004
13111
|
}) => {
|
|
13005
13112
|
const value = hash || "";
|
|
13006
13113
|
const explorer = toExplorerUrl(kind, value, chain || void 0);
|
|
13007
|
-
const [copied, setCopied] =
|
|
13114
|
+
const [copied, setCopied] = React17.useState(false);
|
|
13008
13115
|
if (!value) return /* @__PURE__ */ jsx71("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
|
|
13009
13116
|
return /* @__PURE__ */ jsxs55("div", { className: cn2("flex items-center gap-2", className), children: [
|
|
13010
13117
|
label && /* @__PURE__ */ jsx71("span", { className: "text-sm font-medium", children: label }),
|
|
@@ -13042,13 +13149,13 @@ var Hash = ({
|
|
|
13042
13149
|
|
|
13043
13150
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
13044
13151
|
init_base();
|
|
13045
|
-
import { useEffect as
|
|
13152
|
+
import { useEffect as useEffect36, useState as useState19 } from "react";
|
|
13046
13153
|
import { jsx as jsx72, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
13047
13154
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
13048
13155
|
const [transactions, setTransactions] = useState19([]);
|
|
13049
13156
|
const [loading, setLoading] = useState19(true);
|
|
13050
13157
|
const [error, setError] = useState19(null);
|
|
13051
|
-
|
|
13158
|
+
useEffect36(() => {
|
|
13052
13159
|
const fetchTransactions = async () => {
|
|
13053
13160
|
try {
|
|
13054
13161
|
setLoading(true);
|
|
@@ -13168,7 +13275,7 @@ var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
|
13168
13275
|
|
|
13169
13276
|
// src/hooks/useUserOpStatus.ts
|
|
13170
13277
|
init_base();
|
|
13171
|
-
import * as
|
|
13278
|
+
import * as React19 from "react";
|
|
13172
13279
|
function useUserOpStatus(options = {}) {
|
|
13173
13280
|
const {
|
|
13174
13281
|
userOpHash,
|
|
@@ -13179,16 +13286,16 @@ function useUserOpStatus(options = {}) {
|
|
|
13179
13286
|
onReceipt,
|
|
13180
13287
|
onTxHash
|
|
13181
13288
|
} = options;
|
|
13182
|
-
const [state, setState] =
|
|
13183
|
-
const [receipt, setReceipt] =
|
|
13184
|
-
const [mempool, setMempool] =
|
|
13185
|
-
const [txHash, setTxHash] =
|
|
13186
|
-
const [error, setError] =
|
|
13187
|
-
const [isPolling, setIsPolling] =
|
|
13188
|
-
const intervalRef =
|
|
13189
|
-
const startTimeRef =
|
|
13190
|
-
const prevStateRef =
|
|
13191
|
-
const rpc =
|
|
13289
|
+
const [state, setState] = React19.useState("waiting");
|
|
13290
|
+
const [receipt, setReceipt] = React19.useState(null);
|
|
13291
|
+
const [mempool, setMempool] = React19.useState(null);
|
|
13292
|
+
const [txHash, setTxHash] = React19.useState(null);
|
|
13293
|
+
const [error, setError] = React19.useState(null);
|
|
13294
|
+
const [isPolling, setIsPolling] = React19.useState(false);
|
|
13295
|
+
const intervalRef = React19.useRef(null);
|
|
13296
|
+
const startTimeRef = React19.useRef(Date.now());
|
|
13297
|
+
const prevStateRef = React19.useRef("waiting");
|
|
13298
|
+
const rpc = React19.useCallback(async (method, params) => {
|
|
13192
13299
|
const body = { jsonrpc: "2.0", id: 1, method, params };
|
|
13193
13300
|
const res = await fetch(getBundlerUrl(), {
|
|
13194
13301
|
method: "POST",
|
|
@@ -13199,21 +13306,21 @@ function useUserOpStatus(options = {}) {
|
|
|
13199
13306
|
if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
|
|
13200
13307
|
return json.result;
|
|
13201
13308
|
}, []);
|
|
13202
|
-
const extractMempoolInfo =
|
|
13309
|
+
const extractMempoolInfo = React19.useCallback((m) => {
|
|
13203
13310
|
if (!m) return null;
|
|
13204
13311
|
const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
|
|
13205
13312
|
const sender = m.sender || m?.userOperation?.sender || null;
|
|
13206
13313
|
if (!entryPoint && !sender) return null;
|
|
13207
13314
|
return { entryPoint, sender };
|
|
13208
13315
|
}, []);
|
|
13209
|
-
const updateState =
|
|
13316
|
+
const updateState = React19.useCallback((newState) => {
|
|
13210
13317
|
setState(newState);
|
|
13211
13318
|
if (prevStateRef.current !== newState) {
|
|
13212
13319
|
prevStateRef.current = newState;
|
|
13213
13320
|
onStateChange?.(newState);
|
|
13214
13321
|
}
|
|
13215
13322
|
}, [onStateChange]);
|
|
13216
|
-
const tick =
|
|
13323
|
+
const tick = React19.useCallback(async () => {
|
|
13217
13324
|
if (!userOpHash || !enabled) return;
|
|
13218
13325
|
if (receipt) {
|
|
13219
13326
|
console.log("[useUserOpStatus] Already have receipt, skipping tick");
|
|
@@ -13286,7 +13393,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13286
13393
|
onTxHash,
|
|
13287
13394
|
onReceipt
|
|
13288
13395
|
]);
|
|
13289
|
-
|
|
13396
|
+
React19.useEffect(() => {
|
|
13290
13397
|
if (!userOpHash || !enabled) return;
|
|
13291
13398
|
console.log("[useUserOpStatus] Initializing for UserOp hash:", userOpHash);
|
|
13292
13399
|
startTimeRef.current = Date.now();
|
|
@@ -13298,7 +13405,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13298
13405
|
setError(null);
|
|
13299
13406
|
setIsPolling(false);
|
|
13300
13407
|
}, [userOpHash, enabled]);
|
|
13301
|
-
|
|
13408
|
+
React19.useEffect(() => {
|
|
13302
13409
|
if (!userOpHash || !enabled) {
|
|
13303
13410
|
console.log("[useUserOpStatus] Not starting polling - no hash or disabled");
|
|
13304
13411
|
return;
|
|
@@ -13334,7 +13441,7 @@ function useUserOpStatus(options = {}) {
|
|
|
13334
13441
|
}
|
|
13335
13442
|
};
|
|
13336
13443
|
}, [userOpHash, enabled, pollMs]);
|
|
13337
|
-
const refresh =
|
|
13444
|
+
const refresh = React19.useCallback(async () => {
|
|
13338
13445
|
await tick();
|
|
13339
13446
|
}, [tick]);
|
|
13340
13447
|
return {
|
|
@@ -13350,11 +13457,11 @@ function useUserOpStatus(options = {}) {
|
|
|
13350
13457
|
|
|
13351
13458
|
// src/hooks/useLogout.ts
|
|
13352
13459
|
import { logout as coreLogout, jwtTokenManager as jwtTokenManager3 } from "@lumiapassport/core/auth";
|
|
13353
|
-
import { useCallback as
|
|
13460
|
+
import { useCallback as useCallback25 } from "react";
|
|
13354
13461
|
function useLogout() {
|
|
13355
13462
|
const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
|
|
13356
13463
|
const { callbacks } = useLumiaPassportConfig();
|
|
13357
|
-
const logout2 =
|
|
13464
|
+
const logout2 = useCallback25(async () => {
|
|
13358
13465
|
const prevAddress = address;
|
|
13359
13466
|
let userId = null;
|
|
13360
13467
|
setIsLoading(true);
|