@deframe-sdk/components 0.1.18 → 0.1.19

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.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { twMerge } from 'tailwind-merge';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
- import { HiXMark, HiChevronUp, HiChevronDown, HiChevronLeft, HiArrowRight, HiArrowLeft } from 'react-icons/hi2';
3
+ import { HiXMark, HiChevronUp, HiChevronDown, HiChevronLeft, HiOutlineClock, HiArrowRight, HiArrowLeft } from 'react-icons/hi2';
4
4
  import * as React6 from 'react';
5
5
  import React6__default, { useState, useEffect, useRef, useCallback } from 'react';
6
6
  import { motion, AnimatePresence } from 'framer-motion';
@@ -2372,6 +2372,69 @@ var LowRiskBadge = ({ className, label }) => {
2372
2372
  }
2373
2373
  ) });
2374
2374
  };
2375
+ var LoadingDots = ({ className = "" }) => {
2376
+ return /* @__PURE__ */ jsxs("span", { className: `flex gap-[var(--deframe-widget-size-gap-none)].5 ${className}`, children: [
2377
+ /* @__PURE__ */ jsx("span", { className: "animate-bounce", style: { animationDelay: "0ms", animationDuration: "1.4s" }, children: "." }),
2378
+ /* @__PURE__ */ jsx("span", { className: "animate-bounce", style: { animationDelay: "200ms", animationDuration: "1.4s" }, children: "." }),
2379
+ /* @__PURE__ */ jsx("span", { className: "animate-bounce", style: { animationDelay: "400ms", animationDuration: "1.4s" }, children: "." })
2380
+ ] });
2381
+ };
2382
+ var ProcessingBadge = ({
2383
+ label = "Processing",
2384
+ className = "",
2385
+ title,
2386
+ size = "default"
2387
+ }) => {
2388
+ const isCompact = size === "compact";
2389
+ const baseClasses = [
2390
+ "inline-flex max-w-fit items-center gap-[var(--deframe-widget-size-gap-xs)] rounded-[var(--deframe-widget-size-radius-full)] border",
2391
+ "text-[color:var(--deframe-widget-color-state-info)]",
2392
+ "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-state-info)_18%,transparent)]",
2393
+ "border-[color:color-mix(in_srgb,var(--deframe-widget-color-state-info)_28%,transparent)]"
2394
+ ].join(" ");
2395
+ const sizeClasses = {
2396
+ default: "px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)]",
2397
+ compact: "px-[calc(var(--deframe-widget-size-padding-x-xs)+2px)] py-[2px]"
2398
+ };
2399
+ const processingBadgeClasses = twMerge(
2400
+ baseClasses,
2401
+ sizeClasses[isCompact ? "compact" : "default"],
2402
+ className
2403
+ );
2404
+ return /* @__PURE__ */ jsxs(
2405
+ "div",
2406
+ {
2407
+ "data-test-id": "processing-badge",
2408
+ title,
2409
+ className: processingBadgeClasses,
2410
+ children: [
2411
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-[6px]", children: [
2412
+ /* @__PURE__ */ jsx(HiOutlineClock, { className: isCompact ? "h-[12px] w-[12px] shrink-0" : "h-[14px] w-[14px] shrink-0" }),
2413
+ /* @__PURE__ */ jsx(
2414
+ TextBody,
2415
+ {
2416
+ as: "span",
2417
+ variant: "text-small",
2418
+ className: twMerge(
2419
+ "truncate text-[color:var(--deframe-widget-color-state-info)]",
2420
+ isCompact ? "text-[11px] leading-[14px]" : ""
2421
+ ),
2422
+ children: label
2423
+ }
2424
+ )
2425
+ ] }),
2426
+ /* @__PURE__ */ jsx(
2427
+ "span",
2428
+ {
2429
+ "aria-hidden": "true",
2430
+ className: "flex shrink-0 items-center text-[color:var(--deframe-widget-color-state-info)] opacity-80",
2431
+ children: /* @__PURE__ */ jsx(LoadingDots, { className: twMerge(isCompact ? "text-[11px] leading-[14px]" : "text-[12px] leading-[16px]") })
2432
+ }
2433
+ )
2434
+ ]
2435
+ }
2436
+ );
2437
+ };
2375
2438
  var gapClasses3 = {
2376
2439
  xs: "gap-[var(--deframe-widget-size-gap-xs)]",
2377
2440
  sm: "gap-[var(--deframe-widget-size-gap-sm)]",
@@ -2398,10 +2461,35 @@ var TokenIcon = ({ src, alt }) => /* @__PURE__ */ jsx(
2398
2461
  }
2399
2462
  }
2400
2463
  );
2401
- var SuccessBadge = ({ children }) => /* @__PURE__ */ jsxs("div", { "data-test-id": "success-badge", className: "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-state-success)_12%,transparent)] flex items-center gap-[var(--deframe-widget-size-gap-xs)] px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] rounded-[var(--deframe-widget-size-radius-lg)]", children: [
2402
- /* @__PURE__ */ jsx("span", { className: "w-2 h-2 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-state-success)]" }),
2464
+ var STATUS_STYLES = {
2465
+ success: {
2466
+ bg: "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-state-success)_12%,transparent)]",
2467
+ dot: "bg-[var(--deframe-widget-color-state-success)]"
2468
+ },
2469
+ pending: {
2470
+ bg: "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-state-warning)_12%,transparent)]",
2471
+ dot: "bg-[var(--deframe-widget-color-state-warning)]"
2472
+ },
2473
+ failed: {
2474
+ bg: "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-state-error)_12%,transparent)]",
2475
+ dot: "bg-[var(--deframe-widget-color-state-error)]"
2476
+ },
2477
+ refunded: {
2478
+ bg: "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-text-secondary)_12%,transparent)]",
2479
+ dot: "bg-[var(--deframe-widget-color-text-secondary)]"
2480
+ }
2481
+ };
2482
+ function resolveStatusBadgeTone(status = "SUCCESS") {
2483
+ if (status === "PENDING") return "pending";
2484
+ if (status === "FAILED") return "failed";
2485
+ if (status === "REFUNDED") return "refunded";
2486
+ return "success";
2487
+ }
2488
+ var StatusBadge = ({ children, tone = "success" }) => /* @__PURE__ */ jsxs("div", { "data-test-id": "status-badge", className: `${STATUS_STYLES[tone].bg} flex items-center gap-[var(--deframe-widget-size-gap-xs)] px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] rounded-[var(--deframe-widget-size-radius-lg)]`, children: [
2489
+ /* @__PURE__ */ jsx("span", { className: `w-2 h-2 rounded-[var(--deframe-widget-size-radius-full)] ${STATUS_STYLES[tone].dot}` }),
2403
2490
  /* @__PURE__ */ jsx("span", { className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-primary)]", children })
2404
2491
  ] });
2492
+ var SuccessBadge = ({ children }) => /* @__PURE__ */ jsx(StatusBadge, { tone: "success", children });
2405
2493
  var truncateHash = (hash, chars = 6) => {
2406
2494
  if (hash.length <= chars * 2 + 3) return hash;
2407
2495
  return `${hash.slice(0, chars + 2)}...${hash.slice(-chars)}`;
@@ -2438,6 +2526,84 @@ var TwoLineValue = ({ primary, secondary }) => /* @__PURE__ */ jsxs(HistoryFlexC
2438
2526
  /* @__PURE__ */ jsx("p", { "data-test-id": "two-line-value-secondary", className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)]", children: secondary })
2439
2527
  ] });
2440
2528
  var NotFoundMessage = ({ children }) => /* @__PURE__ */ jsx("div", { "data-test-id": "not-found-message", className: "flex flex-col items-center justify-center h-full", children: /* @__PURE__ */ jsx("p", { className: "text-[color:var(--deframe-widget-color-text-primary)]", children }) });
2529
+ function StepStatusIcon({ status }) {
2530
+ switch (status) {
2531
+ case "completed":
2532
+ return /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(IoCheckmarkOutline, { className: "w-4 h-4 text-[color:var(--deframe-widget-color-state-success)]" }) });
2533
+ case "processing":
2534
+ return /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(IoTimeOutline, { className: "w-4 h-4 text-[color:var(--deframe-widget-color-state-warning)]" }) });
2535
+ case "failed":
2536
+ return /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(IoAlertCircleOutline, { className: "w-4 h-4 text-[color:var(--deframe-widget-color-state-error)]" }) });
2537
+ }
2538
+ }
2539
+ function StepStatusText({
2540
+ step,
2541
+ completedText,
2542
+ processingText,
2543
+ failedText,
2544
+ viewOnExplorerText
2545
+ }) {
2546
+ if (step.statusText) {
2547
+ const textColorClass2 = step.status === "completed" ? "text-[color:var(--deframe-widget-color-text-primary)]" : step.status === "processing" ? "text-[color:var(--deframe-widget-color-text-secondary)]" : step.status === "failed" ? "text-[color:var(--deframe-widget-color-state-error)]" : "text-[color:var(--deframe-widget-color-text-primary-disabled)]";
2548
+ return /* @__PURE__ */ jsx("span", { className: `[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] ${textColorClass2}`, children: step.statusText });
2549
+ }
2550
+ if (step.status === "completed" && step.explorerUrl) {
2551
+ return /* @__PURE__ */ jsx(
2552
+ "a",
2553
+ {
2554
+ href: step.explorerUrl,
2555
+ target: "_blank",
2556
+ rel: "noopener noreferrer",
2557
+ className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-brand-primary)] underline hover:no-underline",
2558
+ children: viewOnExplorerText
2559
+ }
2560
+ );
2561
+ }
2562
+ const defaultText = step.status === "completed" ? completedText : step.status === "processing" ? processingText : failedText;
2563
+ const textColorClass = step.status === "completed" ? "text-[color:var(--deframe-widget-color-text-primary)]" : step.status === "processing" ? "text-[color:var(--deframe-widget-color-text-secondary)]" : "text-[color:var(--deframe-widget-color-state-error)]";
2564
+ return /* @__PURE__ */ jsx("span", { className: `[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] ${textColorClass}`, children: defaultText });
2565
+ }
2566
+ function StepDisplay({ step, completedText, processingText, failedText, viewOnExplorerText }) {
2567
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-[var(--deframe-widget-size-gap-md)] w-full", children: [
2568
+ /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ jsx("p", { className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-primary)] [font-weight:var(--deframe-widget-font-weight-medium)]", children: step.label }) }),
2569
+ /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: step.value ? /* @__PURE__ */ jsx("span", { className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)]", children: step.value }) : /* @__PURE__ */ jsx(StepStatusText, { step, completedText, processingText, failedText, viewOnExplorerText }) })
2570
+ ] });
2571
+ }
2572
+ function TransactionProcessingDetails({
2573
+ steps,
2574
+ className = "bg-[var(--deframe-widget-color-bg-secondary)] lg:!bg-[var(--deframe-widget-color-bg-secondary)]",
2575
+ defaultOpen = true,
2576
+ labels
2577
+ }) {
2578
+ if (!steps || steps.length === 0) {
2579
+ return null;
2580
+ }
2581
+ const getProcessingSteps = () => {
2582
+ return /* @__PURE__ */ jsx("div", { className: "flex flex-col w-full", children: steps.map((step, index) => /* @__PURE__ */ jsxs("div", { className: "flex gap-[var(--deframe-widget-size-gap-sm)]", children: [
2583
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
2584
+ step.status && /* @__PURE__ */ jsx(StepStatusIcon, { status: step.status }),
2585
+ index < steps.length - 1 && step.status && /* @__PURE__ */ jsx("div", { className: "w-px flex-1 min-h-[16px] bg-[var(--deframe-widget-color-bg-primary-dark)] my-[var(--deframe-widget-size-gap-xs)]" })
2586
+ ] }),
2587
+ /* @__PURE__ */ jsx("div", { className: "flex-1 pb-[var(--deframe-widget-size-padding-y-sm)] min-w-0", children: /* @__PURE__ */ jsx(StepDisplay, { step, completedText: labels.completedText, processingText: labels.processingText, failedText: labels.failedText, viewOnExplorerText: labels.viewOnExplorerText }) })
2588
+ ] }, `step-${index}`)) });
2589
+ };
2590
+ const items = [
2591
+ {
2592
+ label: "",
2593
+ value: getProcessingSteps(),
2594
+ valueClassName: "flex flex-col gap-[var(--deframe-widget-size-gap-none)] w-full"
2595
+ }
2596
+ ];
2597
+ return /* @__PURE__ */ jsx(
2598
+ SummaryDetails,
2599
+ {
2600
+ title: labels.title,
2601
+ items,
2602
+ defaultOpen,
2603
+ className
2604
+ }
2605
+ );
2606
+ }
2441
2607
  var HistoryDepositDetailsView = ({
2442
2608
  transactionTypeLabel,
2443
2609
  symbol,
@@ -2452,6 +2618,9 @@ var HistoryDepositDetailsView = ({
2452
2618
  txHash,
2453
2619
  date,
2454
2620
  explorerUrl,
2621
+ status = "SUCCESS",
2622
+ processingSteps,
2623
+ processingDetailsLabels,
2455
2624
  onClose,
2456
2625
  labels
2457
2626
  }) => {
@@ -2510,7 +2679,7 @@ var HistoryDepositDetailsView = ({
2510
2679
  ] }),
2511
2680
  /* @__PURE__ */ jsxs(InfoRow, { borderBottom: true, children: [
2512
2681
  /* @__PURE__ */ jsx(InfoLabel, { children: labels.statusLabel }),
2513
- /* @__PURE__ */ jsx(SuccessBadge, { children: statusLabel })
2682
+ /* @__PURE__ */ jsx(StatusBadge, { tone: resolveStatusBadgeTone(status), children: statusLabel })
2514
2683
  ] }),
2515
2684
  /* @__PURE__ */ jsxs(InfoRow, { borderBottom: true, children: [
2516
2685
  /* @__PURE__ */ jsx(InfoLabel, { children: labels.transactionIdLabel }),
@@ -2524,7 +2693,15 @@ var HistoryDepositDetailsView = ({
2524
2693
  /* @__PURE__ */ jsx(InfoLabel, { children: labels.transactionLabel }),
2525
2694
  /* @__PURE__ */ jsx(ExplorerLink, { href: explorerUrl, children: labels.viewOnExplorerLabel })
2526
2695
  ] })
2527
- ] }) })
2696
+ ] }) }),
2697
+ (processingSteps == null ? void 0 : processingSteps.length) && processingDetailsLabels ? /* @__PURE__ */ jsx(
2698
+ TransactionProcessingDetails,
2699
+ {
2700
+ steps: processingSteps,
2701
+ labels: processingDetailsLabels,
2702
+ defaultOpen: true
2703
+ }
2704
+ ) : null
2528
2705
  ] }) })
2529
2706
  ] });
2530
2707
  };
@@ -2542,6 +2719,9 @@ var HistoryWithdrawDetailsView = ({
2542
2719
  txHash,
2543
2720
  date,
2544
2721
  explorerUrl,
2722
+ status = "SUCCESS",
2723
+ processingSteps,
2724
+ processingDetailsLabels,
2545
2725
  onClose,
2546
2726
  labels
2547
2727
  }) => {
@@ -2600,7 +2780,7 @@ var HistoryWithdrawDetailsView = ({
2600
2780
  ] }),
2601
2781
  /* @__PURE__ */ jsxs(InfoRow, { borderBottom: true, children: [
2602
2782
  /* @__PURE__ */ jsx(InfoLabel, { children: labels.statusLabel }),
2603
- /* @__PURE__ */ jsx(SuccessBadge, { children: statusLabel })
2783
+ /* @__PURE__ */ jsx(StatusBadge, { tone: resolveStatusBadgeTone(status), children: statusLabel })
2604
2784
  ] }),
2605
2785
  /* @__PURE__ */ jsxs(InfoRow, { borderBottom: true, children: [
2606
2786
  /* @__PURE__ */ jsx(InfoLabel, { children: labels.transactionIdLabel }),
@@ -2614,7 +2794,15 @@ var HistoryWithdrawDetailsView = ({
2614
2794
  /* @__PURE__ */ jsx(InfoLabel, { children: labels.transactionLabel }),
2615
2795
  /* @__PURE__ */ jsx(ExplorerLink, { href: explorerUrl, children: labels.viewOnExplorerLabel })
2616
2796
  ] })
2617
- ] }) })
2797
+ ] }) }),
2798
+ (processingSteps == null ? void 0 : processingSteps.length) && processingDetailsLabels ? /* @__PURE__ */ jsx(
2799
+ TransactionProcessingDetails,
2800
+ {
2801
+ steps: processingSteps,
2802
+ labels: processingDetailsLabels,
2803
+ defaultOpen: true
2804
+ }
2805
+ ) : null
2618
2806
  ] }) })
2619
2807
  ] });
2620
2808
  };
@@ -2790,13 +2978,6 @@ var ProgressIndicator = ({
2790
2978
  /* @__PURE__ */ jsx("div", { className: "flex-1 h-[4px] bg-[var(--deframe-widget-color-bg-tertiary)] rounded-[var(--deframe-widget-size-radius-md)] ml-[var(--deframe-widget-size-gap-xs)]" })
2791
2979
  ] }) });
2792
2980
  };
2793
- var LoadingDots = ({ className = "" }) => {
2794
- return /* @__PURE__ */ jsxs("span", { className: `flex gap-[var(--deframe-widget-size-gap-none)].5 ${className}`, children: [
2795
- /* @__PURE__ */ jsx("span", { className: "animate-bounce", style: { animationDelay: "0ms", animationDuration: "1.4s" }, children: "." }),
2796
- /* @__PURE__ */ jsx("span", { className: "animate-bounce", style: { animationDelay: "200ms", animationDuration: "1.4s" }, children: "." }),
2797
- /* @__PURE__ */ jsx("span", { className: "animate-bounce", style: { animationDelay: "400ms", animationDuration: "1.4s" }, children: "." })
2798
- ] });
2799
- };
2800
2981
  var SearchInput = ({
2801
2982
  placeholder = "Search",
2802
2983
  value: controlledValue,
@@ -2992,84 +3173,6 @@ var TransactionScreenInvestmentCard = ({
2992
3173
  ] })
2993
3174
  ] }) });
2994
3175
  };
2995
- function StepStatusIcon({ status }) {
2996
- switch (status) {
2997
- case "completed":
2998
- return /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(IoCheckmarkOutline, { className: "w-4 h-4 text-[color:var(--deframe-widget-color-state-success)]" }) });
2999
- case "processing":
3000
- return /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(IoTimeOutline, { className: "w-4 h-4 text-[color:var(--deframe-widget-color-state-warning)]" }) });
3001
- case "failed":
3002
- return /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(IoAlertCircleOutline, { className: "w-4 h-4 text-[color:var(--deframe-widget-color-state-error)]" }) });
3003
- }
3004
- }
3005
- function StepStatusText({
3006
- step,
3007
- completedText,
3008
- processingText,
3009
- failedText,
3010
- viewOnExplorerText
3011
- }) {
3012
- if (step.statusText) {
3013
- const textColorClass2 = step.status === "completed" ? "text-[color:var(--deframe-widget-color-text-primary)]" : step.status === "processing" ? "text-[color:var(--deframe-widget-color-text-secondary)]" : step.status === "failed" ? "text-[color:var(--deframe-widget-color-state-error)]" : "text-[color:var(--deframe-widget-color-text-primary-disabled)]";
3014
- return /* @__PURE__ */ jsx("span", { className: `[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] ${textColorClass2}`, children: step.statusText });
3015
- }
3016
- if (step.status === "completed" && step.explorerUrl) {
3017
- return /* @__PURE__ */ jsx(
3018
- "a",
3019
- {
3020
- href: step.explorerUrl,
3021
- target: "_blank",
3022
- rel: "noopener noreferrer",
3023
- className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-brand-primary)] underline hover:no-underline",
3024
- children: viewOnExplorerText
3025
- }
3026
- );
3027
- }
3028
- const defaultText = step.status === "completed" ? completedText : step.status === "processing" ? processingText : failedText;
3029
- const textColorClass = step.status === "completed" ? "text-[color:var(--deframe-widget-color-text-primary)]" : step.status === "processing" ? "text-[color:var(--deframe-widget-color-text-secondary)]" : "text-[color:var(--deframe-widget-color-state-error)]";
3030
- return /* @__PURE__ */ jsx("span", { className: `[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] ${textColorClass}`, children: defaultText });
3031
- }
3032
- function StepDisplay({ step, completedText, processingText, failedText, viewOnExplorerText }) {
3033
- return /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-[var(--deframe-widget-size-gap-md)] w-full", children: [
3034
- /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ jsx("p", { className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-primary)] [font-weight:var(--deframe-widget-font-weight-medium)]", children: step.label }) }),
3035
- /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: step.value ? /* @__PURE__ */ jsx("span", { className: "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)]", children: step.value }) : /* @__PURE__ */ jsx(StepStatusText, { step, completedText, processingText, failedText, viewOnExplorerText }) })
3036
- ] });
3037
- }
3038
- function TransactionProcessingDetails({
3039
- steps,
3040
- className = "bg-[var(--deframe-widget-color-bg-secondary)] lg:!bg-[var(--deframe-widget-color-bg-secondary)]",
3041
- defaultOpen = true,
3042
- labels
3043
- }) {
3044
- if (!steps || steps.length === 0) {
3045
- return null;
3046
- }
3047
- const getProcessingSteps = () => {
3048
- return /* @__PURE__ */ jsx("div", { className: "flex flex-col w-full", children: steps.map((step, index) => /* @__PURE__ */ jsxs("div", { className: "flex gap-[var(--deframe-widget-size-gap-sm)]", children: [
3049
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
3050
- step.status && /* @__PURE__ */ jsx(StepStatusIcon, { status: step.status }),
3051
- index < steps.length - 1 && step.status && /* @__PURE__ */ jsx("div", { className: "w-px flex-1 min-h-[16px] bg-[var(--deframe-widget-color-bg-primary-dark)] my-[var(--deframe-widget-size-gap-xs)]" })
3052
- ] }),
3053
- /* @__PURE__ */ jsx("div", { className: "flex-1 pb-[var(--deframe-widget-size-padding-y-sm)] min-w-0", children: /* @__PURE__ */ jsx(StepDisplay, { step, completedText: labels.completedText, processingText: labels.processingText, failedText: labels.failedText, viewOnExplorerText: labels.viewOnExplorerText }) })
3054
- ] }, `step-${index}`)) });
3055
- };
3056
- const items = [
3057
- {
3058
- label: "",
3059
- value: getProcessingSteps(),
3060
- valueClassName: "flex flex-col gap-[var(--deframe-widget-size-gap-none)] w-full"
3061
- }
3062
- ];
3063
- return /* @__PURE__ */ jsx(
3064
- SummaryDetails,
3065
- {
3066
- title: labels.title,
3067
- items,
3068
- defaultOpen,
3069
- className
3070
- }
3071
- );
3072
- }
3073
3176
  var TokenWithChainBadge = ({
3074
3177
  tokenLogoUrl,
3075
3178
  tokenAlt,
@@ -3536,6 +3639,55 @@ var SwapCrossChainProcessingView = ({
3536
3639
  }
3537
3640
  );
3538
3641
  };
3642
+ var InvestmentCrossChainProcessingView = ({
3643
+ title,
3644
+ description,
3645
+ progress,
3646
+ strategyName,
3647
+ strategyIcon,
3648
+ strategySymbol,
3649
+ apyLabel,
3650
+ apyValue,
3651
+ amountUSD,
3652
+ amountToken,
3653
+ onClose,
3654
+ transactionSteps,
3655
+ processingDetailsLabels
3656
+ }) => {
3657
+ return /* @__PURE__ */ jsxs(
3658
+ TransactionScreen,
3659
+ {
3660
+ progress,
3661
+ iconType: "processing",
3662
+ title,
3663
+ description,
3664
+ onClose,
3665
+ children: [
3666
+ /* @__PURE__ */ jsx(
3667
+ TransactionScreenInvestmentCard,
3668
+ {
3669
+ strategyName,
3670
+ apyLabel,
3671
+ apyValue,
3672
+ iconSrc: strategyIcon,
3673
+ iconAlt: strategySymbol,
3674
+ amountUSD,
3675
+ amountToken
3676
+ }
3677
+ ),
3678
+ /* @__PURE__ */ jsx(
3679
+ TransactionProcessingDetails,
3680
+ {
3681
+ steps: transactionSteps,
3682
+ defaultOpen: true,
3683
+ className: "bg-[var(--deframe-widget-color-bg-secondary)] lg:!bg-[var(--deframe-widget-color-bg-secondary)]",
3684
+ labels: processingDetailsLabels
3685
+ }
3686
+ )
3687
+ ]
3688
+ }
3689
+ );
3690
+ };
3539
3691
  var SwapSignatureWarningView = ({
3540
3692
  fromTokenSymbol,
3541
3693
  fromTokenIcon,
@@ -7346,7 +7498,10 @@ var WalletBalances = ({ cards, variant = "subtle", className }) => {
7346
7498
  const bgClass = variant === "raised" ? "bg-[var(--deframe-widget-color-bg-raised)]" : "bg-[var(--deframe-widget-color-bg-subtle)]";
7347
7499
  return /* @__PURE__ */ jsx("div", { className: twMerge("w-full flex flex-row gap-4 mt-md", className), children: cards.map((card) => /* @__PURE__ */ jsxs("div", { className: twMerge("flex-1 h-auto px-6 py-4 rounded shadow-sm flex flex-col items-start justify-start gap-xs", bgClass), children: [
7348
7500
  /* @__PURE__ */ jsx(TextBody, { variant: "text-small", children: card.label }),
7349
- /* @__PURE__ */ jsx(TextHeading, { variant: "h3", children: card.value })
7501
+ card.badge ? /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-xs md:flex-row md:items-end md:gap-[var(--deframe-widget-size-gap-md)]", children: [
7502
+ /* @__PURE__ */ jsx(TextHeading, { variant: "h3", children: card.value }),
7503
+ /* @__PURE__ */ jsx("div", { className: "md:pl-[var(--deframe-widget-size-padding-x-md)]", children: card.badge })
7504
+ ] }) : /* @__PURE__ */ jsx(TextHeading, { variant: "h3", children: card.value })
7350
7505
  ] }, card.label)) });
7351
7506
  };
7352
7507
  var HistoryTabEmpty = ({ title, description }) => /* @__PURE__ */ jsx("div", { className: "w-full h-[90vh] py-md bg-bg-default dark:bg-bg-default-dark rounded-lg flex flex-col justify-center items-center gap-sm overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "w-full flex flex-col justify-center items-center gap-md", children: [
@@ -7439,6 +7594,8 @@ var EarnInvestmentSummaryView = ({
7439
7594
  totalInvestedValue,
7440
7595
  totalReturnLabel,
7441
7596
  totalReturnValue,
7597
+ processingBadgeLabel,
7598
+ processingBadgeTitle,
7442
7599
  className
7443
7600
  }) => {
7444
7601
  return /* @__PURE__ */ jsxs("section", { className: twMerge("flex flex-col gap-md p-lg bg-bg-subtle dark:bg-bg-subtle-dark rounded", className), children: [
@@ -7447,7 +7604,17 @@ var EarnInvestmentSummaryView = ({
7447
7604
  WalletBalances,
7448
7605
  {
7449
7606
  cards: [
7450
- { label: totalInvestedLabel, value: totalInvestedValue },
7607
+ {
7608
+ label: totalInvestedLabel,
7609
+ value: totalInvestedValue,
7610
+ badge: processingBadgeLabel ? /* @__PURE__ */ jsx(
7611
+ ProcessingBadge,
7612
+ {
7613
+ label: processingBadgeLabel,
7614
+ title: processingBadgeTitle
7615
+ }
7616
+ ) : void 0
7617
+ },
7451
7618
  { label: totalReturnLabel, value: totalReturnValue }
7452
7619
  ],
7453
7620
  variant: "raised",
@@ -7947,7 +8114,15 @@ var HistoryListView = ({
7947
8114
  ) }),
7948
8115
  /* @__PURE__ */ jsxs(ListItemContent, { children: [
7949
8116
  /* @__PURE__ */ jsx(Label, { className: "text-text-lg-mobile", children: item.title }),
7950
- /* @__PURE__ */ jsx(Label, { variant: "secondary", className: "text-text-tertiary dark:text-text-tertiary-dark", children: item.subtitle })
8117
+ /* @__PURE__ */ jsx(Label, { variant: "secondary", className: "text-text-tertiary dark:text-text-tertiary-dark", children: item.subtitle }),
8118
+ item.status === "PENDING" && item.statusLabel ? /* @__PURE__ */ jsx("div", { className: "mt-[6px]", children: /* @__PURE__ */ jsx(
8119
+ ProcessingBadge,
8120
+ {
8121
+ label: item.statusLabel,
8122
+ title: item.statusTitle,
8123
+ size: "compact"
8124
+ }
8125
+ ) }) : null
7951
8126
  ] }),
7952
8127
  /* @__PURE__ */ jsx(ListItemRightSide, { children: /* @__PURE__ */ jsx(AmountDisplay, { amount: item.amountFormatted, usdAmount: item.amountUsd }) })
7953
8128
  ]
@@ -7961,12 +8136,15 @@ var HistoryListView = ({
7961
8136
  var EarnTokenSelectorView = ({
7962
8137
  selectedToken,
7963
8138
  onTokenClick,
8139
+ onNetworkClick,
7964
8140
  isLoading,
7965
8141
  selectTokenLabel,
7966
8142
  chainLabel,
7967
8143
  chainImage,
7968
8144
  chainDirectionLabel,
7969
- chainDisabledTitle
8145
+ chainDisabledTitle,
8146
+ isNetworkDisabled = false,
8147
+ currentNetworkSelected
7970
8148
  }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-[10px]", children: [
7971
8149
  /* @__PURE__ */ jsx("div", { className: "flex gap-[10px] w-full", children: /* @__PURE__ */ jsx(
7972
8150
  "button",
@@ -7996,13 +8174,14 @@ var EarnTokenSelectorView = ({
7996
8174
  "button",
7997
8175
  {
7998
8176
  type: "button",
7999
- disabled: true,
8177
+ onClick: () => onNetworkClick == null ? void 0 : onNetworkClick(currentNetworkSelected),
8178
+ disabled: isNetworkDisabled,
8000
8179
  title: chainDisabledTitle,
8001
- className: "bg-[var(--deframe-widget-color-bg-tertiary)] border border-[var(--deframe-widget-color-border-secondary)] rounded-lg flex gap-[var(--deframe-widget-size-gap-xs)] items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] opacity-60 cursor-not-allowed",
8180
+ className: `bg-[var(--deframe-widget-color-bg-tertiary)] border border-[var(--deframe-widget-color-border-secondary)] rounded-lg flex gap-[var(--deframe-widget-size-gap-xs)] items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] transition-colors ${isNetworkDisabled ? "opacity-60 cursor-not-allowed" : "cursor-pointer hover:border-[var(--deframe-widget-color-border-primary)]"}`,
8002
8181
  children: [
8003
8182
  chainImage && /* @__PURE__ */ jsx("img", { src: chainImage, alt: "", className: "w-3 h-3 rounded-full" }),
8004
8183
  /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "text-[color:var(--deframe-widget-color-text-secondary)]", children: chainLabel }),
8005
- /* @__PURE__ */ jsx("div", { className: "w-[18px] h-[18px] flex items-center justify-center opacity-50", children: /* @__PURE__ */ jsx(HiChevronDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
8184
+ /* @__PURE__ */ jsx("div", { className: `w-[18px] h-[18px] flex items-center justify-center ${isNetworkDisabled ? "opacity-50" : ""}`, children: /* @__PURE__ */ jsx(HiChevronDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
8006
8185
  ]
8007
8186
  }
8008
8187
  )
@@ -8052,11 +8231,14 @@ var EarnPercentageButtonsView = ({
8052
8231
  var EarnWithdrawTokenSelectorView = ({
8053
8232
  selectedToken,
8054
8233
  onTokenClick,
8234
+ onNetworkClick,
8055
8235
  selectTokenLabel,
8056
8236
  chainLabel,
8057
8237
  chainImage,
8058
8238
  chainDirectionLabel,
8059
- chainDisabledTitle
8239
+ chainDisabledTitle,
8240
+ isNetworkDisabled = false,
8241
+ currentNetworkSelected
8060
8242
  }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-[10px]", children: [
8061
8243
  /* @__PURE__ */ jsx("div", { className: "flex gap-[10px] w-full", children: /* @__PURE__ */ jsx(
8062
8244
  "button",
@@ -8086,13 +8268,14 @@ var EarnWithdrawTokenSelectorView = ({
8086
8268
  "button",
8087
8269
  {
8088
8270
  type: "button",
8089
- disabled: true,
8271
+ onClick: () => onNetworkClick == null ? void 0 : onNetworkClick(currentNetworkSelected),
8272
+ disabled: isNetworkDisabled,
8090
8273
  title: chainDisabledTitle,
8091
- className: "bg-[var(--deframe-widget-color-bg-tertiary)] border border-[var(--deframe-widget-color-border-secondary)] rounded-lg flex gap-[var(--deframe-widget-size-gap-xs)] items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] opacity-60 cursor-not-allowed",
8274
+ className: `bg-[var(--deframe-widget-color-bg-tertiary)] border border-[var(--deframe-widget-color-border-secondary)] rounded-lg flex gap-[var(--deframe-widget-size-gap-xs)] items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] transition-colors ${isNetworkDisabled ? "opacity-60 cursor-not-allowed" : "cursor-pointer hover:border-[var(--deframe-widget-color-border-primary)]"}`,
8092
8275
  children: [
8093
8276
  chainImage && /* @__PURE__ */ jsx("img", { src: chainImage, alt: "", className: "w-3 h-3 rounded-full" }),
8094
8277
  /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "text-[color:var(--deframe-widget-color-text-secondary)]", children: chainLabel }),
8095
- /* @__PURE__ */ jsx("div", { className: "w-[18px] h-[18px] flex items-center justify-center opacity-50", children: /* @__PURE__ */ jsx(MdArrowDropDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
8278
+ /* @__PURE__ */ jsx("div", { className: `w-[18px] h-[18px] flex items-center justify-center ${isNetworkDisabled ? "opacity-50" : ""}`, children: /* @__PURE__ */ jsx(MdArrowDropDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
8096
8279
  ]
8097
8280
  }
8098
8281
  )
@@ -8180,6 +8363,9 @@ var EarnDepositFormView = ({
8180
8363
  chainImage,
8181
8364
  chainDirectionLabel,
8182
8365
  chainDisabledTitle,
8366
+ onNetworkClick,
8367
+ isNetworkDisabled,
8368
+ currentNetworkSelected,
8183
8369
  // Amount input
8184
8370
  amountValue,
8185
8371
  onAmountChange,
@@ -8232,7 +8418,10 @@ var EarnDepositFormView = ({
8232
8418
  chainLabel,
8233
8419
  chainImage,
8234
8420
  chainDirectionLabel,
8235
- chainDisabledTitle
8421
+ chainDisabledTitle,
8422
+ onNetworkClick,
8423
+ isNetworkDisabled,
8424
+ currentNetworkSelected
8236
8425
  }
8237
8426
  ),
8238
8427
  /* @__PURE__ */ jsx(
@@ -8318,6 +8507,9 @@ var EarnWithdrawFormView = ({
8318
8507
  chainImage,
8319
8508
  chainDirectionLabel,
8320
8509
  chainDisabledTitle,
8510
+ onNetworkClick,
8511
+ isNetworkDisabled,
8512
+ currentNetworkSelected,
8321
8513
  // Amount input
8322
8514
  amountValue,
8323
8515
  onAmountChange,
@@ -8373,7 +8565,10 @@ var EarnWithdrawFormView = ({
8373
8565
  chainLabel,
8374
8566
  chainImage,
8375
8567
  chainDirectionLabel,
8376
- chainDisabledTitle
8568
+ chainDisabledTitle,
8569
+ onNetworkClick,
8570
+ isNetworkDisabled,
8571
+ currentNetworkSelected
8377
8572
  }
8378
8573
  ),
8379
8574
  /* @__PURE__ */ jsx(
@@ -8942,6 +9137,6 @@ var EarnWithdrawFailedView = ({
8942
9137
  );
8943
9138
  };
8944
9139
 
8945
- export { ActionButton, ActionSheet, AddressDisplay, ApyRange, BackButton, BackgroundContainer, BannerNotification, ChooseANetworkView, ChooseAStrategyActionsheetView, ChooseAnAssetSwapView, ChooseNetworkAndAssetViewSimple, CloseButton_default as CloseButton, CollapsibleInfoRow, CollapsibleSection, ConfirmSwapButtonView, ConfirmSwapButtonViewSimple, ConnectWalletList, Currency, DeframeComponentsProvider, DetailsHeader, EarnAmountInputView, EarnBalanceCard, EarnBytecodeErrorView, EarnDepositFailedView, EarnDepositFormView, EarnDepositProcessingView, EarnDepositSuccessView, EarnDepositWarningView, EarnDesktopView, EarnExploreGridView, EarnInvestedSectionView, EarnInvestmentDetailsView, EarnInvestmentSummaryView, EarnNoBalanceNotificationView, EarnPercentageButtonsView, EarnPositionCardView, EarnRecentTransactionsView, EarnTokenSelectorView, EarnTxStatusCardView, EarnWithdrawFailedView, EarnWithdrawFormView, EarnWithdrawProcessingView, EarnWithdrawSuccessView, EarnWithdrawTokenSelectorView, EarnWithdrawWarningView, Currency as Fiat, FlexCol, FlexRow, GroupedStrategyListView, HighRiskBadge, HistoryDepositDetailsView, HistoryListSkeleton, HistoryListView, HistorySwapDetailsView, HistoryTabEmpty, HistoryWithdrawDetailsView, InfoLabel, InfoRow, InfoRowIconLabel, InfoRowIconValue, InfoRowWithIcon, InfoValue, Input2 as Input, Label, Link, ListItem, ListItemContent, ListItemLeftSide, ListItemRightSide, LoadingDots, LowRiskBadge, MediumRiskBadge, Navbar, PercentageButton, PrimaryButton, ProgressIndicator, ScrollableContent, SearchEmptyState, SearchInput, SecondaryButton, SectionCard, Select, SelectContent, SelectItem, SelectTrigger, Skeleton, StepDisplay, StepStatusIcon, StepStatusText, StrategyDetailsView, StrategyGridCard, SummaryDetails, SummaryDetailsCryptoControlV2, SwapAdvancedSettingsView, SwapAmountInputView, SwapCrossChainProcessingView, SwapFormView, SwapFormViewSimple, SwapFromCardView, SwapFromCardViewSimple, SwapHistoryView, SwapProcessingView, SwapProcessingViewSimple, SwapQuoteDetailsView, SwapSignatureWarningView, SwapSignatureWarningViewSimple, SwapSuccessView, SwapSuccessViewSimple, SwapToCardView, SwapToCardViewSimple, SwapTransactionFailedView, SwapTransactionFailedViewSimple, SwapWidgetFallbackView, Tabs, TabsContent, TabsList, TabsTrigger, TertiaryButton, Text_default as Text, TextAccent, TextBody, TextHeading, Title, TokenWithChainBadge, TransactionProcessingDetails, TransactionScreen, TransactionScreenIcon, TransactionScreenInvestmentCard, WalletBalances, WalletConnectPanel, WalletItem, ConnectWalletList as WalletList, WalletListContainer };
9140
+ export { ActionButton, ActionSheet, AddressDisplay, ApyRange, BackButton, BackgroundContainer, BannerNotification, ChooseANetworkView, ChooseAStrategyActionsheetView, ChooseAnAssetSwapView, ChooseNetworkAndAssetViewSimple, CloseButton_default as CloseButton, CollapsibleInfoRow, CollapsibleSection, ConfirmSwapButtonView, ConfirmSwapButtonViewSimple, ConnectWalletList, Currency, DeframeComponentsProvider, DetailsHeader, EarnAmountInputView, EarnBalanceCard, EarnBytecodeErrorView, EarnDepositFailedView, EarnDepositFormView, EarnDepositProcessingView, EarnDepositSuccessView, EarnDepositWarningView, EarnDesktopView, EarnExploreGridView, EarnInvestedSectionView, EarnInvestmentDetailsView, EarnInvestmentSummaryView, EarnNoBalanceNotificationView, EarnPercentageButtonsView, EarnPositionCardView, EarnRecentTransactionsView, EarnTokenSelectorView, EarnTxStatusCardView, EarnWithdrawFailedView, EarnWithdrawFormView, EarnWithdrawProcessingView, EarnWithdrawSuccessView, EarnWithdrawTokenSelectorView, EarnWithdrawWarningView, Currency as Fiat, FlexCol, FlexRow, GroupedStrategyListView, HighRiskBadge, HistoryDepositDetailsView, HistoryListSkeleton, HistoryListView, HistorySwapDetailsView, HistoryTabEmpty, HistoryWithdrawDetailsView, InfoLabel, InfoRow, InfoRowIconLabel, InfoRowIconValue, InfoRowWithIcon, InfoValue, Input2 as Input, InvestmentCrossChainProcessingView, Label, Link, ListItem, ListItemContent, ListItemLeftSide, ListItemRightSide, LoadingDots, LowRiskBadge, MediumRiskBadge, Navbar, PercentageButton, PrimaryButton, ProcessingBadge, ProgressIndicator, ScrollableContent, SearchEmptyState, SearchInput, SecondaryButton, SectionCard, Select, SelectContent, SelectItem, SelectTrigger, Skeleton, StepDisplay, StepStatusIcon, StepStatusText, StrategyDetailsView, StrategyGridCard, SummaryDetails, SummaryDetailsCryptoControlV2, SwapAdvancedSettingsView, SwapAmountInputView, SwapCrossChainProcessingView, SwapFormView, SwapFormViewSimple, SwapFromCardView, SwapFromCardViewSimple, SwapHistoryView, SwapProcessingView, SwapProcessingViewSimple, SwapQuoteDetailsView, SwapSignatureWarningView, SwapSignatureWarningViewSimple, SwapSuccessView, SwapSuccessViewSimple, SwapToCardView, SwapToCardViewSimple, SwapTransactionFailedView, SwapTransactionFailedViewSimple, SwapWidgetFallbackView, Tabs, TabsContent, TabsList, TabsTrigger, TertiaryButton, Text_default as Text, TextAccent, TextBody, TextHeading, Title, TokenWithChainBadge, TransactionProcessingDetails, TransactionScreen, TransactionScreenIcon, TransactionScreenInvestmentCard, WalletBalances, WalletConnectPanel, WalletItem, ConnectWalletList as WalletList, WalletListContainer };
8946
9141
  //# sourceMappingURL=index.mjs.map
8947
9142
  //# sourceMappingURL=index.mjs.map