@lumiapassport/ui-kit 1.14.24 → 1.14.25

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/index.cjs CHANGED
@@ -4529,17 +4529,17 @@ __export(index_exports, {
4529
4529
  module.exports = __toCommonJS(index_exports);
4530
4530
 
4531
4531
  // src/styles/built.css
4532
- var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .invisible{visibility:hidden}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-0{right:0}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .m-4{margin:1rem}.lumia-scope .-mx-1{margin-left:-.25rem;margin-right:-.25rem}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-1{margin-top:.25rem;margin-bottom:.25rem}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .mt-\\[var\\(--l-pass-gap\\)\\]{margin-top:var(--l-pass-gap)}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .aspect-square{aspect-ratio:1/1}.lumia-scope .size-3{width:.75rem;height:.75rem}.lumia-scope .size-3\\.5{width:.875rem;height:.875rem}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-7{height:1.75rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[100dvh\\]{height:100dvh}.lumia-scope .h-\\[48px\\]{height:48px}.lumia-scope .h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[40px\\]{width:40px}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-5{min-width:1.25rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[8rem\\]{min-width:8rem}.lumia-scope .min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lumia-scope .grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lumia-scope .grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lumia-scope .grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-end{align-items:flex-end}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-0\\.5{gap:.125rem}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-1\\.5{gap:.375rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-x-hidden{overflow-x:hidden}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-normal{overflow-wrap:normal;word-break:normal}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-accent\\)\\]{background-color:var(--l-pass-accent)}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-muted\\)\\]{background-color:var(--l-pass-bg-muted)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-error\\)\\]{background-color:var(--l-pass-error)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-fg-inverted\\)\\]{background-color:var(--l-pass-fg-inverted)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-gap\\)\\]{padding:var(--l-pass-gap)}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-1{padding-left:.25rem;padding-right:.25rem}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[var\\(--l-pass-gap\\)\\]{padding-left:var(--l-pass-gap);padding-right:var(--l-pass-gap)}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-gap\\)\\]{padding-top:var(--l-pass-gap);padding-bottom:var(--l-pass-gap)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pl-2{padding-left:.5rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pr-8{padding-right:2rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[14px\\]{font-size:14px}.lumia-scope .text-\\[16px\\]{font-size:16px}.lumia-scope .text-\\[8px\\]{font-size:8px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-normal{font-weight:400}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .lowercase{text-transform:lowercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-8{line-height:2rem}.lumia-scope .leading-\\[8px\\]{line-height:8px}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-2{text-underline-offset:2px}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .shadow-sm,.lumia-scope .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .grayscale{--tw-grayscale:grayscale(100%)}.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-\\[color\\2c box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,384px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#ebebeb);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.6));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.6));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.4));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none!important;appearance:none!important;-webkit-appearance:none;-moz-appearance:none}.lumia-scope input,.lumia-scope textarea{font-size:16px!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 20px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-r,0);overflow-y:auto;overflow-x:hidden;max-height:var(--l-pass-scrollbar-mah,300px)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .noScrollbars::-webkit-scrollbar{display:none}.lumia-scope div[data-radix-popper-content-wrapper]{z-index:10000!important}.lumia-scope .file\\:mr-\\[var\\(--l-pass-gap\\)\\]::file-selector-button{margin-right:var(--l-pass-gap)}.lumia-scope .file\\:h-12::file-selector-button{height:3rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-\\[16px\\]::file-selector-button{font-size:16px}.lumia-scope .file\\:text-base::file-selector-button{font-size:1rem;line-height:1.5rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-secondary\\)\\]:hover:disabled{background-color:var(--l-pass-secondary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.lumia-scope .data-\\[size\\=default\\]\\:h-12[data-size=default]{height:3rem}.lumia-scope .data-\\[size\\=sm\\]\\:h-10[data-size=sm]{height:2.5rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}.lumia-scope .data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1[data-slot=select-value]>*){overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex[data-slot=select-value]>*){display:flex}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center[data-slot=select-value]>*){align-items:center}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-\\[var\\(--l-pass-gap\\)\\][data-slot=select-value]>*){gap:var(--l-pass-gap)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\:not\\(\\[class\\*\\=\\\'size-\\\'\\]\\)\\]\\:size-4 svg:not([class*=size-])){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
4532
+ var built_default = '.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\\201C""\\201D""\\2018""\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .invisible{visibility:hidden}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .-right-2{right:-.5rem}.lumia-scope .-top-1{top:-.25rem}.lumia-scope .-top-2{top:-.5rem}.lumia-scope .-top-3{top:-.75rem}.lumia-scope .bottom-full{bottom:100%}.lumia-scope .left-0{left:0}.lumia-scope .left-1{left:.25rem}.lumia-scope .left-1\\/2{left:50%}.lumia-scope .left-3{left:.75rem}.lumia-scope .left-4{left:1rem}.lumia-scope .right-0{right:0}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.lumia-scope .right-\\[var\\(--l-pass-pd\\)\\]{right:var(--l-pass-pd)}.lumia-scope .right-full{right:100%}.lumia-scope .top-0{top:0}.lumia-scope .top-1{top:.25rem}.lumia-scope .top-1\\/2{top:50%}.lumia-scope .top-3{top:.75rem}.lumia-scope .top-4{top:1rem}.lumia-scope .top-\\[var\\(--l-pass-pd\\)\\]{top:var(--l-pass-pd)}.lumia-scope .top-full{top:100%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[9998\\]{z-index:9998}.lumia-scope .z-\\[9999\\]{z-index:9999}.lumia-scope .-m-px{margin:-1px}.lumia-scope .m-0{margin:0}.lumia-scope .m-4{margin:1rem}.lumia-scope .-mx-1{margin-left:-.25rem;margin-right:-.25rem}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-1{margin-left:.25rem;margin-right:.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-1{margin-top:.25rem;margin-bottom:.25rem}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .my-auto{margin-top:auto;margin-bottom:auto}.lumia-scope .-mt-5{margin-top:-1.25rem}.lumia-scope .mb-1{margin-bottom:.25rem}.lumia-scope .mb-2{margin-bottom:.5rem}.lumia-scope .mb-3{margin-bottom:.75rem}.lumia-scope .mb-4{margin-bottom:1rem}.lumia-scope .mb-6{margin-bottom:1.5rem}.lumia-scope .mb-8{margin-bottom:2rem}.lumia-scope .ml-1{margin-left:.25rem}.lumia-scope .ml-2{margin-left:.5rem}.lumia-scope .ml-3{margin-left:.75rem}.lumia-scope .ml-4{margin-left:1rem}.lumia-scope .ml-auto{margin-left:auto}.lumia-scope .mr-1{margin-right:.25rem}.lumia-scope .mr-2{margin-right:.5rem}.lumia-scope .mr-4{margin-right:1rem}.lumia-scope .mt-0{margin-top:0}.lumia-scope .mt-1{margin-top:.25rem}.lumia-scope .mt-2{margin-top:.5rem}.lumia-scope .mt-3{margin-top:.75rem}.lumia-scope .mt-4{margin-top:1rem}.lumia-scope .mt-6{margin-top:1.5rem}.lumia-scope .block{display:block}.lumia-scope .inline-block{display:inline-block}.lumia-scope .inline{display:inline}.lumia-scope .flex{display:flex}.lumia-scope .inline-flex{display:inline-flex}.lumia-scope .table{display:table}.lumia-scope .grid{display:grid}.lumia-scope .contents{display:contents}.lumia-scope .hidden{display:none}.lumia-scope .aspect-square{aspect-ratio:1/1}.lumia-scope .size-3{width:.75rem;height:.75rem}.lumia-scope .size-3\\.5{width:.875rem;height:.875rem}.lumia-scope .size-4{width:1rem;height:1rem}.lumia-scope .size-5{width:1.25rem;height:1.25rem}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-20{height:5rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-7{height:1.75rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-\\[100dvh\\]{height:100dvh}.lumia-scope .h-\\[48px\\]{height:48px}.lumia-scope .h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.lumia-scope .h-fit{height:-moz-fit-content;height:fit-content}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[95dvh\\]{max-height:95dvh}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-20{width:5rem}.lumia-scope .w-3{width:.75rem}.lumia-scope .w-3\\.5{width:.875rem}.lumia-scope .w-4{width:1rem}.lumia-scope .w-48{width:12rem}.lumia-scope .w-5{width:1.25rem}.lumia-scope .w-6{width:1.5rem}.lumia-scope .w-8{width:2rem}.lumia-scope .w-9{width:2.25rem}.lumia-scope .w-\\[100dvw\\]{width:100dvw}.lumia-scope .w-\\[40px\\]{width:40px}.lumia-scope .w-\\[var\\(--l-pass-maw\\)\\]{width:var(--l-pass-maw)}.lumia-scope .w-fit{width:-moz-fit-content;width:fit-content}.lumia-scope .w-full{width:100%}.lumia-scope .w-px{width:1px}.lumia-scope .min-w-0{min-width:0}.lumia-scope .min-w-16{min-width:4rem}.lumia-scope .min-w-24{min-width:6rem}.lumia-scope .min-w-32{min-width:8rem}.lumia-scope .min-w-4{min-width:1rem}.lumia-scope .min-w-5{min-width:1.25rem}.lumia-scope .min-w-\\[256px\\]{min-width:256px}.lumia-scope .min-w-\\[8rem\\]{min-width:8rem}.lumia-scope .min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[144px\\]{max-width:144px}.lumia-scope .max-w-\\[150px\\]{max-width:150px}.lumia-scope .max-w-\\[160px\\]{max-width:160px}.lumia-scope .max-w-\\[256px\\]{max-width:256px}.lumia-scope .max-w-\\[680px\\]{max-width:680px}.lumia-scope .max-w-full{max-width:100%}.lumia-scope .max-w-lg{max-width:32rem}.lumia-scope .max-w-md{max-width:28rem}.lumia-scope .max-w-sm{max-width:24rem}.lumia-scope .flex-1{flex:1 1 0%}.lumia-scope .flex-none{flex:none}.lumia-scope .flex-shrink{flex-shrink:1}.lumia-scope .flex-shrink-0,.lumia-scope .shrink-0{flex-shrink:0}.lumia-scope .border-collapse{border-collapse:collapse}.lumia-scope .-translate-x-1{--tw-translate-x:-0.25rem}.lumia-scope .-translate-x-1,.lumia-scope .-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\]{--tw-translate-x:calc(var(--l-pass-gap)*-1)}.lumia-scope .-translate-x-\\[var\\(--l-pass-gap\\)\\],.lumia-scope .-translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .-translate-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .-translate-y-1\\/2,.lumia-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--l-pass-bg-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--l-pass-bg-warning)}}.lumia-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.6}}.lumia-scope .animate-pulse-warning{animation:pulse-warning 2s ease infinite}@keyframes spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-default{cursor:default}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .cursor-text{cursor:text}.lumia-scope .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lumia-scope .grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lumia-scope .grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lumia-scope .grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .place-content-center{place-content:center}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-end{align-items:flex-end}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .justify-evenly{justify-content:space-evenly}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-0\\.5{gap:.125rem}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-1\\.5{gap:.375rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope .gap-\\[10px\\]{gap:10px}.lumia-scope .gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .overflow-x-hidden{overflow-x:hidden}.lumia-scope .overflow-y-hidden{overflow-y:hidden}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lumia-scope .text-ellipsis{text-overflow:ellipsis}.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-normal{overflow-wrap:normal;word-break:normal}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-\\[10px\\]{border-radius:10px}.lumia-scope .rounded-\\[5px\\]{border-radius:5px}.lumia-scope .rounded-\\[var\\(--l-pass-bdrs\\)\\]{border-radius:var(--l-pass-bdrs)}.lumia-scope .rounded-\\[var\\(--l-pass-el-bdrs\\)\\]{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:.5rem}.lumia-scope .rounded-md{border-radius:.375rem}.lumia-scope .rounded-sm{border-radius:.125rem}.lumia-scope .rounded-xl{border-radius:.75rem}.lumia-scope .border{border-width:1px}.lumia-scope .border-0{border-width:0}.lumia-scope .border-2{border-width:2px}.lumia-scope .border-b{border-bottom-width:1px}.lumia-scope .border-b-2{border-bottom-width:2px}.lumia-scope .border-t{border-top-width:1px}.lumia-scope .border-dashed{border-style:dashed}.lumia-scope .border-\\[var\\(--l-pass-bd\\)\\]{border-color:var(--l-pass-bd)}.lumia-scope .border-\\[var\\(--l-pass-error\\)\\]{border-color:var(--l-pass-error)}.lumia-scope .border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.lumia-scope .border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.lumia-scope .border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.lumia-scope .border-amber-500{--tw-border-opacity:1;border-color:rgb(245 158 11/var(--tw-border-opacity,1))}.lumia-scope .border-amber-900{--tw-border-opacity:1;border-color:rgb(120 53 15/var(--tw-border-opacity,1))}.lumia-scope .border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.lumia-scope .border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.lumia-scope .border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.lumia-scope .border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-800{--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-current{border-color:currentColor}.lumia-scope .border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.lumia-scope .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.lumia-scope .border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.lumia-scope .border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.lumia-scope .border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.lumia-scope .border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.lumia-scope .border-green-800{--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.lumia-scope .border-green-900{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.lumia-scope .border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.lumia-scope .border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.lumia-scope .border-purple-800{--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.lumia-scope .border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.lumia-scope .border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.lumia-scope .border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.lumia-scope .border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.lumia-scope .border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.lumia-scope .border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.lumia-scope .border-red-900{--tw-border-opacity:1;border-color:rgb(127 29 29/var(--tw-border-opacity,1))}.lumia-scope .border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.lumia-scope .border-sky-800{--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.lumia-scope .border-sky-900{--tw-border-opacity:1;border-color:rgb(12 74 110/var(--tw-border-opacity,1))}.lumia-scope .border-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[var\\(--l-pass-accent\\)\\]{background-color:var(--l-pass-accent)}.lumia-scope .bg-\\[var\\(--l-pass-bg\\)\\]{background-color:var(--l-pass-bg)}.lumia-scope .bg-\\[var\\(--l-pass-bg-error\\)\\]{background-color:var(--l-pass-bg-error)}.lumia-scope .bg-\\[var\\(--l-pass-bg-info\\)\\]{background-color:var(--l-pass-bg-info)}.lumia-scope .bg-\\[var\\(--l-pass-bg-muted\\)\\]{background-color:var(--l-pass-bg-muted)}.lumia-scope .bg-\\[var\\(--l-pass-bg-success\\)\\]{background-color:var(--l-pass-bg-success)}.lumia-scope .bg-\\[var\\(--l-pass-bg-warning\\)\\]{background-color:var(--l-pass-bg-warning)}.lumia-scope .bg-\\[var\\(--l-pass-error\\)\\]{background-color:var(--l-pass-error)}.lumia-scope .bg-\\[var\\(--l-pass-fg\\)\\]{background-color:var(--l-pass-fg)}.lumia-scope .bg-\\[var\\(--l-pass-overlay\\)\\]{background-color:var(--l-pass-overlay)}.lumia-scope .bg-\\[var\\(--l-pass-primary\\)\\]{background-color:var(--l-pass-primary)}.lumia-scope .bg-\\[var\\(--l-pass-secondary\\)\\]{background-color:var(--l-pass-secondary)}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-950{--tw-bg-opacity:1;background-color:rgb(69 26 3/var(--tw-bg-opacity,1))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-950{--tw-bg-opacity:1;background-color:rgb(23 37 84/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-800{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-950{--tw-bg-opacity:1;background-color:rgb(67 20 7/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-200{--tw-bg-opacity:1;background-color:rgb(251 207 232/var(--tw-bg-opacity,1))}.lumia-scope .bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-900{--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.lumia-scope .bg-purple-950{--tw-bg-opacity:1;background-color:rgb(59 7 100/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.lumia-scope .bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-950{--tw-bg-opacity:1;background-color:rgb(8 47 73/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .p-\\[var\\(--l-pass-gap\\)\\]{padding:var(--l-pass-gap)}.lumia-scope .p-\\[var\\(--l-pass-pd\\)\\]{padding:var(--l-pass-pd)}.lumia-scope .px-0{padding-left:0;padding-right:0}.lumia-scope .px-1{padding-left:.25rem;padding-right:.25rem}.lumia-scope .px-12{padding-left:3rem;padding-right:3rem}.lumia-scope .px-2{padding-left:.5rem;padding-right:.5rem}.lumia-scope .px-2\\.5{padding-left:.625rem;padding-right:.625rem}.lumia-scope .px-3{padding-left:.75rem;padding-right:.75rem}.lumia-scope .px-4{padding-left:1rem;padding-right:1rem}.lumia-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.lumia-scope .px-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .px-\\[2px\\]{padding-left:2px;padding-right:2px}.lumia-scope .px-\\[var\\(--l-pass-gap\\)\\]{padding-left:var(--l-pass-gap);padding-right:var(--l-pass-gap)}.lumia-scope .px-\\[var\\(--l-pass-pd\\)\\]{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .py-\\[10px\\]{padding-top:10px;padding-bottom:10px}.lumia-scope .py-\\[var\\(--l-pass-pd\\)\\]{padding-top:var(--l-pass-pd);padding-bottom:var(--l-pass-pd)}.lumia-scope .pb-2{padding-bottom:.5rem}.lumia-scope .pb-3{padding-bottom:.75rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pb-5{padding-bottom:1.25rem}.lumia-scope .pb-6{padding-bottom:1.5rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pl-2{padding-left:.5rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pr-8{padding-right:2rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .pt-5{padding-top:1.25rem}.lumia-scope .text-left{text-align:left}.lumia-scope .text-center{text-align:center}.lumia-scope .text-right{text-align:right}.lumia-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.lumia-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.lumia-scope .text-2xl{font-size:1.5rem;line-height:2rem}.lumia-scope .text-3xl{font-size:1.875rem;line-height:2.25rem}.lumia-scope .text-4xl{font-size:2.25rem;line-height:2.5rem}.lumia-scope .text-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[14px\\]{font-size:14px}.lumia-scope .text-\\[16px\\]{font-size:16px}.lumia-scope .text-\\[8px\\]{font-size:8px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-normal{font-weight:400}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .uppercase{text-transform:uppercase}.lumia-scope .lowercase{text-transform:lowercase}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-4{line-height:1rem}.lumia-scope .leading-5{line-height:1.25rem}.lumia-scope .leading-6{line-height:1.5rem}.lumia-scope .leading-8{line-height:2rem}.lumia-scope .leading-\\[8px\\]{line-height:8px}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-relaxed{line-height:1.625}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.lumia-scope .tracking-wide{letter-spacing:.025em}.lumia-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .text-\\[var\\(--l-pass-bg-error\\)\\]{color:var(--l-pass-bg-error)}.lumia-scope .text-\\[var\\(--l-pass-bg-success\\)\\]{color:var(--l-pass-bg-success)}.lumia-scope .text-\\[var\\(--l-pass-bg-warning\\)\\]{color:var(--l-pass-bg-warning)}.lumia-scope .text-\\[var\\(--l-pass-error\\)\\]{color:var(--l-pass-error)}.lumia-scope .text-\\[var\\(--l-pass-fg\\)\\]{color:var(--l-pass-fg)}.lumia-scope .text-\\[var\\(--l-pass-fg-inverted\\)\\]{color:var(--l-pass-fg-inverted)}.lumia-scope .text-\\[var\\(--l-pass-fg-muted\\)\\]{color:var(--l-pass-fg-muted)}.lumia-scope .text-\\[var\\(--l-pass-info\\)\\]{color:var(--l-pass-info)}.lumia-scope .text-\\[var\\(--l-pass-success\\)\\]{color:var(--l-pass-success)}.lumia-scope .text-\\[var\\(--l-pass-text-secondary\\)\\]{color:var(--l-pass-text-secondary)}.lumia-scope .text-\\[var\\(--l-pass-warning\\)\\]{color:var(--l-pass-warning)}.lumia-scope .text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.lumia-scope .text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.lumia-scope .text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.lumia-scope .text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.lumia-scope .text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.lumia-scope .text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.lumia-scope .text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.lumia-scope .text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.lumia-scope .text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.lumia-scope .text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.lumia-scope .text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.lumia-scope .text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.lumia-scope .text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.lumia-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.lumia-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.lumia-scope .text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.lumia-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.lumia-scope .text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.lumia-scope .text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.lumia-scope .text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.lumia-scope .text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.lumia-scope .text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.lumia-scope .text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.lumia-scope .text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.lumia-scope .text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.lumia-scope .text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.lumia-scope .text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.lumia-scope .text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.lumia-scope .text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.lumia-scope .text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.lumia-scope .text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.lumia-scope .text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.lumia-scope .text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.lumia-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.lumia-scope .text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-2{text-underline-offset:2px}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .opacity-50{opacity:.5}.lumia-scope .opacity-60{opacity:.6}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .shadow-sm,.lumia-scope .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.lumia-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.lumia-scope .outline{outline-style:solid}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .grayscale{--tw-grayscale:grayscale(100%)}.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-\\[color\\2c box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-none{transition-property:none}.lumia-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .duration-200{transition-duration:.2s}.lumia-scope .ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.lumia-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.lumia-scope{--l-pass-ff:var(--lumia-passport-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--l-pass-maw:var(--lumia-passport-maw,384px);--l-pass-pd:var(--lumia-passport-pd,12px);--l-pass-gap:var(--lumia-passport-gap,10px);--l-pass-bdrs:var(--lumia-passport-bdrs,20px);--l-pass-el-bdrs:var(--lumia-passport-element-bdrs,10px);--l-pass-backdrop-blur:var(--lumia-passport-backdrop-blur,10px)}.lumia-scope[data-lumia-passport-mode=light]{--l-pass-overlay:var(--lumia-passport-overlay,hsla(0,0%,100%,.8));--l-pass-bg:var(--lumia-passport-bg,#fff);--l-pass-fg:var(--lumia-passport-fg,#000);--l-pass-fg-h:var(--lumia-passport-fg-h,rgba(0,0,0,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,rgba(0,0,0,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#fff);--l-pass-fg-muted:var(--lumia-passport-fg-muted,rgba(0,0,0,.6));--l-pass-primary:var(--lumia-passport-primary,#000);--l-pass-primary-h:var(--lumia-passport-primary-h,rgba(0,0,0,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,rgba(0,0,0,.6));--l-pass-secondary:var(--lumia-passport-secondary,#e4e4e4);--l-pass-secondary-h:var(--lumia-passport-secondary-h,hsla(0,0%,89%,.8));--l-pass-secondary-a:var(--lumia-passport-secondary-a,hsla(0,0%,89%,.6));--l-pass-bd:var(--lumia-passport-bd,#ebebeb);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#a9a9a9);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#e4e4e4);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope[data-lumia-passport-mode=dark]{--l-pass-overlay:var(--lumia-passport-overlay,rgba(0,0,0,.8));--l-pass-bg:var(--lumia-passport-bg,#1a1a1a);--l-pass-fg:var(--lumia-passport-fg,#fff);--l-pass-fg-h:var(--lumia-passport-fg-h,hsla(0,0%,100%,.6));--l-pass-fg-a:var(--lumia-passport-fg-a,hsla(0,0%,100%,.4));--l-pass-fg-inverted:var(--lumia-passport-fg-inverted,#000);--l-pass-fg-muted:var(--lumia-passport-fg-muted,hsla(0,0%,100%,.6));--l-pass-primary:var(--lumia-passport-primary,#fff);--l-pass-primary-h:var(--lumia-passport-primary-h,hsla(0,0%,100%,.8));--l-pass-primary-a:var(--lumia-passport-primary-a,hsla(0,0%,100%,.6));--l-pass-secondary:var(--lumia-passport-secondary,#2a2a2a);--l-pass-secondary-h:var(--lumia-passport-secondary-h,rgba(42,42,42,.6));--l-pass-secondary-a:var(--lumia-passport-secondary-a,rgba(42,42,42,.4));--l-pass-bd:var(--lumia-passport-bd,#3a3a3a);--l-pass-bd-intense:var(--lumia-passport-bd-intense,#4a4a4a);--l-pass-shadow-c:var(--lumia-passport-shadow-c,rgba(0,0,0,.1));--l-pass-info:var(--lumia-passport-info,var(--l-pass-fg));--l-pass-bg-info:var(--lumia-passport-bg-info,#2a2a2a);--l-pass-success:var(--lumia-passport-success,var(--l-pass-fg-inverted));--l-pass-bg-success:var(--lumia-passport-bg-success,#21ff51);--l-pass-warning:var(--lumia-passport-warning,var(--l-pass-fg-inverted));--l-pass-bg-warning:var(--lumia-passport-bg-warning,#e9fa00);--l-pass-error:var(--lumia-passport-error,#fff);--l-pass-bg-error:var(--lumia-passport-bg-error,#d6204e)}.lumia-scope,.lumia-scope *{margin:0;box-sizing:border-box;font-family:var(--l-pass-ff);font-optical-sizing:auto;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lumia-scope button,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6,.lumia-scope input,.lumia-scope p,.lumia-scope select,.lumia-scope textarea{font-family:var(--l-pass-ff)!important;margin:0}.lumia-scope button,.lumia-scope input,.lumia-scope select,.lumia-scope textarea{border-style:solid;outline:none!important;appearance:none!important;-webkit-appearance:none;-moz-appearance:none}.lumia-scope input,.lumia-scope textarea{font-size:16px!important}.lumia-scope .lumia-passport-button{box-shadow:0 4px 20px var(--l-pass-shadow-c),inset 0 0 0 1px var(--l-pass-bd);transition:transform .25s ease}.lumia-scope .lumia-passport-button:hover{transform:scale(1.02)}.lumia-scope .lumia-passport-button:active{transform:scale(1)}@keyframes lumia-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.lumia-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.lumia-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.lumia-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.lumia-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.lumia-scope .list-scrollbar-y{width:100%;padding-right:var(--l-pass-list-scrollbar-pd-r,0);overflow-y:auto;overflow-x:hidden;max-height:var(--l-pass-scrollbar-mah,300px)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--l-pass-bd)}.lumia-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.lumia-scope .noScrollbars::-webkit-scrollbar{display:none}.lumia-scope div[data-radix-popper-content-wrapper]{z-index:10000!important}.lumia-scope .file\\:mr-\\[var\\(--l-pass-gap\\)\\]::file-selector-button{margin-right:var(--l-pass-gap)}.lumia-scope .file\\:h-12::file-selector-button{height:3rem}.lumia-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.lumia-scope .file\\:rounded-\\[var\\(--l-pass-el-bdrs\\)\\]::file-selector-button{border-radius:var(--l-pass-el-bdrs)}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-\\[var\\(--l-pass-primary\\)\\]::file-selector-button{background-color:var(--l-pass-primary)}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-\\[var\\(--l-pass-pd\\)\\]::file-selector-button{padding-left:var(--l-pass-pd);padding-right:var(--l-pass-pd)}.lumia-scope .file\\:text-\\[16px\\]::file-selector-button{font-size:16px}.lumia-scope .file\\:text-base::file-selector-button{font-size:1rem;line-height:1.5rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:text-\\[var\\(--l-pass-fg-inverted\\)\\]::file-selector-button{color:var(--l-pass-fg-inverted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::-moz-placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .placeholder\\:text-\\[var\\(--l-pass-fg-muted\\)\\]::placeholder{color:var(--l-pass-fg-muted)}.lumia-scope .focus-within\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus-within{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover{background-color:var(--l-pass-bg)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-primary-h\\)\\]:hover{background-color:var(--l-pass-primary-h)}.lumia-scope .hover\\:bg-\\[var\\(--l-pass-secondary-h\\)\\]:hover{background-color:var(--l-pass-secondary-h)}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-\\[var\\(--l-pass-fg-h\\)\\]:hover{color:var(--l-pass-fg-h)}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.lumia-scope .focus\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:focus{background-color:var(--l-pass-secondary-a)}.lumia-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.lumia-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.lumia-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active{background-color:var(--l-pass-bg)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-primary-a\\)\\]:active{background-color:var(--l-pass-primary-a)}.lumia-scope .active\\:bg-\\[var\\(--l-pass-secondary-a\\)\\]:active{background-color:var(--l-pass-secondary-a)}.lumia-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.lumia-scope .active\\:text-\\[var\\(--l-pass-fg-a\\)\\]:active{color:var(--l-pass-fg-a)}.lumia-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.lumia-scope .disabled\\:cursor-default:disabled{cursor:default}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-bg\\)\\]:hover:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-primary\\)\\]:hover:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:hover\\:bg-\\[var\\(--l-pass-secondary\\)\\]:hover:disabled{background-color:var(--l-pass-secondary)}.lumia-scope .disabled\\:hover\\:text-\\[var\\(--l-pass-fg\\)\\]:hover:disabled{color:var(--l-pass-fg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-bg\\)\\]:active:disabled{background-color:var(--l-pass-bg)}.lumia-scope .disabled\\:active\\:bg-\\[var\\(--l-pass-primary\\)\\]:active:disabled{background-color:var(--l-pass-primary)}.lumia-scope .disabled\\:active\\:text-\\[var\\(--l-pass-fg\\)\\]:active:disabled{color:var(--l-pass-fg)}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.lumia-scope :is(.group:hover .group-hover\\:opacity-60){opacity:.6}.lumia-scope .data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.lumia-scope .data-\\[size\\=default\\]\\:h-12[data-size=default]{height:3rem}.lumia-scope .data-\\[size\\=sm\\]\\:h-10[data-size=sm]{height:2.5rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.lumia-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.lumia-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.lumia-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--l-pass-bd-intense\\)\\][data-state=checked]{border-color:var(--l-pass-bd-intense)}.lumia-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--l-pass-secondary\\)\\][data-state=checked]{background-color:var(--l-pass-secondary)}.lumia-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--l-pass-fg\\)\\][data-state=checked]{color:var(--l-pass-fg)}.lumia-scope .data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1[data-slot=select-value]>*){overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex[data-slot=select-value]>*){display:flex}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center[data-slot=select-value]>*){align-items:center}.lumia-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-\\[var\\(--l-pass-gap\\)\\][data-slot=select-value]>*){gap:var(--l-pass-gap)}@media (min-width:640px){.lumia-scope .sm\\:flex-row{flex-direction:row}.lumia-scope .sm\\:justify-end{justify-content:flex-end}.lumia-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope .sm\\:text-left{text-align:left}}@media (min-width:768px){.lumia-scope .md\\:h-8{height:2rem}.lumia-scope .md\\:w-8{width:2rem}.lumia-scope .md\\:gap-\\[var\\(--l-pass-gap\\)\\]{gap:var(--l-pass-gap)}.lumia-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-yellow-500:hover{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\:not\\(\\[class\\*\\=\\\'size-\\\'\\]\\)\\]\\:size-4 svg:not([class*=size-])){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
4533
4533
 
4534
4534
  // src/context/LumiaPassportContext.tsx
4535
4535
  var import_error_tracking4 = require("@lumiapassport/core/internal/error-tracking");
4536
4536
  var import_lodash_es4 = require("lodash-es");
4537
- var import_react63 = require("react");
4537
+ var import_react61 = require("react");
4538
4538
  init_lumiaPassport();
4539
4539
  init_iframe_manager();
4540
4540
 
4541
4541
  // src/context/LumiaPassportSessionContext.tsx
4542
- var import_react62 = require("react");
4542
+ var import_react60 = require("react");
4543
4543
  var import_zustand6 = require("zustand");
4544
4544
 
4545
4545
  // src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
@@ -4558,7 +4558,7 @@ init_assets();
4558
4558
  var LOCAL_COLOR_MODE_KEY = "lumia-passport-theme";
4559
4559
  var DEFAULT_AUTH_MENU_HEIGHT = 253;
4560
4560
  var DEFAULT_MAIN_MENU_HEIGHT = 90;
4561
- var DEFAULT_SETTINGS_MENU_HEIGHT = 346;
4561
+ var DEFAULT_SETTINGS_MENU_HEIGHT = 404;
4562
4562
  var MAX_CONTENT_HEIGHT = 640;
4563
4563
  var MAIN_DIALOG_ANIMATION_SPEED = 375;
4564
4564
  var Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
@@ -4718,7 +4718,7 @@ function BalanceFeedProvider() {
4718
4718
 
4719
4719
  // src/internal/components/Dialog/LumiaPassportDialog.tsx
4720
4720
  var import_framer_motion3 = require("framer-motion");
4721
- var import_react59 = require("react");
4721
+ var import_react57 = require("react");
4722
4722
 
4723
4723
  // src/internal/components/Footer/Footer.tsx
4724
4724
  var import_react_query2 = require("@tanstack/react-query");
@@ -5398,17 +5398,14 @@ function formatAddress(addr) {
5398
5398
  return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
5399
5399
  }
5400
5400
  function Header() {
5401
- const {
5402
- config: { current: config }
5403
- } = useLumiaPassportConfig();
5401
+ const config = useLumiaPassportConfig().config;
5404
5402
  const address = useLumiaPassportSession((st) => st.address);
5405
5403
  const [copied, setCopied] = (0, import_react5.useState)(false);
5406
- const { data: profile } = (0, import_react_query5.useQuery)({
5407
- queryKey: [QUERY_KEYS.userProfile],
5408
- queryFn: getUserProfile,
5404
+ const { data: profile, isLoading: isProfileLoading } = (0, import_react_query5.useQuery)({
5405
+ retry: false,
5409
5406
  enabled: !!address,
5410
- staleTime: 1e3 * 60 * 5
5411
- // 5 minutes
5407
+ queryKey: [QUERY_KEYS.userProfile, address],
5408
+ queryFn: getUserProfile
5412
5409
  });
5413
5410
  const avatar = profile?.avatar || import_auth3.jwtTokenManager.getAvatar();
5414
5411
  const displayName = profile?.nicknameDisplay || profile?.displayName || import_auth3.jwtTokenManager.getDisplayName();
@@ -5428,20 +5425,23 @@ function Header() {
5428
5425
  style: { width: "calc(100% - 48px - var(--l-pass-gap))" },
5429
5426
  className: "flex-1 flex flex-col justify-center gap-1",
5430
5427
  children: [
5431
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
5432
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
5433
- "span",
5434
- {
5435
- className: cn(
5436
- "text-[14px] leading-4 truncate max-w-[144px] font-medium",
5437
- "text-ellipsis overflow-hidden whitespace-nowrap"
5438
- ),
5439
- children: displayName || config.ui.title || "LumiaPassport"
5440
- }
5441
- ),
5442
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(KYCStatus, {})
5443
- ] }),
5444
- !!address && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BalanceView, {})
5428
+ isProfileLoading && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react7.Loader, { className: "w-4 h-4 animate-spin" }),
5429
+ !!address && !isProfileLoading && !!profile && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
5430
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "w-full flex items-center gap-[var(--l-pass-gap)]", children: [
5431
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
5432
+ "span",
5433
+ {
5434
+ className: cn(
5435
+ "text-[14px] leading-4 truncate max-w-[144px] font-medium",
5436
+ "text-ellipsis overflow-hidden whitespace-nowrap"
5437
+ ),
5438
+ children: displayName || config.current?.ui?.title || "LumiaPassport"
5439
+ }
5440
+ ),
5441
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(KYCStatus, {})
5442
+ ] }),
5443
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(BalanceView, {})
5444
+ ] })
5445
5445
  ]
5446
5446
  }
5447
5447
  )
@@ -5501,13 +5501,11 @@ function Header() {
5501
5501
  }
5502
5502
  );
5503
5503
  }
5504
- {
5505
- }
5506
5504
 
5507
5505
  // package.json
5508
5506
  var package_default = {
5509
5507
  name: "@lumiapassport/ui-kit",
5510
- version: "1.14.24",
5508
+ version: "1.14.25",
5511
5509
  description: "React UI components and hooks for Lumia Passport authentication and Account Abstraction",
5512
5510
  type: "module",
5513
5511
  main: "./dist/index.cjs",
@@ -5946,6 +5944,7 @@ var import_react9 = require("react");
5946
5944
  init_vaultClient();
5947
5945
  function useBackupStatusChanges() {
5948
5946
  const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
5947
+ const setPage = useLayoutDataStore((st) => st.setPage);
5949
5948
  const { mutate: handleBackupStatusChanged } = (0, import_react_query6.useMutation)({
5950
5949
  mutationFn: async (event) => {
5951
5950
  const customEvent = event;
@@ -5957,6 +5956,7 @@ function useBackupStatusChanges() {
5957
5956
  setHasServerVault(true);
5958
5957
  } else {
5959
5958
  setHasServerVault(false);
5959
+ setPage("keysare-backup" /* KEYSARE_BACKUP */);
5960
5960
  console.warn("[BACKUP STATUS] No recovery data found in vault, marking as no-server-vault");
5961
5961
  }
5962
5962
  },
@@ -5973,74 +5973,15 @@ function useBackupStatusChanges() {
5973
5973
  }, []);
5974
5974
  }
5975
5975
 
5976
- // src/internal/hooks/useBackupWarning.ts
5977
- var import_react10 = require("react");
5978
- var WARNING_TIMEOUT_MS = 4500;
5979
- function useBackupWarning() {
5980
- const address = useLumiaPassportSession((st) => st.address);
5981
- const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
5982
- const page = useLayoutDataStore((st) => st.page);
5983
- const setPage = useLayoutDataStore((st) => st.setPage);
5984
- const timeoutRef = (0, import_react10.useRef)(null);
5985
- const touchedRef = (0, import_react10.useRef)(false);
5986
- (0, import_react10.useEffect)(() => {
5987
- if (touchedRef.current) return;
5988
- if (timeoutRef.current) {
5989
- clearTimeout(timeoutRef.current);
5990
- timeoutRef.current = null;
5991
- }
5992
- if (!address || !!hasServerVault || page === "keysare-backup" /* KEYSARE_BACKUP */) return;
5993
- timeoutRef.current = setTimeout(() => {
5994
- setPage("keysare-backup" /* KEYSARE_BACKUP */);
5995
- touchedRef.current = true;
5996
- timeoutRef.current = null;
5997
- }, WARNING_TIMEOUT_MS);
5998
- return () => {
5999
- if (timeoutRef.current) {
6000
- clearTimeout(timeoutRef.current);
6001
- timeoutRef.current = null;
6002
- }
6003
- };
6004
- }, [address, page, hasServerVault, setPage]);
6005
- return null;
6006
- }
6007
-
6008
- // src/internal/hooks/useCheckVaultStatus.ts
6009
- var import_react_query7 = require("@tanstack/react-query");
6010
- var import_react11 = require("react");
6011
- init_vaultClient();
6012
- function useCheckVaultStatus() {
6013
- const address = useLumiaPassportSession((st) => st.address);
6014
- const setHasServerVault = useLumiaPassportSession((st) => st.setHasServerVault);
6015
- const { mutate: checkVaultStatus } = (0, import_react_query7.useMutation)({
6016
- mutationFn: async () => {
6017
- const stats = await getShareRecoveryStats();
6018
- const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
6019
- return !!hasRecoveryData;
6020
- },
6021
- onSuccess: (hasRecoveryData) => {
6022
- setHasServerVault(hasRecoveryData);
6023
- },
6024
- onError: (error) => {
6025
- console.warn("[UI-KIT] Failed to check vault status:", error);
6026
- setHasServerVault(false);
6027
- }
6028
- });
6029
- (0, import_react11.useEffect)(() => {
6030
- if (!address) return setHasServerVault(false);
6031
- checkVaultStatus();
6032
- }, [address, checkVaultStatus]);
6033
- }
6034
-
6035
5976
  // src/internal/hooks/useDetectMaxScrollHeight.ts
6036
5977
  var import_lodash_es2 = require("lodash-es");
6037
- var import_react12 = require("react");
5978
+ var import_react10 = require("react");
6038
5979
  var DEBOUNCE_DELAY = 50;
6039
5980
  function useDetectMaxScrollHeight() {
6040
5981
  const page = useLayoutDataStore((state) => state.page);
6041
5982
  const setIsMobileView = useLayoutStore((state) => state.setIsMobileView);
6042
5983
  const setMaxScrollHeight = useLayoutStore((state) => state.setMaxScrollHeight);
6043
- const onResize = (0, import_react12.useCallback)(
5984
+ const onResize = (0, import_react10.useCallback)(
6044
5985
  (0, import_lodash_es2.debounce)(({ width, height }) => {
6045
5986
  const headerHeight = page === "auth" /* AUTH */ || page === "keyshare-restore" /* KEYSHARE_RESTORE */ ? 0 : 116;
6046
5987
  const limContentHeight = height * 0.92 - headerHeight - 57;
@@ -6049,7 +5990,7 @@ function useDetectMaxScrollHeight() {
6049
5990
  }, DEBOUNCE_DELAY),
6050
5991
  [page, setMaxScrollHeight, setIsMobileView]
6051
5992
  );
6052
- (0, import_react12.useEffect)(() => {
5993
+ (0, import_react10.useEffect)(() => {
6053
5994
  const obs = new ResizeObserver(([entry]) => onResize(entry.contentRect));
6054
5995
  const doc = window.document.getElementsByTagName("html")[0];
6055
5996
  if (doc) obs.observe(doc);
@@ -6058,24 +5999,24 @@ function useDetectMaxScrollHeight() {
6058
5999
  }
6059
6000
 
6060
6001
  // src/internal/hooks/usePageMapper.tsx
6061
- var import_react56 = require("react");
6002
+ var import_react54 = require("react");
6062
6003
 
6063
6004
  // src/internal/components/AuthMenu/AuthMenu.tsx
6064
6005
  var import_framer_motion = require("framer-motion");
6065
6006
  var import_lucide_react14 = require("lucide-react");
6066
- var import_react21 = require("react");
6007
+ var import_react19 = require("react");
6067
6008
 
6068
6009
  // src/internal/components/Expandable/hooks/useExpandable.ts
6069
- var import_react13 = require("react");
6010
+ var import_react11 = require("react");
6070
6011
  var useExpandable = (props) => {
6071
6012
  const { isExpanded = false, children, initHeight = 0, minHeight = 0 } = props;
6072
- const expandableRef = (0, import_react13.useRef)(null);
6073
- const contentRef = (0, import_react13.useRef)(null);
6074
- (0, import_react13.useEffect)(() => {
6013
+ const expandableRef = (0, import_react11.useRef)(null);
6014
+ const contentRef = (0, import_react11.useRef)(null);
6015
+ (0, import_react11.useEffect)(() => {
6075
6016
  if (!expandableRef.current) return;
6076
6017
  expandableRef.current.style.setProperty("--ifo-basic-expandable-h", `${initHeight}px )`);
6077
6018
  }, []);
6078
- const setExpandableHeight = (0, import_react13.useCallback)(
6019
+ const setExpandableHeight = (0, import_react11.useCallback)(
6079
6020
  (isExpnd) => {
6080
6021
  if (!contentRef.current || !expandableRef.current) return;
6081
6022
  expandableRef.current.style.setProperty(
@@ -6086,7 +6027,7 @@ var useExpandable = (props) => {
6086
6027
  // ON_RESIZE_DELEAY),
6087
6028
  [minHeight]
6088
6029
  );
6089
- (0, import_react13.useEffect)(() => {
6030
+ (0, import_react11.useEffect)(() => {
6090
6031
  if (!contentRef.current || !expandableRef.current) return;
6091
6032
  const obs = new ResizeObserver(() => setExpandableHeight(isExpanded));
6092
6033
  obs.observe(expandableRef.current);
@@ -6216,7 +6157,7 @@ function AuthFailedStep() {
6216
6157
 
6217
6158
  // src/internal/components/AuthMenu/PassKeyStep.tsx
6218
6159
  var import_lucide_react10 = require("lucide-react");
6219
- var import_react14 = require("react");
6160
+ var import_react12 = require("react");
6220
6161
 
6221
6162
  // src/internal/assets/PasskeyAddIcon.tsx
6222
6163
  var import_jsx_runtime18 = require("react/jsx-runtime");
@@ -6270,7 +6211,7 @@ function PassKeyStep(props) {
6270
6211
  const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
6271
6212
  const autoCloseOnSuccess = !recoveryUserId;
6272
6213
  const { passkeyStatus, setStep, setPasskeyStatus, setAlert, setEmail, setFailedType } = useAuthStore();
6273
- const onPasskeyRegister = (0, import_react14.useCallback)(async () => {
6214
+ const onPasskeyRegister = (0, import_react12.useCallback)(async () => {
6274
6215
  setAlert(null);
6275
6216
  setPasskeyStatus("registering passkey...");
6276
6217
  setIsLoading(true);
@@ -6329,7 +6270,7 @@ function PassKeyStep(props) {
6329
6270
  setIsLoading(false);
6330
6271
  }
6331
6272
  }, [onAuthSuccess, setPage, callbacks]);
6332
- const onPasskeyAuth = (0, import_react14.useCallback)(async () => {
6273
+ const onPasskeyAuth = (0, import_react12.useCallback)(async () => {
6333
6274
  setAlert(null);
6334
6275
  setPasskeyStatus("checking available passkeys...");
6335
6276
  setIsLoading(true);
@@ -6454,22 +6395,22 @@ function PassKeyStep(props) {
6454
6395
 
6455
6396
  // src/internal/components/AuthMenu/SignInStep/SignInStep.tsx
6456
6397
  var import_lucide_react12 = require("lucide-react");
6457
- var import_react18 = require("react");
6398
+ var import_react16 = require("react");
6458
6399
 
6459
6400
  // src/internal/components/AuthMenu/SignInStep/Email.tsx
6460
6401
  init_lumiaPassport();
6461
- var import_react_query8 = require("@tanstack/react-query");
6402
+ var import_react_query7 = require("@tanstack/react-query");
6462
6403
  var import_lucide_react11 = require("lucide-react");
6463
- var import_react16 = require("react");
6404
+ var import_react14 = require("react");
6464
6405
  init_projectId();
6465
6406
 
6466
6407
  // src/internal/components/ui/input.tsx
6467
- var import_react15 = __toESM(require("react"), 1);
6408
+ var import_react13 = __toESM(require("react"), 1);
6468
6409
  var import_jsx_runtime20 = require("react/jsx-runtime");
6469
- var Input = import_react15.default.forwardRef((props, ref) => {
6410
+ var Input = import_react13.default.forwardRef((props, ref) => {
6470
6411
  const { className, disabled, error, Icon: Icon2, element, ...inputProps } = props;
6471
- const internalRef = (0, import_react15.useRef)(null);
6472
- (0, import_react15.useImperativeHandle)(ref, () => internalRef.current);
6412
+ const internalRef = (0, import_react13.useRef)(null);
6413
+ (0, import_react13.useImperativeHandle)(ref, () => internalRef.current);
6473
6414
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: cn("w-full flex flex-col gap-1", className), children: [
6474
6415
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
6475
6416
  "div",
@@ -6516,11 +6457,11 @@ Input.displayName = "Input";
6516
6457
  var import_jsx_runtime21 = require("react/jsx-runtime");
6517
6458
  function Email() {
6518
6459
  const { config, callbacks } = useLumiaPassportConfig();
6519
- const buttonRef = (0, import_react16.useRef)(null);
6460
+ const buttonRef = (0, import_react14.useRef)(null);
6520
6461
  const isLoading = useLumiaPassportSession((st) => st.isLoading);
6521
6462
  const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
6522
6463
  const { email, alert: alert2, setEmail, setExpiresIn, setStep, setAlert } = useAuthStore();
6523
- const { mutate: onSendVerificationCode } = (0, import_react_query8.useMutation)({
6464
+ const { mutate: onSendVerificationCode } = (0, import_react_query7.useMutation)({
6524
6465
  mutationFn: async (mail) => {
6525
6466
  const isEmailValid = mail.length !== 0 && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(mail);
6526
6467
  if (!isEmailValid) {
@@ -6618,7 +6559,7 @@ function Email() {
6618
6559
  // src/internal/components/AuthMenu/SignInStep/Social.tsx
6619
6560
  init_assets();
6620
6561
  init_lumiaPassport();
6621
- var import_react17 = require("react");
6562
+ var import_react15 = require("react");
6622
6563
  init_auth();
6623
6564
  init_projectId();
6624
6565
 
@@ -6790,7 +6731,7 @@ function Social(props) {
6790
6731
  const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
6791
6732
  const setIsWalletLinking = useLayoutDataStore((st) => st.setIsWalletLinking);
6792
6733
  const { alert: alert2, setStep, setEmail, setFailedType, setAlert, setPasskeyStatus } = useAuthStore();
6793
- const onSocialAuth = (0, import_react17.useCallback)(
6734
+ const onSocialAuth = (0, import_react15.useCallback)(
6794
6735
  async (providerId) => {
6795
6736
  const normalizedProviderId = providerId.toLowerCase();
6796
6737
  const provider = config.current?.social?.providers?.find(
@@ -7091,7 +7032,7 @@ function SignInStep(props) {
7091
7032
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react12.UserCircle, { className: "w-6 h-6" }),
7092
7033
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "font-bold text-xl leading-6", children: "Sign In" })
7093
7034
  ] }),
7094
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: enabledSigninMethods.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react18.Fragment, { children: [
7035
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: enabledSigninMethods.map((kind, idx) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_react16.Fragment, { children: [
7095
7036
  idx > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center h-4", children: [
7096
7037
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { style: { borderTop: "1px solid var(--l-pass-bd)" }, className: "flex-1" }),
7097
7038
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "text-[10px] px-2 flex-none leading-4", children: "Or sign in using" }),
@@ -7116,16 +7057,16 @@ function SignInStep(props) {
7116
7057
  }
7117
7058
 
7118
7059
  // src/internal/components/AuthMenu/useAuthMenuHanders.ts
7119
- var import_react_query9 = require("@tanstack/react-query");
7120
- var import_react19 = require("react");
7060
+ var import_react_query8 = require("@tanstack/react-query");
7061
+ var import_react17 = require("react");
7121
7062
  init_auth();
7122
7063
  function useAuthMenuHandlers() {
7123
7064
  const { config, callbacks } = useLumiaPassportConfig();
7124
- const qc = (0, import_react_query9.useQueryClient)();
7125
- const pendingLoginResponseRef = (0, import_react19.useRef)(null);
7065
+ const qc = (0, import_react_query8.useQueryClient)();
7066
+ const pendingLoginResponseRef = (0, import_react17.useRef)(null);
7126
7067
  const setPage = useLayoutDataStore((st) => st.setPage);
7127
7068
  const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
7128
- const [telegramCleanup, setTelegramCleanup] = (0, import_react19.useState)(null);
7069
+ const [telegramCleanup, setTelegramCleanup] = (0, import_react17.useState)(null);
7129
7070
  const {
7130
7071
  usePaymaster,
7131
7072
  setError,
@@ -7138,7 +7079,7 @@ function useAuthMenuHandlers() {
7138
7079
  } = useLumiaPassportSession();
7139
7080
  const setStep = useAuthStore((st) => st.setStep);
7140
7081
  const setAlert = useAuthStore((st) => st.setAlert);
7141
- const createSessionWithKeyshare = (0, import_react19.useCallback)(
7082
+ const createSessionWithKeyshare = (0, import_react17.useCallback)(
7142
7083
  async (userId, hasServerKeyshare, isNewUser) => {
7143
7084
  try {
7144
7085
  try {
@@ -7172,7 +7113,7 @@ function useAuthMenuHandlers() {
7172
7113
  },
7173
7114
  [setStatus, callbacks, usePaymaster]
7174
7115
  );
7175
- const onAuthSuccess = (0, import_react19.useCallback)(async () => {
7116
+ const onAuthSuccess = (0, import_react17.useCallback)(async () => {
7176
7117
  setIsLoading(true);
7177
7118
  const loginResponse = pendingLoginResponseRef.current;
7178
7119
  if (!loginResponse || !loginResponse.userId) {
@@ -7207,6 +7148,7 @@ function useAuthMenuHandlers() {
7207
7148
  callbacks?.onLumiaPassportAccount?.({ userId, address: addr, session: sess, hasKeyshare: hasServerKeyshare });
7208
7149
  } catch {
7209
7150
  }
7151
+ let hasKeyshareVaultBackup = false;
7210
7152
  try {
7211
7153
  const { checkServerBackupAvailability: checkServerBackupAvailability2, updateBackupStatus: updateBackupStatus2, getShareRecoveryStats: getShareRecoveryStats2 } = await Promise.resolve().then(() => (init_vaultClient(), vaultClient_exports));
7212
7154
  const result = await checkServerBackupAvailability2();
@@ -7216,8 +7158,8 @@ function useAuthMenuHandlers() {
7216
7158
  updateBackupStatus2(userId, "server", { enabled: false, error: "No server vault found" });
7217
7159
  }
7218
7160
  const stats = await getShareRecoveryStats2();
7219
- const hasRecoveryData = stats && (stats.created || stats.devices && stats.devices.length > 0);
7220
- setHasServerVault(!!hasRecoveryData);
7161
+ hasKeyshareVaultBackup = !!stats && (!!stats.created || !!stats.devices && stats.devices.length > 0);
7162
+ setHasServerVault(!!hasKeyshareVaultBackup);
7221
7163
  qc.refetchQueries({ queryKey: [CHECK_BACKUP_QUERY_KEY, addr] });
7222
7164
  } catch (e) {
7223
7165
  console.warn("[UI-KIT] Vault status check failed:", e);
@@ -7225,13 +7167,17 @@ function useAuthMenuHandlers() {
7225
7167
  setSession(sess);
7226
7168
  setAddress(addr);
7227
7169
  setStatus("ready");
7228
- if (jwt?.isNewUser) {
7229
- console.log("[AuthMenu] New user detected - forcing backup flow");
7230
- setIsDialogForced(true);
7231
- setPage("keysare-backup" /* KEYSARE_BACKUP */);
7232
- } else {
7233
- setPage(null);
7234
- }
7170
+ setTimeout(() => {
7171
+ if (!!jwt?.isNewUser || !hasKeyshareVaultBackup) {
7172
+ if (!!jwt?.isNewUser) console.log("[AuthMenu] New user detected - forcing backup flow");
7173
+ if (!hasKeyshareVaultBackup) console.log("[AuthMenu] No recovery data found - forcing backup flow");
7174
+ setIsDialogForced(true);
7175
+ setPage("keysare-backup" /* KEYSARE_BACKUP */);
7176
+ } else {
7177
+ setIsDialogForced(false);
7178
+ setPage(null);
7179
+ }
7180
+ }, 100);
7235
7181
  } catch (error) {
7236
7182
  if (error?.code === "KEYSHARE_RECOVERY_NEEDED") {
7237
7183
  console.warn("[AuthMenu] Keyshare recovery needed for user:", userId);
@@ -7239,7 +7185,9 @@ function useAuthMenuHandlers() {
7239
7185
  setError(null);
7240
7186
  setRecoveryUserId(userId);
7241
7187
  setStatus("recovery_needed");
7242
- setTimeout(() => setPage("keyshare-restore" /* KEYSHARE_RESTORE */), 300);
7188
+ setTimeout(() => {
7189
+ setPage("keyshare-restore" /* KEYSHARE_RESTORE */);
7190
+ }, 100);
7243
7191
  } else {
7244
7192
  pendingLoginResponseRef.current = null;
7245
7193
  await import_auth3.jwtTokenManager.clearTokens();
@@ -7255,7 +7203,6 @@ function useAuthMenuHandlers() {
7255
7203
  setIsLoading(false);
7256
7204
  }
7257
7205
  }, [
7258
- // config.projectId,
7259
7206
  qc,
7260
7207
  callbacks,
7261
7208
  setPage,
@@ -7269,7 +7216,7 @@ function useAuthMenuHandlers() {
7269
7216
  setIsDialogForced,
7270
7217
  createSessionWithKeyshare
7271
7218
  ]);
7272
- const goBackToSignIn = (0, import_react19.useCallback)(() => {
7219
+ const goBackToSignIn = (0, import_react17.useCallback)(() => {
7273
7220
  setStep("signin");
7274
7221
  setAlert(null);
7275
7222
  if (telegramCleanup) {
@@ -7286,7 +7233,7 @@ function useAuthMenuHandlers() {
7286
7233
 
7287
7234
  // src/internal/components/AuthMenu/VerifyStep/VerifyStep.tsx
7288
7235
  init_lumiaPassport();
7289
- var import_react_query10 = require("@tanstack/react-query");
7236
+ var import_react_query9 = require("@tanstack/react-query");
7290
7237
  var import_lucide_react13 = require("lucide-react");
7291
7238
 
7292
7239
  // src/internal/assets/OtpIcon.tsx
@@ -7306,21 +7253,21 @@ function OtpIcon(props) {
7306
7253
  init_projectId();
7307
7254
 
7308
7255
  // src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
7309
- var import_react20 = require("react");
7256
+ var import_react18 = require("react");
7310
7257
  var import_jsx_runtime26 = require("react/jsx-runtime");
7311
7258
  var VerificationCodeInput = (props) => {
7312
7259
  const { onVerifyCode, onResendCode, isLoading, expiresIn } = props;
7313
7260
  const setAlert = useAuthStore((st) => st.setAlert);
7314
- const [timeLeft, setTimeLeft] = (0, import_react20.useState)(expiresIn);
7315
- (0, import_react20.useEffect)(() => setTimeLeft(expiresIn), [expiresIn]);
7316
- (0, import_react20.useEffect)(() => {
7261
+ const [timeLeft, setTimeLeft] = (0, import_react18.useState)(expiresIn);
7262
+ (0, import_react18.useEffect)(() => setTimeLeft(expiresIn), [expiresIn]);
7263
+ (0, import_react18.useEffect)(() => {
7317
7264
  const t = setInterval(() => setTimeLeft((secs) => secs > 0 ? secs - 1 : 0), 1e3);
7318
7265
  return () => clearInterval(t);
7319
7266
  }, []);
7320
- const lastSubmittedRef = (0, import_react20.useRef)(null);
7321
- const inputsRef = (0, import_react20.useRef)([]);
7322
- const [digits, setDigits] = (0, import_react20.useState)(["", "", "", "", "", ""]);
7323
- (0, import_react20.useEffect)(() => {
7267
+ const lastSubmittedRef = (0, import_react18.useRef)(null);
7268
+ const inputsRef = (0, import_react18.useRef)([]);
7269
+ const [digits, setDigits] = (0, import_react18.useState)(["", "", "", "", "", ""]);
7270
+ (0, import_react18.useEffect)(() => {
7324
7271
  const code = digits.join("");
7325
7272
  if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
7326
7273
  if (lastSubmittedRef.current !== code) {
@@ -7329,7 +7276,7 @@ var VerificationCodeInput = (props) => {
7329
7276
  }
7330
7277
  }
7331
7278
  }, [digits, isLoading, onVerifyCode]);
7332
- (0, import_react20.useEffect)(() => {
7279
+ (0, import_react18.useEffect)(() => {
7333
7280
  const t = setTimeout(() => {
7334
7281
  inputsRef.current[0]?.focus();
7335
7282
  }, 0);
@@ -7441,10 +7388,9 @@ var import_jsx_runtime27 = require("react/jsx-runtime");
7441
7388
  function VerifyStep(props) {
7442
7389
  const { pendingLoginResponseRef, goBackToSignIn, onAuthSuccess } = props;
7443
7390
  const { callbacks } = useLumiaPassportConfig();
7444
- const setPage = useLayoutDataStore((st) => st.setPage);
7391
+ const recoveryUserId = useLumiaPassportSession((st) => st.recoveryUserId);
7445
7392
  const isSessionLoading = useLumiaPassportSession((st) => st.isLoading);
7446
7393
  const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
7447
- const recoveryUserId = useLumiaPassportSession((st) => st.recoveryUserId);
7448
7394
  const {
7449
7395
  email,
7450
7396
  expiresIn,
@@ -7454,7 +7400,7 @@ function VerifyStep(props) {
7454
7400
  setExpiresIn,
7455
7401
  setAlert
7456
7402
  } = useAuthStore();
7457
- const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0, import_react_query10.useMutation)({
7403
+ const { mutate: onVerifyCode, isPending: isCodeVerifying } = (0, import_react_query9.useMutation)({
7458
7404
  mutationFn: async (code) => {
7459
7405
  setIsLoading(true);
7460
7406
  setAlert(null);
@@ -7489,14 +7435,13 @@ function VerifyStep(props) {
7489
7435
  const storage = typeof window !== "undefined" ? window.localStorage : void 0;
7490
7436
  const localKeyshare = storage?.getItem(`tss.${loginResponse.userId}.keyshare`);
7491
7437
  const needsRecovery = loginResponse.hasKeyshare && !loginResponse.isNewUser && !localKeyshare;
7492
- await onAuthSuccess?.();
7493
- console.log("[AuthModal] Authentication successful, closing modal");
7494
7438
  if (!recoveryUserId && !needsRecovery) {
7495
7439
  setStep("signin");
7496
7440
  setEmail("");
7497
7441
  setAlert(null);
7498
- setPage(null);
7499
7442
  }
7443
+ await onAuthSuccess?.();
7444
+ console.log("[AuthModal] Authentication successful");
7500
7445
  setIsLoading(false);
7501
7446
  },
7502
7447
  onError: (error) => {
@@ -7521,7 +7466,7 @@ function VerifyStep(props) {
7521
7466
  setIsLoading(false);
7522
7467
  }
7523
7468
  });
7524
- const { mutate: onResendCode, isPending: isCodeResending } = (0, import_react_query10.useMutation)({
7469
+ const { mutate: onResendCode, isPending: isCodeResending } = (0, import_react_query9.useMutation)({
7525
7470
  mutationFn: async () => {
7526
7471
  setAlert(null);
7527
7472
  setIsLoading(true);
@@ -7607,9 +7552,9 @@ var AuthMenu = () => {
7607
7552
  const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
7608
7553
  const { step, alert: alert2, setStep, setPasskeyStatus, setEmail, setAlert } = useAuthStore();
7609
7554
  const { pendingLoginResponseRef, onAuthSuccess, goBackToSignIn } = useAuthMenuHandlers();
7610
- const [isAlertShowReady, setIsAlertShowReady] = (0, import_react21.useState)(false);
7611
- const readyTimeout = (0, import_react21.useRef)(null);
7612
- (0, import_react21.useEffect)(() => {
7555
+ const [isAlertShowReady, setIsAlertShowReady] = (0, import_react19.useState)(false);
7556
+ const readyTimeout = (0, import_react19.useRef)(null);
7557
+ (0, import_react19.useEffect)(() => {
7613
7558
  if (readyTimeout.current) {
7614
7559
  clearTimeout(readyTimeout.current);
7615
7560
  readyTimeout.current = null;
@@ -7617,7 +7562,7 @@ var AuthMenu = () => {
7617
7562
  setIsAlertShowReady(false);
7618
7563
  readyTimeout.current = setTimeout(() => setIsAlertShowReady(true), 750);
7619
7564
  }, [step]);
7620
- (0, import_react21.useEffect)(() => {
7565
+ (0, import_react19.useEffect)(() => {
7621
7566
  setMainPageHeight(DEFAULT_AUTH_MENU_HEIGHT);
7622
7567
  return () => {
7623
7568
  setStep("signin");
@@ -7633,7 +7578,7 @@ var AuthMenu = () => {
7633
7578
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Initializing wallet..." })
7634
7579
  ] });
7635
7580
  }
7636
- const stepContent = (0, import_react21.useMemo)(
7581
+ const stepContent = (0, import_react19.useMemo)(
7637
7582
  () => ({
7638
7583
  "failed": /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(AuthFailedStep, {}),
7639
7584
  "verify": /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -7644,20 +7589,8 @@ var AuthMenu = () => {
7644
7589
  onAuthSuccess
7645
7590
  }
7646
7591
  ),
7647
- "signin": /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
7648
- SignInStep,
7649
- {
7650
- pendingLoginResponseRef,
7651
- onAuthSuccess
7652
- }
7653
- ),
7654
- "signin-passkey": /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
7655
- PassKeyStep,
7656
- {
7657
- pendingLoginResponseRef,
7658
- onAuthSuccess
7659
- }
7660
- )
7592
+ "signin": /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SignInStep, { pendingLoginResponseRef, onAuthSuccess }),
7593
+ "signin-passkey": /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(PassKeyStep, { pendingLoginResponseRef, onAuthSuccess })
7661
7594
  }),
7662
7595
  [onAuthSuccess, goBackToSignIn]
7663
7596
  );
@@ -7786,9 +7719,9 @@ function RampnowIcon() {
7786
7719
  }
7787
7720
 
7788
7721
  // src/internal/components/BuyMenu/binance/Binance.tsx
7789
- var import_react_query11 = require("@tanstack/react-query");
7722
+ var import_react_query10 = require("@tanstack/react-query");
7790
7723
  var import_lucide_react15 = require("lucide-react");
7791
- var import_react23 = require("react");
7724
+ var import_react21 = require("react");
7792
7725
 
7793
7726
  // src/internal/components/BuyMenu/components/PaymentSelector.tsx
7794
7727
  var import_jsx_runtime31 = require("react/jsx-runtime");
@@ -7885,7 +7818,7 @@ async function createPreorderMutation(payload) {
7885
7818
  }
7886
7819
 
7887
7820
  // src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
7888
- var import_react22 = require("react");
7821
+ var import_react20 = require("react");
7889
7822
 
7890
7823
  // src/internal/components/BuyMenu/binance/utils.ts
7891
7824
  function getPayMethodID(pm) {
@@ -7905,7 +7838,7 @@ function handleErrors(errors) {
7905
7838
  // src/internal/components/BuyMenu/binance/useQueriesErrorHandler.ts
7906
7839
  var useQueriesErrorHandler = (errors, stateUpdater) => {
7907
7840
  const { error: errorTitle, message: errorMessage } = handleErrors(errors);
7908
- (0, import_react22.useEffect)(() => {
7841
+ (0, import_react20.useEffect)(() => {
7909
7842
  if (!errorTitle && !errorMessage) return;
7910
7843
  console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
7911
7844
  stateUpdater(1);
@@ -7930,12 +7863,12 @@ function Binance(props) {
7930
7863
  setMinAmount,
7931
7864
  setSrcInputAmount
7932
7865
  } = control;
7933
- const qc = (0, import_react_query11.useQueryClient)();
7866
+ const qc = (0, import_react_query10.useQueryClient)();
7934
7867
  const {
7935
7868
  data: lumiaNetwork,
7936
7869
  isLoading: isLumiaNetworkLoading,
7937
7870
  error: lumiaNetworkError
7938
- } = (0, import_react_query11.useQuery)({
7871
+ } = (0, import_react_query10.useQuery)({
7939
7872
  retry: false,
7940
7873
  enabled: !!walletAddress,
7941
7874
  queryKey: [QUERY_KEYS3.binanceNetworksQuery, walletAddress],
@@ -7946,27 +7879,27 @@ function Binance(props) {
7946
7879
  data: paymentModes = null,
7947
7880
  isLoading: isPaymentModesLoading,
7948
7881
  error: paymentMethodsError
7949
- } = (0, import_react_query11.useQuery)({
7882
+ } = (0, import_react_query10.useQuery)({
7950
7883
  retry: false,
7951
7884
  enabled: !!isLumiaAvailable && !!walletAddress,
7952
7885
  // && srcQueryAmount > 0,
7953
7886
  queryKey: [QUERY_KEYS3.binancePaymentModes, walletAddress, isLumiaAvailable, srcQueryAmount],
7954
7887
  queryFn: async () => getPaymentMethodsQuery({ totalAmount: String(srcQueryAmount || 1) })
7955
7888
  });
7956
- const lastLoadedPaymentModes = (0, import_react23.useRef)([]);
7957
- (0, import_react23.useEffect)(() => {
7889
+ const lastLoadedPaymentModes = (0, import_react21.useRef)([]);
7890
+ (0, import_react21.useEffect)(() => {
7958
7891
  if (!paymentModes?.length) return;
7959
7892
  setPaymentMode(getPayMethodID(paymentModes[0]));
7960
7893
  lastLoadedPaymentModes.current = paymentModes;
7961
7894
  }, [paymentModes]);
7962
7895
  const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
7963
7896
  const minimum = Number(selectedPaymentMode?.fiatMinLimit || "0");
7964
- (0, import_react23.useEffect)(() => setMinAmount(minimum), [minimum]);
7897
+ (0, import_react21.useEffect)(() => setMinAmount(minimum), [minimum]);
7965
7898
  const {
7966
7899
  data: quoteData = null,
7967
7900
  isLoading: isQuoteDataLoading,
7968
7901
  error: quoteError
7969
- } = (0, import_react_query11.useQuery)({
7902
+ } = (0, import_react_query10.useQuery)({
7970
7903
  retry: false,
7971
7904
  enabled: !!walletAddress && srcQueryAmount > 0 && minimum > 0 && srcQueryAmount >= minimum,
7972
7905
  queryKey: [QUERY_KEYS3.binanceQuote, walletAddress, selectedPaymentMode, srcQueryAmount],
@@ -7982,7 +7915,7 @@ function Binance(props) {
7982
7915
  [lumiaNetworkError, paymentMethodsError, quoteError],
7983
7916
  setSrcInputAmount
7984
7917
  );
7985
- const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query11.useMutation)({
7918
+ const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query10.useMutation)({
7986
7919
  mutationFn: async () => {
7987
7920
  setRedirecting(true);
7988
7921
  const returnUrl = window.location.href.split("?")[0];
@@ -8006,7 +7939,7 @@ function Binance(props) {
8006
7939
  setRedirecting(false);
8007
7940
  }
8008
7941
  });
8009
- (0, import_react23.useEffect)(() => {
7942
+ (0, import_react21.useEffect)(() => {
8010
7943
  return () => {
8011
7944
  qc.resetQueries({ queryKey: [QUERY_KEYS3.binanceNetworksQuery] });
8012
7945
  qc.resetQueries({ queryKey: [QUERY_KEYS3.binancePaymentModes] });
@@ -8068,9 +8001,9 @@ function Binance(props) {
8068
8001
  }
8069
8002
 
8070
8003
  // src/internal/components/BuyMenu/rampnow/Rampnow.tsx
8071
- var import_react_query12 = require("@tanstack/react-query");
8004
+ var import_react_query11 = require("@tanstack/react-query");
8072
8005
  var import_lucide_react16 = require("lucide-react");
8073
- var import_react24 = require("react");
8006
+ var import_react22 = require("react");
8074
8007
 
8075
8008
  // src/internal/components/BuyMenu/rampnow/api.ts
8076
8009
  init_iframe_manager();
@@ -8134,8 +8067,8 @@ function Rampnow(props) {
8134
8067
  setSrcInputAmount,
8135
8068
  setMinAmount
8136
8069
  } = control;
8137
- const qc = (0, import_react_query12.useQueryClient)();
8138
- (0, import_react24.useEffect)(() => {
8070
+ const qc = (0, import_react_query11.useQueryClient)();
8071
+ (0, import_react22.useEffect)(() => {
8139
8072
  setMinAmount(MINIMUM_RAMP_AMOUNT);
8140
8073
  setPaymentMode(PAYMENT_MODES[0].id);
8141
8074
  }, []);
@@ -8143,7 +8076,7 @@ function Rampnow(props) {
8143
8076
  data: configData,
8144
8077
  isLoading: isConfigLoading,
8145
8078
  error: configError
8146
- } = (0, import_react_query12.useQuery)({
8079
+ } = (0, import_react_query11.useQuery)({
8147
8080
  retry: false,
8148
8081
  enabled: !!walletAddress,
8149
8082
  queryKey: [QUERY_KEYS3.getRampNowConfig, walletAddress],
@@ -8153,7 +8086,7 @@ function Rampnow(props) {
8153
8086
  data: quoteData,
8154
8087
  isLoading: isQuoteDataLoading,
8155
8088
  error: quoteError
8156
- } = (0, import_react_query12.useQuery)({
8089
+ } = (0, import_react_query11.useQuery)({
8157
8090
  retry: false,
8158
8091
  enabled: !!configData && !!walletAddress && !!paymentMode && srcQueryAmount >= MINIMUM_RAMP_AMOUNT,
8159
8092
  queryKey: [QUERY_KEYS3.getRampNowQuote, walletAddress, srcQueryAmount, paymentMode],
@@ -8163,7 +8096,7 @@ function Rampnow(props) {
8163
8096
  paymentMode
8164
8097
  })
8165
8098
  });
8166
- const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query12.useMutation)({
8099
+ const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = (0, import_react_query11.useMutation)({
8167
8100
  mutationFn: async () => {
8168
8101
  if (!configData?.apiKey?.length || !configData?.orderUrl?.length) {
8169
8102
  throw new Error("RampNow order service is not available");
@@ -8192,7 +8125,7 @@ function Rampnow(props) {
8192
8125
  console.error("Create CheckoutOrder failed:", err);
8193
8126
  }
8194
8127
  });
8195
- (0, import_react24.useEffect)(() => {
8128
+ (0, import_react22.useEffect)(() => {
8196
8129
  return () => {
8197
8130
  qc.resetQueries({ queryKey: [QUERY_KEYS3.getRampNowConfig] });
8198
8131
  qc.resetQueries({ queryKey: [QUERY_KEYS3.getRampNowQuote] });
@@ -8274,7 +8207,7 @@ var RAMP_PROVIDERS = {
8274
8207
  var REDIRECT_TIMEOUT_MS = 1500;
8275
8208
 
8276
8209
  // src/internal/components/BuyMenu/useSelectables.ts
8277
- var import_react25 = require("react");
8210
+ var import_react23 = require("react");
8278
8211
 
8279
8212
  // src/internal/utils/debounce.ts
8280
8213
  function debounce2(func, waitFor) {
@@ -8288,14 +8221,14 @@ function debounce2(func, waitFor) {
8288
8221
  // src/internal/components/BuyMenu/useSelectables.ts
8289
8222
  var ON_INPUT_QUERY_DELAY = 2e3;
8290
8223
  var useSelectables = () => {
8291
- const [redirecting, setRedirecting] = (0, import_react25.useState)(false);
8292
- const [rampProvider, setrRampProvider] = (0, import_react25.useState)("binance");
8293
- const [minAmount, setMinAmount] = (0, import_react25.useState)(0);
8294
- const inputRef = (0, import_react25.useRef)(null);
8295
- const [srcQueryAmount, setSrcQueryAmount] = (0, import_react25.useState)(0);
8296
- const [srcInputAmount, setSrcInputAmount] = (0, import_react25.useState)(0);
8297
- const [paymentMode, setPaymentMode] = (0, import_react25.useState)(null);
8298
- const setQueryAmountDebounced = (0, import_react25.useCallback)(
8224
+ const [redirecting, setRedirecting] = (0, import_react23.useState)(false);
8225
+ const [rampProvider, setrRampProvider] = (0, import_react23.useState)("binance");
8226
+ const [minAmount, setMinAmount] = (0, import_react23.useState)(0);
8227
+ const inputRef = (0, import_react23.useRef)(null);
8228
+ const [srcQueryAmount, setSrcQueryAmount] = (0, import_react23.useState)(0);
8229
+ const [srcInputAmount, setSrcInputAmount] = (0, import_react23.useState)(0);
8230
+ const [paymentMode, setPaymentMode] = (0, import_react23.useState)(null);
8231
+ const setQueryAmountDebounced = (0, import_react23.useCallback)(
8299
8232
  debounce2((inputAmount) => {
8300
8233
  const checkedValue = Math.max(inputAmount, minAmount);
8301
8234
  setSrcInputAmount(checkedValue);
@@ -8303,7 +8236,7 @@ var useSelectables = () => {
8303
8236
  }, ON_INPUT_QUERY_DELAY),
8304
8237
  [minAmount]
8305
8238
  );
8306
- (0, import_react25.useEffect)(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
8239
+ (0, import_react23.useEffect)(() => setQueryAmountDebounced(srcInputAmount), [srcInputAmount, setQueryAmountDebounced]);
8307
8240
  return {
8308
8241
  inputRef,
8309
8242
  redirecting,
@@ -8365,19 +8298,75 @@ function BuyMenu() {
8365
8298
  }
8366
8299
 
8367
8300
  // src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
8368
- var import_react_query18 = require("@tanstack/react-query");
8301
+ var import_react_query16 = require("@tanstack/react-query");
8369
8302
  var import_lucide_react25 = require("lucide-react");
8370
- var import_react35 = require("react");
8303
+ var import_react32 = require("react");
8371
8304
  init_vaultClient();
8372
8305
 
8306
+ // src/internal/components/ui/switch.tsx
8307
+ var import_react24 = require("react");
8308
+ var import_jsx_runtime36 = require("react/jsx-runtime");
8309
+ var Switch = (0, import_react24.forwardRef)((props, ref) => {
8310
+ const { className, labels, ...inputProps } = props;
8311
+ const colorMode = useLayoutStore((st) => st.colorMode);
8312
+ const [labelW, setLabelW] = (0, import_react24.useState)(0);
8313
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
8314
+ "div",
8315
+ {
8316
+ role: "switch",
8317
+ "aria-checked": inputProps.checked,
8318
+ className: cn(
8319
+ "block rounded-full w-fit h-5 px-[2px] outline-none flex-none",
8320
+ inputProps.checked ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-info)]",
8321
+ className
8322
+ ),
8323
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
8324
+ "label",
8325
+ {
8326
+ className: "relative inline-block h-4 outline-none",
8327
+ style: {
8328
+ width: `calc(16px + ${labelW}px)`,
8329
+ transition: "width 200ms ease",
8330
+ cursor: inputProps.disabled ? "not-allowed" : "pointer"
8331
+ },
8332
+ children: [
8333
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("input", { type: "checkbox", className: "hidden sr-only peer outline-none", ref, ...inputProps }),
8334
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
8335
+ "span",
8336
+ {
8337
+ ref: (inst) => {
8338
+ if (inst) setLabelW(inst.clientWidth);
8339
+ },
8340
+ style: {
8341
+ left: inputProps.checked ? "0px" : "16px",
8342
+ color: inputProps.checked ? colorMode === "dark" ? "var(--l-pass-fg-inverted)" : "var(--l-pass-fg)" : "var(--l-pass-fg)",
8343
+ transition: "left 200ms ease"
8344
+ },
8345
+ className: "absolute top-0 px-2 text-[10px] leading-4 font-semibold min-w-4 select-none",
8346
+ children: inputProps.checked ? labels?.checked : labels?.unchecked
8347
+ }
8348
+ ),
8349
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
8350
+ "span",
8351
+ {
8352
+ style: {
8353
+ left: inputProps.checked ? `${labelW}px` : "0px",
8354
+ transition: "left 200ms ease"
8355
+ },
8356
+ className: "absolute top-0 w-4 h-4 rounded-full bg-[var(--l-pass-fg)]"
8357
+ }
8358
+ )
8359
+ ]
8360
+ }
8361
+ )
8362
+ }
8363
+ );
8364
+ });
8365
+ Switch.displayName = "Switch";
8366
+
8373
8367
  // src/internal/components/KeyshareRestoreMenu/components/MethodSelector.tsx
8374
8368
  var import_lucide_react18 = require("lucide-react");
8375
- var import_react30 = require("react");
8376
-
8377
- // src/internal/components/KeyshareRestoreMenu/hooks/useCheckBackupAvailability.ts
8378
- var import_react_query13 = require("@tanstack/react-query");
8379
- var import_react26 = require("react");
8380
- init_vaultClient();
8369
+ var import_react28 = require("react");
8381
8370
 
8382
8371
  // src/internal/components/KeyshareRestoreMenu/hooks/useRestoreStore.ts
8383
8372
  var import_zustand4 = require("zustand");
@@ -8406,54 +8395,15 @@ var useRestoreStore = (0, import_zustand4.create)((set) => ({
8406
8395
  setSuccess: (success) => set({ success })
8407
8396
  }));
8408
8397
 
8409
- // src/internal/components/KeyshareRestoreMenu/hooks/useCheckBackupAvailability.ts
8410
- function useCheckBackupAvailability() {
8411
- const qc = (0, import_react_query13.useQueryClient)();
8412
- const address = useLumiaPassportSession((st) => st.address);
8413
- const { setError, setHasServerBackup, setCheckingBackup } = useRestoreStore();
8414
- const {
8415
- data: serverRecoveryData,
8416
- isLoading: isRecoveryLoading,
8417
- error: recoveryError
8418
- } = (0, import_react_query13.useQuery)({
8419
- retry: false,
8420
- queryKey: [CHECK_BACKUP_QUERY_KEY, address],
8421
- queryFn: async () => await getShareRecoveryStats()
8422
- });
8423
- (0, import_react26.useEffect)(() => {
8424
- qc.invalidateQueries({ queryKey: [CHECK_BACKUP_QUERY_KEY] });
8425
- }, [qc]);
8426
- (0, import_react26.useEffect)(() => {
8427
- setCheckingBackup(isRecoveryLoading);
8428
- if (!!isRecoveryLoading) return;
8429
- if (!!recoveryError) {
8430
- console.warn("[KeyshareRestoreMenu] Failed to check backup availability:", recoveryError);
8431
- setError("Failed to check backup availability");
8432
- setHasServerBackup(false);
8433
- setCheckingBackup(false);
8434
- return;
8435
- }
8436
- const hasRecoveryData = serverRecoveryData?.created || serverRecoveryData?.devices?.length > 0;
8437
- setHasServerBackup(!!hasRecoveryData);
8438
- setCheckingBackup(false);
8439
- }, [serverRecoveryData, recoveryError, isRecoveryLoading]);
8440
- return {
8441
- serverRecoveryData,
8442
- isRecoveryLoading,
8443
- recoveryError,
8444
- hasRecoveryData: serverRecoveryData?.created || serverRecoveryData?.devices?.length > 0
8445
- };
8446
- }
8447
-
8448
8398
  // src/internal/components/KeyshareRestoreMenu/hooks/useOnRestoreSuccess.ts
8449
- var import_react27 = require("react");
8399
+ var import_react25 = require("react");
8450
8400
  function useOnRestoreSuccess() {
8451
8401
  const { config, callbacks } = useLumiaPassportConfig();
8452
8402
  const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
8453
8403
  const setPage = useLayoutDataStore((st) => st.setPage);
8454
8404
  const { usePaymaster, recoveryUserId, setRecoveryUserId, setSession, setAddress, setStatus } = useLumiaPassportSession();
8455
8405
  const { setError, setSuccess } = useRestoreStore();
8456
- const createSessionWithKeyshare = (0, import_react27.useCallback)(
8406
+ const createSessionWithKeyshare = (0, import_react25.useCallback)(
8457
8407
  async (userId, hasServerKeyshare, isNewUser) => {
8458
8408
  try {
8459
8409
  try {
@@ -8487,21 +8437,16 @@ function useOnRestoreSuccess() {
8487
8437
  },
8488
8438
  [setStatus, callbacks, usePaymaster]
8489
8439
  );
8490
- const onRestoreSuccess = (0, import_react27.useCallback)(async () => {
8440
+ const onRestoreSuccess = (0, import_react25.useCallback)(async () => {
8491
8441
  const { verifyToken: verifyToken2, jwtTokenManager: jwtTokenManager4 } = await Promise.resolve().then(() => (init_auth(), auth_exports));
8492
8442
  const verify = await verifyToken2();
8493
8443
  const hasServerKeyshare = verify?.hasKeyshare ?? jwtTokenManager4.getHasKeyshare() ?? false;
8494
8444
  if (recoveryUserId) {
8495
8445
  try {
8496
8446
  const { session: sess, address: addr } = await createSessionWithKeyshare(recoveryUserId, hasServerKeyshare);
8497
- setSession(sess);
8498
- setAddress(addr);
8499
- setStatus("ready");
8500
8447
  setRecoveryUserId(null);
8501
8448
  setSuccess(null);
8502
8449
  setError(null);
8503
- setIsDialogForced(false);
8504
- setPage("main-menu" /* MAIN_MENU */);
8505
8450
  try {
8506
8451
  callbacks?.onLumiaPassportConnect?.({
8507
8452
  address: addr,
@@ -8533,11 +8478,17 @@ function useOnRestoreSuccess() {
8533
8478
  } catch (e) {
8534
8479
  console.warn("[UI-KIT] Failed to update backup status:", e);
8535
8480
  }
8481
+ setSession(sess);
8482
+ setAddress(addr);
8483
+ setStatus("ready");
8484
+ setPage("main-menu" /* MAIN_MENU */);
8485
+ setTimeout(() => {
8486
+ setIsDialogForced(false);
8487
+ }, 375);
8536
8488
  } catch (err) {
8537
8489
  setSuccess(null);
8538
8490
  setError(err?.message || String(err));
8539
8491
  setStatus("error");
8540
- setIsDialogForced(false);
8541
8492
  }
8542
8493
  }
8543
8494
  }, [
@@ -8555,17 +8506,17 @@ function useOnRestoreSuccess() {
8555
8506
  }
8556
8507
 
8557
8508
  // src/internal/components/KeyshareRestoreMenu/hooks/useCreateBackup.ts
8558
- var import_react_query14 = require("@tanstack/react-query");
8559
- var import_react28 = require("react");
8509
+ var import_react_query12 = require("@tanstack/react-query");
8510
+ var import_react26 = require("react");
8560
8511
  init_iframe_manager();
8561
8512
  function useCreateBackup() {
8562
- const qc = (0, import_react_query14.useQueryClient)();
8513
+ const qc = (0, import_react_query12.useQueryClient)();
8563
8514
  const session = useLumiaPassportSession((st) => st.session);
8564
8515
  const address = useLumiaPassportSession((st) => st.address);
8565
8516
  const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
8566
8517
  const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
8567
8518
  const { usePasskey, restorePassword, selectedCloudProvider, setSuccess, setError, setMethod } = useRestoreStore();
8568
- (0, import_react28.useEffect)(() => {
8519
+ (0, import_react26.useEffect)(() => {
8569
8520
  if (!hasServerVault) {
8570
8521
  setMethod("server");
8571
8522
  setIsDialogForced(true);
@@ -8573,7 +8524,7 @@ function useCreateBackup() {
8573
8524
  }, [hasServerVault, setIsDialogForced, setMethod]);
8574
8525
  const passportUserId = session?.mpcUserId || "";
8575
8526
  const onBackupSuccess = () => console.log("[ConnectWalletButton] Backup created successfully");
8576
- const { mutate: createPasswordBackup, isPending: isPasswordBackupCreating } = (0, import_react_query14.useMutation)({
8527
+ const { mutate: createPasswordBackup, isPending: isPasswordBackupCreating } = (0, import_react_query12.useMutation)({
8577
8528
  mutationFn: async () => {
8578
8529
  const iframeManager = getIframeManager();
8579
8530
  if (!iframeManager) {
@@ -8604,13 +8555,14 @@ function useCreateBackup() {
8604
8555
  } else {
8605
8556
  setError(response.error || "Server backup failed");
8606
8557
  }
8558
+ setIsDialogForced(false);
8607
8559
  },
8608
8560
  onError: async (error) => {
8609
8561
  setError(error?.message || "Backup creation failed");
8610
8562
  qc.invalidateQueries({ queryKey: [CHECK_BACKUP_QUERY_KEY, address] });
8611
8563
  }
8612
8564
  });
8613
- const { mutate: createLocalBackup, isPending: isLocalBackupCreating } = (0, import_react_query14.useMutation)({
8565
+ const { mutate: createLocalBackup, isPending: isLocalBackupCreating } = (0, import_react_query12.useMutation)({
8614
8566
  mutationFn: async () => {
8615
8567
  const iframeManager = getIframeManager();
8616
8568
  if (!usePasskey && !restorePassword) {
@@ -8644,7 +8596,7 @@ function useCreateBackup() {
8644
8596
  qc.invalidateQueries({ queryKey: [CHECK_BACKUP_QUERY_KEY, address] });
8645
8597
  }
8646
8598
  });
8647
- const { mutate: createCloudBackup, isPending: isCloudBackupCreating } = (0, import_react_query14.useMutation)({
8599
+ const { mutate: createCloudBackup, isPending: isCloudBackupCreating } = (0, import_react_query12.useMutation)({
8648
8600
  mutationFn: async () => {
8649
8601
  const iframeManager = getIframeManager();
8650
8602
  const encryptedData = await iframeManager.encryptBackupData(passportUserId);
@@ -8695,7 +8647,7 @@ function useCreateBackup() {
8695
8647
  }
8696
8648
 
8697
8649
  // src/internal/components/KeyshareRestoreMenu/hooks/useRestoreAccount.ts
8698
- var import_react_query15 = require("@tanstack/react-query");
8650
+ var import_react_query13 = require("@tanstack/react-query");
8699
8651
  function useRestoreAccount() {
8700
8652
  const recoveryUserId = useLumiaPassportSession((st) => st.recoveryUserId);
8701
8653
  const {
@@ -8709,7 +8661,7 @@ function useRestoreAccount() {
8709
8661
  setRestoreFile
8710
8662
  } = useRestoreStore();
8711
8663
  const { onRestoreSuccess } = useOnRestoreSuccess();
8712
- const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0, import_react_query15.useMutation)({
8664
+ const { mutate: restoreFromServer2, isPending: isRestoringFromServer } = (0, import_react_query13.useMutation)({
8713
8665
  mutationFn: async () => {
8714
8666
  setError(null);
8715
8667
  setSuccess(null);
@@ -8739,18 +8691,16 @@ function useRestoreAccount() {
8739
8691
  onRestoreSuccess();
8740
8692
  } else {
8741
8693
  console.error("[KeyshareRestoreMenu] Server restore failed:", response.error);
8742
- setMethod(null);
8743
8694
  setError(response.error || "Server restore failed");
8744
8695
  }
8745
8696
  },
8746
8697
  onError: async (err) => {
8747
8698
  console.error("[KeyshareRestoreMenu] Server restore exception:", err);
8748
8699
  const errorMsg = err instanceof Error ? err.message : "Server restore failed";
8749
- setMethod(null);
8750
8700
  setError(errorMsg);
8751
8701
  }
8752
8702
  });
8753
- const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0, import_react_query15.useMutation)({
8703
+ const { mutate: restoreFromFile, isPending: isRestoringFromFile } = (0, import_react_query13.useMutation)({
8754
8704
  mutationFn: async () => {
8755
8705
  if (!restoreFile) {
8756
8706
  throw new Error("Please select a backup file");
@@ -8776,17 +8726,15 @@ function useRestoreAccount() {
8776
8726
  setMethod(null);
8777
8727
  onRestoreSuccess();
8778
8728
  } else {
8779
- setMethod(null);
8780
8729
  setError(response.error || "File restore failed");
8781
8730
  }
8782
8731
  },
8783
8732
  onError: async (err) => {
8784
8733
  const errorMsg = err instanceof Error ? err.message : "Restore failed";
8785
- setMethod(null);
8786
8734
  setError(errorMsg);
8787
8735
  }
8788
8736
  });
8789
- const { mutate: restoreFromCloud, isPending: isRestoringFromCloud } = (0, import_react_query15.useMutation)({
8737
+ const { mutate: restoreFromCloud, isPending: isRestoringFromCloud } = (0, import_react_query13.useMutation)({
8790
8738
  mutationFn: async () => {
8791
8739
  alert("Cloud restore not implemented yet");
8792
8740
  return null;
@@ -8807,7 +8755,7 @@ function useRestoreAccount() {
8807
8755
  }
8808
8756
 
8809
8757
  // src/internal/components/KeyshareRestoreMenu/hooks/useValidateFileBackup.ts
8810
- var import_react29 = require("react");
8758
+ var import_react27 = require("react");
8811
8759
  function validateRestoreFileFormat(parsedData) {
8812
8760
  if (typeof parsedData !== "object" || parsedData === null) return false;
8813
8761
  const data = parsedData;
@@ -8817,7 +8765,7 @@ function useValidateFileBackup() {
8817
8765
  const restoreFile = useRestoreStore((st) => st.restoreFile);
8818
8766
  const setError = useRestoreStore((st) => st.setError);
8819
8767
  const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
8820
- (0, import_react29.useEffect)(() => {
8768
+ (0, import_react27.useEffect)(() => {
8821
8769
  if (!restoreFile) {
8822
8770
  return;
8823
8771
  }
@@ -8840,9 +8788,9 @@ function useValidateFileBackup() {
8840
8788
  }
8841
8789
 
8842
8790
  // src/internal/components/KeyshareRestoreMenu/components/MethodSelector.tsx
8843
- var import_jsx_runtime36 = require("react/jsx-runtime");
8791
+ var import_jsx_runtime37 = require("react/jsx-runtime");
8844
8792
  var getRecoveryRenderMethods = (mode) => [
8845
- { method: "server", label: "Password", Icon: OtpIcon },
8793
+ // { method: 'server', label: 'Password', Icon: OtpIcon },
8846
8794
  { method: "file", label: "Local File", Icon: mode === "restore" ? import_lucide_react18.FileUp : import_lucide_react18.FileDown },
8847
8795
  { method: "cloud", label: "Cloud", Icon: import_lucide_react18.Cloud, disabled: true }
8848
8796
  ];
@@ -8857,7 +8805,7 @@ function MethodSelector(props) {
8857
8805
  setError,
8858
8806
  setSuccess
8859
8807
  } = useRestoreStore();
8860
- const recoveryRenderMethods = (0, import_react30.useMemo)(() => {
8808
+ const recoveryRenderMethods = (0, import_react28.useMemo)(() => {
8861
8809
  const methodsWithBackupData = getRecoveryRenderMethods(mode).map((mt) => {
8862
8810
  let data = null;
8863
8811
  switch (true) {
@@ -8872,42 +8820,39 @@ function MethodSelector(props) {
8872
8820
  return methodsWithBackupData;
8873
8821
  }, [mode, serverRecoveryStatus]);
8874
8822
  if (!!selectedRecoveryMethod) return null;
8875
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_react30.Fragment, { children: [
8876
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "block w-full text-xs font-semibold text-center leading-8 text-[var(--l-pass-fg-muted)]", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "leading-8", children: mode === "restore" ? "Choose restore method" : "Create or Update Backup via" }) }),
8877
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
8878
- "div",
8879
- {
8880
- style: { gridTemplateColumns: `repeat(${recoveryRenderMethods.length}, minmax(0, 1fr))` },
8881
- className: "w-full grid gap-[var(--l-pass-gap)]",
8882
- children: recoveryRenderMethods.map(({ method: recoveryMethod, label, Icon: Icon2, data, disabled }) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "w-full h-full flex flex-col items-center gap-[var(--l-pass-gap)]", children: [
8883
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
8884
- Button,
8885
- {
8886
- size: "icon",
8887
- variant: "outline",
8888
- type: "button",
8889
- disabled,
8890
- style: { height: "unset", maxWidth: "96px" },
8891
- className: "relative w-full aspect-square h-unset rounded-[var(--l-pass-el-bdrs)]",
8892
- onClick: () => {
8893
- setRestorePassword("");
8894
- setRestoreFile(null);
8895
- setShowPassword(false);
8896
- setError(null);
8897
- setSuccess(null);
8898
- setMethod(recoveryMethod);
8899
- },
8900
- children: [
8901
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Icon2, { className: "w-5 h-5 md:w-8 md:h-8" }),
8902
- !!data?.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "w-6 h-6 absolute -top-2 -right-2 flex items-center justify-center bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(PositiveIcon, { className: "w-4 h-4" }) })
8903
- ]
8904
- }
8905
- ),
8906
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-xs font-bold leading-4", children: label })
8907
- ] }, recoveryMethod))
8908
- }
8909
- )
8910
- ] });
8823
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_react28.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8824
+ "div",
8825
+ {
8826
+ style: { gridTemplateColumns: `repeat(${recoveryRenderMethods.length}, minmax(0, 1fr))` },
8827
+ className: "w-full max-w-[256px] grid gap-[var(--l-pass-gap)] mx-auto py-[var(--l-pass-pd)]",
8828
+ children: recoveryRenderMethods.map(({ method: recoveryMethod, label, Icon: Icon2, data, disabled }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-full h-full flex flex-col items-center gap-[var(--l-pass-gap)]", children: [
8829
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8830
+ Button,
8831
+ {
8832
+ size: "icon",
8833
+ variant: "outline",
8834
+ type: "button",
8835
+ disabled,
8836
+ style: { height: "unset", maxWidth: "96px" },
8837
+ className: "relative w-full aspect-square h-unset rounded-[var(--l-pass-el-bdrs)]",
8838
+ onClick: () => {
8839
+ setRestorePassword("");
8840
+ setRestoreFile(null);
8841
+ setShowPassword(false);
8842
+ setError(null);
8843
+ setSuccess(null);
8844
+ setMethod(recoveryMethod);
8845
+ },
8846
+ children: [
8847
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Icon2, { className: "w-5 h-5 md:w-8 md:h-8" }),
8848
+ !!data?.lastBackup && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "w-6 h-6 absolute -top-2 -right-2 flex items-center justify-center bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(PositiveIcon, { className: "w-4 h-4" }) })
8849
+ ]
8850
+ }
8851
+ ),
8852
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-xs font-bold leading-4", children: label })
8853
+ ] }, recoveryMethod))
8854
+ }
8855
+ ) });
8911
8856
  }
8912
8857
 
8913
8858
  // src/internal/components/KeyshareRestoreMenu/components/NoBackupFound.tsx
@@ -8915,8 +8860,8 @@ var import_lucide_react20 = require("lucide-react");
8915
8860
 
8916
8861
  // src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
8917
8862
  var import_lucide_react19 = require("lucide-react");
8918
- var import_react31 = require("react");
8919
- var import_jsx_runtime37 = require("react/jsx-runtime");
8863
+ var import_react29 = require("react");
8864
+ var import_jsx_runtime38 = require("react/jsx-runtime");
8920
8865
  function PasswordPasskey(props) {
8921
8866
  const {
8922
8867
  mode = "restore",
@@ -8928,16 +8873,63 @@ function PasswordPasskey(props) {
8928
8873
  actionHandler
8929
8874
  } = props;
8930
8875
  const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
8931
- const actionRef = (0, import_react31.useRef)(null);
8932
- const { showPassword, restorePassword, usePasskey, error, setRestorePassword, setShowPassword } = useRestoreStore();
8933
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
8934
- !hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "block w-full text-[10px] leading-4 px-[var(--l-pass-pd)] truncate", children: [
8876
+ const actionRef = (0, import_react29.useRef)(null);
8877
+ const {
8878
+ showPassword,
8879
+ restorePassword,
8880
+ usePasskey,
8881
+ error,
8882
+ setRestorePassword,
8883
+ setShowPassword,
8884
+ setUsePasskey,
8885
+ setRestoreFile
8886
+ } = useRestoreStore();
8887
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
8888
+ mode === "backup" && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-center justify-center px-[var(--l-pass-pd)]", children: [
8889
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8890
+ Button,
8891
+ {
8892
+ size: "medium",
8893
+ variant: "ghost",
8894
+ onClick: () => {
8895
+ setUsePasskey(false);
8896
+ setRestoreFile(null);
8897
+ setRestorePassword("");
8898
+ },
8899
+ className: cn(usePasskey ? "opacity-50" : "opacity-100"),
8900
+ children: [
8901
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(OtpIcon, { className: "w-4 h-4 inline-block mr-1" }),
8902
+ "Password"
8903
+ ]
8904
+ }
8905
+ ),
8906
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8907
+ Button,
8908
+ {
8909
+ size: "medium",
8910
+ variant: "ghost",
8911
+ onClick: () => {
8912
+ setUsePasskey(true);
8913
+ setRestoreFile(null);
8914
+ setRestorePassword("");
8915
+ },
8916
+ className: cn(usePasskey ? "opacity-100" : "opacity-50"),
8917
+ children: [
8918
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react19.Key, { className: "w-4 h-4 inline-block mr-1" }),
8919
+ "Passkey"
8920
+ ]
8921
+ }
8922
+ )
8923
+ ] }),
8924
+ !hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "block w-full text-[10px] leading-8 px-[var(--l-pass-pd)] truncate", children: [
8935
8925
  "Use your ",
8936
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("strong", { children: usePasskey ? "Passkey" : "Password" }),
8937
- " to complete account security setup."
8926
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("strong", { children: usePasskey ? "Passkey" : "Password" }),
8927
+ " to",
8928
+ " ",
8929
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { children: mode === "backup" ? "complete account security setup." : "get access to your account." })
8938
8930
  ] }),
8939
- !usePasskey ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "w-full flex gap-[var(--l-pass-gap)]", children: [
8940
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8931
+ !usePasskey ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "w-full flex gap-[var(--l-pass-gap)]", children: [
8932
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8941
8933
  Input,
8942
8934
  {
8943
8935
  autoComplete: "off",
@@ -8953,7 +8945,7 @@ function PasswordPasskey(props) {
8953
8945
  onKeyDown: (e) => {
8954
8946
  if (e.key === "Enter" && !isLoading && restorePassword) actionRef.current?.click();
8955
8947
  },
8956
- element: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8948
+ element: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8957
8949
  Button,
8958
8950
  {
8959
8951
  variant: "ghost",
@@ -8962,12 +8954,12 @@ function PasswordPasskey(props) {
8962
8954
  title: "Toggle Password Visibility",
8963
8955
  disabled: isLoading || disabled,
8964
8956
  onClick: () => setShowPassword(!showPassword),
8965
- children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Eye, { className: "h-4 w-4" })
8957
+ children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react19.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react19.Eye, { className: "h-4 w-4" })
8966
8958
  }
8967
8959
  )
8968
8960
  }
8969
8961
  ),
8970
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8962
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
8971
8963
  Button,
8972
8964
  {
8973
8965
  ref: actionRef,
@@ -8977,10 +8969,10 @@ function PasswordPasskey(props) {
8977
8969
  title: actionCaption,
8978
8970
  disabled: isLoading || disabled || error?.includes("Invalid backup file") || !usePasskey && !restorePassword,
8979
8971
  className: "w-full w-12 h-12 flex-shrink-0 rounded-[var(--l-pass-el-bdrs)]",
8980
- children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.ChevronRight, { className: "h-4 w-4" })
8972
+ children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react19.ChevronRight, { className: "h-4 w-4" })
8981
8973
  }
8982
8974
  )
8983
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
8975
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
8984
8976
  Button,
8985
8977
  {
8986
8978
  ref: actionRef,
@@ -8991,18 +8983,18 @@ function PasswordPasskey(props) {
8991
8983
  disabled: isLoading || disabled || !!error || !usePasskey && !restorePassword,
8992
8984
  className: "w-full",
8993
8985
  children: [
8994
- isLoading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ActionIcon, { className: "h-4 w-4" }),
8995
- !isLoading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: actionCaption })
8986
+ isLoading ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react19.Loader, { className: "animate-spin h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ActionIcon, { className: "h-4 w-4" }),
8987
+ !isLoading && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { children: actionCaption })
8996
8988
  ]
8997
8989
  }
8998
8990
  ),
8999
- !isEncryptionMethod && !!usePasskey && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Highlight, { type: "info", className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-[10px]", children: mode === "backup" && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex gap-[var(--l-pass-gap)]", children: [
9000
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Info, { className: "h-4 w-4 flex-shrink-0" }),
9001
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "text-[var(--l-pass-fg-muted)] block flex-1", children: [
9002
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "block mb-1", children: "Your Backup must be encrypted with a password or a passkey, so only you can decrypt it no matter where backup is stored." }),
9003
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "block", children: [
8991
+ !isEncryptionMethod && !!usePasskey && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Highlight, { type: "info", className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-[10px]", children: mode === "backup" && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex gap-[var(--l-pass-gap)]", children: [
8992
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react19.Info, { className: "h-4 w-4 flex-shrink-0" }),
8993
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "text-[var(--l-pass-fg-muted)] block flex-1", children: [
8994
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block mb-1", children: "Your Backup must be encrypted with a password or a passkey, so only you can decrypt it no matter where backup is stored." }),
8995
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "block", children: [
9004
8996
  " Passkeys are a password-free alternative. ",
9005
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
8997
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9006
8998
  "a",
9007
8999
  {
9008
9000
  target: "_blank",
@@ -9019,7 +9011,7 @@ function PasswordPasskey(props) {
9019
9011
  }
9020
9012
 
9021
9013
  // src/internal/components/KeyshareRestoreMenu/components/NoBackupFound.tsx
9022
- var import_jsx_runtime38 = require("react/jsx-runtime");
9014
+ var import_jsx_runtime39 = require("react/jsx-runtime");
9023
9015
  function NoBackupFound(props) {
9024
9016
  const { isLoading, restoreFromFile } = props;
9025
9017
  const restoreFile = useRestoreStore((st) => st.restoreFile);
@@ -9028,33 +9020,33 @@ function NoBackupFound(props) {
9028
9020
  const setRestoreFile = useRestoreStore((st) => st.setRestoreFile);
9029
9021
  const setError = useRestoreStore((st) => st.setError);
9030
9022
  useValidateFileBackup();
9031
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
9032
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
9033
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react20.User, { className: "w-6 h-6" }),
9034
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "font-bold text-xl leading-6", children: "Account Recovery" })
9023
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
9024
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
9025
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.User, { className: "w-6 h-6" }),
9026
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "font-bold text-xl leading-6", children: "Account Recovery" })
9035
9027
  ] }),
9036
- !restoreFile && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Highlight, { type: "warning", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
9037
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react20.AlertCircle, { className: "h-4 w-4 flex-0" }),
9038
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
9039
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block w-full text-sm leading-4 font-bold", children: "No Backup Found" }),
9040
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "block w-full text-xs", children: [
9041
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block mb-1", children: "This device doesn't have access to your wallet keyshare, and no backup was found." }),
9042
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block w-full", children: "If you're using a different device, please return to the one where you created your account to create a backup, then restore access on this device." })
9028
+ !restoreFile && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Highlight, { type: "warning", className: "animate-glow-warning flex gap-[var(--l-pass-gap)]", children: [
9029
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.AlertCircle, { className: "h-4 w-4 flex-0" }),
9030
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "w-full flex-1 flex flex-col gap-2", children: [
9031
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "block w-full text-sm leading-4 font-bold", children: "No Backup Found" }),
9032
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "block w-full text-xs", children: [
9033
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "block mb-1", children: "This device doesn't have access to your wallet keyshare, and no backup was found." }),
9034
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "block w-full", children: "If you're using a different device, please return to the one where you created your account to create a backup, then restore access on this device." })
9043
9035
  ] })
9044
9036
  ] })
9045
9037
  ] }),
9046
- !restoreFile && /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(Highlight, { type: "info", className: "flex gap-[var(--l-pass-gap)]", children: [
9047
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react20.Upload, { className: "h-4 w-4 flex-0" }),
9048
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "block w-full text-xs", children: "Upload a backup file if you have one" })
9038
+ !restoreFile && /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Highlight, { type: "info", className: "flex gap-[var(--l-pass-gap)]", children: [
9039
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.Upload, { className: "h-4 w-4 flex-0" }),
9040
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "block w-full text-xs", children: "Upload a backup file if you have one" })
9049
9041
  ] }),
9050
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9042
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
9051
9043
  "label",
9052
9044
  {
9053
9045
  className: cn(
9054
9046
  "block w-full flex items-center justify-center cursor-pointer",
9055
9047
  "p-[var(--l-pass-gap)] bg-[var(--l-pass-secondary)] rounded-[var(--l-pass-el-bdrs)]"
9056
9048
  ),
9057
- children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9049
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
9058
9050
  "input",
9059
9051
  {
9060
9052
  type: "file",
@@ -9075,7 +9067,7 @@ function NoBackupFound(props) {
9075
9067
  )
9076
9068
  }
9077
9069
  ),
9078
- restoreFile && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
9070
+ restoreFile && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
9079
9071
  PasswordPasskey,
9080
9072
  {
9081
9073
  mode: "restore",
@@ -9091,124 +9083,15 @@ function NoBackupFound(props) {
9091
9083
 
9092
9084
  // src/internal/components/KeyshareRestoreMenu/methods/File.tsx
9093
9085
  var import_lucide_react21 = require("lucide-react");
9094
-
9095
- // src/internal/components/ui/switch.tsx
9096
- var import_react32 = require("react");
9097
- var import_jsx_runtime39 = require("react/jsx-runtime");
9098
- var Switch = (0, import_react32.forwardRef)((props, ref) => {
9099
- const { className, labels, ...inputProps } = props;
9100
- const colorMode = useLayoutStore((st) => st.colorMode);
9101
- const [labelW, setLabelW] = (0, import_react32.useState)(0);
9102
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
9103
- "div",
9104
- {
9105
- role: "switch",
9106
- "aria-checked": inputProps.checked,
9107
- className: cn(
9108
- "block rounded-full w-fit h-7 p-1 outline-none flex-none",
9109
- inputProps.checked ? "bg-[var(--l-pass-bg-success)]" : "bg-[var(--l-pass-bg-info)]",
9110
- className
9111
- ),
9112
- children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
9113
- "label",
9114
- {
9115
- className: "relative inline-block h-5 outline-none",
9116
- style: {
9117
- width: `calc(20px + ${labelW}px)`,
9118
- transition: "width 200ms ease",
9119
- cursor: inputProps.disabled ? "not-allowed" : "pointer"
9120
- },
9121
- children: [
9122
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("input", { type: "checkbox", className: "hidden sr-only peer outline-none", ref, ...inputProps }),
9123
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
9124
- "span",
9125
- {
9126
- ref: (inst) => {
9127
- if (inst) setLabelW(inst.clientWidth);
9128
- },
9129
- style: {
9130
- left: inputProps.checked ? "0px" : "20px",
9131
- color: inputProps.checked ? colorMode === "dark" ? "var(--l-pass-fg-inverted)" : "var(--l-pass-fg)" : "var(--l-pass-fg)",
9132
- transition: "left 200ms ease"
9133
- },
9134
- className: "absolute top-0 px-2 text-xs leading-5 font-semibold min-w-5 select-none",
9135
- children: inputProps.checked ? labels?.checked : labels?.unchecked
9136
- }
9137
- ),
9138
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
9139
- "span",
9140
- {
9141
- style: {
9142
- left: inputProps.checked ? `${labelW}px` : "0px",
9143
- transition: "left 200ms ease"
9144
- },
9145
- className: cn("absolute top-0 w-5 h-5 rounded-full bg-[var(--l-pass-fg)]", {
9146
- // 'bg-[var(--l-pass-fg-inverted)]': inputProps.checked,
9147
- // 'bg-[var(--l-pass-fg)]': !inputProps.checked
9148
- })
9149
- }
9150
- )
9151
- ]
9152
- }
9153
- )
9154
- }
9155
- );
9156
- });
9157
- Switch.displayName = "Switch";
9158
-
9159
- // src/internal/components/KeyshareRestoreMenu/methods/File.tsx
9160
9086
  var import_jsx_runtime40 = require("react/jsx-runtime");
9161
9087
  function File2(props) {
9162
9088
  const { isLoading, mode = "restore", fileHandler } = props;
9163
- const {
9164
- restoreFile,
9165
- error,
9166
- usePasskey,
9167
- setRestorePassword,
9168
- setMethod,
9169
- setRestoreFile,
9170
- setUsePasskey,
9171
- setError,
9172
- setSuccess
9173
- } = useRestoreStore();
9089
+ const { restoreFile, error, setRestoreFile, setError } = useRestoreStore();
9174
9090
  useValidateFileBackup();
9175
9091
  const actionText = mode === "backup" ? "Download" : "Restore with";
9176
9092
  const isPasswordPasskey = mode === "restore" && !!restoreFile || mode === "backup";
9177
9093
  return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
9178
- /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-center justify-between", children: [
9179
- /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
9180
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
9181
- Button,
9182
- {
9183
- variant: "ghost",
9184
- size: "icon",
9185
- title: "Back",
9186
- onClick: () => {
9187
- setRestoreFile(null);
9188
- setError(null);
9189
- setSuccess(null);
9190
- setUsePasskey(false);
9191
- setMethod(null);
9192
- },
9193
- children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react21.ArrowLeft, { className: "h-4 w-4" })
9194
- }
9195
- ),
9196
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "text-xl font-semibold", children: `${mode === "restore" ? "Restore with" : ""} File ${mode === "restore" ? "by" : "Backup by"}`.trim() })
9197
- ] }),
9198
- mode !== "restore" && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
9199
- Switch,
9200
- {
9201
- name: "password-passkey-toggle",
9202
- labels: { checked: "Password", unchecked: "Passkey" },
9203
- disabled: isLoading || !!error,
9204
- checked: !usePasskey,
9205
- onChange: (e) => {
9206
- if (!!e.target.checked) setRestorePassword("");
9207
- setUsePasskey(!e.target.checked);
9208
- }
9209
- }
9210
- )
9211
- ] }),
9094
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "block w-full text-[10px] text-center leading-8 px-[var(--l-pass-pd)] truncate", children: `${mode === "restore" ? "Restore with" : ""} File ${mode === "restore" ? "" : "Backup by"}`.trim() }),
9212
9095
  mode === "restore" && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
9213
9096
  "label",
9214
9097
  {
@@ -9252,61 +9135,23 @@ function File2(props) {
9252
9135
  }
9253
9136
 
9254
9137
  // src/internal/components/KeyshareRestoreMenu/methods/Server.tsx
9255
- var import_react_query16 = require("@tanstack/react-query");
9138
+ var import_react_query14 = require("@tanstack/react-query");
9256
9139
  var import_dayjs = __toESM(require("dayjs"), 1);
9257
9140
  var import_lucide_react22 = require("lucide-react");
9258
- var import_react33 = require("react");
9141
+ var import_react30 = require("react");
9259
9142
  var import_jsx_runtime41 = require("react/jsx-runtime");
9260
9143
  function Server(props) {
9261
9144
  const { isLoading, mode = "restore", serverHandler } = props;
9262
- const qc = (0, import_react_query16.useQueryClient)();
9145
+ const qc = (0, import_react_query14.useQueryClient)();
9263
9146
  const address = useLumiaPassportSession((st) => st.address);
9264
- const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
9265
- const { usePasskey, error, setUsePasskey, setRestorePassword, setShowPassword, setMethod, setError, setSuccess } = useRestoreStore();
9147
+ const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
9266
9148
  const serverRecoveryStatus = qc.getQueryData([CHECK_BACKUP_QUERY_KEY, address]);
9267
- (0, import_react33.useEffect)(() => {
9149
+ (0, import_react30.useEffect)(() => {
9268
9150
  if (mode === "backup" || !serverRecoveryStatus?.created?.encryptionMethod) return;
9269
9151
  setUsePasskey(serverRecoveryStatus.created.encryptionMethod === "passkey");
9270
9152
  }, [mode, serverRecoveryStatus, setUsePasskey]);
9271
9153
  const isEncryptionMethod = mode === "restore" && !!serverRecoveryStatus?.created?.encryptionMethod;
9272
9154
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
9273
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: cn("flex items-center justify-between", { "px-[var(--l-pass-pd)]": !hasServerVault }), children: [
9274
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
9275
- !!hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
9276
- Button,
9277
- {
9278
- variant: "ghost",
9279
- size: "icon",
9280
- title: "Back",
9281
- onClick: () => {
9282
- setShowPassword(false);
9283
- setUsePasskey(false);
9284
- setRestorePassword("");
9285
- setUsePasskey(false);
9286
- setError(null);
9287
- setSuccess(null);
9288
- setMethod(null);
9289
- },
9290
- children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react22.ArrowLeft, { className: "h-4 w-4" })
9291
- }
9292
- ),
9293
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "text-xl font-semibold", children: mode === "restore" ? "Restore with" : usePasskey ? "Passkey" : "Password" })
9294
- ] }),
9295
- !isEncryptionMethod && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
9296
- Switch,
9297
- {
9298
- name: "password-passkey-toggle",
9299
- labels: { checked: "Password", unchecked: "Passkey" },
9300
- disabled: isLoading,
9301
- checked: !usePasskey,
9302
- onChange: (e) => {
9303
- if (!!error) setError(null);
9304
- if (!!e.target.checked) setRestorePassword("");
9305
- setUsePasskey(!e.target.checked);
9306
- }
9307
- }
9308
- )
9309
- ] }),
9310
9155
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
9311
9156
  PasswordPasskey,
9312
9157
  {
@@ -9333,9 +9178,9 @@ function Server(props) {
9333
9178
  }
9334
9179
 
9335
9180
  // src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx
9336
- var import_react_query17 = require("@tanstack/react-query");
9181
+ var import_react_query15 = require("@tanstack/react-query");
9337
9182
  var import_lucide_react24 = require("lucide-react");
9338
- var import_react34 = require("react");
9183
+ var import_react31 = require("react");
9339
9184
 
9340
9185
  // src/internal/components/ui/select.tsx
9341
9186
  var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
@@ -9473,7 +9318,7 @@ function Cloud2(props) {
9473
9318
  data: cloudProviders = [],
9474
9319
  isLoading: isCloudProvidersLoading,
9475
9320
  error: cloudProvidersError
9476
- } = (0, import_react_query17.useQuery)({
9321
+ } = (0, import_react_query15.useQuery)({
9477
9322
  retry: false,
9478
9323
  enabled: !!passportUserId,
9479
9324
  queryKey: [AVAILABLE_CLOUD_PROVIDERS_QUERY_KEY, passportUserId],
@@ -9483,7 +9328,7 @@ function Cloud2(props) {
9483
9328
  return availableProviders.map((p) => ({ id: p.id, name: p.name, available: p.isAvailable() }));
9484
9329
  }
9485
9330
  });
9486
- (0, import_react34.useEffect)(() => {
9331
+ (0, import_react31.useEffect)(() => {
9487
9332
  if (isCloudProvidersLoading) return;
9488
9333
  if (!!cloudProvidersError) {
9489
9334
  console.error("[KeyshareBackup] Failed to load cloud providers:", cloudProvidersError);
@@ -9556,23 +9401,14 @@ var RESTORE_COMPONENTS = {
9556
9401
  file: File2
9557
9402
  };
9558
9403
  var KeyshareRestoreMenu = () => {
9559
- const qc = (0, import_react_query18.useQueryClient)();
9404
+ const qc = (0, import_react_query16.useQueryClient)();
9560
9405
  const callbacks = useLumiaPassportConfig().callbacks;
9561
9406
  const { address, setSession, setAddress, setStatus, setIsLoading } = useLumiaPassportSession();
9562
- const { data: serverRecoveryStatus, isLoading: isBackupStatusLoading } = (0, import_react_query18.useQuery)({
9563
- retry: false,
9564
- queryKey: [CHECK_BACKUP_QUERY_KEY, address],
9565
- queryFn: async () => await getShareRecoveryStats()
9566
- });
9567
9407
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
9568
9408
  const setIsDialogForced = useLayoutStore((st) => st.setIsDialogForced);
9569
9409
  const setPage = useLayoutDataStore((st) => st.setPage);
9570
- (0, import_react35.useEffect)(() => setIsDialogForced(true), []);
9571
- useCheckBackupAvailability();
9572
9410
  const {
9573
9411
  method: currentRestoreMethod,
9574
- checkingBackup,
9575
- hasServerBackup,
9576
9412
  error,
9577
9413
  success,
9578
9414
  setError,
@@ -9583,6 +9419,16 @@ var KeyshareRestoreMenu = () => {
9583
9419
  setSuccess,
9584
9420
  setMethod
9585
9421
  } = useRestoreStore();
9422
+ (0, import_react32.useEffect)(() => {
9423
+ setIsDialogForced(true);
9424
+ return () => {
9425
+ setRestoreFile(null);
9426
+ setShowPassword(false);
9427
+ setUsePasskey(false);
9428
+ setMethod(null);
9429
+ setIsDialogForced(false);
9430
+ };
9431
+ }, []);
9586
9432
  const {
9587
9433
  restoreFromServer: restoreFromServer2,
9588
9434
  isRestoringFromServer,
@@ -9591,7 +9437,16 @@ var KeyshareRestoreMenu = () => {
9591
9437
  restoreFromCloud,
9592
9438
  isRestoringFromCloud
9593
9439
  } = useRestoreAccount();
9594
- const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query18.useMutation)({
9440
+ const { data: serverRecoveryStatus, isLoading: isBackupStatusLoading } = (0, import_react_query16.useQuery)({
9441
+ retry: false,
9442
+ queryKey: [CHECK_BACKUP_QUERY_KEY, address],
9443
+ queryFn: async () => await getShareRecoveryStats()
9444
+ });
9445
+ const hasServerBackup = serverRecoveryStatus?.created || serverRecoveryStatus?.devices?.length > 0;
9446
+ (0, import_react32.useEffect)(() => {
9447
+ if (!!hasServerBackup) setMethod("server");
9448
+ }, [hasServerBackup]);
9449
+ const { mutate: disconnect, isPending: isDisconnecting } = (0, import_react_query16.useMutation)({
9595
9450
  mutationFn: async () => {
9596
9451
  setError(null);
9597
9452
  setMethod(null);
@@ -9622,29 +9477,47 @@ var KeyshareRestoreMenu = () => {
9622
9477
  }
9623
9478
  });
9624
9479
  const RestoreComponent = currentRestoreMethod ? RESTORE_COMPONENTS[currentRestoreMethod] : null;
9625
- const isBackupChecking = checkingBackup || isBackupStatusLoading;
9626
9480
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
9627
9481
  "div",
9628
9482
  {
9629
9483
  style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
9630
9484
  className: "list-scrollbar-y w-full",
9631
9485
  children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
9632
- isBackupChecking && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
9486
+ isBackupStatusLoading && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)] text-center justify-center items-center", children: [
9633
9487
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.Loader, { className: "w-5 h-5 animate-spin" }),
9634
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "block w-full text-xs leading-4", children: "Checking for backups..." }),
9635
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "block w-full text-xs leading-4", children: "Please wait while we check for available backups..." })
9488
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "block w-full text-xs leading-4", children: "Checking for backups..." })
9636
9489
  ] }),
9637
- !success && !isBackupChecking && !isDisconnecting && !hasServerBackup && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
9490
+ !success && !isBackupStatusLoading && !isDisconnecting && !hasServerBackup && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
9638
9491
  NoBackupFound,
9639
9492
  {
9640
9493
  isLoading: isRestoringFromServer || isRestoringFromCloud || isRestoringFromFile || isDisconnecting,
9641
9494
  restoreFromFile
9642
9495
  }
9643
9496
  ),
9644
- !success && !isBackupChecking && !isDisconnecting && hasServerBackup && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
9645
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex items-center justify-center gap-[var(--l-pass-gap)] px-[var(--l-pass-pd)] py-[var(--l-pass-gap)]", children: [
9646
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.CloudDownload, { className: "w-6 h-6" }),
9647
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "font-bold text-xl leading-6", children: "Restore Account" })
9497
+ !success && !isBackupStatusLoading && !isDisconnecting && hasServerBackup && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
9498
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
9499
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
9500
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.CloudDownload, { className: "w-6 h-6" }),
9501
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "font-bold text-xl leading-6", children: "Restore Account" })
9502
+ ] }),
9503
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
9504
+ Switch,
9505
+ {
9506
+ name: "advanced-restore-flow-toggle",
9507
+ labels: { checked: "Standard", unchecked: "Advanced" },
9508
+ checked: currentRestoreMethod !== "server",
9509
+ onChange: () => {
9510
+ if (!!error) setError(null);
9511
+ if (currentRestoreMethod === "server") {
9512
+ setRestorePassword("");
9513
+ setMethod(null);
9514
+ } else {
9515
+ setRestoreFile(null);
9516
+ setMethod("server");
9517
+ }
9518
+ }
9519
+ }
9520
+ )
9648
9521
  ] }),
9649
9522
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(MethodSelector, { mode: "restore", serverRecoveryStatus }),
9650
9523
  !!currentRestoreMethod && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
@@ -9657,32 +9530,29 @@ var KeyshareRestoreMenu = () => {
9657
9530
  }
9658
9531
  )
9659
9532
  ] }),
9660
- !success && !currentRestoreMethod && !isBackupChecking && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
9661
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "w-full mt-[var(--l-pass-gap)]", style: { borderTop: "1px solid var(--l-pass-bd)" } }),
9662
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
9663
- Button,
9664
- {
9665
- size: "large",
9666
- variant: "ghost",
9667
- onClick: () => {
9668
- setError(null);
9669
- setShowPassword(false);
9670
- setUsePasskey(false);
9671
- setRestoreFile(null);
9672
- setRestorePassword("");
9673
- setSuccess(null);
9674
- setMethod(null);
9675
- disconnect();
9676
- },
9677
- disabled: isDisconnecting || isRestoringFromFile || isRestoringFromServer,
9678
- className: "w-fit mx-auto",
9679
- children: [
9680
- isDisconnecting ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.UserCircle, { className: "w-4 h-4" }),
9681
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: "Try Another Account" })
9682
- ]
9683
- }
9684
- )
9685
- ] }),
9533
+ !success && !isBackupStatusLoading && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
9534
+ Button,
9535
+ {
9536
+ size: "large",
9537
+ variant: "ghost",
9538
+ onClick: () => {
9539
+ setError(null);
9540
+ setShowPassword(false);
9541
+ setUsePasskey(false);
9542
+ setRestoreFile(null);
9543
+ setRestorePassword("");
9544
+ setSuccess(null);
9545
+ setMethod(null);
9546
+ disconnect();
9547
+ },
9548
+ disabled: isDisconnecting || isRestoringFromFile || isRestoringFromServer,
9549
+ className: "w-fit mx-auto",
9550
+ children: [
9551
+ isDisconnecting ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.UserCircle, { className: "w-4 h-4" }),
9552
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { children: "Try Another Account" })
9553
+ ]
9554
+ }
9555
+ ),
9686
9556
  error && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
9687
9557
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react25.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
9688
9558
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "w-full flex-1 block", children: error })
@@ -9697,9 +9567,9 @@ var KeyshareRestoreMenu = () => {
9697
9567
  };
9698
9568
 
9699
9569
  // src/internal/components/KeyshareRestoreMenu/KeyshareBackupMenu.tsx
9700
- var import_react_query19 = require("@tanstack/react-query");
9570
+ var import_react_query17 = require("@tanstack/react-query");
9701
9571
  var import_lucide_react26 = require("lucide-react");
9702
- var import_react36 = require("react");
9572
+ var import_react33 = require("react");
9703
9573
  init_vaultClient();
9704
9574
  var import_jsx_runtime45 = require("react/jsx-runtime");
9705
9575
  var COMPONENTS = {
@@ -9709,7 +9579,6 @@ var COMPONENTS = {
9709
9579
  };
9710
9580
  function KeyshareBackupMenu() {
9711
9581
  const address = useLumiaPassportSession((st) => st.address);
9712
- const hasServerVault = useLumiaPassportSession((st) => st.hasServerVault);
9713
9582
  const setPage = useLayoutDataStore((st) => st.setPage);
9714
9583
  const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
9715
9584
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
@@ -9726,18 +9595,21 @@ function KeyshareBackupMenu() {
9726
9595
  setUsePasskey,
9727
9596
  setMethod
9728
9597
  } = useRestoreStore();
9729
- (0, import_react36.useEffect)(() => {
9598
+ (0, import_react33.useEffect)(() => {
9730
9599
  setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT);
9731
9600
  return () => {
9732
9601
  setMethod(null);
9733
9602
  };
9734
9603
  }, []);
9735
- const { data: serverRecoveryStatus } = (0, import_react_query19.useQuery)({
9604
+ const { data: serverRecoveryStatus, isLoading: isRecoveryLoading } = (0, import_react_query17.useQuery)({
9736
9605
  retry: false,
9737
9606
  queryKey: [CHECK_BACKUP_QUERY_KEY, address],
9738
9607
  queryFn: async () => await getShareRecoveryStats()
9739
9608
  });
9740
- const { hasRecoveryData, isRecoveryLoading } = useCheckBackupAvailability();
9609
+ const hasRecoveryData = serverRecoveryStatus?.created || serverRecoveryStatus?.devices?.length > 0;
9610
+ (0, import_react33.useEffect)(() => {
9611
+ if (!!hasRecoveryData) setMethod("server");
9612
+ }, [hasRecoveryData]);
9741
9613
  const {
9742
9614
  isPasswordBackupCreating,
9743
9615
  createPasswordBackup,
@@ -9753,35 +9625,56 @@ function KeyshareBackupMenu() {
9753
9625
  style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
9754
9626
  className: "list-scrollbar-y w-full",
9755
9627
  children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
9756
- !hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
9628
+ !!isRecoveryLoading && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "w-full flex items-center justify-center p-[var(--l-pass-pd)]", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.Loader, { className: "h-5 w-5 animate-spin" }) }),
9629
+ !isRecoveryLoading && !hasRecoveryData && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex items-center justify-center gap-2 px-5 py-[var(--l-pass-pd)]", children: [
9757
9630
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.LockIcon, { className: "w-6 h-6" }),
9758
9631
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "font-bold text-xl leading-6", children: "Secure Account" })
9759
9632
  ] }),
9760
- !!hasServerVault && !currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
9633
+ !isRecoveryLoading && !!hasRecoveryData && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex items-center justify-between gap-[var(--l-pass-gap)]", children: [
9634
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
9635
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
9636
+ Button,
9637
+ {
9638
+ variant: "ghost",
9639
+ size: "icon",
9640
+ title: "Back",
9641
+ onClick: () => {
9642
+ setRestorePassword("");
9643
+ setRestoreFile(null);
9644
+ setShowPassword(false);
9645
+ setSelectedCloudProvider(null);
9646
+ setUsePasskey(false);
9647
+ setError(null);
9648
+ setSuccess(null);
9649
+ setMethod(null);
9650
+ setPage("settings" /* SETTINGS */);
9651
+ },
9652
+ children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.ArrowLeft, { className: "h-4 w-4" })
9653
+ }
9654
+ ),
9655
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-xl font-semibold leading-8", children: "Create Backup" })
9656
+ ] }),
9761
9657
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
9762
- Button,
9658
+ Switch,
9763
9659
  {
9764
- variant: "ghost",
9765
- size: "icon",
9766
- title: "Back",
9767
- onClick: () => {
9768
- setRestorePassword("");
9769
- setRestoreFile(null);
9770
- setShowPassword(false);
9771
- setSelectedCloudProvider(null);
9772
- setUsePasskey(false);
9773
- setError(null);
9774
- setSuccess(null);
9775
- setMethod(null);
9776
- setPage("settings" /* SETTINGS */);
9777
- },
9778
- children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.ArrowLeft, { className: "h-4 w-4" })
9660
+ name: "advanced-restore-flow-toggle",
9661
+ labels: { checked: "Standard", unchecked: "Advanced" },
9662
+ checked: currentBackupMethod !== "server",
9663
+ onChange: () => {
9664
+ if (!!error) setError(null);
9665
+ if (currentBackupMethod === "server") {
9666
+ setRestorePassword("");
9667
+ setMethod(null);
9668
+ } else {
9669
+ setRestoreFile(null);
9670
+ setMethod("server");
9671
+ }
9672
+ }
9779
9673
  }
9780
- ),
9781
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-xl font-semibold leading-8", children: "Create Backup" })
9674
+ )
9782
9675
  ] }),
9783
- !!hasServerVault && !currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(MethodSelector, { mode: "backup", serverRecoveryStatus }),
9784
- !!currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
9676
+ !isRecoveryLoading && !!hasRecoveryData && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(MethodSelector, { mode: "backup", serverRecoveryStatus }),
9677
+ !isRecoveryLoading && !!currentBackupMethod && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
9785
9678
  BackupComponent,
9786
9679
  {
9787
9680
  mode: "backup",
@@ -9793,13 +9686,7 @@ function KeyshareBackupMenu() {
9793
9686
  ) }),
9794
9687
  !isRecoveryLoading && !currentBackupMethod && !hasRecoveryData && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--l-pass-gap)]", children: [
9795
9688
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
9796
- /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("span", { className: "block flex-1", children: [
9797
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "font-semibold", children: "No Backup Found" }),
9798
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("br", {}),
9799
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-[10px]", children: "Create a backup to restore access if you switch devices or clear your browser." }),
9800
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("br", {}),
9801
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-[10px]", children: "You can ignore this if you already have a backup or don't want to use Keyshare Vault." })
9802
- ] })
9689
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "block flex-1 font-semibold", children: "No Backup Found" })
9803
9690
  ] }),
9804
9691
  error && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Highlight, { type: "error", className: "flex gap-[var(--l-pass-gap)]", children: [
9805
9692
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react26.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
@@ -9816,16 +9703,16 @@ function KeyshareBackupMenu() {
9816
9703
 
9817
9704
  // src/internal/components/MainMenu/MainMenu.tsx
9818
9705
  var import_lucide_react27 = require("lucide-react");
9819
- var import_react37 = require("react");
9706
+ var import_react34 = require("react");
9820
9707
 
9821
9708
  // src/internal/components/ManageWalletMenu/hooks/useProvidersList.ts
9822
- var import_react_query20 = require("@tanstack/react-query");
9709
+ var import_react_query18 = require("@tanstack/react-query");
9823
9710
  init_common();
9824
9711
  var PROVIDERS_QUERY_KEY = "lumia-passport-providers-query";
9825
9712
  function useProvidersList() {
9826
9713
  const address = useLumiaPassportSession((st) => st.address);
9827
9714
  const page = useLayoutDataStore((st) => st.page);
9828
- return (0, import_react_query20.useQuery)({
9715
+ return (0, import_react_query18.useQuery)({
9829
9716
  retry: false,
9830
9717
  // hook is invoked on multiple pages to preload cache
9831
9718
  enabled: !!address && (page === "manage-wallet" /* MANAGE_WALLET */ || page === "settings" /* SETTINGS */ || page === "main-menu" /* MAIN_MENU */),
@@ -9846,7 +9733,7 @@ function MainMenu() {
9846
9733
  const address = useLumiaPassportSession((st) => st.address);
9847
9734
  const setPage = useLayoutDataStore((st) => st.setPage);
9848
9735
  const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
9849
- (0, import_react37.useEffect)(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
9736
+ (0, import_react34.useEffect)(() => setMainPageHeight(DEFAULT_MAIN_MENU_HEIGHT), [setMainPageHeight]);
9850
9737
  useProvidersList();
9851
9738
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "w-full grid grid-cols-4 gap-0 md:gap-[var(--l-pass-gap)] py-[10px] md:py-1", children: MAIN_MENU_BUTTONS.map(({ id, label, icon: Icon2 }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
9852
9739
  Button,
@@ -9868,11 +9755,11 @@ function MainMenu() {
9868
9755
  // src/internal/components/ManageWalletMenu/ManageWallet.tsx
9869
9756
  var import_lodash_es3 = require("lodash-es");
9870
9757
  var import_lucide_react31 = require("lucide-react");
9871
- var import_react41 = require("react");
9758
+ var import_react38 = require("react");
9872
9759
 
9873
9760
  // src/modules/linkedProfiles.ts
9874
- var import_react_query21 = require("@tanstack/react-query");
9875
- var import_react38 = require("react");
9761
+ var import_react_query19 = require("@tanstack/react-query");
9762
+ var import_react35 = require("react");
9876
9763
  init_auth();
9877
9764
  init_common();
9878
9765
  init_types();
@@ -9892,32 +9779,32 @@ async function getLinkProfilesData() {
9892
9779
  return { profiles: loadedProfiles, avatar };
9893
9780
  }
9894
9781
  function useLumiaPassportLinkedProfiles() {
9895
- const qc = (0, import_react_query21.useQueryClient)();
9782
+ const qc = (0, import_react_query19.useQueryClient)();
9896
9783
  const address = useLumiaPassportSession((st) => st.address);
9897
9784
  const {
9898
9785
  data,
9899
9786
  isFetching: isLoading,
9900
9787
  error
9901
- } = (0, import_react_query21.useQuery)({
9788
+ } = (0, import_react_query19.useQuery)({
9902
9789
  retry: false,
9903
9790
  enabled: !!address,
9904
9791
  queryKey: [LINKED_PROFILES_QUERY_KEY, address],
9905
9792
  queryFn: getLinkProfilesData
9906
9793
  });
9907
9794
  const { profiles = [], avatar = null } = data || {};
9908
- const refresh = (0, import_react38.useCallback)(async () => {
9795
+ const refresh = (0, import_react35.useCallback)(async () => {
9909
9796
  await qc.invalidateQueries({ queryKey: [LINKED_PROFILES_QUERY_KEY, address] });
9910
9797
  }, [qc, address]);
9911
9798
  return { profiles, avatar, isLoading, error, refresh };
9912
9799
  }
9913
9800
 
9914
9801
  // src/internal/components/ManageWalletMenu/AddProvider.tsx
9915
- var import_react_query25 = require("@tanstack/react-query");
9802
+ var import_react_query23 = require("@tanstack/react-query");
9916
9803
  init_passkey2();
9917
9804
 
9918
9805
  // src/internal/components/ManageWalletMenu/EmailForm.tsx
9919
9806
  init_lumiaPassport();
9920
- var import_react_query22 = require("@tanstack/react-query");
9807
+ var import_react_query20 = require("@tanstack/react-query");
9921
9808
  var import_lucide_react28 = require("lucide-react");
9922
9809
  init_projectId();
9923
9810
 
@@ -9952,7 +9839,7 @@ function EmailForm() {
9952
9839
  const isLoading = useLumiaPassportSession((st) => st.isLoading);
9953
9840
  const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
9954
9841
  const { email, setEmail, setAlert, setEmailCodeExpiresIn, setEmailStep } = useManageWalletStore();
9955
- const { mutate: onSendVerificationCode } = (0, import_react_query22.useMutation)({
9842
+ const { mutate: onSendVerificationCode } = (0, import_react_query20.useMutation)({
9956
9843
  mutationFn: async () => {
9957
9844
  if (!email) return;
9958
9845
  setIsLoading(true);
@@ -10039,13 +9926,13 @@ function EmailForm() {
10039
9926
  }
10040
9927
 
10041
9928
  // src/internal/components/ManageWalletMenu/hooks/useSendVerificationCode.ts
10042
- var import_react_query23 = require("@tanstack/react-query");
9929
+ var import_react_query21 = require("@tanstack/react-query");
10043
9930
  init_email();
10044
9931
  function useSendVerificationCode() {
10045
9932
  const setAlert = useManageWalletStore((st) => st.setAlert);
10046
9933
  const setLinkIsLoading = useManageWalletStore((st) => st.setLinkIsLoading);
10047
9934
  const setEmailCodeExpiresIn = useManageWalletStore((st) => st.setEmailCodeExpiresIn);
10048
- return (0, import_react_query23.useMutation)({
9935
+ return (0, import_react_query21.useMutation)({
10049
9936
  mutationFn: async (email) => {
10050
9937
  if (!email) {
10051
9938
  throw new Error("Email is required");
@@ -10068,15 +9955,15 @@ function useSendVerificationCode() {
10068
9955
  }
10069
9956
 
10070
9957
  // src/internal/components/ManageWalletMenu/hooks/useVerifyCode.ts
10071
- var import_react_query24 = require("@tanstack/react-query");
9958
+ var import_react_query22 = require("@tanstack/react-query");
10072
9959
  init_email();
10073
9960
  function useVerifyCode() {
10074
9961
  const { callbacks } = useLumiaPassportConfig();
10075
- const qc = (0, import_react_query24.useQueryClient)();
9962
+ const qc = (0, import_react_query22.useQueryClient)();
10076
9963
  const address = useLumiaPassportSession((st) => st.address);
10077
9964
  const setIsLoading = useLumiaPassportSession((st) => st.setIsLoading);
10078
9965
  const { email, emailCode, setEmail, setEmailStep, setEmailCode, setProviderType, setLinkIsLoading, setAlert } = useManageWalletStore();
10079
- return (0, import_react_query24.useMutation)({
9966
+ return (0, import_react_query22.useMutation)({
10080
9967
  mutationFn: async (codeToVerify) => {
10081
9968
  const code = codeToVerify ?? emailCode;
10082
9969
  if (!code) {
@@ -10124,7 +10011,7 @@ function normalizePasskeyLinkError(msg) {
10124
10011
  return msg;
10125
10012
  }
10126
10013
  function AddProvider() {
10127
- const qc = (0, import_react_query25.useQueryClient)();
10014
+ const qc = (0, import_react_query23.useQueryClient)();
10128
10015
  const callbacks = useLumiaPassportConfig().callbacks;
10129
10016
  const address = useLumiaPassportSession((st) => st.address);
10130
10017
  const {
@@ -10284,11 +10171,11 @@ function EmailNotConnectedWarning() {
10284
10171
  }
10285
10172
 
10286
10173
  // src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
10287
- var import_react_query26 = require("@tanstack/react-query");
10288
- var import_react39 = __toESM(require("react"), 1);
10174
+ var import_react_query24 = require("@tanstack/react-query");
10175
+ var import_react36 = __toESM(require("react"), 1);
10289
10176
  init_auth();
10290
10177
  function useLinkSocial() {
10291
- const qc = (0, import_react_query26.useQueryClient)();
10178
+ const qc = (0, import_react_query24.useQueryClient)();
10292
10179
  const address = useLumiaPassportSession((st) => st.address);
10293
10180
  const {
10294
10181
  config: { current: config },
@@ -10297,7 +10184,7 @@ function useLinkSocial() {
10297
10184
  const setPage = useLayoutDataStore((st) => st.setPage);
10298
10185
  const isWalletLinking = useLayoutDataStore((st) => st.isWalletLinking);
10299
10186
  const { providerType, linkIsLoading, setProviderType, setAlert, setLinkIsLoading } = useManageWalletStore();
10300
- const handleLinkSocialProvider = import_react39.default.useCallback(
10187
+ const handleLinkSocialProvider = import_react36.default.useCallback(
10301
10188
  async (providerIdRaw) => {
10302
10189
  const providerKey = providerIdRaw.toLowerCase();
10303
10190
  const normalizedKey = providerKey === "twitter" ? "x" : providerKey;
@@ -10349,8 +10236,8 @@ function useLinkSocial() {
10349
10236
  },
10350
10237
  [config.social?.providers, callbacks]
10351
10238
  );
10352
- const [socialLinkStarted, setSocialLinkStarted] = import_react39.default.useState(false);
10353
- (0, import_react39.useEffect)(() => {
10239
+ const [socialLinkStarted, setSocialLinkStarted] = import_react36.default.useState(false);
10240
+ (0, import_react36.useEffect)(() => {
10354
10241
  const key = providerType?.toLowerCase();
10355
10242
  console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted, isWalletLinking });
10356
10243
  if (isWalletLinking) {
@@ -10370,20 +10257,20 @@ function useLinkSocial() {
10370
10257
  }
10371
10258
 
10372
10259
  // src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
10373
- var import_react_query27 = require("@tanstack/react-query");
10374
- var import_react40 = require("react");
10260
+ var import_react_query25 = require("@tanstack/react-query");
10261
+ var import_react37 = require("react");
10375
10262
  init_telegram2();
10376
10263
  function useLinkTelegram() {
10377
10264
  const {
10378
10265
  config: { current: config },
10379
10266
  callbacks
10380
10267
  } = useLumiaPassportConfig();
10381
- const qc = (0, import_react_query27.useQueryClient)();
10268
+ const qc = (0, import_react_query25.useQueryClient)();
10382
10269
  const address = useLumiaPassportSession((st) => st.address);
10383
10270
  const isWalletLinking = useLayoutDataStore((st) => st.isWalletLinking);
10384
10271
  const { providerType, linkIsLoading, setLinkIsLoading, setProviderType, setAlert } = useManageWalletStore();
10385
10272
  const setPage = useLayoutDataStore((st) => st.setPage);
10386
- const handleLinkTelegram = (0, import_react40.useCallback)(async () => {
10273
+ const handleLinkTelegram = (0, import_react37.useCallback)(async () => {
10387
10274
  try {
10388
10275
  setLinkIsLoading(true);
10389
10276
  setAlert(null);
@@ -10425,8 +10312,8 @@ function useLinkTelegram() {
10425
10312
  setLinkIsLoading(false);
10426
10313
  }
10427
10314
  }, [config.social?.providers, callbacks]);
10428
- const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react40.useState)(false);
10429
- (0, import_react40.useEffect)(() => {
10315
+ const [telegramLinkStarted, setTelegramLinkStarted] = (0, import_react37.useState)(false);
10316
+ (0, import_react37.useEffect)(() => {
10430
10317
  console.log("[useLinkTelegram] Effect triggered:", {
10431
10318
  providerType,
10432
10319
  linkIsLoading,
@@ -10443,7 +10330,7 @@ function useLinkTelegram() {
10443
10330
  handleLinkTelegram();
10444
10331
  }
10445
10332
  }, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted, isWalletLinking]);
10446
- (0, import_react40.useEffect)(() => {
10333
+ (0, import_react37.useEffect)(() => {
10447
10334
  if (providerType !== "telegram") {
10448
10335
  setTelegramLinkStarted(false);
10449
10336
  }
@@ -10552,7 +10439,7 @@ function ManageWalletMenu() {
10552
10439
  } = useManageWalletStore();
10553
10440
  const configuredProviders = getConfiguredProviders(config);
10554
10441
  const { data: providers = [], isLoading: isProvidersLoading, error: providersError } = useProvidersList();
10555
- const renderProviders = (0, import_react41.useMemo)(() => {
10442
+ const renderProviders = (0, import_react38.useMemo)(() => {
10556
10443
  const normalizeProviderName = (name) => {
10557
10444
  if (name === "x") return "twitter";
10558
10445
  return name;
@@ -10670,19 +10557,19 @@ function ManageWalletMenu() {
10670
10557
  }
10671
10558
 
10672
10559
  // src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
10673
- var import_react_query28 = require("@tanstack/react-query");
10560
+ var import_react_query26 = require("@tanstack/react-query");
10674
10561
  var import_lucide_react32 = require("lucide-react");
10675
- var import_react42 = require("react");
10562
+ var import_react39 = require("react");
10676
10563
  init_auth();
10677
10564
  var import_jsx_runtime52 = require("react/jsx-runtime");
10678
10565
  function UnlinkProviderMenu() {
10679
- const qc = (0, import_react_query28.useQueryClient)();
10566
+ const qc = (0, import_react_query26.useQueryClient)();
10680
10567
  const address = useLumiaPassportSession((st) => st.address);
10681
10568
  const { callbacks } = useLumiaPassportConfig();
10682
10569
  const setPage = useLayoutDataStore((st) => st.setPage);
10683
10570
  const { confirmUnlink, setConfirmUnlink, setAlert } = useManageWalletStore();
10684
- const [confirmInput, setConfirmInput] = (0, import_react42.useState)("");
10685
- const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query28.useMutation)({
10571
+ const [confirmInput, setConfirmInput] = (0, import_react39.useState)("");
10572
+ const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = (0, import_react_query26.useMutation)({
10686
10573
  mutationFn: async () => {
10687
10574
  if (!confirmUnlink) {
10688
10575
  throw new Error("No provider to unlink");
@@ -10758,11 +10645,11 @@ function UnlinkProviderMenu() {
10758
10645
  var import_lucide_react35 = require("lucide-react");
10759
10646
 
10760
10647
  // src/internal/hooks/useNicknameInfo.ts
10761
- var import_react_query29 = require("@tanstack/react-query");
10648
+ var import_react_query27 = require("@tanstack/react-query");
10762
10649
  init_nickname();
10763
10650
  init_profile();
10764
10651
  function useNicknameInfo(enabled = true) {
10765
- const query = (0, import_react_query29.useQuery)({
10652
+ const query = (0, import_react_query27.useQuery)({
10766
10653
  queryKey: [QUERY_KEYS.nicknameInfo],
10767
10654
  queryFn: getNicknameInfo,
10768
10655
  enabled,
@@ -10779,82 +10666,17 @@ function useNicknameInfo(enabled = true) {
10779
10666
  };
10780
10667
  }
10781
10668
 
10782
- // src/internal/lib/nickname-cooldown.ts
10783
- function getDaysRemaining(cooldownEndsAt) {
10784
- if (!cooldownEndsAt) return 0;
10785
- const endDate = new Date(cooldownEndsAt);
10786
- const now = /* @__PURE__ */ new Date();
10787
- if (isNaN(endDate.getTime())) return 0;
10788
- if (endDate <= now) return 0;
10789
- const diffMs = endDate.getTime() - now.getTime();
10790
- const diffDays = Math.ceil(diffMs / (1e3 * 60 * 60 * 24));
10791
- return Math.max(0, diffDays);
10792
- }
10793
- function formatCooldownEndDate(cooldownEndsAt) {
10794
- if (!cooldownEndsAt) return "";
10795
- const endDate = new Date(cooldownEndsAt);
10796
- if (isNaN(endDate.getTime())) return "";
10797
- return endDate.toLocaleDateString(void 0, {
10798
- year: "numeric",
10799
- month: "short",
10800
- day: "numeric"
10801
- });
10802
- }
10803
-
10804
- // src/internal/components/NicknameSettings/NicknameInfoDisplay.tsx
10805
- var import_jsx_runtime53 = require("react/jsx-runtime");
10806
- function NicknameInfoDisplay({ info }) {
10807
- const daysRemaining = getDaysRemaining(info.cooldownEndsAt);
10808
- const cooldownEndDate = formatCooldownEndDate(info.cooldownEndsAt);
10809
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "w-full flex flex-col gap-3", children: [
10810
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-1", children: [
10811
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Your nickname" }),
10812
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-lg font-bold text-[var(--l-pass-fg)]", children: info.displayHandle })
10813
- ] }),
10814
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-4 text-xs text-[var(--l-pass-fg-muted)]", children: [
10815
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
10816
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Created" }),
10817
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.createdAt).toLocaleDateString(void 0, {
10818
- year: "numeric",
10819
- month: "short",
10820
- day: "numeric"
10821
- }) })
10822
- ] }),
10823
- info.changedAt && /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
10824
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Last changed" }),
10825
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.changedAt).toLocaleDateString(void 0, {
10826
- year: "numeric",
10827
- month: "short",
10828
- day: "numeric"
10829
- }) })
10830
- ] }),
10831
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
10832
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Times changed" }),
10833
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: info.changeCount })
10834
- ] })
10835
- ] }),
10836
- !info.canChange && info.cooldownEndsAt && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-warning)]", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("span", { className: "text-sm text-[var(--l-pass-warning)]", children: [
10837
- "You can change your nickname again on ",
10838
- cooldownEndDate,
10839
- " (",
10840
- daysRemaining,
10841
- " days remaining)"
10842
- ] }) }),
10843
- info.canChange && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-success)]", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: "text-sm text-[var(--l-pass-success)]", children: "You can change your nickname" }) })
10844
- ] });
10845
- }
10846
-
10847
10669
  // src/internal/components/NicknameSettings/NicknameEditForm.tsx
10848
- var import_react44 = require("react");
10849
10670
  var import_lucide_react34 = require("lucide-react");
10671
+ var import_react41 = require("react");
10850
10672
 
10851
10673
  // src/internal/hooks/useChangeNickname.ts
10852
- var import_react_query30 = require("@tanstack/react-query");
10674
+ var import_react_query28 = require("@tanstack/react-query");
10853
10675
  init_nickname();
10854
10676
  init_profile();
10855
10677
  function useChangeNickname(options) {
10856
- const queryClient3 = (0, import_react_query30.useQueryClient)();
10857
- const mutation = (0, import_react_query30.useMutation)({
10678
+ const queryClient3 = (0, import_react_query28.useQueryClient)();
10679
+ const mutation = (0, import_react_query28.useMutation)({
10858
10680
  mutationFn: (handle) => changeNickname(handle),
10859
10681
  onSuccess: (result) => {
10860
10682
  queryClient3.invalidateQueries({ queryKey: [QUERY_KEYS.nicknameInfo] });
@@ -10889,8 +10711,8 @@ function useChangeNickname(options) {
10889
10711
  }
10890
10712
 
10891
10713
  // src/internal/hooks/useNicknameAvailability.ts
10892
- var import_react_query31 = require("@tanstack/react-query");
10893
- var import_react43 = require("react");
10714
+ var import_react_query29 = require("@tanstack/react-query");
10715
+ var import_react40 = require("react");
10894
10716
  init_nickname();
10895
10717
  init_profile();
10896
10718
 
@@ -10921,12 +10743,12 @@ function normalizeNickname(handle) {
10921
10743
  // src/internal/hooks/useNicknameAvailability.ts
10922
10744
  var DEBOUNCE_MS = 300;
10923
10745
  function useNicknameAvailability(handle, enabled = true) {
10924
- const [debouncedHandle, setDebouncedHandle] = (0, import_react43.useState)("");
10925
- const [isDebouncing, setIsDebouncing] = (0, import_react43.useState)(false);
10746
+ const [debouncedHandle, setDebouncedHandle] = (0, import_react40.useState)("");
10747
+ const [isDebouncing, setIsDebouncing] = (0, import_react40.useState)(false);
10926
10748
  const normalized = normalizeNickname(handle);
10927
10749
  const validation = validateNickname(handle);
10928
10750
  const isValidForCheck = validation.valid && normalized.length > 0;
10929
- (0, import_react43.useEffect)(() => {
10751
+ (0, import_react40.useEffect)(() => {
10930
10752
  if (!isValidForCheck || !enabled) {
10931
10753
  setDebouncedHandle("");
10932
10754
  setIsDebouncing(false);
@@ -10941,7 +10763,7 @@ function useNicknameAvailability(handle, enabled = true) {
10941
10763
  clearTimeout(timer);
10942
10764
  };
10943
10765
  }, [normalized, isValidForCheck, enabled]);
10944
- const query = (0, import_react_query31.useQuery)({
10766
+ const query = (0, import_react_query29.useQuery)({
10945
10767
  queryKey: QUERY_KEYS.nicknameAvailability(debouncedHandle),
10946
10768
  queryFn: () => checkNicknameAvailability(debouncedHandle),
10947
10769
  enabled: enabled && isValidForCheck && debouncedHandle.length > 0,
@@ -10984,7 +10806,7 @@ function getNicknameErrorMessage(code, params) {
10984
10806
 
10985
10807
  // src/internal/components/NicknameSettings/NicknameAvailabilityIndicator.tsx
10986
10808
  var import_lucide_react33 = require("lucide-react");
10987
- var import_jsx_runtime54 = require("react/jsx-runtime");
10809
+ var import_jsx_runtime53 = require("react/jsx-runtime");
10988
10810
  function NicknameAvailabilityIndicator({
10989
10811
  isChecking,
10990
10812
  availability,
@@ -10994,32 +10816,32 @@ function NicknameAvailabilityIndicator({
10994
10816
  return null;
10995
10817
  }
10996
10818
  if (isChecking) {
10997
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-fg-muted)]", children: [
10998
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react33.Loader, { className: "w-3 h-3 animate-spin" }),
10999
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: "Checking availability..." })
10819
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-fg-muted)]", children: [
10820
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react33.Loader, { className: "w-3 h-3 animate-spin" }),
10821
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Checking availability..." })
11000
10822
  ] });
11001
10823
  }
11002
10824
  if (!availability) {
11003
10825
  return null;
11004
10826
  }
11005
10827
  if (availability.available) {
11006
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-success)]", children: [
11007
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react33.Check, { className: "w-3 h-3" }),
11008
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: "Nickname is available" })
10828
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-success)]", children: [
10829
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react33.Check, { className: "w-3 h-3" }),
10830
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: "Nickname is available" })
11009
10831
  ] });
11010
10832
  }
11011
10833
  const reason = availability.reason ? getNicknameErrorMessage(availability.reason) : "This nickname is not available";
11012
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-error)]", children: [
11013
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react33.X, { className: "w-3 h-3" }),
11014
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: reason })
10834
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-[var(--l-pass-error)]", children: [
10835
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react33.X, { className: "w-3 h-3" }),
10836
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { children: reason })
11015
10837
  ] });
11016
10838
  }
11017
10839
 
11018
10840
  // src/internal/components/NicknameSettings/NicknameEditForm.tsx
11019
- var import_jsx_runtime55 = require("react/jsx-runtime");
10841
+ var import_jsx_runtime54 = require("react/jsx-runtime");
11020
10842
  function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
11021
- const [inputValue, setInputValue] = (0, import_react44.useState)("");
11022
- const [clientError, setClientError] = (0, import_react44.useState)(null);
10843
+ const [inputValue, setInputValue] = (0, import_react41.useState)("");
10844
+ const [clientError, setClientError] = (0, import_react41.useState)(null);
11023
10845
  const normalized = normalizeNickname(inputValue);
11024
10846
  const isSameAsCurrentHandle = normalized === currentHandle.toLowerCase();
11025
10847
  const validation = validateNickname(inputValue);
@@ -11032,7 +10854,7 @@ function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
11032
10854
  onSuccess?.();
11033
10855
  }
11034
10856
  });
11035
- const handleInputChange = (0, import_react44.useCallback)(
10857
+ const handleInputChange = (0, import_react41.useCallback)(
11036
10858
  (e) => {
11037
10859
  const value = e.target.value;
11038
10860
  setInputValue(value);
@@ -11047,7 +10869,7 @@ function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
11047
10869
  },
11048
10870
  [clientError, isError, isSuccess, reset]
11049
10871
  );
11050
- const handleSubmit = (0, import_react44.useCallback)(
10872
+ const handleSubmit = (0, import_react41.useCallback)(
11051
10873
  (e) => {
11052
10874
  e.preventDefault();
11053
10875
  const normalized2 = normalizeNickname(inputValue);
@@ -11073,10 +10895,10 @@ function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
11073
10895
  if (!canChange) {
11074
10896
  return null;
11075
10897
  }
11076
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("form", { onSubmit: handleSubmit, className: "w-full flex flex-col gap-3", children: [
11077
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col gap-1", children: [
11078
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "New nickname" }),
11079
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
10898
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("form", { onSubmit: handleSubmit, className: "w-full flex flex-col gap-3", children: [
10899
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex flex-col gap-1", children: [
10900
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "New nickname" }),
10901
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
11080
10902
  Input,
11081
10903
  {
11082
10904
  value: inputValue,
@@ -11086,16 +10908,84 @@ function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
11086
10908
  error: displayError || void 0
11087
10909
  }
11088
10910
  ),
11089
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "3-20 characters, letters, numbers, and underscores only" }) }),
11090
- shouldCheckAvailability && !clientError && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(NicknameAvailabilityIndicator, { isChecking, availability })
10911
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "3-20 characters, letters, numbers, and underscores only" }) }),
10912
+ shouldCheckAvailability && !clientError && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(NicknameAvailabilityIndicator, { isChecking, availability })
10913
+ ] }),
10914
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Button, { type: "submit", size: "large", disabled: isSubmitDisabled, className: "w-full", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
10915
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.Loader, { className: "w-4 h-4 mr-2 animate-spin" }),
10916
+ "Changing..."
10917
+ ] }) : isSuccess ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
10918
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react34.Check, { className: "w-4 h-4 mr-2" }),
10919
+ "Nickname changed!"
10920
+ ] }) : "Change Nickname" })
10921
+ ] });
10922
+ }
10923
+
10924
+ // src/internal/components/NicknameSettings/NicknameInfoDisplay.tsx
10925
+ var import_react42 = require("react");
10926
+
10927
+ // src/internal/lib/nickname-cooldown.ts
10928
+ function getDaysRemaining(cooldownEndsAt) {
10929
+ if (!cooldownEndsAt) return 0;
10930
+ const endDate = new Date(cooldownEndsAt);
10931
+ const now = /* @__PURE__ */ new Date();
10932
+ if (isNaN(endDate.getTime())) return 0;
10933
+ if (endDate <= now) return 0;
10934
+ const diffMs = endDate.getTime() - now.getTime();
10935
+ const diffDays = Math.ceil(diffMs / (1e3 * 60 * 60 * 24));
10936
+ return Math.max(0, diffDays);
10937
+ }
10938
+ function formatCooldownEndDate(cooldownEndsAt) {
10939
+ if (!cooldownEndsAt) return "";
10940
+ const endDate = new Date(cooldownEndsAt);
10941
+ if (isNaN(endDate.getTime())) return "";
10942
+ return endDate.toLocaleDateString(void 0, {
10943
+ year: "numeric",
10944
+ month: "short",
10945
+ day: "numeric"
10946
+ });
10947
+ }
10948
+
10949
+ // src/internal/components/NicknameSettings/NicknameInfoDisplay.tsx
10950
+ var import_jsx_runtime55 = require("react/jsx-runtime");
10951
+ function NicknameInfoDisplay({ info }) {
10952
+ const daysRemaining = getDaysRemaining(info.cooldownEndsAt);
10953
+ const cooldownEndDate = formatCooldownEndDate(info.cooldownEndsAt);
10954
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_react42.Fragment, { children: [
10955
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col gap-1", children: [
10956
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-xs text-[var(--l-pass-fg-muted)]", children: "Your nickname" }),
10957
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-lg font-bold text-[var(--l-pass-fg)]", children: info.displayHandle })
10958
+ ] }),
10959
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-4 text-xs text-[var(--l-pass-fg-muted)]", children: [
10960
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
10961
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: "Created" }),
10962
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.createdAt).toLocaleDateString(void 0, {
10963
+ year: "numeric",
10964
+ month: "short",
10965
+ day: "numeric"
10966
+ }) })
10967
+ ] }),
10968
+ info.changedAt && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
10969
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: "Last changed" }),
10970
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: new Date(info.changedAt).toLocaleDateString(void 0, {
10971
+ year: "numeric",
10972
+ month: "short",
10973
+ day: "numeric"
10974
+ }) })
10975
+ ] }),
10976
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
10977
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: "Times changed" }),
10978
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-[var(--l-pass-fg)]", children: info.changeCount })
10979
+ ] })
11091
10980
  ] }),
11092
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Button, { type: "submit", disabled: isSubmitDisabled, className: "w-full", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
11093
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react34.Loader, { className: "w-4 h-4 mr-2 animate-spin" }),
11094
- "Changing..."
11095
- ] }) : isSuccess ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
11096
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react34.Check, { className: "w-4 h-4 mr-2" }),
11097
- "Nickname changed!"
11098
- ] }) : "Change Nickname" })
10981
+ !info.canChange && info.cooldownEndsAt && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-warning)]", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("span", { className: "text-sm text-[var(--l-pass-warning)]", children: [
10982
+ "You can change your nickname again on ",
10983
+ cooldownEndDate,
10984
+ " (",
10985
+ daysRemaining,
10986
+ " days remaining)"
10987
+ ] }) }),
10988
+ info.canChange && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "p-3 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-success)]", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "text-sm text-[var(--l-pass-success)]", children: "You can change your nickname" }) })
11099
10989
  ] });
11100
10990
  }
11101
10991
 
@@ -11103,52 +10993,42 @@ function NicknameEditForm({ currentHandle, canChange, onSuccess }) {
11103
10993
  var import_jsx_runtime56 = require("react/jsx-runtime");
11104
10994
  function NicknameSettings() {
11105
10995
  const setPage = useLayoutDataStore((st) => st.setPage);
10996
+ const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
11106
10997
  const { data: nicknameInfo, isLoading, isError, error, refetch } = useNicknameInfo();
11107
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
11108
- /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "relative flex items-center justify-center gap-2 px-5 pt-3 pb-6", children: [
11109
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.AtSign, { className: "w-6 h-6" }),
11110
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "font-bold text-xl leading-6", children: "Nickname" }),
11111
- /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
11112
- Button,
11113
- {
11114
- style: { opacity: 0.5, transform: "translate(-4px, -4px)" },
11115
- title: "Back to Settings",
11116
- variant: "ghost",
11117
- size: "icon",
11118
- className: "absolute left-0 top-0 w-5 h-5",
11119
- onClick: () => setPage("settings" /* SETTINGS */),
11120
- children: [
11121
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.ArrowLeft, { className: "h-4 w-4" }),
11122
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "sr-only", children: "Back to Settings" })
11123
- ]
11124
- }
11125
- )
11126
- ] }),
11127
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "w-full p-8 flex flex-col items-center justify-center gap-2", children: [
11128
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.Loader, { className: "w-5 h-5 animate-spin text-[var(--l-pass-fg-muted)]" }),
11129
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-sm text-[var(--l-pass-fg-muted)]", children: "Loading nickname info..." })
11130
- ] }),
11131
- isError && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-full p-4 rounded-[var(--l-pass-el-bdrs)] bg-[var(--l-pass-bg-error)]", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-sm text-[var(--l-pass-error)]", children: error?.message || "Failed to load nickname info" }) }),
11132
- nicknameInfo && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(NicknameInfoDisplay, { info: nicknameInfo }),
11133
- nicknameInfo && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
11134
- NicknameEditForm,
11135
- {
11136
- currentHandle: nicknameInfo.handle,
11137
- canChange: nicknameInfo.canChange,
11138
- onSuccess: refetch
11139
- }
11140
- )
11141
- ] });
10998
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
10999
+ "div",
11000
+ {
11001
+ style: { "--l-pass-scrollbar-mah": `${maxScrollHeight}px` },
11002
+ className: "list-scrollbar-y w-full",
11003
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)] p-[var(--l-pass-pd)]", children: [
11004
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
11005
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("settings" /* SETTINGS */), children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.ArrowLeft, { className: "h-4 w-4" }) }),
11006
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "text-xl font-semibold", children: "Nickname" })
11007
+ ] }),
11008
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "w-full p-8 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_lucide_react35.Loader, { className: "w-5 h-5 animate-spin" }) }),
11009
+ nicknameInfo && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(NicknameInfoDisplay, { info: nicknameInfo }),
11010
+ nicknameInfo && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
11011
+ NicknameEditForm,
11012
+ {
11013
+ currentHandle: nicknameInfo.handle,
11014
+ canChange: nicknameInfo.canChange,
11015
+ onSuccess: refetch
11016
+ }
11017
+ ),
11018
+ isError && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Highlight, { type: "error", children: error?.message || "Failed to load nickname info" })
11019
+ ] })
11020
+ }
11021
+ );
11142
11022
  }
11143
11023
 
11144
11024
  // src/internal/components/PortfolioMenu/PortfolioMenu.tsx
11145
- var import_react_query34 = require("@tanstack/react-query");
11025
+ var import_react_query32 = require("@tanstack/react-query");
11146
11026
  var import_lucide_react37 = require("lucide-react");
11147
- var import_react47 = require("react");
11027
+ var import_react45 = require("react");
11148
11028
 
11149
11029
  // src/internal/hooks/useBlockscoutAssets.ts
11150
- var import_react45 = require("react");
11151
- var import_react_query32 = require("@tanstack/react-query");
11030
+ var import_react43 = require("react");
11031
+ var import_react_query30 = require("@tanstack/react-query");
11152
11032
  var import_wagmi2 = require("wagmi");
11153
11033
  var import_viem5 = require("viem");
11154
11034
  var import_clients2 = require("@lumiapassport/core/clients");
@@ -11290,12 +11170,12 @@ function createError(error) {
11290
11170
  function useBlockscoutAssets(options) {
11291
11171
  const { address, enabled = true, detectSecurityTokens = true } = options;
11292
11172
  const blockscoutApiUrl = getBlockscoutApiUrl();
11293
- const blockscoutClient = (0, import_react45.useMemo)(
11173
+ const blockscoutClient = (0, import_react43.useMemo)(
11294
11174
  () => (0, import_clients2.createBlockscoutClient)({ baseUrl: blockscoutApiUrl }),
11295
11175
  [blockscoutApiUrl]
11296
11176
  );
11297
11177
  const publicClient2 = (0, import_wagmi2.usePublicClient)({ chainId: lumiaBeam.id });
11298
- const lastRefreshRef = (0, import_react45.useRef)(0);
11178
+ const lastRefreshRef = (0, import_react43.useRef)(0);
11299
11179
  const {
11300
11180
  data: nativeBalanceData,
11301
11181
  isLoading: nativeLoading,
@@ -11313,7 +11193,7 @@ function useBlockscoutAssets(options) {
11313
11193
  error: tokensError,
11314
11194
  refetch: refetchTokens,
11315
11195
  dataUpdatedAt
11316
- } = (0, import_react_query32.useQuery)({
11196
+ } = (0, import_react_query30.useQuery)({
11317
11197
  queryKey: [BLOCKSCOUT_QUERY_KEY, address, blockscoutApiUrl],
11318
11198
  queryFn: () => blockscoutClient.getTokenBalances(address),
11319
11199
  enabled: !!address && enabled,
@@ -11326,7 +11206,7 @@ function useBlockscoutAssets(options) {
11326
11206
  data: nftItems,
11327
11207
  isLoading: nftsLoading,
11328
11208
  refetch: refetchNfts
11329
- } = (0, import_react_query32.useQuery)({
11209
+ } = (0, import_react_query30.useQuery)({
11330
11210
  queryKey: [BLOCKSCOUT_QUERY_KEY, "nfts", address, blockscoutApiUrl],
11331
11211
  queryFn: () => blockscoutClient.getNfts(address),
11332
11212
  enabled: !!address && enabled,
@@ -11335,11 +11215,11 @@ function useBlockscoutAssets(options) {
11335
11215
  retry: 2,
11336
11216
  retryDelay: 1e3
11337
11217
  });
11338
- const erc20TokenAddresses = (0, import_react45.useMemo)(() => {
11218
+ const erc20TokenAddresses = (0, import_react43.useMemo)(() => {
11339
11219
  if (!tokenBalances) return [];
11340
11220
  return tokenBalances.filter((tb) => tb.token.type === "ERC-20").map((tb) => tb.token.address);
11341
11221
  }, [tokenBalances]);
11342
- const { data: erc3643Results } = (0, import_react_query32.useQuery)({
11222
+ const { data: erc3643Results } = (0, import_react_query30.useQuery)({
11343
11223
  queryKey: [ERC3643_DETECTION_QUERY_KEY, address, erc20TokenAddresses],
11344
11224
  queryFn: async () => {
11345
11225
  if (!publicClient2 || erc20TokenAddresses.length === 0) {
@@ -11379,7 +11259,7 @@ function useBlockscoutAssets(options) {
11379
11259
  gcTime: BLOCKSCOUT_QUERY_GC_TIME,
11380
11260
  retry: 1
11381
11261
  });
11382
- const assets = (0, import_react45.useMemo)(() => {
11262
+ const assets = (0, import_react43.useMemo)(() => {
11383
11263
  const result = [];
11384
11264
  if (nativeBalanceData) {
11385
11265
  result.push({
@@ -11415,7 +11295,7 @@ function useBlockscoutAssets(options) {
11415
11295
  }
11416
11296
  return result;
11417
11297
  }, [nativeBalanceData, tokenBalances, nftItems, erc3643Results]);
11418
- const nativeBalance = (0, import_react45.useMemo)(() => {
11298
+ const nativeBalance = (0, import_react43.useMemo)(() => {
11419
11299
  if (!nativeBalanceData) return null;
11420
11300
  return {
11421
11301
  value: nativeBalanceData.value,
@@ -11423,11 +11303,11 @@ function useBlockscoutAssets(options) {
11423
11303
  symbol: "LUMIA"
11424
11304
  };
11425
11305
  }, [nativeBalanceData]);
11426
- const error = (0, import_react45.useMemo)(() => {
11306
+ const error = (0, import_react43.useMemo)(() => {
11427
11307
  if (!tokensError) return null;
11428
11308
  return createError(tokensError);
11429
11309
  }, [tokensError]);
11430
- const refreshBalances = (0, import_react45.useCallback)(async () => {
11310
+ const refreshBalances = (0, import_react43.useCallback)(async () => {
11431
11311
  const now = Date.now();
11432
11312
  if (now - lastRefreshRef.current < BLOCKSCOUT_REFRESH_DEBOUNCE) {
11433
11313
  return;
@@ -11435,7 +11315,7 @@ function useBlockscoutAssets(options) {
11435
11315
  lastRefreshRef.current = now;
11436
11316
  await Promise.all([refetchNative(), refetchTokens(), refetchNfts()]);
11437
11317
  }, [refetchNative, refetchTokens, refetchNfts]);
11438
- const getTokenBalance = (0, import_react45.useCallback)(
11318
+ const getTokenBalance = (0, import_react43.useCallback)(
11439
11319
  (tokenAddress) => {
11440
11320
  return assets.find((a) => a.address?.toLowerCase() === tokenAddress.toLowerCase()) || null;
11441
11321
  },
@@ -11455,9 +11335,9 @@ function useBlockscoutAssets(options) {
11455
11335
  }
11456
11336
 
11457
11337
  // src/internal/components/PortfolioMenu/PortfolioItem.tsx
11458
- var import_react_query33 = require("@tanstack/react-query");
11338
+ var import_react_query31 = require("@tanstack/react-query");
11459
11339
  var import_lucide_react36 = require("lucide-react");
11460
- var import_react46 = require("react");
11340
+ var import_react44 = require("react");
11461
11341
  var import_viem6 = require("viem");
11462
11342
  init_base();
11463
11343
  var import_jsx_runtime57 = require("react/jsx-runtime");
@@ -11495,16 +11375,16 @@ async function getAssetRate2(symbol) {
11495
11375
  var ASSETS_RATES_QUERY_KEY = "lumia-passport-assets-rates-query-key";
11496
11376
  function PortfolioItem(props) {
11497
11377
  const { address, asset, isProjectAsset } = props;
11498
- const [nftImageError, setNftImageError] = (0, import_react46.useState)(false);
11499
- const [logoError, setLogoError] = (0, import_react46.useState)(false);
11378
+ const [nftImageError, setNftImageError] = (0, import_react44.useState)(false);
11379
+ const [logoError, setLogoError] = (0, import_react44.useState)(false);
11500
11380
  const { assets: projectAssets, showBalanceAs: showBalanceAsSymbol } = useLumiaPassportConfig().config.current.projectAssets || {};
11501
- const qc = (0, import_react_query33.useQueryClient)();
11381
+ const qc = (0, import_react_query31.useQueryClient)();
11502
11382
  const { balanceQueryKey } = projectAssets?.find((a) => a.symbol === showBalanceAsSymbol) || {};
11503
11383
  const projectAssetBalance = !!balanceQueryKey ? qc.getQueryData(balanceQueryKey) : null;
11504
11384
  const isNft = isNftAsset(asset);
11505
11385
  const nftImage = getNftImage(asset);
11506
11386
  const isSecurity = isSecurityToken(asset);
11507
- const { data: assetRate, isLoading: isRateLoading } = (0, import_react_query33.useQuery)({
11387
+ const { data: assetRate, isLoading: isRateLoading } = (0, import_react_query31.useQuery)({
11508
11388
  retry: false,
11509
11389
  staleTime: 4 * 60 * 1e3,
11510
11390
  enabled: !!address && !!isAssetRateAvailable(asset.symbol) && !isProjectAsset && !isNft && !isSecurity,
@@ -11609,7 +11489,7 @@ function PortfolioItem(props) {
11609
11489
  var import_jsx_runtime58 = require("react/jsx-runtime");
11610
11490
  function PortfolioMenu() {
11611
11491
  const { assets: projectAssets = [] } = useLumiaPassportConfig().config.current?.projectAssets || {};
11612
- const qc = (0, import_react_query34.useQueryClient)();
11492
+ const qc = (0, import_react_query32.useQueryClient)();
11613
11493
  const address = useLumiaPassportSession((st) => st.address);
11614
11494
  const setPage = useLayoutDataStore((st) => st.setPage);
11615
11495
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
@@ -11622,7 +11502,7 @@ function PortfolioMenu() {
11622
11502
  } = useBlockscoutAssets({
11623
11503
  address
11624
11504
  });
11625
- const refreshAllAssetsBalances = (0, import_react47.useCallback)(() => {
11505
+ const refreshAllAssetsBalances = (0, import_react45.useCallback)(() => {
11626
11506
  Promise.all(projectAssets.map((asset) => qc.invalidateQueries({ queryKey: asset.balanceQueryKey })));
11627
11507
  refreshBlockscoutBalances();
11628
11508
  }, [qc, projectAssets, refreshBlockscoutBalances]);
@@ -11674,10 +11554,10 @@ function PortfolioMenu() {
11674
11554
  }
11675
11555
 
11676
11556
  // src/internal/components/SecurityMenu/SecurityMenu.tsx
11677
- var import_react_query35 = require("@tanstack/react-query");
11557
+ var import_react_query33 = require("@tanstack/react-query");
11678
11558
  var import_dayjs3 = __toESM(require("dayjs"), 1);
11679
11559
  var import_lucide_react41 = require("lucide-react");
11680
- var import_react48 = require("react");
11560
+ var import_react46 = require("react");
11681
11561
  init_auth();
11682
11562
  init_keyshare();
11683
11563
  init_iframe_manager();
@@ -11864,14 +11744,14 @@ function Keyshare(props) {
11864
11744
  // src/internal/components/SecurityMenu/SecurityMenu.tsx
11865
11745
  var import_jsx_runtime63 = require("react/jsx-runtime");
11866
11746
  function SecurityMenu() {
11867
- const qc = (0, import_react_query35.useQueryClient)();
11747
+ const qc = (0, import_react_query33.useQueryClient)();
11868
11748
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
11869
11749
  const setPage = useLayoutDataStore((st) => st.setPage);
11870
11750
  const userId = import_auth3.jwtTokenManager.getUserId();
11871
11751
  const serverHasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
11872
- const [isRemoving, setIsRemoving] = (0, import_react48.useState)(false);
11873
- const [appToRemove, setAppToRemove] = (0, import_react48.useState)(null);
11874
- const { data: recoveryData, isFetching: isRecoveryLoading } = (0, import_react_query35.useQuery)({
11752
+ const [isRemoving, setIsRemoving] = (0, import_react46.useState)(false);
11753
+ const [appToRemove, setAppToRemove] = (0, import_react46.useState)(null);
11754
+ const { data: recoveryData, isFetching: isRecoveryLoading } = (0, import_react_query33.useQuery)({
11875
11755
  enabled: !!userId,
11876
11756
  queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
11877
11757
  queryFn: async () => {
@@ -12036,21 +11916,74 @@ function SecurityMenu() {
12036
11916
 
12037
11917
  // src/internal/components/SendRecieveMenu/SendLumiaMenu.tsx
12038
11918
  var import_lucide_react42 = require("lucide-react");
12039
- var import_react52 = require("react");
11919
+ var import_react50 = require("react");
12040
11920
  var import_viem9 = require("viem");
12041
11921
  var import_wagmi4 = require("wagmi");
12042
11922
 
11923
+ // src/hooks/useNicknameResolve.ts
11924
+ var import_react_query34 = require("@tanstack/react-query");
11925
+ var import_react47 = require("react");
11926
+ init_nickname();
11927
+ init_profile();
11928
+ var DEBOUNCE_MS2 = 300;
11929
+ function looksLikeNickname(input) {
11930
+ if (!input) return false;
11931
+ if (input.startsWith("0x")) return false;
11932
+ if (input.startsWith("@")) return true;
11933
+ const normalized = input.toLowerCase().trim();
11934
+ return /^[a-z0-9_]+$/.test(normalized);
11935
+ }
11936
+ function useNicknameResolve(input, enabled = true) {
11937
+ const [debouncedInput, setDebouncedInput] = (0, import_react47.useState)("");
11938
+ const [isDebouncing, setIsDebouncing] = (0, import_react47.useState)(false);
11939
+ const normalized = normalizeNickname(input);
11940
+ const isNicknameInput = looksLikeNickname(input) && normalized.length >= 3;
11941
+ (0, import_react47.useEffect)(() => {
11942
+ if (!isNicknameInput || !enabled) {
11943
+ setDebouncedInput("");
11944
+ setIsDebouncing(false);
11945
+ return;
11946
+ }
11947
+ setIsDebouncing(true);
11948
+ const timer = setTimeout(() => {
11949
+ setDebouncedInput(normalized);
11950
+ setIsDebouncing(false);
11951
+ }, DEBOUNCE_MS2);
11952
+ return () => {
11953
+ clearTimeout(timer);
11954
+ };
11955
+ }, [normalized, isNicknameInput, enabled]);
11956
+ const query = (0, import_react_query34.useQuery)({
11957
+ queryKey: QUERY_KEYS.nicknameResolve(debouncedInput),
11958
+ queryFn: () => resolveNickname(debouncedInput),
11959
+ enabled: enabled && isNicknameInput && debouncedInput.length > 0,
11960
+ staleTime: 1e3 * 60 * 5,
11961
+ // 5 minutes - addresses don't change often
11962
+ retry: 1
11963
+ });
11964
+ const isNotFound = query.isError && query.error?.code === "NICKNAME_NOT_FOUND";
11965
+ return {
11966
+ data: query.data,
11967
+ isLoading: query.isLoading,
11968
+ isResolving: isDebouncing || query.isFetching,
11969
+ isError: query.isError,
11970
+ isNotFound,
11971
+ error: query.error,
11972
+ resolvedAddress: query.data?.walletAddress || null
11973
+ };
11974
+ }
11975
+
12043
11976
  // src/hooks/useSendTransaction.ts
12044
- var import_react49 = require("react");
11977
+ var import_react48 = require("react");
12045
11978
  var import_viem7 = require("viem");
12046
11979
  init_account();
12047
11980
  function useSendTransaction() {
12048
11981
  const session = useLumiaPassportSession((st) => st.session);
12049
11982
  const address = useLumiaPassportSession((st) => st.address);
12050
- const [isLoading, setIsLoading] = (0, import_react49.useState)(false);
12051
- const [error, setError] = (0, import_react49.useState)(null);
12052
- const [userOpHash, setUserOpHash] = (0, import_react49.useState)(null);
12053
- const sendTransaction = (0, import_react49.useCallback)(
11983
+ const [isLoading, setIsLoading] = (0, import_react48.useState)(false);
11984
+ const [error, setError] = (0, import_react48.useState)(null);
11985
+ const [userOpHash, setUserOpHash] = (0, import_react48.useState)(null);
11986
+ const sendTransaction = (0, import_react48.useCallback)(
12054
11987
  async (params) => {
12055
11988
  if (!session || !address) {
12056
11989
  setError("No active session");
@@ -12090,7 +12023,7 @@ function useSendTransaction() {
12090
12023
  },
12091
12024
  [session, address]
12092
12025
  );
12093
- const reset = (0, import_react49.useCallback)(() => {
12026
+ const reset = (0, import_react48.useCallback)(() => {
12094
12027
  setError(null);
12095
12028
  setUserOpHash(null);
12096
12029
  setIsLoading(false);
@@ -12104,61 +12037,8 @@ function useSendTransaction() {
12104
12037
  };
12105
12038
  }
12106
12039
 
12107
- // src/hooks/useNicknameResolve.ts
12108
- var import_react_query36 = require("@tanstack/react-query");
12109
- var import_react50 = require("react");
12110
- init_nickname();
12111
- init_profile();
12112
- var DEBOUNCE_MS2 = 300;
12113
- function looksLikeNickname(input) {
12114
- if (!input) return false;
12115
- if (input.startsWith("0x")) return false;
12116
- if (input.startsWith("@")) return true;
12117
- const normalized = input.toLowerCase().trim();
12118
- return /^[a-z0-9_]+$/.test(normalized);
12119
- }
12120
- function useNicknameResolve(input, enabled = true) {
12121
- const [debouncedInput, setDebouncedInput] = (0, import_react50.useState)("");
12122
- const [isDebouncing, setIsDebouncing] = (0, import_react50.useState)(false);
12123
- const normalized = normalizeNickname(input);
12124
- const isNicknameInput = looksLikeNickname(input) && normalized.length >= 3;
12125
- (0, import_react50.useEffect)(() => {
12126
- if (!isNicknameInput || !enabled) {
12127
- setDebouncedInput("");
12128
- setIsDebouncing(false);
12129
- return;
12130
- }
12131
- setIsDebouncing(true);
12132
- const timer = setTimeout(() => {
12133
- setDebouncedInput(normalized);
12134
- setIsDebouncing(false);
12135
- }, DEBOUNCE_MS2);
12136
- return () => {
12137
- clearTimeout(timer);
12138
- };
12139
- }, [normalized, isNicknameInput, enabled]);
12140
- const query = (0, import_react_query36.useQuery)({
12141
- queryKey: QUERY_KEYS.nicknameResolve(debouncedInput),
12142
- queryFn: () => resolveNickname(debouncedInput),
12143
- enabled: enabled && isNicknameInput && debouncedInput.length > 0,
12144
- staleTime: 1e3 * 60 * 5,
12145
- // 5 minutes - addresses don't change often
12146
- retry: 1
12147
- });
12148
- const isNotFound = query.isError && query.error?.code === "NICKNAME_NOT_FOUND";
12149
- return {
12150
- data: query.data,
12151
- isLoading: query.isLoading,
12152
- isResolving: isDebouncing || query.isFetching,
12153
- isError: query.isError,
12154
- isNotFound,
12155
- error: query.error,
12156
- resolvedAddress: query.data?.walletAddress || null
12157
- };
12158
- }
12159
-
12160
12040
  // src/modules/assets.ts
12161
- var import_react51 = __toESM(require("react"), 1);
12041
+ var import_react49 = __toESM(require("react"), 1);
12162
12042
  var import_wagmi3 = require("wagmi");
12163
12043
  var import_viem8 = require("viem");
12164
12044
  init_base();
@@ -12305,7 +12185,7 @@ function useTokenBalance(tokenAddress, userAddress) {
12305
12185
  }
12306
12186
  });
12307
12187
  const { tokenInfo } = useTokenInfo(tokenAddress);
12308
- const formattedBalance = import_react51.default.useMemo(() => {
12188
+ const formattedBalance = import_react49.default.useMemo(() => {
12309
12189
  if (!balance || !tokenInfo) return "0";
12310
12190
  return (0, import_viem8.formatUnits)(balance, tokenInfo.decimals);
12311
12191
  }, [balance, tokenInfo]);
@@ -12332,16 +12212,21 @@ function SendLumiaMenu() {
12332
12212
  address,
12333
12213
  chainId: lumiaBeam.id
12334
12214
  });
12335
- const [recipient, setRecipient] = (0, import_react52.useState)("");
12336
- const [amount, setAmount] = (0, import_react52.useState)("");
12337
- const [txStep, setTxStep] = (0, import_react52.useState)("input");
12338
- const [validationError, setValidationError] = (0, import_react52.useState)(null);
12215
+ const [recipient, setRecipient] = (0, import_react50.useState)("");
12216
+ const [amount, setAmount] = (0, import_react50.useState)("");
12217
+ const [txStep, setTxStep] = (0, import_react50.useState)("input");
12218
+ const [validationError, setValidationError] = (0, import_react50.useState)(null);
12339
12219
  const isNicknameInput = looksLikeNickname(recipient);
12340
- const { resolvedAddress, isResolving, isNotFound, data: nicknameData } = useNicknameResolve(recipient, isNicknameInput);
12220
+ const {
12221
+ resolvedAddress,
12222
+ isResolving,
12223
+ isNotFound,
12224
+ data: nicknameData
12225
+ } = useNicknameResolve(recipient, isNicknameInput);
12341
12226
  const effectiveAddress = isNicknameInput ? resolvedAddress : recipient;
12342
12227
  const nativeAsset = assets.find((a) => a.type === "native");
12343
12228
  const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
12344
- (0, import_react52.useEffect)(() => {
12229
+ (0, import_react50.useEffect)(() => {
12345
12230
  if (open) {
12346
12231
  setTxStep("input");
12347
12232
  setValidationError(null);
@@ -12447,30 +12332,18 @@ function SendLumiaMenu() {
12447
12332
  " LUMIA"
12448
12333
  ] })
12449
12334
  ] }),
12450
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "w-full relative", children: [
12451
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
12452
- Input,
12453
- {
12454
- Icon: LumiaIcon,
12455
- type: "number",
12456
- value: amount,
12457
- onChange: (e) => setAmount(e.target.value),
12458
- placeholder: "0.0",
12459
- step: "0.000001"
12460
- }
12461
- ),
12462
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
12463
- Button,
12464
- {
12465
- onClick: handleMaxAmount,
12466
- variant: "ghost",
12467
- size: "medium",
12468
- style: { transform: "translateY(-50%)" },
12469
- className: "absolute right-2 top-1/2",
12470
- children: "MAX"
12471
- }
12472
- )
12473
- ] })
12335
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
12336
+ Input,
12337
+ {
12338
+ Icon: LumiaIcon,
12339
+ type: "number",
12340
+ value: amount,
12341
+ onChange: (e) => setAmount(e.target.value),
12342
+ placeholder: "0.0",
12343
+ step: "0.000001",
12344
+ element: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Button, { onClick: handleMaxAmount, variant: "ghost", size: "medium", children: "MAX" })
12345
+ }
12346
+ )
12474
12347
  ] }),
12475
12348
  (validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2 p-3 bg-[var(--l-pass-bg-error)] text-[var(--l-pass-error)] rounded-[var(--l-pass-el-bdrs)]", children: [
12476
12349
  /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react42.AlertCircle, { className: "h-4 w-4" }),
@@ -12531,7 +12404,7 @@ function SendLumiaMenu() {
12531
12404
  // src/internal/components/SendRecieveMenu/ReceiveLumiaMenu.tsx
12532
12405
  var import_lucide_react43 = require("lucide-react");
12533
12406
  var import_qrcode = __toESM(require("qrcode"), 1);
12534
- var import_react53 = require("react");
12407
+ var import_react51 = require("react");
12535
12408
  init_clients();
12536
12409
  var import_jsx_runtime65 = require("react/jsx-runtime");
12537
12410
  function ReceiveLumiaMenu() {
@@ -12540,9 +12413,9 @@ function ReceiveLumiaMenu() {
12540
12413
  const setPage = useLayoutDataStore((st) => st.setPage);
12541
12414
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
12542
12415
  const open = page === "receive";
12543
- const [qrCodeUrl, setQrCodeUrl] = (0, import_react53.useState)("");
12544
- const [copied, setCopied] = (0, import_react53.useState)(false);
12545
- (0, import_react53.useEffect)(() => {
12416
+ const [qrCodeUrl, setQrCodeUrl] = (0, import_react51.useState)("");
12417
+ const [copied, setCopied] = (0, import_react51.useState)(false);
12418
+ (0, import_react51.useEffect)(() => {
12546
12419
  if (open && address) {
12547
12420
  import_qrcode.default.toDataURL(address, {
12548
12421
  width: 200,
@@ -12555,7 +12428,7 @@ function ReceiveLumiaMenu() {
12555
12428
  });
12556
12429
  }
12557
12430
  }, [open, address]);
12558
- const handleCopy = (0, import_react53.useCallback)(async () => {
12431
+ const handleCopy = (0, import_react51.useCallback)(async () => {
12559
12432
  if (!address) return;
12560
12433
  try {
12561
12434
  await navigator.clipboard.writeText(address);
@@ -12601,7 +12474,7 @@ function ReceiveLumiaMenu() {
12601
12474
 
12602
12475
  // src/internal/components/SettingsMenu/SettingsMenu.tsx
12603
12476
  var import_lucide_react45 = require("lucide-react");
12604
- var import_react54 = require("react");
12477
+ var import_react52 = require("react");
12605
12478
 
12606
12479
  // src/internal/components/SettingsMenu/constants.ts
12607
12480
  var import_lucide_react44 = require("lucide-react");
@@ -12636,35 +12509,46 @@ function SettingsMenu() {
12636
12509
  const setPage = useLayoutDataStore((st) => st.setPage);
12637
12510
  const settingsNotifications = useLayoutDataStore((st) => st.settingsNotifications);
12638
12511
  const setMainPageHeight = useLayoutDataStore((st) => st.setMainPageHeight);
12639
- (0, import_react54.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
12512
+ const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
12513
+ (0, import_react52.useEffect)(() => setMainPageHeight(DEFAULT_SETTINGS_MENU_HEIGHT), [setMainPageHeight]);
12640
12514
  useProvidersList();
12641
12515
  const navItems = NAV_BUTTONS.map((el) => ({ ...el, onClick: () => setPage(el.id) }));
12642
12516
  const highlightedKeys = settingsNotifications.map((n) => n.target);
12643
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]", children: [
12644
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
12645
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react45.ArrowLeft, { className: "h-4 w-4" }) }),
12646
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "text-xl font-semibold", children: "Settings" })
12647
- ] }),
12648
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
12649
- Button,
12650
- {
12651
- variant: "outline",
12652
- size: "large",
12653
- onClick,
12654
- disabled: !address,
12655
- className: cn(
12656
- //
12657
- "w-full items-center justify-start",
12658
- highlightedKeys.includes(id) && "animate-glow-warning"
12659
- ),
12660
- children: [
12661
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon2, { className: "w-4 h-4" }),
12662
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: name })
12663
- ]
12517
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
12518
+ "div",
12519
+ {
12520
+ style: {
12521
+ "--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
12522
+ "--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
12664
12523
  },
12665
- id
12666
- )) })
12667
- ] });
12524
+ className: "list-scrollbar-y w-full p-[var(--l-pass-pd)] flex flex-col gap-[var(--l-pass-gap)]",
12525
+ children: [
12526
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
12527
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Button, { variant: "ghost", size: "icon", title: "Back", onClick: () => setPage("main-menu" /* MAIN_MENU */), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react45.ArrowLeft, { className: "h-4 w-4" }) }),
12528
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "text-xl font-semibold", children: "Settings" })
12529
+ ] }),
12530
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: navItems.map(({ id, name, Icon: Icon2, onClick }) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
12531
+ Button,
12532
+ {
12533
+ variant: "outline",
12534
+ size: "large",
12535
+ onClick,
12536
+ disabled: !address,
12537
+ className: cn(
12538
+ //
12539
+ "w-full items-center justify-start",
12540
+ highlightedKeys.includes(id) && "animate-glow-warning"
12541
+ ),
12542
+ children: [
12543
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon2, { className: "w-4 h-4" }),
12544
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: name })
12545
+ ]
12546
+ },
12547
+ id
12548
+ )) })
12549
+ ]
12550
+ }
12551
+ );
12668
12552
  }
12669
12553
 
12670
12554
  // src/internal/components/TermsOfService.tsx
@@ -12695,9 +12579,9 @@ function TermsOfService() {
12695
12579
  }
12696
12580
 
12697
12581
  // src/internal/components/TransactionsMenu/TransactionsMenu.tsx
12698
- var import_react_query37 = require("@tanstack/react-query");
12582
+ var import_react_query35 = require("@tanstack/react-query");
12699
12583
  var import_lucide_react48 = require("lucide-react");
12700
- var import_react55 = require("react");
12584
+ var import_react53 = require("react");
12701
12585
 
12702
12586
  // src/internal/components/TransactionsMenu/api.ts
12703
12587
  init_base();
@@ -13162,24 +13046,24 @@ function TransactionsGroup(props) {
13162
13046
  // src/internal/components/TransactionsMenu/TransactionsMenu.tsx
13163
13047
  var import_jsx_runtime70 = require("react/jsx-runtime");
13164
13048
  function TransactionsMenu() {
13165
- const qc = (0, import_react_query37.useQueryClient)();
13049
+ const qc = (0, import_react_query35.useQueryClient)();
13166
13050
  const address = useLumiaPassportSession((st) => st.address);
13167
13051
  const page = useLayoutDataStore((st) => st.page);
13168
13052
  const setPage = useLayoutDataStore((st) => st.setPage);
13169
13053
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
13170
- const [expandedGroups, setExpandedGroups] = (0, import_react55.useState)({});
13054
+ const [expandedGroups, setExpandedGroups] = (0, import_react53.useState)({});
13171
13055
  const {
13172
13056
  data: txHistoryGroups = [],
13173
13057
  isLoading: isTxHistoryLoading,
13174
13058
  isFetching: isTxHistoryFetching,
13175
13059
  error: txHistoryError
13176
- } = (0, import_react_query37.useQuery)({
13060
+ } = (0, import_react_query35.useQuery)({
13177
13061
  retry: false,
13178
13062
  enabled: !!address && page === "transactions",
13179
13063
  queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address],
13180
13064
  queryFn: () => getTransactionsListQuery(address)
13181
13065
  });
13182
- const refreshTxHistory = (0, import_react55.useCallback)(
13066
+ const refreshTxHistory = (0, import_react53.useCallback)(
13183
13067
  () => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, address] }),
13184
13068
  [qc, address]
13185
13069
  );
@@ -13189,7 +13073,7 @@ function TransactionsMenu() {
13189
13073
  {
13190
13074
  style: {
13191
13075
  "--l-pass-scrollbar-mah": `${maxScrollHeight}px`,
13192
- "--l-pass-list-scrollbar-pd-r": "calc(var(--l-pass-pd) - 4px)"
13076
+ "--l-pass-list-scrollbar-pd-r": "var(--l-pass-pd)"
13193
13077
  },
13194
13078
  className: "list-scrollbar-y w-full p-[var(--l-pass-pd)]",
13195
13079
  children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--l-pass-gap)]", children: [
@@ -13333,8 +13217,6 @@ var import_jsx_runtime71 = require("react/jsx-runtime");
13333
13217
  var CLEAR_DIALOG_TIMEOUT = MAIN_DIALOG_ANIMATION_SPEED + 5;
13334
13218
  function usePageMapper() {
13335
13219
  const page = useLayoutDataStore((st) => st.page);
13336
- const session = useLumiaPassportSession((st) => st.session);
13337
- const protectedRoutes = !!session ? PAGE_MAP : PAGE_MAP;
13338
13220
  const {
13339
13221
  setDialogTitle,
13340
13222
  setDialogDescription,
@@ -13343,7 +13225,7 @@ function usePageMapper() {
13343
13225
  setIsDialogOpen,
13344
13226
  setIsDialogClosing
13345
13227
  } = useLayoutStore();
13346
- const closeDialog = (0, import_react56.useCallback)(() => {
13228
+ const closeDialog = (0, import_react54.useCallback)(() => {
13347
13229
  setIsDialogClosing(true);
13348
13230
  setTimeout(() => {
13349
13231
  setDialogContent(null);
@@ -13354,7 +13236,7 @@ function usePageMapper() {
13354
13236
  setIsDialogOpen(false);
13355
13237
  }, CLEAR_DIALOG_TIMEOUT);
13356
13238
  }, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
13357
- const openDialog = (0, import_react56.useCallback)(
13239
+ const openDialog = (0, import_react54.useCallback)(
13358
13240
  (pageItem) => {
13359
13241
  const PageContentComponent = pageItem.component;
13360
13242
  setDialogTitle(pageItem.title);
@@ -13364,20 +13246,20 @@ function usePageMapper() {
13364
13246
  },
13365
13247
  [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
13366
13248
  );
13367
- (0, import_react56.useEffect)(() => {
13249
+ (0, import_react54.useEffect)(() => {
13368
13250
  if (page === null) return closeDialog();
13369
- const pageItem = protectedRoutes[page];
13251
+ const pageItem = PAGE_MAP[page];
13370
13252
  if (!pageItem) {
13371
13253
  alert(`[PASSPORT MAPPER]: Requested page "${page}" is not existing or not allowed. Closing dialog...`);
13372
13254
  closeDialog();
13373
13255
  return;
13374
13256
  }
13375
13257
  openDialog(pageItem);
13376
- }, [protectedRoutes, page, closeDialog, openDialog]);
13258
+ }, [page, closeDialog, openDialog]);
13377
13259
  }
13378
13260
 
13379
13261
  // src/internal/hooks/useSettingsNotifications.ts
13380
- var import_react57 = require("react");
13262
+ var import_react55 = require("react");
13381
13263
  init_auth();
13382
13264
  var EMAIL_NOT_CONNECTED_NOTIFICATION = {
13383
13265
  id: "email-not-connected",
@@ -13388,7 +13270,7 @@ function useSettingsNotifications() {
13388
13270
  const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
13389
13271
  const providers = import_auth3.jwtTokenManager.getProviders();
13390
13272
  const hasEmail = providers.includes("email");
13391
- (0, import_react57.useEffect)(() => {
13273
+ (0, import_react55.useEffect)(() => {
13392
13274
  setSettingsNotifications({
13393
13275
  ...EMAIL_NOT_CONNECTED_NOTIFICATION,
13394
13276
  status: hasEmail ? "resolved" : "active"
@@ -13397,7 +13279,7 @@ function useSettingsNotifications() {
13397
13279
  }
13398
13280
 
13399
13281
  // src/internal/hooks/useWalletStatus.ts
13400
- var import_react58 = require("react");
13282
+ var import_react56 = require("react");
13401
13283
  init_auth();
13402
13284
  function useWalletStatus() {
13403
13285
  const isIframeReady = useLumiaPassportSession((st) => st.isIframeReady);
@@ -13407,7 +13289,7 @@ function useWalletStatus() {
13407
13289
  config: { current: config },
13408
13290
  callbacks
13409
13291
  } = useLumiaPassportConfig();
13410
- (0, import_react58.useEffect)(() => {
13292
+ (0, import_react56.useEffect)(() => {
13411
13293
  if (!isIframeReady || !config.projectId || !callbacks?.onWalletReady) return;
13412
13294
  const userId = import_auth3.jwtTokenManager.getUserId();
13413
13295
  const hasKeyshare = import_auth3.jwtTokenManager.getHasKeyshare();
@@ -13437,15 +13319,13 @@ function LumiaPassportDialog() {
13437
13319
  const mainPageHeight = useLayoutDataStore((st) => st.mainPageHeight);
13438
13320
  const setPage = useLayoutDataStore((st) => st.setPage);
13439
13321
  const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
13440
- (0, import_react59.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
13322
+ (0, import_react57.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
13441
13323
  usePageMapper();
13442
13324
  useAutoConnect();
13443
- useCheckVaultStatus();
13444
13325
  useBackupStatusChanges();
13445
13326
  useDetectMaxScrollHeight();
13446
13327
  useSettingsNotifications();
13447
13328
  useListenIframeAuthEvents();
13448
- useBackupWarning();
13449
13329
  useWalletStatus();
13450
13330
  const isHeaderHidden = !session || page === "keysare-backup" /* KEYSARE_BACKUP */ && !hasServerVault;
13451
13331
  return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
@@ -13479,23 +13359,23 @@ function LumiaPassportDialog() {
13479
13359
  }
13480
13360
 
13481
13361
  // src/internal/components/TssManager.tsx
13482
- var import_react60 = __toESM(require("react"), 1);
13362
+ var import_react58 = __toESM(require("react"), 1);
13483
13363
  init_auth();
13484
13364
  init_clients();
13485
- var TssManagerWithRef = import_react60.default.forwardRef((props, ref) => {
13365
+ var TssManagerWithRef = import_react58.default.forwardRef((props, ref) => {
13486
13366
  const { mpcPin } = props;
13487
13367
  const usePaymaster = useLumiaPassportSession((st) => st.usePaymaster);
13488
13368
  const setStatus = useLumiaPassportSession((st) => st.setStatus);
13489
13369
  const setSession = useLumiaPassportSession((st) => st.setSession);
13490
13370
  const setAddress = useLumiaPassportSession((st) => st.setAddress);
13491
- const onSessionCreated = (0, import_react60.useCallback)(
13371
+ const onSessionCreated = (0, import_react58.useCallback)(
13492
13372
  (session, address) => {
13493
13373
  setSession(session);
13494
13374
  setAddress(address);
13495
13375
  },
13496
13376
  [setSession, setAddress]
13497
13377
  );
13498
- const createSessionWithKeyshare = import_react60.default.useCallback(
13378
+ const createSessionWithKeyshare = import_react58.default.useCallback(
13499
13379
  async (userId, hasServerKeyshare, isNewUser) => {
13500
13380
  setStatus("checking key management setup...");
13501
13381
  await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
@@ -13516,18 +13396,18 @@ var TssManagerWithRef = import_react60.default.forwardRef((props, ref) => {
13516
13396
  },
13517
13397
  [setStatus, usePaymaster, mpcPin]
13518
13398
  );
13519
- import_react60.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
13399
+ import_react58.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
13520
13400
  return null;
13521
13401
  });
13522
13402
 
13523
13403
  // src/internal/components/WalletConnectHandler.tsx
13524
13404
  var import_rainbowkit = require("@rainbow-me/rainbowkit");
13525
- var import_react_query38 = require("@tanstack/react-query");
13526
- var import_react61 = __toESM(require("react"), 1);
13405
+ var import_react_query36 = require("@tanstack/react-query");
13406
+ var import_react59 = __toESM(require("react"), 1);
13527
13407
  var import_wagmi5 = require("wagmi");
13528
13408
  init_wallet();
13529
13409
  function WalletConnectHandler() {
13530
- const qc = (0, import_react_query38.useQueryClient)();
13410
+ const qc = (0, import_react_query36.useQueryClient)();
13531
13411
  const callbacks = useLumiaPassportConfig().callbacks;
13532
13412
  const passportWalletAddress = useLumiaPassportSession((st) => st.address);
13533
13413
  const { address: walletAddress, isConnected, chain, connector } = (0, import_wagmi5.useAccount)();
@@ -13541,7 +13421,7 @@ function WalletConnectHandler() {
13541
13421
  const setManageWalletLinkError = useManageWalletStore((st) => st.setLinkError);
13542
13422
  const setLinkIsLoading = useManageWalletStore((st) => st.setLinkIsLoading);
13543
13423
  const setProviderType = useManageWalletStore((st) => st.setProviderType);
13544
- const onLinkingComplete = (0, import_react61.useCallback)(
13424
+ const onLinkingComplete = (0, import_react59.useCallback)(
13545
13425
  async (success) => {
13546
13426
  setIsWalletLinking(false);
13547
13427
  if (!success && !passportWalletAddress) {
@@ -13568,8 +13448,8 @@ function WalletConnectHandler() {
13568
13448
  },
13569
13449
  [qc, passportWalletAddress, callbacks, setProviderType, setPage, setIsWalletLinking]
13570
13450
  );
13571
- const [hasStartedLinking, setHasStartedLinking] = import_react61.default.useState(false);
13572
- (0, import_react61.useEffect)(() => {
13451
+ const [hasStartedLinking, setHasStartedLinking] = import_react59.default.useState(false);
13452
+ (0, import_react59.useEffect)(() => {
13573
13453
  if (isWalletLinking && !hasStartedLinking) {
13574
13454
  setHasStartedLinking(true);
13575
13455
  setProviderType(null);
@@ -13589,14 +13469,14 @@ function WalletConnectHandler() {
13589
13469
  if (isConnected) disconnect();
13590
13470
  }
13591
13471
  }, [isWalletLinking, hasStartedLinking, isConnected, openConnectModal, disconnect, setPage, setProviderType]);
13592
- (0, import_react61.useEffect)(() => {
13472
+ (0, import_react59.useEffect)(() => {
13593
13473
  if (hasStartedLinking && !connectModalOpen && !isConnected && isWalletLinking) {
13594
13474
  console.log("[WalletConnectHandler] Modal closed without connecting");
13595
13475
  onLinkingComplete(false);
13596
13476
  setHasStartedLinking(false);
13597
13477
  }
13598
13478
  }, [connectModalOpen, hasStartedLinking, isConnected, isWalletLinking]);
13599
- const { mutate: handleWalletSign, isPending: isWalletSigning } = (0, import_react_query38.useMutation)({
13479
+ const { mutate: handleWalletSign, isPending: isWalletSigning } = (0, import_react_query36.useMutation)({
13600
13480
  mutationFn: async (payload) => {
13601
13481
  const { chainId, signingWalletAddress } = payload;
13602
13482
  if (!signingWalletAddress || !chainId) {
@@ -13665,7 +13545,7 @@ function WalletConnectHandler() {
13665
13545
  setPage(passportWalletAddress ? "manage-wallet" /* MANAGE_WALLET */ : "auth" /* AUTH */);
13666
13546
  }
13667
13547
  });
13668
- (0, import_react61.useEffect)(() => {
13548
+ (0, import_react59.useEffect)(() => {
13669
13549
  if (!!chain?.id && isConnected && walletAddress && isWalletLinking && hasStartedLinking) {
13670
13550
  console.log("[WalletConnectHandler] handleWalletSign triggered");
13671
13551
  handleWalletSign({ chainId: chain.id, signingWalletAddress: walletAddress });
@@ -13701,7 +13581,7 @@ var useLumiaPassportSession = (0, import_zustand6.create)((set) => ({
13701
13581
  }));
13702
13582
  function LumiaPassportSessionProvider({ children }) {
13703
13583
  const config = useLumiaPassportConfig().config;
13704
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_react62.Fragment, { children: [
13584
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_react60.Fragment, { children: [
13705
13585
  children,
13706
13586
  config.current?.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(WalletConnectHandler, {}),
13707
13587
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(BalanceFeedProvider, {}),
@@ -13753,14 +13633,14 @@ var LumiaWagmiProvider = ({ children }) => {
13753
13633
 
13754
13634
  // src/context/LumiaPassportContext.tsx
13755
13635
  var import_jsx_runtime75 = require("react/jsx-runtime");
13756
- var LumiaPassportContext = (0, import_react63.createContext)(void 0);
13636
+ var LumiaPassportContext = (0, import_react61.createContext)(void 0);
13757
13637
  function LumiaPassportProvider(props) {
13758
13638
  const { children, projectId, initialConfig = {}, callbacks } = props;
13759
13639
  const setIsIframeReady = useLumiaPassportSession((st) => st.setIsIframeReady);
13760
13640
  const setWalletReadyStatus = useLumiaPassportSession((st) => st.setWalletReadyStatus);
13761
- (0, import_react63.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
13762
- const config = (0, import_react63.useRef)({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
13763
- const updateConfig = (0, import_react63.useCallback)((updates) => {
13641
+ (0, import_react61.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
13642
+ const config = (0, import_react61.useRef)({ projectId, ...DEFAULT_LUMIA_PASSPORT_CONFIG });
13643
+ const updateConfig = (0, import_react61.useCallback)((updates) => {
13764
13644
  const prev = config.current;
13765
13645
  const next = { ...prev };
13766
13646
  if (updates.projectId !== void 0) next.projectId = updates.projectId;
@@ -13795,7 +13675,7 @@ function LumiaPassportProvider(props) {
13795
13675
  }
13796
13676
  config.current = next;
13797
13677
  }, []);
13798
- (0, import_react63.useEffect)(() => {
13678
+ (0, import_react61.useEffect)(() => {
13799
13679
  if (typeof window === "undefined" || !projectId) return;
13800
13680
  const mergedConfig = (0, import_lodash_es4.merge)(DEFAULT_LUMIA_PASSPORT_CONFIG, initialConfig);
13801
13681
  updateConfig(mergedConfig);
@@ -13840,19 +13720,21 @@ function LumiaPassportProvider(props) {
13840
13720
  console.error("[LumiaPassport] Error setting up iframe manager:", error);
13841
13721
  }
13842
13722
  }, [projectId, initialConfig, callbacks, updateConfig, setIsIframeReady, setWalletReadyStatus]);
13843
- const contextValue = (0, import_react63.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
13723
+ const contextValue = (0, import_react61.useMemo)(() => ({ config, updateConfig, callbacks }), [config, updateConfig, callbacks]);
13844
13724
  return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(LumiaWagmiProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(LumiaPassportContext.Provider, { value: contextValue, children }) });
13845
13725
  }
13846
13726
  var useLumiaPassportConfig = () => {
13847
- const ctx = (0, import_react63.useContext)(LumiaPassportContext);
13727
+ const ctx = (0, import_react61.useContext)(LumiaPassportContext);
13848
13728
  if (!ctx) throw new Error("useLumiaPassportConfig must be used within a LumiaPassportProvider");
13849
13729
  return ctx;
13850
13730
  };
13851
13731
 
13852
13732
  // src/components/ConnectWalletButton.tsx
13733
+ var import_react_query37 = require("@tanstack/react-query");
13853
13734
  var import_lucide_react49 = require("lucide-react");
13854
- var import_react64 = require("react");
13735
+ var import_react62 = require("react");
13855
13736
  init_auth();
13737
+ init_profile();
13856
13738
  var import_jsx_runtime76 = (
13857
13739
  /** external Buttons can be provided */
13858
13740
  require("react/jsx-runtime")
@@ -13875,10 +13757,16 @@ function ConnectWalletButton(props) {
13875
13757
  const colorMode = useLayoutStore((st) => st.colorMode);
13876
13758
  const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useLumiaPassportSession();
13877
13759
  const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
13878
- (0, import_react64.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
13760
+ (0, import_react62.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
13761
+ const { data: profile, isLoading: isProfileLoading } = (0, import_react_query37.useQuery)({
13762
+ retry: false,
13763
+ enabled: !!address,
13764
+ queryKey: [QUERY_KEYS.userProfile, address],
13765
+ queryFn: getUserProfile
13766
+ });
13879
13767
  const avatar = import_auth3.jwtTokenManager.getAvatar();
13880
- const displayName = import_auth3.jwtTokenManager.getDisplayName();
13881
- const indicators = (0, import_react64.useMemo)(() => {
13768
+ const displayName = profile?.nicknameDisplay || profile?.displayName || import_auth3.jwtTokenManager.getDisplayName();
13769
+ const indicators = (0, import_react62.useMemo)(() => {
13882
13770
  const userId = import_auth3.jwtTokenManager.getUserId();
13883
13771
  if (!userId) return { server: false, local: false, backup: false };
13884
13772
  const server = import_auth3.jwtTokenManager.getHasKeyshare() ?? false;
@@ -13934,7 +13822,7 @@ function ConnectWalletButton(props) {
13934
13822
  /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--l-pass-fg)] flex items-center justify-center flex-shrink-0", children: avatar ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(LumiaIcon, { width: 48, height: 48 }) }),
13935
13823
  /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "text-left flex-1 min-w-0 text-[var(--l-pass-fg)]", children: [
13936
13824
  /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)("div", { className: "flex items-center gap-[var(--l-pass-gap)]", children: [
13937
- /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "w-fit text-[14px] leading-4 truncate max-w-[144px] text-[var(--l-pass-fg)]", children: displayName }),
13825
+ isProfileLoading ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_lucide_react49.Loader, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("span", { className: "w-fit text-[14px] leading-4 truncate max-w-[144px] text-[var(--l-pass-fg)]", children: displayName }),
13938
13826
  /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(KYCStatus, {})
13939
13827
  ] }),
13940
13828
  /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(BalanceView, {})
@@ -14048,13 +13936,13 @@ var useLumiaPassportRecoveryUserId = () => useLumiaPassportSession((st) => st.re
14048
13936
  var useLumiaPassportHasServerVault = () => useLumiaPassportSession((st) => st.hasServerVault);
14049
13937
 
14050
13938
  // src/hooks/useLumiaPassportOpen.ts
14051
- var import_react65 = require("react");
13939
+ var import_react63 = require("react");
14052
13940
  function useLumiaPassportOpen() {
14053
13941
  const page = useLayoutDataStore((st) => st.page);
14054
13942
  const setPage = useLayoutDataStore((st) => st.setPage);
14055
13943
  const setPageParams = useLayoutDataStore((st) => st.setPageParams);
14056
13944
  const address = useLumiaPassportSession((st) => st.address);
14057
- const open = (0, import_react65.useCallback)(
13945
+ const open = (0, import_react63.useCallback)(
14058
13946
  (passportPage, params) => {
14059
13947
  if (!address) return setPage("auth" /* AUTH */);
14060
13948
  if (!!address && passportPage === "auth" /* AUTH */) return setPage("manage-wallet" /* MANAGE_WALLET */);
@@ -14063,12 +13951,12 @@ function useLumiaPassportOpen() {
14063
13951
  },
14064
13952
  [setPage, setPageParams, address]
14065
13953
  );
14066
- const close = (0, import_react65.useCallback)(() => setPage(null), [setPage]);
13954
+ const close = (0, import_react63.useCallback)(() => setPage(null), [setPage]);
14067
13955
  return { open, close, isOpen: page !== null };
14068
13956
  }
14069
13957
 
14070
13958
  // src/hooks/useLumiaPassportColorMode.ts
14071
- var import_react66 = require("react");
13959
+ var import_react64 = require("react");
14072
13960
  function useLumiaPassportColorMode() {
14073
13961
  const {
14074
13962
  config: { current: config }
@@ -14076,14 +13964,14 @@ function useLumiaPassportColorMode() {
14076
13964
  const preferedColorMode = config?.preferedColorMode;
14077
13965
  const colorMode = useLayoutStore((st) => st.colorMode);
14078
13966
  const handleStoreColorMode = useLayoutStore((st) => st.setColorMode);
14079
- const setColorMode = (0, import_react66.useCallback)(
13967
+ const setColorMode = (0, import_react64.useCallback)(
14080
13968
  (mode) => {
14081
13969
  localStorage.setItem(LOCAL_COLOR_MODE_KEY, mode);
14082
13970
  handleStoreColorMode(mode);
14083
13971
  },
14084
13972
  [handleStoreColorMode]
14085
13973
  );
14086
- (0, import_react66.useEffect)(() => {
13974
+ (0, import_react64.useEffect)(() => {
14087
13975
  let targetColorMode = localStorage.getItem(LOCAL_COLOR_MODE_KEY);
14088
13976
  if (!targetColorMode && !preferedColorMode) {
14089
13977
  const systemMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
@@ -14126,7 +14014,7 @@ function ThemeToggle(props) {
14126
14014
 
14127
14015
  // src/context/RainbowKitContext.tsx
14128
14016
  var import_rainbowkit3 = require("@rainbow-me/rainbowkit");
14129
- var import_react67 = require("react");
14017
+ var import_react65 = require("react");
14130
14018
  var import_wagmi9 = require("wagmi");
14131
14019
 
14132
14020
  // src/config/rainbowkit.ts
@@ -14358,8 +14246,8 @@ var import_jsx_runtime78 = require("react/jsx-runtime");
14358
14246
  function LumiaRainbowKitProvider({ children }) {
14359
14247
  const config = useLumiaPassportConfig().config;
14360
14248
  const colorMode = useLayoutStore((st) => st.colorMode);
14361
- const rainbowConfig2 = (0, import_react67.useMemo)(() => createRainbowConfig(config.current?.wallet?.walletConnectProjectId), [config]);
14362
- const customTheme = (0, import_react67.useMemo)(
14249
+ const rainbowConfig2 = (0, import_react65.useMemo)(() => createRainbowConfig(config.current?.wallet?.walletConnectProjectId), [config]);
14250
+ const customTheme = (0, import_react65.useMemo)(
14363
14251
  () => colorMode === "dark" ? {
14364
14252
  ...(0, import_rainbowkit3.darkTheme)(),
14365
14253
  colors: { ...(0, import_rainbowkit3.darkTheme)().colors, ...rainbowTheme.darkMode.colors },
@@ -14811,14 +14699,14 @@ var Hash = ({
14811
14699
  };
14812
14700
 
14813
14701
  // src/internal/components/TransactionsMenu/TransactionsList.tsx
14814
- var import_react68 = require("react");
14702
+ var import_react66 = require("react");
14815
14703
  init_base();
14816
14704
  var import_jsx_runtime83 = require("react/jsx-runtime");
14817
14705
  var TransactionsList = ({ address, itemsCount = 10 }) => {
14818
- const [transactions, setTransactions] = (0, import_react68.useState)([]);
14819
- const [loading, setLoading] = (0, import_react68.useState)(true);
14820
- const [error, setError] = (0, import_react68.useState)(null);
14821
- (0, import_react68.useEffect)(() => {
14706
+ const [transactions, setTransactions] = (0, import_react66.useState)([]);
14707
+ const [loading, setLoading] = (0, import_react66.useState)(true);
14708
+ const [error, setError] = (0, import_react66.useState)(null);
14709
+ (0, import_react66.useEffect)(() => {
14822
14710
  const fetchTransactions = async () => {
14823
14711
  try {
14824
14712
  setLoading(true);
@@ -15120,11 +15008,11 @@ function useUserOpStatus(options = {}) {
15120
15008
 
15121
15009
  // src/hooks/useLogout.ts
15122
15010
  var import_auth18 = require("@lumiapassport/core/auth");
15123
- var import_react69 = require("react");
15011
+ var import_react67 = require("react");
15124
15012
  function useLogout() {
15125
15013
  const { setSession, setIsLoading, setAddress, setStatus, setError, address } = useLumiaPassportSession();
15126
15014
  const { callbacks } = useLumiaPassportConfig();
15127
- const logout2 = (0, import_react69.useCallback)(async () => {
15015
+ const logout2 = (0, import_react67.useCallback)(async () => {
15128
15016
  const prevAddress = address;
15129
15017
  let userId = null;
15130
15018
  setIsLoading(true);