@lumiapassport/ui-kit 1.2.0 → 1.3.1

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.js CHANGED
@@ -2366,6 +2366,7 @@ var init_iframe_manager = __esm({
2366
2366
  this.iframeUrl = config.iframeUrl;
2367
2367
  this.projectId = config.projectId;
2368
2368
  this.debug = config.debug || false;
2369
+ this.onWalletReadyCallback = config.onWalletReady;
2369
2370
  this.readyPromise = new Promise((resolve) => {
2370
2371
  this.readyResolve = resolve;
2371
2372
  });
@@ -2396,6 +2397,7 @@ var init_iframe_manager = __esm({
2396
2397
  this.iframe.style.zIndex = "999999";
2397
2398
  this.iframe.style.background = "rgba(0, 0, 0, 0.5)";
2398
2399
  this.iframe.setAttribute("sandbox", "allow-scripts allow-same-origin");
2400
+ this.iframe.setAttribute("allow", "publickey-credentials-get *; publickey-credentials-create *");
2399
2401
  this.messageListener = this.handleMessage.bind(this);
2400
2402
  window.addEventListener("message", this.messageListener);
2401
2403
  document.body.appendChild(this.iframe);
@@ -2428,6 +2430,7 @@ var init_iframe_manager = __esm({
2428
2430
  }
2429
2431
  const validIframeTypes = [
2430
2432
  "LUMIA_PASSPORT_IFRAME_READY",
2433
+ "LUMIA_PASSPORT_WALLET_READY",
2431
2434
  "LUMIA_PASSPORT_SHOW_IFRAME",
2432
2435
  "LUMIA_PASSPORT_HIDE_IFRAME",
2433
2436
  "LUMIA_PASSPORT_SDK_AUTH_SUCCESS",
@@ -2448,7 +2451,7 @@ var init_iframe_manager = __esm({
2448
2451
  }
2449
2452
  const iframeOrigin = new URL(this.iframeUrl).origin;
2450
2453
  if (event.origin !== iframeOrigin) {
2451
- this.log("[IframeManager] \u26A0\uFE0F Ignored message from invalid origin:", event.origin, "expected:", iframeOrigin);
2454
+ this.log("[IframeManager] \u26A0\uFE0F Ignored message from invalid origin:", { received: event.origin, expected: iframeOrigin });
2452
2455
  return;
2453
2456
  }
2454
2457
  if (message.type === "LUMIA_PASSPORT_IFRAME_READY") {
@@ -2457,6 +2460,13 @@ var init_iframe_manager = __esm({
2457
2460
  this.readyResolve();
2458
2461
  return;
2459
2462
  }
2463
+ if (message.type === "LUMIA_PASSPORT_WALLET_READY") {
2464
+ this.log("[IframeManager] \u{1F4E8} Received LUMIA_PASSPORT_WALLET_READY", message.data);
2465
+ if (this.onWalletReadyCallback) {
2466
+ this.onWalletReadyCallback(message.data);
2467
+ }
2468
+ return;
2469
+ }
2460
2470
  if (message.type === "LUMIA_PASSPORT_SHOW_IFRAME") {
2461
2471
  this.log("[IframeManager] \u{1F4E8} Received LUMIA_PASSPORT_SHOW_IFRAME");
2462
2472
  this.showIframe();
@@ -2752,6 +2762,92 @@ var init_iframe_manager = __esm({
2752
2762
  }
2753
2763
  return false;
2754
2764
  }
2765
+ /**
2766
+ * Create backup of keyshare
2767
+ */
2768
+ async createBackup(userId, backupRequest, accessToken) {
2769
+ this.log("[IframeManager] Creating backup...");
2770
+ const response = await this.sendMessage("CREATE_BACKUP", {
2771
+ userId,
2772
+ backupRequest,
2773
+ accessToken
2774
+ // Pass access token for TSS API authentication
2775
+ });
2776
+ if (response.type === "LUMIA_PASSPORT_BACKUP_CREATED") {
2777
+ return response.result;
2778
+ }
2779
+ throw new Error("Unexpected response type");
2780
+ }
2781
+ /**
2782
+ * Restore keyshare from server backup
2783
+ */
2784
+ async restoreFromServer(userId, password, accessToken) {
2785
+ this.log("[IframeManager] Restoring backup from server...");
2786
+ const response = await this.sendMessage("RESTORE_BACKUP", {
2787
+ userId,
2788
+ password,
2789
+ accessToken
2790
+ // Pass access token for TSS API authentication
2791
+ });
2792
+ if (response.type === "LUMIA_PASSPORT_BACKUP_RESTORED") {
2793
+ return response.result;
2794
+ }
2795
+ throw new Error("Unexpected response type");
2796
+ }
2797
+ /**
2798
+ * Encrypt backup data without uploading (for cloud/local backups)
2799
+ * Returns encrypted data that parent can upload/download
2800
+ */
2801
+ async encryptBackupData(userId, password) {
2802
+ this.log("[IframeManager] Encrypting backup data...");
2803
+ const response = await this.sendMessage("ENCRYPT_BACKUP_DATA", {
2804
+ userId,
2805
+ password
2806
+ });
2807
+ if (response.type === "LUMIA_PASSPORT_BACKUP_ENCRYPTED") {
2808
+ return response.encryptedData;
2809
+ }
2810
+ throw new Error("Unexpected response type");
2811
+ }
2812
+ /**
2813
+ * Restore keyshare from local file backup
2814
+ */
2815
+ async restoreFromLocalFile(userId, fileContent, password) {
2816
+ this.log("[IframeManager] Restoring backup from local file...");
2817
+ const response = await this.sendMessage("RESTORE_FROM_FILE", {
2818
+ userId,
2819
+ fileContent,
2820
+ password
2821
+ });
2822
+ if (response.type === "LUMIA_PASSPORT_FILE_RESTORED") {
2823
+ return response.result;
2824
+ }
2825
+ throw new Error("Unexpected response type");
2826
+ }
2827
+ /**
2828
+ * Get backup status for user
2829
+ */
2830
+ async getBackupStatus(userId) {
2831
+ this.log("[IframeManager] Getting backup status...");
2832
+ const response = await this.sendMessage("GET_BACKUP_STATUS", {
2833
+ userId
2834
+ });
2835
+ if (response.type === "LUMIA_PASSPORT_BACKUP_STATUS") {
2836
+ return response.status;
2837
+ }
2838
+ throw new Error("Unexpected response type");
2839
+ }
2840
+ /**
2841
+ * Get available cloud providers
2842
+ */
2843
+ async getCloudProviders() {
2844
+ this.log("[IframeManager] Getting cloud providers...");
2845
+ const response = await this.sendMessage("GET_CLOUD_PROVIDERS", {});
2846
+ if (response.type === "LUMIA_PASSPORT_CLOUD_PROVIDERS") {
2847
+ return response.providers;
2848
+ }
2849
+ throw new Error("Unexpected response type");
2850
+ }
2755
2851
  /**
2756
2852
  * Cleanup and destroy iframe
2757
2853
  */
@@ -2791,7 +2887,7 @@ var init_iframe_manager = __esm({
2791
2887
  });
2792
2888
 
2793
2889
  // src/styles/built.css
2794
- 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}';
2890
+ 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}';
2795
2891
 
2796
2892
  // src/context/LumiaPassportContext.tsx
2797
2893
  init_lumiaPassport();
@@ -2964,7 +3060,8 @@ var LumiaPassportProvider = ({
2964
3060
  const iframeManager = getIframeManager({
2965
3061
  iframeUrl,
2966
3062
  projectId: projectId2,
2967
- debug: config.features?.mpcSecurity ?? true
3063
+ debug: config.features?.mpcSecurity ?? true,
3064
+ onWalletReady: callbacks?.onWalletReady
2968
3065
  });
2969
3066
  iframeManager.initialize().then(() => {
2970
3067
  console.log("[LumiaPassport] \u2705 Secure iframe wallet initialized successfully");
@@ -3260,7 +3357,7 @@ var LumiaRainbowKitProvider = ({ children }) => {
3260
3357
  };
3261
3358
 
3262
3359
  // src/components/ConnectWalletButton.tsx
3263
- import React27 from "react";
3360
+ import React28 from "react";
3264
3361
  import { useBalance as useBalance3 } from "wagmi";
3265
3362
 
3266
3363
  // src/internal/components/ui/dialog.tsx
@@ -3596,6 +3693,7 @@ Input.displayName = "Input";
3596
3693
 
3597
3694
  // src/internal/components/KeyshareRestore.tsx
3598
3695
  init_vaultClient();
3696
+ init_iframe_manager();
3599
3697
  import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
3600
3698
  function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3601
3699
  const { config } = useLumiaPassportConfig();
@@ -3609,6 +3707,14 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3609
3707
  const [restorePassword, setRestorePassword] = React10.useState("");
3610
3708
  const [hasServerBackup, setHasServerBackup] = React10.useState(null);
3611
3709
  const [checkingBackup, setCheckingBackup] = React10.useState(true);
3710
+ const iframeManager = React10.useMemo(() => {
3711
+ try {
3712
+ return getIframeManager();
3713
+ } catch (e) {
3714
+ console.error("[KeyshareRestore] Failed to get iframe manager:", e);
3715
+ return null;
3716
+ }
3717
+ }, []);
3612
3718
  React10.useEffect(() => {
3613
3719
  const checkBackupAvailability = async () => {
3614
3720
  try {
@@ -3631,20 +3737,31 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3631
3737
  }, [userId]);
3632
3738
  const handleRestoreFromServer = async () => {
3633
3739
  console.log("[KeyshareRestore] Starting server restore for userId:", userId);
3740
+ if (!iframeManager) {
3741
+ setError("Iframe manager not initialized");
3742
+ return;
3743
+ }
3634
3744
  setLoading((prev) => ({ ...prev, server: true }));
3635
3745
  setError(null);
3636
3746
  setSuccess(null);
3637
3747
  try {
3638
- const passwordToUse = useCustomPassword ? restorePassword : null;
3639
- console.log("[KeyshareRestore] Calling restoreFromServer with method:", useCustomPassword ? "password" : "passkey");
3640
- await restoreFromServer(userId, passwordToUse);
3641
- console.log("[KeyshareRestore] Server restore successful");
3642
- setSuccess("Successfully restored keyshare from server backup");
3643
- setTimeout(() => {
3644
- onRestoreSuccess?.();
3645
- }, 100);
3748
+ const passwordToUse = useCustomPassword ? restorePassword : void 0;
3749
+ console.log("[KeyshareRestore] Calling iframeManager.restoreFromServer with method:", useCustomPassword ? "password" : "passkey");
3750
+ const jwt = await Promise.resolve().then(() => (init_auth(), auth_exports)).then((m) => m.jwtTokenManager.getTokens());
3751
+ const accessToken = jwt?.accessToken;
3752
+ const result = await iframeManager.restoreFromServer(userId, passwordToUse, accessToken);
3753
+ if (result.success) {
3754
+ console.log("[KeyshareRestore] Server restore successful");
3755
+ setSuccess("Successfully restored keyshare from server backup");
3756
+ setTimeout(() => {
3757
+ onRestoreSuccess?.();
3758
+ }, 100);
3759
+ } else {
3760
+ console.error("[KeyshareRestore] Server restore failed:", result.error);
3761
+ setError(result.error || "Server restore failed");
3762
+ }
3646
3763
  } catch (err) {
3647
- console.error("[KeyshareRestore] Server restore failed:", err);
3764
+ console.error("[KeyshareRestore] Server restore exception:", err);
3648
3765
  const errorMsg = err instanceof Error ? err.message : "Server restore failed";
3649
3766
  setError(errorMsg);
3650
3767
  } finally {
@@ -3661,18 +3778,27 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3661
3778
  setError("Please enter the backup password");
3662
3779
  return;
3663
3780
  }
3781
+ if (!iframeManager) {
3782
+ setError("Iframe manager not initialized");
3783
+ return;
3784
+ }
3664
3785
  setLoading((prev) => ({ ...prev, file: true }));
3665
3786
  setError(null);
3666
3787
  setSuccess(null);
3667
3788
  try {
3668
- const passwordToUse = useCustomPassword ? restorePassword : null;
3669
- await restoreFromBackup(restoreFile, passwordToUse, userId);
3670
- setSuccess("Successfully restored keyshare from backup file");
3671
- setRestoreFile(null);
3672
- setRestorePassword("");
3673
- setTimeout(() => {
3674
- onRestoreSuccess?.();
3675
- }, 100);
3789
+ const fileContent = await restoreFile.text();
3790
+ const passwordToUse = useCustomPassword ? restorePassword : void 0;
3791
+ const result = await iframeManager.restoreFromLocalFile(userId, fileContent, passwordToUse);
3792
+ if (result.success) {
3793
+ setSuccess("Successfully restored keyshare from backup file");
3794
+ setRestoreFile(null);
3795
+ setRestorePassword("");
3796
+ setTimeout(() => {
3797
+ onRestoreSuccess?.();
3798
+ }, 100);
3799
+ } else {
3800
+ setError(result.error || "File restore failed");
3801
+ }
3676
3802
  } catch (err) {
3677
3803
  const errorMsg = err instanceof Error ? err.message : "Restore failed";
3678
3804
  setError(errorMsg);
@@ -3910,7 +4036,7 @@ function KeyshareRestore({ userId, onClose, onRestoreSuccess }) {
3910
4036
  }
3911
4037
 
3912
4038
  // src/internal/components/VerificationCodeInput.tsx
3913
- import { useEffect as useEffect4, useMemo as useMemo2, useRef, useState as useState4 } from "react";
4039
+ import { useEffect as useEffect4, useMemo as useMemo3, useRef, useState as useState4 } from "react";
3914
4040
  import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
3915
4041
  var VerificationCodeInput = ({ onVerifyCode, onResendCode, isLoading, expiresIn, error }) => {
3916
4042
  const { config } = useLumiaPassportConfig();
@@ -3926,7 +4052,7 @@ var VerificationCodeInput = ({ onVerifyCode, onResendCode, isLoading, expiresIn,
3926
4052
  const [digits, setDigits] = useState4(["", "", "", "", "", ""]);
3927
4053
  const inputsRef = useRef([]);
3928
4054
  const lastSubmittedRef = useRef(null);
3929
- const code = useMemo2(() => digits.join(""), [digits]);
4055
+ const code = useMemo3(() => digits.join(""), [digits]);
3930
4056
  useEffect4(() => {
3931
4057
  if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
3932
4058
  if (lastSubmittedRef.current !== code) {
@@ -6693,19 +6819,320 @@ var SecurityModal = ({ open, onOpenChange, onBack }) => {
6693
6819
  ] });
6694
6820
  };
6695
6821
 
6822
+ // src/internal/components/KeyshareBackup.tsx
6823
+ import * as React19 from "react";
6824
+ import { Shield as Shield4, Server as Server4, CheckCircle2 as CheckCircle24, AlertCircle as AlertCircle3, Key as Key5, X as X3, Eye as Eye3, EyeOff as EyeOff3, Download as Download2, Cloud as Cloud3, Lock as Lock2 } from "lucide-react";
6825
+ init_iframe_manager();
6826
+ import { Fragment as Fragment6, jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
6827
+ function KeyshareBackup({ userId, onClose, onBackupSuccess }) {
6828
+ const [backupStatus, setBackupStatus] = React19.useState({
6829
+ server: {},
6830
+ cloud: {},
6831
+ local: {}
6832
+ });
6833
+ const [loading, setLoading] = React19.useState({
6834
+ server: false,
6835
+ cloud: false,
6836
+ local: false
6837
+ });
6838
+ const [error, setError] = React19.useState(null);
6839
+ const [success, setSuccess] = React19.useState(null);
6840
+ const [showPassword, setShowPassword] = React19.useState(false);
6841
+ const [useCustomPassword, setUseCustomPassword] = React19.useState(false);
6842
+ const [customPassword, setCustomPassword] = React19.useState("");
6843
+ const [cloudProviders, setCloudProviders] = React19.useState([]);
6844
+ const [selectedCloudProvider, setSelectedCloudProvider] = React19.useState(null);
6845
+ const [hasKeyshareData, setHasKeyshareData] = React19.useState(true);
6846
+ const iframeManager = React19.useMemo(() => {
6847
+ try {
6848
+ return getIframeManager();
6849
+ } catch (e) {
6850
+ console.error("[KeyshareBackup] Failed to get iframe manager:", e);
6851
+ return null;
6852
+ }
6853
+ }, []);
6854
+ React19.useEffect(() => {
6855
+ const loadCloudProviders = async () => {
6856
+ try {
6857
+ const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
6858
+ const availableProviders = getAvailableCloudProviders3();
6859
+ const providers = availableProviders.map((p) => ({
6860
+ id: p.id,
6861
+ name: p.name,
6862
+ available: p.isAvailable()
6863
+ }));
6864
+ setCloudProviders(providers);
6865
+ if (providers.length > 0 && !selectedCloudProvider) {
6866
+ setSelectedCloudProvider(providers[0].id);
6867
+ }
6868
+ } catch (error2) {
6869
+ console.error("[KeyshareBackup] Failed to load cloud providers:", error2);
6870
+ }
6871
+ };
6872
+ loadCloudProviders();
6873
+ }, [selectedCloudProvider]);
6874
+ const refreshStatus = React19.useCallback(async () => {
6875
+ if (!iframeManager) return;
6876
+ try {
6877
+ const status = await iframeManager.getBackupStatus(userId);
6878
+ setBackupStatus(status);
6879
+ } catch (error2) {
6880
+ console.error("[KeyshareBackup] Failed to get backup status:", error2);
6881
+ }
6882
+ }, [iframeManager, userId]);
6883
+ React19.useEffect(() => {
6884
+ refreshStatus();
6885
+ }, [refreshStatus]);
6886
+ const handleBackup = async (method) => {
6887
+ if (!iframeManager) {
6888
+ setError("Iframe manager not initialized");
6889
+ return;
6890
+ }
6891
+ setLoading((prev) => ({ ...prev, [method]: true }));
6892
+ setError(null);
6893
+ setSuccess(null);
6894
+ try {
6895
+ const password = useCustomPassword ? customPassword : void 0;
6896
+ if (method === "server") {
6897
+ const jwt = await Promise.resolve().then(() => (init_auth(), auth_exports)).then((m) => m.jwtTokenManager.getTokens());
6898
+ const accessToken = jwt?.accessToken;
6899
+ const result = await iframeManager.createBackup(userId, {
6900
+ method,
6901
+ password
6902
+ }, accessToken);
6903
+ if (result.success) {
6904
+ setSuccess("Successfully created server backup");
6905
+ await refreshStatus();
6906
+ onBackupSuccess?.();
6907
+ } else {
6908
+ throw new Error(result.error || "Server backup failed");
6909
+ }
6910
+ } else if (method === "cloud") {
6911
+ const encryptedData = await iframeManager.encryptBackupData(userId, password);
6912
+ const { getAvailableCloudProviders: getAvailableCloudProviders3 } = await Promise.resolve().then(() => (init_cloudStorage(), cloudStorage_exports));
6913
+ const providers = getAvailableCloudProviders3();
6914
+ const provider = selectedCloudProvider ? providers.find((p) => p.id === selectedCloudProvider) : providers[0];
6915
+ if (!provider) {
6916
+ throw new Error("No cloud provider available");
6917
+ }
6918
+ if (!provider.isAuthenticated()) {
6919
+ const authenticated = await provider.authenticate();
6920
+ if (!authenticated) {
6921
+ throw new Error(`Failed to authenticate with ${provider.name}`);
6922
+ }
6923
+ }
6924
+ const timestamp = Date.now();
6925
+ const fileName = `lumia-keyshare-backup-${userId}-${timestamp}.json`;
6926
+ const fileContent = JSON.stringify(encryptedData, null, 2);
6927
+ await provider.upload(fileName, fileContent, true);
6928
+ setSuccess(`Successfully created cloud backup on ${provider.name}`);
6929
+ await refreshStatus();
6930
+ onBackupSuccess?.();
6931
+ } else if (method === "local") {
6932
+ const encryptedData = await iframeManager.encryptBackupData(userId, password);
6933
+ const blob = new Blob([JSON.stringify(encryptedData, null, 2)], {
6934
+ type: "application/json"
6935
+ });
6936
+ const url = URL.createObjectURL(blob);
6937
+ const a = document.createElement("a");
6938
+ a.href = url;
6939
+ a.download = `lumia-passport-backup-${userId}-${Date.now()}.json`;
6940
+ document.body.appendChild(a);
6941
+ a.click();
6942
+ document.body.removeChild(a);
6943
+ URL.revokeObjectURL(url);
6944
+ setSuccess("Backup file downloaded successfully");
6945
+ await refreshStatus();
6946
+ onBackupSuccess?.();
6947
+ }
6948
+ if (typeof window !== "undefined") {
6949
+ window.dispatchEvent(
6950
+ new CustomEvent("lumia-passport-backup-status-changed", {
6951
+ detail: { method, success: true }
6952
+ })
6953
+ );
6954
+ }
6955
+ } catch (err) {
6956
+ const errorMsg = err instanceof Error ? err.message : "Backup creation failed";
6957
+ setError(errorMsg);
6958
+ await refreshStatus();
6959
+ } finally {
6960
+ setLoading((prev) => ({ ...prev, [method]: false }));
6961
+ }
6962
+ };
6963
+ const formatLastBackup = (timestamp) => {
6964
+ if (!timestamp) return "Never";
6965
+ const date = new Date(timestamp);
6966
+ return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
6967
+ };
6968
+ return /* @__PURE__ */ jsxs15(Card, { className: "border-green-200 bg-green-50", children: [
6969
+ /* @__PURE__ */ jsx23(CardHeader, { className: "pb-4", children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between", children: [
6970
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
6971
+ /* @__PURE__ */ jsx23(Shield4, { className: "h-6 w-6 text-green-600" }),
6972
+ /* @__PURE__ */ jsxs15("div", { children: [
6973
+ /* @__PURE__ */ jsx23(CardTitle, { className: "text-lg", children: "Create Backup" }),
6974
+ /* @__PURE__ */ jsx23(CardDescription, { className: "text-sm", children: "Secure your keyshare with encrypted backups" })
6975
+ ] })
6976
+ ] }),
6977
+ onClose && /* @__PURE__ */ jsx23("button", { onClick: onClose, className: "p-1 rounded bg-red-100 text-red-600 hover:bg-red-200 transition-colors", title: "Close", children: /* @__PURE__ */ jsx23(X3, { className: "h-4 w-4" }) })
6978
+ ] }) }),
6979
+ /* @__PURE__ */ jsxs15(CardContent, { className: "space-y-6", children: [
6980
+ error && /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2 p-3 rounded bg-red-50 border border-red-200 text-red-700 text-sm", children: [
6981
+ /* @__PURE__ */ jsx23(AlertCircle3, { className: "h-4 w-4 flex-shrink-0" }),
6982
+ /* @__PURE__ */ jsx23("span", { children: error })
6983
+ ] }),
6984
+ success && /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2 p-3 rounded bg-green-50 border border-green-200 text-green-700 text-sm", children: [
6985
+ /* @__PURE__ */ jsx23(CheckCircle24, { className: "h-4 w-4 flex-shrink-0" }),
6986
+ /* @__PURE__ */ jsx23("span", { children: success })
6987
+ ] }),
6988
+ /* @__PURE__ */ jsxs15("div", { className: "space-y-3", children: [
6989
+ /* @__PURE__ */ jsx23("div", { className: "text-sm font-medium text-gray-700", children: "Encryption Method:" }),
6990
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
6991
+ /* @__PURE__ */ jsx23(
6992
+ "input",
6993
+ {
6994
+ type: "checkbox",
6995
+ id: "use-backup-password",
6996
+ checked: useCustomPassword,
6997
+ onChange: (e) => setUseCustomPassword(e.target.checked),
6998
+ className: "rounded"
6999
+ }
7000
+ ),
7001
+ /* @__PURE__ */ jsx23("label", { htmlFor: "use-backup-password", className: "text-sm font-medium", children: "Use custom password instead of passkey" })
7002
+ ] }),
7003
+ !useCustomPassword && /* @__PURE__ */ jsx23("div", { className: "p-3 bg-blue-50 border border-blue-200 rounded text-sm text-blue-700", children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
7004
+ /* @__PURE__ */ jsx23(Key5, { className: "h-4 w-4" }),
7005
+ /* @__PURE__ */ jsx23("span", { children: "Your passkey will be used to encrypt the backup securely" })
7006
+ ] }) }),
7007
+ useCustomPassword && /* @__PURE__ */ jsxs15("div", { className: "relative", children: [
7008
+ /* @__PURE__ */ jsx23(
7009
+ Input,
7010
+ {
7011
+ type: showPassword ? "text" : "password",
7012
+ placeholder: "Enter backup encryption password",
7013
+ value: customPassword,
7014
+ onChange: (e) => setCustomPassword(e.target.value),
7015
+ className: "pr-10"
7016
+ }
7017
+ ),
7018
+ /* @__PURE__ */ jsx23(
7019
+ "button",
7020
+ {
7021
+ type: "button",
7022
+ onClick: () => setShowPassword(!showPassword),
7023
+ className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-500 hover:text-gray-700",
7024
+ children: showPassword ? /* @__PURE__ */ jsx23(EyeOff3, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx23(Eye3, { className: "h-4 w-4" })
7025
+ }
7026
+ )
7027
+ ] })
7028
+ ] }),
7029
+ /* @__PURE__ */ jsxs15("div", { className: "space-y-4", children: [
7030
+ /* @__PURE__ */ jsx23("div", { className: "text-sm font-medium text-gray-700", children: "Choose Backup Method:" }),
7031
+ /* @__PURE__ */ jsxs15("div", { className: "p-4 rounded-lg border border-blue-200 bg-blue-50/50", children: [
7032
+ /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-between mb-3", children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
7033
+ /* @__PURE__ */ jsx23(Server4, { className: "h-5 w-5 text-blue-600" }),
7034
+ /* @__PURE__ */ jsxs15("div", { children: [
7035
+ /* @__PURE__ */ jsx23("div", { className: "font-medium text-sm", children: "Server Backup" }),
7036
+ /* @__PURE__ */ jsx23("div", { className: "text-xs text-gray-600", children: "Store encrypted backup on secure server" })
7037
+ ] })
7038
+ ] }) }),
7039
+ /* @__PURE__ */ jsx23(
7040
+ Button,
7041
+ {
7042
+ onClick: () => handleBackup("server"),
7043
+ disabled: loading.server || useCustomPassword && !customPassword || !hasKeyshareData,
7044
+ className: "px-4 py-2",
7045
+ children: loading.server ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
7046
+ }
7047
+ ),
7048
+ /* @__PURE__ */ jsxs15("div", { className: "text-xs text-gray-600 mt-2", children: [
7049
+ "Encrypted backup stored on secure server \u2022 Last: ",
7050
+ formatLastBackup(backupStatus.server.lastBackup)
7051
+ ] })
7052
+ ] }),
7053
+ /* @__PURE__ */ jsxs15("div", { className: "p-4 rounded-lg border border-sky-200 bg-sky-50/50", children: [
7054
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3 mb-3", children: [
7055
+ /* @__PURE__ */ jsx23(Cloud3, { className: "h-5 w-5 text-sky-600" }),
7056
+ /* @__PURE__ */ jsxs15("div", { children: [
7057
+ /* @__PURE__ */ jsx23("div", { className: "font-medium text-sm", children: "Cloud Backup" }),
7058
+ /* @__PURE__ */ jsx23("div", { className: "text-xs text-gray-600", children: "Store encrypted backup in cloud storage" })
7059
+ ] })
7060
+ ] }),
7061
+ cloudProviders.length > 1 && /* @__PURE__ */ jsx23("div", { className: "mb-3", children: /* @__PURE__ */ jsx23(
7062
+ "select",
7063
+ {
7064
+ value: selectedCloudProvider || "",
7065
+ onChange: (e) => setSelectedCloudProvider(e.target.value),
7066
+ className: "text-sm border rounded px-2 py-1 w-full",
7067
+ children: cloudProviders.map((provider) => /* @__PURE__ */ jsxs15("option", { value: provider.id, disabled: !provider.available, children: [
7068
+ provider.name,
7069
+ " ",
7070
+ provider.available ? "" : "(Not Available)"
7071
+ ] }, provider.id))
7072
+ }
7073
+ ) }),
7074
+ /* @__PURE__ */ jsx23(
7075
+ Button,
7076
+ {
7077
+ onClick: () => handleBackup("cloud"),
7078
+ disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
7079
+ className: "px-4 py-2",
7080
+ children: loading.cloud ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
7081
+ }
7082
+ ),
7083
+ /* @__PURE__ */ jsx23("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)}` })
7084
+ ] }),
7085
+ /* @__PURE__ */ jsxs15("div", { className: "p-4 rounded-lg border border-purple-200 bg-purple-50/50", children: [
7086
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3 mb-3", children: [
7087
+ /* @__PURE__ */ jsx23(Download2, { className: "h-5 w-5 text-purple-600" }),
7088
+ /* @__PURE__ */ jsxs15("div", { children: [
7089
+ /* @__PURE__ */ jsx23("div", { className: "font-medium text-sm", children: "File Backup" }),
7090
+ /* @__PURE__ */ jsx23("div", { className: "text-xs text-gray-600", children: "Download encrypted backup file to your device" })
7091
+ ] })
7092
+ ] }),
7093
+ /* @__PURE__ */ jsx23(
7094
+ Button,
7095
+ {
7096
+ onClick: () => handleBackup("local"),
7097
+ disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
7098
+ className: "w-full",
7099
+ children: loading.local ? "Creating..." : useCustomPassword ? "Create & Download" : "Create & Download with Passkey"
7100
+ }
7101
+ ),
7102
+ /* @__PURE__ */ jsxs15("div", { className: "text-xs text-gray-600 mt-2", children: [
7103
+ "Download encrypted backup file to your device \u2022 Last: ",
7104
+ formatLastBackup(backupStatus.local.lastBackup)
7105
+ ] })
7106
+ ] })
7107
+ ] }),
7108
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-start gap-2 p-3 bg-amber-50 border border-amber-200 rounded text-amber-800 text-xs", children: [
7109
+ /* @__PURE__ */ jsx23(Lock2, { className: "h-4 w-4 mt-0.5 flex-shrink-0" }),
7110
+ /* @__PURE__ */ jsxs15("div", { children: [
7111
+ /* @__PURE__ */ jsx23("div", { className: "font-medium", children: "Security Notice" }),
7112
+ /* @__PURE__ */ jsxs15("div", { className: "mt-1", children: [
7113
+ useCustomPassword ? /* @__PURE__ */ jsx23(Fragment6, { children: "All backups are encrypted with AES-256 using your custom password. Store your password securely - without it, backups cannot be restored." }) : /* @__PURE__ */ jsx23(Fragment6, { children: "All backups are encrypted with AES-256 using your passkey. Your passkey authenticator (device/biometrics) is required to restore backups." }),
7114
+ " ",
7115
+ "Without backup access, you cannot recover your smart account if you lose this device."
7116
+ ] })
7117
+ ] })
7118
+ ] })
7119
+ ] })
7120
+ ] });
7121
+ }
7122
+
6696
7123
  // src/internal/components/TransactionsModal.tsx
6697
- import React19 from "react";
7124
+ import React20 from "react";
6698
7125
  init_base();
6699
- import { Activity, ArrowUpRight, ArrowDownRight, CheckCircle2 as CheckCircle24, XCircle, ArrowLeft as ArrowLeft5, RefreshCw as RefreshCw3 } from "lucide-react";
6700
- import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
7126
+ import { Activity, ArrowUpRight, ArrowDownRight, CheckCircle2 as CheckCircle25, XCircle, ArrowLeft as ArrowLeft5, RefreshCw as RefreshCw3 } from "lucide-react";
7127
+ import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
6701
7128
  var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6702
7129
  const { address } = useLumiaSession();
6703
- const [transactions, setTransactions] = React19.useState([]);
6704
- const [loading, setLoading] = React19.useState(false);
6705
- const [error, setError] = React19.useState(null);
7130
+ const [transactions, setTransactions] = React20.useState([]);
7131
+ const [loading, setLoading] = React20.useState(false);
7132
+ const [error, setError] = React20.useState(null);
6706
7133
  const { config } = useLumiaPassportConfig();
6707
7134
  const { isDark, classes: theme } = useTheme(config.ui.theme);
6708
- const loadTransactions = React19.useCallback(async () => {
7135
+ const loadTransactions = React20.useCallback(async () => {
6709
7136
  if (!address) return;
6710
7137
  setLoading(true);
6711
7138
  setError(null);
@@ -6726,7 +7153,7 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6726
7153
  setLoading(false);
6727
7154
  }
6728
7155
  }, [address]);
6729
- React19.useEffect(() => {
7156
+ React20.useEffect(() => {
6730
7157
  if (open && address && !loading && transactions.length === 0) {
6731
7158
  loadTransactions();
6732
7159
  }
@@ -6747,98 +7174,98 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6747
7174
  }
6748
7175
  };
6749
7176
  const getStatusIcon = (status) => {
6750
- return status === "ok" ? /* @__PURE__ */ jsx23(CheckCircle24, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx23(XCircle, { className: "w-4 h-4 text-red-500" });
7177
+ return status === "ok" ? /* @__PURE__ */ jsx24(CheckCircle25, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx24(XCircle, { className: "w-4 h-4 text-red-500" });
6751
7178
  };
6752
7179
  const getTransactionIcon = (from, to) => {
6753
7180
  const isIncoming = to.toLowerCase() === address?.toLowerCase();
6754
- return isIncoming ? /* @__PURE__ */ jsx23(ArrowDownRight, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx23(ArrowUpRight, { className: "w-4 h-4 text-blue-500" });
7181
+ return isIncoming ? /* @__PURE__ */ jsx24(ArrowDownRight, { className: "w-4 h-4 text-green-500" }) : /* @__PURE__ */ jsx24(ArrowUpRight, { className: "w-4 h-4 text-blue-500" });
6755
7182
  };
6756
7183
  const openInExplorer = (txHash) => {
6757
7184
  const explorerUrl = getExplorerUrl();
6758
7185
  window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
6759
7186
  };
6760
- return /* @__PURE__ */ jsx23(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs15(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: [
6761
- /* @__PURE__ */ jsx23(VisuallyHidden, { children: /* @__PURE__ */ jsx23(DialogTitle, { children: "Transaction History" }) }),
6762
- /* @__PURE__ */ jsx23(DialogDescription, { className: "sr-only", children: "View your transaction history" }),
6763
- /* @__PURE__ */ jsx23("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
6764
- onBack && /* @__PURE__ */ jsx23(
7187
+ return /* @__PURE__ */ jsx24(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs16(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: [
7188
+ /* @__PURE__ */ jsx24(VisuallyHidden, { children: /* @__PURE__ */ jsx24(DialogTitle, { children: "Transaction History" }) }),
7189
+ /* @__PURE__ */ jsx24(DialogDescription, { className: "sr-only", children: "View your transaction history" }),
7190
+ /* @__PURE__ */ jsx24("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
7191
+ onBack && /* @__PURE__ */ jsx24(
6765
7192
  "button",
6766
7193
  {
6767
7194
  onClick: onBack,
6768
7195
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
6769
7196
  title: "Back",
6770
- children: /* @__PURE__ */ jsx23(ArrowLeft5, { className: "h-4 w-4" })
7197
+ children: /* @__PURE__ */ jsx24(ArrowLeft5, { className: "h-4 w-4" })
6771
7198
  }
6772
7199
  ),
6773
- /* @__PURE__ */ jsxs15("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
6774
- /* @__PURE__ */ jsx23(Activity, { className: "h-5 w-5" }),
6775
- /* @__PURE__ */ jsx23("span", { children: "Transaction History" }),
6776
- /* @__PURE__ */ jsx23(
7200
+ /* @__PURE__ */ jsxs16("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7201
+ /* @__PURE__ */ jsx24(Activity, { className: "h-5 w-5" }),
7202
+ /* @__PURE__ */ jsx24("span", { children: "Transaction History" }),
7203
+ /* @__PURE__ */ jsx24(
6777
7204
  "button",
6778
7205
  {
6779
7206
  onClick: loadTransactions,
6780
7207
  disabled: loading,
6781
7208
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
6782
7209
  title: "Refresh transactions",
6783
- children: /* @__PURE__ */ jsx23(RefreshCw3, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
7210
+ children: /* @__PURE__ */ jsx24(RefreshCw3, { className: `h-4 w-4 ${loading ? "animate-spin" : ""}` })
6784
7211
  }
6785
7212
  )
6786
7213
  ] })
6787
7214
  ] }) }),
6788
- /* @__PURE__ */ jsx23("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: loading ? /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx23("div", { className: `${theme.mutedText}`, children: "Loading transactions..." }) }) : error ? /* @__PURE__ */ jsxs15("div", { className: `flex flex-col items-center justify-center py-8 ${isDark ? "text-red-400" : "text-red-500"}`, children: [
6789
- /* @__PURE__ */ jsx23(XCircle, { className: "w-12 h-12 mb-2" }),
6790
- /* @__PURE__ */ jsx23("p", { className: "text-center text-sm", children: error })
6791
- ] }) : transactions.length === 0 ? /* @__PURE__ */ jsxs15("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
6792
- /* @__PURE__ */ jsx23(Activity, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
6793
- /* @__PURE__ */ jsxs15("p", { className: "text-center", children: [
7215
+ /* @__PURE__ */ jsx24("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: loading ? /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx24("div", { className: `${theme.mutedText}`, children: "Loading transactions..." }) }) : error ? /* @__PURE__ */ jsxs16("div", { className: `flex flex-col items-center justify-center py-8 ${isDark ? "text-red-400" : "text-red-500"}`, children: [
7216
+ /* @__PURE__ */ jsx24(XCircle, { className: "w-12 h-12 mb-2" }),
7217
+ /* @__PURE__ */ jsx24("p", { className: "text-center text-sm", children: error })
7218
+ ] }) : transactions.length === 0 ? /* @__PURE__ */ jsxs16("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
7219
+ /* @__PURE__ */ jsx24(Activity, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
7220
+ /* @__PURE__ */ jsxs16("p", { className: "text-center", children: [
6794
7221
  "No transactions found",
6795
- /* @__PURE__ */ jsx23("br", {}),
6796
- /* @__PURE__ */ jsx23("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
7222
+ /* @__PURE__ */ jsx24("br", {}),
7223
+ /* @__PURE__ */ jsx24("span", { className: "text-xs mt-2", children: "Smart account transactions will appear here" })
6797
7224
  ] })
6798
- ] }) : /* @__PURE__ */ jsx23("div", { className: "space-y-3", children: transactions.map((tx) => {
7225
+ ] }) : /* @__PURE__ */ jsx24("div", { className: "space-y-3", children: transactions.map((tx) => {
6799
7226
  const isIncoming = tx.to.hash.toLowerCase() === address?.toLowerCase();
6800
7227
  const displayAddress = isIncoming ? tx.from.hash : tx.to.hash;
6801
- return /* @__PURE__ */ jsxs15(
7228
+ return /* @__PURE__ */ jsxs16(
6802
7229
  "div",
6803
7230
  {
6804
7231
  className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors cursor-pointer`,
6805
7232
  onClick: () => openInExplorer(tx.hash),
6806
7233
  children: [
6807
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between mb-2", children: [
6808
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
7234
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between mb-2", children: [
7235
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
6809
7236
  getTransactionIcon(tx.from.hash, tx.to.hash),
6810
- /* @__PURE__ */ jsx23("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
7237
+ /* @__PURE__ */ jsx24("span", { className: `font-medium ${theme.titleText}`, children: isIncoming ? "Received" : "Sent" }),
6811
7238
  getStatusIcon(tx.status)
6812
7239
  ] }),
6813
- /* @__PURE__ */ jsx23("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
7240
+ /* @__PURE__ */ jsx24("div", { className: `text-xs ${theme.mutedText}`, children: formatTime(tx.timestamp) })
6814
7241
  ] }),
6815
- /* @__PURE__ */ jsxs15("div", { className: "space-y-1 text-sm", children: [
6816
- /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
6817
- /* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: isIncoming ? "From:" : "To:" }),
6818
- /* @__PURE__ */ jsxs15("span", { className: `font-mono ${theme.titleText}`, children: [
7242
+ /* @__PURE__ */ jsxs16("div", { className: "space-y-1 text-sm", children: [
7243
+ /* @__PURE__ */ jsxs16("div", { className: "flex justify-between", children: [
7244
+ /* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: isIncoming ? "From:" : "To:" }),
7245
+ /* @__PURE__ */ jsxs16("span", { className: `font-mono ${theme.titleText}`, children: [
6819
7246
  formatAddress(displayAddress),
6820
- (isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ jsx23("span", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} ml-1`, children: "(Contract)" })
7247
+ (isIncoming ? tx.from.is_contract : tx.to.is_contract) && /* @__PURE__ */ jsx24("span", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} ml-1`, children: "(Contract)" })
6821
7248
  ] })
6822
7249
  ] }),
6823
- /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
6824
- /* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Value:" }),
6825
- /* @__PURE__ */ jsxs15("span", { className: `font-semibold ${theme.titleText}`, children: [
7250
+ /* @__PURE__ */ jsxs16("div", { className: "flex justify-between", children: [
7251
+ /* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Value:" }),
7252
+ /* @__PURE__ */ jsxs16("span", { className: `font-semibold ${theme.titleText}`, children: [
6826
7253
  formatValue(tx.value),
6827
7254
  " LUMIA"
6828
7255
  ] })
6829
7256
  ] }),
6830
- /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
6831
- /* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Block:" }),
6832
- /* @__PURE__ */ jsxs15("span", { className: `font-mono ${theme.titleText}`, children: [
7257
+ /* @__PURE__ */ jsxs16("div", { className: "flex justify-between", children: [
7258
+ /* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Block:" }),
7259
+ /* @__PURE__ */ jsxs16("span", { className: `font-mono ${theme.titleText}`, children: [
6833
7260
  "#",
6834
7261
  tx.block_number
6835
7262
  ] })
6836
7263
  ] }),
6837
- tx.method && /* @__PURE__ */ jsxs15("div", { className: "flex justify-between", children: [
6838
- /* @__PURE__ */ jsx23("span", { className: `${theme.bodyText}`, children: "Method:" }),
6839
- /* @__PURE__ */ jsx23("span", { className: `${isDark ? "text-blue-400" : "text-blue-600"} text-xs`, children: tx.method })
7264
+ tx.method && /* @__PURE__ */ jsxs16("div", { className: "flex justify-between", children: [
7265
+ /* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Method:" }),
7266
+ /* @__PURE__ */ jsx24("span", { className: `${isDark ? "text-blue-400" : "text-blue-600"} text-xs`, children: tx.method })
6840
7267
  ] }),
6841
- tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ jsx23("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx23(
7268
+ tx.transaction_types && tx.transaction_types.length > 0 && /* @__PURE__ */ jsx24("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx24(
6842
7269
  "span",
6843
7270
  {
6844
7271
  className: `text-xs ${isDark ? "bg-blue-900/30 text-blue-300" : "bg-blue-100 text-blue-800"} px-2 py-0.5 rounded-full`,
@@ -6852,7 +7279,7 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6852
7279
  tx.hash
6853
7280
  );
6854
7281
  }) }) }),
6855
- transactions.length > 0 && /* @__PURE__ */ jsx23("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs15("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7282
+ transactions.length > 0 && /* @__PURE__ */ jsx24("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
6856
7283
  "Total: ",
6857
7284
  transactions.length,
6858
7285
  " transaction",
@@ -6862,11 +7289,11 @@ var TransactionsModal = ({ open, onOpenChange, onBack }) => {
6862
7289
  };
6863
7290
 
6864
7291
  // src/internal/components/ViewAssetsModal.tsx
6865
- import React21 from "react";
7292
+ import React22 from "react";
6866
7293
 
6867
7294
  // src/modules/assets.ts
6868
7295
  init_base();
6869
- import React20 from "react";
7296
+ import React21 from "react";
6870
7297
  import { useBalance, useReadContract, useReadContracts } from "wagmi";
6871
7298
  import { formatUnits, erc20Abi } from "viem";
6872
7299
  var COMMON_TOKENS = [
@@ -7012,7 +7439,7 @@ function useTokenBalance(tokenAddress, userAddress) {
7012
7439
  }
7013
7440
  });
7014
7441
  const { tokenInfo } = useTokenInfo(tokenAddress);
7015
- const formattedBalance = React20.useMemo(() => {
7442
+ const formattedBalance = React21.useMemo(() => {
7016
7443
  if (!balance || !tokenInfo) return "0";
7017
7444
  return formatUnits(balance, tokenInfo.decimals);
7018
7445
  }, [balance, tokenInfo]);
@@ -7028,11 +7455,11 @@ function useTokenBalance(tokenAddress, userAddress) {
7028
7455
  // src/internal/components/ViewAssetsModal.tsx
7029
7456
  init_base();
7030
7457
  import { Gem, RefreshCw as RefreshCw4, Copy, ExternalLink as ExternalLink2, ArrowLeft as ArrowLeft6 } from "lucide-react";
7031
- import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
7458
+ import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
7032
7459
  var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
7033
7460
  const { address } = useLumiaSession();
7034
7461
  const { assets, refreshBalances, isLoading } = useAssets(address);
7035
- const [copied, setCopied] = React21.useState(null);
7462
+ const [copied, setCopied] = React22.useState(null);
7036
7463
  const { config } = useLumiaPassportConfig();
7037
7464
  const { isDark, classes: theme } = useTheme(config.ui.theme);
7038
7465
  const handleCopy = async (text, type) => {
@@ -7047,107 +7474,107 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
7047
7474
  const openInExplorer = (address2) => {
7048
7475
  window.open(`${LUMIA_EXPLORER_URL}/address/${address2}`, "_blank");
7049
7476
  };
7050
- return /* @__PURE__ */ jsx24(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs16(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: [
7051
- /* @__PURE__ */ jsx24(VisuallyHidden, { children: /* @__PURE__ */ jsx24(DialogTitle, { children: "View Assets" }) }),
7052
- /* @__PURE__ */ jsx24(DialogDescription, { className: "sr-only", children: "View your token balances and assets" }),
7053
- /* @__PURE__ */ jsx24("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
7054
- onBack && /* @__PURE__ */ jsx24(
7477
+ return /* @__PURE__ */ jsx25(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs17(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: [
7478
+ /* @__PURE__ */ jsx25(VisuallyHidden, { children: /* @__PURE__ */ jsx25(DialogTitle, { children: "View Assets" }) }),
7479
+ /* @__PURE__ */ jsx25(DialogDescription, { className: "sr-only", children: "View your token balances and assets" }),
7480
+ /* @__PURE__ */ jsx25("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-2", children: [
7481
+ onBack && /* @__PURE__ */ jsx25(
7055
7482
  "button",
7056
7483
  {
7057
7484
  onClick: onBack,
7058
7485
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
7059
7486
  title: "Back",
7060
- children: /* @__PURE__ */ jsx24(ArrowLeft6, { className: "h-4 w-4" })
7487
+ children: /* @__PURE__ */ jsx25(ArrowLeft6, { className: "h-4 w-4" })
7061
7488
  }
7062
7489
  ),
7063
- /* @__PURE__ */ jsxs16("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7064
- /* @__PURE__ */ jsx24(Gem, { className: "h-5 w-5" }),
7065
- /* @__PURE__ */ jsx24("span", { children: "Your Assets" }),
7066
- /* @__PURE__ */ jsx24(
7490
+ /* @__PURE__ */ jsxs17("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7491
+ /* @__PURE__ */ jsx25(Gem, { className: "h-5 w-5" }),
7492
+ /* @__PURE__ */ jsx25("span", { children: "Your Assets" }),
7493
+ /* @__PURE__ */ jsx25(
7067
7494
  "button",
7068
7495
  {
7069
7496
  onClick: refreshBalances,
7070
7497
  disabled: isLoading,
7071
7498
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1`,
7072
7499
  title: "Refresh balances",
7073
- children: /* @__PURE__ */ jsx24(RefreshCw4, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
7500
+ children: /* @__PURE__ */ jsx25(RefreshCw4, { className: `h-4 w-4 ${isLoading ? "animate-spin" : ""}` })
7074
7501
  }
7075
7502
  )
7076
7503
  ] })
7077
7504
  ] }) }),
7078
- /* @__PURE__ */ jsx24("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: isLoading ? /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx24("div", { className: `${theme.mutedText}`, children: "Loading assets..." }) }) : assets.length === 0 ? /* @__PURE__ */ jsxs16("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
7079
- /* @__PURE__ */ jsx24(Gem, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
7080
- /* @__PURE__ */ jsx24("p", { children: "No assets found" })
7081
- ] }) : /* @__PURE__ */ jsx24("div", { className: "space-y-3", children: assets.map((asset, index) => /* @__PURE__ */ jsxs16("div", { className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors`, children: [
7082
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between mb-2", children: [
7083
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-3", children: [
7084
- /* @__PURE__ */ jsx24("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__ */ jsx24("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
7085
- /* @__PURE__ */ jsxs16("div", { children: [
7086
- /* @__PURE__ */ jsx24("div", { className: `font-medium ${theme.titleText}`, children: asset.name }),
7087
- /* @__PURE__ */ jsx24("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7505
+ /* @__PURE__ */ jsx25("div", { className: "p-5 max-h-[60vh] overflow-y-auto", children: isLoading ? /* @__PURE__ */ jsx25("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx25("div", { className: `${theme.mutedText}`, children: "Loading assets..." }) }) : assets.length === 0 ? /* @__PURE__ */ jsxs17("div", { className: `flex flex-col items-center justify-center py-8 ${theme.mutedText}`, children: [
7506
+ /* @__PURE__ */ jsx25(Gem, { className: `w-12 h-12 mb-2 ${isDark ? "text-gray-600" : "text-gray-300"}` }),
7507
+ /* @__PURE__ */ jsx25("p", { children: "No assets found" })
7508
+ ] }) : /* @__PURE__ */ jsx25("div", { className: "space-y-3", children: assets.map((asset, index) => /* @__PURE__ */ jsxs17("div", { className: `${isDark ? "bg-gray-800 hover:bg-gray-700" : "bg-gray-50 hover:bg-gray-100"} rounded-xl p-4 transition-colors`, children: [
7509
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between mb-2", children: [
7510
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-3", children: [
7511
+ /* @__PURE__ */ jsx25("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__ */ jsx25("span", { className: "text-white font-bold text-sm", children: asset.symbol.charAt(0) }) }),
7512
+ /* @__PURE__ */ jsxs17("div", { children: [
7513
+ /* @__PURE__ */ jsx25("div", { className: `font-medium ${theme.titleText}`, children: asset.name }),
7514
+ /* @__PURE__ */ jsx25("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7088
7515
  ] })
7089
7516
  ] }),
7090
- /* @__PURE__ */ jsxs16("div", { className: "text-right", children: [
7091
- /* @__PURE__ */ jsx24("div", { className: `font-mono ${theme.titleText}`, children: asset.formattedBalance }),
7092
- /* @__PURE__ */ jsx24("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7517
+ /* @__PURE__ */ jsxs17("div", { className: "text-right", children: [
7518
+ /* @__PURE__ */ jsx25("div", { className: `font-mono ${theme.titleText}`, children: asset.formattedBalance }),
7519
+ /* @__PURE__ */ jsx25("div", { className: `text-sm ${theme.mutedText}`, children: asset.symbol })
7093
7520
  ] })
7094
7521
  ] }),
7095
- asset.address && /* @__PURE__ */ jsxs16("div", { className: `space-y-2 mt-3 pt-3 border-t ${theme.divider}`, children: [
7096
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
7097
- /* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Contract Address:" }),
7098
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
7099
- /* @__PURE__ */ jsx24("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
7100
- /* @__PURE__ */ jsx24(
7522
+ asset.address && /* @__PURE__ */ jsxs17("div", { className: `space-y-2 mt-3 pt-3 border-t ${theme.divider}`, children: [
7523
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between text-sm", children: [
7524
+ /* @__PURE__ */ jsx25("span", { className: `${theme.bodyText}`, children: "Contract Address:" }),
7525
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-2", children: [
7526
+ /* @__PURE__ */ jsx25("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${asset.address.slice(0, 6)}...${asset.address.slice(-4)}` }),
7527
+ /* @__PURE__ */ jsx25(
7101
7528
  "button",
7102
7529
  {
7103
7530
  onClick: () => handleCopy(asset.address, "address"),
7104
7531
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7105
7532
  title: "Copy address",
7106
- children: copied === "address" ? /* @__PURE__ */ jsx24("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx24(Copy, { className: "w-3 h-3" })
7533
+ children: copied === "address" ? /* @__PURE__ */ jsx25("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx25(Copy, { className: "w-3 h-3" })
7107
7534
  }
7108
7535
  ),
7109
- /* @__PURE__ */ jsx24(
7536
+ /* @__PURE__ */ jsx25(
7110
7537
  "button",
7111
7538
  {
7112
7539
  onClick: () => openInExplorer(asset.address),
7113
7540
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7114
7541
  title: "View in explorer",
7115
- children: /* @__PURE__ */ jsx24(ExternalLink2, { className: "w-3 h-3" })
7542
+ children: /* @__PURE__ */ jsx25(ExternalLink2, { className: "w-3 h-3" })
7116
7543
  }
7117
7544
  )
7118
7545
  ] })
7119
7546
  ] }),
7120
- asset.decimals && /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
7121
- /* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Decimals:" }),
7122
- /* @__PURE__ */ jsx24("span", { className: `${theme.titleText}`, children: asset.decimals })
7547
+ asset.decimals && /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between text-sm", children: [
7548
+ /* @__PURE__ */ jsx25("span", { className: `${theme.bodyText}`, children: "Decimals:" }),
7549
+ /* @__PURE__ */ jsx25("span", { className: `${theme.titleText}`, children: asset.decimals })
7123
7550
  ] })
7124
7551
  ] }),
7125
- asset.type === "native" && address && /* @__PURE__ */ jsx24("div", { className: "mt-3 pt-3 border-t border-gray-200", children: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between text-sm", children: [
7126
- /* @__PURE__ */ jsx24("span", { className: `${theme.bodyText}`, children: "Your Address:" }),
7127
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
7128
- /* @__PURE__ */ jsx24("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
7129
- /* @__PURE__ */ jsx24(
7552
+ asset.type === "native" && address && /* @__PURE__ */ jsx25("div", { className: "mt-3 pt-3 border-t border-gray-200", children: /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between text-sm", children: [
7553
+ /* @__PURE__ */ jsx25("span", { className: `${theme.bodyText}`, children: "Your Address:" }),
7554
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-2", children: [
7555
+ /* @__PURE__ */ jsx25("span", { className: `font-mono ${theme.titleText} text-xs`, children: `${address.slice(0, 6)}...${address.slice(-4)}` }),
7556
+ /* @__PURE__ */ jsx25(
7130
7557
  "button",
7131
7558
  {
7132
7559
  onClick: () => handleCopy(address, "wallet"),
7133
7560
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7134
7561
  title: "Copy wallet address",
7135
- children: copied === "wallet" ? /* @__PURE__ */ jsx24("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx24(Copy, { className: "w-3 h-3" })
7562
+ children: copied === "wallet" ? /* @__PURE__ */ jsx25("span", { className: `${isDark ? "text-green-400" : "text-green-500"} text-xs`, children: "\u2713" }) : /* @__PURE__ */ jsx25(Copy, { className: "w-3 h-3" })
7136
7563
  }
7137
7564
  ),
7138
- /* @__PURE__ */ jsx24(
7565
+ /* @__PURE__ */ jsx25(
7139
7566
  "button",
7140
7567
  {
7141
7568
  onClick: () => openInExplorer(address),
7142
7569
  className: `${isDark ? "text-gray-500 hover:text-gray-300" : "text-gray-400 hover:text-gray-600"}`,
7143
7570
  title: "View in explorer",
7144
- children: /* @__PURE__ */ jsx24(ExternalLink2, { className: "w-3 h-3" })
7571
+ children: /* @__PURE__ */ jsx25(ExternalLink2, { className: "w-3 h-3" })
7145
7572
  }
7146
7573
  )
7147
7574
  ] })
7148
7575
  ] }) })
7149
7576
  ] }, `${asset.type}-${asset.address || "native"}-${index}`)) }) }),
7150
- assets.length > 0 && /* @__PURE__ */ jsx24("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs16("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7577
+ assets.length > 0 && /* @__PURE__ */ jsx25("div", { className: `p-5 border-t ${theme.divider}`, children: /* @__PURE__ */ jsxs17("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7151
7578
  "Total: ",
7152
7579
  assets.length,
7153
7580
  " asset",
@@ -7157,18 +7584,18 @@ var ViewAssetsModal = ({ open, onOpenChange, onBack }) => {
7157
7584
  };
7158
7585
 
7159
7586
  // src/internal/components/SendModal.tsx
7160
- import { useState as useState12, useEffect as useEffect9 } from "react";
7161
- import { Send, ArrowLeft as ArrowLeft7, Loader2, CheckCircle2 as CheckCircle26, AlertCircle as AlertCircle4 } from "lucide-react";
7587
+ import { useState as useState13, useEffect as useEffect10 } from "react";
7588
+ import { Send, ArrowLeft as ArrowLeft7, Loader2, CheckCircle2 as CheckCircle27, AlertCircle as AlertCircle5 } from "lucide-react";
7162
7589
 
7163
7590
  // src/hooks/useSendTransaction.ts
7164
- import { useState as useState9, useCallback as useCallback3 } from "react";
7591
+ import { useState as useState10, useCallback as useCallback4 } from "react";
7165
7592
  import { parseEther as parseEther2, isAddress } from "viem";
7166
7593
  function useSendTransaction() {
7167
7594
  const { session, address } = useLumiaSession();
7168
- const [isLoading, setIsLoading] = useState9(false);
7169
- const [error, setError] = useState9(null);
7170
- const [userOpHash, setUserOpHash] = useState9(null);
7171
- const sendTransaction = useCallback3(async (params) => {
7595
+ const [isLoading, setIsLoading] = useState10(false);
7596
+ const [error, setError] = useState10(null);
7597
+ const [userOpHash, setUserOpHash] = useState10(null);
7598
+ const sendTransaction = useCallback4(async (params) => {
7172
7599
  if (!session || !address) {
7173
7600
  setError("No active session");
7174
7601
  return null;
@@ -7205,7 +7632,7 @@ function useSendTransaction() {
7205
7632
  setIsLoading(false);
7206
7633
  }
7207
7634
  }, [session, address]);
7208
- const reset = useCallback3(() => {
7635
+ const reset = useCallback4(() => {
7209
7636
  setError(null);
7210
7637
  setUserOpHash(null);
7211
7638
  setIsLoading(false);
@@ -7224,8 +7651,8 @@ import { isAddress as isAddress2 } from "viem";
7224
7651
  import { useBalance as useBalance2 } from "wagmi";
7225
7652
 
7226
7653
  // src/internal/components/UserOpStatus.tsx
7227
- import * as React23 from "react";
7228
- import { AlertCircle as AlertCircle3, CheckCircle2 as CheckCircle25, Clock as Clock3, Copy as Copy3, ExternalLink as ExternalLink4, RefreshCw as RefreshCw5 } from "lucide-react";
7654
+ import * as React24 from "react";
7655
+ import { AlertCircle as AlertCircle4, CheckCircle2 as CheckCircle26, Clock as Clock3, Copy as Copy3, ExternalLink as ExternalLink4, RefreshCw as RefreshCw5 } from "lucide-react";
7229
7656
 
7230
7657
  // src/internal/components/ui/badge.tsx
7231
7658
  import { cva as cva2 } from "class-variance-authority";
@@ -7238,7 +7665,7 @@ function cn2(...inputs) {
7238
7665
  }
7239
7666
 
7240
7667
  // src/internal/components/ui/badge.tsx
7241
- import { jsx as jsx25 } from "react/jsx-runtime";
7668
+ import { jsx as jsx26 } from "react/jsx-runtime";
7242
7669
  var badgeVariants = cva2(
7243
7670
  "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",
7244
7671
  {
@@ -7258,13 +7685,13 @@ var badgeVariants = cva2(
7258
7685
  }
7259
7686
  );
7260
7687
  function Badge({ className, variant, ...props }) {
7261
- return /* @__PURE__ */ jsx25("div", { className: cn2(badgeVariants({ variant }), className), ...props });
7688
+ return /* @__PURE__ */ jsx26("div", { className: cn2(badgeVariants({ variant }), className), ...props });
7262
7689
  }
7263
7690
 
7264
7691
  // src/internal/components/Address.tsx
7265
- import * as React22 from "react";
7692
+ import * as React23 from "react";
7266
7693
  import { Copy as Copy2, ExternalLink as ExternalLink3 } from "lucide-react";
7267
- import { jsx as jsx26, jsxs as jsxs17 } from "react/jsx-runtime";
7694
+ import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
7268
7695
  function toExplorerAddressUrl(address, chain) {
7269
7696
  const base2 = chain?.blockExplorers?.default?.url;
7270
7697
  if (!base2) return null;
@@ -7285,12 +7712,12 @@ var Address = ({
7285
7712
  }) => {
7286
7713
  const addr = address || "";
7287
7714
  const explorer = toExplorerAddressUrl(addr, chain || void 0);
7288
- const [copied, setCopied] = React22.useState(false);
7289
- if (!addr) return /* @__PURE__ */ jsx26("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
7290
- return /* @__PURE__ */ jsxs17("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
7291
- label && /* @__PURE__ */ jsx26("span", { className: "text-sm font-medium", children: label }),
7292
- /* @__PURE__ */ jsx26("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
7293
- showCopy && /* @__PURE__ */ jsx26(
7715
+ const [copied, setCopied] = React23.useState(false);
7716
+ if (!addr) return /* @__PURE__ */ jsx27("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
7717
+ return /* @__PURE__ */ jsxs18("div", { className: cn2("flex items-center gap-2", className), style: { listStyle: "none" }, children: [
7718
+ label && /* @__PURE__ */ jsx27("span", { className: "text-sm font-medium", children: label }),
7719
+ /* @__PURE__ */ jsx27("code", { className: "text-xs bg-background px-2 py-1 rounded select-all", children: truncate ? short(addr) : addr }),
7720
+ showCopy && /* @__PURE__ */ jsx27(
7294
7721
  Button,
7295
7722
  {
7296
7723
  variant: "ghost",
@@ -7304,10 +7731,10 @@ var Address = ({
7304
7731
  } catch {
7305
7732
  }
7306
7733
  },
7307
- children: /* @__PURE__ */ jsx26(Copy2, { className: "h-4 w-4" })
7734
+ children: /* @__PURE__ */ jsx27(Copy2, { className: "h-4 w-4" })
7308
7735
  }
7309
7736
  ),
7310
- showExplorer && explorer && /* @__PURE__ */ jsx26(
7737
+ showExplorer && explorer && /* @__PURE__ */ jsx27(
7311
7738
  "a",
7312
7739
  {
7313
7740
  href: explorer,
@@ -7315,7 +7742,7 @@ var Address = ({
7315
7742
  rel: "noreferrer noopener",
7316
7743
  className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
7317
7744
  title: "Open in explorer",
7318
- children: /* @__PURE__ */ jsx26(ExternalLink3, { className: "h-4 w-4" })
7745
+ children: /* @__PURE__ */ jsx27(ExternalLink3, { className: "h-4 w-4" })
7319
7746
  }
7320
7747
  )
7321
7748
  ] });
@@ -7323,7 +7750,7 @@ var Address = ({
7323
7750
 
7324
7751
  // src/internal/components/UserOpStatus.tsx
7325
7752
  init_base();
7326
- import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
7753
+ import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
7327
7754
  var UserOpStatus = ({
7328
7755
  userOpHash,
7329
7756
  chain,
@@ -7334,20 +7761,20 @@ var UserOpStatus = ({
7334
7761
  externalState
7335
7762
  }) => {
7336
7763
  const useExternalState = !!externalState;
7337
- const [internalReceipt, setInternalReceipt] = React23.useState(null);
7338
- const [internalMempool, setInternalMempool] = React23.useState(null);
7339
- const [internalError, setInternalError] = React23.useState(null);
7340
- const [attempt, setAttempt] = React23.useState(0);
7341
- const [internalRefreshing, setInternalRefreshing] = React23.useState(false);
7342
- const [timedOut, setTimedOut] = React23.useState(false);
7343
- const [rejected, setRejected] = React23.useState(false);
7344
- const intervalRef = React23.useRef(null);
7345
- const startTimeRef = React23.useRef(Date.now());
7764
+ const [internalReceipt, setInternalReceipt] = React24.useState(null);
7765
+ const [internalMempool, setInternalMempool] = React24.useState(null);
7766
+ const [internalError, setInternalError] = React24.useState(null);
7767
+ const [attempt, setAttempt] = React24.useState(0);
7768
+ const [internalRefreshing, setInternalRefreshing] = React24.useState(false);
7769
+ const [timedOut, setTimedOut] = React24.useState(false);
7770
+ const [rejected, setRejected] = React24.useState(false);
7771
+ const intervalRef = React24.useRef(null);
7772
+ const startTimeRef = React24.useRef(Date.now());
7346
7773
  const receipt = useExternalState ? externalState.receipt ?? null : internalReceipt;
7347
7774
  const mempool = useExternalState ? externalState.mempool ?? null : internalMempool;
7348
7775
  const error = useExternalState ? externalState.error ?? null : internalError;
7349
7776
  const refreshing = useExternalState ? externalState.isPolling ?? false : internalRefreshing;
7350
- const rpc = React23.useCallback(async (method, params) => {
7777
+ const rpc = React24.useCallback(async (method, params) => {
7351
7778
  const body = { jsonrpc: "2.0", id: 1, method, params };
7352
7779
  const res = await fetch(getBundlerUrl(), {
7353
7780
  method: "POST",
@@ -7358,14 +7785,14 @@ var UserOpStatus = ({
7358
7785
  if (json.error) throw new Error(json.error.message || JSON.stringify(json.error));
7359
7786
  return json.result;
7360
7787
  }, []);
7361
- const extractMempoolInfo = React23.useCallback((m) => {
7788
+ const extractMempoolInfo = React24.useCallback((m) => {
7362
7789
  if (!m) return null;
7363
7790
  const entryPoint = m.entryPoint || m?.userOperation?.entryPoint || null;
7364
7791
  const sender = m.sender || m?.userOperation?.sender || null;
7365
7792
  if (!entryPoint && !sender) return null;
7366
7793
  return { entryPoint, sender };
7367
7794
  }, []);
7368
- const tick = React23.useCallback(async () => {
7795
+ const tick = React24.useCallback(async () => {
7369
7796
  if (useExternalState) return;
7370
7797
  const elapsed = Date.now() - startTimeRef.current;
7371
7798
  if (elapsed > maxPollTimeMs) {
@@ -7409,7 +7836,7 @@ var UserOpStatus = ({
7409
7836
  setAttempt((x) => x + 1);
7410
7837
  }
7411
7838
  }, [rpc, userOpHash, maxPollTimeMs, extractMempoolInfo, useExternalState]);
7412
- React23.useEffect(() => {
7839
+ React24.useEffect(() => {
7413
7840
  if (useExternalState) return;
7414
7841
  console.log("[UserOpStatus] Initializing polling for UserOp hash:", userOpHash);
7415
7842
  startTimeRef.current = Date.now();
@@ -7421,7 +7848,7 @@ var UserOpStatus = ({
7421
7848
  setAttempt(0);
7422
7849
  setInternalRefreshing(false);
7423
7850
  }, [userOpHash, useExternalState]);
7424
- React23.useEffect(() => {
7851
+ React24.useEffect(() => {
7425
7852
  if (useExternalState) {
7426
7853
  console.log("[UserOpStatus] Using external state, skipping internal polling");
7427
7854
  return;
@@ -7456,54 +7883,54 @@ var UserOpStatus = ({
7456
7883
  const stateBadge = () => {
7457
7884
  if (receipt) {
7458
7885
  const ok = !!receipt.success;
7459
- return /* @__PURE__ */ jsxs18(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
7460
- ok ? /* @__PURE__ */ jsx27(CheckCircle25, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
7886
+ return /* @__PURE__ */ jsxs19(Badge, { variant: ok ? "success" : "destructive", className: "gap-1", children: [
7887
+ ok ? /* @__PURE__ */ jsx28(CheckCircle26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx28(AlertCircle4, { className: "h-3 w-3" }),
7461
7888
  ok ? "Included" : "Failed"
7462
7889
  ] });
7463
7890
  }
7464
7891
  if (rejected) {
7465
- return /* @__PURE__ */ jsxs18(Badge, { variant: "destructive", className: "gap-1", children: [
7466
- /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
7892
+ return /* @__PURE__ */ jsxs19(Badge, { variant: "destructive", className: "gap-1", children: [
7893
+ /* @__PURE__ */ jsx28(AlertCircle4, { className: "h-3 w-3" }),
7467
7894
  " Rejected by bundler"
7468
7895
  ] });
7469
7896
  }
7470
7897
  if (timedOut) {
7471
- return /* @__PURE__ */ jsxs18(Badge, { variant: "warning", className: "gap-1", children: [
7472
- /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-3 w-3" }),
7898
+ return /* @__PURE__ */ jsxs19(Badge, { variant: "warning", className: "gap-1", children: [
7899
+ /* @__PURE__ */ jsx28(AlertCircle4, { className: "h-3 w-3" }),
7473
7900
  " Timeout - may be rejected"
7474
7901
  ] });
7475
7902
  }
7476
7903
  if (mempool) {
7477
- return /* @__PURE__ */ jsxs18(Badge, { variant: "outline", className: "gap-1", children: [
7478
- /* @__PURE__ */ jsx27(Clock3, { className: "h-3 w-3" }),
7904
+ return /* @__PURE__ */ jsxs19(Badge, { variant: "outline", className: "gap-1", children: [
7905
+ /* @__PURE__ */ jsx28(Clock3, { className: "h-3 w-3" }),
7479
7906
  " Pending in bundler"
7480
7907
  ] });
7481
7908
  }
7482
- return /* @__PURE__ */ jsxs18(Badge, { variant: "secondary", className: "gap-1", children: [
7483
- /* @__PURE__ */ jsx27(Clock3, { className: "h-3 w-3" }),
7909
+ return /* @__PURE__ */ jsxs19(Badge, { variant: "secondary", className: "gap-1", children: [
7910
+ /* @__PURE__ */ jsx28(Clock3, { className: "h-3 w-3" }),
7484
7911
  " Waiting"
7485
7912
  ] });
7486
7913
  };
7487
- return /* @__PURE__ */ jsxs18(
7914
+ return /* @__PURE__ */ jsxs19(
7488
7915
  "div",
7489
7916
  {
7490
7917
  className: cn2("lumia-scope bg-card text-card-foreground p-0 rounded-xl border border-border w-full max-w-[680px]", className),
7491
7918
  style: { textAlign: "left", listStyle: "none" },
7492
7919
  children: [
7493
- /* @__PURE__ */ jsxs18("div", { className: "flex items-center justify-between mb-3", children: [
7494
- /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2", children: [
7920
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center justify-between mb-3", children: [
7921
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
7495
7922
  stateBadge(),
7496
- /* @__PURE__ */ jsx27("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
7923
+ /* @__PURE__ */ jsx28("span", { className: "text-xs text-muted-foreground", children: "This is a UserOperation hash (EIP-4337), not a L2 tx hash." })
7497
7924
  ] }),
7498
- /* @__PURE__ */ jsxs18(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
7499
- /* @__PURE__ */ jsx27(RefreshCw5, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
7500
- /* @__PURE__ */ jsx27("span", { className: "text-xs", children: "Refresh" })
7925
+ /* @__PURE__ */ jsxs19(Button, { variant: "ghost", size: "sm", onClick: () => tick(), disabled: refreshing, className: "h-8", children: [
7926
+ /* @__PURE__ */ jsx28(RefreshCw5, { className: cn2("h-3.5 w-3.5 mr-1", refreshing && "animate-spin") }),
7927
+ /* @__PURE__ */ jsx28("span", { className: "text-xs", children: "Refresh" })
7501
7928
  ] })
7502
7929
  ] }),
7503
- /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 mb-2", children: [
7504
- /* @__PURE__ */ jsx27("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
7505
- /* @__PURE__ */ jsx27("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
7506
- /* @__PURE__ */ jsx27(
7930
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 mb-2", children: [
7931
+ /* @__PURE__ */ jsx28("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "UO Hash" }),
7932
+ /* @__PURE__ */ jsx28("code", { className: "text-xs font-mono flex-1 select-all", children: userOpHash }),
7933
+ /* @__PURE__ */ jsx28(
7507
7934
  Button,
7508
7935
  {
7509
7936
  variant: "ghost",
@@ -7515,14 +7942,14 @@ var UserOpStatus = ({
7515
7942
  } catch {
7516
7943
  }
7517
7944
  },
7518
- children: /* @__PURE__ */ jsx27(Copy3, { className: "h-3.5 w-3.5" })
7945
+ children: /* @__PURE__ */ jsx28(Copy3, { className: "h-3.5 w-3.5" })
7519
7946
  }
7520
7947
  )
7521
7948
  ] }),
7522
- receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2 mb-3", children: [
7523
- /* @__PURE__ */ jsx27("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
7524
- /* @__PURE__ */ jsx27("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
7525
- /* @__PURE__ */ jsx27(
7949
+ receipt && receipt.receipt?.transactionHash && /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 mb-3", children: [
7950
+ /* @__PURE__ */ jsx28("span", { className: "text-sm font-medium min-w-16 shrink-0", children: "Tx Hash" }),
7951
+ /* @__PURE__ */ jsx28("code", { className: "text-xs font-mono flex-1 select-all", children: receipt.receipt.transactionHash }),
7952
+ /* @__PURE__ */ jsx28(
7526
7953
  Button,
7527
7954
  {
7528
7955
  variant: "ghost",
@@ -7534,10 +7961,10 @@ var UserOpStatus = ({
7534
7961
  } catch {
7535
7962
  }
7536
7963
  },
7537
- children: /* @__PURE__ */ jsx27(Copy3, { className: "h-3.5 w-3.5" })
7964
+ children: /* @__PURE__ */ jsx28(Copy3, { className: "h-3.5 w-3.5" })
7538
7965
  }
7539
7966
  ),
7540
- chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx27(
7967
+ chain?.blockExplorers?.default?.url && /* @__PURE__ */ jsx28(
7541
7968
  "a",
7542
7969
  {
7543
7970
  href: `${chain.blockExplorers.default.url}/tx/${receipt.receipt.transactionHash}`,
@@ -7545,11 +7972,11 @@ var UserOpStatus = ({
7545
7972
  rel: "noreferrer noopener",
7546
7973
  className: "inline-flex items-center justify-center h-8 w-8 rounded-md hover:bg-accent text-foreground",
7547
7974
  title: "Open in explorer",
7548
- children: /* @__PURE__ */ jsx27(ExternalLink4, { className: "h-3.5 w-3.5" })
7975
+ children: /* @__PURE__ */ jsx28(ExternalLink4, { className: "h-3.5 w-3.5" })
7549
7976
  }
7550
7977
  )
7551
7978
  ] }),
7552
- receipt && /* @__PURE__ */ jsxs18("div", { className: "text-xs text-muted-foreground mb-3", children: [
7979
+ receipt && /* @__PURE__ */ jsxs19("div", { className: "text-xs text-muted-foreground mb-3", children: [
7553
7980
  "Block ",
7554
7981
  parseInt(receipt.receipt?.blockNumber || "0x0", 16),
7555
7982
  " \u2022 Gas Used",
@@ -7558,32 +7985,32 @@ var UserOpStatus = ({
7558
7985
  " \u2022 Success ",
7559
7986
  String(!!receipt.success)
7560
7987
  ] }),
7561
- /* @__PURE__ */ jsx27("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs18("span", { className: "ml-2", children: [
7988
+ /* @__PURE__ */ jsx28("div", { className: "text-xs text-muted-foreground", children: !receipt && !timedOut && !rejected && /* @__PURE__ */ jsxs19("span", { className: "ml-2", children: [
7562
7989
  "\u2022 Polling for ",
7563
7990
  Math.round((Date.now() - startTimeRef.current) / 1e3),
7564
7991
  "s"
7565
7992
  ] }) }),
7566
- mempool && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
7567
- /* @__PURE__ */ jsxs18("div", { children: [
7993
+ mempool && /* @__PURE__ */ jsxs19("div", { className: "text-sm text-muted-foreground mt-2", style: { listStyle: "none" }, children: [
7994
+ /* @__PURE__ */ jsxs19("div", { children: [
7568
7995
  "Seen by bundler at ",
7569
- /* @__PURE__ */ jsx27(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
7996
+ /* @__PURE__ */ jsx28(Address, { address: mempool.entryPoint, chain, showExplorer: true, truncate: false })
7570
7997
  ] }),
7571
- /* @__PURE__ */ jsxs18("div", { children: [
7998
+ /* @__PURE__ */ jsxs19("div", { children: [
7572
7999
  "sender ",
7573
- /* @__PURE__ */ jsx27(Address, { address: mempool.sender, chain, truncate: false })
8000
+ /* @__PURE__ */ jsx28(Address, { address: mempool.sender, chain, truncate: false })
7574
8001
  ] })
7575
8002
  ] }),
7576
- error && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
7577
- /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
8003
+ error && /* @__PURE__ */ jsxs19("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
8004
+ /* @__PURE__ */ jsx28(AlertCircle4, { className: "h-4 w-4" }),
7578
8005
  " ",
7579
8006
  error
7580
8007
  ] }),
7581
- rejected && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
7582
- /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
8008
+ rejected && /* @__PURE__ */ jsxs19("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
8009
+ /* @__PURE__ */ jsx28(AlertCircle4, { className: "h-4 w-4" }),
7583
8010
  "UserOperation was dropped from bundler mempool. This usually means it was invalid or replaced."
7584
8011
  ] }),
7585
- timedOut && /* @__PURE__ */ jsxs18("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
7586
- /* @__PURE__ */ jsx27(AlertCircle3, { className: "h-4 w-4" }),
8012
+ timedOut && /* @__PURE__ */ jsxs19("div", { className: "text-sm text-destructive flex items-center gap-1 mt-4", children: [
8013
+ /* @__PURE__ */ jsx28(AlertCircle4, { className: "h-4 w-4" }),
7587
8014
  "Stopped polling after ",
7588
8015
  Math.round(maxPollTimeMs / 1e3),
7589
8016
  "s. UserOperation may have been rejected by the bundler."
@@ -7595,7 +8022,7 @@ var UserOpStatus = ({
7595
8022
 
7596
8023
  // src/internal/components/SendModal.tsx
7597
8024
  init_base();
7598
- import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
8025
+ import { jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
7599
8026
  var SendModal = ({
7600
8027
  open,
7601
8028
  onOpenChange,
@@ -7612,13 +8039,13 @@ var SendModal = ({
7612
8039
  address,
7613
8040
  chainId: lumiaBeam.id
7614
8041
  });
7615
- const [recipient, setRecipient] = useState12(initialRecipient);
7616
- const [amount, setAmount] = useState12(initialAmount);
7617
- const [txStep, setTxStep] = useState12("input");
7618
- const [validationError, setValidationError] = useState12(null);
8042
+ const [recipient, setRecipient] = useState13(initialRecipient);
8043
+ const [amount, setAmount] = useState13(initialAmount);
8044
+ const [txStep, setTxStep] = useState13("input");
8045
+ const [validationError, setValidationError] = useState13(null);
7619
8046
  const nativeAsset = assets.find((a) => a.type === "native");
7620
8047
  const balance = nativeAsset ? parseFloat(nativeAsset.formattedBalance) : 0;
7621
- useEffect9(() => {
8048
+ useEffect10(() => {
7622
8049
  if (open) {
7623
8050
  setTxStep("input");
7624
8051
  setValidationError(null);
@@ -7678,7 +8105,7 @@ var SendModal = ({
7678
8105
  const maxAmount = Math.max(0, balance - 1e-3);
7679
8106
  setAmount(maxAmount.toFixed(6));
7680
8107
  };
7681
- return /* @__PURE__ */ jsx28(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs19(
8108
+ return /* @__PURE__ */ jsx29(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs20(
7682
8109
  DialogContent,
7683
8110
  {
7684
8111
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -7690,28 +8117,28 @@ var SendModal = ({
7690
8117
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
7691
8118
  },
7692
8119
  children: [
7693
- /* @__PURE__ */ jsx28(VisuallyHidden, { children: /* @__PURE__ */ jsx28(DialogTitle, { children: "Send Transaction" }) }),
7694
- /* @__PURE__ */ jsx28(DialogDescription, { className: "sr-only", children: "Send LUMIA tokens to another address" }),
7695
- /* @__PURE__ */ jsx28("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2", children: [
7696
- onBack && txStep === "input" && /* @__PURE__ */ jsx28(
8120
+ /* @__PURE__ */ jsx29(VisuallyHidden, { children: /* @__PURE__ */ jsx29(DialogTitle, { children: "Send Transaction" }) }),
8121
+ /* @__PURE__ */ jsx29(DialogDescription, { className: "sr-only", children: "Send LUMIA tokens to another address" }),
8122
+ /* @__PURE__ */ jsx29("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
8123
+ onBack && txStep === "input" && /* @__PURE__ */ jsx29(
7697
8124
  "button",
7698
8125
  {
7699
8126
  onClick: onBack,
7700
8127
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
7701
8128
  title: "Back",
7702
- children: /* @__PURE__ */ jsx28(ArrowLeft7, { className: "h-4 w-4" })
8129
+ children: /* @__PURE__ */ jsx29(ArrowLeft7, { className: "h-4 w-4" })
7703
8130
  }
7704
8131
  ),
7705
- /* @__PURE__ */ jsxs19("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7706
- /* @__PURE__ */ jsx28(Send, { className: "h-5 w-5" }),
7707
- /* @__PURE__ */ jsx28("span", { children: "Send LUMIA" })
8132
+ /* @__PURE__ */ jsxs20("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8133
+ /* @__PURE__ */ jsx29(Send, { className: "h-5 w-5" }),
8134
+ /* @__PURE__ */ jsx29("span", { children: "Send LUMIA" })
7708
8135
  ] })
7709
8136
  ] }) }),
7710
- /* @__PURE__ */ jsxs19("div", { className: "p-5", children: [
7711
- txStep === "input" && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
7712
- /* @__PURE__ */ jsxs19("div", { children: [
7713
- /* @__PURE__ */ jsx28("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Recipient Address" }),
7714
- /* @__PURE__ */ jsx28(
8137
+ /* @__PURE__ */ jsxs20("div", { className: "p-5", children: [
8138
+ txStep === "input" && /* @__PURE__ */ jsxs20("div", { className: "space-y-4", children: [
8139
+ /* @__PURE__ */ jsxs20("div", { children: [
8140
+ /* @__PURE__ */ jsx29("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Recipient Address" }),
8141
+ /* @__PURE__ */ jsx29(
7715
8142
  "input",
7716
8143
  {
7717
8144
  type: "text",
@@ -7722,17 +8149,17 @@ var SendModal = ({
7722
8149
  }
7723
8150
  )
7724
8151
  ] }),
7725
- /* @__PURE__ */ jsxs19("div", { children: [
7726
- /* @__PURE__ */ jsxs19("div", { className: "flex justify-between items-center mb-2", children: [
7727
- /* @__PURE__ */ jsx28("label", { className: `text-sm font-medium ${theme.bodyText}`, children: "Amount" }),
7728
- /* @__PURE__ */ jsxs19("div", { className: `text-sm ${theme.mutedText}`, children: [
8152
+ /* @__PURE__ */ jsxs20("div", { children: [
8153
+ /* @__PURE__ */ jsxs20("div", { className: "flex justify-between items-center mb-2", children: [
8154
+ /* @__PURE__ */ jsx29("label", { className: `text-sm font-medium ${theme.bodyText}`, children: "Amount" }),
8155
+ /* @__PURE__ */ jsxs20("div", { className: `text-sm ${theme.mutedText}`, children: [
7729
8156
  "Balance: ",
7730
8157
  balance.toFixed(4),
7731
8158
  " LUMIA"
7732
8159
  ] })
7733
8160
  ] }),
7734
- /* @__PURE__ */ jsxs19("div", { className: "relative", children: [
7735
- /* @__PURE__ */ jsx28(
8161
+ /* @__PURE__ */ jsxs20("div", { className: "relative", children: [
8162
+ /* @__PURE__ */ jsx29(
7736
8163
  "input",
7737
8164
  {
7738
8165
  type: "number",
@@ -7743,7 +8170,7 @@ var SendModal = ({
7743
8170
  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`
7744
8171
  }
7745
8172
  ),
7746
- /* @__PURE__ */ jsx28(
8173
+ /* @__PURE__ */ jsx29(
7747
8174
  "button",
7748
8175
  {
7749
8176
  onClick: handleMaxAmount,
@@ -7753,11 +8180,11 @@ var SendModal = ({
7753
8180
  )
7754
8181
  ] })
7755
8182
  ] }),
7756
- (validationError || error) && /* @__PURE__ */ jsxs19("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: [
7757
- /* @__PURE__ */ jsx28(AlertCircle4, { className: "h-4 w-4" }),
7758
- /* @__PURE__ */ jsx28("span", { className: "text-sm", children: validationError || error })
8183
+ (validationError || error) && /* @__PURE__ */ jsxs20("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: [
8184
+ /* @__PURE__ */ jsx29(AlertCircle5, { className: "h-4 w-4" }),
8185
+ /* @__PURE__ */ jsx29("span", { className: "text-sm", children: validationError || error })
7759
8186
  ] }),
7760
- /* @__PURE__ */ jsx28(
8187
+ /* @__PURE__ */ jsx29(
7761
8188
  Button,
7762
8189
  {
7763
8190
  onClick: handleSend,
@@ -7768,29 +8195,29 @@ var SendModal = ({
7768
8195
  }
7769
8196
  )
7770
8197
  ] }),
7771
- txStep === "confirm" && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
7772
- /* @__PURE__ */ jsxs19("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
7773
- /* @__PURE__ */ jsx28("h3", { className: `font-medium ${theme.titleText} mb-3`, children: "Transaction Details" }),
7774
- /* @__PURE__ */ jsxs19("div", { className: "space-y-2 text-sm", children: [
7775
- /* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
7776
- /* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "To:" }),
7777
- /* @__PURE__ */ jsx28("span", { className: `font-mono ${theme.titleText}`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
8198
+ txStep === "confirm" && /* @__PURE__ */ jsxs20("div", { className: "space-y-4", children: [
8199
+ /* @__PURE__ */ jsxs20("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
8200
+ /* @__PURE__ */ jsx29("h3", { className: `font-medium ${theme.titleText} mb-3`, children: "Transaction Details" }),
8201
+ /* @__PURE__ */ jsxs20("div", { className: "space-y-2 text-sm", children: [
8202
+ /* @__PURE__ */ jsxs20("div", { className: "flex justify-between", children: [
8203
+ /* @__PURE__ */ jsx29("span", { className: `${theme.bodyText}`, children: "To:" }),
8204
+ /* @__PURE__ */ jsx29("span", { className: `font-mono ${theme.titleText}`, children: `${recipient.slice(0, 6)}...${recipient.slice(-4)}` })
7778
8205
  ] }),
7779
- /* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
7780
- /* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "Amount:" }),
7781
- /* @__PURE__ */ jsxs19("span", { className: `font-semibold ${theme.titleText}`, children: [
8206
+ /* @__PURE__ */ jsxs20("div", { className: "flex justify-between", children: [
8207
+ /* @__PURE__ */ jsx29("span", { className: `${theme.bodyText}`, children: "Amount:" }),
8208
+ /* @__PURE__ */ jsxs20("span", { className: `font-semibold ${theme.titleText}`, children: [
7782
8209
  amount,
7783
8210
  " LUMIA"
7784
8211
  ] })
7785
8212
  ] }),
7786
- /* @__PURE__ */ jsxs19("div", { className: "flex justify-between", children: [
7787
- /* @__PURE__ */ jsx28("span", { className: `${theme.bodyText}`, children: "Network:" }),
7788
- /* @__PURE__ */ jsx28("span", { className: `${theme.titleText}`, children: "Lumia Beam" })
8213
+ /* @__PURE__ */ jsxs20("div", { className: "flex justify-between", children: [
8214
+ /* @__PURE__ */ jsx29("span", { className: `${theme.bodyText}`, children: "Network:" }),
8215
+ /* @__PURE__ */ jsx29("span", { className: `${theme.titleText}`, children: "Lumia Beam" })
7789
8216
  ] })
7790
8217
  ] })
7791
8218
  ] }),
7792
- /* @__PURE__ */ jsxs19("div", { className: "flex gap-2", children: [
7793
- /* @__PURE__ */ jsx28(
8219
+ /* @__PURE__ */ jsxs20("div", { className: "flex gap-2", children: [
8220
+ /* @__PURE__ */ jsx29(
7794
8221
  Button,
7795
8222
  {
7796
8223
  onClick: () => setTxStep("input"),
@@ -7800,7 +8227,7 @@ var SendModal = ({
7800
8227
  children: "Back"
7801
8228
  }
7802
8229
  ),
7803
- /* @__PURE__ */ jsxs19(
8230
+ /* @__PURE__ */ jsxs20(
7804
8231
  Button,
7805
8232
  {
7806
8233
  onClick: handleConfirm,
@@ -7808,28 +8235,28 @@ var SendModal = ({
7808
8235
  className: "flex-1",
7809
8236
  size: "lg",
7810
8237
  children: [
7811
- isLoading && /* @__PURE__ */ jsx28(Loader2, { className: "h-4 w-4 animate-spin" }),
8238
+ isLoading && /* @__PURE__ */ jsx29(Loader2, { className: "h-4 w-4 animate-spin" }),
7812
8239
  "Confirm"
7813
8240
  ]
7814
8241
  }
7815
8242
  )
7816
8243
  ] })
7817
8244
  ] }),
7818
- txStep === "pending" && /* @__PURE__ */ jsxs19("div", { className: "py-8 text-center space-y-4", children: [
7819
- /* @__PURE__ */ jsx28(Loader2, { className: `h-12 w-12 animate-spin ${isDark ? "text-blue-400" : "text-blue-600"} mx-auto` }),
7820
- /* @__PURE__ */ jsxs19("div", { children: [
7821
- /* @__PURE__ */ jsx28("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Pending" }),
7822
- /* @__PURE__ */ jsx28("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Please wait while we process your transaction" })
8245
+ txStep === "pending" && /* @__PURE__ */ jsxs20("div", { className: "py-8 text-center space-y-4", children: [
8246
+ /* @__PURE__ */ jsx29(Loader2, { className: `h-12 w-12 animate-spin ${isDark ? "text-blue-400" : "text-blue-600"} mx-auto` }),
8247
+ /* @__PURE__ */ jsxs20("div", { children: [
8248
+ /* @__PURE__ */ jsx29("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Pending" }),
8249
+ /* @__PURE__ */ jsx29("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Please wait while we process your transaction" })
7823
8250
  ] })
7824
8251
  ] }),
7825
- txStep === "success" && userOpHash && /* @__PURE__ */ jsxs19("div", { className: "space-y-4", children: [
7826
- /* @__PURE__ */ jsxs19("div", { className: "text-center py-4", children: [
7827
- /* @__PURE__ */ jsx28(CheckCircle26, { className: `h-12 w-12 ${isDark ? "text-green-400" : "text-green-500"} mx-auto mb-3` }),
7828
- /* @__PURE__ */ jsx28("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Sent!" }),
7829
- /* @__PURE__ */ jsx28("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Your transaction is being processed" })
8252
+ txStep === "success" && userOpHash && /* @__PURE__ */ jsxs20("div", { className: "space-y-4", children: [
8253
+ /* @__PURE__ */ jsxs20("div", { className: "text-center py-4", children: [
8254
+ /* @__PURE__ */ jsx29(CheckCircle27, { className: `h-12 w-12 ${isDark ? "text-green-400" : "text-green-500"} mx-auto mb-3` }),
8255
+ /* @__PURE__ */ jsx29("p", { className: `font-medium ${theme.titleText}`, children: "Transaction Sent!" }),
8256
+ /* @__PURE__ */ jsx29("p", { className: `text-sm ${theme.mutedText} mt-1`, children: "Your transaction is being processed" })
7830
8257
  ] }),
7831
- /* @__PURE__ */ jsx28("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: /* @__PURE__ */ jsx28(UserOpStatus, { userOpHash, chain: lumiaBeam }) }),
7832
- /* @__PURE__ */ jsx28(
8258
+ /* @__PURE__ */ jsx29("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: /* @__PURE__ */ jsx29(UserOpStatus, { userOpHash, chain: lumiaBeam }) }),
8259
+ /* @__PURE__ */ jsx29(
7833
8260
  Button,
7834
8261
  {
7835
8262
  onClick: handleClose,
@@ -7846,21 +8273,21 @@ var SendModal = ({
7846
8273
  };
7847
8274
 
7848
8275
  // src/internal/components/ReceiveModal.tsx
7849
- import { useState as useState13, useEffect as useEffect10 } from "react";
7850
- import { QrCode, Copy as Copy4, ArrowLeft as ArrowLeft8, CheckCircle2 as CheckCircle27 } from "lucide-react";
8276
+ import { useState as useState14, useEffect as useEffect11 } from "react";
8277
+ import { QrCode, Copy as Copy4, ArrowLeft as ArrowLeft8, CheckCircle2 as CheckCircle28 } from "lucide-react";
7851
8278
  import QRCode from "qrcode";
7852
- import { Fragment as Fragment6, jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
8279
+ import { Fragment as Fragment7, jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
7853
8280
  var ReceiveModal = ({
7854
8281
  open,
7855
8282
  onOpenChange,
7856
8283
  onBack
7857
8284
  }) => {
7858
8285
  const { address } = useLumiaSession();
7859
- const [qrCodeUrl, setQrCodeUrl] = useState13("");
8286
+ const [qrCodeUrl, setQrCodeUrl] = useState14("");
7860
8287
  const { config } = useLumiaPassportConfig();
7861
8288
  const { isDark, classes: theme } = useTheme(config.ui.theme);
7862
- const [copied, setCopied] = useState13(false);
7863
- useEffect10(() => {
8289
+ const [copied, setCopied] = useState14(false);
8290
+ useEffect11(() => {
7864
8291
  if (open && address) {
7865
8292
  QRCode.toDataURL(address, {
7866
8293
  width: 200,
@@ -7890,7 +8317,7 @@ var ReceiveModal = ({
7890
8317
  if (!addr) return "";
7891
8318
  return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
7892
8319
  };
7893
- return /* @__PURE__ */ jsx29(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs20(
8320
+ return /* @__PURE__ */ jsx30(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs21(
7894
8321
  DialogContent,
7895
8322
  {
7896
8323
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden max-h-[80vh] gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -7902,51 +8329,51 @@ var ReceiveModal = ({
7902
8329
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
7903
8330
  },
7904
8331
  children: [
7905
- /* @__PURE__ */ jsx29(VisuallyHidden, { children: /* @__PURE__ */ jsx29(DialogTitle, { children: "Receive LUMIA" }) }),
7906
- /* @__PURE__ */ jsx29(DialogDescription, { className: "sr-only", children: "Your wallet address and QR code for receiving LUMIA" }),
7907
- /* @__PURE__ */ jsx29("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
7908
- onBack && /* @__PURE__ */ jsx29(
8332
+ /* @__PURE__ */ jsx30(VisuallyHidden, { children: /* @__PURE__ */ jsx30(DialogTitle, { children: "Receive LUMIA" }) }),
8333
+ /* @__PURE__ */ jsx30(DialogDescription, { className: "sr-only", children: "Your wallet address and QR code for receiving LUMIA" }),
8334
+ /* @__PURE__ */ jsx30("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
8335
+ onBack && /* @__PURE__ */ jsx30(
7909
8336
  "button",
7910
8337
  {
7911
8338
  onClick: onBack,
7912
8339
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
7913
8340
  title: "Back",
7914
- children: /* @__PURE__ */ jsx29(ArrowLeft8, { className: "h-4 w-4" })
8341
+ children: /* @__PURE__ */ jsx30(ArrowLeft8, { className: "h-4 w-4" })
7915
8342
  }
7916
8343
  ),
7917
- /* @__PURE__ */ jsxs20("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7918
- /* @__PURE__ */ jsx29(QrCode, { className: "h-5 w-5" }),
7919
- /* @__PURE__ */ jsx29("span", { children: "Receive LUMIA" })
8344
+ /* @__PURE__ */ jsxs21("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8345
+ /* @__PURE__ */ jsx30(QrCode, { className: "h-5 w-5" }),
8346
+ /* @__PURE__ */ jsx30("span", { children: "Receive LUMIA" })
7920
8347
  ] })
7921
8348
  ] }) }),
7922
- /* @__PURE__ */ jsxs20("div", { className: "p-5 space-y-4", children: [
7923
- qrCodeUrl && /* @__PURE__ */ jsx29("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx29("div", { className: `${isDark ? "bg-white" : "bg-white"} p-4 rounded-xl border ${theme.divider}`, children: /* @__PURE__ */ jsx29("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
7924
- /* @__PURE__ */ jsx29("div", { className: `${isDark ? "bg-blue-900/30 border-blue-600" : "bg-blue-50 border-blue-200"} rounded-lg p-3`, children: /* @__PURE__ */ jsx29("div", { className: `flex items-center gap-2 ${isDark ? "text-blue-300" : "text-blue-700"} text-sm`, children: /* @__PURE__ */ jsxs20("div", { className: "flex-1", children: [
7925
- /* @__PURE__ */ jsx29("p", { className: "font-medium", children: "Network: Lumia Beam" }),
7926
- /* @__PURE__ */ jsx29("p", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} mt-0.5`, children: "Ensure sender is on the same network" })
8349
+ /* @__PURE__ */ jsxs21("div", { className: "p-5 space-y-4", children: [
8350
+ qrCodeUrl && /* @__PURE__ */ jsx30("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx30("div", { className: `${isDark ? "bg-white" : "bg-white"} p-4 rounded-xl border ${theme.divider}`, children: /* @__PURE__ */ jsx30("img", { src: qrCodeUrl, alt: "Wallet QR Code", className: "w-48 h-48" }) }) }),
8351
+ /* @__PURE__ */ jsx30("div", { className: `${isDark ? "bg-blue-900/30 border-blue-600" : "bg-blue-50 border-blue-200"} rounded-lg p-3`, children: /* @__PURE__ */ jsx30("div", { className: `flex items-center gap-2 ${isDark ? "text-blue-300" : "text-blue-700"} text-sm`, children: /* @__PURE__ */ jsxs21("div", { className: "flex-1", children: [
8352
+ /* @__PURE__ */ jsx30("p", { className: "font-medium", children: "Network: Lumia Beam" }),
8353
+ /* @__PURE__ */ jsx30("p", { className: `text-xs ${isDark ? "text-blue-400" : "text-blue-600"} mt-0.5`, children: "Ensure sender is on the same network" })
7927
8354
  ] }) }) }),
7928
- /* @__PURE__ */ jsxs20("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
7929
- /* @__PURE__ */ jsx29("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Your Wallet Address" }),
7930
- /* @__PURE__ */ jsx29("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx29("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 }) }),
7931
- /* @__PURE__ */ jsx29(
8355
+ /* @__PURE__ */ jsxs21("div", { className: `${isDark ? "bg-gray-800" : "bg-gray-50"} rounded-lg p-4`, children: [
8356
+ /* @__PURE__ */ jsx30("label", { className: `block text-sm font-medium ${theme.bodyText} mb-2`, children: "Your Wallet Address" }),
8357
+ /* @__PURE__ */ jsx30("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx30("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 }) }),
8358
+ /* @__PURE__ */ jsx30(
7932
8359
  Button,
7933
8360
  {
7934
8361
  onClick: handleCopy,
7935
8362
  className: "w-full mt-3",
7936
8363
  size: "lg",
7937
- children: copied ? /* @__PURE__ */ jsxs20(Fragment6, { children: [
7938
- /* @__PURE__ */ jsx29(CheckCircle27, { className: "h-4 w-4" }),
7939
- /* @__PURE__ */ jsx29("span", { children: "Copied!" })
7940
- ] }) : /* @__PURE__ */ jsxs20(Fragment6, { children: [
7941
- /* @__PURE__ */ jsx29(Copy4, { className: "h-4 w-4" }),
7942
- /* @__PURE__ */ jsx29("span", { children: "Copy Address" })
8364
+ children: copied ? /* @__PURE__ */ jsxs21(Fragment7, { children: [
8365
+ /* @__PURE__ */ jsx30(CheckCircle28, { className: "h-4 w-4" }),
8366
+ /* @__PURE__ */ jsx30("span", { children: "Copied!" })
8367
+ ] }) : /* @__PURE__ */ jsxs21(Fragment7, { children: [
8368
+ /* @__PURE__ */ jsx30(Copy4, { className: "h-4 w-4" }),
8369
+ /* @__PURE__ */ jsx30("span", { children: "Copy Address" })
7943
8370
  ] })
7944
8371
  }
7945
8372
  )
7946
8373
  ] }),
7947
- /* @__PURE__ */ jsxs20("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
7948
- /* @__PURE__ */ jsx29("p", { children: "Share this address to receive LUMIA tokens." }),
7949
- /* @__PURE__ */ jsx29("p", { className: "mt-1", children: "Only send LUMIA tokens to this address on Lumia Beam network." })
8374
+ /* @__PURE__ */ jsxs21("div", { className: `text-center text-sm ${theme.mutedText}`, children: [
8375
+ /* @__PURE__ */ jsx30("p", { children: "Share this address to receive LUMIA tokens." }),
8376
+ /* @__PURE__ */ jsx30("p", { className: "mt-1", children: "Only send LUMIA tokens to this address on Lumia Beam network." })
7950
8377
  ] })
7951
8378
  ] })
7952
8379
  ]
@@ -7956,11 +8383,11 @@ var ReceiveModal = ({
7956
8383
 
7957
8384
  // src/internal/components/BuyModal.tsx
7958
8385
  import { CreditCard, ArrowLeft as ArrowLeft9 } from "lucide-react";
7959
- import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
8386
+ import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
7960
8387
  var BuyModal = ({ open, onOpenChange, onBack }) => {
7961
8388
  const { config } = useLumiaPassportConfig();
7962
8389
  const { isDark, classes: theme } = useTheme(config.ui.theme);
7963
- return /* @__PURE__ */ jsx30(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs21(
8390
+ return /* @__PURE__ */ jsx31(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs22(
7964
8391
  DialogContent,
7965
8392
  {
7966
8393
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -7972,26 +8399,26 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
7972
8399
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
7973
8400
  },
7974
8401
  children: [
7975
- /* @__PURE__ */ jsx30(VisuallyHidden, { children: /* @__PURE__ */ jsx30(DialogTitle, { children: "Buy Crypto" }) }),
7976
- /* @__PURE__ */ jsx30(DialogDescription, { className: "sr-only", children: "On-ramp placeholder" }),
7977
- /* @__PURE__ */ jsx30("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
7978
- onBack && /* @__PURE__ */ jsx30(
8402
+ /* @__PURE__ */ jsx31(VisuallyHidden, { children: /* @__PURE__ */ jsx31(DialogTitle, { children: "Buy Crypto" }) }),
8403
+ /* @__PURE__ */ jsx31(DialogDescription, { className: "sr-only", children: "On-ramp placeholder" }),
8404
+ /* @__PURE__ */ jsx31("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
8405
+ onBack && /* @__PURE__ */ jsx31(
7979
8406
  "button",
7980
8407
  {
7981
8408
  onClick: onBack,
7982
8409
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
7983
8410
  title: "Back",
7984
- children: /* @__PURE__ */ jsx30(ArrowLeft9, { className: "h-4 w-4" })
8411
+ children: /* @__PURE__ */ jsx31(ArrowLeft9, { className: "h-4 w-4" })
7985
8412
  }
7986
8413
  ),
7987
- /* @__PURE__ */ jsxs21("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
7988
- /* @__PURE__ */ jsx30(CreditCard, { className: "h-5 w-5" }),
7989
- /* @__PURE__ */ jsx30("span", { children: "Buy" })
8414
+ /* @__PURE__ */ jsxs22("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8415
+ /* @__PURE__ */ jsx31(CreditCard, { className: "h-5 w-5" }),
8416
+ /* @__PURE__ */ jsx31("span", { children: "Buy" })
7990
8417
  ] })
7991
8418
  ] }) }),
7992
- /* @__PURE__ */ jsxs21("div", { className: "p-5", children: [
7993
- /* @__PURE__ */ jsx30("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx30("div", { className: `text-sm ${theme.mutedText}`, children: "On-ramp coming soon\u2026" }) }),
7994
- /* @__PURE__ */ jsx30("div", { className: "pt-4", children: /* @__PURE__ */ jsx30(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
8419
+ /* @__PURE__ */ jsxs22("div", { className: "p-5", children: [
8420
+ /* @__PURE__ */ jsx31("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx31("div", { className: `text-sm ${theme.mutedText}`, children: "On-ramp coming soon\u2026" }) }),
8421
+ /* @__PURE__ */ jsx31("div", { className: "pt-4", children: /* @__PURE__ */ jsx31(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
7995
8422
  ] })
7996
8423
  ]
7997
8424
  }
@@ -8000,13 +8427,13 @@ var BuyModal = ({ open, onOpenChange, onBack }) => {
8000
8427
 
8001
8428
  // src/internal/components/KycModal.tsx
8002
8429
  import { ShieldCheck, ArrowLeft as ArrowLeft10 } from "lucide-react";
8003
- import { jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
8430
+ import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
8004
8431
  var KycModal = ({ open, onOpenChange, onBack }) => {
8005
8432
  const { config } = useLumiaPassportConfig();
8006
8433
  const { isDark, classes: theme } = useTheme(config.ui.theme);
8007
8434
  const provider = config.kyc?.provider;
8008
8435
  const options = config.kyc?.options || {};
8009
- return /* @__PURE__ */ jsx31(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs22(
8436
+ return /* @__PURE__ */ jsx32(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs23(
8010
8437
  DialogContent,
8011
8438
  {
8012
8439
  className: `lumia-scope p-0 border-0 ${theme.modalBg} overflow-hidden gap-0 ${isDark ? "lumia-dark" : "lumia-light"}`,
@@ -8018,32 +8445,32 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
8018
8445
  fontFamily: config.ui.fonts?.base || "system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"
8019
8446
  },
8020
8447
  children: [
8021
- /* @__PURE__ */ jsx31(VisuallyHidden, { children: /* @__PURE__ */ jsx31(DialogTitle, { children: "KYC" }) }),
8022
- /* @__PURE__ */ jsx31(DialogDescription, { className: "sr-only", children: "KYC placeholder" }),
8023
- /* @__PURE__ */ jsx31("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-2", children: [
8024
- onBack && /* @__PURE__ */ jsx31(
8448
+ /* @__PURE__ */ jsx32(VisuallyHidden, { children: /* @__PURE__ */ jsx32(DialogTitle, { children: "KYC" }) }),
8449
+ /* @__PURE__ */ jsx32(DialogDescription, { className: "sr-only", children: "KYC placeholder" }),
8450
+ /* @__PURE__ */ jsx32("div", { className: `p-5 border-b ${theme.divider}`, children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
8451
+ onBack && /* @__PURE__ */ jsx32(
8025
8452
  "button",
8026
8453
  {
8027
8454
  onClick: onBack,
8028
8455
  className: `${theme.iconColor} hover:${isDark ? "text-gray-200" : "text-gray-700"} p-1 mr-1`,
8029
8456
  title: "Back",
8030
- children: /* @__PURE__ */ jsx31(ArrowLeft10, { className: "h-4 w-4" })
8457
+ children: /* @__PURE__ */ jsx32(ArrowLeft10, { className: "h-4 w-4" })
8031
8458
  }
8032
8459
  ),
8033
- /* @__PURE__ */ jsxs22("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8034
- /* @__PURE__ */ jsx31(ShieldCheck, { className: "h-5 w-5" }),
8035
- /* @__PURE__ */ jsx31("span", { children: "KYC" })
8460
+ /* @__PURE__ */ jsxs23("div", { className: `flex items-center gap-2 ${theme.titleText} font-semibold`, children: [
8461
+ /* @__PURE__ */ jsx32(ShieldCheck, { className: "h-5 w-5" }),
8462
+ /* @__PURE__ */ jsx32("span", { children: "KYC" })
8036
8463
  ] })
8037
8464
  ] }) }),
8038
- /* @__PURE__ */ jsxs22("div", { className: "p-5", children: [
8039
- provider ? /* @__PURE__ */ jsxs22("div", { className: `rounded-xl p-4 ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: [
8040
- /* @__PURE__ */ jsxs22("div", { className: `text-sm ${theme.titleText} mb-2`, children: [
8465
+ /* @__PURE__ */ jsxs23("div", { className: "p-5", children: [
8466
+ provider ? /* @__PURE__ */ jsxs23("div", { className: `rounded-xl p-4 ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: [
8467
+ /* @__PURE__ */ jsxs23("div", { className: `text-sm ${theme.titleText} mb-2`, children: [
8041
8468
  "KYC provider: ",
8042
- /* @__PURE__ */ jsx31("span", { className: "font-medium", children: provider })
8469
+ /* @__PURE__ */ jsx32("span", { className: "font-medium", children: provider })
8043
8470
  ] }),
8044
- Object.keys(options).length > 0 ? /* @__PURE__ */ jsx31("div", { className: `text-xs ${theme.mutedText} break-words whitespace-pre-wrap`, children: JSON.stringify(options, null, 2) }) : /* @__PURE__ */ jsx31("div", { className: `text-sm ${theme.mutedText}`, children: "No provider options configured." })
8045
- ] }) : /* @__PURE__ */ jsx31("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx31("div", { className: `text-sm ${theme.mutedText}`, children: "KYC verification coming soon\u2026" }) }),
8046
- /* @__PURE__ */ jsx31("div", { className: "pt-4", children: /* @__PURE__ */ jsx31(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
8471
+ Object.keys(options).length > 0 ? /* @__PURE__ */ jsx32("div", { className: `text-xs ${theme.mutedText} break-words whitespace-pre-wrap`, children: JSON.stringify(options, null, 2) }) : /* @__PURE__ */ jsx32("div", { className: `text-sm ${theme.mutedText}`, children: "No provider options configured." })
8472
+ ] }) : /* @__PURE__ */ jsx32("div", { className: `rounded-xl p-4 text-center ${isDark ? "bg-gray-800" : "bg-gray-50"}`, children: /* @__PURE__ */ jsx32("div", { className: `text-sm ${theme.mutedText}`, children: "KYC verification coming soon\u2026" }) }),
8473
+ /* @__PURE__ */ jsx32("div", { className: "pt-4", children: /* @__PURE__ */ jsx32(Button, { className: "w-full", onClick: () => onOpenChange(false), size: "lg", children: "Close" }) })
8047
8474
  ] })
8048
8475
  ]
8049
8476
  }
@@ -8052,20 +8479,20 @@ var KycModal = ({ open, onOpenChange, onBack }) => {
8052
8479
 
8053
8480
  // src/components/ConnectWalletButton.tsx
8054
8481
  init_auth();
8055
- import { Cloud as Cloud3, Laptop as Laptop2, Shield as Shield4, Copy as Copy5, ArrowUp, ArrowDown, Plus as Plus2, Activity as Activity2, Gem as Gem2, CreditCard as CreditCard2, Lock as Lock2, ArrowUpRight as ArrowUpRight2, AlertTriangle as AlertTriangle4, ShieldCheck as ShieldCheck2 } from "lucide-react";
8482
+ import { Cloud as Cloud4, Laptop as Laptop2, Shield as Shield5, Copy as Copy5, ArrowUp, ArrowDown, Plus as Plus2, Activity as Activity2, Gem as Gem2, CreditCard as CreditCard2, Lock as Lock3, ArrowUpRight as ArrowUpRight2, AlertTriangle as AlertTriangle4, ShieldCheck as ShieldCheck2 } from "lucide-react";
8056
8483
  init_base();
8057
8484
 
8058
8485
  // src/modules/linkedProfiles.ts
8059
8486
  init_common();
8060
8487
  init_types();
8061
8488
  init_auth();
8062
- import * as React26 from "react";
8489
+ import * as React27 from "react";
8063
8490
  function useLumiaPassportLinkedProfiles() {
8064
- const [profiles, setProfiles] = React26.useState([]);
8065
- const [avatar, setAvatar] = React26.useState(null);
8066
- const [isLoading, setIsLoading] = React26.useState(false);
8067
- const [error, setError] = React26.useState(null);
8068
- const load = React26.useCallback(async () => {
8491
+ const [profiles, setProfiles] = React27.useState([]);
8492
+ const [avatar, setAvatar] = React27.useState(null);
8493
+ const [isLoading, setIsLoading] = React27.useState(false);
8494
+ const [error, setError] = React27.useState(null);
8495
+ const load = React27.useCallback(async () => {
8069
8496
  setIsLoading(true);
8070
8497
  setError(null);
8071
8498
  try {
@@ -8091,14 +8518,14 @@ function useLumiaPassportLinkedProfiles() {
8091
8518
  setIsLoading(false);
8092
8519
  }
8093
8520
  }, []);
8094
- React26.useEffect(() => {
8521
+ React27.useEffect(() => {
8095
8522
  load();
8096
8523
  }, [load]);
8097
8524
  return { profiles, avatar, isLoading, error, refresh: load };
8098
8525
  }
8099
8526
 
8100
8527
  // src/components/ConnectWalletButton.tsx
8101
- import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
8528
+ import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
8102
8529
  var ConnectWalletButton = ({
8103
8530
  className,
8104
8531
  label = "Connect Wallet",
@@ -8110,7 +8537,7 @@ var ConnectWalletButton = ({
8110
8537
  }) => {
8111
8538
  console.log("[ConnectWalletButton] Component rendering");
8112
8539
  const { config, callbacks: contextCallbacks } = useLumiaPassportConfig();
8113
- const callbacks = React27.useMemo(() => ({
8540
+ const callbacks = React28.useMemo(() => ({
8114
8541
  onLumiaPassportConnecting: buttonCallbacks?.onLumiaPassportConnecting ?? contextCallbacks?.onLumiaPassportConnecting,
8115
8542
  onLumiaPassportConnect: buttonCallbacks?.onLumiaPassportConnect ?? contextCallbacks?.onLumiaPassportConnect,
8116
8543
  onLumiaPassportAccount: buttonCallbacks?.onLumiaPassportAccount ?? contextCallbacks?.onLumiaPassportAccount,
@@ -8128,14 +8555,14 @@ var ConnectWalletButton = ({
8128
8555
  isAuthenticated: jwtTokenManager2.isAuthenticated?.(),
8129
8556
  hasTokens: !!jwtTokenManager2.getTokens()
8130
8557
  });
8131
- React27.useEffect(() => {
8558
+ React28.useEffect(() => {
8132
8559
  if (!profilesLoading && profiles.length > 0) {
8133
8560
  console.log("[ConnectWalletButton] Profiles loaded:", profiles.map((p) => ({ provider: p.provider, externalId: p.externalId })));
8134
8561
  const hasEmail = profiles.some((p) => p.provider?.toLowerCase() === "email");
8135
8562
  console.log("[ConnectWalletButton] Has email provider:", hasEmail);
8136
8563
  }
8137
8564
  }, [profiles, profilesLoading]);
8138
- React27.useEffect(() => {
8565
+ React28.useEffect(() => {
8139
8566
  console.log("[ConnectWalletButton] Theme state:", {
8140
8567
  configTheme: config.ui.theme,
8141
8568
  resolvedTheme,
@@ -8143,20 +8570,21 @@ var ConnectWalletButton = ({
8143
8570
  bodyClasses: document.body.className
8144
8571
  });
8145
8572
  }, [config.ui.theme, resolvedTheme, isDark]);
8146
- const [isAuthModalOpen, setIsAuthModalOpen] = React27.useState(false);
8147
- const [recoveryUserId, setRecoveryUserId] = React27.useState(null);
8148
- const tssManagerRef = React27.useRef(null);
8149
- const [isWalletMenuOpen, setIsWalletMenuOpen] = React27.useState(false);
8150
- const [copied, setCopied] = React27.useState(false);
8151
- const [isManageWalletOpen, setIsManageWalletOpen] = React27.useState(false);
8152
- const [isSecurityOpen, setIsSecurityOpen] = React27.useState(false);
8153
- const [isTransactionsOpen, setIsTransactionsOpen] = React27.useState(false);
8154
- const [isViewAssetsOpen, setIsViewAssetsOpen] = React27.useState(false);
8155
- const [isSendOpen, setIsSendOpen] = React27.useState(false);
8156
- const [isReceiveOpen, setIsReceiveOpen] = React27.useState(false);
8157
- const [isBuyOpen, setIsBuyOpen] = React27.useState(false);
8158
- const [isKycOpen, setIsKycOpen] = React27.useState(false);
8159
- React27.useEffect(() => {
8573
+ const [isAuthModalOpen, setIsAuthModalOpen] = React28.useState(false);
8574
+ const [recoveryUserId, setRecoveryUserId] = React28.useState(null);
8575
+ const tssManagerRef = React28.useRef(null);
8576
+ const [isWalletMenuOpen, setIsWalletMenuOpen] = React28.useState(false);
8577
+ const [copied, setCopied] = React28.useState(false);
8578
+ const [isManageWalletOpen, setIsManageWalletOpen] = React28.useState(false);
8579
+ const [isSecurityOpen, setIsSecurityOpen] = React28.useState(false);
8580
+ const [isBackupOpen, setIsBackupOpen] = React28.useState(false);
8581
+ const [isTransactionsOpen, setIsTransactionsOpen] = React28.useState(false);
8582
+ const [isViewAssetsOpen, setIsViewAssetsOpen] = React28.useState(false);
8583
+ const [isSendOpen, setIsSendOpen] = React28.useState(false);
8584
+ const [isReceiveOpen, setIsReceiveOpen] = React28.useState(false);
8585
+ const [isBuyOpen, setIsBuyOpen] = React28.useState(false);
8586
+ const [isKycOpen, setIsKycOpen] = React28.useState(false);
8587
+ React28.useEffect(() => {
8160
8588
  try {
8161
8589
  const shouldAutoOpen = authOpen ?? config?.ui?.authOpen;
8162
8590
  if (!address && !session && shouldAutoOpen) {
@@ -8183,25 +8611,25 @@ var ConnectWalletButton = ({
8183
8611
  refetchOnWindowFocus: true
8184
8612
  }
8185
8613
  });
8186
- const formatAddress = React27.useCallback((addr) => {
8614
+ const formatAddress = React28.useCallback((addr) => {
8187
8615
  if (!addr) return "";
8188
8616
  return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
8189
8617
  }, []);
8190
- const avatar = React27.useMemo(() => jwtTokenManager2.getAvatar(), [isAuthModalOpen, status]);
8191
- const displayName = React27.useMemo(() => jwtTokenManager2.getDisplayName(), [isAuthModalOpen, status]);
8192
- const formatBalance = React27.useCallback(() => {
8618
+ const avatar = React28.useMemo(() => jwtTokenManager2.getAvatar(), [isAuthModalOpen, status]);
8619
+ const displayName = React28.useMemo(() => jwtTokenManager2.getDisplayName(), [isAuthModalOpen, status]);
8620
+ const formatBalance = React28.useCallback(() => {
8193
8621
  if (!balance || balanceLoading) return "0.0000";
8194
8622
  return parseFloat(balance.formatted).toFixed(4);
8195
8623
  }, [balance, balanceLoading]);
8196
- const [hasServerVault, setHasServerVault] = React27.useState(false);
8197
- const indicators = React27.useMemo(() => {
8624
+ const [hasServerVault, setHasServerVault] = React28.useState(false);
8625
+ const indicators = React28.useMemo(() => {
8198
8626
  const userId = jwtTokenManager2.getUserId();
8199
8627
  if (!userId) return { server: false, local: false, backup: false };
8200
8628
  const server = jwtTokenManager2.getHasKeyshare() ?? false;
8201
8629
  const local = !!address;
8202
8630
  return { server, local, backup: hasServerVault };
8203
8631
  }, [session, address, hasServerVault]);
8204
- const handleAuthModalSuccess = React27.useCallback(async () => {
8632
+ const handleAuthModalSuccess = React28.useCallback(async () => {
8205
8633
  await new Promise((r) => setTimeout(r, 100));
8206
8634
  const userId = jwtTokenManager2.getUserId();
8207
8635
  const isAuthenticated = jwtTokenManager2.isAuthenticated();
@@ -8253,7 +8681,7 @@ var ConnectWalletButton = ({
8253
8681
  }
8254
8682
  }
8255
8683
  }, [onConnected, setAddress, setError, setSession, setStatus]);
8256
- const handleDisconnect = React27.useCallback(async () => {
8684
+ const handleDisconnect = React28.useCallback(async () => {
8257
8685
  const prevAddress = address;
8258
8686
  let userId = null;
8259
8687
  try {
@@ -8273,7 +8701,7 @@ var ConnectWalletButton = ({
8273
8701
  } catch {
8274
8702
  }
8275
8703
  }, [setAddress, setError, setSession, setStatus]);
8276
- React27.useEffect(() => {
8704
+ React28.useEffect(() => {
8277
8705
  if (address) {
8278
8706
  (async () => {
8279
8707
  try {
@@ -8290,7 +8718,7 @@ var ConnectWalletButton = ({
8290
8718
  setHasServerVault(false);
8291
8719
  }
8292
8720
  }, [address]);
8293
- React27.useEffect(() => {
8721
+ React28.useEffect(() => {
8294
8722
  console.log("[UI-KIT][AutoConnect] useEffect mounted");
8295
8723
  let cancelled = false;
8296
8724
  const tryAutoConnect = async (attempt) => {
@@ -8395,13 +8823,13 @@ var ConnectWalletButton = ({
8395
8823
  cancelled = true;
8396
8824
  };
8397
8825
  }, []);
8398
- React27.useEffect(() => {
8826
+ React28.useEffect(() => {
8399
8827
  if (address && refetchBalance) {
8400
8828
  refetchBalance();
8401
8829
  }
8402
8830
  }, [address]);
8403
- return /* @__PURE__ */ jsxs23("div", { className: [className, "lumia-scope"].filter(Boolean).join(" "), children: [
8404
- /* @__PURE__ */ jsx32("div", { className: "inline-flex items-center gap-2", children: !address ? /* @__PURE__ */ jsx32("div", { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ jsx32(
8831
+ return /* @__PURE__ */ jsxs24("div", { className: [className, "lumia-scope"].filter(Boolean).join(" "), children: [
8832
+ /* @__PURE__ */ jsx33("div", { className: "inline-flex items-center gap-2", children: !address ? /* @__PURE__ */ jsx33("div", { style: { display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ jsx33(
8405
8833
  "button",
8406
8834
  {
8407
8835
  onClick: () => {
@@ -8438,56 +8866,56 @@ var ConnectWalletButton = ({
8438
8866
  },
8439
8867
  children: label || "Connect"
8440
8868
  }
8441
- ) }) : /* @__PURE__ */ jsx32(
8869
+ ) }) : /* @__PURE__ */ jsx33(
8442
8870
  "div",
8443
8871
  {
8444
8872
  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"}`,
8445
8873
  onClick: () => setIsWalletMenuOpen(true),
8446
- children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-3", children: [
8447
- /* @__PURE__ */ jsx32("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 ? (
8874
+ children: /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-3", children: [
8875
+ /* @__PURE__ */ jsx33("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 ? (
8448
8876
  // eslint-disable-next-line @next/next/no-img-element
8449
- /* @__PURE__ */ jsx32("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8450
- ) : /* @__PURE__ */ jsx32("span", { className: "text-white font-bold text-sm", children: "LP" }) }),
8451
- /* @__PURE__ */ jsxs23("div", { className: "text-left flex-1 min-w-0", children: [
8452
- /* @__PURE__ */ jsx32("div", { className: `font-semibold text-base truncate ${theme.titleText}`, children: mode === "compact" && displayName ? displayName : formatAddress(address) }),
8453
- /* @__PURE__ */ jsxs23("div", { className: `text-sm ${theme.mutedText}`, children: [
8877
+ /* @__PURE__ */ jsx33("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8878
+ ) : /* @__PURE__ */ jsx33("span", { className: "text-white font-bold text-sm", children: "LP" }) }),
8879
+ /* @__PURE__ */ jsxs24("div", { className: "text-left flex-1 min-w-0", children: [
8880
+ /* @__PURE__ */ jsx33("div", { className: `font-semibold text-base truncate ${theme.titleText}`, children: mode === "compact" && displayName ? displayName : formatAddress(address) }),
8881
+ /* @__PURE__ */ jsxs24("div", { className: `text-sm ${theme.mutedText}`, children: [
8454
8882
  formatBalance(),
8455
8883
  " LUMIA"
8456
8884
  ] })
8457
8885
  ] }),
8458
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-1", children: [
8459
- /* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
8460
- /* @__PURE__ */ jsx32(
8461
- Cloud3,
8886
+ /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-1", children: [
8887
+ /* @__PURE__ */ jsxs24("div", { className: "group relative", children: [
8888
+ /* @__PURE__ */ jsx33(
8889
+ Cloud4,
8462
8890
  {
8463
8891
  className: `w-3 h-3 ${indicators.server ? "text-green-500" : "text-orange-400"}`
8464
8892
  }
8465
8893
  ),
8466
- /* @__PURE__ */ jsxs23("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: [
8894
+ /* @__PURE__ */ jsxs24("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: [
8467
8895
  "Server Keyshare: ",
8468
8896
  indicators.server ? "Available" : "Missing"
8469
8897
  ] })
8470
8898
  ] }),
8471
- /* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
8472
- /* @__PURE__ */ jsx32(
8899
+ /* @__PURE__ */ jsxs24("div", { className: "group relative", children: [
8900
+ /* @__PURE__ */ jsx33(
8473
8901
  Laptop2,
8474
8902
  {
8475
8903
  className: `w-3 h-3 ${indicators.local ? "text-green-500" : "text-orange-400"}`
8476
8904
  }
8477
8905
  ),
8478
- /* @__PURE__ */ jsxs23("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: [
8906
+ /* @__PURE__ */ jsxs24("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: [
8479
8907
  "Local Keyshare: ",
8480
8908
  indicators.local ? "Available" : "Missing"
8481
8909
  ] })
8482
8910
  ] }),
8483
- /* @__PURE__ */ jsxs23("div", { className: "group relative", children: [
8484
- /* @__PURE__ */ jsx32(
8485
- Shield4,
8911
+ /* @__PURE__ */ jsxs24("div", { className: "group relative", children: [
8912
+ /* @__PURE__ */ jsx33(
8913
+ Shield5,
8486
8914
  {
8487
8915
  className: `w-3 h-3 ${indicators.backup ? "text-green-500" : "text-orange-400"}`
8488
8916
  }
8489
8917
  ),
8490
- /* @__PURE__ */ jsxs23("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: [
8918
+ /* @__PURE__ */ jsxs24("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: [
8491
8919
  "Vault Backup: ",
8492
8920
  indicators.backup ? "Available" : "Not Found"
8493
8921
  ] })
@@ -8496,59 +8924,59 @@ var ConnectWalletButton = ({
8496
8924
  ] })
8497
8925
  }
8498
8926
  ) }),
8499
- isWalletMenuOpen && address && /* @__PURE__ */ jsx32("div", { className: "fixed inset-0 z-[60]", children: /* @__PURE__ */ jsx32(Dialog, { open: isWalletMenuOpen, onOpenChange: setIsWalletMenuOpen, children: /* @__PURE__ */ jsxs23(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: [
8500
- /* @__PURE__ */ jsx32(VisuallyHidden, { children: /* @__PURE__ */ jsx32(DialogTitle, { children: "Wallet Menu" }) }),
8501
- /* @__PURE__ */ jsx32(DialogDescription, { className: "sr-only", children: "Smart Account wallet actions and status" }),
8502
- /* @__PURE__ */ jsx32("div", { className: `p-4 border-b ${theme.divider}`, children: /* @__PURE__ */ jsx32("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-4", children: [
8503
- /* @__PURE__ */ jsx32("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 ? (
8927
+ isWalletMenuOpen && address && /* @__PURE__ */ jsx33("div", { className: "fixed inset-0 z-[60]", children: /* @__PURE__ */ jsx33(Dialog, { open: isWalletMenuOpen, onOpenChange: setIsWalletMenuOpen, children: /* @__PURE__ */ jsxs24(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: [
8928
+ /* @__PURE__ */ jsx33(VisuallyHidden, { children: /* @__PURE__ */ jsx33(DialogTitle, { children: "Wallet Menu" }) }),
8929
+ /* @__PURE__ */ jsx33(DialogDescription, { className: "sr-only", children: "Smart Account wallet actions and status" }),
8930
+ /* @__PURE__ */ jsx33("div", { className: `p-4 border-b ${theme.divider}`, children: /* @__PURE__ */ jsx33("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-4", children: [
8931
+ /* @__PURE__ */ jsx33("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 ? (
8504
8932
  // eslint-disable-next-line @next/next/no-img-element
8505
- /* @__PURE__ */ jsx32("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8506
- ) : /* @__PURE__ */ jsx32("span", { className: "text-white font-bold text-lg", children: "L" }) }),
8507
- /* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
8508
- /* @__PURE__ */ jsx32("div", { className: `font-medium text-lg ${theme.titleText}`, children: displayName || "Smart Account" }),
8509
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-2", children: [
8510
- /* @__PURE__ */ jsx32("div", { className: `text-sm ${theme.mutedText}`, children: formatAddress(address) }),
8511
- /* @__PURE__ */ jsx32("button", { onClick: async () => {
8933
+ /* @__PURE__ */ jsx33("img", { src: avatar, alt: "User avatar", className: "w-full h-full object-cover" })
8934
+ ) : /* @__PURE__ */ jsx33("span", { className: "text-white font-bold text-lg", children: "L" }) }),
8935
+ /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-0", children: [
8936
+ /* @__PURE__ */ jsx33("div", { className: `font-medium text-lg ${theme.titleText}`, children: displayName || "Smart Account" }),
8937
+ /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-2", children: [
8938
+ /* @__PURE__ */ jsx33("div", { className: `text-sm ${theme.mutedText}`, children: formatAddress(address) }),
8939
+ /* @__PURE__ */ jsx33("button", { onClick: async () => {
8512
8940
  try {
8513
8941
  await navigator.clipboard.writeText(address);
8514
8942
  setCopied(true);
8515
8943
  setTimeout(() => setCopied(false), 1500);
8516
8944
  } catch {
8517
8945
  }
8518
- }, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ jsx32("span", { className: "text-green-500 text-sm", children: "\u2713" }) : /* @__PURE__ */ jsx32(Copy5, { className: "w-4 h-4" }) })
8946
+ }, title: "Copy address", className: `${theme.iconColor} hover:${theme.titleText} p-1`, children: copied ? /* @__PURE__ */ jsx33("span", { className: "text-green-500 text-sm", children: "\u2713" }) : /* @__PURE__ */ jsx33(Copy5, { className: "w-4 h-4" }) })
8519
8947
  ] })
8520
8948
  ] })
8521
8949
  ] }) }) }),
8522
- /* @__PURE__ */ jsxs23("div", { className: "p-4", children: [
8523
- /* @__PURE__ */ jsxs23("div", { className: "grid grid-cols-3 gap-2 mb-4", children: [
8524
- /* @__PURE__ */ jsxs23("button", { onClick: () => {
8950
+ /* @__PURE__ */ jsxs24("div", { className: "p-4", children: [
8951
+ /* @__PURE__ */ jsxs24("div", { className: "grid grid-cols-3 gap-2 mb-4", children: [
8952
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
8525
8953
  setIsWalletMenuOpen(false);
8526
8954
  setIsSendOpen(true);
8527
8955
  }, 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: [
8528
- /* @__PURE__ */ jsx32(ArrowUp, { className: "w-5 h-5" }),
8529
- /* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Send" })
8956
+ /* @__PURE__ */ jsx33(ArrowUp, { className: "w-5 h-5" }),
8957
+ /* @__PURE__ */ jsx33("span", { className: "text-sm font-medium", children: "Send" })
8530
8958
  ] }),
8531
- /* @__PURE__ */ jsxs23("button", { onClick: () => {
8959
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
8532
8960
  setIsWalletMenuOpen(false);
8533
8961
  setIsReceiveOpen(true);
8534
8962
  }, 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: [
8535
- /* @__PURE__ */ jsx32(ArrowDown, { className: "w-5 h-5" }),
8536
- /* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Receive" })
8963
+ /* @__PURE__ */ jsx33(ArrowDown, { className: "w-5 h-5" }),
8964
+ /* @__PURE__ */ jsx33("span", { className: "text-sm font-medium", children: "Receive" })
8537
8965
  ] }),
8538
- /* @__PURE__ */ jsxs23("button", { onClick: () => {
8966
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
8539
8967
  setIsWalletMenuOpen(false);
8540
8968
  setIsBuyOpen(true);
8541
8969
  }, 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: [
8542
- /* @__PURE__ */ jsx32(Plus2, { className: "w-5 h-5" }),
8543
- /* @__PURE__ */ jsx32("span", { className: "text-sm font-medium", children: "Buy" })
8970
+ /* @__PURE__ */ jsx33(Plus2, { className: "w-5 h-5" }),
8971
+ /* @__PURE__ */ jsx33("span", { className: "text-sm font-medium", children: "Buy" })
8544
8972
  ] })
8545
8973
  ] }),
8546
- config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ jsx32("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__ */ jsxs23("div", { className: "flex items-start space-x-3", children: [
8547
- /* @__PURE__ */ jsx32(AlertTriangle4, { className: `w-5 h-5 ${isDark ? "text-orange-400" : "text-orange-500"} mt-0.5 flex-shrink-0` }),
8548
- /* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
8549
- /* @__PURE__ */ jsx32("div", { className: `text-sm font-medium ${isDark ? "text-orange-300" : "text-orange-700"}`, children: "Backup Not Created" }),
8550
- /* @__PURE__ */ jsx32("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." }),
8551
- /* @__PURE__ */ jsxs23(
8974
+ config.warnings?.backupWarning && !hasServerVault && /* @__PURE__ */ jsx33("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__ */ jsxs24("div", { className: "flex items-start space-x-3", children: [
8975
+ /* @__PURE__ */ jsx33(AlertTriangle4, { className: `w-5 h-5 ${isDark ? "text-orange-400" : "text-orange-500"} mt-0.5 flex-shrink-0` }),
8976
+ /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-0", children: [
8977
+ /* @__PURE__ */ jsx33("div", { className: `text-sm font-medium ${isDark ? "text-orange-300" : "text-orange-700"}`, children: "Backup Not Created" }),
8978
+ /* @__PURE__ */ jsx33("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." }),
8979
+ /* @__PURE__ */ jsxs24(
8552
8980
  "button",
8553
8981
  {
8554
8982
  onClick: () => {
@@ -8557,19 +8985,19 @@ var ConnectWalletButton = ({
8557
8985
  },
8558
8986
  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"}`,
8559
8987
  children: [
8560
- /* @__PURE__ */ jsx32(ShieldCheck2, { className: "w-3 h-3 inline mr-1" }),
8988
+ /* @__PURE__ */ jsx33(ShieldCheck2, { className: "w-3 h-3 inline mr-1" }),
8561
8989
  "Create Backup"
8562
8990
  ]
8563
8991
  }
8564
8992
  )
8565
8993
  ] })
8566
8994
  ] }) }),
8567
- config.warnings?.emailNotConnectedWarning && !profilesLoading && !profiles.some((p) => p.provider?.toLowerCase() === "email") && /* @__PURE__ */ jsx32("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__ */ jsxs23("div", { className: "flex items-start space-x-3", children: [
8568
- /* @__PURE__ */ jsx32(AlertTriangle4, { className: `w-5 h-5 ${isDark ? "text-blue-400" : "text-blue-500"} mt-0.5 flex-shrink-0` }),
8569
- /* @__PURE__ */ jsxs23("div", { className: "flex-1 min-w-0", children: [
8570
- /* @__PURE__ */ jsx32("div", { className: `text-sm font-medium ${isDark ? "text-blue-300" : "text-blue-700"}`, children: "Email Not Connected" }),
8571
- /* @__PURE__ */ jsx32("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." }),
8572
- /* @__PURE__ */ jsxs23(
8995
+ config.warnings?.emailNotConnectedWarning && !profilesLoading && !profiles.some((p) => p.provider?.toLowerCase() === "email") && /* @__PURE__ */ jsx33("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__ */ jsxs24("div", { className: "flex items-start space-x-3", children: [
8996
+ /* @__PURE__ */ jsx33(AlertTriangle4, { className: `w-5 h-5 ${isDark ? "text-blue-400" : "text-blue-500"} mt-0.5 flex-shrink-0` }),
8997
+ /* @__PURE__ */ jsxs24("div", { className: "flex-1 min-w-0", children: [
8998
+ /* @__PURE__ */ jsx33("div", { className: `text-sm font-medium ${isDark ? "text-blue-300" : "text-blue-700"}`, children: "Email Not Connected" }),
8999
+ /* @__PURE__ */ jsx33("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." }),
9000
+ /* @__PURE__ */ jsxs24(
8573
9001
  "button",
8574
9002
  {
8575
9003
  onClick: () => {
@@ -8578,80 +9006,87 @@ var ConnectWalletButton = ({
8578
9006
  },
8579
9007
  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"}`,
8580
9008
  children: [
8581
- /* @__PURE__ */ jsx32(ShieldCheck2, { className: "w-3 h-3 inline mr-1" }),
9009
+ /* @__PURE__ */ jsx33(ShieldCheck2, { className: "w-3 h-3 inline mr-1" }),
8582
9010
  "Connect Email"
8583
9011
  ]
8584
9012
  }
8585
9013
  )
8586
9014
  ] })
8587
9015
  ] }) }),
8588
- /* @__PURE__ */ jsx32(
9016
+ /* @__PURE__ */ jsx33(
8589
9017
  "button",
8590
9018
  {
8591
9019
  onClick: () => address && window.open(`${LUMIA_EXPLORER_URL}/address/${address}`, "_blank"),
8592
9020
  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`,
8593
- children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center justify-between", children: [
8594
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-3", children: [
8595
- /* @__PURE__ */ jsx32("div", { className: "w-8 h-8 rounded-full flex items-center justify-center bg-transparent overflow-hidden", children: lumiaBeam.logoDataUri ? /* @__PURE__ */ jsx32("img", { src: lumiaBeam.logoDataUri, alt: "Chain logo", className: "w-full h-full object-cover" }) : lumiaBeam.logo === "lumia" ? /* @__PURE__ */ jsx32(LumiaLogo, { size: 32 }) : /* @__PURE__ */ jsx32("span", { className: "text-white text-xs font-bold", children: (lumiaBeam.name || "L").charAt(0) }) }),
8596
- /* @__PURE__ */ jsxs23("div", { children: [
8597
- /* @__PURE__ */ jsx32("div", { className: `${theme.titleText} font-medium`, children: lumiaBeam.name }),
8598
- /* @__PURE__ */ jsxs23("div", { className: theme.mutedText + " text-sm", children: [
9021
+ children: /* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between", children: [
9022
+ /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-3", children: [
9023
+ /* @__PURE__ */ jsx33("div", { className: "w-8 h-8 rounded-full flex items-center justify-center bg-transparent overflow-hidden", children: lumiaBeam.logoDataUri ? /* @__PURE__ */ jsx33("img", { src: lumiaBeam.logoDataUri, alt: "Chain logo", className: "w-full h-full object-cover" }) : lumiaBeam.logo === "lumia" ? /* @__PURE__ */ jsx33(LumiaLogo, { size: 32 }) : /* @__PURE__ */ jsx33("span", { className: "text-white text-xs font-bold", children: (lumiaBeam.name || "L").charAt(0) }) }),
9024
+ /* @__PURE__ */ jsxs24("div", { children: [
9025
+ /* @__PURE__ */ jsx33("div", { className: `${theme.titleText} font-medium`, children: lumiaBeam.name }),
9026
+ /* @__PURE__ */ jsxs24("div", { className: theme.mutedText + " text-sm", children: [
8599
9027
  formatBalance(),
8600
9028
  " LUMIA"
8601
9029
  ] })
8602
9030
  ] })
8603
9031
  ] }),
8604
- /* @__PURE__ */ jsx32("div", { className: theme.iconColor, children: /* @__PURE__ */ jsx32(ArrowUpRight2, { className: "w-4 h-4" }) })
9032
+ /* @__PURE__ */ jsx33("div", { className: theme.iconColor, children: /* @__PURE__ */ jsx33(ArrowUpRight2, { className: "w-4 h-4" }) })
8605
9033
  ] })
8606
9034
  }
8607
9035
  ),
8608
- /* @__PURE__ */ jsxs23("div", { className: "space-y-1", children: [
8609
- config.features?.kycNeeded && /* @__PURE__ */ jsxs23("button", { onClick: () => {
9036
+ /* @__PURE__ */ jsxs24("div", { className: "space-y-1", children: [
9037
+ config.features?.kycNeeded && /* @__PURE__ */ jsxs24("button", { onClick: () => {
8610
9038
  setIsWalletMenuOpen(false);
8611
9039
  setIsKycOpen(true);
8612
9040
  }, 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: [
8613
- /* @__PURE__ */ jsx32(ShieldCheck2, { className: `w-5 h-5 ${theme.iconColor}` }),
8614
- /* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "KYC" })
9041
+ /* @__PURE__ */ jsx33(ShieldCheck2, { className: `w-5 h-5 ${theme.iconColor}` }),
9042
+ /* @__PURE__ */ jsx33("span", { className: theme.titleText, children: "KYC" })
8615
9043
  ] }),
8616
- /* @__PURE__ */ jsxs23("button", { onClick: () => {
9044
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
8617
9045
  setIsWalletMenuOpen(false);
8618
9046
  setIsTransactionsOpen(true);
8619
9047
  }, 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: [
8620
- /* @__PURE__ */ jsx32(Activity2, { className: `w-5 h-5 ${theme.iconColor}` }),
8621
- /* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Transactions" })
9048
+ /* @__PURE__ */ jsx33(Activity2, { className: `w-5 h-5 ${theme.iconColor}` }),
9049
+ /* @__PURE__ */ jsx33("span", { className: theme.titleText, children: "Transactions" })
8622
9050
  ] }),
8623
- /* @__PURE__ */ jsxs23("button", { onClick: () => {
9051
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
8624
9052
  setIsWalletMenuOpen(false);
8625
9053
  setIsViewAssetsOpen(true);
8626
9054
  }, 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: [
8627
- /* @__PURE__ */ jsx32(Gem2, { className: `w-5 h-5 ${theme.iconColor}` }),
8628
- /* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "View Assets" })
9055
+ /* @__PURE__ */ jsx33(Gem2, { className: `w-5 h-5 ${theme.iconColor}` }),
9056
+ /* @__PURE__ */ jsx33("span", { className: theme.titleText, children: "View Assets" })
8629
9057
  ] }),
8630
- /* @__PURE__ */ jsxs23("button", { onClick: () => {
9058
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
8631
9059
  setIsWalletMenuOpen(false);
8632
9060
  setIsManageWalletOpen(true);
8633
9061
  }, 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: [
8634
- /* @__PURE__ */ jsx32(CreditCard2, { className: `w-5 h-5 ${theme.iconColor}` }),
8635
- /* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Manage Wallet" })
9062
+ /* @__PURE__ */ jsx33(CreditCard2, { className: `w-5 h-5 ${theme.iconColor}` }),
9063
+ /* @__PURE__ */ jsx33("span", { className: theme.titleText, children: "Manage Wallet" })
8636
9064
  ] }),
8637
- /* @__PURE__ */ jsxs23("button", { onClick: () => {
9065
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
8638
9066
  setIsWalletMenuOpen(false);
8639
9067
  setIsSecurityOpen(true);
8640
9068
  }, 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: [
8641
- /* @__PURE__ */ jsx32(Lock2, { className: `w-5 h-5 ${theme.iconColor}` }),
8642
- /* @__PURE__ */ jsx32("span", { className: theme.titleText, children: "Security" })
9069
+ /* @__PURE__ */ jsx33(Lock3, { className: `w-5 h-5 ${theme.iconColor}` }),
9070
+ /* @__PURE__ */ jsx33("span", { className: theme.titleText, children: "Security" })
8643
9071
  ] }),
8644
- /* @__PURE__ */ jsxs23("button", { onClick: async () => {
9072
+ /* @__PURE__ */ jsxs24("button", { onClick: () => {
9073
+ setIsWalletMenuOpen(false);
9074
+ setIsBackupOpen(true);
9075
+ }, 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: [
9076
+ /* @__PURE__ */ jsx33(Shield5, { className: `w-5 h-5 ${theme.iconColor}` }),
9077
+ /* @__PURE__ */ jsx33("span", { className: theme.titleText, children: "Keyshare Backup" })
9078
+ ] }),
9079
+ /* @__PURE__ */ jsxs24("button", { onClick: async () => {
8645
9080
  await handleDisconnect();
8646
9081
  setIsWalletMenuOpen(false);
8647
9082
  }, 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: [
8648
- /* @__PURE__ */ jsx32(ArrowUpRight2, { className: "w-5 h-5 text-red-600" }),
8649
- /* @__PURE__ */ jsx32("span", { className: "text-red-600", children: "Disconnect Wallet" })
9083
+ /* @__PURE__ */ jsx33(ArrowUpRight2, { className: "w-5 h-5 text-red-600" }),
9084
+ /* @__PURE__ */ jsx33("span", { className: "text-red-600", children: "Disconnect Wallet" })
8650
9085
  ] })
8651
9086
  ] })
8652
9087
  ] })
8653
9088
  ] }) }) }),
8654
- /* @__PURE__ */ jsx32(
9089
+ /* @__PURE__ */ jsx33(
8655
9090
  ManageWallet,
8656
9091
  {
8657
9092
  open: isManageWalletOpen,
@@ -8662,7 +9097,7 @@ var ConnectWalletButton = ({
8662
9097
  }
8663
9098
  }
8664
9099
  ),
8665
- /* @__PURE__ */ jsx32(
9100
+ /* @__PURE__ */ jsx33(
8666
9101
  SecurityModal,
8667
9102
  {
8668
9103
  open: isSecurityOpen,
@@ -8673,7 +9108,23 @@ var ConnectWalletButton = ({
8673
9108
  }
8674
9109
  }
8675
9110
  ),
8676
- /* @__PURE__ */ jsx32(
9111
+ isBackupOpen && session?.mpcUserId && /* @__PURE__ */ jsx33(Dialog, { open: isBackupOpen, onOpenChange: setIsBackupOpen, children: /* @__PURE__ */ jsxs24(DialogContent, { className: "max-w-2xl", children: [
9112
+ /* @__PURE__ */ jsxs24(VisuallyHidden, { children: [
9113
+ /* @__PURE__ */ jsx33(DialogTitle, { children: "Keyshare Backup" }),
9114
+ /* @__PURE__ */ jsx33(DialogDescription, { children: "Create and manage encrypted backups of your keyshare" })
9115
+ ] }),
9116
+ /* @__PURE__ */ jsx33(
9117
+ KeyshareBackup,
9118
+ {
9119
+ userId: session.mpcUserId,
9120
+ onClose: () => setIsBackupOpen(false),
9121
+ onBackupSuccess: () => {
9122
+ console.log("[ConnectWalletButton] Backup created successfully");
9123
+ }
9124
+ }
9125
+ )
9126
+ ] }) }),
9127
+ /* @__PURE__ */ jsx33(
8677
9128
  TransactionsModal,
8678
9129
  {
8679
9130
  open: isTransactionsOpen,
@@ -8684,7 +9135,7 @@ var ConnectWalletButton = ({
8684
9135
  }
8685
9136
  }
8686
9137
  ),
8687
- /* @__PURE__ */ jsx32(
9138
+ /* @__PURE__ */ jsx33(
8688
9139
  ViewAssetsModal,
8689
9140
  {
8690
9141
  open: isViewAssetsOpen,
@@ -8695,7 +9146,7 @@ var ConnectWalletButton = ({
8695
9146
  }
8696
9147
  }
8697
9148
  ),
8698
- /* @__PURE__ */ jsx32(
9149
+ /* @__PURE__ */ jsx33(
8699
9150
  SendModal,
8700
9151
  {
8701
9152
  open: isSendOpen,
@@ -8706,7 +9157,7 @@ var ConnectWalletButton = ({
8706
9157
  }
8707
9158
  }
8708
9159
  ),
8709
- /* @__PURE__ */ jsx32(
9160
+ /* @__PURE__ */ jsx33(
8710
9161
  ReceiveModal,
8711
9162
  {
8712
9163
  open: isReceiveOpen,
@@ -8717,7 +9168,7 @@ var ConnectWalletButton = ({
8717
9168
  }
8718
9169
  }
8719
9170
  ),
8720
- /* @__PURE__ */ jsx32(
9171
+ /* @__PURE__ */ jsx33(
8721
9172
  BuyModal,
8722
9173
  {
8723
9174
  open: isBuyOpen,
@@ -8728,7 +9179,7 @@ var ConnectWalletButton = ({
8728
9179
  }
8729
9180
  }
8730
9181
  ),
8731
- /* @__PURE__ */ jsx32(
9182
+ /* @__PURE__ */ jsx33(
8732
9183
  KycModal,
8733
9184
  {
8734
9185
  open: isKycOpen,
@@ -8739,7 +9190,7 @@ var ConnectWalletButton = ({
8739
9190
  }
8740
9191
  }
8741
9192
  ),
8742
- /* @__PURE__ */ jsx32(
9193
+ /* @__PURE__ */ jsx33(
8743
9194
  AuthModal,
8744
9195
  {
8745
9196
  open: isAuthModalOpen,
@@ -8784,7 +9235,7 @@ var ConnectWalletButton = ({
8784
9235
  }
8785
9236
  }
8786
9237
  ),
8787
- /* @__PURE__ */ jsx32(
9238
+ /* @__PURE__ */ jsx33(
8788
9239
  TssManagerWithRef,
8789
9240
  {
8790
9241
  ref: tssManagerRef,
@@ -8802,7 +9253,7 @@ var ConnectWalletButton = ({
8802
9253
  };
8803
9254
 
8804
9255
  // src/components/ThemeToggle.tsx
8805
- import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
9256
+ import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
8806
9257
  var ThemeToggle = () => {
8807
9258
  const { config, updateConfig } = useLumiaPassportConfig();
8808
9259
  const currentTheme = config.ui.theme;
@@ -8847,7 +9298,7 @@ var ThemeToggle = () => {
8847
9298
  return "auto";
8848
9299
  }
8849
9300
  };
8850
- return /* @__PURE__ */ jsx33("div", { className: "lumia-scope", children: /* @__PURE__ */ jsxs24(
9301
+ return /* @__PURE__ */ jsx34("div", { className: "lumia-scope", children: /* @__PURE__ */ jsxs25(
8851
9302
  "button",
8852
9303
  {
8853
9304
  onClick: cycleTheme,
@@ -8863,29 +9314,29 @@ var ThemeToggle = () => {
8863
9314
  };
8864
9315
 
8865
9316
  // src/components/LumiaLogo.tsx
8866
- import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
9317
+ import { jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
8867
9318
  var LumiaLogo2 = ({ size = 80, className = "" }) => {
8868
- return /* @__PURE__ */ jsx34(
9319
+ return /* @__PURE__ */ jsx35(
8869
9320
  "div",
8870
9321
  {
8871
9322
  className: `flex items-center justify-center ${className}`,
8872
9323
  style: { width: size, height: size },
8873
- children: /* @__PURE__ */ jsxs25("svg", { viewBox: "0 0 512 512", width: size, height: size, children: [
8874
- /* @__PURE__ */ jsx34("circle", { cx: "256", cy: "256", r: "256", fill: "#060117", strokeWidth: "0" }),
8875
- /* @__PURE__ */ jsx34("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" }),
8876
- /* @__PURE__ */ jsx34("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" }),
8877
- /* @__PURE__ */ jsx34("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" }),
8878
- /* @__PURE__ */ jsx34("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" })
9324
+ children: /* @__PURE__ */ jsxs26("svg", { viewBox: "0 0 512 512", width: size, height: size, children: [
9325
+ /* @__PURE__ */ jsx35("circle", { cx: "256", cy: "256", r: "256", fill: "#060117", strokeWidth: "0" }),
9326
+ /* @__PURE__ */ jsx35("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" }),
9327
+ /* @__PURE__ */ jsx35("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" }),
9328
+ /* @__PURE__ */ jsx35("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" }),
9329
+ /* @__PURE__ */ jsx35("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" })
8879
9330
  ] })
8880
9331
  }
8881
9332
  );
8882
9333
  };
8883
9334
 
8884
9335
  // src/hooks/useTheme.ts
8885
- import { useMemo as useMemo4, useState as useState15, useEffect as useEffect12 } from "react";
9336
+ import { useMemo as useMemo6, useState as useState16, useEffect as useEffect13 } from "react";
8886
9337
  function useTheme2(configTheme) {
8887
- const [systemTheme, setSystemTheme] = useState15("light");
8888
- useEffect12(() => {
9338
+ const [systemTheme, setSystemTheme] = useState16("light");
9339
+ useEffect13(() => {
8889
9340
  if (typeof window === "undefined" || !window.matchMedia) return;
8890
9341
  const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
8891
9342
  const updateSystemTheme = () => {
@@ -8895,14 +9346,14 @@ function useTheme2(configTheme) {
8895
9346
  mediaQuery.addEventListener("change", updateSystemTheme);
8896
9347
  return () => mediaQuery.removeEventListener("change", updateSystemTheme);
8897
9348
  }, []);
8898
- const resolvedTheme = useMemo4(() => {
9349
+ const resolvedTheme = useMemo6(() => {
8899
9350
  if (configTheme === "auto") {
8900
9351
  return systemTheme;
8901
9352
  }
8902
9353
  return configTheme;
8903
9354
  }, [configTheme, systemTheme]);
8904
9355
  const isDark = resolvedTheme === "dark";
8905
- const themeClasses = useMemo4(
9356
+ const themeClasses = useMemo6(
8906
9357
  () => ({
8907
9358
  // Modal background
8908
9359
  modalBg: isDark ? "bg-gray-900" : "bg-white",
@@ -8938,9 +9389,9 @@ function useTheme2(configTheme) {
8938
9389
  }
8939
9390
 
8940
9391
  // src/internal/components/Hash.tsx
8941
- import * as React28 from "react";
9392
+ import * as React29 from "react";
8942
9393
  import { Copy as Copy6, ExternalLink as ExternalLink5 } from "lucide-react";
8943
- import { jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
9394
+ import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
8944
9395
  function toExplorerUrl(kind, value, chain) {
8945
9396
  const base2 = chain?.blockExplorers?.default?.url;
8946
9397
  if (!base2) return null;
@@ -8963,12 +9414,12 @@ var Hash = ({
8963
9414
  }) => {
8964
9415
  const value = hash || "";
8965
9416
  const explorer = toExplorerUrl(kind, value, chain || void 0);
8966
- const [copied, setCopied] = React28.useState(false);
8967
- if (!value) return /* @__PURE__ */ jsx35("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
8968
- return /* @__PURE__ */ jsxs26("div", { className: cn2("flex items-center gap-2", className), children: [
8969
- label && /* @__PURE__ */ jsx35("span", { className: "text-sm font-medium", children: label }),
8970
- /* @__PURE__ */ jsx35("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
8971
- showCopy && /* @__PURE__ */ jsx35(
9417
+ const [copied, setCopied] = React29.useState(false);
9418
+ if (!value) return /* @__PURE__ */ jsx36("span", { className: cn2("text-muted-foreground", className), children: "\u2014" });
9419
+ return /* @__PURE__ */ jsxs27("div", { className: cn2("flex items-center gap-2", className), children: [
9420
+ label && /* @__PURE__ */ jsx36("span", { className: "text-sm font-medium", children: label }),
9421
+ /* @__PURE__ */ jsx36("code", { className: "text-xs bg-background px-2 py-1 rounded break-all", children: truncate ? short2(value) : value }),
9422
+ showCopy && /* @__PURE__ */ jsx36(
8972
9423
  Button,
8973
9424
  {
8974
9425
  variant: "ghost",
@@ -8982,10 +9433,10 @@ var Hash = ({
8982
9433
  } catch {
8983
9434
  }
8984
9435
  },
8985
- children: /* @__PURE__ */ jsx35(Copy6, { className: "h-4 w-4" })
9436
+ children: /* @__PURE__ */ jsx36(Copy6, { className: "h-4 w-4" })
8986
9437
  }
8987
9438
  ),
8988
- showExplorer && explorer && /* @__PURE__ */ jsx35(
9439
+ showExplorer && explorer && /* @__PURE__ */ jsx36(
8989
9440
  "a",
8990
9441
  {
8991
9442
  href: explorer,
@@ -8993,7 +9444,7 @@ var Hash = ({
8993
9444
  rel: "noreferrer noopener",
8994
9445
  className: "inline-flex items-center justify-center h-10 w-10 rounded-md hover:bg-accent text-foreground",
8995
9446
  title: "Open in explorer",
8996
- children: /* @__PURE__ */ jsx35(ExternalLink5, { className: "h-4 w-4" })
9447
+ children: /* @__PURE__ */ jsx36(ExternalLink5, { className: "h-4 w-4" })
8997
9448
  }
8998
9449
  )
8999
9450
  ] });
@@ -9001,16 +9452,16 @@ var Hash = ({
9001
9452
 
9002
9453
  // src/internal/components/TransactionsList.tsx
9003
9454
  init_base();
9004
- import { useState as useState17, useEffect as useEffect13 } from "react";
9005
- import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
9455
+ import { useState as useState18, useEffect as useEffect14 } from "react";
9456
+ import { jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
9006
9457
  var TransactionsList = ({
9007
9458
  address,
9008
9459
  itemsCount = 10
9009
9460
  }) => {
9010
- const [transactions, setTransactions] = useState17([]);
9011
- const [loading, setLoading] = useState17(true);
9012
- const [error, setError] = useState17(null);
9013
- useEffect13(() => {
9461
+ const [transactions, setTransactions] = useState18([]);
9462
+ const [loading, setLoading] = useState18(true);
9463
+ const [error, setError] = useState18(null);
9464
+ useEffect14(() => {
9014
9465
  const fetchTransactions = async () => {
9015
9466
  try {
9016
9467
  setLoading(true);
@@ -9056,15 +9507,15 @@ var TransactionsList = ({
9056
9507
  window.open(`${explorerUrl}/tx/${txHash}`, "_blank");
9057
9508
  };
9058
9509
  if (loading) {
9059
- return /* @__PURE__ */ jsxs27("div", { className: "p-4 text-center", children: [
9060
- /* @__PURE__ */ jsx36("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
9061
- /* @__PURE__ */ jsx36("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
9510
+ return /* @__PURE__ */ jsxs28("div", { className: "p-4 text-center", children: [
9511
+ /* @__PURE__ */ jsx37("div", { className: "animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full" }),
9512
+ /* @__PURE__ */ jsx37("p", { className: "mt-2 text-sm text-gray-600", children: "Loading transactions..." })
9062
9513
  ] });
9063
9514
  }
9064
9515
  if (error) {
9065
- return /* @__PURE__ */ jsxs27("div", { className: "p-4 text-center", children: [
9066
- /* @__PURE__ */ jsx36("p", { className: "text-red-600 text-sm", children: error }),
9067
- /* @__PURE__ */ jsx36(
9516
+ return /* @__PURE__ */ jsxs28("div", { className: "p-4 text-center", children: [
9517
+ /* @__PURE__ */ jsx37("p", { className: "text-red-600 text-sm", children: error }),
9518
+ /* @__PURE__ */ jsx37(
9068
9519
  "button",
9069
9520
  {
9070
9521
  onClick: () => window.location.reload(),
@@ -9075,54 +9526,54 @@ var TransactionsList = ({
9075
9526
  ] });
9076
9527
  }
9077
9528
  if (transactions.length === 0) {
9078
- return /* @__PURE__ */ jsx36("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx36("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
9529
+ return /* @__PURE__ */ jsx37("div", { className: "p-4 text-center", children: /* @__PURE__ */ jsx37("p", { className: "text-gray-600 text-sm", children: "No transactions found" }) });
9079
9530
  }
9080
- return /* @__PURE__ */ jsx36("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx36("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs27(
9531
+ return /* @__PURE__ */ jsx37("div", { className: "max-h-96 overflow-y-auto", children: /* @__PURE__ */ jsx37("div", { className: "space-y-2 p-2", children: transactions.map((tx) => /* @__PURE__ */ jsxs28(
9081
9532
  "div",
9082
9533
  {
9083
9534
  className: "border rounded-lg p-3 hover:bg-gray-50 cursor-pointer transition-colors",
9084
9535
  onClick: () => openTransaction(tx.hash),
9085
9536
  children: [
9086
- /* @__PURE__ */ jsxs27("div", { className: "flex justify-between items-start mb-2", children: [
9087
- /* @__PURE__ */ jsxs27("div", { className: "flex-1", children: [
9088
- /* @__PURE__ */ jsxs27("div", { className: "flex items-center space-x-2 mb-1", children: [
9089
- /* @__PURE__ */ jsx36("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress(tx.hash) }),
9090
- /* @__PURE__ */ jsx36("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" })
9537
+ /* @__PURE__ */ jsxs28("div", { className: "flex justify-between items-start mb-2", children: [
9538
+ /* @__PURE__ */ jsxs28("div", { className: "flex-1", children: [
9539
+ /* @__PURE__ */ jsxs28("div", { className: "flex items-center space-x-2 mb-1", children: [
9540
+ /* @__PURE__ */ jsx37("span", { className: "text-xs font-mono bg-gray-100 px-2 py-1 rounded", children: formatAddress(tx.hash) }),
9541
+ /* @__PURE__ */ jsx37("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" })
9091
9542
  ] }),
9092
- /* @__PURE__ */ jsxs27("div", { className: "text-sm space-y-1", children: [
9093
- /* @__PURE__ */ jsxs27("div", { children: [
9094
- /* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "From:" }),
9095
- /* @__PURE__ */ jsxs27("span", { className: "font-mono ml-1", children: [
9543
+ /* @__PURE__ */ jsxs28("div", { className: "text-sm space-y-1", children: [
9544
+ /* @__PURE__ */ jsxs28("div", { children: [
9545
+ /* @__PURE__ */ jsx37("span", { className: "text-gray-600", children: "From:" }),
9546
+ /* @__PURE__ */ jsxs28("span", { className: "font-mono ml-1", children: [
9096
9547
  formatAddress(tx.from.hash),
9097
- tx.from.is_contract && /* @__PURE__ */ jsx36("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9548
+ tx.from.is_contract && /* @__PURE__ */ jsx37("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9098
9549
  ] })
9099
9550
  ] }),
9100
- /* @__PURE__ */ jsxs27("div", { children: [
9101
- /* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "To:" }),
9102
- /* @__PURE__ */ jsxs27("span", { className: "font-mono ml-1", children: [
9551
+ /* @__PURE__ */ jsxs28("div", { children: [
9552
+ /* @__PURE__ */ jsx37("span", { className: "text-gray-600", children: "To:" }),
9553
+ /* @__PURE__ */ jsxs28("span", { className: "font-mono ml-1", children: [
9103
9554
  formatAddress(tx.to.hash),
9104
- tx.to.is_contract && /* @__PURE__ */ jsx36("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9555
+ tx.to.is_contract && /* @__PURE__ */ jsx37("span", { className: "text-xs text-blue-600 ml-1", children: "(Contract)" })
9105
9556
  ] })
9106
9557
  ] }),
9107
- /* @__PURE__ */ jsxs27("div", { children: [
9108
- /* @__PURE__ */ jsx36("span", { className: "text-gray-600", children: "Value:" }),
9109
- /* @__PURE__ */ jsxs27("span", { className: "font-semibold ml-1", children: [
9558
+ /* @__PURE__ */ jsxs28("div", { children: [
9559
+ /* @__PURE__ */ jsx37("span", { className: "text-gray-600", children: "Value:" }),
9560
+ /* @__PURE__ */ jsxs28("span", { className: "font-semibold ml-1", children: [
9110
9561
  formatValue(tx.value),
9111
9562
  " LUMIA"
9112
9563
  ] })
9113
9564
  ] })
9114
9565
  ] })
9115
9566
  ] }),
9116
- /* @__PURE__ */ jsxs27("div", { className: "text-right text-xs text-gray-500", children: [
9117
- /* @__PURE__ */ jsx36("div", { children: formatDate2(tx.timestamp) }),
9118
- /* @__PURE__ */ jsxs27("div", { className: "mt-1", children: [
9567
+ /* @__PURE__ */ jsxs28("div", { className: "text-right text-xs text-gray-500", children: [
9568
+ /* @__PURE__ */ jsx37("div", { children: formatDate2(tx.timestamp) }),
9569
+ /* @__PURE__ */ jsxs28("div", { className: "mt-1", children: [
9119
9570
  "Gas: ",
9120
9571
  parseInt(tx.gas_used).toLocaleString()
9121
9572
  ] }),
9122
- tx.method && /* @__PURE__ */ jsx36("div", { className: "mt-1 text-blue-600", children: tx.method })
9573
+ tx.method && /* @__PURE__ */ jsx37("div", { className: "mt-1 text-blue-600", children: tx.method })
9123
9574
  ] })
9124
9575
  ] }),
9125
- tx.transaction_types.length > 0 && /* @__PURE__ */ jsx36("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx36(
9576
+ tx.transaction_types.length > 0 && /* @__PURE__ */ jsx37("div", { className: "flex flex-wrap gap-1 mt-2", children: tx.transaction_types.map((type, idx) => /* @__PURE__ */ jsx37(
9126
9577
  "span",
9127
9578
  {
9128
9579
  className: "text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full",
@@ -9136,247 +9587,6 @@ var TransactionsList = ({
9136
9587
  )) }) });
9137
9588
  };
9138
9589
 
9139
- // src/internal/components/KeyshareBackup.tsx
9140
- import * as React30 from "react";
9141
- import { Shield as Shield5, Server as Server4, CheckCircle2 as CheckCircle28, AlertCircle as AlertCircle5, Key as Key5, X as X3, Eye as Eye3, EyeOff as EyeOff3, Download as Download2, Cloud as Cloud4, Lock as Lock3 } from "lucide-react";
9142
- init_vaultClient();
9143
- import { Fragment as Fragment7, jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
9144
- function KeyshareBackup({ userId, onClose, onBackupSuccess }) {
9145
- const [backupStatus, setBackupStatus] = React30.useState(() => getBackupStatus(userId));
9146
- const [loading, setLoading] = React30.useState({
9147
- server: false,
9148
- cloud: false,
9149
- local: false
9150
- });
9151
- const [error, setError] = React30.useState(null);
9152
- const [success, setSuccess] = React30.useState(null);
9153
- const [showPassword, setShowPassword] = React30.useState(false);
9154
- const [useCustomPassword, setUseCustomPassword] = React30.useState(false);
9155
- const [customPassword, setCustomPassword] = React30.useState("");
9156
- const [cloudProviders, setCloudProviders] = React30.useState([]);
9157
- const [selectedCloudProvider, setSelectedCloudProvider] = React30.useState(null);
9158
- const hasKeyshareData = React30.useMemo(() => {
9159
- return !!getCurrentKeyshareBackupData(userId);
9160
- }, [userId]);
9161
- React30.useEffect(() => {
9162
- getAvailableCloudProviders2().then((providers) => {
9163
- setCloudProviders(providers);
9164
- if (providers.length > 0 && !selectedCloudProvider) {
9165
- setSelectedCloudProvider(providers[0].id);
9166
- }
9167
- });
9168
- }, [selectedCloudProvider]);
9169
- const refreshStatus = React30.useCallback(() => {
9170
- setBackupStatus(getBackupStatus(userId));
9171
- }, [userId]);
9172
- React30.useEffect(() => {
9173
- refreshStatus();
9174
- }, [refreshStatus]);
9175
- const handleBackup = async (method) => {
9176
- setLoading((prev) => ({ ...prev, [method]: true }));
9177
- setError(null);
9178
- setSuccess(null);
9179
- try {
9180
- const password = useCustomPassword ? customPassword : void 0;
9181
- switch (method) {
9182
- case "server":
9183
- await backupToServer(userId, password);
9184
- setSuccess("Successfully created server backup");
9185
- break;
9186
- case "cloud": {
9187
- await backupToCloud(userId, password, selectedCloudProvider || void 0);
9188
- setSuccess(`Successfully created cloud backup`);
9189
- const updatedProviders = await getAvailableCloudProviders2();
9190
- setCloudProviders(updatedProviders);
9191
- break;
9192
- }
9193
- case "local":
9194
- await backupToLocalFile(userId, password);
9195
- setSuccess("Backup file downloaded successfully");
9196
- break;
9197
- }
9198
- refreshStatus();
9199
- setTimeout(() => {
9200
- if (typeof window !== "undefined") {
9201
- window.dispatchEvent(
9202
- new CustomEvent("lumia-passport-backup-status-changed", {
9203
- detail: { method, success: true }
9204
- })
9205
- );
9206
- }
9207
- onBackupSuccess?.();
9208
- }, 100);
9209
- } catch (err) {
9210
- const errorMsg = err instanceof Error ? err.message : "Backup creation failed";
9211
- setError(errorMsg);
9212
- updateBackupStatus(userId, method, { error: errorMsg });
9213
- refreshStatus();
9214
- } finally {
9215
- setLoading((prev) => ({ ...prev, [method]: false }));
9216
- }
9217
- };
9218
- const formatLastBackup = (timestamp) => {
9219
- if (!timestamp) return "Never";
9220
- const date = new Date(timestamp);
9221
- return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
9222
- };
9223
- return /* @__PURE__ */ jsxs28(Card, { className: "border-green-200 bg-green-50", children: [
9224
- /* @__PURE__ */ jsx37(CardHeader, { className: "pb-4", children: /* @__PURE__ */ jsxs28("div", { className: "flex items-center justify-between", children: [
9225
- /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-3", children: [
9226
- /* @__PURE__ */ jsx37(Shield5, { className: "h-6 w-6 text-green-600" }),
9227
- /* @__PURE__ */ jsxs28("div", { children: [
9228
- /* @__PURE__ */ jsx37(CardTitle, { className: "text-lg", children: "Create Backup" }),
9229
- /* @__PURE__ */ jsx37(CardDescription, { className: "text-sm", children: "Secure your keyshare with encrypted backups" })
9230
- ] })
9231
- ] }),
9232
- onClose && /* @__PURE__ */ jsx37("button", { onClick: onClose, className: "p-1 rounded bg-red-100 text-red-600 hover:bg-red-200 transition-colors", title: "Close", children: /* @__PURE__ */ jsx37(X3, { className: "h-4 w-4" }) })
9233
- ] }) }),
9234
- /* @__PURE__ */ jsxs28(CardContent, { className: "space-y-6", children: [
9235
- error && /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-2 p-3 rounded bg-red-50 border border-red-200 text-red-700 text-sm", children: [
9236
- /* @__PURE__ */ jsx37(AlertCircle5, { className: "h-4 w-4 flex-shrink-0" }),
9237
- /* @__PURE__ */ jsx37("span", { children: error })
9238
- ] }),
9239
- success && /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-2 p-3 rounded bg-green-50 border border-green-200 text-green-700 text-sm", children: [
9240
- /* @__PURE__ */ jsx37(CheckCircle28, { className: "h-4 w-4 flex-shrink-0" }),
9241
- /* @__PURE__ */ jsx37("span", { children: success })
9242
- ] }),
9243
- /* @__PURE__ */ jsxs28("div", { className: "space-y-3", children: [
9244
- /* @__PURE__ */ jsx37("div", { className: "text-sm font-medium text-gray-700", children: "Encryption Method:" }),
9245
- /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-2", children: [
9246
- /* @__PURE__ */ jsx37(
9247
- "input",
9248
- {
9249
- type: "checkbox",
9250
- id: "use-backup-password",
9251
- checked: useCustomPassword,
9252
- onChange: (e) => setUseCustomPassword(e.target.checked),
9253
- className: "rounded"
9254
- }
9255
- ),
9256
- /* @__PURE__ */ jsx37("label", { htmlFor: "use-backup-password", className: "text-sm font-medium", children: "Use custom password instead of passkey" })
9257
- ] }),
9258
- !useCustomPassword && /* @__PURE__ */ jsx37("div", { className: "p-3 bg-blue-50 border border-blue-200 rounded text-sm text-blue-700", children: /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-2", children: [
9259
- /* @__PURE__ */ jsx37(Key5, { className: "h-4 w-4" }),
9260
- /* @__PURE__ */ jsx37("span", { children: "Your passkey will be used to encrypt the backup securely" })
9261
- ] }) }),
9262
- useCustomPassword && /* @__PURE__ */ jsxs28("div", { className: "relative", children: [
9263
- /* @__PURE__ */ jsx37(
9264
- Input,
9265
- {
9266
- type: showPassword ? "text" : "password",
9267
- placeholder: "Enter backup encryption password",
9268
- value: customPassword,
9269
- onChange: (e) => setCustomPassword(e.target.value),
9270
- className: "pr-10"
9271
- }
9272
- ),
9273
- /* @__PURE__ */ jsx37(
9274
- "button",
9275
- {
9276
- type: "button",
9277
- onClick: () => setShowPassword(!showPassword),
9278
- className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-500 hover:text-gray-700",
9279
- children: showPassword ? /* @__PURE__ */ jsx37(EyeOff3, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx37(Eye3, { className: "h-4 w-4" })
9280
- }
9281
- )
9282
- ] })
9283
- ] }),
9284
- /* @__PURE__ */ jsxs28("div", { className: "space-y-4", children: [
9285
- /* @__PURE__ */ jsx37("div", { className: "text-sm font-medium text-gray-700", children: "Choose Backup Method:" }),
9286
- /* @__PURE__ */ jsxs28("div", { className: "p-4 rounded-lg border border-blue-200 bg-blue-50/50", children: [
9287
- /* @__PURE__ */ jsx37("div", { className: "flex items-center justify-between mb-3", children: /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-3", children: [
9288
- /* @__PURE__ */ jsx37(Server4, { className: "h-5 w-5 text-blue-600" }),
9289
- /* @__PURE__ */ jsxs28("div", { children: [
9290
- /* @__PURE__ */ jsx37("div", { className: "font-medium text-sm", children: "Server Backup" }),
9291
- /* @__PURE__ */ jsx37("div", { className: "text-xs text-gray-600", children: "Store encrypted backup on secure server" })
9292
- ] })
9293
- ] }) }),
9294
- /* @__PURE__ */ jsx37(
9295
- Button,
9296
- {
9297
- onClick: () => handleBackup("server"),
9298
- disabled: loading.server || useCustomPassword && !customPassword || !hasKeyshareData,
9299
- className: "px-4 py-2",
9300
- children: loading.server ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
9301
- }
9302
- ),
9303
- /* @__PURE__ */ jsxs28("div", { className: "text-xs text-gray-600 mt-2", children: [
9304
- "Encrypted backup stored on secure server \u2022 Last: ",
9305
- formatLastBackup(backupStatus.server.lastBackup)
9306
- ] })
9307
- ] }),
9308
- /* @__PURE__ */ jsxs28("div", { className: "p-4 rounded-lg border border-sky-200 bg-sky-50/50", children: [
9309
- /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-3 mb-3", children: [
9310
- /* @__PURE__ */ jsx37(Cloud4, { className: "h-5 w-5 text-sky-600" }),
9311
- /* @__PURE__ */ jsxs28("div", { children: [
9312
- /* @__PURE__ */ jsx37("div", { className: "font-medium text-sm", children: "Cloud Backup" }),
9313
- /* @__PURE__ */ jsx37("div", { className: "text-xs text-gray-600", children: "Store encrypted backup in cloud storage" })
9314
- ] })
9315
- ] }),
9316
- cloudProviders.length > 1 && /* @__PURE__ */ jsx37("div", { className: "mb-3", children: /* @__PURE__ */ jsx37(
9317
- "select",
9318
- {
9319
- value: selectedCloudProvider || "",
9320
- onChange: (e) => setSelectedCloudProvider(e.target.value),
9321
- className: "text-sm border rounded px-2 py-1 w-full",
9322
- children: cloudProviders.map((provider) => /* @__PURE__ */ jsxs28("option", { value: provider.id, children: [
9323
- provider.icon,
9324
- " ",
9325
- provider.name,
9326
- " ",
9327
- provider.isAuthenticated ? "\u2713" : ""
9328
- ] }, provider.id))
9329
- }
9330
- ) }),
9331
- /* @__PURE__ */ jsx37(
9332
- Button,
9333
- {
9334
- onClick: () => handleBackup("cloud"),
9335
- disabled: loading.cloud || useCustomPassword && !customPassword || !hasKeyshareData || cloudProviders.length === 0,
9336
- className: "px-4 py-2",
9337
- children: loading.cloud ? "Creating..." : useCustomPassword ? "Create with Password" : "Create with Passkey"
9338
- }
9339
- ),
9340
- /* @__PURE__ */ jsx37("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)}` })
9341
- ] }),
9342
- /* @__PURE__ */ jsxs28("div", { className: "p-4 rounded-lg border border-purple-200 bg-purple-50/50", children: [
9343
- /* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-3 mb-3", children: [
9344
- /* @__PURE__ */ jsx37(Download2, { className: "h-5 w-5 text-purple-600" }),
9345
- /* @__PURE__ */ jsxs28("div", { children: [
9346
- /* @__PURE__ */ jsx37("div", { className: "font-medium text-sm", children: "File Backup" }),
9347
- /* @__PURE__ */ jsx37("div", { className: "text-xs text-gray-600", children: "Download encrypted backup file to your device" })
9348
- ] })
9349
- ] }),
9350
- /* @__PURE__ */ jsx37(
9351
- Button,
9352
- {
9353
- onClick: () => handleBackup("local"),
9354
- disabled: loading.local || useCustomPassword && !customPassword || !hasKeyshareData,
9355
- className: "w-full",
9356
- children: loading.local ? "Creating..." : useCustomPassword ? "Create & Download" : "Create & Download with Passkey"
9357
- }
9358
- ),
9359
- /* @__PURE__ */ jsxs28("div", { className: "text-xs text-gray-600 mt-2", children: [
9360
- "Download encrypted backup file to your device \u2022 Last: ",
9361
- formatLastBackup(backupStatus.local.lastBackup)
9362
- ] })
9363
- ] })
9364
- ] }),
9365
- /* @__PURE__ */ jsxs28("div", { className: "flex items-start gap-2 p-3 bg-amber-50 border border-amber-200 rounded text-amber-800 text-xs", children: [
9366
- /* @__PURE__ */ jsx37(Lock3, { className: "h-4 w-4 mt-0.5 flex-shrink-0" }),
9367
- /* @__PURE__ */ jsxs28("div", { children: [
9368
- /* @__PURE__ */ jsx37("div", { className: "font-medium", children: "Security Notice" }),
9369
- /* @__PURE__ */ jsxs28("div", { className: "mt-1", children: [
9370
- useCustomPassword ? /* @__PURE__ */ jsx37(Fragment7, { children: "All backups are encrypted with AES-256 using your custom password. Store your password securely - without it, backups cannot be restored." }) : /* @__PURE__ */ jsx37(Fragment7, { children: "All backups are encrypted with AES-256 using your passkey. Your passkey authenticator (device/biometrics) is required to restore backups." }),
9371
- " ",
9372
- "Without backup access, you cannot recover your smart account if you lose this device."
9373
- ] })
9374
- ] })
9375
- ] })
9376
- ] })
9377
- ] });
9378
- }
9379
-
9380
9590
  // src/hooks/useUserOpStatus.ts
9381
9591
  init_base();
9382
9592
  import * as React31 from "react";