@deframe-sdk/components 0.1.30 → 0.1.31

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
@@ -1783,7 +1783,7 @@ var BannerNotification = (_a) => {
1783
1783
  const bannerClasses = tailwindMerge.twMerge(
1784
1784
  baseClasses,
1785
1785
  typeClasses[t],
1786
- variantTextClasses[v],
1786
+ t === "toast" ? "text-white" : variantTextClasses[v],
1787
1787
  isExiting && "opacity-0 -translate-y-2",
1788
1788
  className
1789
1789
  );
@@ -7617,6 +7617,68 @@ var StrategyGridCard = ({
7617
7617
  ]
7618
7618
  }
7619
7619
  );
7620
+ var strategyCardClasses = [
7621
+ "w-full",
7622
+ "bg-[var(--deframe-widget-color-bg-secondary)]",
7623
+ "border border-[color:var(--deframe-widget-color-border-secondary)]",
7624
+ "rounded-[var(--deframe-widget-size-radius-md)]",
7625
+ "p-[var(--deframe-widget-size-padding-x-md)]",
7626
+ "flex flex-row items-center justify-between",
7627
+ "gap-[var(--deframe-widget-size-gap-md)]",
7628
+ "hover:border-[color:var(--deframe-widget-color-border-primary)]",
7629
+ "transition-colors"
7630
+ ].join(" ");
7631
+ var StrategyGridCardSimple = ({
7632
+ logoUrl,
7633
+ title,
7634
+ chainName,
7635
+ apyFormatted,
7636
+ riskLevel,
7637
+ onInvestClick,
7638
+ labels
7639
+ }) => {
7640
+ var _a, _b, _c, _d, _e;
7641
+ const investLabel = (_a = labels == null ? void 0 : labels.investLabel) != null ? _a : "Depositar";
7642
+ const riskBadgeMap = {
7643
+ low: /* @__PURE__ */ jsxRuntime.jsx(LowRiskBadge, { label: (_b = labels == null ? void 0 : labels.riskLow) != null ? _b : "Risco Baixo" }),
7644
+ medium: /* @__PURE__ */ jsxRuntime.jsx(MediumRiskBadge, { label: (_c = labels == null ? void 0 : labels.riskMedium) != null ? _c : "Risco M\xE9dio" }),
7645
+ high: /* @__PURE__ */ jsxRuntime.jsx(HighRiskBadge, { label: (_d = labels == null ? void 0 : labels.riskHigh) != null ? _d : "Risco Alto" })
7646
+ };
7647
+ return /* @__PURE__ */ jsxRuntime.jsxs(
7648
+ "article",
7649
+ {
7650
+ "data-slot": "strategy-grid-card-simple",
7651
+ "data-test-id": "strategy-grid-card-simple",
7652
+ className: strategyCardClasses,
7653
+ children: [
7654
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] min-w-0", children: [
7655
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-10 h-10 rounded-full bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center overflow-hidden shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("img", { alt: title, src: logoUrl, referrerPolicy: "no-referrer", className: "w-full h-full object-contain" }) }),
7656
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col min-w-0", children: [
7657
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-sm)] [font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-primary)] leading-[var(--deframe-widget-font-leading-sm)] font-[var(--deframe-widget-font-family)] truncate", children: title }),
7658
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] text-[color:var(--deframe-widget-color-text-secondary)] leading-[var(--deframe-widget-font-leading-xs)]", children: chainName })
7659
+ ] })
7660
+ ] }),
7661
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
7662
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] [font-weight:var(--deframe-widget-font-weight-medium)] uppercase tracking-[0.08em] text-[color:var(--deframe-widget-color-text-tertiary)]", children: (_e = labels == null ? void 0 : labels.apyLabel) != null ? _e : "Rendimento" }),
7663
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-lg)] [font-weight:var(--deframe-widget-font-weight-bold)] text-[color:var(--deframe-widget-color-brand-primary)] font-[var(--deframe-widget-font-family)] leading-none mt-[2px]", children: apyFormatted })
7664
+ ] }),
7665
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] flex-shrink-0", children: [
7666
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 whitespace-nowrap", children: riskBadgeMap[riskLevel] }),
7667
+ /* @__PURE__ */ jsxRuntime.jsx(
7668
+ PrimaryButton,
7669
+ {
7670
+ "data-test-id": "strategy-grid-card-simple-invest",
7671
+ "aria-label": `${investLabel} ${title}`,
7672
+ onClick: onInvestClick,
7673
+ className: "h-9 text-[13px] px-[var(--deframe-widget-size-padding-x-md)]",
7674
+ children: investLabel
7675
+ }
7676
+ )
7677
+ ] })
7678
+ ]
7679
+ }
7680
+ );
7681
+ };
7620
7682
  var BackButton = ({ onClick, ariaLabel = "Back", className }) => {
7621
7683
  const baseClasses = "w-12 h-12 rounded-[var(--deframe-widget-size-radius-full)] flex items-center justify-center text-[color:var(--deframe-widget-color-text-secondary)] hover:text-[color:var(--deframe-widget-color-brand-primary)] transition-colors cursor-pointer";
7622
7684
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -7778,6 +7840,770 @@ var GroupedStrategyListView = ({
7778
7840
  ] })
7779
7841
  ] });
7780
7842
  };
7843
+ var DEFAULT_COLOR_TOKEN = "var(--deframe-widget-color-brand-primary)";
7844
+ var ImageBannerCard = ({
7845
+ imageUrl,
7846
+ alt,
7847
+ onClick,
7848
+ apyFormatted,
7849
+ description,
7850
+ colorToken = DEFAULT_COLOR_TOKEN
7851
+ }) => {
7852
+ const isClickable = !!onClick;
7853
+ return /* @__PURE__ */ jsxRuntime.jsx(
7854
+ "button",
7855
+ {
7856
+ type: "button",
7857
+ "data-slot": "image-banner-card",
7858
+ "data-test-id": "image-banner-card",
7859
+ "aria-label": alt,
7860
+ onClick,
7861
+ className: tailwindMerge.twMerge(
7862
+ "relative w-full overflow-hidden text-left",
7863
+ "rounded-[var(--deframe-widget-size-radius-md)]",
7864
+ "border",
7865
+ "transition-[transform,opacity] duration-150",
7866
+ isClickable ? "cursor-pointer active:scale-[0.98]" : "cursor-default"
7867
+ ),
7868
+ style: {
7869
+ background: `linear-gradient(to right, color-mix(in srgb, ${colorToken} 10%, #080a0e) 0%, #080a0e 55%, #050507 100%)`,
7870
+ borderColor: `color-mix(in srgb, ${colorToken} 22%, transparent)`
7871
+ },
7872
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-row items-stretch w-full", children: [
7873
+ /* @__PURE__ */ jsxRuntime.jsxs(
7874
+ "div",
7875
+ {
7876
+ className: "flex flex-col gap-[var(--deframe-widget-size-gap-xs)] z-[1] px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-xl)]",
7877
+ style: { flex: imageUrl ? "0 0 55%" : "1 1 auto" },
7878
+ children: [
7879
+ /* @__PURE__ */ jsxRuntime.jsx(
7880
+ "span",
7881
+ {
7882
+ "data-test-id": "image-banner-card-name",
7883
+ className: "text-[length:var(--deframe-widget-font-size-xs)] [font-weight:var(--deframe-widget-font-weight-medium)] font-[var(--deframe-widget-font-family)] uppercase tracking-[0.08em]",
7884
+ style: { color: `color-mix(in srgb, ${colorToken} 80%, var(--deframe-widget-color-text-secondary))` },
7885
+ children: alt
7886
+ }
7887
+ ),
7888
+ apyFormatted && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "image-banner-card-apy", className: "flex items-baseline gap-[4px]", children: [
7889
+ /* @__PURE__ */ jsxRuntime.jsx(
7890
+ "span",
7891
+ {
7892
+ className: "text-[38px] [font-weight:var(--deframe-widget-font-weight-bold)] font-[var(--deframe-widget-font-family)] leading-[1]",
7893
+ style: { color: colorToken },
7894
+ children: apyFormatted
7895
+ }
7896
+ ),
7897
+ /* @__PURE__ */ jsxRuntime.jsx(
7898
+ "span",
7899
+ {
7900
+ className: "text-[length:var(--deframe-widget-font-size-xs)] [font-weight:var(--deframe-widget-font-weight-semibold)] font-[var(--deframe-widget-font-family)] uppercase tracking-[0.1em]",
7901
+ style: { color: `color-mix(in srgb, ${colorToken} 60%, transparent)` },
7902
+ children: "APY"
7903
+ }
7904
+ )
7905
+ ] }),
7906
+ description && /* @__PURE__ */ jsxRuntime.jsx(
7907
+ "span",
7908
+ {
7909
+ "data-test-id": "image-banner-card-description",
7910
+ className: "text-[length:var(--deframe-widget-font-size-xs)] leading-[var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-tertiary)] font-[var(--deframe-widget-font-family)]",
7911
+ children: description
7912
+ }
7913
+ )
7914
+ ]
7915
+ }
7916
+ ),
7917
+ imageUrl && /* @__PURE__ */ jsxRuntime.jsxs(
7918
+ "div",
7919
+ {
7920
+ "data-test-id": "image-banner-card-image-wrapper",
7921
+ className: "relative flex-1 overflow-hidden",
7922
+ style: { minHeight: 160 },
7923
+ children: [
7924
+ /* @__PURE__ */ jsxRuntime.jsx(
7925
+ "img",
7926
+ {
7927
+ "data-test-id": "image-banner-card-image",
7928
+ src: imageUrl,
7929
+ alt: "",
7930
+ "aria-hidden": "true",
7931
+ className: "absolute inset-0 w-full h-full object-cover object-center"
7932
+ }
7933
+ ),
7934
+ /* @__PURE__ */ jsxRuntime.jsx(
7935
+ "div",
7936
+ {
7937
+ className: "absolute inset-0",
7938
+ style: {
7939
+ background: "linear-gradient(to right, #080a0e 0%, transparent 40%)"
7940
+ }
7941
+ }
7942
+ )
7943
+ ]
7944
+ }
7945
+ )
7946
+ ] })
7947
+ }
7948
+ );
7949
+ };
7950
+ var GRID_COLS = "grid grid-cols-[1fr_100px_130px] gap-x-[var(--deframe-widget-size-gap-md)]";
7951
+ var HISTORY_PAGE_SIZE = 5;
7952
+ var HISTORY_CONFIG = {
7953
+ deposit: { label: "Depositado", color: "var(--deframe-widget-color-state-info)" },
7954
+ withdraw: { label: "Sacado", color: "var(--deframe-widget-color-text-secondary)" },
7955
+ interest: { label: "Juros Recebidos", color: "var(--deframe-widget-color-brand-primary)" }
7956
+ };
7957
+ var EarnHubStrategyCard = ({
7958
+ logoUrl,
7959
+ assetName,
7960
+ network,
7961
+ investedFormatted,
7962
+ earningsFormatted,
7963
+ isLoading,
7964
+ onInvestClick,
7965
+ onWithdrawClick,
7966
+ history = [],
7967
+ labels
7968
+ }) => {
7969
+ var _a, _b, _c, _d, _e;
7970
+ const [expanded, setExpanded] = React6__namespace.default.useState(false);
7971
+ const [showAll, setShowAll] = React6__namespace.default.useState(false);
7972
+ const investLabel = (_a = labels == null ? void 0 : labels.investLabel) != null ? _a : "Depositar";
7973
+ const withdrawLabel = (_b = labels == null ? void 0 : labels.withdrawLabel) != null ? _b : "Sacar";
7974
+ const historyTitle = (_c = labels == null ? void 0 : labels.historyTitle) != null ? _c : "Hist\xF3rico";
7975
+ const visibleHistory = showAll ? history : history.slice(0, HISTORY_PAGE_SIZE);
7976
+ const hasMore = history.length > HISTORY_PAGE_SIZE && !showAll;
7977
+ return /* @__PURE__ */ jsxRuntime.jsxs(
7978
+ "li",
7979
+ {
7980
+ "data-slot": "earn-hub-strategy-card",
7981
+ "data-test-id": "earn-hub-strategy-card",
7982
+ className: "border-t border-[color:var(--deframe-widget-color-border-secondary)] list-none",
7983
+ children: [
7984
+ /* @__PURE__ */ jsxRuntime.jsxs(
7985
+ "div",
7986
+ {
7987
+ "data-slot": "earn-hub-strategy-card-main",
7988
+ onClick: () => setExpanded((v) => !v),
7989
+ className: tailwindMerge.twMerge(
7990
+ GRID_COLS,
7991
+ "items-center cursor-pointer",
7992
+ "px-[var(--deframe-widget-size-padding-x-md)] py-[13px]",
7993
+ "transition-colors duration-150",
7994
+ "hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_60%,transparent)]"
7995
+ ),
7996
+ children: [
7997
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] min-w-0", children: [
7998
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[36px] h-[36px] rounded-full bg-[var(--deframe-widget-color-bg-tertiary)] flex items-center justify-center overflow-hidden shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("img", { alt: assetName, src: logoUrl, referrerPolicy: "no-referrer", className: "w-full h-full object-contain" }) }),
7999
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col min-w-0", children: [
8000
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-sm)] [font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-primary)] leading-[var(--deframe-widget-font-leading-sm)] font-[var(--deframe-widget-font-family)] truncate", children: assetName }),
8001
+ network && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] text-[color:var(--deframe-widget-color-text-secondary)] leading-[var(--deframe-widget-font-leading-xs)]", children: network })
8002
+ ] })
8003
+ ] }),
8004
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: 40, height: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(
8005
+ "span",
8006
+ {
8007
+ className: "text-[length:var(--deframe-widget-font-size-md)] [font-weight:var(--deframe-widget-font-weight-bold)] font-[var(--deframe-widget-font-family)] leading-none",
8008
+ style: { color: "var(--deframe-widget-color-brand-primary)" },
8009
+ children: earningsFormatted
8010
+ }
8011
+ ) }),
8012
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-[var(--deframe-widget-size-gap-xs)]", children: [
8013
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-end", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: 60, height: 16 }) : investedFormatted ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8014
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-sm)] [font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-primary)] leading-[var(--deframe-widget-font-leading-sm)] font-[var(--deframe-widget-font-family)]", children: investedFormatted }),
8015
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] text-[color:var(--deframe-widget-color-text-secondary)] leading-[var(--deframe-widget-font-leading-xs)]", children: (_d = labels == null ? void 0 : labels.investedLabel) != null ? _d : "investido" })
8016
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] text-[color:var(--deframe-widget-color-text-tertiary)]", children: "\u2014" }) }),
8017
+ /* @__PURE__ */ jsxRuntime.jsx(
8018
+ "svg",
8019
+ {
8020
+ width: "16",
8021
+ height: "16",
8022
+ viewBox: "0 0 16 16",
8023
+ fill: "none",
8024
+ "aria-hidden": "true",
8025
+ className: tailwindMerge.twMerge(
8026
+ "flex-shrink-0 text-[color:var(--deframe-widget-color-text-tertiary)] transition-transform duration-200",
8027
+ expanded && "rotate-180"
8028
+ ),
8029
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })
8030
+ }
8031
+ )
8032
+ ] })
8033
+ ]
8034
+ }
8035
+ ),
8036
+ expanded && /* @__PURE__ */ jsxRuntime.jsxs(
8037
+ "div",
8038
+ {
8039
+ "data-test-id": "earn-hub-strategy-card-detail",
8040
+ className: "px-[var(--deframe-widget-size-padding-x-md)] pb-[var(--deframe-widget-size-padding-y-md)]",
8041
+ children: [
8042
+ /* @__PURE__ */ jsxRuntime.jsxs(
8043
+ "div",
8044
+ {
8045
+ className: "flex gap-[var(--deframe-widget-size-gap-sm)] mb-[var(--deframe-widget-size-gap-md)]",
8046
+ onClick: (e) => e.stopPropagation(),
8047
+ children: [
8048
+ onWithdrawClick != null && /* @__PURE__ */ jsxRuntime.jsx(
8049
+ SecondaryButton,
8050
+ {
8051
+ className: "h-9 text-[13px] flex-1",
8052
+ onClick: onWithdrawClick,
8053
+ children: withdrawLabel
8054
+ }
8055
+ ),
8056
+ onInvestClick != null && /* @__PURE__ */ jsxRuntime.jsx(
8057
+ PrimaryButton,
8058
+ {
8059
+ className: "h-9 text-[13px] flex-1",
8060
+ onClick: onInvestClick,
8061
+ children: investLabel
8062
+ }
8063
+ )
8064
+ ]
8065
+ }
8066
+ ),
8067
+ history.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "earn-hub-strategy-card-history", children: [
8068
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] [font-weight:var(--deframe-widget-font-weight-medium)] uppercase tracking-[0.08em] text-[color:var(--deframe-widget-color-text-tertiary)]", children: historyTitle }),
8069
+ /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "list-none m-0 p-0", children: visibleHistory.map((entry) => {
8070
+ var _a2;
8071
+ const config = (_a2 = HISTORY_CONFIG[entry.type]) != null ? _a2 : HISTORY_CONFIG.deposit;
8072
+ const isClickable = !!entry.onClick;
8073
+ return /* @__PURE__ */ jsxRuntime.jsxs(
8074
+ "li",
8075
+ {
8076
+ "data-test-id": "earn-hub-strategy-card-history-entry",
8077
+ onClick: entry.onClick ? () => entry.onClick() : void 0,
8078
+ className: tailwindMerge.twMerge(
8079
+ "flex items-center justify-between gap-[var(--deframe-widget-size-gap-md)]",
8080
+ "py-[10px]",
8081
+ "border-t border-[color:var(--deframe-widget-color-border-tertiary)]",
8082
+ isClickable && "cursor-pointer hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_40%,transparent)] rounded-[var(--deframe-widget-size-radius-xs)]"
8083
+ ),
8084
+ children: [
8085
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] min-w-0", children: [
8086
+ /* @__PURE__ */ jsxRuntime.jsx(
8087
+ "span",
8088
+ {
8089
+ className: "w-[6px] h-[6px] rounded-full flex-shrink-0",
8090
+ style: { background: config.color }
8091
+ }
8092
+ ),
8093
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] text-[color:var(--deframe-widget-color-text-tertiary)] font-[var(--deframe-widget-font-family)] leading-none flex-shrink-0", children: entry.date }),
8094
+ /* @__PURE__ */ jsxRuntime.jsx(
8095
+ "span",
8096
+ {
8097
+ className: "text-[length:var(--deframe-widget-font-size-xs)] [font-weight:var(--deframe-widget-font-weight-medium)] font-[var(--deframe-widget-font-family)] leading-none",
8098
+ style: { color: config.color },
8099
+ children: config.label
8100
+ }
8101
+ )
8102
+ ] }),
8103
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-xs)] [font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-primary)] font-[var(--deframe-widget-font-family)] leading-none flex-shrink-0", children: entry.amount })
8104
+ ]
8105
+ },
8106
+ entry.id
8107
+ );
8108
+ }) }),
8109
+ hasMore && /* @__PURE__ */ jsxRuntime.jsx(
8110
+ "button",
8111
+ {
8112
+ type: "button",
8113
+ onClick: () => setShowAll(true),
8114
+ className: tailwindMerge.twMerge(
8115
+ "mt-[var(--deframe-widget-size-gap-sm)] w-full",
8116
+ "text-[length:var(--deframe-widget-font-size-xs)] [font-weight:var(--deframe-widget-font-weight-medium)]",
8117
+ "text-[color:var(--deframe-widget-color-text-secondary)]",
8118
+ "font-[var(--deframe-widget-font-family)]",
8119
+ "hover:text-[color:var(--deframe-widget-color-brand-primary)]",
8120
+ "transition-colors duration-150 cursor-pointer",
8121
+ "py-[var(--deframe-widget-size-padding-y-xs)]",
8122
+ "border-t border-[color:var(--deframe-widget-color-border-tertiary)]",
8123
+ "outline-none bg-transparent border-x-0 border-b-0"
8124
+ ),
8125
+ children: (_e = labels == null ? void 0 : labels.showMoreLabel) != null ? _e : `Ver mais (${history.length - HISTORY_PAGE_SIZE} itens)`
8126
+ }
8127
+ )
8128
+ ] })
8129
+ ]
8130
+ }
8131
+ )
8132
+ ]
8133
+ }
8134
+ );
8135
+ };
8136
+ var SimpleEmptyState = () => {
8137
+ return /* @__PURE__ */ jsxRuntime.jsxs(
8138
+ "div",
8139
+ {
8140
+ "data-slot": "earn-empty-state",
8141
+ "data-test-id": "earn-empty-state",
8142
+ className: "flex flex-col items-center justify-center gap-[var(--deframe-widget-size-gap-sm)] px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-xl)] border-t border-[color:var(--deframe-widget-color-border-secondary)]",
8143
+ children: [
8144
+ /* @__PURE__ */ jsxRuntime.jsx(
8145
+ "div",
8146
+ {
8147
+ className: "flex h-[48px] w-[48px] items-center justify-center rounded-full",
8148
+ style: {
8149
+ background: "color-mix(in srgb, var(--deframe-widget-color-brand-primary) 10%, transparent)",
8150
+ color: "var(--deframe-widget-color-brand-primary)"
8151
+ },
8152
+ children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: [
8153
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "8", r: "4", stroke: "currentColor", strokeWidth: "1.5" }),
8154
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M4 20c0-4 3.6-7 8-7s8 3 8 7", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })
8155
+ ] })
8156
+ }
8157
+ ),
8158
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-[var(--deframe-widget-size-gap-xs)] text-center", children: [
8159
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-md)] [font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-primary)] font-[var(--deframe-widget-font-family)]", children: "Nenhuma caixinha ativa" }),
8160
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[240px] text-[length:var(--deframe-widget-font-size-sm)] leading-[var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-tertiary)] font-[var(--deframe-widget-font-family)]", children: "Escolha uma das caixinhas acima para come\xE7ar a render." })
8161
+ ] })
8162
+ ]
8163
+ }
8164
+ );
8165
+ };
8166
+ var EARN_CATEGORY_DEFINITIONS = [
8167
+ {
8168
+ id: "dolar",
8169
+ imageUrl: "/mascot-usd.png",
8170
+ alt: "Caixinha de D\xF3lar",
8171
+ title: "Caixinha de D\xF3lar",
8172
+ assetFilter: ["USDC", "USDT", "DAI", "thbill"]
8173
+ },
8174
+ {
8175
+ id: "real",
8176
+ imageUrl: "/mascot-brl.png",
8177
+ alt: "Caixinha de Real",
8178
+ title: "Caixinha de Real",
8179
+ assetFilter: ["BRLA"]
8180
+ }
8181
+ ];
8182
+ var wrapperBaseClasses = [
8183
+ "w-full max-w-[900px] mx-auto flex flex-col",
8184
+ "gap-[var(--deframe-widget-size-gap-md)]"
8185
+ ].join(" ");
8186
+ var statCardClasses = [
8187
+ "w-full self-start flex flex-col gap-[var(--deframe-widget-size-gap-sm)]",
8188
+ "bg-[var(--deframe-widget-color-bg-secondary)]",
8189
+ "border border-[color:var(--deframe-widget-color-border-secondary)]",
8190
+ "rounded-[var(--deframe-widget-size-radius-md)]",
8191
+ "px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-md)]"
8192
+ ].join(" ");
8193
+ var statCardLabelClasses = [
8194
+ "text-[color:var(--deframe-widget-color-text-tertiary)]",
8195
+ "text-[11px] [font-weight:var(--deframe-widget-font-weight-medium)]",
8196
+ "uppercase tracking-[0.08em] [line-height:1.4]"
8197
+ ].join(" ");
8198
+ var statCardValueDefaultClasses = [
8199
+ "text-[color:var(--deframe-widget-color-text-primary)]",
8200
+ "text-[28px] [font-weight:var(--deframe-widget-font-weight-bold)] [line-height:1.15]"
8201
+ ].join(" ");
8202
+ var statCardValuePositiveClasses = [
8203
+ "text-[color:var(--deframe-widget-color-brand-primary)]",
8204
+ "text-[28px] [font-weight:var(--deframe-widget-font-weight-bold)] [line-height:1.15]"
8205
+ ].join(" ");
8206
+ var statCardDescriptionClasses = [
8207
+ "text-[color:var(--deframe-widget-color-text-secondary)]",
8208
+ "text-[13px] [line-height:1.45]"
8209
+ ].join(" ");
8210
+ var listPanelClasses = [
8211
+ "w-full self-start flex flex-col",
8212
+ "bg-[var(--deframe-widget-color-bg-secondary)]",
8213
+ "border border-[color:var(--deframe-widget-color-border-secondary)]",
8214
+ "rounded-[var(--deframe-widget-size-radius-md)]",
8215
+ "overflow-hidden"
8216
+ ].join(" ");
8217
+ var sectionHeaderClasses = [
8218
+ "flex items-center justify-between",
8219
+ "px-[var(--deframe-widget-size-padding-x-md)]",
8220
+ "pt-[var(--deframe-widget-size-padding-y-md)]",
8221
+ "pb-[var(--deframe-widget-size-padding-y-sm)]"
8222
+ ].join(" ");
8223
+ var sectionTitleClasses = [
8224
+ "text-[color:var(--deframe-widget-color-text-primary)]",
8225
+ "text-[length:var(--deframe-widget-font-size-md)]",
8226
+ "[font-weight:var(--deframe-widget-font-weight-semibold)]",
8227
+ "font-[var(--deframe-widget-font-family)]",
8228
+ "leading-[var(--deframe-widget-font-leading-md)]"
8229
+ ].join(" ");
8230
+ var columnHeaderClasses = [
8231
+ "text-[length:var(--deframe-widget-font-size-xs)]",
8232
+ "[font-weight:var(--deframe-widget-font-weight-medium)]",
8233
+ "uppercase tracking-[0.08em]",
8234
+ "text-[color:var(--deframe-widget-color-text-tertiary)]",
8235
+ "leading-[var(--deframe-widget-font-leading-xs)]"
8236
+ ].join(" ");
8237
+ var GRID_COLS2 = "grid grid-cols-[1fr_100px_130px] gap-x-[var(--deframe-widget-size-gap-md)]";
8238
+ var BANNER_COLORS = [
8239
+ "var(--deframe-widget-color-brand-primary)",
8240
+ "var(--deframe-widget-color-brand-secondary)"
8241
+ ];
8242
+ var STABLECOIN_SYMBOLS = /* @__PURE__ */ new Set(["USDC", "USDT", "DAI"]);
8243
+ var DEFAULT_POSITIONS = { positions: [], summary: { totalUnderlyingBalanceUSD: 0, totalProfitInUSD: 0 } };
8244
+ var defaultFormatCurrency = (amount) => `$${amount.toFixed(2)}`;
8245
+ var EarnDesktopViewSimple = ({
8246
+ positions = DEFAULT_POSITIONS,
8247
+ strategies = [],
8248
+ historyItems = [],
8249
+ formatCurrency = defaultFormatCurrency,
8250
+ locale = "pt-BR",
8251
+ onDeposit,
8252
+ onWithdraw,
8253
+ onDetails,
8254
+ onHistoryDetail,
8255
+ onHistory,
8256
+ isLoading,
8257
+ className
8258
+ }) => {
8259
+ const [activeCategoryId, setActiveCategoryId] = React6__namespace.default.useState(null);
8260
+ const totalEarnings = React6__namespace.default.useMemo(
8261
+ () => positions.positions.reduce((sum, p) => sum + p.spotPosition.profitInUSD, 0),
8262
+ [positions.positions]
8263
+ );
8264
+ const statsCards = React6__namespace.default.useMemo(() => [
8265
+ { label: "Total Investido", value: formatCurrency(positions.summary.totalUnderlyingBalanceUSD), badge: "Soma de todos os dep\xF3sitos ativos." },
8266
+ { label: "Juros Acumulados", value: formatCurrency(totalEarnings), badge: "Rendimentos acumulados desde o in\xEDcio." }
8267
+ ], [positions.summary.totalUnderlyingBalanceUSD, totalEarnings, formatCurrency]);
8268
+ const categoryBanners = React6__namespace.default.useMemo(() => {
8269
+ return EARN_CATEGORY_DEFINITIONS.map((cat) => {
8270
+ var _a;
8271
+ const upperFilter = new Set(cat.assetFilter.map((a) => a.toUpperCase()));
8272
+ let bestApy = null;
8273
+ for (const s of strategies) {
8274
+ if (upperFilter.has(s.assetName.toUpperCase()) && s.apy > ((_a = bestApy == null ? void 0 : bestApy.apy) != null ? _a : 0)) {
8275
+ bestApy = s;
8276
+ }
8277
+ }
8278
+ const isStablecoin = cat.assetFilter.some((a) => STABLECOIN_SYMBOLS.has(a.toUpperCase()));
8279
+ return {
8280
+ id: cat.id,
8281
+ imageUrl: cat.imageUrl,
8282
+ alt: cat.title,
8283
+ apyFormatted: bestApy == null ? void 0 : bestApy.apyFormatted,
8284
+ description: isStablecoin ? "Rendimento em stablecoins" : "Rendimento em reais",
8285
+ handleClick: () => setActiveCategoryId(cat.id)
8286
+ };
8287
+ });
8288
+ }, [strategies]);
8289
+ const historyByAsset = React6__namespace.default.useMemo(() => {
8290
+ var _a, _b, _c, _d;
8291
+ const map = /* @__PURE__ */ new Map();
8292
+ for (const item of historyItems) {
8293
+ const isDeposit = item.type.includes("DEPOSIT");
8294
+ const assetIn = (_a = item.amounts) == null ? void 0 : _a.assetIn;
8295
+ const symbol = (_d = assetIn && "token" in assetIn ? (_c = (_b = assetIn.token) == null ? void 0 : _b.symbol) == null ? void 0 : _c.toUpperCase() : null) != null ? _d : "";
8296
+ if (!symbol) continue;
8297
+ const amount = assetIn && "amountInUSD" in assetIn && assetIn.amountInUSD ? formatCurrency(parseFloat(assetIn.amountInUSD)) : assetIn && "amountHumanized" in assetIn ? `${assetIn.amountHumanized} ${symbol}` : "";
8298
+ const date = new Date(item.createdAt).toLocaleString(locale, {
8299
+ day: "2-digit",
8300
+ month: "2-digit",
8301
+ year: "numeric",
8302
+ hour: "2-digit",
8303
+ minute: "2-digit"
8304
+ });
8305
+ const entry = {
8306
+ id: item.id,
8307
+ date,
8308
+ type: isDeposit ? "deposit" : "withdraw",
8309
+ amount,
8310
+ onClick: onHistoryDetail ? () => onHistoryDetail(item.id, isDeposit) : void 0
8311
+ };
8312
+ if (!map.has(symbol)) map.set(symbol, []);
8313
+ map.get(symbol).push(entry);
8314
+ }
8315
+ return map;
8316
+ }, [historyItems, locale, formatCurrency, onHistoryDetail]);
8317
+ const strategyRows = React6__namespace.default.useMemo(() => {
8318
+ return positions.positions.filter((p) => p.spotPosition.underlyingBalanceUSD > 0.01).map((p) => {
8319
+ var _a;
8320
+ return {
8321
+ logoUrl: p.strategy.logourl,
8322
+ assetName: p.strategy.assetName,
8323
+ network: p.strategy.network,
8324
+ investedFormatted: formatCurrency(p.spotPosition.underlyingBalanceUSD),
8325
+ earningsFormatted: `${(p.spotPosition.apy * 100).toFixed(2)}%`,
8326
+ isLoading: false,
8327
+ history: (_a = historyByAsset.get(p.strategy.assetName.toUpperCase())) != null ? _a : [],
8328
+ onInvestClick: onDeposit ? () => onDeposit(p.strategy.id) : () => {
8329
+ },
8330
+ onWithdrawClick: onWithdraw ? () => onWithdraw(p.strategy.id) : () => {
8331
+ },
8332
+ onDetailsClick: onDetails ? () => onDetails(p.strategy.id) : () => {
8333
+ }
8334
+ };
8335
+ });
8336
+ }, [positions.positions, formatCurrency, historyByAsset, onDeposit, onWithdraw, onDetails]);
8337
+ if (isLoading) {
8338
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "earn-hub-view-simple-loading", className: tailwindMerge.twMerge(wrapperBaseClasses, className), children: [
8339
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-[var(--deframe-widget-size-gap-sm)]", children: [0, 1].map((i) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: "100%", height: 100 }, i)) }),
8340
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-[var(--deframe-widget-size-gap-sm)]", children: [0, 1].map((i) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: "100%", height: 160 }, i)) }),
8341
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: "100%", height: 200 })
8342
+ ] });
8343
+ }
8344
+ if (activeCategoryId) {
8345
+ return /* @__PURE__ */ jsxRuntime.jsx(
8346
+ GroupedStrategyListViewSimple,
8347
+ {
8348
+ categoryId: activeCategoryId,
8349
+ strategies,
8350
+ isLoading,
8351
+ onBack: () => setActiveCategoryId(null),
8352
+ onDeposit,
8353
+ onWithdraw,
8354
+ className
8355
+ }
8356
+ );
8357
+ }
8358
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "earn-hub-view-simple", className: tailwindMerge.twMerge(wrapperBaseClasses, className), children: [
8359
+ /* @__PURE__ */ jsxRuntime.jsx(
8360
+ "div",
8361
+ {
8362
+ "data-test-id": "earn-hub-view-simple-header",
8363
+ className: "flex items-center justify-between gap-[var(--deframe-widget-size-gap-md)]",
8364
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-[var(--deframe-widget-size-gap-xs)]", children: [
8365
+ /* @__PURE__ */ jsxRuntime.jsx(
8366
+ "h1",
8367
+ {
8368
+ "data-test-id": "earn-hub-view-simple-title",
8369
+ className: "text-[color:var(--deframe-widget-color-text-primary)] text-[length:var(--deframe-widget-font-size-xxl)] [font-weight:var(--deframe-widget-font-weight-bold)] leading-[var(--deframe-widget-font-leading-xxl)] font-[var(--deframe-widget-font-family)]",
8370
+ children: "Caixinha"
8371
+ }
8372
+ ),
8373
+ /* @__PURE__ */ jsxRuntime.jsx(
8374
+ "p",
8375
+ {
8376
+ "data-test-id": "earn-hub-view-simple-subtitle",
8377
+ className: "text-[color:var(--deframe-widget-color-text-secondary)] text-[length:var(--deframe-widget-font-size-sm)] leading-[var(--deframe-widget-font-leading-sm)] font-[var(--deframe-widget-font-family)]",
8378
+ children: "Invista e deixe seu dinheiro render."
8379
+ }
8380
+ )
8381
+ ] })
8382
+ }
8383
+ ),
8384
+ /* @__PURE__ */ jsxRuntime.jsx(
8385
+ "div",
8386
+ {
8387
+ "data-test-id": "earn-hub-view-simple-stats",
8388
+ className: "grid grid-cols-2 gap-[var(--deframe-widget-size-gap-sm)]",
8389
+ children: statsCards.map((card, i) => /* @__PURE__ */ jsxRuntime.jsxs("article", { className: tailwindMerge.twMerge(statCardClasses, "self-stretch"), children: [
8390
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: statCardLabelClasses, children: card.label }),
8391
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: i > 0 ? statCardValuePositiveClasses : statCardValueDefaultClasses, children: card.value }),
8392
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: statCardDescriptionClasses, children: card.badge })
8393
+ ] }, card.label))
8394
+ }
8395
+ ),
8396
+ /* @__PURE__ */ jsxRuntime.jsx(
8397
+ "div",
8398
+ {
8399
+ "data-test-id": "earn-hub-view-simple-categories",
8400
+ className: "grid grid-cols-2 gap-[var(--deframe-widget-size-gap-sm)]",
8401
+ children: categoryBanners.map((cat, i) => /* @__PURE__ */ jsxRuntime.jsx(
8402
+ ImageBannerCard,
8403
+ {
8404
+ imageUrl: cat.imageUrl,
8405
+ alt: cat.alt,
8406
+ apyFormatted: cat.apyFormatted,
8407
+ description: cat.description,
8408
+ onClick: cat.handleClick,
8409
+ colorToken: BANNER_COLORS[i % BANNER_COLORS.length]
8410
+ },
8411
+ cat.alt
8412
+ ))
8413
+ }
8414
+ ),
8415
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: listPanelClasses, children: [
8416
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: sectionHeaderClasses, children: [
8417
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { "data-test-id": "earn-hub-view-simple-strategies-title", className: sectionTitleClasses, children: "Suas Caixinhas" }),
8418
+ onHistory && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
8419
+ "button",
8420
+ {
8421
+ type: "button",
8422
+ "aria-label": "Hist\xF3rico",
8423
+ "data-test-id": "earn-hub-simple-history-button",
8424
+ onClick: onHistory,
8425
+ className: tailwindMerge.twMerge(
8426
+ "inline-flex items-center justify-center",
8427
+ "w-9 h-9",
8428
+ "rounded-[var(--deframe-widget-size-radius-sm)]",
8429
+ "border-none bg-transparent",
8430
+ "cursor-pointer outline-none flex-shrink-0",
8431
+ "text-[color:var(--deframe-widget-color-text-secondary)]",
8432
+ "hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_92%,transparent)]",
8433
+ "transition-[background] duration-150"
8434
+ ),
8435
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
8436
+ "svg",
8437
+ {
8438
+ viewBox: "0 0 24 24",
8439
+ width: "20",
8440
+ height: "20",
8441
+ fill: "none",
8442
+ stroke: "currentColor",
8443
+ strokeWidth: "2",
8444
+ strokeLinecap: "round",
8445
+ strokeLinejoin: "round",
8446
+ "aria-hidden": "true",
8447
+ children: [
8448
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
8449
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "12 6 12 12 16 14" })
8450
+ ]
8451
+ }
8452
+ )
8453
+ }
8454
+ ) })
8455
+ ] }),
8456
+ strategyRows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(SimpleEmptyState, {}) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8457
+ /* @__PURE__ */ jsxRuntime.jsx(
8458
+ "div",
8459
+ {
8460
+ "data-test-id": "earn-hub-view-simple-columns",
8461
+ className: tailwindMerge.twMerge(
8462
+ GRID_COLS2,
8463
+ "px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-sm)]",
8464
+ "border-t border-[color:var(--deframe-widget-color-border-secondary)]"
8465
+ ),
8466
+ children: ["CAIXINHA", "RENDIMENTO", "INVESTIDO"].map((label, i) => /* @__PURE__ */ jsxRuntime.jsx(
8467
+ "span",
8468
+ {
8469
+ className: tailwindMerge.twMerge(
8470
+ columnHeaderClasses,
8471
+ i === 1 && "text-center",
8472
+ i === 2 && "text-right"
8473
+ ),
8474
+ children: label
8475
+ },
8476
+ label
8477
+ ))
8478
+ }
8479
+ ),
8480
+ /* @__PURE__ */ jsxRuntime.jsx("ol", { "data-test-id": "earn-hub-view-simple-strategy-list", className: "list-none m-0 p-0", children: strategyRows.map((s) => /* @__PURE__ */ jsxRuntime.jsx(EarnHubStrategyCard, __spreadValues({}, s), s.assetName)) })
8481
+ ] })
8482
+ ] })
8483
+ ] });
8484
+ };
8485
+ var wrapperBaseClasses2 = [
8486
+ "w-full flex flex-col",
8487
+ "gap-[var(--deframe-widget-size-gap-md)]",
8488
+ "font-[var(--deframe-widget-font-family)]"
8489
+ ].join(" ");
8490
+ var titleClasses = [
8491
+ "text-[color:var(--deframe-widget-color-text-primary)]",
8492
+ "text-[length:var(--deframe-widget-font-size-xxl)]",
8493
+ "[font-weight:var(--deframe-widget-font-weight-bold)]",
8494
+ "leading-[var(--deframe-widget-font-leading-xxl)]",
8495
+ "font-[var(--deframe-widget-font-family)]"
8496
+ ].join(" ");
8497
+ var backButtonClasses = [
8498
+ "inline-flex items-center gap-[var(--deframe-widget-size-gap-xs)]",
8499
+ "text-[color:var(--deframe-widget-color-text-secondary)]",
8500
+ "hover:text-[color:var(--deframe-widget-color-text-primary)]",
8501
+ "text-[length:var(--deframe-widget-font-size-sm)]",
8502
+ "[font-weight:var(--deframe-widget-font-weight-medium)]",
8503
+ "transition-colors cursor-pointer",
8504
+ "font-[var(--deframe-widget-font-family)]",
8505
+ "border-none bg-transparent outline-none p-0"
8506
+ ].join(" ");
8507
+ var emptyBoxClasses = [
8508
+ "w-full flex flex-col items-center justify-center",
8509
+ "gap-[var(--deframe-widget-size-gap-sm)]",
8510
+ "px-[var(--deframe-widget-size-padding-x-md)]",
8511
+ "py-[var(--deframe-widget-size-padding-y-xl)]",
8512
+ "rounded-[var(--deframe-widget-size-radius-md)]",
8513
+ "border border-dashed border-[color:var(--deframe-widget-color-border-secondary)]",
8514
+ "bg-[color:var(--deframe-widget-color-bg-secondary)]"
8515
+ ].join(" ");
8516
+ var GroupedStrategyListViewSimple = ({
8517
+ categoryId,
8518
+ strategies = [],
8519
+ isLoading,
8520
+ onBack,
8521
+ onDeposit,
8522
+ onWithdraw,
8523
+ className
8524
+ }) => {
8525
+ var _a;
8526
+ const category = EARN_CATEGORY_DEFINITIONS.find((c) => c.id === categoryId);
8527
+ const categoryTitle = (_a = category == null ? void 0 : category.title) != null ? _a : "Estrat\xE9gias";
8528
+ const allClaimedAssets = React6__namespace.default.useMemo(() => {
8529
+ const claimed = /* @__PURE__ */ new Set();
8530
+ for (const cat of EARN_CATEGORY_DEFINITIONS) {
8531
+ if (cat.assetFilter.length > 0) {
8532
+ for (const symbol of cat.assetFilter) {
8533
+ claimed.add(symbol.toUpperCase());
8534
+ }
8535
+ }
8536
+ }
8537
+ return claimed;
8538
+ }, []);
8539
+ const filteredStrategies = React6__namespace.default.useMemo(() => {
8540
+ const assetFilter = category == null ? void 0 : category.assetFilter;
8541
+ if (!assetFilter || assetFilter.length === 0) {
8542
+ return strategies.filter((s) => !allClaimedAssets.has(s.assetName.toUpperCase()));
8543
+ }
8544
+ const upperFilter = new Set(assetFilter.map((a) => a.toUpperCase()));
8545
+ return strategies.filter((s) => upperFilter.has(s.assetName.toUpperCase()));
8546
+ }, [strategies, category, allClaimedAssets]);
8547
+ if (isLoading) {
8548
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "grouped-strategy-list-view-simple-loading", className: tailwindMerge.twMerge(wrapperBaseClasses2, className), children: [
8549
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: "40%", height: 24 }),
8550
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: "100%", height: 80 }),
8551
+ /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "rect", width: "100%", height: 80 })
8552
+ ] });
8553
+ }
8554
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "grouped-strategy-list-view-simple", className: tailwindMerge.twMerge(wrapperBaseClasses2, className), children: [
8555
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "grouped-strategy-list-view-simple-header", children: [
8556
+ /* @__PURE__ */ jsxRuntime.jsxs(
8557
+ "button",
8558
+ {
8559
+ type: "button",
8560
+ "data-test-id": "grouped-strategy-list-view-simple-back",
8561
+ "aria-label": "Voltar",
8562
+ onClick: onBack,
8563
+ className: backButtonClasses,
8564
+ children: [
8565
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 4L6 8L10 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }),
8566
+ "Voltar"
8567
+ ]
8568
+ }
8569
+ ),
8570
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { "data-test-id": "grouped-strategy-list-view-simple-title", className: tailwindMerge.twMerge(titleClasses, "mt-[var(--deframe-widget-size-gap-sm)]"), children: categoryTitle }),
8571
+ /* @__PURE__ */ jsxRuntime.jsx(
8572
+ TextBody,
8573
+ {
8574
+ "data-test-id": "grouped-strategy-list-view-simple-subtitle",
8575
+ variant: "text-small",
8576
+ className: "text-[color:var(--deframe-widget-color-text-secondary)] mt-[var(--deframe-widget-size-gap-xs)]",
8577
+ children: "Escolha uma estrat\xE9gia para investir."
8578
+ }
8579
+ )
8580
+ ] }),
8581
+ filteredStrategies.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { "data-test-id": "grouped-strategy-list-view-simple-empty", className: emptyBoxClasses, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[length:var(--deframe-widget-font-size-sm)] text-[color:var(--deframe-widget-color-text-tertiary)] font-[var(--deframe-widget-font-family)]", children: "Nenhuma estrat\xE9gia dispon\xEDvel no momento." }) }) : /* @__PURE__ */ jsxRuntime.jsx(
8582
+ "div",
8583
+ {
8584
+ "data-test-id": "grouped-strategy-list-view-simple-items",
8585
+ className: "flex flex-col gap-[var(--deframe-widget-size-gap-sm)]",
8586
+ children: filteredStrategies.map((s) => /* @__PURE__ */ jsxRuntime.jsx(
8587
+ StrategyGridCardSimple,
8588
+ {
8589
+ logoUrl: s.logourl,
8590
+ title: s.assetName,
8591
+ subtitle: s.assetName,
8592
+ chainName: s.network,
8593
+ apyFormatted: s.apyFormatted,
8594
+ apyLabel: "Rendimento",
8595
+ riskLevel: "low",
8596
+ onInvestClick: onDeposit ? () => onDeposit(s.id) : () => {
8597
+ },
8598
+ onWithdrawClick: onWithdraw ? () => onWithdraw(s.id) : () => {
8599
+ }
8600
+ },
8601
+ s.id
8602
+ ))
8603
+ }
8604
+ )
8605
+ ] });
8606
+ };
7781
8607
  var DateLabel = ({ children }) => {
7782
8608
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-text-sm-mobile font-poppins text-[color:var(--deframe-widget-color-text-secondary)] dark:text-[color:var(--deframe-widget-color-text-secondary-dark)]", children });
7783
8609
  };
@@ -9876,7 +10702,7 @@ function EarnFormSkeleton() {
9876
10702
  "px-[var(--deframe-widget-size-padding-x-md)]",
9877
10703
  "py-[var(--deframe-widget-size-padding-y-md)]"
9878
10704
  ].join(" ");
9879
- const titleClasses = [
10705
+ const titleClasses2 = [
9880
10706
  "flex-1",
9881
10707
  "text-[15px]",
9882
10708
  "[font-weight:var(--deframe-widget-font-weight-semibold)]",
@@ -9906,7 +10732,7 @@ function EarnFormSkeleton() {
9906
10732
  "data-test-id": "earn-form-skeleton",
9907
10733
  className: "flex flex-col font-[var(--deframe-widget-font-family)]",
9908
10734
  children: [
9909
- /* @__PURE__ */ jsxRuntime.jsx("div", { "data-test-id": "earn-form-skeleton-header", className: headerClasses, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: titleClasses, children: "Deposit" }) }),
10735
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "data-test-id": "earn-form-skeleton-header", className: headerClasses, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: titleClasses2, children: "Deposit" }) }),
9910
10736
  /* @__PURE__ */ jsxRuntime.jsx("div", { "data-test-id": "earn-form-skeleton-divider", className: dividerClasses }),
9911
10737
  /* @__PURE__ */ jsxRuntime.jsx("div", { "data-test-id": "earn-form-skeleton-body", className: bodyClasses, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-test-id": "earn-form-skeleton-input-card", className: inputCardClasses, children: [
9912
10738
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)]", children: [
@@ -10007,7 +10833,7 @@ function EarnFeedbackOverlaySimpleView({
10007
10833
  "flex flex-col items-center",
10008
10834
  "gap-[var(--deframe-widget-size-gap-sm)] text-center"
10009
10835
  );
10010
- const titleClasses = tailwindMerge.twMerge(
10836
+ const titleClasses2 = tailwindMerge.twMerge(
10011
10837
  isLoading ? "[font-size:12px] [line-height:1.25] [letter-spacing:0.10em] uppercase [font-weight:var(--deframe-widget-font-weight-semibold)] font-[var(--deframe-widget-font-family)] text-[color:var(--deframe-widget-color-brand-primary)]" : "text-[22px] font-bold text-[color:var(--deframe-widget-color-text-primary)] leading-[1.25]"
10012
10838
  );
10013
10839
  const subtitleClasses = tailwindMerge.twMerge(
@@ -10052,7 +10878,7 @@ function EarnFeedbackOverlaySimpleView({
10052
10878
  {
10053
10879
  "data-test-id": "earn-feedback-title",
10054
10880
  "data-slot": "earn-feedback-title",
10055
- className: titleClasses,
10881
+ className: titleClasses2,
10056
10882
  children: title
10057
10883
  }
10058
10884
  ),
@@ -13384,7 +14210,7 @@ function HistoryButton2({ onClick }) {
13384
14210
  }
13385
14211
  );
13386
14212
  }
13387
- var GRID_COLS = "grid grid-cols-[40px_1fr_auto] sm:grid-cols-[1fr_160px_130px] gap-x-[var(--deframe-widget-size-gap-sm)] sm:gap-x-[var(--deframe-widget-size-gap-md)]";
14213
+ var GRID_COLS3 = "grid grid-cols-[40px_1fr_auto] sm:grid-cols-[1fr_160px_130px] gap-x-[var(--deframe-widget-size-gap-sm)] sm:gap-x-[var(--deframe-widget-size-gap-md)]";
13388
14214
  function IconCircle3({ item, size = 36, className }) {
13389
14215
  const [imgError, setImgError] = React6__namespace.default.useState(false);
13390
14216
  if (item.iconUrl && !imgError) {
@@ -13484,7 +14310,7 @@ function AssetListSkeletonRow({ index }) {
13484
14310
  {
13485
14311
  "data-test-id": "asset-list-skeleton-row",
13486
14312
  className: tailwindMerge.twMerge(
13487
- GRID_COLS,
14313
+ GRID_COLS3,
13488
14314
  "items-center",
13489
14315
  "px-[var(--deframe-widget-size-padding-x-md)] py-[11px]",
13490
14316
  "border-t border-[color:var(--deframe-widget-color-border-secondary)]"
@@ -13530,7 +14356,7 @@ function AssetListSkeletonContent() {
13530
14356
  "div",
13531
14357
  {
13532
14358
  className: tailwindMerge.twMerge(
13533
- GRID_COLS,
14359
+ GRID_COLS3,
13534
14360
  "px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-sm)]",
13535
14361
  "border-t border-[color:var(--deframe-widget-color-border-secondary)]"
13536
14362
  ),
@@ -13639,7 +14465,7 @@ var DashboardTokensViewSimple = ({
13639
14465
  {
13640
14466
  "data-test-id": "asset-list-columns",
13641
14467
  className: tailwindMerge.twMerge(
13642
- GRID_COLS,
14468
+ GRID_COLS3,
13643
14469
  "px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-sm)]",
13644
14470
  "border-t border-[color:var(--deframe-widget-color-border-secondary)]"
13645
14471
  ),
@@ -13665,7 +14491,7 @@ var DashboardTokensViewSimple = ({
13665
14491
  "data-test-id": "asset-list-item",
13666
14492
  onClick: handleItemClick,
13667
14493
  className: tailwindMerge.twMerge(
13668
- GRID_COLS,
14494
+ GRID_COLS3,
13669
14495
  "items-center",
13670
14496
  "px-[var(--deframe-widget-size-padding-x-md)] py-[11px]",
13671
14497
  "border-t border-[color:var(--deframe-widget-color-border-secondary)]",
@@ -14219,6 +15045,7 @@ exports.EarnDepositSuccessView = EarnDepositSuccessView;
14219
15045
  exports.EarnDepositWarningSimpleView = EarnDepositWarningSimpleView;
14220
15046
  exports.EarnDepositWarningView = EarnDepositWarningView;
14221
15047
  exports.EarnDesktopView = EarnDesktopView;
15048
+ exports.EarnDesktopViewSimple = EarnDesktopViewSimple;
14222
15049
  exports.EarnExploreGridView = EarnExploreGridView;
14223
15050
  exports.EarnFlowSkeletonSimple = EarnFlowSkeletonSimple;
14224
15051
  exports.EarnInvestedSectionView = EarnInvestedSectionView;