@deframe-sdk/components 0.1.15 → 0.1.17

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
@@ -4,7 +4,7 @@ import { HiXMark, HiChevronUp, HiChevronDown, HiChevronLeft, HiArrowRight, HiArr
4
4
  import * as React6 from 'react';
5
5
  import React6__default, { useState, useEffect } from 'react';
6
6
  import { motion, AnimatePresence } from 'framer-motion';
7
- import { MdClose, MdOutlineSearch, MdOutlineSearchOff, MdOutlineSwapHoriz, MdHistory, MdArrowRight, MdArrowDropDown, MdCheckCircleOutline, MdErrorOutline, MdWarningAmber, MdInfoOutline, MdArrowUpward, MdArrowDownward } from 'react-icons/md';
7
+ import { MdClose, MdOutlineSearch, MdOutlineSearchOff, MdOutlineSwapHoriz, MdHistory, MdOutlineSwapVert, MdArrowRight, MdArrowDropDown, MdCheckCircleOutline, MdErrorOutline, MdWarningAmber, MdInfoOutline, MdArrowUpward, MdArrowDownward } from 'react-icons/md';
8
8
  import { IoAlertCircleOutline, IoTimeOutline, IoCheckmarkOutline } from 'react-icons/io5';
9
9
  import { PiClockCountdownBold } from 'react-icons/pi';
10
10
 
@@ -231,14 +231,14 @@ function SecondaryButton(_a) {
231
231
  ].join(" ");
232
232
  const stateClasses = {
233
233
  enabled: [
234
- "text-[color:var(--deframe-widget-color-text-secondary)]",
235
- "border-[color:var(--deframe-widget-color-border-secondary)]",
234
+ "text-[color:var(--deframe-widget-color-brand-primary)]",
235
+ "border-[color:var(--deframe-widget-color-brand-primary)]",
236
236
  "hover:opacity-90",
237
237
  "cursor-pointer"
238
238
  ].join(" "),
239
239
  disabled: [
240
- "text-[color:var(--deframe-widget-color-text-secondary-disabled)]",
241
- "border-[color:var(--deframe-widget-color-border-secondary-disabled)]",
240
+ "text-[color:var(--deframe-widget-color-brand-primary-disabled)]",
241
+ "border-[color:var(--deframe-widget-color-brand-primary-disabled)]",
242
242
  "cursor-not-allowed"
243
243
  ].join(" ")
244
244
  };
@@ -368,14 +368,21 @@ function InputField(_a) {
368
368
  "transition-colors"
369
369
  ].join(" ");
370
370
  const stateClasses = {
371
- error: "border border-[var(--deframe-widget-color-state-error)]",
371
+ default: [
372
+ "border border-[var(--deframe-widget-color-border-primary)]",
373
+ "bg-[var(--deframe-widget-color-bg-raised)]"
374
+ ].join(" "),
375
+ error: [
376
+ "border border-[var(--deframe-widget-color-state-error)]",
377
+ "bg-[var(--deframe-widget-color-bg-raised)]"
378
+ ].join(" "),
372
379
  disabled: [
373
380
  "border",
374
381
  "border-[var(--deframe-widget-color-border-primary-disabled)]",
382
+ "bg-[var(--deframe-widget-color-bg-raised-disabled)]",
375
383
  "opacity-60",
376
384
  "cursor-not-allowed"
377
- ].join(" "),
378
- default: "border border-[var(--deframe-widget-color-border-primary)]"
385
+ ].join(" ")
379
386
  };
380
387
  const stateKey = hasError ? "error" : disabled ? "disabled" : "default";
381
388
  const fieldClasses = twMerge(baseClasses, stateClasses[stateKey], className);
@@ -418,12 +425,12 @@ function Link(_a) {
418
425
  ].join(" ");
419
426
  const stateClasses = {
420
427
  enabled: [
421
- "text-[color:var(--deframe-widget-color-text-highlight)]",
422
- "underline",
428
+ "text-[color:var(--deframe-widget-color-text-primary)]",
429
+ "hover:underline",
423
430
  "cursor-pointer"
424
431
  ].join(" "),
425
432
  disabled: [
426
- "text-[color:var(--deframe-widget-color-text-highlight-disabled)]",
433
+ "text-[color:var(--deframe-widget-color-text-primary-disabled)]",
427
434
  "cursor-not-allowed",
428
435
  "pointer-events-none"
429
436
  ].join(" ")
@@ -2611,45 +2618,6 @@ var HistoryWithdrawDetailsView = ({
2611
2618
  ] }) })
2612
2619
  ] });
2613
2620
  };
2614
- var SwapNetworkSelectorView = ({
2615
- chainLabel,
2616
- chainImage,
2617
- onClick,
2618
- directionLabel = "De",
2619
- testId = "swap-network-selector",
2620
- className
2621
- }) => {
2622
- const baseClasses = "flex flex-row items-center gap-[var(--deframe-widget-size-gap-xs)]";
2623
- return /* @__PURE__ */ jsxs("div", { "data-test-id": testId, className: twMerge(baseClasses, className), children: [
2624
- /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "tracking-wide text-[color:var(--deframe-widget-color-text-tertiary)]", children: directionLabel }),
2625
- /* @__PURE__ */ jsxs(
2626
- "button",
2627
- {
2628
- "data-testid": testId,
2629
- type: "button",
2630
- onClick,
2631
- className: "ml-[var(--deframe-widget-size-gap-lg)] bg-[var(--deframe-widget-color-bg-tertiary)] border border-[color:var(--deframe-widget-color-border-tertiary)] rounded-[var(--deframe-widget-size-radius-md)] 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)] hover:border-[color:var(--deframe-widget-color-border-secondary)] transition-colors [font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)] cursor-pointer",
2632
- "aria-label": `${directionLabel} ${chainLabel}`,
2633
- children: [
2634
- chainImage ? /* @__PURE__ */ jsx("img", { src: chainImage, alt: chainLabel, className: "w-3 h-3 rounded-[var(--deframe-widget-size-radius-full)]" }) : null,
2635
- /* @__PURE__ */ jsx("span", { children: chainLabel }),
2636
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-[18px] h-[18px]", children: /* @__PURE__ */ jsx(HiChevronDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
2637
- ]
2638
- }
2639
- )
2640
- ] });
2641
- };
2642
- var SwapQuoteHeaderView = ({
2643
- label,
2644
- timerElement,
2645
- className
2646
- }) => {
2647
- const baseClasses = "border-b border-[color:var(--deframe-widget-color-border-secondary)] pb-[var(--deframe-widget-size-padding-y-sm)]";
2648
- return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-quote-header", className: twMerge(baseClasses, className), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
2649
- /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "[font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-secondary)] inline-flex items-center", children: label }),
2650
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-md)]", children: timerElement })
2651
- ] }) });
2652
- };
2653
2621
  var SwapAmountInputView = ({
2654
2622
  value,
2655
2623
  hasError,
@@ -2707,127 +2675,6 @@ var SwapAmountInputView = ({
2707
2675
  })
2708
2676
  );
2709
2677
  };
2710
- var SwapOutputAmountView = ({
2711
- displayOutput,
2712
- isLoading,
2713
- loadingElement,
2714
- searchingQuoteLabel = "Searching quote...",
2715
- className
2716
- }) => {
2717
- const baseClasses = "[font-size:var(--deframe-widget-font-size-xxl)] [line-height:var(--deframe-widget-font-leading-xxl)] [font-weight:var(--deframe-widget-font-weight-extrabold)] text-right w-full min-w-[120px] text-[color:var(--deframe-widget-color-text-primary)]";
2718
- return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-flow-output-amount", className: twMerge(baseClasses, className), children: isLoading ? /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "text-[color:var(--deframe-widget-color-text-primary-disabled)] inline-flex items-center", children: loadingElement != null ? loadingElement : searchingQuoteLabel }) : displayOutput });
2719
- };
2720
- var SwapQuoteErrorsView = ({
2721
- hasQuoteError,
2722
- hasBytecodeError,
2723
- quoteErrorMessage = "Unable to get quote for this transaction",
2724
- bytecodeErrorMessage = "Error building transaction"
2725
- }) => {
2726
- return /* @__PURE__ */ jsxs("div", { "data-test-id": "swap-quote-errors", children: [
2727
- hasQuoteError && /* @__PURE__ */ jsx("div", { className: "mt-sm", children: /* @__PURE__ */ jsx(
2728
- BannerNotification,
2729
- {
2730
- type: "inline",
2731
- variant: "error",
2732
- message: quoteErrorMessage
2733
- }
2734
- ) }),
2735
- hasBytecodeError && /* @__PURE__ */ jsx("div", { className: "mt-sm", children: /* @__PURE__ */ jsx(
2736
- BannerNotification,
2737
- {
2738
- type: "inline",
2739
- variant: "error",
2740
- message: bytecodeErrorMessage
2741
- }
2742
- ) })
2743
- ] });
2744
- };
2745
- var SLIPPAGE_OPTIONS = [10, 50, 100];
2746
- var SwapSlippageToleranceButtonsView = ({
2747
- slippageBps,
2748
- onSelect,
2749
- formatPercentage,
2750
- className
2751
- }) => {
2752
- const baseClasses = "flex gap-[var(--deframe-widget-size-gap-xs)]";
2753
- return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-slippage-tolerance-buttons", className: twMerge(baseClasses, className), children: SLIPPAGE_OPTIONS.map((option) => {
2754
- const isActive = slippageBps === option;
2755
- const activeClasses = "border-[color:var(--deframe-widget-color-brand-primary)] text-[color:var(--deframe-widget-color-brand-primary)] bg-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_18%,transparent)]";
2756
- const inactiveClasses = "border-[color:var(--deframe-widget-color-border-tertiary)] text-[color:var(--deframe-widget-color-text-secondary)] bg-[var(--deframe-widget-color-bg-primary)]";
2757
- const buttonBase = "px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] rounded-[var(--deframe-widget-size-radius-xs)] border [font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] cursor-pointer";
2758
- return /* @__PURE__ */ jsx(
2759
- "button",
2760
- {
2761
- "data-test-id": `slippage-option-${option}`,
2762
- type: "button",
2763
- onClick: () => onSelect(option),
2764
- className: twMerge(buttonBase, isActive ? activeClasses : inactiveClasses),
2765
- "aria-label": `${formatPercentage(option)}% slippage`,
2766
- "aria-pressed": isActive,
2767
- children: formatPercentage(option)
2768
- },
2769
- option
2770
- );
2771
- }) });
2772
- };
2773
- var SwapTokenSelectorView = ({
2774
- token,
2775
- onClick,
2776
- testId = "swap-token-selector",
2777
- selectTokenLabel = "Select token",
2778
- className
2779
- }) => {
2780
- const baseClasses = "h-[56px] border border-[color:var(--deframe-widget-color-border-secondary)] rounded-[var(--deframe-widget-size-radius-xs)] overflow-hidden hover:border-[color:var(--deframe-widget-color-border-primary)] transition-colors flex items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[6px] w-full cursor-pointer";
2781
- return /* @__PURE__ */ jsxs(
2782
- "button",
2783
- {
2784
- "data-test-id": testId,
2785
- type: "button",
2786
- onClick,
2787
- className: twMerge(baseClasses, className),
2788
- "aria-label": token ? token.symbol : selectTokenLabel,
2789
- children: [
2790
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] flex-1", children: token ? /* @__PURE__ */ jsxs(Fragment, { children: [
2791
- token.logoURI ? /* @__PURE__ */ jsx("img", { src: token.logoURI, alt: token.symbol, className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)]" }) : /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-secondary)] text-[color:var(--deframe-widget-color-text-secondary)] flex items-center justify-center text-[10px] [font-weight:var(--deframe-widget-font-weight-semibold)]", children: (token.symbol || "").slice(0, 3).toUpperCase() }),
2792
- /* @__PURE__ */ jsx(TextBody, { as: "span", className: "text-[color:var(--deframe-widget-color-text-primary)]", children: token.symbol })
2793
- ] }) : /* @__PURE__ */ jsx(TextBody, { as: "span", className: "text-[color:var(--deframe-widget-color-text-secondary)]", children: selectTokenLabel }) }),
2794
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-[18px] h-[18px]", children: /* @__PURE__ */ jsx(HiChevronDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
2795
- ]
2796
- }
2797
- );
2798
- };
2799
- var SwapQuoteBlockchainCostsView = ({
2800
- totalCostFormatted,
2801
- feePercentage,
2802
- gasCostFormatted,
2803
- protocolFee,
2804
- blockchainCostsLabel = "Blockchain Costs",
2805
- networkGasLabel = "Network Gas",
2806
- protocolFeeLabel = "Protocol Fee",
2807
- collapseLabel = "Collapse",
2808
- expandLabel = "Expand"
2809
- }) => {
2810
- return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-quote-blockchain-costs", children: /* @__PURE__ */ jsx(
2811
- CollapsibleInfoRow,
2812
- {
2813
- label: blockchainCostsLabel,
2814
- value: `${totalCostFormatted} ~ ${feePercentage}%`,
2815
- defaultOpen: true,
2816
- collapseLabel,
2817
- expandLabel,
2818
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-[var(--deframe-widget-size-gap-sm)]", children: [
2819
- /* @__PURE__ */ jsxs(InfoRowWithIcon, { children: [
2820
- /* @__PURE__ */ jsx(InfoRowIconLabel, { children: networkGasLabel }),
2821
- /* @__PURE__ */ jsx(InfoRowIconValue, { children: gasCostFormatted })
2822
- ] }),
2823
- /* @__PURE__ */ jsxs(InfoRowWithIcon, { borderBottom: true, children: [
2824
- /* @__PURE__ */ jsx(InfoRowIconLabel, { children: protocolFeeLabel }),
2825
- /* @__PURE__ */ jsx(InfoRowIconValue, { children: protocolFee })
2826
- ] })
2827
- ] })
2828
- }
2829
- ) });
2830
- };
2831
2678
  var ChooseAStrategyActionsheetView = ({
2832
2679
  isOpen,
2833
2680
  currentActionSheetId,
@@ -2896,8 +2743,16 @@ var StrategyDetailsView = ({
2896
2743
  headerTitle = "Details",
2897
2744
  strategyInfoTitle = "Strategy Info",
2898
2745
  depositButtonLabel = "Deposit",
2899
- backAriaLabel = "Back"
2746
+ backAriaLabel = "Back",
2747
+ error,
2748
+ notFoundMessage
2900
2749
  }) => {
2750
+ if (error) {
2751
+ return /* @__PURE__ */ jsx(BackgroundContainer, { children: /* @__PURE__ */ jsx("div", { className: "text-text-secondary dark:text-text-secondary-dark p-md", children: error }) });
2752
+ }
2753
+ if (notFoundMessage) {
2754
+ return /* @__PURE__ */ jsx(BackgroundContainer, { children: /* @__PURE__ */ jsx("div", { className: "text-text-secondary dark:text-text-secondary-dark p-md", children: notFoundMessage }) });
2755
+ }
2901
2756
  return /* @__PURE__ */ jsxs(BackgroundContainer, { children: [
2902
2757
  /* @__PURE__ */ jsx(DetailsHeader, { title: headerTitle, onBack, backAriaLabel }),
2903
2758
  /* @__PURE__ */ jsx("div", { "data-test-id": "strategy-details-content", className: "flex-1 min-h-0 overflow-y-auto px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-md)] py-[var(--deframe-widget-size-padding-y-lg)] pb-[var(--deframe-widget-size-padding-y-xxl)]", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-[var(--deframe-widget-size-gap-lg)] min-h-full", children: [
@@ -4106,56 +3961,56 @@ var ChooseAnAssetSwapView = ({
4106
3961
  }
4107
3962
  ) });
4108
3963
  };
4109
- var SwapFormView = ({
4110
- labels,
4111
- onHistoryClick,
4112
- fromCard,
4113
- switchButton,
4114
- toCard,
4115
- advancedSettings,
4116
- transactionDetails,
4117
- confirmButton
3964
+ var SwapTokenSelectorView = ({
3965
+ token,
3966
+ onClick,
3967
+ testId = "swap-token-selector",
3968
+ selectTokenLabel = "Select token",
3969
+ className
4118
3970
  }) => {
4119
- return /* @__PURE__ */ jsxs(Fragment, { children: [
4120
- /* @__PURE__ */ jsx(
4121
- "div",
4122
- {
4123
- "data-testid": "swap-form-view",
4124
- className: "flex-1 min-h-0 overflow-y-auto swap-flow-content pr-sm",
4125
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-md text-text-secondary dark:text-text-secondary-dark", children: [
4126
- /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-md", children: [
4127
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-sm", children: [
4128
- /* @__PURE__ */ jsx(TextHeading, { variant: "h5", className: "!text-[21px]", children: /* @__PURE__ */ jsx("span", { "data-testid": "swap-flow-title", children: labels.title }) }),
4129
- labels.subtitle && /* @__PURE__ */ jsx(TextBody, { variant: "text-small", className: "!text-[14px]", children: labels.subtitle })
4130
- ] }),
4131
- /* @__PURE__ */ jsx(
4132
- "button",
4133
- {
4134
- "data-testid": "swap-history-button",
4135
- type: "button",
4136
- onClick: onHistoryClick,
4137
- className: "flex items-center justify-center w-12 h-12 transition-colors rounded-full cursor-pointer text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary",
4138
- "aria-label": labels.historyAriaLabel,
4139
- children: /* @__PURE__ */ jsx(MdHistory, { className: "w-6 h-6" })
4140
- }
4141
- )
4142
- ] }),
4143
- /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-stretch gap-sm", children: [
4144
- fromCard,
4145
- switchButton,
4146
- toCard
4147
- ] }),
4148
- advancedSettings,
4149
- /* @__PURE__ */ jsx("div", { className: "pb-xl", children: transactionDetails })
4150
- ] })
4151
- }
4152
- ),
4153
- /* @__PURE__ */ jsx(
4154
- "div",
3971
+ const baseClasses = "h-[56px] border border-[color:var(--deframe-widget-color-border-secondary)] rounded-[var(--deframe-widget-size-radius-xs)] overflow-hidden hover:border-[color:var(--deframe-widget-color-border-primary)] transition-colors flex items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[6px] w-full cursor-pointer";
3972
+ return /* @__PURE__ */ jsxs(
3973
+ "button",
3974
+ {
3975
+ "data-test-id": testId,
3976
+ type: "button",
3977
+ onClick,
3978
+ className: twMerge(baseClasses, className),
3979
+ "aria-label": token ? token.symbol : selectTokenLabel,
3980
+ children: [
3981
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] flex-1", children: token ? /* @__PURE__ */ jsxs(Fragment, { children: [
3982
+ token.logoURI ? /* @__PURE__ */ jsx("img", { src: token.logoURI, alt: token.symbol, className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)]" }) : /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-[var(--deframe-widget-size-radius-full)] bg-[var(--deframe-widget-color-bg-secondary)] text-[color:var(--deframe-widget-color-text-secondary)] flex items-center justify-center text-[10px] [font-weight:var(--deframe-widget-font-weight-semibold)]", children: (token.symbol || "").slice(0, 3).toUpperCase() }),
3983
+ /* @__PURE__ */ jsx(TextBody, { as: "span", className: "text-[color:var(--deframe-widget-color-text-primary)]", children: token.symbol })
3984
+ ] }) : /* @__PURE__ */ jsx(TextBody, { as: "span", className: "text-[color:var(--deframe-widget-color-text-secondary)]", children: selectTokenLabel }) }),
3985
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-[18px] h-[18px]", children: /* @__PURE__ */ jsx(HiChevronDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
3986
+ ]
3987
+ }
3988
+ );
3989
+ };
3990
+ var SwapNetworkSelectorView = ({
3991
+ chainLabel,
3992
+ chainImage,
3993
+ onClick,
3994
+ directionLabel = "De",
3995
+ testId = "swap-network-selector",
3996
+ className
3997
+ }) => {
3998
+ const baseClasses = "flex flex-row items-center gap-[var(--deframe-widget-size-gap-xs)]";
3999
+ return /* @__PURE__ */ jsxs("div", { "data-test-id": testId, className: twMerge(baseClasses, className), children: [
4000
+ /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "tracking-wide text-[color:var(--deframe-widget-color-text-tertiary)]", children: directionLabel }),
4001
+ /* @__PURE__ */ jsxs(
4002
+ "button",
4155
4003
  {
4156
- "data-testid": "swap-flow-footer",
4157
- className: "border-t p-md border-border-default dark:border-border-default-dark bg-bg-primary dark:bg-bg-primary-dark",
4158
- children: confirmButton
4004
+ "data-testid": testId,
4005
+ type: "button",
4006
+ onClick,
4007
+ className: "ml-[var(--deframe-widget-size-gap-lg)] bg-[var(--deframe-widget-color-bg-tertiary)] border border-[color:var(--deframe-widget-color-border-tertiary)] rounded-[var(--deframe-widget-size-radius-md)] 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)] hover:border-[color:var(--deframe-widget-color-border-secondary)] transition-colors [font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)] cursor-pointer",
4008
+ "aria-label": `${directionLabel} ${chainLabel}`,
4009
+ children: [
4010
+ chainImage ? /* @__PURE__ */ jsx("img", { src: chainImage, alt: chainLabel, className: "w-3 h-3 rounded-[var(--deframe-widget-size-radius-full)]" }) : null,
4011
+ /* @__PURE__ */ jsx("span", { children: chainLabel }),
4012
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-[18px] h-[18px]", children: /* @__PURE__ */ jsx(HiChevronDown, { className: "w-3 h-3 text-[color:var(--deframe-widget-color-text-tertiary)]" }) })
4013
+ ]
4159
4014
  }
4160
4015
  )
4161
4016
  ] });
@@ -4176,7 +4031,7 @@ var SwapFromCardView = ({
4176
4031
  maxFractionDigits,
4177
4032
  amountUsdFormatted,
4178
4033
  isAmountUsdLoading,
4179
- amountSlot
4034
+ field
4180
4035
  }) => {
4181
4036
  return /* @__PURE__ */ jsx(SectionCard, { className: "flex flex-col gap-sm", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-md items-center", children: [
4182
4037
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-sm flex-1", children: [
@@ -4231,7 +4086,7 @@ var SwapFromCardView = ({
4231
4086
  }
4232
4087
  )
4233
4088
  ] }),
4234
- /* @__PURE__ */ jsx("div", { className: "flex flex-col flex-1 items-end justify-center gap-xs", children: amountSlot != null ? amountSlot : /* @__PURE__ */ jsxs(Fragment, { children: [
4089
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 items-end justify-center gap-xs", children: [
4235
4090
  /* @__PURE__ */ jsx(
4236
4091
  SwapAmountInputView,
4237
4092
  {
@@ -4239,7 +4094,8 @@ var SwapFromCardView = ({
4239
4094
  hasError: amountHasError,
4240
4095
  onChange: onAmountChange,
4241
4096
  maxFractionDigits,
4242
- ariaLabel: labels.amountPlaceholder
4097
+ ariaLabel: labels.amountPlaceholder,
4098
+ field
4243
4099
  }
4244
4100
  ),
4245
4101
  /* @__PURE__ */ jsx(
@@ -4251,9 +4107,19 @@ var SwapFromCardView = ({
4251
4107
  children: isAmountUsdLoading ? /* @__PURE__ */ jsx(LoadingDots, {}) : amountUsdFormatted
4252
4108
  }
4253
4109
  )
4254
- ] }) })
4110
+ ] })
4255
4111
  ] }) });
4256
4112
  };
4113
+ var SwapOutputAmountView = ({
4114
+ displayOutput,
4115
+ isLoading,
4116
+ loadingElement,
4117
+ searchingQuoteLabel = "Searching quote...",
4118
+ className
4119
+ }) => {
4120
+ const baseClasses = "[font-size:var(--deframe-widget-font-size-xxl)] [line-height:var(--deframe-widget-font-leading-xxl)] [font-weight:var(--deframe-widget-font-weight-extrabold)] text-right w-full min-w-[120px] text-[color:var(--deframe-widget-color-text-primary)]";
4121
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-flow-output-amount", className: twMerge(baseClasses, className), children: isLoading ? /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "text-[color:var(--deframe-widget-color-text-primary-disabled)] inline-flex items-center", children: loadingElement != null ? loadingElement : searchingQuoteLabel }) : displayOutput });
4122
+ };
4257
4123
  var SwapToCardView = ({
4258
4124
  labels,
4259
4125
  selectedToken,
@@ -4331,6 +4197,152 @@ var SwapToCardView = ({
4331
4197
  ] })
4332
4198
  ] }) });
4333
4199
  };
4200
+ var SLIPPAGE_OPTIONS = [10, 50, 100];
4201
+ var SwapSlippageToleranceButtonsView = ({
4202
+ slippageBps,
4203
+ onSelect,
4204
+ formatPercentage,
4205
+ className
4206
+ }) => {
4207
+ const baseClasses = "flex gap-[var(--deframe-widget-size-gap-xs)]";
4208
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-slippage-tolerance-buttons", className: twMerge(baseClasses, className), children: SLIPPAGE_OPTIONS.map((option) => {
4209
+ const isActive = slippageBps === option;
4210
+ const activeClasses = "border-[color:var(--deframe-widget-color-brand-primary)] text-[color:var(--deframe-widget-color-brand-primary)] bg-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_18%,transparent)]";
4211
+ const inactiveClasses = "border-[color:var(--deframe-widget-color-border-tertiary)] text-[color:var(--deframe-widget-color-text-secondary)] bg-[var(--deframe-widget-color-bg-primary)]";
4212
+ const buttonBase = "px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)] rounded-[var(--deframe-widget-size-radius-xs)] border [font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] cursor-pointer";
4213
+ return /* @__PURE__ */ jsx(
4214
+ "button",
4215
+ {
4216
+ "data-test-id": `slippage-option-${option}`,
4217
+ type: "button",
4218
+ onClick: () => onSelect(option),
4219
+ className: twMerge(buttonBase, isActive ? activeClasses : inactiveClasses),
4220
+ "aria-label": `${formatPercentage(option)}% slippage`,
4221
+ "aria-pressed": isActive,
4222
+ children: formatPercentage(option)
4223
+ },
4224
+ option
4225
+ );
4226
+ }) });
4227
+ };
4228
+ var SwapAdvancedSettingsView = ({
4229
+ title,
4230
+ isOpen,
4231
+ onOpenChange,
4232
+ slippageBps,
4233
+ onSlippageSelect,
4234
+ formatPercentage,
4235
+ percentageOptions,
4236
+ onPercentageClick,
4237
+ slippageFormatted,
4238
+ collapseText,
4239
+ expandText,
4240
+ maxLabel
4241
+ }) => {
4242
+ return /* @__PURE__ */ jsx("div", { className: "pb-2 mt-md", children: /* @__PURE__ */ jsx(SectionCard, { children: /* @__PURE__ */ jsxs(
4243
+ CollapsibleSection,
4244
+ {
4245
+ title,
4246
+ subtitle: slippageFormatted,
4247
+ open: isOpen,
4248
+ onOpenChange,
4249
+ collapseText,
4250
+ expandText,
4251
+ children: [
4252
+ /* @__PURE__ */ jsx(
4253
+ SwapSlippageToleranceButtonsView,
4254
+ {
4255
+ slippageBps,
4256
+ onSelect: onSlippageSelect,
4257
+ formatPercentage,
4258
+ className: "mt-md"
4259
+ }
4260
+ ),
4261
+ /* @__PURE__ */ jsx("div", { className: "w-full mt-md", children: /* @__PURE__ */ jsx("div", { className: "flex w-full gap-sm", children: percentageOptions.map((pct, index) => {
4262
+ const isMax = index === percentageOptions.length - 1;
4263
+ const label = isMax ? maxLabel : `${pct / 100}%`;
4264
+ return /* @__PURE__ */ jsx(
4265
+ PercentageButton,
4266
+ {
4267
+ type: "button",
4268
+ onClick: () => onPercentageClick(pct),
4269
+ children: label
4270
+ },
4271
+ pct
4272
+ );
4273
+ }) }) })
4274
+ ]
4275
+ }
4276
+ ) }) });
4277
+ };
4278
+ var SwapQuoteHeaderView = ({
4279
+ label,
4280
+ timerElement,
4281
+ className
4282
+ }) => {
4283
+ const baseClasses = "border-b border-[color:var(--deframe-widget-color-border-secondary)] pb-[var(--deframe-widget-size-padding-y-sm)]";
4284
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-quote-header", className: twMerge(baseClasses, className), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
4285
+ /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "[font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-secondary)] inline-flex items-center", children: label }),
4286
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-md)]", children: timerElement })
4287
+ ] }) });
4288
+ };
4289
+ var SwapQuoteBlockchainCostsView = ({
4290
+ totalCostFormatted,
4291
+ feePercentage,
4292
+ gasCostFormatted,
4293
+ protocolFee,
4294
+ blockchainCostsLabel = "Blockchain Costs",
4295
+ networkGasLabel = "Network Gas",
4296
+ protocolFeeLabel = "Protocol Fee",
4297
+ collapseLabel = "Collapse",
4298
+ expandLabel = "Expand"
4299
+ }) => {
4300
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-quote-blockchain-costs", children: /* @__PURE__ */ jsx(
4301
+ CollapsibleInfoRow,
4302
+ {
4303
+ label: blockchainCostsLabel,
4304
+ value: `${totalCostFormatted} ~ ${feePercentage}%`,
4305
+ defaultOpen: true,
4306
+ collapseLabel,
4307
+ expandLabel,
4308
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-[var(--deframe-widget-size-gap-sm)]", children: [
4309
+ /* @__PURE__ */ jsxs(InfoRowWithIcon, { children: [
4310
+ /* @__PURE__ */ jsx(InfoRowIconLabel, { children: networkGasLabel }),
4311
+ /* @__PURE__ */ jsx(InfoRowIconValue, { children: gasCostFormatted })
4312
+ ] }),
4313
+ /* @__PURE__ */ jsxs(InfoRowWithIcon, { borderBottom: true, children: [
4314
+ /* @__PURE__ */ jsx(InfoRowIconLabel, { children: protocolFeeLabel }),
4315
+ /* @__PURE__ */ jsx(InfoRowIconValue, { children: protocolFee })
4316
+ ] })
4317
+ ] })
4318
+ }
4319
+ ) });
4320
+ };
4321
+ var SwapQuoteErrorsView = ({
4322
+ hasQuoteError,
4323
+ hasBytecodeError,
4324
+ quoteErrorMessage = "Unable to get quote for this transaction",
4325
+ bytecodeErrorMessage = "Error building transaction"
4326
+ }) => {
4327
+ return /* @__PURE__ */ jsxs("div", { "data-test-id": "swap-quote-errors", children: [
4328
+ hasQuoteError && /* @__PURE__ */ jsx("div", { className: "mt-sm", children: /* @__PURE__ */ jsx(
4329
+ BannerNotification,
4330
+ {
4331
+ type: "inline",
4332
+ variant: "error",
4333
+ message: quoteErrorMessage
4334
+ }
4335
+ ) }),
4336
+ hasBytecodeError && /* @__PURE__ */ jsx("div", { className: "mt-sm", children: /* @__PURE__ */ jsx(
4337
+ BannerNotification,
4338
+ {
4339
+ type: "inline",
4340
+ variant: "error",
4341
+ message: bytecodeErrorMessage
4342
+ }
4343
+ ) })
4344
+ ] });
4345
+ };
4334
4346
  var SwapQuoteDetailsView = ({
4335
4347
  labels,
4336
4348
  isVisible,
@@ -4401,7 +4413,7 @@ var SwapQuoteDetailsView = ({
4401
4413
  title: labels.headerLabel,
4402
4414
  items,
4403
4415
  defaultOpen: isVisible,
4404
- className: "bg-bg-subtle dark:bg-bg-subtle-dark rounded shadow-sm p-md flex flex-col lg:!bg-bg-raised"
4416
+ className: "rounded shadow-sm p-md flex flex-col bg-[var(--deframe-widget-color-bg-subtle)] lg:bg-[var(--deframe-widget-color-bg-raised)]"
4405
4417
  },
4406
4418
  `details-${isVisible}`
4407
4419
  ),
@@ -4416,56 +4428,6 @@ var SwapQuoteDetailsView = ({
4416
4428
  )
4417
4429
  ] });
4418
4430
  };
4419
- var SwapAdvancedSettingsView = ({
4420
- title,
4421
- isOpen,
4422
- onOpenChange,
4423
- slippageBps,
4424
- onSlippageSelect,
4425
- formatPercentage,
4426
- percentageOptions,
4427
- onPercentageClick,
4428
- slippageFormatted,
4429
- collapseText,
4430
- expandText,
4431
- maxLabel
4432
- }) => {
4433
- return /* @__PURE__ */ jsx("div", { className: "pb-2 mt-md", children: /* @__PURE__ */ jsx(SectionCard, { children: /* @__PURE__ */ jsxs(
4434
- CollapsibleSection,
4435
- {
4436
- title,
4437
- subtitle: slippageFormatted,
4438
- open: isOpen,
4439
- onOpenChange,
4440
- collapseText,
4441
- expandText,
4442
- children: [
4443
- /* @__PURE__ */ jsx(
4444
- SwapSlippageToleranceButtonsView,
4445
- {
4446
- slippageBps,
4447
- onSelect: onSlippageSelect,
4448
- formatPercentage,
4449
- className: "mt-md"
4450
- }
4451
- ),
4452
- /* @__PURE__ */ jsx("div", { className: "w-full mt-md", children: /* @__PURE__ */ jsx("div", { className: "flex w-full gap-sm", children: percentageOptions.map((pct, index) => {
4453
- const isMax = index === percentageOptions.length - 1;
4454
- const label = isMax ? maxLabel : `${pct / 100}%`;
4455
- return /* @__PURE__ */ jsx(
4456
- PercentageButton,
4457
- {
4458
- type: "button",
4459
- onClick: () => onPercentageClick(pct),
4460
- children: label
4461
- },
4462
- pct
4463
- );
4464
- }) }) })
4465
- ]
4466
- }
4467
- ) }) });
4468
- };
4469
4431
  var ConfirmSwapButtonView = ({
4470
4432
  buttonLabel,
4471
4433
  disabled,
@@ -4485,6 +4447,73 @@ var ConfirmSwapButtonView = ({
4485
4447
  }
4486
4448
  ) });
4487
4449
  };
4450
+ var SwapFormView = ({
4451
+ onSubmit,
4452
+ formRef,
4453
+ labels,
4454
+ onHistoryClick,
4455
+ onSwitchTokens,
4456
+ switchTokensAriaLabel,
4457
+ fromCard,
4458
+ toCard,
4459
+ advancedSettings,
4460
+ transactionDetails,
4461
+ confirmButton
4462
+ }) => {
4463
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
4464
+ /* @__PURE__ */ jsx(
4465
+ "div",
4466
+ {
4467
+ "data-testid": "swap-form-view",
4468
+ className: "flex-1 min-h-0 overflow-y-auto swap-flow-content pr-sm",
4469
+ children: /* @__PURE__ */ jsx("form", { ref: formRef, onSubmit, "data-testid": "swap-flow-form", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-md text-text-secondary dark:text-text-secondary-dark", children: [
4470
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-md", children: [
4471
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-sm", children: [
4472
+ /* @__PURE__ */ jsx(TextHeading, { variant: "h5", className: "!text-[21px]", children: /* @__PURE__ */ jsx("span", { "data-testid": "swap-flow-title", children: labels.title }) }),
4473
+ labels.subtitle && /* @__PURE__ */ jsx(TextBody, { variant: "text-small", className: "!text-[14px]", children: labels.subtitle })
4474
+ ] }),
4475
+ /* @__PURE__ */ jsx(
4476
+ "button",
4477
+ {
4478
+ "data-testid": "swap-history-button",
4479
+ type: "button",
4480
+ onClick: onHistoryClick,
4481
+ className: "flex items-center justify-center w-12 h-12 transition-colors rounded-full cursor-pointer text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary",
4482
+ "aria-label": labels.historyAriaLabel,
4483
+ children: /* @__PURE__ */ jsx(MdHistory, { className: "w-6 h-6" })
4484
+ }
4485
+ )
4486
+ ] }),
4487
+ /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-stretch gap-sm", children: [
4488
+ /* @__PURE__ */ jsx(SwapFromCardView, __spreadValues({}, fromCard)),
4489
+ /* @__PURE__ */ jsx("div", { className: "flex justify-center -my-5 relative z-10", children: /* @__PURE__ */ jsx(
4490
+ "button",
4491
+ {
4492
+ "data-testid": "swap-switch-tokens-button",
4493
+ type: "button",
4494
+ onClick: onSwitchTokens,
4495
+ className: "w-10 h-10 rounded-full bg-brand-secondary shadow-md flex items-center justify-center text-text-primary hover:shadow-lg transition-shadow focus:outline-none focus:ring-2 focus:ring-brand-secondary cursor-pointer",
4496
+ "aria-label": switchTokensAriaLabel,
4497
+ children: /* @__PURE__ */ jsx(MdOutlineSwapVert, { className: "w-5 h-5" })
4498
+ }
4499
+ ) }),
4500
+ /* @__PURE__ */ jsx(SwapToCardView, __spreadValues({}, toCard))
4501
+ ] }),
4502
+ /* @__PURE__ */ jsx(SwapAdvancedSettingsView, __spreadValues({}, advancedSettings)),
4503
+ /* @__PURE__ */ jsx("div", { className: "pb-xl", children: /* @__PURE__ */ jsx(SwapQuoteDetailsView, __spreadValues({}, transactionDetails)) })
4504
+ ] }) })
4505
+ }
4506
+ ),
4507
+ /* @__PURE__ */ jsx(
4508
+ "div",
4509
+ {
4510
+ "data-testid": "swap-flow-footer",
4511
+ className: "border-t p-md border-border-default dark:border-border-default-dark bg-bg-primary dark:bg-bg-primary-dark",
4512
+ children: /* @__PURE__ */ jsx(ConfirmSwapButtonView, __spreadValues({}, confirmButton))
4513
+ }
4514
+ )
4515
+ ] });
4516
+ };
4488
4517
  var ChooseANetworkView = ({
4489
4518
  labels,
4490
4519
  autoFocus = true,
@@ -4791,7 +4820,7 @@ var HistoryListSkeleton = () => /* @__PURE__ */ jsxs("div", { className: "self-s
4791
4820
  /* @__PURE__ */ jsx(HistoryGroupSkeleton, {})
4792
4821
  ] });
4793
4822
  var WalletBalances = ({ cards, variant = "subtle", className }) => {
4794
- const bgClass = variant === "raised" ? "bg-bg-raised dark:bg-bg-raised-dark" : "bg-bg-subtle dark:bg-bg-subtle-dark";
4823
+ const bgClass = variant === "raised" ? "bg-[var(--deframe-widget-color-bg-raised)]" : "bg-[var(--deframe-widget-color-bg-subtle)]";
4795
4824
  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: [
4796
4825
  /* @__PURE__ */ jsx(TextBody, { variant: "text-small", children: card.label }),
4797
4826
  /* @__PURE__ */ jsx(TextHeading, { variant: "h3", children: card.value })
@@ -5097,7 +5126,14 @@ var EarnDesktopView = ({
5097
5126
  transactions
5098
5127
  }) => {
5099
5128
  if (isLoading) {
5100
- return /* @__PURE__ */ jsx(Fragment, { children: loadingSkeleton });
5129
+ if (loadingSkeleton) {
5130
+ return /* @__PURE__ */ jsx(Fragment, { children: loadingSkeleton });
5131
+ }
5132
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-[var(--deframe-widget-size-gap-md)] w-full flex-1 min-h-0 animate-pulse px-[var(--deframe-widget-size-padding-x-lg)] py-[var(--deframe-widget-size-padding-y-lg)]", children: [
5133
+ /* @__PURE__ */ jsx("div", { className: "h-24 rounded bg-[var(--deframe-widget-color-bg-secondary)]" }),
5134
+ /* @__PURE__ */ jsx("div", { className: "h-40 rounded bg-[var(--deframe-widget-color-bg-secondary)]" }),
5135
+ /* @__PURE__ */ jsx("div", { className: "h-60 rounded bg-[var(--deframe-widget-color-bg-secondary)]" })
5136
+ ] });
5101
5137
  }
5102
5138
  return /* @__PURE__ */ jsxs("div", { className: "text-[color:var(--deframe-widget-color-text-primary)] flex flex-col relative overflow-y-auto w-full flex-1 min-h-0 pb-[var(--deframe-widget-size-padding-y-lg)] gap-[var(--deframe-widget-size-gap-md)]", children: [
5103
5139
  /* @__PURE__ */ jsx(EarnInvestmentSummaryView, __spreadValues({}, summary)),
@@ -5106,28 +5142,32 @@ var EarnDesktopView = ({
5106
5142
  /* @__PURE__ */ jsx(EarnRecentTransactionsView, __spreadValues({}, transactions))
5107
5143
  ] });
5108
5144
  };
5109
- var EarnInvestmentDetailsView = ({
5110
- title,
5111
- onBack,
5112
- tokenIcon,
5113
- fiatBalance,
5114
- profitAmount,
5115
- tokenAmount,
5116
- investedLabel,
5117
- earningsLabel,
5118
- summaryTitle,
5119
- summaryItems,
5120
- pastActivitiesTitle,
5121
- transactions,
5122
- onTransactionClick,
5123
- showMoreButton,
5124
- onLoadMore,
5125
- loadMoreLabel,
5126
- depositLabel,
5127
- onDeposit,
5128
- withdrawLabel,
5129
- onWithdraw
5130
- }) => {
5145
+ var EarnInvestmentDetailsView = (props) => {
5146
+ if (props.isLoading) {
5147
+ return /* @__PURE__ */ jsx(BackgroundContainer, { children: props.loadingSkeleton });
5148
+ }
5149
+ const {
5150
+ title,
5151
+ onBack,
5152
+ tokenIcon,
5153
+ fiatBalance,
5154
+ profitAmount,
5155
+ tokenAmount,
5156
+ investedLabel,
5157
+ earningsLabel,
5158
+ summaryTitle,
5159
+ summaryItems,
5160
+ pastActivitiesTitle,
5161
+ transactions,
5162
+ onTransactionClick,
5163
+ showMoreButton,
5164
+ onLoadMore,
5165
+ loadMoreLabel,
5166
+ depositLabel,
5167
+ onDeposit,
5168
+ withdrawLabel,
5169
+ onWithdraw
5170
+ } = props;
5131
5171
  return /* @__PURE__ */ jsxs(BackgroundContainer, { children: [
5132
5172
  /* @__PURE__ */ jsxs(Navbar, { children: [
5133
5173
  /* @__PURE__ */ jsx(BackButton, { onClick: onBack }),
@@ -6379,6 +6419,6 @@ var EarnWithdrawFailedView = ({
6379
6419
  );
6380
6420
  };
6381
6421
 
6382
- export { ActionButton, ActionSheet, AddressDisplay, ApyRange, BackButton, BackgroundContainer, BannerNotification, ChooseANetworkView, ChooseAStrategyActionsheetView, ChooseAnAssetSwapView, CloseButton_default as CloseButton, CollapsibleInfoRow, CollapsibleSection, ConfirmSwapButtonView, 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, SwapFromCardView, SwapHistoryView, SwapNetworkSelectorView, SwapOutputAmountView, SwapProcessingView, SwapProcessingViewSimple, SwapQuoteBlockchainCostsView, SwapQuoteDetailsView, SwapQuoteErrorsView, SwapQuoteHeaderView, SwapSignatureWarningView, SwapSlippageToleranceButtonsView, SwapSuccessView, SwapSuccessViewSimple, SwapToCardView, SwapTokenSelectorView, 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 };
6422
+ export { ActionButton, ActionSheet, AddressDisplay, ApyRange, BackButton, BackgroundContainer, BannerNotification, ChooseANetworkView, ChooseAStrategyActionsheetView, ChooseAnAssetSwapView, CloseButton_default as CloseButton, CollapsibleInfoRow, CollapsibleSection, ConfirmSwapButtonView, 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, SwapFromCardView, SwapHistoryView, SwapProcessingView, SwapProcessingViewSimple, SwapQuoteDetailsView, SwapSignatureWarningView, SwapSuccessView, SwapSuccessViewSimple, SwapToCardView, 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 };
6383
6423
  //# sourceMappingURL=index.mjs.map
6384
6424
  //# sourceMappingURL=index.mjs.map