@lumiapassport/ui-kit 1.2.0 → 1.3.0

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
@@ -2395,6 +2395,7 @@ var init_iframe_manager = __esm({
2395
2395
  this.iframe.style.zIndex = "999999";
2396
2396
  this.iframe.style.background = "rgba(0, 0, 0, 0.5)";
2397
2397
  this.iframe.setAttribute("sandbox", "allow-scripts allow-same-origin");
2398
+ this.iframe.setAttribute("allow", "publickey-credentials-get *; publickey-credentials-create *");
2398
2399
  this.messageListener = this.handleMessage.bind(this);
2399
2400
  window.addEventListener("message", this.messageListener);
2400
2401
  document.body.appendChild(this.iframe);
@@ -2751,6 +2752,92 @@ var init_iframe_manager = __esm({
2751
2752
  }
2752
2753
  return false;
2753
2754
  }
2755
+ /**
2756
+ * Create backup of keyshare
2757
+ */
2758
+ async createBackup(userId, backupRequest, accessToken) {
2759
+ this.log("[IframeManager] Creating backup...");
2760
+ const response = await this.sendMessage("CREATE_BACKUP", {
2761
+ userId,
2762
+ backupRequest,
2763
+ accessToken
2764
+ // Pass access token for TSS API authentication
2765
+ });
2766
+ if (response.type === "LUMIA_PASSPORT_BACKUP_CREATED") {
2767
+ return response.result;
2768
+ }
2769
+ throw new Error("Unexpected response type");
2770
+ }
2771
+ /**
2772
+ * Restore keyshare from server backup
2773
+ */
2774
+ async restoreFromServer(userId, password, accessToken) {
2775
+ this.log("[IframeManager] Restoring backup from server...");
2776
+ const response = await this.sendMessage("RESTORE_BACKUP", {
2777
+ userId,
2778
+ password,
2779
+ accessToken
2780
+ // Pass access token for TSS API authentication
2781
+ });
2782
+ if (response.type === "LUMIA_PASSPORT_BACKUP_RESTORED") {
2783
+ return response.result;
2784
+ }
2785
+ throw new Error("Unexpected response type");
2786
+ }
2787
+ /**
2788
+ * Encrypt backup data without uploading (for cloud/local backups)
2789
+ * Returns encrypted data that parent can upload/download
2790
+ */
2791
+ async encryptBackupData(userId, password) {
2792
+ this.log("[IframeManager] Encrypting backup data...");
2793
+ const response = await this.sendMessage("ENCRYPT_BACKUP_DATA", {
2794
+ userId,
2795
+ password
2796
+ });
2797
+ if (response.type === "LUMIA_PASSPORT_BACKUP_ENCRYPTED") {
2798
+ return response.encryptedData;
2799
+ }
2800
+ throw new Error("Unexpected response type");
2801
+ }
2802
+ /**
2803
+ * Restore keyshare from local file backup
2804
+ */
2805
+ async restoreFromLocalFile(userId, fileContent, password) {
2806
+ this.log("[IframeManager] Restoring backup from local file...");
2807
+ const response = await this.sendMessage("RESTORE_FROM_FILE", {
2808
+ userId,
2809
+ fileContent,
2810
+ password
2811
+ });
2812
+ if (response.type === "LUMIA_PASSPORT_FILE_RESTORED") {
2813
+ return response.result;
2814
+ }
2815
+ throw new Error("Unexpected response type");
2816
+ }
2817
+ /**
2818
+ * Get backup status for user
2819
+ */
2820
+ async getBackupStatus(userId) {
2821
+ this.log("[IframeManager] Getting backup status...");
2822
+ const response = await this.sendMessage("GET_BACKUP_STATUS", {
2823
+ userId
2824
+ });
2825
+ if (response.type === "LUMIA_PASSPORT_BACKUP_STATUS") {
2826
+ return response.status;
2827
+ }
2828
+ throw new Error("Unexpected response type");
2829
+ }
2830
+ /**
2831
+ * Get available cloud providers
2832
+ */
2833
+ async getCloudProviders() {
2834
+ this.log("[IframeManager] Getting cloud providers...");
2835
+ const response = await this.sendMessage("GET_CLOUD_PROVIDERS", {});
2836
+ if (response.type === "LUMIA_PASSPORT_CLOUD_PROVIDERS") {
2837
+ return response.providers;
2838
+ }
2839
+ throw new Error("Unexpected response type");
2840
+ }
2754
2841
  /**
2755
2842
  * Cleanup and destroy iframe
2756
2843
  */
@@ -2827,7 +2914,7 @@ __export(index_exports, {
2827
2914
  module.exports = __toCommonJS(index_exports);
2828
2915
 
2829
2916
  // src/styles/built.css
2830
- 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{background-color:hsl(var(--background));color:hsl(var(--foreground))}.lumia-scope,.lumia-scope *,.lumia-scope :after,.lumia-scope :before{box-sizing:border-box;border-width:0;border-style:solid}.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font:inherit;color:inherit;margin:0;background-color:transparent}.lumia-scope button{font:inherit;margin:0}.lumia-scope input[type=search]::-webkit-search-cancel-button,.lumia-scope input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.lumia-scope,.lumia-scope *,.lumia-scope .lumia-heading,.lumia-scope [data-radix-dialog-content],.lumia-scope [data-radix-dialog-content] *,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-heading{font-weight:700}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .bottom-full{bottom:100%}.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 .left-\\[50\\%\\]{left:50%}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.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-\\[50\\%\\]{top:50%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[2147483646\\]{z-index:2147483646}.lumia-scope .z-\\[2147483647\\]{z-index:2147483647}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .-m-px{margin:-1px}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .-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-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 .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.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 .size-4{width:1rem;height:1rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-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-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-\\[280px\\]{min-width:280px}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[500px\\]{max-width:500px}.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-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-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1,.lumia-scope .-translate-y-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-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.lumia-scope .translate-x-\\[-50\\%\\],.lumia-scope .translate-y-\\[-50\\%\\]{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-\\[-50\\%\\]{--tw-translate-y:-50%}.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 spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis}.lumia-scope .truncate,.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:var(--radius)}.lumia-scope .rounded-md{border-radius:calc(var(--radius) - 2px)}.lumia-scope .rounded-sm{border-radius:calc(var(--radius) - 4px)}.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-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/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-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-border{border-color:hsl(var(--border))}.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-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-input{border-color:hsl(var(--input))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/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-orange-900\\/40{border-color:rgba(124,45,18,.4)}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/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-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-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .\\!bg-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#2456f0\\]{--tw-bg-opacity:1;background-color:rgb(36 86 240/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#db2777\\]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#fde2f3\\]{--tw-bg-opacity:1;background-color:rgb(253 226 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/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-900\\/30{background-color:rgba(120,53,15,.3)}.lumia-scope .bg-background{background-color:hsl(var(--background))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-black\\/50{background-color:rgba(0,0,0,.5)}.lumia-scope .bg-black\\/80{background-color:rgba(0,0,0,.8)}.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-50\\/50{background-color:rgba(239,246,255,.5)}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-card{background-color:hsl(var(--card))}.lumia-scope .bg-destructive{background-color:hsl(var(--destructive))}.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-800\\/50{background-color:rgba(31,41,55,.5)}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900\\/40{background-color:rgba(17,24,39,.4)}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-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-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900\\/20{background-color:rgba(124,45,18,.2)}.lumia-scope .bg-orange-900\\/30{background-color:rgba(124,45,18,.3)}.lumia-scope .bg-orange-900\\/40{background-color:rgba(124,45,18,.4)}.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-primary{background-color:hsl(var(--primary))}.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-50\\/50{background-color:rgba(250,245,255,.5)}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/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-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/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-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-secondary{background-color:hsl(var(--secondary))}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-50\\/50{background-color:rgba(240,249,255,.5)}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .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-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .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-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.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-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-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-card-foreground{color:hsl(var(--card-foreground))}.lumia-scope .text-destructive{color:hsl(var(--destructive))}.lumia-scope .text-destructive-foreground{color:hsl(var(--destructive-foreground))}.lumia-scope .text-foreground{color:hsl(var(--foreground))}.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-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-muted-foreground{color:hsl(var(--muted-foreground))}.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-400\\/80{color:rgba(251,146,60,.8)}.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-primary{color:hsl(var(--primary))}.lumia-scope .text-primary-foreground{color:hsl(var(--primary-foreground))}.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-600{--tw-text-opacity:1;color:rgb(147 51 234/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-secondary-foreground{color:hsl(var(--secondary-foreground))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline{outline-style:solid}.lumia-scope .ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-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 .file\\:mr-4::file-selector-button{margin-right:1rem}.lumia-scope .file\\:rounded::file-selector-button{border-radius:.25rem}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-gray-700::file-selector-button{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .file\\:bg-purple-50::file-selector-button{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.lumia-scope .file\\:py-2::file-selector-button{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:font-semibold::file-selector-button{font-weight:600}.lumia-scope .file\\:text-gray-200::file-selector-button{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .file\\:text-purple-700::file-selector-button{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#1e49d8\\]:hover{--tw-bg-opacity:1;background-color:rgb(30 73 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#be185d\\]:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#f7c1df\\]:hover{--tw-bg-opacity:1;background-color:rgb(247 193 223/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-accent:hover{background-color:hsl(var(--accent))}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive)/.9)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-900\\/30:hover{background-color:rgba(20,83,45,.3)}.lumia-scope .hover\\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-orange-900\\/60:hover{background-color:rgba(124,45,18,.6)}.lumia-scope .hover\\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-primary\\/80:hover{background-color:hsl(var(--primary)/.8)}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary)/.8)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:from-purple-600:hover{--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 .hover\\:from-purple-700:hover{--tw-gradient-from:#7e22ce var(--tw-gradient-from-position);--tw-gradient-to:rgba(126,34,206,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .hover\\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.lumia-scope .hover\\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:no-underline:hover{text-decoration-line:none}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:bg-gray-600::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:file\\:bg-purple-100::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.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-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.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-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-blue-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus-visible\\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .disabled\\:pointer-events-none:disabled{pointer-events:none}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}@media (min-width:640px){.lumia-scope .sm\\:mt-0{margin-top:0}.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\\:rounded-lg{border-radius:var(--radius)}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/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 .dark\\:hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .dark\\:focus\\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:size-4 svg){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
2917
+ 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{background-color:hsl(var(--background));color:hsl(var(--foreground))}.lumia-scope,.lumia-scope *,.lumia-scope :after,.lumia-scope :before{box-sizing:border-box;border-width:0;border-style:solid}.lumia-scope input,.lumia-scope select,.lumia-scope textarea{font:inherit;color:inherit;margin:0;background-color:transparent}.lumia-scope button{font:inherit;margin:0}.lumia-scope input[type=search]::-webkit-search-cancel-button,.lumia-scope input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.lumia-scope,.lumia-scope *,.lumia-scope .lumia-heading,.lumia-scope [data-radix-dialog-content],.lumia-scope [data-radix-dialog-content] *,.lumia-scope h1,.lumia-scope h2,.lumia-scope h3,.lumia-scope h4,.lumia-scope h5,.lumia-scope h6{font-family:system-ui,-apple-system,sans-serif!important}.lumia-scope .lumia-heading{font-weight:700}.lumia-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.lumia-scope .pointer-events-none{pointer-events:none}.lumia-scope .pointer-events-auto{pointer-events:auto}.lumia-scope .visible{visibility:visible}.lumia-scope .collapse{visibility:collapse}.lumia-scope .static{position:static}.lumia-scope .fixed{position:fixed}.lumia-scope .absolute{position:absolute}.lumia-scope .relative{position:relative}.lumia-scope .inset-0{inset:0}.lumia-scope .inset-y-0{top:0;bottom:0}.lumia-scope .-bottom-1{bottom:-.25rem}.lumia-scope .-right-1{right:-.25rem}.lumia-scope .bottom-full{bottom:100%}.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 .left-\\[50\\%\\]{left:50%}.lumia-scope .right-2{right:.5rem}.lumia-scope .right-3{right:.75rem}.lumia-scope .right-4{right:1rem}.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-\\[50\\%\\]{top:50%}.lumia-scope .z-10{z-index:10}.lumia-scope .z-50{z-index:50}.lumia-scope .z-\\[2147483646\\]{z-index:2147483646}.lumia-scope .z-\\[2147483647\\]{z-index:2147483647}.lumia-scope .z-\\[60\\]{z-index:60}.lumia-scope .-m-px{margin:-1px}.lumia-scope .-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.lumia-scope .mx-auto{margin-left:auto;margin-right:auto}.lumia-scope .my-6{margin-top:1.5rem;margin-bottom:1.5rem}.lumia-scope .-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-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 .mt-0{margin-top:0}.lumia-scope .mt-0\\.5{margin-top:.125rem}.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 .size-4{width:1rem;height:1rem}.lumia-scope .\\!h-5{height:1.25rem!important}.lumia-scope .\\!h-6{height:1.5rem!important}.lumia-scope .h-10{height:2.5rem}.lumia-scope .h-11{height:2.75rem}.lumia-scope .h-12{height:3rem}.lumia-scope .h-14{height:3.5rem}.lumia-scope .h-16{height:4rem}.lumia-scope .h-2{height:.5rem}.lumia-scope .h-2\\.5{height:.625rem}.lumia-scope .h-3{height:.75rem}.lumia-scope .h-3\\.5{height:.875rem}.lumia-scope .h-4{height:1rem}.lumia-scope .h-48{height:12rem}.lumia-scope .h-5{height:1.25rem}.lumia-scope .h-6{height:1.5rem}.lumia-scope .h-8{height:2rem}.lumia-scope .h-9{height:2.25rem}.lumia-scope .h-full{height:100%}.lumia-scope .h-px{height:1px}.lumia-scope .max-h-24{max-height:6rem}.lumia-scope .max-h-96{max-height:24rem}.lumia-scope .max-h-\\[60vh\\]{max-height:60vh}.lumia-scope .max-h-\\[80vh\\]{max-height:80vh}.lumia-scope .\\!w-5{width:1.25rem!important}.lumia-scope .\\!w-6{width:1.5rem!important}.lumia-scope .w-10{width:2.5rem}.lumia-scope .w-12{width:3rem}.lumia-scope .w-16{width:4rem}.lumia-scope .w-2{width:.5rem}.lumia-scope .w-2\\.5{width:.625rem}.lumia-scope .w-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-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-\\[280px\\]{min-width:280px}.lumia-scope .max-w-2xl{max-width:42rem}.lumia-scope .max-w-\\[380px\\]{max-width:380px}.lumia-scope .max-w-\\[400px\\]{max-width:400px}.lumia-scope .max-w-\\[500px\\]{max-width:500px}.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-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-y-1{--tw-translate-y:-0.25rem}.lumia-scope .-translate-y-1,.lumia-scope .-translate-y-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-y-1\\/2{--tw-translate-y:-50%}.lumia-scope .translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.lumia-scope .translate-x-\\[-50\\%\\],.lumia-scope .translate-y-\\[-50\\%\\]{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-\\[-50\\%\\]{--tw-translate-y:-50%}.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 spin{to{transform:rotate(1turn)}}.lumia-scope .animate-spin{animation:spin 1s linear infinite}.lumia-scope .cursor-not-allowed{cursor:not-allowed}.lumia-scope .cursor-pointer{cursor:pointer}.lumia-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.lumia-scope .resize{resize:both}.lumia-scope .list-inside{list-style-position:inside}.lumia-scope .list-disc{list-style-type:disc}.lumia-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lumia-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lumia-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.lumia-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lumia-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lumia-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lumia-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lumia-scope .flex-row{flex-direction:row}.lumia-scope .flex-col{flex-direction:column}.lumia-scope .flex-col-reverse{flex-direction:column-reverse}.lumia-scope .flex-wrap{flex-wrap:wrap}.lumia-scope .items-start{align-items:flex-start}.lumia-scope .items-center{align-items:center}.lumia-scope .justify-start{justify-content:flex-start}.lumia-scope .justify-end{justify-content:flex-end}.lumia-scope .justify-center{justify-content:center}.lumia-scope .justify-between{justify-content:space-between}.lumia-scope .gap-0{gap:0}.lumia-scope .gap-1{gap:.25rem}.lumia-scope .gap-2{gap:.5rem}.lumia-scope .gap-3{gap:.75rem}.lumia-scope .gap-4{gap:1rem}.lumia-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-3>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-x-4>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.lumia-scope :is(.space-y-0>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-3>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-4>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.lumia-scope :is(.space-y-6>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.lumia-scope .overflow-auto{overflow:auto}.lumia-scope .overflow-hidden{overflow:hidden}.lumia-scope .overflow-visible{overflow:visible}.lumia-scope .overflow-y-auto{overflow-y:auto}.lumia-scope .truncate{overflow:hidden;text-overflow:ellipsis}.lumia-scope .truncate,.lumia-scope .whitespace-nowrap{white-space:nowrap}.lumia-scope .whitespace-pre-line{white-space:pre-line}.lumia-scope .whitespace-pre-wrap{white-space:pre-wrap}.lumia-scope .break-words{overflow-wrap:break-word}.lumia-scope .break-all{word-break:break-all}.lumia-scope .rounded{border-radius:.25rem}.lumia-scope .rounded-2xl{border-radius:1rem}.lumia-scope .rounded-3xl{border-radius:1.5rem}.lumia-scope .rounded-full{border-radius:9999px}.lumia-scope .rounded-lg{border-radius:var(--radius)}.lumia-scope .rounded-md{border-radius:calc(var(--radius) - 2px)}.lumia-scope .rounded-sm{border-radius:calc(var(--radius) - 4px)}.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-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/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-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900{--tw-border-opacity:1;border-color:rgb(30 58 138/var(--tw-border-opacity,1))}.lumia-scope .border-blue-900\\/40{border-color:rgba(30,58,138,.4)}.lumia-scope .border-border{border-color:hsl(var(--border))}.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-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-input{border-color:hsl(var(--input))}.lumia-scope .border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/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-orange-900\\/40{border-color:rgba(124,45,18,.4)}.lumia-scope .border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/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-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-transparent{border-color:transparent}.lumia-scope .border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.lumia-scope .border-t-transparent{border-top-color:transparent}.lumia-scope .\\!bg-transparent{background-color:transparent!important}.lumia-scope .bg-\\[\\#0088cc\\]{--tw-bg-opacity:1;background-color:rgb(0 136 204/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#2456f0\\]{--tw-bg-opacity:1;background-color:rgb(36 86 240/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#db2777\\]{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.lumia-scope .bg-\\[\\#fde2f3\\]{--tw-bg-opacity:1;background-color:rgb(253 226 243/var(--tw-bg-opacity,1))}.lumia-scope .bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/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-900\\/30{background-color:rgba(120,53,15,.3)}.lumia-scope .bg-background{background-color:hsl(var(--background))}.lumia-scope .bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.lumia-scope .bg-black\\/50{background-color:rgba(0,0,0,.5)}.lumia-scope .bg-black\\/80{background-color:rgba(0,0,0,.8)}.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-50\\/50{background-color:rgba(239,246,255,.5)}.lumia-scope .bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.lumia-scope .bg-blue-900\\/20{background-color:rgba(30,58,138,.2)}.lumia-scope .bg-blue-900\\/30{background-color:rgba(30,58,138,.3)}.lumia-scope .bg-blue-900\\/40{background-color:rgba(30,58,138,.4)}.lumia-scope .bg-card{background-color:hsl(var(--card))}.lumia-scope .bg-destructive{background-color:hsl(var(--destructive))}.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-800\\/50{background-color:rgba(31,41,55,.5)}.lumia-scope .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.lumia-scope .bg-gray-900\\/40{background-color:rgba(17,24,39,.4)}.lumia-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.lumia-scope .bg-green-900\\/30{background-color:rgba(20,83,45,.3)}.lumia-scope .bg-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-900{--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.lumia-scope .bg-orange-900\\/20{background-color:rgba(124,45,18,.2)}.lumia-scope .bg-orange-900\\/30{background-color:rgba(124,45,18,.3)}.lumia-scope .bg-orange-900\\/40{background-color:rgba(124,45,18,.4)}.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-primary{background-color:hsl(var(--primary))}.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-50\\/50{background-color:rgba(250,245,255,.5)}.lumia-scope .bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/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-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/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-900\\/30{background-color:rgba(127,29,29,.3)}.lumia-scope .bg-secondary{background-color:hsl(var(--secondary))}.lumia-scope .bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-sky-50\\/50{background-color:rgba(240,249,255,.5)}.lumia-scope .bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.lumia-scope .bg-transparent{background-color:transparent}.lumia-scope .bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.lumia-scope .bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.lumia-scope .bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.lumia-scope .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.lumia-scope .from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .to-blue-100{--tw-gradient-to:#dbeafe var(--tw-gradient-to-position)}.lumia-scope .to-blue-500{--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.lumia-scope .to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.lumia-scope .object-contain{-o-object-fit:contain;object-fit:contain}.lumia-scope .object-cover{-o-object-fit:cover;object-fit:cover}.lumia-scope .p-0{padding:0}.lumia-scope .p-1{padding:.25rem}.lumia-scope .p-2{padding:.5rem}.lumia-scope .p-2\\.5{padding:.625rem}.lumia-scope .p-3{padding:.75rem}.lumia-scope .p-4{padding:1rem}.lumia-scope .p-5{padding:1.25rem}.lumia-scope .p-6{padding:1.5rem}.lumia-scope .p-8{padding:2rem}.lumia-scope .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-6{padding-left:1.5rem;padding-right:1.5rem}.lumia-scope .px-8{padding-left:2rem;padding-right:2rem}.lumia-scope .py-0{padding-top:0;padding-bottom:0}.lumia-scope .py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.lumia-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.lumia-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.lumia-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.lumia-scope .py-4{padding-top:1rem;padding-bottom:1rem}.lumia-scope .py-8{padding-top:2rem;padding-bottom:2rem}.lumia-scope .pb-4{padding-bottom:1rem}.lumia-scope .pl-11{padding-left:2.75rem}.lumia-scope .pr-10{padding-right:2.5rem}.lumia-scope .pr-16{padding-right:4rem}.lumia-scope .pt-0{padding-top:0}.lumia-scope .pt-2{padding-top:.5rem}.lumia-scope .pt-3{padding-top:.75rem}.lumia-scope .pt-4{padding-top:1rem}.lumia-scope .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-\\[10px\\]{font-size:10px}.lumia-scope .text-\\[11px\\]{font-size:11px}.lumia-scope .text-base{font-size:1rem;line-height:1.5rem}.lumia-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.lumia-scope .text-sm{font-size:.875rem;line-height:1.25rem}.lumia-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.lumia-scope .text-xs{font-size:.75rem;line-height:1rem}.lumia-scope .font-bold{font-weight:700}.lumia-scope .font-medium{font-weight:500}.lumia-scope .font-semibold{font-weight:600}.lumia-scope .italic{font-style:italic}.lumia-scope .leading-none{line-height:1}.lumia-scope .leading-tight{line-height:1.25}.lumia-scope .tracking-tight{letter-spacing:-.025em}.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-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-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .text-blue-400\\/80{color:rgba(96,165,250,.8)}.lumia-scope .text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.lumia-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .text-card-foreground{color:hsl(var(--card-foreground))}.lumia-scope .text-destructive{color:hsl(var(--destructive))}.lumia-scope .text-destructive-foreground{color:hsl(var(--destructive-foreground))}.lumia-scope .text-foreground{color:hsl(var(--foreground))}.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-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-muted-foreground{color:hsl(var(--muted-foreground))}.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-400\\/80{color:rgba(251,146,60,.8)}.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-primary{color:hsl(var(--primary))}.lumia-scope .text-primary-foreground{color:hsl(var(--primary-foreground))}.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-600{--tw-text-opacity:1;color:rgb(147 51 234/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-secondary-foreground{color:hsl(var(--secondary-foreground))}.lumia-scope .text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.lumia-scope .text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.lumia-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.lumia-scope .text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.lumia-scope .underline{text-decoration-line:underline}.lumia-scope .underline-offset-4{text-underline-offset:4px}.lumia-scope .opacity-0{opacity:0}.lumia-scope .opacity-100{opacity:1}.lumia-scope .opacity-40{opacity:.4}.lumia-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.lumia-scope .shadow,.lumia-scope .shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.lumia-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.lumia-scope .shadow-lg,.lumia-scope .shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lumia-scope .outline{outline-style:solid}.lumia-scope .ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.lumia-scope .blur{--tw-blur:blur(8px)}.lumia-scope .blur,.lumia-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.lumia-scope .backdrop-blur{--tw-backdrop-blur:blur(8px)}.lumia-scope .backdrop-blur,.lumia-scope .backdrop-blur-sm{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.lumia-scope .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.lumia-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.lumia-scope .transition-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 .file\\:mr-4::file-selector-button{margin-right:1rem}.lumia-scope .file\\:rounded::file-selector-button{border-radius:.25rem}.lumia-scope .file\\:border-0::file-selector-button{border-width:0}.lumia-scope .file\\:bg-gray-700::file-selector-button{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .file\\:bg-purple-50::file-selector-button{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.lumia-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.lumia-scope .file\\:px-4::file-selector-button{padding-left:1rem;padding-right:1rem}.lumia-scope .file\\:py-2::file-selector-button{padding-top:.5rem;padding-bottom:.5rem}.lumia-scope .file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.lumia-scope .file\\:font-medium::file-selector-button{font-weight:500}.lumia-scope .file\\:font-semibold::file-selector-button{font-weight:600}.lumia-scope .file\\:text-gray-200::file-selector-button{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .file\\:text-purple-700::file-selector-button{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .placeholder\\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .hover\\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lumia-scope .hover\\:bg-\\[\\#0077bb\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 119 187/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#1e49d8\\]:hover{--tw-bg-opacity:1;background-color:rgb(30 73 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#be185d\\]:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-\\[\\#f7c1df\\]:hover{--tw-bg-opacity:1;background-color:rgb(247 193 223/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-accent:hover{background-color:hsl(var(--accent))}.lumia-scope .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-blue-900\\/60:hover{background-color:rgba(30,58,138,.6)}.lumia-scope .hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive)/.9)}.lumia-scope .hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-500:hover{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-green-900\\/30:hover{background-color:rgba(20,83,45,.3)}.lumia-scope .hover\\:bg-orange-200:hover{--tw-bg-opacity:1;background-color:rgb(254 215 170/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-orange-900\\/60:hover{background-color:rgba(124,45,18,.6)}.lumia-scope .hover\\:bg-pink-300:hover{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-primary\\/80:hover{background-color:hsl(var(--primary)/.8)}.lumia-scope .hover\\:bg-purple-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-red-900\\/20:hover{background-color:rgba(127,29,29,.2)}.lumia-scope .hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary)/.8)}.lumia-scope .hover\\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:from-purple-600:hover{--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 .hover\\:from-purple-700:hover{--tw-gradient-from:#7e22ce var(--tw-gradient-from-position);--tw-gradient-to:rgba(126,34,206,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.lumia-scope .hover\\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.lumia-scope .hover\\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.lumia-scope .hover\\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.lumia-scope .hover\\:underline:hover{text-decoration-line:underline}.lumia-scope .hover\\:no-underline:hover{text-decoration-line:none}.lumia-scope .hover\\:opacity-80:hover{opacity:.8}.lumia-scope .hover\\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lumia-scope .hover\\:file\\:bg-gray-600::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .hover\\:file\\:bg-purple-100::file-selector-button:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.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-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(209 213 219/var(--tw-ring-opacity,1))}.lumia-scope .focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.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-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lumia-scope .focus-visible\\:ring-blue-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.lumia-scope .focus-visible\\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.lumia-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.lumia-scope .focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.lumia-scope .disabled\\:pointer-events-none:disabled{pointer-events:none}.lumia-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.lumia-scope .disabled\\:opacity-100:disabled{opacity:1}.lumia-scope .disabled\\:opacity-50:disabled{opacity:.5}.lumia-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}@media (min-width:640px){.lumia-scope .sm\\:mt-0{margin-top:0}.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\\:rounded-lg{border-radius:var(--radius)}.lumia-scope .sm\\:text-left{text-align:left}}@media (prefers-color-scheme:dark){.lumia-scope .dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.lumia-scope .dark\\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.lumia-scope .dark\\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:placeholder\\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.lumia-scope .dark\\:hover\\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/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 .dark\\:hover\\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.lumia-scope .dark\\:focus\\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(75 85 99/var(--tw-ring-opacity,1))}}.lumia-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.lumia-scope :is(.\\[\\&_svg\\]\\:size-4 svg){width:1rem;height:1rem}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-5 svg){height:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!h-6 svg){height:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-5 svg){width:1.25rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:\\!w-6 svg){width:1.5rem!important}.lumia-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}';
2831
2918
 
2832
2919
  // src/context/LumiaPassportContext.tsx
2833
2920
  var import_react = require("react");
@@ -3623,6 +3710,7 @@ Input.displayName = "Input";
3623
3710
 
3624
3711
  // src/internal/components/KeyshareRestore.tsx
3625
3712
  init_vaultClient();
3713
+ init_iframe_manager();
3626
3714
  var import_jsx_runtime16 = require("react/jsx-runtime");
3627
3715
  function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3628
3716
  const { config } = useLumiaPassportConfig();
@@ -3636,6 +3724,14 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3636
3724
  const [restorePassword, setRestorePassword] = React10.useState("");
3637
3725
  const [hasServerBackup, setHasServerBackup] = React10.useState(null);
3638
3726
  const [checkingBackup, setCheckingBackup] = React10.useState(true);
3727
+ const iframeManager = React10.useMemo(() => {
3728
+ try {
3729
+ return getIframeManager();
3730
+ } catch (e) {
3731
+ console.error("[KeyshareRestore] Failed to get iframe manager:", e);
3732
+ return null;
3733
+ }
3734
+ }, []);
3639
3735
  React10.useEffect(() => {
3640
3736
  const checkBackupAvailability = async () => {
3641
3737
  try {
@@ -3658,20 +3754,31 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3658
3754
  }, [userId]);
3659
3755
  const handleRestoreFromServer = async () => {
3660
3756
  console.log("[KeyshareRestore] Starting server restore for userId:", userId);
3757
+ if (!iframeManager) {
3758
+ setError("Iframe manager not initialized");
3759
+ return;
3760
+ }
3661
3761
  setLoading((prev) => ({ ...prev, server: true }));
3662
3762
  setError(null);
3663
3763
  setSuccess(null);
3664
3764
  try {
3665
- const passwordToUse = useCustomPassword ? restorePassword : null;
3666
- console.log("[KeyshareRestore] Calling restoreFromServer with method:", useCustomPassword ? "password" : "passkey");
3667
- await restoreFromServer(userId, passwordToUse);
3668
- console.log("[KeyshareRestore] Server restore successful");
3669
- setSuccess("Successfully restored keyshare from server backup");
3670
- setTimeout(() => {
3671
- onRestoreSuccess?.();
3672
- }, 100);
3765
+ const passwordToUse = useCustomPassword ? restorePassword : void 0;
3766
+ console.log("[KeyshareRestore] Calling iframeManager.restoreFromServer with method:", useCustomPassword ? "password" : "passkey");
3767
+ const jwt = await Promise.resolve().then(() => (init_auth(), auth_exports)).then((m) => m.jwtTokenManager.getTokens());
3768
+ const accessToken = jwt?.accessToken;
3769
+ const result = await iframeManager.restoreFromServer(userId, passwordToUse, accessToken);
3770
+ if (result.success) {
3771
+ console.log("[KeyshareRestore] Server restore successful");
3772
+ setSuccess("Successfully restored keyshare from server backup");
3773
+ setTimeout(() => {
3774
+ onRestoreSuccess?.();
3775
+ }, 100);
3776
+ } else {
3777
+ console.error("[KeyshareRestore] Server restore failed:", result.error);
3778
+ setError(result.error || "Server restore failed");
3779
+ }
3673
3780
  } catch (err) {
3674
- console.error("[KeyshareRestore] Server restore failed:", err);
3781
+ console.error("[KeyshareRestore] Server restore exception:", err);
3675
3782
  const errorMsg = err instanceof Error ? err.message : "Server restore failed";
3676
3783
  setError(errorMsg);
3677
3784
  } finally {
@@ -3688,18 +3795,27 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3688
3795
  setError("Please enter the backup password");
3689
3796
  return;
3690
3797
  }
3798
+ if (!iframeManager) {
3799
+ setError("Iframe manager not initialized");
3800
+ return;
3801
+ }
3691
3802
  setLoading((prev) => ({ ...prev, file: true }));
3692
3803
  setError(null);
3693
3804
  setSuccess(null);
3694
3805
  try {
3695
- const passwordToUse = useCustomPassword ? restorePassword : null;
3696
- await restoreFromBackup(restoreFile, passwordToUse, userId);
3697
- setSuccess("Successfully restored keyshare from backup file");
3698
- setRestoreFile(null);
3699
- setRestorePassword("");
3700
- setTimeout(() => {
3701
- onRestoreSuccess?.();
3702
- }, 100);
3806
+ const fileContent = await restoreFile.text();
3807
+ const passwordToUse = useCustomPassword ? restorePassword : void 0;
3808
+ const result = await iframeManager.restoreFromLocalFile(userId, fileContent, passwordToUse);
3809
+ if (result.success) {
3810
+ setSuccess("Successfully restored keyshare from backup file");
3811
+ setRestoreFile(null);
3812
+ setRestorePassword("");
3813
+ setTimeout(() => {
3814
+ onRestoreSuccess?.();
3815
+ }, 100);
3816
+ } else {
3817
+ setError(result.error || "File restore failed");
3818
+ }
3703
3819
  } catch (err) {
3704
3820
  const errorMsg = err instanceof Error ? err.message : "Restore failed";
3705
3821
  setError(errorMsg);
@@ -6716,11 +6832,312 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
6716
6832
  ] });
6717
6833
  };
6718
6834
 
6835
+ // src/internal/components/KeyshareBackup.tsx
6836
+ var React19 = __toESM(require("react"), 1);
6837
+ var import_lucide_react9 = require("lucide-react");
6838
+ init_iframe_manager();
6839
+ var import_jsx_runtime23 = require("react/jsx-runtime");
6840
+ function KeyshareBackup({ userId, onClose, onBackupSuccess }) {
6841
+ const [backupStatus, setBackupStatus] = React19.useState({
6842
+ server: {},
6843
+ cloud: {},
6844
+ local: {}
6845
+ });
6846
+ const [loading, setLoading] = React19.useState({
6847
+ server: false,
6848
+ cloud: false,
6849
+ local: false
6850
+ });
6851
+ const [error, setError] = React19.useState(null);
6852
+ const [success, setSuccess] = React19.useState(null);
6853
+ const [showPassword, setShowPassword] = React19.useState(false);
6854
+ const [useCustomPassword, setUseCustomPassword] = React19.useState(false);
6855
+ const [customPassword, setCustomPassword] = React19.useState("");
6856
+ const [cloudProviders, setCloudProviders] = React19.useState([]);
6857
+ const [selectedCloudProvider, setSelectedCloudProvider] = React19.useState(null);
6858
+ const [hasKeyshareData, setHasKeyshareData] = React19.useState(true);
6859
+ const iframeManager = React19.useMemo(() => {
6860
+ try {
6861
+ return getIframeManager();
6862
+ } catch (e) {
6863
+ console.error("[KeyshareBackup] Failed to get iframe manager:", e);
6864
+ return null;
6865
+ }
6866
+ }, []);
6867
+ React19.useEffect(() => {
6868
+ const loadCloudProviders = async () => {
6869
+ try {
6870
+ const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
6871
+ const availableProviders = getAvailableCloudProviders3();
6872
+ const providers = availableProviders.map((p) => ({
6873
+ id: p.id,
6874
+ name: p.name,
6875
+ available: p.isAvailable()
6876
+ }));
6877
+ setCloudProviders(providers);
6878
+ if (providers.length > 0 && !selectedCloudProvider) {
6879
+ setSelectedCloudProvider(providers[0].id);
6880
+ }
6881
+ } catch (error2) {
6882
+ console.error("[KeyshareBackup] Failed to load cloud providers:", error2);
6883
+ }
6884
+ };
6885
+ loadCloudProviders();
6886
+ }, [selectedCloudProvider]);
6887
+ const refreshStatus = React19.useCallback(async () => {
6888
+ if (!iframeManager) return;
6889
+ try {
6890
+ const status = await iframeManager.getBackupStatus(userId);
6891
+ setBackupStatus(status);
6892
+ } catch (error2) {
6893
+ console.error("[KeyshareBackup] Failed to get backup status:", error2);
6894
+ }
6895
+ }, [iframeManager, userId]);
6896
+ React19.useEffect(() => {
6897
+ refreshStatus();
6898
+ }, [refreshStatus]);
6899
+ const handleBackup = async (method) => {
6900
+ if (!iframeManager) {
6901
+ setError("Iframe manager not initialized");
6902
+ return;
6903
+ }
6904
+ setLoading((prev) => ({ ...prev, [method]: true }));
6905
+ setError(null);
6906
+ setSuccess(null);
6907
+ try {
6908
+ const password = useCustomPassword ? customPassword : void 0;
6909
+ if (method === "server") {
6910
+ const jwt = await Promise.resolve().then(() => (init_auth(), auth_exports)).then((m) => m.jwtTokenManager.getTokens());
6911
+ const accessToken = jwt?.accessToken;
6912
+ const result = await iframeManager.createBackup(userId, {
6913
+ method,
6914
+ password
6915
+ }, accessToken);
6916
+ if (result.success) {
6917
+ setSuccess("Successfully created server backup");
6918
+ await refreshStatus();
6919
+ onBackupSuccess?.();
6920
+ } else {
6921
+ throw new Error(result.error || "Server backup failed");
6922
+ }
6923
+ } else if (method === "cloud") {
6924
+ const encryptedData = await iframeManager.encryptBackupData(userId, password);
6925
+ const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
6926
+ const providers = getAvailableCloudProviders3();
6927
+ const provider = selectedCloudProvider ? providers.find((p) => p.id === selectedCloudProvider) : providers[0];
6928
+ if (!provider) {
6929
+ throw new Error("No cloud provider available");
6930
+ }
6931
+ if (!provider.isAuthenticated()) {
6932
+ const authenticated = await provider.authenticate();
6933
+ if (!authenticated) {
6934
+ throw new Error(`Failed to authenticate with ${provider.name}`);
6935
+ }
6936
+ }
6937
+ const timestamp = Date.now();
6938
+ const fileName = `lumia-keyshare-backup-${userId}-${timestamp}.json`;
6939
+ const fileContent = JSON.stringify(encryptedData, null, 2);
6940
+ await provider.upload(fileName, fileContent, true);
6941
+ setSuccess(`Successfully created cloud backup on ${provider.name}`);
6942
+ await refreshStatus();
6943
+ onBackupSuccess?.();
6944
+ } else if (method === "local") {
6945
+ const encryptedData = await iframeManager.encryptBackupData(userId, password);
6946
+ const blob = new Blob([JSON.stringify(encryptedData, null, 2)], {
6947
+ type: "application/json"
6948
+ });
6949
+ const url = URL.createObjectURL(blob);
6950
+ const a = document.createElement("a");
6951
+ a.href = url;
6952
+ a.download = `lumia-passport-backup-${userId}-${Date.now()}.json`;
6953
+ document.body.appendChild(a);
6954
+ a.click();
6955
+ document.body.removeChild(a);
6956
+ URL.revokeObjectURL(url);
6957
+ setSuccess("Backup file downloaded successfully");
6958
+ await refreshStatus();
6959
+ onBackupSuccess?.();
6960
+ }
6961
+ if (typeof window !== "undefined") {
6962
+ window.dispatchEvent(
6963
+ new CustomEvent("lumia-passport-backup-status-changed", {
6964
+ detail: { method, success: true }
6965
+ })
6966
+ );
6967
+ }
6968
+ } catch (err) {
6969
+ const errorMsg = err instanceof Error ? err.message : "Backup creation failed";
6970
+ setError(errorMsg);
6971
+ await refreshStatus();
6972
+ } finally {
6973
+ setLoading((prev) => ({ ...prev, [method]: false }));
6974
+ }
6975
+ };
6976
+ const formatLastBackup = (timestamp) => {
6977
+ if (!timestamp) return "Never";
6978
+ const date = new Date(timestamp);
6979
+ return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
6980
+ };
6981
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(Card, { className: "border-green-200 bg-green-50", children: [
6982
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardHeader, { className: "pb-4", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center justify-between", children: [
6983
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-3", children: [
6984
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Shield, { className: "h-6 w-6 text-green-600" }),
6985
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
6986
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardTitle, { className: "text-lg", children: "Create Backup" }),
6987
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CardDescription, { className: "text-sm", children: "Secure your keyshare with encrypted backups" })
6988
+ ] })
6989
+ ] }),
6990
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("button", { onClick: onClose, className: "p-1 rounded bg-red-100 text-red-600 hover:bg-red-200 transition-colors", title: "Close", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.X, { className: "h-4 w-4" }) })
6991
+ ] }) }),
6992
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(CardContent, { className: "space-y-6", children: [
6993
+ error && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2 p-3 rounded bg-red-50 border border-red-200 text-red-700 text-sm", children: [
6994
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
6995
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: error })
6996
+ ] }),
6997
+ success && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2 p-3 rounded bg-green-50 border border-green-200 text-green-700 text-sm", children: [
6998
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
6999
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: success })
7000
+ ] }),
7001
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-3", children: [
7002
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "text-sm font-medium text-gray-700", children: "Encryption Method:" }),
7003
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
7004
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7005
+ "input",
7006
+ {
7007
+ type: "checkbox",
7008
+ id: "use-backup-password",
7009
+ checked: useCustomPassword,
7010
+ onChange: (e) => setUseCustomPassword(e.target.checked),
7011
+ className: "rounded"
7012
+ }
7013
+ ),
7014
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("label", { htmlFor: "use-backup-password", className: "text-sm font-medium", children: "Use custom password instead of passkey" })
7015
+ ] }),
7016
+ !useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "p-3 bg-blue-50 border border-blue-200 rounded text-sm text-blue-700", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
7017
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Key, { className: "h-4 w-4" }),
7018
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: "Your passkey will be used to encrypt the backup securely" })
7019
+ ] }) }),
7020
+ useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "relative", children: [
7021
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7022
+ Input,
7023
+ {
7024
+ type: showPassword ? "text" : "password",
7025
+ placeholder: "Enter backup encryption password",
7026
+ value: customPassword,
7027
+ onChange: (e) => setCustomPassword(e.target.value),
7028
+ className: "pr-10"
7029
+ }
7030
+ ),
7031
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7032
+ "button",
7033
+ {
7034
+ type: "button",
7035
+ onClick: () => setShowPassword(!showPassword),
7036
+ className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-500 hover:text-gray-700",
7037
+ children: showPassword ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Eye, { className: "h-4 w-4" })
7038
+ }
7039
+ )
7040
+ ] })
7041
+ ] }),
7042
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-4", children: [
7043
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "text-sm font-medium text-gray-700", children: "Choose Backup Method:" }),
7044
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "p-4 rounded-lg border border-blue-200 bg-blue-50/50", children: [
7045
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex items-center justify-between mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-3", children: [
7046
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Server, { className: "h-5 w-5 text-blue-600" }),
7047
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
7048
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "font-medium text-sm", children: "Server Backup" }),
7049
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "text-xs text-gray-600", children: "Store encrypted backup on secure server" })
7050
+ ] })
7051
+ ] }) }),
7052
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7053
+ Button,
7054
+ {
7055
+ onClick: () => handleBackup("server"),
7056
+ disabled: loading.server || useCustomPassword && !customPassword || !hasKeyshareData,
7057
+ className: "px-4 py-2",
7058
+ children: loading.server ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
7059
+ }
7060
+ ),
7061
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "text-xs text-gray-600 mt-2", children: [
7062
+ "Encrypted backup stored on secure server \u2022 Last: ",
7063
+ formatLastBackup(backupStatus.server.lastBackup)
7064
+ ] })
7065
+ ] }),
7066
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "p-4 rounded-lg border border-sky-200 bg-sky-50/50", children: [
7067
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-3 mb-3", children: [
7068
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Cloud, { className: "h-5 w-5 text-sky-600" }),
7069
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
7070
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "font-medium text-sm", children: "Cloud Backup" }),
7071
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "text-xs text-gray-600", children: "Store encrypted backup in cloud storage" })
7072
+ ] })
7073
+ ] }),
7074
+ cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7075
+ "select",
7076
+ {
7077
+ value: selectedCloudProvider || "",
7078
+ onChange: (e) => setSelectedCloudProvider(e.target.value),
7079
+ className: "text-sm border rounded px-2 py-1 w-full",
7080
+ children: cloudProviders.map((provider) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("option", { value: provider.id, disabled: !provider.available, children: [
7081
+ provider.name,
7082
+ " ",
7083
+ provider.available ? "" : "(Not Available)"
7084
+ ] }, provider.id))
7085
+ }
7086
+ ) }),
7087
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7088
+ Button,
7089
+ {
7090
+ onClick: () => handleBackup("cloud"),
7091
+ disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
7092
+ className: "px-4 py-2",
7093
+ children: loading.cloud ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
7094
+ }
7095
+ ),
7096
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "text-xs text-gray-600 mt-2", children: cloudProviders.length > 0 ? `Direct backup to ${cloudProviders.find((p) => p.id === selectedCloudProvider)?.name || "cloud storage"} \u2022 Last: ${formatLastBackup(backupStatus.cloud.lastBackup)}` : `No cloud providers configured \u2022 Last: ${formatLastBackup(backupStatus.cloud.lastBackup)}` })
7097
+ ] }),
7098
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "p-4 rounded-lg border border-purple-200 bg-purple-50/50", children: [
7099
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-3 mb-3", children: [
7100
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Download, { className: "h-5 w-5 text-purple-600" }),
7101
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
7102
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "font-medium text-sm", children: "File Backup" }),
7103
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "text-xs text-gray-600", children: "Download encrypted backup file to your device" })
7104
+ ] })
7105
+ ] }),
7106
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7107
+ Button,
7108
+ {
7109
+ onClick: () => handleBackup("local"),
7110
+ disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
7111
+ className: "w-full",
7112
+ children: loading.local ? "Creating..." : useCustomPassword ? "Create & Download" : "Create & Download with Passkey"
7113
+ }
7114
+ ),
7115
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "text-xs text-gray-600 mt-2", children: [
7116
+ "Download encrypted backup file to your device \u2022 Last: ",
7117
+ formatLastBackup(backupStatus.local.lastBackup)
7118
+ ] })
7119
+ ] })
7120
+ ] }),
7121
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-start gap-2 p-3 bg-amber-50 border border-amber-200 rounded text-amber-800 text-xs", children: [
7122
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Lock, { className: "h-4 w-4 mt-0.5 flex-shrink-0" }),
7123
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { children: [
7124
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "font-medium", children: "Security Notice" }),
7125
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "mt-1", children: [
7126
+ useCustomPassword ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: "All backups are encrypted with AES-256 using your custom password. Store your password securely - without it, backups cannot be restored." }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: "All backups are encrypted with AES-256 using your passkey. Your passkey authenticator (device/biometrics) is required to restore backups." }),
7127
+ " ",
7128
+ "Without backup access, you cannot recover your smart account if you lose this device."
7129
+ ] })
7130
+ ] })
7131
+ ] })
7132
+ ] })
7133
+ ] });
7134
+ }
7135
+
6719
7136
  // src/internal/components/TransactionsModal.tsx
6720
7137
  var import_react13 = __toESM(require("react"), 1);
6721
- var import_lucide_react9 = require("lucide-react");
7138
+ var import_lucide_react10 = require("lucide-react");
6722
7139
  init_base();
6723
- var import_jsx_runtime23 = require("react/jsx-runtime");
7140
+ var import_jsx_runtime24 = require("react/jsx-runtime");
6724
7141
  var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6725
7142
  const { address } = useLumiaSession();
6726
7143
  const [transactions, setTransactions] = import_react13.default.useState([]);
@@ -6770,98 +7187,98 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6770
7187
  }
6771
7188
  };
6772
7189
  const getStatusIcon = (status) => {
6773
- return status === "ok" ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.CheckCircle2, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.XCircle, { className: "w-4 h-4 text-red-500" });
7190
+ return status === "ok" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.CheckCircle2, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.XCircle, { className: "w-4 h-4 text-red-500" });
6774
7191
  };
6775
7192
  const getTransactionIcon = (from, to) => {
6776
7193
  const isIncoming = to.toLowerCase() === address?.toLowerCase();
6777
- return isIncoming ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.ArrowDownRight, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.ArrowUpRight, { className: "w-4 h-4 text-blue-500" });
7194
+ return isIncoming ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ArrowDownRight, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ArrowUpRight, { className: "w-4 h-4 text-blue-500" });
6778
7195
  };
6779
7196
  const openInExplorer = (txHash) => {
6780
7197
  const explorerUrl = getExplorerUrl();
6781
7198
  window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
6782
7199
  };
6783
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
6784
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DialogTitle, { children: "Transaction History" }) }),
6785
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DialogDescription, { className: "sr-only", children: "View your transaction history" }),
6786
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
6787
- onBack && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7200
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
7201
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DialogTitle, { children: "Transaction History" }) }),
7202
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DialogDescription, { className: "sr-only", children: "View your transaction history" }),
7203
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
7204
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
6788
7205
  "button",
6789
7206
  {
6790
7207
  onClick: onBack,
6791
7208
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
6792
7209
  title: "Back",
6793
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.ArrowLeft, { className: "h-4 w-4" })
7210
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ArrowLeft, { className: "h-4 w-4" })
6794
7211
  }
6795
7212
  ),
6796
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
6797
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Activity, { className: "h-5 w-5" }),
6798
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { children: "Transaction History" }),
6799
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7213
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7214
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Activity, { className: "h-5 w-5" }),
7215
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { children: "Transaction History" }),
7216
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
6800
7217
  "button",
6801
7218
  {
6802
7219
  onClick: loadTransactions,
6803
7220
  disabled: loading,
6804
7221
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
6805
7222
  title: "Refresh transactions",
6806
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.RefreshCw, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
7223
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.RefreshCw, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
6807
7224
  }
6808
7225
  )
6809
7226
  ] })
6810
7227
  ] }) }),
6811
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `${theme.mutedText}`, children: "Loading transactions..." }) }) : error ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${isDark ? "text-red-400" : "text-red-500"}`, children: [
6812
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.XCircle, { className: "w-12 h-12 mb-2" }),
6813
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "text-center text-sm", children: error })
6814
- ] }) : transactions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
6815
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react9.Activity, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
6816
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("p", { className: "text-center", children: [
7228
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `${theme.mutedText}`, children: "Loading transactions..." }) }) : error ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${isDark ? "text-red-400" : "text-red-500"}`, children: [
7229
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.XCircle, { className: "w-12 h-12 mb-2" }),
7230
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-center text-sm", children: error })
7231
+ ] }) : transactions.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
7232
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Activity, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
7233
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("p", { className: "text-center", children: [
6817
7234
  "No transactions found",
6818
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("br", {}),
6819
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
7235
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("br", {}),
7236
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
6820
7237
  ] })
6821
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "space-y-3", children: transactions.map((tx) => {
7238
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "space-y-3", children: transactions.map((tx) => {
6822
7239
  const isIncoming = tx.to.hash.toLowerCase() === address?.toLowerCase();
6823
7240
  const displayAddress = isIncoming ? tx.from.hash : tx.to.hash;
6824
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
7241
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
6825
7242
  "div",
6826
7243
  {
6827
7244
  className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors cursor-pointer`,
6828
7245
  onClick: () => openInExplorer(tx.hash),
6829
7246
  children: [
6830
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
6831
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
7247
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
7248
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
6832
7249
  getTransactionIcon(tx.from.hash, tx.to.hash),
6833
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
7250
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
6834
7251
  getStatusIcon(tx.status)
6835
7252
  ] }),
6836
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
7253
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
6837
7254
  ] }),
6838
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "space-y-1 text-sm", children: [
6839
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
6840
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: isIncoming ? "From:" : "To:" }),
6841
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: `font-mono ${theme.titleText}`, children: [
7255
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "space-y-1 text-sm", children: [
7256
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex justify-between", children: [
7257
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: isIncoming ? "From:" : "To:" }),
7258
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("span", { className: `font-mono ${theme.titleText}`, children: [
6842
7259
  formatAddress(displayAddress),
6843
- (isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} ml-1`, children: "(Contract)" })
7260
+ (isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} ml-1`, children: "(Contract)" })
6844
7261
  ] })
6845
7262
  ] }),
6846
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
6847
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: "Value:" }),
6848
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: `font-semibold ${theme.titleText}`, children: [
7263
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex justify-between", children: [
7264
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Value:" }),
7265
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("span", { className: `font-semibold ${theme.titleText}`, children: [
6849
7266
  formatValue(tx.value),
6850
7267
  " LUMIA"
6851
7268
  ] })
6852
7269
  ] }),
6853
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
6854
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: "Block:" }),
6855
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: `font-mono ${theme.titleText}`, children: [
7270
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex justify-between", children: [
7271
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Block:" }),
7272
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("span", { className: `font-mono ${theme.titleText}`, children: [
6856
7273
  "#",
6857
7274
  tx.block_number
6858
7275
  ] })
6859
7276
  ] }),
6860
- tx.method && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex justify-between", children: [
6861
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${theme.bodyText}`, children: "Method:" }),
6862
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: `${isDark ? "text-blue-400" : "text-blue-600"} text-xs`, children: tx.method })
7277
+ tx.method && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex justify-between", children: [
7278
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Method:" }),
7279
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${isDark ? "text-blue-400" : "text-blue-600"} text-xs`, children: tx.method })
6863
7280
  ] }),
6864
- tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
7281
+ tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
6865
7282
  "span",
6866
7283
  {
6867
7284
  className: `text-xs ${isDark ? "bg-blue-900/30 text-blue-300" : "bg-blue-100 text-blue-800"} px-2 py-0.5 rounded-full`,
@@ -6875,7 +7292,7 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6875
7292
  tx.hash
6876
7293
  );
6877
7294
  }) }) }),
6878
- transactions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7295
+ transactions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
6879
7296
  "Total: ",
6880
7297
  transactions.length,
6881
7298
  " transaction",
@@ -7049,9 +7466,9 @@ function useTokenBalance(tokenAddress, userAddress) {
7049
7466
  }
7050
7467
 
7051
7468
  // src/internal/components/ViewAssetsModal.tsx
7052
- var import_lucide_react10 = require("lucide-react");
7469
+ var import_lucide_react11 = require("lucide-react");
7053
7470
  init_base();
7054
- var import_jsx_runtime24 = require("react/jsx-runtime");
7471
+ var import_jsx_runtime25 = require("react/jsx-runtime");
7055
7472
  var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
7056
7473
  const { address } = useLumiaSession();
7057
7474
  const { assets, refreshBalances, isLoading } = useAssets(address);
@@ -7070,107 +7487,107 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
7070
7487
  const openInExplorer = (address2) => {
7071
7488
  window.open(`${LUMIA_EXPLORER_URL}/address/${address2}`, "_blank");
7072
7489
  };
7073
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
7074
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DialogTitle, { children: "View Assets" }) }),
7075
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(DialogDescription, { className: "sr-only", children: "View your token balances and assets" }),
7076
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
7077
- onBack && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
7490
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
7491
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DialogTitle, { children: "View Assets" }) }),
7492
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(DialogDescription, { className: "sr-only", children: "View your token balances and assets" }),
7493
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2", children: [
7494
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
7078
7495
  "button",
7079
7496
  {
7080
7497
  onClick: onBack,
7081
7498
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
7082
7499
  title: "Back",
7083
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ArrowLeft, { className: "h-4 w-4" })
7500
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.ArrowLeft, { className: "h-4 w-4" })
7084
7501
  }
7085
7502
  ),
7086
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7087
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Gem, { className: "h-5 w-5" }),
7088
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { children: "Your Assets" }),
7089
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
7503
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7504
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.Gem, { className: "h-5 w-5" }),
7505
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: "Your Assets" }),
7506
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
7090
7507
  "button",
7091
7508
  {
7092
7509
  onClick: refreshBalances,
7093
7510
  disabled: isLoading,
7094
7511
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
7095
7512
  title: "Refresh balances",
7096
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.RefreshCw, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
7513
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.RefreshCw, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
7097
7514
  }
7098
7515
  )
7099
7516
  ] })
7100
7517
  ] }) }),
7101
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `${theme.mutedText}`, children: "Loading assets..." }) }) : assets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
7102
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Gem, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
7103
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { children: "No assets found" })
7104
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "space-y-3", children: assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors`, children: [
7105
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
7106
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-3", children: [
7107
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
7108
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { children: [
7109
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `font-medium ${theme.titleText}`, children: asset.name }),
7110
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7518
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `${theme.mutedText}`, children: "Loading assets..." }) }) : assets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
7519
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.Gem, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
7520
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { children: "No assets found" })
7521
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "space-y-3", children: assets.map((asset, index) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors`, children: [
7522
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between mb-2", children: [
7523
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-3", children: [
7524
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "w-10 h-10 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
7525
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { children: [
7526
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `font-medium ${theme.titleText}`, children: asset.name }),
7527
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7111
7528
  ] })
7112
7529
  ] }),
7113
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "text-right", children: [
7114
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `font-mono ${theme.titleText}`, children: asset.formattedBalance }),
7115
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7530
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "text-right", children: [
7531
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `font-mono ${theme.titleText}`, children: asset.formattedBalance }),
7532
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7116
7533
  ] })
7117
7534
  ] }),
7118
- asset.address && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `space-y-2 mt-3 pt-3 border-t ${theme.divider}`, children: [
7119
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
7120
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Contract Address:" }),
7121
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
7122
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
7123
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
7535
+ asset.address && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `space-y-2 mt-3 pt-3 border-t ${theme.divider}`, children: [
7536
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
7537
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `${theme.bodyText}`, children: "Contract Address:" }),
7538
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2", children: [
7539
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
7540
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
7124
7541
  "button",
7125
7542
  {
7126
7543
  onClick: () => handleCopy(asset.address, "address"),
7127
7544
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7128
7545
  title: "Copy address",
7129
- children: copied === "address" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Copy, { className: "w-3 h-3" })
7546
+ children: copied === "address" ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.Copy, { className: "w-3 h-3" })
7130
7547
  }
7131
7548
  ),
7132
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
7549
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
7133
7550
  "button",
7134
7551
  {
7135
7552
  onClick: () => openInExplorer(asset.address),
7136
7553
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7137
7554
  title: "View in explorer",
7138
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ExternalLink, { className: "w-3 h-3" })
7555
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.ExternalLink, { className: "w-3 h-3" })
7139
7556
  }
7140
7557
  )
7141
7558
  ] })
7142
7559
  ] }),
7143
- asset.decimals && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
7144
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Decimals:" }),
7145
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.titleText}`, children: asset.decimals })
7560
+ asset.decimals && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
7561
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `${theme.bodyText}`, children: "Decimals:" }),
7562
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `${theme.titleText}`, children: asset.decimals })
7146
7563
  ] })
7147
7564
  ] }),
7148
- asset.type === "native" && address && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "mt-3 pt-3 border-t border-gray-200", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
7149
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${theme.bodyText}`, children: "Your Address:" }),
7150
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "flex items-center gap-2", children: [
7151
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
7152
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
7565
+ asset.type === "native" && address && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "mt-3 pt-3 border-t border-gray-200", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center justify-between text-sm", children: [
7566
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `${theme.bodyText}`, children: "Your Address:" }),
7567
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex items-center gap-2", children: [
7568
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
7569
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
7153
7570
  "button",
7154
7571
  {
7155
7572
  onClick: () => handleCopy(address, "wallet"),
7156
7573
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7157
7574
  title: "Copy wallet address",
7158
- children: copied === "wallet" ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.Copy, { className: "w-3 h-3" })
7575
+ children: copied === "wallet" ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.Copy, { className: "w-3 h-3" })
7159
7576
  }
7160
7577
  ),
7161
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
7578
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
7162
7579
  "button",
7163
7580
  {
7164
7581
  onClick: () => openInExplorer(address),
7165
7582
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7166
7583
  title: "View in explorer",
7167
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react10.ExternalLink, { className: "w-3 h-3" })
7584
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react11.ExternalLink, { className: "w-3 h-3" })
7168
7585
  }
7169
7586
  )
7170
7587
  ] })
7171
7588
  ] }) })
7172
7589
  ] }, `${asset.type}-${asset.address || "native"}-${index}`)) }) }),
7173
- assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7590
+ assets.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7174
7591
  "Total: ",
7175
7592
  assets.length,
7176
7593
  " asset",
@@ -7181,7 +7598,7 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
7181
7598
 
7182
7599
  // src/internal/components/SendModal.tsx
7183
7600
  var import_react17 = require("react");
7184
- var import_lucide_react13 = require("lucide-react");
7601
+ var import_lucide_react14 = require("lucide-react");
7185
7602
 
7186
7603
  // src/hooks/useSendTransaction.ts
7187
7604
  var import_react16 = require("react");
@@ -7247,8 +7664,8 @@ var import_viem6 = require("viem");
7247
7664
  var import_wagmi7 = require("wagmi");
7248
7665
 
7249
7666
  // src/internal/components/UserOpStatus.tsx
7250
- var React23 = __toESM(require("react"), 1);
7251
- var import_lucide_react12 = require("lucide-react");
7667
+ var React24 = __toESM(require("react"), 1);
7668
+ var import_lucide_react13 = require("lucide-react");
7252
7669
 
7253
7670
  // src/internal/components/ui/badge.tsx
7254
7671
  var import_class_variance_authority2 = require("class-variance-authority");
@@ -7261,7 +7678,7 @@ function cn2(...inputs) {
7261
7678
  }
7262
7679
 
7263
7680
  // src/internal/components/ui/badge.tsx
7264
- var import_jsx_runtime25 = require("react/jsx-runtime");
7681
+ var import_jsx_runtime26 = require("react/jsx-runtime");
7265
7682
  var badgeVariants = (0, import_class_variance_authority2.cva)(
7266
7683
  "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
7267
7684
  {
@@ -7281,13 +7698,13 @@ var badgeVariants = (0, import_class_variance_authority2.cva)(
7281
7698
  }
7282
7699
  );
7283
7700
  function Badge({ className, variant, ...props }) {
7284
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
7701
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: cn2(badgeVariants({ variant }), className), ...props });
7285
7702
  }
7286
7703
 
7287
7704
  // src/internal/components/Address.tsx
7288
- var React22 = __toESM(require("react"), 1);
7289
- var import_lucide_react11 = require("lucide-react");
7290
- var import_jsx_runtime26 = require("react/jsx-runtime");
7705
+ var React23 = __toESM(require("react"), 1);
7706
+ var import_lucide_react12 = require("lucide-react");
7707
+ var import_jsx_runtime27 = require("react/jsx-runtime");
7291
7708
  function toExplorerAddressUrl(address, chain) {
7292
7709
  const base2 = chain?.blockExplorers?.default?.url;
7293
7710
  if (!base2) return null;
@@ -7308,12 +7725,12 @@ var Address = ({
7308
7725
  }) => {
7309
7726
  const addr = address || "";
7310
7727
  const explorer = toExplorerAddressUrl(addr, chain || void 0);
7311
- const [copied, setCopied] = React22.useState(false);
7312
- if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
7313
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
7314
- label && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "text-sm font-medium", children: label }),
7315
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
7316
- showCopy && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
7728
+ const [copied, setCopied] = React23.useState(false);
7729
+ if (!addr) return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
7730
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
7731
+ label && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-sm font-medium", children: label }),
7732
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
7733
+ showCopy && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
7317
7734
  Button,
7318
7735
  {
7319
7736
  variant: "ghost",
@@ -7327,10 +7744,10 @@ var Address = ({
7327
7744
  } catch {
7328
7745
  }
7329
7746
  },
7330
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.Copy, { className: "h-4 w-4" })
7747
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Copy, { className: "h-4 w-4" })
7331
7748
  }
7332
7749
  ),
7333
- showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
7750
+ showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
7334
7751
  "a",
7335
7752
  {
7336
7753
  href: explorer,
@@ -7338,7 +7755,7 @@ var Address = ({
7338
7755
  rel: "noreferrer noopener",
7339
7756
  className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
7340
7757
  title: "Open in explorer",
7341
- children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_lucide_react11.ExternalLink, { className: "h-4 w-4" })
7758
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.ExternalLink, { className: "h-4 w-4" })
7342
7759
  }
7343
7760
  )
7344
7761
  ] });
@@ -7346,7 +7763,7 @@ var Address = ({
7346
7763
 
7347
7764
  // src/internal/components/UserOpStatus.tsx
7348
7765
  init_base();
7349
- var import_jsx_runtime27 = require("react/jsx-runtime");
7766
+ var import_jsx_runtime28 = require("react/jsx-runtime");
7350
7767
  var UserOpStatus = ({
7351
7768
  userOpHash,
7352
7769
  chain,
@@ -7357,20 +7774,20 @@ var UserOpStatus = ({
7357
7774
  externalState
7358
7775
  }) => {
7359
7776
  const useExternalState = !!externalState;
7360
- const [internalReceipt, setInternalReceipt] = React23.useState(null);
7361
- const [internalMempool, setInternalMempool] = React23.useState(null);
7362
- const [internalError, setInternalError] = React23.useState(null);
7363
- const [attempt, setAttempt] = React23.useState(0);
7364
- const [internalRefreshing, setInternalRefreshing] = React23.useState(false);
7365
- const [timedOut, setTimedOut] = React23.useState(false);
7366
- const [rejected, setRejected] = React23.useState(false);
7367
- const intervalRef = React23.useRef(null);
7368
- const startTimeRef = React23.useRef(Date.now());
7777
+ const [internalReceipt, setInternalReceipt] = React24.useState(null);
7778
+ const [internalMempool, setInternalMempool] = React24.useState(null);
7779
+ const [internalError, setInternalError] = React24.useState(null);
7780
+ const [attempt, setAttempt] = React24.useState(0);
7781
+ const [internalRefreshing, setInternalRefreshing] = React24.useState(false);
7782
+ const [timedOut, setTimedOut] = React24.useState(false);
7783
+ const [rejected, setRejected] = React24.useState(false);
7784
+ const intervalRef = React24.useRef(null);
7785
+ const startTimeRef = React24.useRef(Date.now());
7369
7786
  const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
7370
7787
  const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
7371
7788
  const error = useExternalState ? externalState.error ?? null : internalError;
7372
7789
  const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
7373
- const rpc = React23.useCallback(async (method, params) => {
7790
+ const rpc = React24.useCallback(async (method, params) => {
7374
7791
  const body = { jsonrpc: "2.0", id: 1, method, params };
7375
7792
  const res = await fetch(getBundlerUrl(), {
7376
7793
  method: "POST",
@@ -7381,14 +7798,14 @@ var UserOpStatus = ({
7381
7798
  if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
7382
7799
  return json.result;
7383
7800
  }, []);
7384
- const extractMempoolInfo = React23.useCallback((m) => {
7801
+ const extractMempoolInfo = React24.useCallback((m) => {
7385
7802
  if (!m) return null;
7386
7803
  const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
7387
7804
  const sender = m.sender || m?.userOperation?.sender || null;
7388
7805
  if (!entryPoint && !sender) return null;
7389
7806
  return { entryPoint, sender };
7390
7807
  }, []);
7391
- const tick = React23.useCallback(async () => {
7808
+ const tick = React24.useCallback(async () => {
7392
7809
  if (useExternalState) return;
7393
7810
  const elapsed = Date.now() - startTimeRef.current;
7394
7811
  if (elapsed > maxPollTimeMs) {
@@ -7432,7 +7849,7 @@ var UserOpStatus = ({
7432
7849
  setAttempt((x) => x + 1);
7433
7850
  }
7434
7851
  }, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
7435
- React23.useEffect(() => {
7852
+ React24.useEffect(() => {
7436
7853
  if (useExternalState) return;
7437
7854
  console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
7438
7855
  startTimeRef.current = Date.now();
@@ -7444,7 +7861,7 @@ var UserOpStatus = ({
7444
7861
  setAttempt(0);
7445
7862
  setInternalRefreshing(false);
7446
7863
  }, [userOpHash, useExternalState]);
7447
- React23.useEffect(() => {
7864
+ React24.useEffect(() => {
7448
7865
  if (useExternalState) {
7449
7866
  console.log("[UserOpStatus] Using external state, skipping internal polling");
7450
7867
  return;
@@ -7479,54 +7896,54 @@ var UserOpStatus = ({
7479
7896
  const stateBadge = () => {
7480
7897
  if (receipt) {
7481
7898
  const ok = !!receipt.success;
7482
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
7483
- ok ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.CheckCircle2, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-3 w-3" }),
7899
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
7900
+ ok ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.CheckCircle2, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-3 w-3" }),
7484
7901
  ok ? "Included" : "Failed"
7485
7902
  ] });
7486
7903
  }
7487
7904
  if (rejected) {
7488
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "destructive", className: "gap-1", children: [
7489
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-3 w-3" }),
7905
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Badge, { variant: "destructive", className: "gap-1", children: [
7906
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-3 w-3" }),
7490
7907
  " Rejected by bundler"
7491
7908
  ] });
7492
7909
  }
7493
7910
  if (timedOut) {
7494
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "warning", className: "gap-1", children: [
7495
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-3 w-3" }),
7911
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Badge, { variant: "warning", className: "gap-1", children: [
7912
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-3 w-3" }),
7496
7913
  " Timeout - may be rejected"
7497
7914
  ] });
7498
7915
  }
7499
7916
  if (mempool) {
7500
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "outline", className: "gap-1", children: [
7501
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Clock, { className: "h-3 w-3" }),
7917
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Badge, { variant: "outline", className: "gap-1", children: [
7918
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Clock, { className: "h-3 w-3" }),
7502
7919
  " Pending in bundler"
7503
7920
  ] });
7504
7921
  }
7505
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Badge, { variant: "secondary", className: "gap-1", children: [
7506
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Clock, { className: "h-3 w-3" }),
7922
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Badge, { variant: "secondary", className: "gap-1", children: [
7923
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Clock, { className: "h-3 w-3" }),
7507
7924
  " Waiting"
7508
7925
  ] });
7509
7926
  };
7510
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
7927
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
7511
7928
  "div",
7512
7929
  {
7513
7930
  className: cn2("lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]", className),
7514
7931
  style: { textAlign: "left", listStyle: "none" },
7515
7932
  children: [
7516
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [
7517
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center gap-2", children: [
7933
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center justify-between mb-3", children: [
7934
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2", children: [
7518
7935
  stateBadge(),
7519
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
7936
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
7520
7937
  ] }),
7521
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
7522
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.RefreshCw, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
7523
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-xs", children: "Refresh" })
7938
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
7939
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.RefreshCw, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
7940
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-xs", children: "Refresh" })
7524
7941
  ] })
7525
7942
  ] }),
7526
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
7527
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
7528
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
7529
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
7943
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
7944
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
7945
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
7946
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
7530
7947
  Button,
7531
7948
  {
7532
7949
  variant: "ghost",
@@ -7538,14 +7955,14 @@ var UserOpStatus = ({
7538
7955
  } catch {
7539
7956
  }
7540
7957
  },
7541
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Copy, { className: "h-3.5 w-3.5" })
7958
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Copy, { className: "h-3.5 w-3.5" })
7542
7959
  }
7543
7960
  )
7544
7961
  ] }),
7545
- receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex items-center gap-2 mb-3", children: [
7546
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
7547
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
7548
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
7962
+ receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2 mb-3", children: [
7963
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
7964
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
7965
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
7549
7966
  Button,
7550
7967
  {
7551
7968
  variant: "ghost",
@@ -7557,10 +7974,10 @@ var UserOpStatus = ({
7557
7974
  } catch {
7558
7975
  }
7559
7976
  },
7560
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.Copy, { className: "h-3.5 w-3.5" })
7977
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Copy, { className: "h-3.5 w-3.5" })
7561
7978
  }
7562
7979
  ),
7563
- chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
7980
+ chain?.blockExplorers?.default?.url && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
7564
7981
  "a",
7565
7982
  {
7566
7983
  href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
@@ -7568,11 +7985,11 @@ var UserOpStatus = ({
7568
7985
  rel: "noreferrer noopener",
7569
7986
  className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
7570
7987
  title: "Open in explorer",
7571
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.ExternalLink, { className: "h-3.5 w-3.5" })
7988
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.ExternalLink, { className: "h-3.5 w-3.5" })
7572
7989
  }
7573
7990
  )
7574
7991
  ] }),
7575
- receipt && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-xs text-muted-foreground mb-3", children: [
7992
+ receipt && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-xs text-muted-foreground mb-3", children: [
7576
7993
  "Block ",
7577
7994
  parseInt(receipt.receipt?.blockNumber || "0x0", 16),
7578
7995
  " \u2022 Gas Used",
@@ -7581,32 +7998,32 @@ var UserOpStatus = ({
7581
7998
  " \u2022 Success ",
7582
7999
  String(!!receipt.success)
7583
8000
  ] }),
7584
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { className: "ml-2", children: [
8001
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: "ml-2", children: [
7585
8002
  "\u2022 Polling for ",
7586
8003
  Math.round((Date.now() - startTimeRef.current) / 1e3),
7587
8004
  "s"
7588
8005
  ] }) }),
7589
- mempool && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
7590
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { children: [
8006
+ mempool && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
8007
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
7591
8008
  "Seen by bundler at ",
7592
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
8009
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
7593
8010
  ] }),
7594
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { children: [
8011
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
7595
8012
  "sender ",
7596
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Address, { address: mempool.sender, chain, truncate: false })
8013
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Address, { address: mempool.sender, chain, truncate: false })
7597
8014
  ] })
7598
8015
  ] }),
7599
- error && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
7600
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-4 w-4" }),
8016
+ error && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
8017
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-4 w-4" }),
7601
8018
  " ",
7602
8019
  error
7603
8020
  ] }),
7604
- rejected && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
7605
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-4 w-4" }),
8021
+ rejected && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
8022
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-4 w-4" }),
7606
8023
  "UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
7607
8024
  ] }),
7608
- timedOut && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
7609
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_lucide_react12.AlertCircle, { className: "h-4 w-4" }),
8025
+ timedOut && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
8026
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-4 w-4" }),
7610
8027
  "Stopped polling after ",
7611
8028
  Math.round(maxPollTimeMs / 1e3),
7612
8029
  "s. UserOperation may have been rejected by the bundler."
@@ -7618,7 +8035,7 @@ var UserOpStatus = ({
7618
8035
 
7619
8036
  // src/internal/components/SendModal.tsx
7620
8037
  init_base();
7621
- var import_jsx_runtime28 = require("react/jsx-runtime");
8038
+ var import_jsx_runtime29 = require("react/jsx-runtime");
7622
8039
  var SendModal = ({
7623
8040
  open,
7624
8041
  onOpenChange,
@@ -7701,7 +8118,7 @@ var SendModal = ({
7701
8118
  const maxAmount = Math.max(0, balance - 1e-3);
7702
8119
  setAmount(maxAmount.toFixed(6));
7703
8120
  };
7704
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
8121
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
7705
8122
  DialogContent,
7706
8123
  {
7707
8124
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -7713,28 +8130,28 @@ var SendModal = ({
7713
8130
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
7714
8131
  },
7715
8132
  children: [
7716
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DialogTitle, { children: "Send Transaction" }) }),
7717
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DialogDescription, { className: "sr-only", children: "Send LUMIA tokens to another address" }),
7718
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2", children: [
7719
- onBack && txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
8133
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogTitle, { children: "Send Transaction" }) }),
8134
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogDescription, { className: "sr-only", children: "Send LUMIA tokens to another address" }),
8135
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center gap-2", children: [
8136
+ onBack && txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
7720
8137
  "button",
7721
8138
  {
7722
8139
  onClick: onBack,
7723
8140
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
7724
8141
  title: "Back",
7725
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.ArrowLeft, { className: "h-4 w-4" })
8142
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.ArrowLeft, { className: "h-4 w-4" })
7726
8143
  }
7727
8144
  ),
7728
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7729
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Send, { className: "h-5 w-5" }),
7730
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { children: "Send LUMIA" })
8145
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8146
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.Send, { className: "h-5 w-5" }),
8147
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "Send LUMIA" })
7731
8148
  ] })
7732
8149
  ] }) }),
7733
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "p-5", children: [
7734
- txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-4", children: [
7735
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
7736
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Recipient Address" }),
7737
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
8150
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "p-5", children: [
8151
+ txStep === "input" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "space-y-4", children: [
8152
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { children: [
8153
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Recipient Address" }),
8154
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
7738
8155
  "input",
7739
8156
  {
7740
8157
  type: "text",
@@ -7745,17 +8162,17 @@ var SendModal = ({
7745
8162
  }
7746
8163
  )
7747
8164
  ] }),
7748
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
7749
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between items-center mb-2", children: [
7750
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("label", { className: `text-sm font-medium ${theme.bodyText}`, children: "Amount" }),
7751
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
8165
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { children: [
8166
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex justify-between items-center mb-2", children: [
8167
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("label", { className: `text-sm font-medium ${theme.bodyText}`, children: "Amount" }),
8168
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
7752
8169
  "Balance: ",
7753
8170
  balance.toFixed(4),
7754
8171
  " LUMIA"
7755
8172
  ] })
7756
8173
  ] }),
7757
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "relative", children: [
7758
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
8174
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "relative", children: [
8175
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
7759
8176
  "input",
7760
8177
  {
7761
8178
  type: "number",
@@ -7766,7 +8183,7 @@ var SendModal = ({
7766
8183
  className: `w-full px-3 py-2 pr-16 border ${isDark ? "bg-gray-800 border-gray-600 text-white placeholder:text-gray-400" : "bg-white border-gray-300 text-gray-900 placeholder:text-gray-400"} rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`
7767
8184
  }
7768
8185
  ),
7769
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
8186
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
7770
8187
  "button",
7771
8188
  {
7772
8189
  onClick: handleMaxAmount,
@@ -7776,11 +8193,11 @@ var SendModal = ({
7776
8193
  )
7777
8194
  ] })
7778
8195
  ] }),
7779
- (validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `flex items-center gap-2 p-3 ${isDark ? "bg-red-900/30 text-red-400" : "bg-red-50 text-red-700"} rounded-lg`, children: [
7780
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.AlertCircle, { className: "h-4 w-4" }),
7781
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-sm", children: validationError || error })
8196
+ (validationError || error) && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `flex items-center gap-2 p-3 ${isDark ? "bg-red-900/30 text-red-400" : "bg-red-50 text-red-700"} rounded-lg`, children: [
8197
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.AlertCircle, { className: "h-4 w-4" }),
8198
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "text-sm", children: validationError || error })
7782
8199
  ] }),
7783
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
8200
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
7784
8201
  Button,
7785
8202
  {
7786
8203
  onClick: handleSend,
@@ -7791,29 +8208,29 @@ var SendModal = ({
7791
8208
  }
7792
8209
  )
7793
8210
  ] }),
7794
- txStep === "confirm" && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-4", children: [
7795
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
7796
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("h3", { className: `font-medium ${theme.titleText} mb-3`, children: "Transaction Details" }),
7797
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-2 text-sm", children: [
7798
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between", children: [
7799
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.bodyText}`, children: "To:" }),
7800
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `font-mono ${theme.titleText}`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
8211
+ txStep === "confirm" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "space-y-4", children: [
8212
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
8213
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("h3", { className: `font-medium ${theme.titleText} mb-3`, children: "Transaction Details" }),
8214
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "space-y-2 text-sm", children: [
8215
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex justify-between", children: [
8216
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: `${theme.bodyText}`, children: "To:" }),
8217
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: `font-mono ${theme.titleText}`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
7801
8218
  ] }),
7802
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between", children: [
7803
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.bodyText}`, children: "Amount:" }),
7804
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: `font-semibold ${theme.titleText}`, children: [
8219
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex justify-between", children: [
8220
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: `${theme.bodyText}`, children: "Amount:" }),
8221
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("span", { className: `font-semibold ${theme.titleText}`, children: [
7805
8222
  amount,
7806
8223
  " LUMIA"
7807
8224
  ] })
7808
8225
  ] }),
7809
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex justify-between", children: [
7810
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.bodyText}`, children: "Network:" }),
7811
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: `${theme.titleText}`, children: "Lumia Beam" })
8226
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex justify-between", children: [
8227
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: `${theme.bodyText}`, children: "Network:" }),
8228
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: `${theme.titleText}`, children: "Lumia Beam" })
7812
8229
  ] })
7813
8230
  ] })
7814
8231
  ] }),
7815
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex gap-2", children: [
7816
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
8232
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex gap-2", children: [
8233
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
7817
8234
  Button,
7818
8235
  {
7819
8236
  onClick: () => setTxStep("input"),
@@ -7823,7 +8240,7 @@ var SendModal = ({
7823
8240
  children: "Back"
7824
8241
  }
7825
8242
  ),
7826
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
8243
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
7827
8244
  Button,
7828
8245
  {
7829
8246
  onClick: handleConfirm,
@@ -7831,28 +8248,28 @@ var SendModal = ({
7831
8248
  className: "flex-1",
7832
8249
  size: "lg",
7833
8250
  children: [
7834
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Loader2, { className: "h-4 w-4 animate-spin" }),
8251
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.Loader2, { className: "h-4 w-4 animate-spin" }),
7835
8252
  "Confirm"
7836
8253
  ]
7837
8254
  }
7838
8255
  )
7839
8256
  ] })
7840
8257
  ] }),
7841
- txStep === "pending" && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "py-8 text-center space-y-4", children: [
7842
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.Loader2, { className: `h-12 w-12 animate-spin ${isDark ? "text-blue-400" : "text-blue-600"} mx-auto` }),
7843
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
7844
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Pending" }),
7845
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Please wait while we process your transaction" })
8258
+ txStep === "pending" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "py-8 text-center space-y-4", children: [
8259
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.Loader2, { className: `h-12 w-12 animate-spin ${isDark ? "text-blue-400" : "text-blue-600"} mx-auto` }),
8260
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { children: [
8261
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Pending" }),
8262
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Please wait while we process your transaction" })
7846
8263
  ] })
7847
8264
  ] }),
7848
- txStep === "success" && userOpHash && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "space-y-4", children: [
7849
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "text-center py-4", children: [
7850
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react13.CheckCircle2, { className: `h-12 w-12 ${isDark ? "text-green-400" : "text-green-500"} mx-auto mb-3` }),
7851
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Sent!" }),
7852
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Your transaction is being processed" })
8265
+ txStep === "success" && userOpHash && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "space-y-4", children: [
8266
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "text-center py-4", children: [
8267
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.CheckCircle2, { className: `h-12 w-12 ${isDark ? "text-green-400" : "text-green-500"} mx-auto mb-3` }),
8268
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Sent!" }),
8269
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Your transaction is being processed" })
7853
8270
  ] }),
7854
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(UserOpStatus, { userOpHash, chain: lumiaBeam }) }),
7855
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
8271
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(UserOpStatus, { userOpHash, chain: lumiaBeam }) }),
8272
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
7856
8273
  Button,
7857
8274
  {
7858
8275
  onClick: handleClose,
@@ -7870,9 +8287,9 @@ var SendModal = ({
7870
8287
 
7871
8288
  // src/internal/components/ReceiveModal.tsx
7872
8289
  var import_react18 = require("react");
7873
- var import_lucide_react14 = require("lucide-react");
8290
+ var import_lucide_react15 = require("lucide-react");
7874
8291
  var import_qrcode = __toESM(require("qrcode"), 1);
7875
- var import_jsx_runtime29 = require("react/jsx-runtime");
8292
+ var import_jsx_runtime30 = require("react/jsx-runtime");
7876
8293
  var ReceiveModal = ({
7877
8294
  open,
7878
8295
  onOpenChange,
@@ -7913,7 +8330,7 @@ var ReceiveModal = ({
7913
8330
  if (!addr) return "";
7914
8331
  return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
7915
8332
  };
7916
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
8333
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
7917
8334
  DialogContent,
7918
8335
  {
7919
8336
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -7925,51 +8342,51 @@ var ReceiveModal = ({
7925
8342
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
7926
8343
  },
7927
8344
  children: [
7928
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogTitle, { children: "Receive LUMIA" }) }),
7929
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DialogDescription, { className: "sr-only", children: "Your wallet address and QR code for receiving LUMIA" }),
7930
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center gap-2", children: [
7931
- onBack && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
8345
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogTitle, { children: "Receive LUMIA" }) }),
8346
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogDescription, { className: "sr-only", children: "Your wallet address and QR code for receiving LUMIA" }),
8347
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-center gap-2", children: [
8348
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
7932
8349
  "button",
7933
8350
  {
7934
8351
  onClick: onBack,
7935
8352
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
7936
8353
  title: "Back",
7937
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.ArrowLeft, { className: "h-4 w-4" })
8354
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.ArrowLeft, { className: "h-4 w-4" })
7938
8355
  }
7939
8356
  ),
7940
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7941
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.QrCode, { className: "h-5 w-5" }),
7942
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "Receive LUMIA" })
8357
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8358
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.QrCode, { className: "h-5 w-5" }),
8359
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: "Receive LUMIA" })
7943
8360
  ] })
7944
8361
  ] }) }),
7945
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "p-5 space-y-4", children: [
7946
- qrCodeUrl && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `${isDark ? "bg-white" : "bg-white"} p-4 rounded-xl border ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
7947
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `${isDark ? "bg-blue-900/30 border-blue-600" : "bg-blue-50 border-blue-200"} rounded-lg p-3`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `flex items-center gap-2 ${isDark ? "text-blue-300" : "text-blue-700"} text-sm`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex-1", children: [
7948
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "font-medium", children: "Network: Lumia Beam" }),
7949
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} mt-0.5`, children: "Ensure sender is on the same network" })
8362
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "p-5 space-y-4", children: [
8363
+ qrCodeUrl && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `${isDark ? "bg-white" : "bg-white"} p-4 rounded-xl border ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
8364
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `${isDark ? "bg-blue-900/30 border-blue-600" : "bg-blue-50 border-blue-200"} rounded-lg p-3`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `flex items-center gap-2 ${isDark ? "text-blue-300" : "text-blue-700"} text-sm`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex-1", children: [
8365
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "font-medium", children: "Network: Lumia Beam" }),
8366
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} mt-0.5`, children: "Ensure sender is on the same network" })
7950
8367
  ] }) }) }),
7951
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
7952
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Your Wallet Address" }),
7953
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: `flex-1 font-mono text-sm ${isDark ? "text-white bg-gray-700 border-gray-600" : "text-gray-900 bg-white border-gray-300"} rounded-lg px-3 py-2 break-all`, children: address }) }),
7954
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
8368
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
8369
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Your Wallet Address" }),
8370
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `flex-1 font-mono text-sm ${isDark ? "text-white bg-gray-700 border-gray-600" : "text-gray-900 bg-white border-gray-300"} rounded-lg px-3 py-2 break-all`, children: address }) }),
8371
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
7955
8372
  Button,
7956
8373
  {
7957
8374
  onClick: handleCopy,
7958
8375
  className: "w-full mt-3",
7959
8376
  size: "lg",
7960
- children: copied ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
7961
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.CheckCircle2, { className: "h-4 w-4" }),
7962
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "Copied!" })
7963
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
7964
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react14.Copy, { className: "h-4 w-4" }),
7965
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "Copy Address" })
8377
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
8378
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.CheckCircle2, { className: "h-4 w-4" }),
8379
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: "Copied!" })
8380
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
8381
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.Copy, { className: "h-4 w-4" }),
8382
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: "Copy Address" })
7966
8383
  ] })
7967
8384
  }
7968
8385
  )
7969
8386
  ] }),
7970
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7971
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { children: "Share this address to receive LUMIA tokens." }),
7972
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "mt-1", children: "Only send LUMIA tokens to this address on Lumia Beam network." })
8387
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
8388
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { children: "Share this address to receive LUMIA tokens." }),
8389
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { className: "mt-1", children: "Only send LUMIA tokens to this address on Lumia Beam network." })
7973
8390
  ] })
7974
8391
  ] })
7975
8392
  ]
@@ -7978,12 +8395,12 @@ var ReceiveModal = ({
7978
8395
  };
7979
8396
 
7980
8397
  // src/internal/components/BuyModal.tsx
7981
- var import_lucide_react15 = require("lucide-react");
7982
- var import_jsx_runtime30 = require("react/jsx-runtime");
8398
+ var import_lucide_react16 = require("lucide-react");
8399
+ var import_jsx_runtime31 = require("react/jsx-runtime");
7983
8400
  var BuyModal = ({ open, onOpenChange, onBack }) => {
7984
8401
  const { config } = useLumiaPassportConfig();
7985
8402
  const { isDark, classes: theme } = useTheme(config.ui.theme);
7986
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
8403
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
7987
8404
  DialogContent,
7988
8405
  {
7989
8406
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -7995,26 +8412,26 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
7995
8412
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
7996
8413
  },
7997
8414
  children: [
7998
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogTitle, { children: "Buy Crypto" }) }),
7999
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DialogDescription, { className: "sr-only", children: "On-ramp placeholder" }),
8000
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex items-center gap-2", children: [
8001
- onBack && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
8415
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogTitle, { children: "Buy Crypto" }) }),
8416
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogDescription, { className: "sr-only", children: "On-ramp placeholder" }),
8417
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex items-center gap-2", children: [
8418
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
8002
8419
  "button",
8003
8420
  {
8004
8421
  onClick: onBack,
8005
8422
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
8006
8423
  title: "Back",
8007
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.ArrowLeft, { className: "h-4 w-4" })
8424
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react16.ArrowLeft, { className: "h-4 w-4" })
8008
8425
  }
8009
8426
  ),
8010
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8011
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react15.CreditCard, { className: "h-5 w-5" }),
8012
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: "Buy" })
8427
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8428
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react16.CreditCard, { className: "h-5 w-5" }),
8429
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { children: "Buy" })
8013
8430
  ] })
8014
8431
  ] }) }),
8015
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "p-5", children: [
8016
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "On-ramp coming soon\u2026" }) }),
8017
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
8432
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "p-5", children: [
8433
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "On-ramp coming soon\u2026" }) }),
8434
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
8018
8435
  ] })
8019
8436
  ]
8020
8437
  }
@@ -8022,14 +8439,14 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
8022
8439
  };
8023
8440
 
8024
8441
  // src/internal/components/KycModal.tsx
8025
- var import_lucide_react16 = require("lucide-react");
8026
- var import_jsx_runtime31 = require("react/jsx-runtime");
8442
+ var import_lucide_react17 = require("lucide-react");
8443
+ var import_jsx_runtime32 = require("react/jsx-runtime");
8027
8444
  var KycModal = ({ open, onOpenChange, onBack }) => {
8028
8445
  const { config } = useLumiaPassportConfig();
8029
8446
  const { isDark, classes: theme } = useTheme(config.ui.theme);
8030
8447
  const provider = config.kyc?.provider;
8031
8448
  const options = config.kyc?.options || {};
8032
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
8449
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Dialog, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
8033
8450
  DialogContent,
8034
8451
  {
8035
8452
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -8041,32 +8458,32 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
8041
8458
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
8042
8459
  },
8043
8460
  children: [
8044
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogTitle, { children: "KYC" }) }),
8045
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DialogDescription, { className: "sr-only", children: "KYC placeholder" }),
8046
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex items-center gap-2", children: [
8047
- onBack && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
8461
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogTitle, { children: "KYC" }) }),
8462
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogDescription, { className: "sr-only", children: "KYC placeholder" }),
8463
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center gap-2", children: [
8464
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8048
8465
  "button",
8049
8466
  {
8050
8467
  onClick: onBack,
8051
8468
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
8052
8469
  title: "Back",
8053
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react16.ArrowLeft, { className: "h-4 w-4" })
8470
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowLeft, { className: "h-4 w-4" })
8054
8471
  }
8055
8472
  ),
8056
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8057
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react16.ShieldCheck, { className: "h-5 w-5" }),
8058
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { children: "KYC" })
8473
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8474
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: "h-5 w-5" }),
8475
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { children: "KYC" })
8059
8476
  ] })
8060
8477
  ] }) }),
8061
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "p-5", children: [
8062
- provider ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `rounded-xl p-4 ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: [
8063
- /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: `text-sm ${theme.titleText} mb-2`, children: [
8478
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "p-5", children: [
8479
+ provider ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `rounded-xl p-4 ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: [
8480
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `text-sm ${theme.titleText} mb-2`, children: [
8064
8481
  "KYC provider: ",
8065
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "font-medium", children: provider })
8482
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "font-medium", children: provider })
8066
8483
  ] }),
8067
- Object.keys(options).length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `text-xs ${theme.mutedText} break-words whitespace-pre-wrap`, children: JSON.stringify(options, null, 2) }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "No provider options configured." })
8068
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "KYC verification coming soon\u2026" }) }),
8069
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
8484
+ Object.keys(options).length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-xs ${theme.mutedText} break-words whitespace-pre-wrap`, children: JSON.stringify(options, null, 2) }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "No provider options configured." })
8485
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: "KYC verification coming soon\u2026" }) }),
8486
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "pt-4", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
8070
8487
  ] })
8071
8488
  ]
8072
8489
  }
@@ -8075,20 +8492,20 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
8075
8492
 
8076
8493
  // src/components/ConnectWalletButton.tsx
8077
8494
  init_auth();
8078
- var import_lucide_react17 = require("lucide-react");
8495
+ var import_lucide_react18 = require("lucide-react");
8079
8496
  init_base();
8080
8497
 
8081
8498
  // src/modules/linkedProfiles.ts
8082
- var React26 = __toESM(require("react"), 1);
8499
+ var React27 = __toESM(require("react"), 1);
8083
8500
  init_common();
8084
8501
  init_types();
8085
8502
  init_auth();
8086
8503
  function useLumiaPassportLinkedProfiles() {
8087
- const [profiles, setProfiles] = React26.useState([]);
8088
- const [avatar, setAvatar] = React26.useState(null);
8089
- const [isLoading, setIsLoading] = React26.useState(false);
8090
- const [error, setError] = React26.useState(null);
8091
- const load = React26.useCallback(async () => {
8504
+ const [profiles, setProfiles] = React27.useState([]);
8505
+ const [avatar, setAvatar] = React27.useState(null);
8506
+ const [isLoading, setIsLoading] = React27.useState(false);
8507
+ const [error, setError] = React27.useState(null);
8508
+ const load = React27.useCallback(async () => {
8092
8509
  setIsLoading(true);
8093
8510
  setError(null);
8094
8511
  try {
@@ -8114,14 +8531,14 @@ function useLumiaPassportLinkedProfiles() {
8114
8531
  setIsLoading(false);
8115
8532
  }
8116
8533
  }, []);
8117
- React26.useEffect(() => {
8534
+ React27.useEffect(() => {
8118
8535
  load();
8119
8536
  }, [load]);
8120
8537
  return { profiles, avatar, isLoading, error, refresh: load };
8121
8538
  }
8122
8539
 
8123
8540
  // src/components/ConnectWalletButton.tsx
8124
- var import_jsx_runtime32 = require("react/jsx-runtime");
8541
+ var import_jsx_runtime33 = require("react/jsx-runtime");
8125
8542
  var ConnectWalletButton = ({
8126
8543
  className,
8127
8544
  label = "Connect Wallet",
@@ -8173,6 +8590,7 @@ var ConnectWalletButton = ({
8173
8590
  const [copied, setCopied] = import_react19.default.useState(false);
8174
8591
  const [isManageWalletOpen, setIsManageWalletOpen] = import_react19.default.useState(false);
8175
8592
  const [isSecurityOpen, setIsSecurityOpen] = import_react19.default.useState(false);
8593
+ const [isBackupOpen, setIsBackupOpen] = import_react19.default.useState(false);
8176
8594
  const [isTransactionsOpen, setIsTransactionsOpen] = import_react19.default.useState(false);
8177
8595
  const [isViewAssetsOpen, setIsViewAssetsOpen] = import_react19.default.useState(false);
8178
8596
  const [isSendOpen, setIsSendOpen] = import_react19.default.useState(false);
@@ -8423,8 +8841,8 @@ var ConnectWalletButton = ({
8423
8841
  refetchBalance();
8424
8842
  }
8425
8843
  }, [address]);
8426
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: [className, "lumia-scope"].filter(Boolean).join(" "), children: [
8427
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "inline-flex items-center gap-2", children: !address ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8844
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: [className, "lumia-scope"].filter(Boolean).join(" "), children: [
8845
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "inline-flex items-center gap-2", children: !address ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8428
8846
  "button",
8429
8847
  {
8430
8848
  onClick: () => {
@@ -8461,56 +8879,56 @@ var ConnectWalletButton = ({
8461
8879
  },
8462
8880
  children: label || "Connect"
8463
8881
  }
8464
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8882
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8465
8883
  "div",
8466
8884
  {
8467
8885
  className: `relative rounded-2xl p-4 shadow-lg cursor-pointer transition-all duration-200 hover:scale-105 hover:shadow-xl max-w-sm min-w-[280px] ${isDark ? "bg-gray-900/40 backdrop-blur border border-gray-700" : "bg-white backdrop-blur border border-gray-200"}`,
8468
8886
  onClick: () => setIsWalletMenuOpen(true),
8469
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-3", children: [
8470
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "w-10 h-10 rounded-full flex items-center justify-center flex-shrink-0 overflow-hidden bg-gradient-to-br from-purple-500 to-blue-600", children: avatar ? (
8887
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center space-x-3", children: [
8888
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "w-10 h-10 rounded-full flex items-center justify-center flex-shrink-0 overflow-hidden bg-gradient-to-br from-purple-500 to-blue-600", children: avatar ? (
8471
8889
  // eslint-disable-next-line @next/next/no-img-element
8472
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8473
- ) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-white font-bold text-sm", children: "LP" }) }),
8474
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "text-left flex-1 min-w-0", children: [
8475
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `font-semibold text-base truncate ${theme.titleText}`, children: mode === "compact" && displayName ? displayName : formatAddress(address) }),
8476
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
8890
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8891
+ ) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-white font-bold text-sm", children: "LP" }) }),
8892
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "text-left flex-1 min-w-0", children: [
8893
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `font-semibold text-base truncate ${theme.titleText}`, children: mode === "compact" && displayName ? displayName : formatAddress(address) }),
8894
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: `text-sm ${theme.mutedText}`, children: [
8477
8895
  formatBalance(),
8478
8896
  " LUMIA"
8479
8897
  ] })
8480
8898
  ] }),
8481
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-1", children: [
8482
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
8483
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8484
- import_lucide_react17.Cloud,
8899
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center space-x-1", children: [
8900
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "group relative", children: [
8901
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8902
+ import_lucide_react18.Cloud,
8485
8903
  {
8486
8904
  className: `w-3 h-3 ${indicators.server ? "text-green-500" : "text-orange-400"}`
8487
8905
  }
8488
8906
  ),
8489
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
8907
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
8490
8908
  "Server Keyshare: ",
8491
8909
  indicators.server ? "Available" : "Missing"
8492
8910
  ] })
8493
8911
  ] }),
8494
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
8495
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8496
- import_lucide_react17.Laptop,
8912
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "group relative", children: [
8913
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8914
+ import_lucide_react18.Laptop,
8497
8915
  {
8498
8916
  className: `w-3 h-3 ${indicators.local ? "text-green-500" : "text-orange-400"}`
8499
8917
  }
8500
8918
  ),
8501
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
8919
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
8502
8920
  "Local Keyshare: ",
8503
8921
  indicators.local ? "Available" : "Missing"
8504
8922
  ] })
8505
8923
  ] }),
8506
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "group relative", children: [
8507
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8508
- import_lucide_react17.Shield,
8924
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "group relative", children: [
8925
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8926
+ import_lucide_react18.Shield,
8509
8927
  {
8510
8928
  className: `w-3 h-3 ${indicators.backup ? "text-green-500" : "text-orange-400"}`
8511
8929
  }
8512
8930
  ),
8513
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
8931
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 bg-gray-800 text-white text-xs rounded opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none whitespace-nowrap z-50", children: [
8514
8932
  "Vault Backup: ",
8515
8933
  indicators.backup ? "Available" : "Not Found"
8516
8934
  ] })
@@ -8519,59 +8937,59 @@ var ConnectWalletButton = ({
8519
8937
  ] })
8520
8938
  }
8521
8939
  ) }),
8522
- isWalletMenuOpen && address && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "fixed inset-0 z-[60]", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Dialog, { open: isWalletMenuOpen, onOpenChange: setIsWalletMenuOpen, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
8523
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogTitle, { children: "Wallet Menu" }) }),
8524
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(DialogDescription, { className: "sr-only", children: "Smart Account wallet actions and status" }),
8525
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `p-4 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-4", children: [
8526
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "w-12 h-12 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center relative overflow-hidden", children: avatar ? (
8940
+ isWalletMenuOpen && address && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "fixed inset-0 z-[60]", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Dialog, { open: isWalletMenuOpen, onOpenChange: setIsWalletMenuOpen, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(DialogContent, { className: `lumia-scope max-w-[400px] p-0 border-0 ${theme.modalBg} rounded-2xl overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`, children: [
8941
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(DialogTitle, { children: "Wallet Menu" }) }),
8942
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(DialogDescription, { className: "sr-only", children: "Smart Account wallet actions and status" }),
8943
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `p-4 border-b ${theme.divider}`, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center space-x-4", children: [
8944
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "w-12 h-12 bg-gradient-to-br from-purple-500 to-blue-600 rounded-full flex items-center justify-center relative overflow-hidden", children: avatar ? (
8527
8945
  // eslint-disable-next-line @next/next/no-img-element
8528
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8529
- ) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-white font-bold text-lg", children: "L" }) }),
8530
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex-1 min-w-0", children: [
8531
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `font-medium text-lg ${theme.titleText}`, children: displayName || "Smart Account" }),
8532
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-2", children: [
8533
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: formatAddress(address) }),
8534
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("button", { onClick: async () => {
8946
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8947
+ ) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-white font-bold text-lg", children: "L" }) }),
8948
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex-1 min-w-0", children: [
8949
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `font-medium text-lg ${theme.titleText}`, children: displayName || "Smart Account" }),
8950
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center space-x-2", children: [
8951
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `text-sm ${theme.mutedText}`, children: formatAddress(address) }),
8952
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("button", { onClick: async () => {
8535
8953
  try {
8536
8954
  await navigator.clipboard.writeText(address);
8537
8955
  setCopied(true);
8538
8956
  setTimeout(() => setCopied(false), 1500);
8539
8957
  } catch {
8540
8958
  }
8541
- }, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-green-500 text-sm", children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Copy, { className: "w-4 h-4" }) })
8959
+ }, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-green-500 text-sm", children: "\u2713" }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.Copy, { className: "w-4 h-4" }) })
8542
8960
  ] })
8543
8961
  ] })
8544
8962
  ] }) }) }),
8545
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "p-4", children: [
8546
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "grid grid-cols-3 gap-2 mb-4", children: [
8547
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
8963
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "p-4", children: [
8964
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "grid grid-cols-3 gap-2 mb-4", children: [
8965
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8548
8966
  setIsWalletMenuOpen(false);
8549
8967
  setIsSendOpen(true);
8550
8968
  }, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-blue-400" : "bg-blue-50 hover:bg-blue-100 text-blue-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
8551
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowUp, { className: "w-5 h-5" }),
8552
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: "Send" })
8969
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.ArrowUp, { className: "w-5 h-5" }),
8970
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-sm font-medium", children: "Send" })
8553
8971
  ] }),
8554
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
8972
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8555
8973
  setIsWalletMenuOpen(false);
8556
8974
  setIsReceiveOpen(true);
8557
8975
  }, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-green-400" : "bg-green-50 hover:bg-green-100 text-green-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
8558
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowDown, { className: "w-5 h-5" }),
8559
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: "Receive" })
8976
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.ArrowDown, { className: "w-5 h-5" }),
8977
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-sm font-medium", children: "Receive" })
8560
8978
  ] }),
8561
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
8979
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8562
8980
  setIsWalletMenuOpen(false);
8563
8981
  setIsBuyOpen(true);
8564
8982
  }, className: `${isDark ? "bg-slate-900 hover:bg-slate-800 text-purple-400" : "bg-purple-50 hover:bg-purple-100 text-purple-600"} rounded-xl p-3 transition-colors flex items-center justify-center gap-2`, children: [
8565
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Plus, { className: "w-5 h-5" }),
8566
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: "Buy" })
8983
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.Plus, { className: "w-5 h-5" }),
8984
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-sm font-medium", children: "Buy" })
8567
8985
  ] })
8568
8986
  ] }),
8569
- config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `mb-4 p-3 rounded-xl ${isDark ? "bg-orange-900/20 border border-orange-900/40" : "bg-orange-50 border border-orange-200"}`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-start space-x-3", children: [
8570
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.AlertTriangle, { className: `w-5 h-5 ${isDark ? "text-orange-400" : "text-orange-500"} mt-0.5 flex-shrink-0` }),
8571
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex-1 min-w-0", children: [
8572
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-orange-300" : "text-orange-700"}`, children: "Backup Not Created" }),
8573
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-xs mt-1 ${isDark ? "text-orange-400/80" : "text-orange-600"}`, children: "Secure your wallet with an encrypted vault backup to protect against device loss." }),
8574
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
8987
+ config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `mb-4 p-3 rounded-xl ${isDark ? "bg-orange-900/20 border border-orange-900/40" : "bg-orange-50 border border-orange-200"}`, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-start space-x-3", children: [
8988
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.AlertTriangle, { className: `w-5 h-5 ${isDark ? "text-orange-400" : "text-orange-500"} mt-0.5 flex-shrink-0` }),
8989
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex-1 min-w-0", children: [
8990
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-orange-300" : "text-orange-700"}`, children: "Backup Not Created" }),
8991
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `text-xs mt-1 ${isDark ? "text-orange-400/80" : "text-orange-600"}`, children: "Secure your wallet with an encrypted vault backup to protect against device loss." }),
8992
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
8575
8993
  "button",
8576
8994
  {
8577
8995
  onClick: () => {
@@ -8580,19 +8998,19 @@ var ConnectWalletButton = ({
8580
8998
  },
8581
8999
  className: `mt-2 px-3 py-1.5 text-xs font-medium rounded-lg transition-colors ${isDark ? "bg-orange-900/40 hover:bg-orange-900/60 text-orange-300" : "bg-orange-100 hover:bg-orange-200 text-orange-700"}`,
8582
9000
  children: [
8583
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: "w-3 h-3 inline mr-1" }),
9001
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.ShieldCheck, { className: "w-3 h-3 inline mr-1" }),
8584
9002
  "Create Backup"
8585
9003
  ]
8586
9004
  }
8587
9005
  )
8588
9006
  ] })
8589
9007
  ] }) }),
8590
- config.warnings?.emailNotConnectedWarning && !profilesLoading && !profiles.some((p) => p.provider?.toLowerCase() === "email") && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `mb-4 p-3 rounded-xl ${isDark ? "bg-blue-900/20 border border-blue-900/40" : "bg-blue-50 border border-blue-200"}`, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-start space-x-3", children: [
8591
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.AlertTriangle, { className: `w-5 h-5 ${isDark ? "text-blue-400" : "text-blue-500"} mt-0.5 flex-shrink-0` }),
8592
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex-1 min-w-0", children: [
8593
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-blue-300" : "text-blue-700"}`, children: "Email Not Connected" }),
8594
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `text-xs mt-1 ${isDark ? "text-blue-400/80" : "text-blue-600"}`, children: "Connect your email for easier account recovery and additional security." }),
8595
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
9008
+ config.warnings?.emailNotConnectedWarning && !profilesLoading && !profiles.some((p) => p.provider?.toLowerCase() === "email") && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `mb-4 p-3 rounded-xl ${isDark ? "bg-blue-900/20 border border-blue-900/40" : "bg-blue-50 border border-blue-200"}`, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-start space-x-3", children: [
9009
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.AlertTriangle, { className: `w-5 h-5 ${isDark ? "text-blue-400" : "text-blue-500"} mt-0.5 flex-shrink-0` }),
9010
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex-1 min-w-0", children: [
9011
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `text-sm font-medium ${isDark ? "text-blue-300" : "text-blue-700"}`, children: "Email Not Connected" }),
9012
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `text-xs mt-1 ${isDark ? "text-blue-400/80" : "text-blue-600"}`, children: "Connect your email for easier account recovery and additional security." }),
9013
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
8596
9014
  "button",
8597
9015
  {
8598
9016
  onClick: () => {
@@ -8601,80 +9019,87 @@ var ConnectWalletButton = ({
8601
9019
  },
8602
9020
  className: `mt-2 px-3 py-1.5 text-xs font-medium rounded-lg transition-colors ${isDark ? "bg-blue-900/40 hover:bg-blue-900/60 text-blue-300" : "bg-blue-100 hover:bg-blue-200 text-blue-700"}`,
8603
9021
  children: [
8604
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: "w-3 h-3 inline mr-1" }),
9022
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.ShieldCheck, { className: "w-3 h-3 inline mr-1" }),
8605
9023
  "Connect Email"
8606
9024
  ]
8607
9025
  }
8608
9026
  )
8609
9027
  ] })
8610
9028
  ] }) }),
8611
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9029
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8612
9030
  "button",
8613
9031
  {
8614
9032
  onClick: () => address && window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank"),
8615
9033
  className: `w-full ${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-3 mb-3 transition-colors cursor-pointer text-left`,
8616
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center justify-between", children: [
8617
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex items-center space-x-3", children: [
8618
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "w-8 h-8 rounded-full flex items-center justify-center bg-transparent overflow-hidden", children: lumiaBeam.logoDataUri ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("img", { src: lumiaBeam.logoDataUri, alt: "Chain logo", className: "w-full h-full object-cover" }) : lumiaBeam.logo === "lumia" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(LumiaLogo, { size: 32 }) : /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-white text-xs font-bold", children: (lumiaBeam.name || "L").charAt(0) }) }),
8619
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { children: [
8620
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: `${theme.titleText} font-medium`, children: lumiaBeam.name }),
8621
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: theme.mutedText + " text-sm", children: [
9034
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center justify-between", children: [
9035
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center space-x-3", children: [
9036
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "w-8 h-8 rounded-full flex items-center justify-center bg-transparent overflow-hidden", children: lumiaBeam.logoDataUri ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("img", { src: lumiaBeam.logoDataUri, alt: "Chain logo", className: "w-full h-full object-cover" }) : lumiaBeam.logo === "lumia" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(LumiaLogo, { size: 32 }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-white text-xs font-bold", children: (lumiaBeam.name || "L").charAt(0) }) }),
9037
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { children: [
9038
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: `${theme.titleText} font-medium`, children: lumiaBeam.name }),
9039
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: theme.mutedText + " text-sm", children: [
8622
9040
  formatBalance(),
8623
9041
  " LUMIA"
8624
9042
  ] })
8625
9043
  ] })
8626
9044
  ] }),
8627
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: theme.iconColor, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowUpRight, { className: "w-4 h-4" }) })
9045
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: theme.iconColor, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.ArrowUpRight, { className: "w-4 h-4" }) })
8628
9046
  ] })
8629
9047
  }
8630
9048
  ),
8631
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "space-y-1", children: [
8632
- config.features?.kycNeeded && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
9049
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "space-y-1", children: [
9050
+ config.features?.kycNeeded && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8633
9051
  setIsWalletMenuOpen(false);
8634
9052
  setIsKycOpen(true);
8635
9053
  }, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "hover:bg-gray-800" : "hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
8636
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ShieldCheck, { className: `w-5 h-5 ${theme.iconColor}` }),
8637
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "KYC" })
9054
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.ShieldCheck, { className: `w-5 h-5 ${theme.iconColor}` }),
9055
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: theme.titleText, children: "KYC" })
8638
9056
  ] }),
8639
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
9057
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8640
9058
  setIsWalletMenuOpen(false);
8641
9059
  setIsTransactionsOpen(true);
8642
9060
  }, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "hover:bg-gray-800" : "hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
8643
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Activity, { className: `w-5 h-5 ${theme.iconColor}` }),
8644
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "Transactions" })
9061
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.Activity, { className: `w-5 h-5 ${theme.iconColor}` }),
9062
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: theme.titleText, children: "Transactions" })
8645
9063
  ] }),
8646
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
9064
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8647
9065
  setIsWalletMenuOpen(false);
8648
9066
  setIsViewAssetsOpen(true);
8649
9067
  }, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "hover:bg-gray-800" : "hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
8650
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Gem, { className: `w-5 h-5 ${theme.iconColor}` }),
8651
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "View Assets" })
9068
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.Gem, { className: `w-5 h-5 ${theme.iconColor}` }),
9069
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: theme.titleText, children: "View Assets" })
8652
9070
  ] }),
8653
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
9071
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8654
9072
  setIsWalletMenuOpen(false);
8655
9073
  setIsManageWalletOpen(true);
8656
9074
  }, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "hover:bg-gray-800" : "hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
8657
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.CreditCard, { className: `w-5 h-5 ${theme.iconColor}` }),
8658
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "Manage Wallet" })
9075
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.CreditCard, { className: `w-5 h-5 ${theme.iconColor}` }),
9076
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: theme.titleText, children: "Manage Wallet" })
8659
9077
  ] }),
8660
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: () => {
9078
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
8661
9079
  setIsWalletMenuOpen(false);
8662
9080
  setIsSecurityOpen(true);
8663
9081
  }, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "hover:bg-gray-800" : "hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
8664
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.Lock, { className: `w-5 h-5 ${theme.iconColor}` }),
8665
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: theme.titleText, children: "Security" })
9082
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.Lock, { className: `w-5 h-5 ${theme.iconColor}` }),
9083
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: theme.titleText, children: "Security" })
8666
9084
  ] }),
8667
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("button", { onClick: async () => {
9085
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: () => {
9086
+ setIsWalletMenuOpen(false);
9087
+ setIsBackupOpen(true);
9088
+ }, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "hover:bg-gray-800" : "hover:bg-gray-100"} transition-colors flex items-center space-x-3`, children: [
9089
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.Shield, { className: `w-5 h-5 ${theme.iconColor}` }),
9090
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: theme.titleText, children: "Keyshare Backup" })
9091
+ ] }),
9092
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("button", { onClick: async () => {
8668
9093
  await handleDisconnect();
8669
9094
  setIsWalletMenuOpen(false);
8670
9095
  }, className: `w-full text-left p-2.5 rounded-xl ${isDark ? "hover:bg-red-900/20" : "hover:bg-red-50"} transition-colors flex items-center space-x-3`, children: [
8671
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react17.ArrowUpRight, { className: "w-5 h-5 text-red-600" }),
8672
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-red-600", children: "Disconnect Wallet" })
9096
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react18.ArrowUpRight, { className: "w-5 h-5 text-red-600" }),
9097
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "text-red-600", children: "Disconnect Wallet" })
8673
9098
  ] })
8674
9099
  ] })
8675
9100
  ] })
8676
9101
  ] }) }) }),
8677
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9102
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8678
9103
  ManageWallet,
8679
9104
  {
8680
9105
  open: isManageWalletOpen,
@@ -8685,7 +9110,7 @@ var ConnectWalletButton = ({
8685
9110
  }
8686
9111
  }
8687
9112
  ),
8688
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9113
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8689
9114
  SecurityModal,
8690
9115
  {
8691
9116
  open: isSecurityOpen,
@@ -8696,7 +9121,23 @@ var ConnectWalletButton = ({
8696
9121
  }
8697
9122
  }
8698
9123
  ),
8699
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9124
+ isBackupOpen && session?.mpcUserId && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Dialog, { open: isBackupOpen, onOpenChange: setIsBackupOpen, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(DialogContent, { className: "max-w-2xl", children: [
9125
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(VisuallyHidden, { children: [
9126
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(DialogTitle, { children: "Keyshare Backup" }),
9127
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(DialogDescription, { children: "Create and manage encrypted backups of your keyshare" })
9128
+ ] }),
9129
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
9130
+ KeyshareBackup,
9131
+ {
9132
+ userId: session.mpcUserId,
9133
+ onClose: () => setIsBackupOpen(false),
9134
+ onBackupSuccess: () => {
9135
+ console.log("[ConnectWalletButton] Backup created successfully");
9136
+ }
9137
+ }
9138
+ )
9139
+ ] }) }),
9140
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8700
9141
  TransactionsModal,
8701
9142
  {
8702
9143
  open: isTransactionsOpen,
@@ -8707,7 +9148,7 @@ var ConnectWalletButton = ({
8707
9148
  }
8708
9149
  }
8709
9150
  ),
8710
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9151
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8711
9152
  ViewAssetsModal,
8712
9153
  {
8713
9154
  open: isViewAssetsOpen,
@@ -8718,7 +9159,7 @@ var ConnectWalletButton = ({
8718
9159
  }
8719
9160
  }
8720
9161
  ),
8721
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9162
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8722
9163
  SendModal,
8723
9164
  {
8724
9165
  open: isSendOpen,
@@ -8729,7 +9170,7 @@ var ConnectWalletButton = ({
8729
9170
  }
8730
9171
  }
8731
9172
  ),
8732
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9173
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8733
9174
  ReceiveModal,
8734
9175
  {
8735
9176
  open: isReceiveOpen,
@@ -8740,7 +9181,7 @@ var ConnectWalletButton = ({
8740
9181
  }
8741
9182
  }
8742
9183
  ),
8743
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9184
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8744
9185
  BuyModal,
8745
9186
  {
8746
9187
  open: isBuyOpen,
@@ -8751,7 +9192,7 @@ var ConnectWalletButton = ({
8751
9192
  }
8752
9193
  }
8753
9194
  ),
8754
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9195
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8755
9196
  KycModal,
8756
9197
  {
8757
9198
  open: isKycOpen,
@@ -8762,7 +9203,7 @@ var ConnectWalletButton = ({
8762
9203
  }
8763
9204
  }
8764
9205
  ),
8765
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9206
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8766
9207
  AuthModal,
8767
9208
  {
8768
9209
  open: isAuthModalOpen,
@@ -8807,7 +9248,7 @@ var ConnectWalletButton = ({
8807
9248
  }
8808
9249
  }
8809
9250
  ),
8810
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9251
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
8811
9252
  TssManagerWithRef,
8812
9253
  {
8813
9254
  ref: tssManagerRef,
@@ -8825,7 +9266,7 @@ var ConnectWalletButton = ({
8825
9266
  };
8826
9267
 
8827
9268
  // src/components/ThemeToggle.tsx
8828
- var import_jsx_runtime33 = require("react/jsx-runtime");
9269
+ var import_jsx_runtime34 = require("react/jsx-runtime");
8829
9270
  var ThemeToggle = () => {
8830
9271
  const { config, updateConfig } = useLumiaPassportConfig();
8831
9272
  const currentTheme = config.ui.theme;
@@ -8870,7 +9311,7 @@ var ThemeToggle = () => {
8870
9311
  return "auto";
8871
9312
  }
8872
9313
  };
8873
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "lumia-scope", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
9314
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "lumia-scope", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
8874
9315
  "button",
8875
9316
  {
8876
9317
  onClick: cycleTheme,
@@ -8886,19 +9327,19 @@ var ThemeToggle = () => {
8886
9327
  };
8887
9328
 
8888
9329
  // src/components/LumiaLogo.tsx
8889
- var import_jsx_runtime34 = require("react/jsx-runtime");
9330
+ var import_jsx_runtime35 = require("react/jsx-runtime");
8890
9331
  var LumiaLogo2 = ({ size = 80, className = "" }) => {
8891
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
9332
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
8892
9333
  "div",
8893
9334
  {
8894
9335
  className: `flex items-center justify-center ${className}`,
8895
9336
  style: { width: size, height: size },
8896
- children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("svg", { viewBox: "0 0 512 512", width: size, height: size, children: [
8897
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("circle", { cx: "256", cy: "256", r: "256", fill: "#060117", strokeWidth: "0" }),
8898
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d: "M264.13948,48.01032l63.62778,132.2788,133.95322,68.65102h-147.34854s-48.55804-10.04649-50.23246-56.93012,0-143.99971,0-143.99971Z", fill: "#fefdff", strokeWidth: "0" }),
8899
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d: "M50.27932,245.59045l132.27894-63.62734L251.20943,48.01032l-.00012,147.34824s-10.04654,48.55792-56.93019,50.23222c-46.88366,1.6743-143.9998-.00033-143.9998-.00033Z", fill: "#fefdff", strokeWidth: "0" }),
8900
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d: "M247.86056,463.98968l-63.62772-132.27875-133.95315-68.65092,147.34848-.00011s48.55802,10.04646,50.23242,56.93008c1.6744,46.88362-.00004,143.9997-.00004,143.9997Z", fill: "#fefdff", strokeWidth: "0" }),
8901
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("path", { d: "M461.72068,266.40941l-132.2789,63.62744-68.65118,133.95283.00016-147.34823s10.04655-48.55792,56.93018-50.23226c46.88364-1.67434,143.99974.00023,143.99974.00023Z", fill: "#fefdff", strokeWidth: "0" })
9337
+ children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("svg", { viewBox: "0 0 512 512", width: size, height: size, children: [
9338
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("circle", { cx: "256", cy: "256", r: "256", fill: "#060117", strokeWidth: "0" }),
9339
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("path", { d: "M264.13948,48.01032l63.62778,132.2788,133.95322,68.65102h-147.34854s-48.55804-10.04649-50.23246-56.93012,0-143.99971,0-143.99971Z", fill: "#fefdff", strokeWidth: "0" }),
9340
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("path", { d: "M50.27932,245.59045l132.27894-63.62734L251.20943,48.01032l-.00012,147.34824s-10.04654,48.55792-56.93019,50.23222c-46.88366,1.6743-143.9998-.00033-143.9998-.00033Z", fill: "#fefdff", strokeWidth: "0" }),
9341
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("path", { d: "M247.86056,463.98968l-63.62772-132.27875-133.95315-68.65092,147.34848-.00011s48.55802,10.04646,50.23242,56.93008c1.6744,46.88362-.00004,143.9997-.00004,143.9997Z", fill: "#fefdff", strokeWidth: "0" }),
9342
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("path", { d: "M461.72068,266.40941l-132.2789,63.62744-68.65118,133.95283.00016-147.34823s10.04655-48.55792,56.93018-50.23226c46.88364-1.67434,143.99974.00023,143.99974.00023Z", fill: "#fefdff", strokeWidth: "0" })
8902
9343
  ] })
8903
9344
  }
8904
9345
  );
@@ -8961,9 +9402,9 @@ function useTheme2(configTheme) {
8961
9402
  }
8962
9403
 
8963
9404
  // src/internal/components/Hash.tsx
8964
- var React28 = __toESM(require("react"), 1);
8965
- var import_lucide_react18 = require("lucide-react");
8966
- var import_jsx_runtime35 = require("react/jsx-runtime");
9405
+ var React29 = __toESM(require("react"), 1);
9406
+ var import_lucide_react19 = require("lucide-react");
9407
+ var import_jsx_runtime36 = require("react/jsx-runtime");
8967
9408
  function toExplorerUrl(kind, value, chain) {
8968
9409
  const base2 = chain?.blockExplorers?.default?.url;
8969
9410
  if (!base2) return null;
@@ -8986,12 +9427,12 @@ var Hash = ({
8986
9427
  }) => {
8987
9428
  const value = hash || "";
8988
9429
  const explorer = toExplorerUrl(kind, value, chain || void 0);
8989
- const [copied, setCopied] = React28.useState(false);
8990
- if (!value) return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
8991
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
8992
- label && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "text-sm font-medium", children: label }),
8993
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
8994
- showCopy && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
9430
+ const [copied, setCopied] = React29.useState(false);
9431
+ if (!value) return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
9432
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cn2("flex items-center gap-2", className), children: [
9433
+ label && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-sm font-medium", children: label }),
9434
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
9435
+ showCopy && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
8995
9436
  Button,
8996
9437
  {
8997
9438
  variant: "ghost",
@@ -9005,10 +9446,10 @@ var Hash = ({
9005
9446
  } catch {
9006
9447
  }
9007
9448
  },
9008
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react18.Copy, { className: "h-4 w-4" })
9449
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react19.Copy, { className: "h-4 w-4" })
9009
9450
  }
9010
9451
  ),
9011
- showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
9452
+ showExplorer && explorer && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
9012
9453
  "a",
9013
9454
  {
9014
9455
  href: explorer,
@@ -9016,7 +9457,7 @@ var Hash = ({
9016
9457
  rel: "noreferrer noopener",
9017
9458
  className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
9018
9459
  title: "Open in explorer",
9019
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react18.ExternalLink, { className: "h-4 w-4" })
9460
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react19.ExternalLink, { className: "h-4 w-4" })
9020
9461
  }
9021
9462
  )
9022
9463
  ] });
@@ -9025,7 +9466,7 @@ var Hash = ({
9025
9466
  // src/internal/components/TransactionsList.tsx
9026
9467
  var import_react21 = require("react");
9027
9468
  init_base();
9028
- var import_jsx_runtime36 = require("react/jsx-runtime");
9469
+ var import_jsx_runtime37 = require("react/jsx-runtime");
9029
9470
  var TransactionsList = ({
9030
9471
  address,
9031
9472
  itemsCount = 10
@@ -9079,15 +9520,15 @@ var TransactionsList = ({
9079
9520
  window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
9080
9521
  };
9081
9522
  if (loading) {
9082
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "p-4 text-center", children: [
9083
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
9084
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
9523
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "p-4 text-center", children: [
9524
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
9525
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
9085
9526
  ] });
9086
9527
  }
9087
9528
  if (error) {
9088
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "p-4 text-center", children: [
9089
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-red-600 text-sm", children: error }),
9090
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
9529
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "p-4 text-center", children: [
9530
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-red-600 text-sm", children: error }),
9531
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9091
9532
  "button",
9092
9533
  {
9093
9534
  onClick: () => window.location.reload(),
@@ -9098,54 +9539,54 @@ var TransactionsList = ({
9098
9539
  ] });
9099
9540
  }
9100
9541
  if (transactions.length === 0) {
9101
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "p-4 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
9542
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "p-4 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
9102
9543
  }
9103
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
9544
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
9104
9545
  "div",
9105
9546
  {
9106
9547
  className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
9107
9548
  onClick: () => openTransaction(tx.hash),
9108
9549
  children: [
9109
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex justify-between items-start mb-2", children: [
9110
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex-1", children: [
9111
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex items-center space-x-2 mb-1", children: [
9112
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress(tx.hash) }),
9113
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`, children: tx.status === "ok" ? "Success" : "Failed" })
9550
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex justify-between items-start mb-2", children: [
9551
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex-1", children: [
9552
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center space-x-2 mb-1", children: [
9553
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress(tx.hash) }),
9554
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: `text-xs px-2 py-1 rounded ${tx.status === "ok" ? "bg-green-100 text-green-800" : "bg-red-100 text-red-800"}`, children: tx.status === "ok" ? "Success" : "Failed" })
9114
9555
  ] }),
9115
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "text-sm space-y-1", children: [
9116
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
9117
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-gray-600", children: "From:" }),
9118
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "font-mono ml-1", children: [
9556
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "text-sm space-y-1", children: [
9557
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9558
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-gray-600", children: "From:" }),
9559
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "font-mono ml-1", children: [
9119
9560
  formatAddress(tx.from.hash),
9120
- tx.from.is_contract && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9561
+ tx.from.is_contract && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9121
9562
  ] })
9122
9563
  ] }),
9123
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
9124
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-gray-600", children: "To:" }),
9125
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "font-mono ml-1", children: [
9564
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9565
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-gray-600", children: "To:" }),
9566
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "font-mono ml-1", children: [
9126
9567
  formatAddress(tx.to.hash),
9127
- tx.to.is_contract && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9568
+ tx.to.is_contract && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9128
9569
  ] })
9129
9570
  ] }),
9130
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { children: [
9131
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "text-gray-600", children: "Value:" }),
9132
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "font-semibold ml-1", children: [
9571
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9572
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-gray-600", children: "Value:" }),
9573
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "font-semibold ml-1", children: [
9133
9574
  formatValue(tx.value),
9134
9575
  " LUMIA"
9135
9576
  ] })
9136
9577
  ] })
9137
9578
  ] })
9138
9579
  ] }),
9139
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "text-right text-xs text-gray-500", children: [
9140
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { children: formatDate2(tx.timestamp) }),
9141
- /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "mt-1", children: [
9580
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "text-right text-xs text-gray-500", children: [
9581
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { children: formatDate2(tx.timestamp) }),
9582
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "mt-1", children: [
9142
9583
  "Gas: ",
9143
9584
  parseInt(tx.gas_used).toLocaleString()
9144
9585
  ] }),
9145
- tx.method && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "mt-1 text-blue-600", children: tx.method })
9586
+ tx.method && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "mt-1 text-blue-600", children: tx.method })
9146
9587
  ] })
9147
9588
  ] }),
9148
- tx.transaction_types.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
9589
+ tx.transaction_types.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9149
9590
  "span",
9150
9591
  {
9151
9592
  className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full",
@@ -9159,247 +9600,6 @@ var TransactionsList = ({
9159
9600
  )) }) });
9160
9601
  };
9161
9602
 
9162
- // src/internal/components/KeyshareBackup.tsx
9163
- var React30 = __toESM(require("react"), 1);
9164
- var import_lucide_react19 = require("lucide-react");
9165
- init_vaultClient();
9166
- var import_jsx_runtime37 = require("react/jsx-runtime");
9167
- function KeyshareBackup({ userId, onClose, onBackupSuccess }) {
9168
- const [backupStatus, setBackupStatus] = React30.useState(() => getBackupStatus(userId));
9169
- const [loading, setLoading] = React30.useState({
9170
- server: false,
9171
- cloud: false,
9172
- local: false
9173
- });
9174
- const [error, setError] = React30.useState(null);
9175
- const [success, setSuccess] = React30.useState(null);
9176
- const [showPassword, setShowPassword] = React30.useState(false);
9177
- const [useCustomPassword, setUseCustomPassword] = React30.useState(false);
9178
- const [customPassword, setCustomPassword] = React30.useState("");
9179
- const [cloudProviders, setCloudProviders] = React30.useState([]);
9180
- const [selectedCloudProvider, setSelectedCloudProvider] = React30.useState(null);
9181
- const hasKeyshareData = React30.useMemo(() => {
9182
- return !!getCurrentKeyshareBackupData(userId);
9183
- }, [userId]);
9184
- React30.useEffect(() => {
9185
- getAvailableCloudProviders2().then((providers) => {
9186
- setCloudProviders(providers);
9187
- if (providers.length > 0 && !selectedCloudProvider) {
9188
- setSelectedCloudProvider(providers[0].id);
9189
- }
9190
- });
9191
- }, [selectedCloudProvider]);
9192
- const refreshStatus = React30.useCallback(() => {
9193
- setBackupStatus(getBackupStatus(userId));
9194
- }, [userId]);
9195
- React30.useEffect(() => {
9196
- refreshStatus();
9197
- }, [refreshStatus]);
9198
- const handleBackup = async (method) => {
9199
- setLoading((prev) => ({ ...prev, [method]: true }));
9200
- setError(null);
9201
- setSuccess(null);
9202
- try {
9203
- const password = useCustomPassword ? customPassword : void 0;
9204
- switch (method) {
9205
- case "server":
9206
- await backupToServer(userId, password);
9207
- setSuccess("Successfully created server backup");
9208
- break;
9209
- case "cloud": {
9210
- await backupToCloud(userId, password, selectedCloudProvider || void 0);
9211
- setSuccess(`Successfully created cloud backup`);
9212
- const updatedProviders = await getAvailableCloudProviders2();
9213
- setCloudProviders(updatedProviders);
9214
- break;
9215
- }
9216
- case "local":
9217
- await backupToLocalFile(userId, password);
9218
- setSuccess("Backup file downloaded successfully");
9219
- break;
9220
- }
9221
- refreshStatus();
9222
- setTimeout(() => {
9223
- if (typeof window !== "undefined") {
9224
- window.dispatchEvent(
9225
- new CustomEvent("lumia-passport-backup-status-changed", {
9226
- detail: { method, success: true }
9227
- })
9228
- );
9229
- }
9230
- onBackupSuccess?.();
9231
- }, 100);
9232
- } catch (err) {
9233
- const errorMsg = err instanceof Error ? err.message : "Backup creation failed";
9234
- setError(errorMsg);
9235
- updateBackupStatus(userId, method, { error: errorMsg });
9236
- refreshStatus();
9237
- } finally {
9238
- setLoading((prev) => ({ ...prev, [method]: false }));
9239
- }
9240
- };
9241
- const formatLastBackup = (timestamp) => {
9242
- if (!timestamp) return "Never";
9243
- const date = new Date(timestamp);
9244
- return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
9245
- };
9246
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(Card, { className: "border-green-200 bg-green-50", children: [
9247
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(CardHeader, { className: "pb-4", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center justify-between", children: [
9248
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-3", children: [
9249
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Shield, { className: "h-6 w-6 text-green-600" }),
9250
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9251
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(CardTitle, { className: "text-lg", children: "Create Backup" }),
9252
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(CardDescription, { className: "text-sm", children: "Secure your keyshare with encrypted backups" })
9253
- ] })
9254
- ] }),
9255
- onClose && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("button", { onClick: onClose, className: "p-1 rounded bg-red-100 text-red-600 hover:bg-red-200 transition-colors", title: "Close", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.X, { className: "h-4 w-4" }) })
9256
- ] }) }),
9257
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(CardContent, { className: "space-y-6", children: [
9258
- error && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-2 p-3 rounded bg-red-50 border border-red-200 text-red-700 text-sm", children: [
9259
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
9260
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: error })
9261
- ] }),
9262
- success && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-2 p-3 rounded bg-green-50 border border-green-200 text-green-700 text-sm", children: [
9263
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.CheckCircle2, { className: "h-4 w-4 flex-shrink-0" }),
9264
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: success })
9265
- ] }),
9266
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "space-y-3", children: [
9267
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-sm font-medium text-gray-700", children: "Encryption Method:" }),
9268
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-2", children: [
9269
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9270
- "input",
9271
- {
9272
- type: "checkbox",
9273
- id: "use-backup-password",
9274
- checked: useCustomPassword,
9275
- onChange: (e) => setUseCustomPassword(e.target.checked),
9276
- className: "rounded"
9277
- }
9278
- ),
9279
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("label", { htmlFor: "use-backup-password", className: "text-sm font-medium", children: "Use custom password instead of passkey" })
9280
- ] }),
9281
- !useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "p-3 bg-blue-50 border border-blue-200 rounded text-sm text-blue-700", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-2", children: [
9282
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Key, { className: "h-4 w-4" }),
9283
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { children: "Your passkey will be used to encrypt the backup securely" })
9284
- ] }) }),
9285
- useCustomPassword && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "relative", children: [
9286
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9287
- Input,
9288
- {
9289
- type: showPassword ? "text" : "password",
9290
- placeholder: "Enter backup encryption password",
9291
- value: customPassword,
9292
- onChange: (e) => setCustomPassword(e.target.value),
9293
- className: "pr-10"
9294
- }
9295
- ),
9296
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9297
- "button",
9298
- {
9299
- type: "button",
9300
- onClick: () => setShowPassword(!showPassword),
9301
- className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-500 hover:text-gray-700",
9302
- 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" })
9303
- }
9304
- )
9305
- ] })
9306
- ] }),
9307
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "space-y-4", children: [
9308
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-sm font-medium text-gray-700", children: "Choose Backup Method:" }),
9309
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "p-4 rounded-lg border border-blue-200 bg-blue-50/50", children: [
9310
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex items-center justify-between mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-3", children: [
9311
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Server, { className: "h-5 w-5 text-blue-600" }),
9312
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9313
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-medium text-sm", children: "Server Backup" }),
9314
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-xs text-gray-600", children: "Store encrypted backup on secure server" })
9315
- ] })
9316
- ] }) }),
9317
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9318
- Button,
9319
- {
9320
- onClick: () => handleBackup("server"),
9321
- disabled: loading.server || useCustomPassword && !customPassword || !hasKeyshareData,
9322
- className: "px-4 py-2",
9323
- children: loading.server ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
9324
- }
9325
- ),
9326
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "text-xs text-gray-600 mt-2", children: [
9327
- "Encrypted backup stored on secure server \u2022 Last: ",
9328
- formatLastBackup(backupStatus.server.lastBackup)
9329
- ] })
9330
- ] }),
9331
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "p-4 rounded-lg border border-sky-200 bg-sky-50/50", children: [
9332
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-3 mb-3", children: [
9333
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Cloud, { className: "h-5 w-5 text-sky-600" }),
9334
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9335
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-medium text-sm", children: "Cloud Backup" }),
9336
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-xs text-gray-600", children: "Store encrypted backup in cloud storage" })
9337
- ] })
9338
- ] }),
9339
- cloudProviders.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9340
- "select",
9341
- {
9342
- value: selectedCloudProvider || "",
9343
- onChange: (e) => setSelectedCloudProvider(e.target.value),
9344
- className: "text-sm border rounded px-2 py-1 w-full",
9345
- children: cloudProviders.map((provider) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("option", { value: provider.id, children: [
9346
- provider.icon,
9347
- " ",
9348
- provider.name,
9349
- " ",
9350
- provider.isAuthenticated ? "\u2713" : ""
9351
- ] }, provider.id))
9352
- }
9353
- ) }),
9354
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9355
- Button,
9356
- {
9357
- onClick: () => handleBackup("cloud"),
9358
- disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
9359
- className: "px-4 py-2",
9360
- children: loading.cloud ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
9361
- }
9362
- ),
9363
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-xs text-gray-600 mt-2", children: cloudProviders.length > 0 ? `Direct backup to ${cloudProviders.find((p) => p.id === selectedCloudProvider)?.name || "cloud storage"} \u2022 Last: ${formatLastBackup(backupStatus.cloud.lastBackup)}` : `No cloud providers configured \u2022 Last: ${formatLastBackup(backupStatus.cloud.lastBackup)}` })
9364
- ] }),
9365
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "p-4 rounded-lg border border-purple-200 bg-purple-50/50", children: [
9366
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-center gap-3 mb-3", children: [
9367
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Download, { className: "h-5 w-5 text-purple-600" }),
9368
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9369
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-medium text-sm", children: "File Backup" }),
9370
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-xs text-gray-600", children: "Download encrypted backup file to your device" })
9371
- ] })
9372
- ] }),
9373
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
9374
- Button,
9375
- {
9376
- onClick: () => handleBackup("local"),
9377
- disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
9378
- className: "w-full",
9379
- children: loading.local ? "Creating..." : useCustomPassword ? "Create & Download" : "Create & Download with Passkey"
9380
- }
9381
- ),
9382
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "text-xs text-gray-600 mt-2", children: [
9383
- "Download encrypted backup file to your device \u2022 Last: ",
9384
- formatLastBackup(backupStatus.local.lastBackup)
9385
- ] })
9386
- ] })
9387
- ] }),
9388
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex items-start gap-2 p-3 bg-amber-50 border border-amber-200 rounded text-amber-800 text-xs", children: [
9389
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react19.Lock, { className: "h-4 w-4 mt-0.5 flex-shrink-0" }),
9390
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { children: [
9391
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-medium", children: "Security Notice" }),
9392
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "mt-1", children: [
9393
- useCustomPassword ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children: "All backups are encrypted with AES-256 using your custom password. Store your password securely - without it, backups cannot be restored." }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children: "All backups are encrypted with AES-256 using your passkey. Your passkey authenticator (device/biometrics) is required to restore backups." }),
9394
- " ",
9395
- "Without backup access, you cannot recover your smart account if you lose this device."
9396
- ] })
9397
- ] })
9398
- ] })
9399
- ] })
9400
- ] });
9401
- }
9402
-
9403
9603
  // src/hooks/useUserOpStatus.ts
9404
9604
  var React31 = __toESM(require("react"), 1);
9405
9605
  init_base();