@loafmarkets/ui 0.1.110 → 0.1.111

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
@@ -12,7 +12,6 @@ var lucideReact = require('lucide-react');
12
12
  var LightweightCharts = require('lightweight-charts');
13
13
  var bi = require('react-icons/bi');
14
14
  var fa = require('react-icons/fa');
15
- var fi = require('react-icons/fi');
16
15
 
17
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
17
 
@@ -12030,60 +12029,58 @@ function PortfolioActivityPanel({
12030
12029
  ] }),
12031
12030
  activeTab === "subscriptions" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12032
12031
  offeringOrders.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "IPO allocations will appear here once you subscribe." }),
12033
- pageSlice(offeringOrders).map((order) => /* @__PURE__ */ jsxRuntime.jsxs(ActivityRow, { children: [
12034
- /* @__PURE__ */ jsxRuntime.jsx(ActivitySideBadge, { $side: "Buy", children: "Buy" }),
12035
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityInfo, { children: [
12036
- /* @__PURE__ */ jsxRuntime.jsx(ActivityPrimary, { children: order.tokenName }),
12037
- /* @__PURE__ */ jsxRuntime.jsxs(ActivitySecondary, { children: [
12038
- formatNumber2(order.quantity),
12039
- " tokens @ ",
12040
- formatCurrency5(order.price),
12041
- " \xB7 ",
12042
- formatTimestamp(order.createdAt)
12043
- ] })
12032
+ offeringOrders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12033
+ /* @__PURE__ */ jsxRuntime.jsxs(GridHeader, { $columns: "1.2fr 0.8fr 1fr 1fr 0.8fr 1fr", children: [
12034
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Asset" }),
12035
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Qty" }),
12036
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Price" }),
12037
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Total" }),
12038
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Status" }),
12039
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Date" })
12044
12040
  ] }),
12045
- /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: getOrderStatusMeta(order.status).color, $bg: getOrderStatusMeta(order.status).bg, children: prettyLabel(order.status) }),
12046
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityActions, { children: [
12047
- /* @__PURE__ */ jsxRuntime.jsx(ActivityAmount, { children: formatCurrency5(order.price * order.quantity) }),
12048
- order.txHash && /* @__PURE__ */ jsxRuntime.jsx(
12049
- ActivityRedirectButton,
12050
- {
12051
- href: `${blockExplorerBaseUrl}/${order.txHash}`,
12052
- target: "_blank",
12053
- rel: "noopener noreferrer",
12054
- "aria-label": `View transaction ${order.txHash}`,
12055
- children: /* @__PURE__ */ jsxRuntime.jsx(fi.FiExternalLink, { size: 14 })
12056
- }
12057
- )
12058
- ] })
12059
- ] }, `${order.tokenName}-${order.txHash}-${order.createdAt}`))
12041
+ pageSlice(offeringOrders).map((order) => {
12042
+ const meta = getOrderStatusMeta(order.status);
12043
+ return /* @__PURE__ */ jsxRuntime.jsxs(GridRow, { $columns: "1.2fr 0.8fr 1fr 1fr 0.8fr 1fr", children: [
12044
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $primary: true, children: order.tokenName }) }),
12045
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(order.quantity) }) }),
12046
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatCurrency5(order.price) }) }),
12047
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency5(order.price * order.quantity) }) }),
12048
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: meta.color, $bg: meta.bg, children: prettyLabel(order.status) }) }),
12049
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatTimestamp(order.createdAt) }) })
12050
+ ] }, `${order.tokenName}-${order.txHash}-${order.createdAt}`);
12051
+ })
12052
+ ] })
12060
12053
  ] }),
12061
12054
  activeTab === "open-orders" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12062
12055
  openOrders.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "Open orders will appear here while they are working in the market." }),
12063
- pageSlice(openOrders).map((order) => {
12064
- const meta = getOrderStatusMeta(order.status);
12065
- const isMarket = order.type === "MARKET";
12066
- const priceSegment = isMarket || !order.price ? "" : ` \xB7 ${formatCurrency5(order.price)}`;
12067
- const filledPercent = order.quantity > 0 ? Math.round(order.filledQuantity / order.quantity * 100) : 0;
12068
- const amountDisplay = !isMarket && order.price ? formatCurrency5(order.price * order.quantity) : "\u2014";
12069
- const isCancelling = cancellingOrderId === order.id;
12070
- return /* @__PURE__ */ jsxRuntime.jsxs(ActivityRow, { children: [
12071
- /* @__PURE__ */ jsxRuntime.jsx(ActivitySideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }),
12072
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityInfo, { children: [
12073
- /* @__PURE__ */ jsxRuntime.jsx(ActivityPrimary, { children: order.tokenName }),
12074
- /* @__PURE__ */ jsxRuntime.jsxs(ActivitySecondary, { children: [
12075
- formatNumber2(order.quantity),
12076
- " tokens \xB7 ",
12077
- prettyLabel(order.type),
12078
- priceSegment,
12079
- " \xB7 ",
12056
+ openOrders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12057
+ /* @__PURE__ */ jsxRuntime.jsxs(GridHeader, { $columns: onCancelOrder ? "1.2fr 0.6fr 0.7fr 0.8fr 1fr 0.8fr 0.8fr 70px" : "1.2fr 0.6fr 0.7fr 0.8fr 1fr 0.8fr 0.8fr", children: [
12058
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Asset" }),
12059
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Side" }),
12060
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Type" }),
12061
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Qty" }),
12062
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Price" }),
12063
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Filled" }),
12064
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Status" }),
12065
+ onCancelOrder && /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, {})
12066
+ ] }),
12067
+ pageSlice(openOrders).map((order) => {
12068
+ const meta = getOrderStatusMeta(order.status);
12069
+ const isMarket = order.type === "MARKET";
12070
+ const filledPercent = order.quantity > 0 ? Math.round(order.filledQuantity / order.quantity * 100) : 0;
12071
+ const isCancelling = cancellingOrderId === order.id;
12072
+ return /* @__PURE__ */ jsxRuntime.jsxs(GridRow, { $columns: onCancelOrder ? "1.2fr 0.6fr 0.7fr 0.8fr 1fr 0.8fr 0.8fr 70px" : "1.2fr 0.6fr 0.7fr 0.8fr 1fr 0.8fr 0.8fr", children: [
12073
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $primary: true, children: order.tokenName }) }),
12074
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }) }),
12075
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: prettyLabel(order.type) }) }),
12076
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(order.quantity) }) }),
12077
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency5(order.price) }) }),
12078
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsxs(CellText, { $muted: true, children: [
12080
12079
  filledPercent,
12081
- "% filled \xB7 ",
12082
- formatTimestamp(order.createdAt)
12083
- ] })
12084
- ] }),
12085
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.35rem" }, children: [
12086
- onCancelOrder && /* @__PURE__ */ jsxRuntime.jsx(
12080
+ "%"
12081
+ ] }) }),
12082
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: meta.color, $bg: meta.bg, children: prettyLabel(order.status) }) }),
12083
+ onCancelOrder && /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(
12087
12084
  CancelButton,
12088
12085
  {
12089
12086
  type: "button",
@@ -12092,102 +12089,94 @@ function PortfolioActivityPanel({
12092
12089
  e.stopPropagation();
12093
12090
  setPendingCancelOrderId(order.id);
12094
12091
  },
12095
- children: isCancelling ? "Cancelling\u2026" : "Cancel"
12092
+ children: isCancelling ? "\u2026" : "Cancel"
12096
12093
  }
12097
- ),
12098
- /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: meta.color, $bg: meta.bg, children: prettyLabel(order.status) })
12099
- ] }),
12100
- /* @__PURE__ */ jsxRuntime.jsx(ActivityAmount, { children: amountDisplay })
12101
- ] }, `open-${order.id}`);
12102
- })
12094
+ ) })
12095
+ ] }, `open-${order.id}`);
12096
+ })
12097
+ ] })
12103
12098
  ] }),
12104
12099
  activeTab === "orders" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12105
12100
  orderHistory.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "No orders yet. Place a trade to see it appear here." }),
12106
- pageSlice(orderHistory).map((order) => {
12107
- const meta = getOrderStatusMeta(order.status);
12108
- const isMarket = order.type === "MARKET";
12109
- const priceSegment = isMarket || !order.price ? "" : ` \xB7 ${formatCurrency5(order.price)}`;
12110
- const filledPercent = order.quantity > 0 ? Math.round(order.filledQuantity / order.quantity * 100) : 0;
12111
- const amountDisplay = !isMarket && order.price ? formatCurrency5(order.price * order.quantity) : "\u2014";
12112
- return /* @__PURE__ */ jsxRuntime.jsxs(ActivityRow, { children: [
12113
- /* @__PURE__ */ jsxRuntime.jsx(ActivitySideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }),
12114
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityInfo, { children: [
12115
- /* @__PURE__ */ jsxRuntime.jsx(ActivityPrimary, { children: order.tokenName }),
12116
- /* @__PURE__ */ jsxRuntime.jsxs(ActivitySecondary, { children: [
12117
- formatNumber2(order.quantity),
12118
- " tokens \xB7 ",
12119
- prettyLabel(order.type),
12120
- priceSegment,
12121
- " \xB7 ",
12101
+ orderHistory.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12102
+ /* @__PURE__ */ jsxRuntime.jsxs(GridHeader, { $columns: "1.2fr 0.6fr 0.7fr 0.8fr 1fr 0.8fr 0.8fr 1fr", children: [
12103
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Asset" }),
12104
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Side" }),
12105
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Type" }),
12106
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Qty" }),
12107
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Price" }),
12108
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Filled" }),
12109
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Status" }),
12110
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Date" })
12111
+ ] }),
12112
+ pageSlice(orderHistory).map((order) => {
12113
+ const meta = getOrderStatusMeta(order.status);
12114
+ const isMarket = order.type === "MARKET";
12115
+ const filledPercent = order.quantity > 0 ? Math.round(order.filledQuantity / order.quantity * 100) : 0;
12116
+ return /* @__PURE__ */ jsxRuntime.jsxs(GridRow, { $columns: "1.2fr 0.6fr 0.7fr 0.8fr 1fr 0.8fr 0.8fr 1fr", children: [
12117
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $primary: true, children: order.tokenName }) }),
12118
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }) }),
12119
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: prettyLabel(order.type) }) }),
12120
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(order.quantity) }) }),
12121
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency5(order.price) }) }),
12122
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsxs(CellText, { $muted: true, children: [
12122
12123
  filledPercent,
12123
- "% filled \xB7 ",
12124
- formatTimestamp(order.createdAt)
12125
- ] })
12126
- ] }),
12127
- /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: meta.color, $bg: meta.bg, children: prettyLabel(order.status) }),
12128
- /* @__PURE__ */ jsxRuntime.jsx(ActivityAmount, { children: amountDisplay })
12129
- ] }, order.id);
12130
- })
12124
+ "%"
12125
+ ] }) }),
12126
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: meta.color, $bg: meta.bg, children: prettyLabel(order.status) }) }),
12127
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatTimestamp(order.createdAt) }) })
12128
+ ] }, order.id);
12129
+ })
12130
+ ] })
12131
12131
  ] }),
12132
12132
  activeTab === "trades" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12133
12133
  tradeHistory.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "Completed trades will appear here." }),
12134
- pageSlice(tradeHistory).map((trade) => /* @__PURE__ */ jsxRuntime.jsxs(ActivityRow, { children: [
12135
- /* @__PURE__ */ jsxRuntime.jsx(ActivitySideBadge, { $side: sideLabel(trade.side), children: sideLabel(trade.side) }),
12136
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityInfo, { children: [
12137
- /* @__PURE__ */ jsxRuntime.jsx(ActivityPrimary, { children: trade.tokenName }),
12138
- /* @__PURE__ */ jsxRuntime.jsxs(ActivitySecondary, { children: [
12139
- formatNumber2(trade.quantity),
12140
- " tokens @ ",
12141
- formatCurrency5(trade.price),
12142
- " \xB7 ",
12143
- formatTimestamp(trade.executedAt)
12144
- ] })
12134
+ tradeHistory.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12135
+ /* @__PURE__ */ jsxRuntime.jsxs(GridHeader, { $columns: "1.2fr 0.6fr 0.8fr 1fr 1fr 0.8fr 1fr", children: [
12136
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Asset" }),
12137
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Side" }),
12138
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Qty" }),
12139
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Price" }),
12140
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Total" }),
12141
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Fee" }),
12142
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Date" })
12145
12143
  ] }),
12146
- /* @__PURE__ */ jsxRuntime.jsx(
12147
- ActivityTag,
12148
- {
12149
- $color: trade.side === "SELL" ? "#f6465d" : "#0ecb81",
12150
- $bg: trade.side === "SELL" ? "rgba(246,70,93,0.12)" : "rgba(14,203,129,0.12)",
12151
- children: sideLabel(trade.side)
12152
- }
12153
- ),
12154
- /* @__PURE__ */ jsxRuntime.jsx(ActivityAmount, { children: formatCurrency5(trade.price * trade.quantity) })
12155
- ] }, trade.tradeId))
12144
+ pageSlice(tradeHistory).map((trade) => /* @__PURE__ */ jsxRuntime.jsxs(GridRow, { $columns: "1.2fr 0.6fr 0.8fr 1fr 1fr 0.8fr 1fr", children: [
12145
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $primary: true, children: trade.tokenName }) }),
12146
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: sideLabel(trade.side), children: sideLabel(trade.side) }) }),
12147
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(trade.quantity) }) }),
12148
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency5(trade.price) }) }),
12149
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency5(trade.price * trade.quantity) }) }),
12150
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatCurrency5(trade.fee) }) }),
12151
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatTimestamp(trade.executedAt) }) })
12152
+ ] }, trade.tradeId))
12153
+ ] })
12156
12154
  ] }),
12157
12155
  activeTab === "transfers" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12158
12156
  transfers.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { children: "Deposits and withdrawals will appear here." }),
12159
- pageSlice(transfers).map((t, idx) => {
12160
- const isDeposit = t.type === "DEPOSIT";
12161
- const statusMeta = getOrderStatusMeta(t.status);
12162
- return /* @__PURE__ */ jsxRuntime.jsxs(ActivityRow, { children: [
12163
- /* @__PURE__ */ jsxRuntime.jsx(ActivitySideBadge, { $side: isDeposit ? "Buy" : "Sell", children: isDeposit ? "In" : "Out" }),
12164
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityInfo, { children: [
12165
- /* @__PURE__ */ jsxRuntime.jsx(ActivityPrimary, { children: isDeposit ? "Deposit" : "Withdrawal" }),
12166
- /* @__PURE__ */ jsxRuntime.jsxs(ActivitySecondary, { children: [
12167
- formatAddress(t.address),
12168
- " \xB7 ",
12169
- formatTimestamp(t.createdAt)
12170
- ] })
12171
- ] }),
12172
- /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: statusMeta.color, $bg: statusMeta.bg, children: prettyLabel(t.status) }),
12173
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityActions, { children: [
12174
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityAmount, { children: [
12157
+ transfers.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12158
+ /* @__PURE__ */ jsxRuntime.jsxs(GridHeader, { $columns: "0.8fr 1fr 1.5fr 0.8fr 1fr", children: [
12159
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Type" }),
12160
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Amount" }),
12161
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Address" }),
12162
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Status" }),
12163
+ /* @__PURE__ */ jsxRuntime.jsx(GridHeaderCell, { children: "Date" })
12164
+ ] }),
12165
+ pageSlice(transfers).map((t, idx) => {
12166
+ const isDeposit = t.type === "DEPOSIT";
12167
+ const statusMeta = getOrderStatusMeta(t.status);
12168
+ return /* @__PURE__ */ jsxRuntime.jsxs(GridRow, { $columns: "0.8fr 1fr 1.5fr 0.8fr 1fr", children: [
12169
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: isDeposit ? "Buy" : "Sell", children: isDeposit ? "Deposit" : "Withdraw" }) }),
12170
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsxs(CellText, { $color: isDeposit ? "#0ecb81" : "#f6465d", children: [
12175
12171
  isDeposit ? "+" : "-",
12176
12172
  formatCurrency5(t.amount)
12177
- ] }),
12178
- t.blockchainTxHash && /* @__PURE__ */ jsxRuntime.jsx(
12179
- ActivityRedirectButton,
12180
- {
12181
- href: `${blockExplorerBaseUrl}/${t.blockchainTxHash}`,
12182
- target: "_blank",
12183
- rel: "noopener noreferrer",
12184
- "aria-label": `View transaction ${t.blockchainTxHash}`,
12185
- children: /* @__PURE__ */ jsxRuntime.jsx(fi.FiExternalLink, { size: 14 })
12186
- }
12187
- )
12188
- ] })
12189
- ] }, t.blockchainTxHash ?? `transfer-${idx}`);
12190
- })
12173
+ ] }) }),
12174
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatAddress(t.address) }) }),
12175
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: statusMeta.color, $bg: statusMeta.bg, children: prettyLabel(t.status) }) }),
12176
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatTimestamp(t.createdAt) }) })
12177
+ ] }, t.blockchainTxHash ?? `transfer-${idx}`);
12178
+ })
12179
+ ] })
12191
12180
  ] }),
12192
12181
  activityTotalPages > 1 && /* @__PURE__ */ jsxRuntime.jsxs(PaginationRow, { children: [
12193
12182
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -12289,7 +12278,7 @@ var TabCount = styled25__default.default.span`
12289
12278
  font-weight: 600;
12290
12279
  margin-left: 2px;
12291
12280
  `;
12292
- var ActivityRow = styled25__default.default.div`
12281
+ styled25__default.default.div`
12293
12282
  display: grid;
12294
12283
  grid-template-columns: auto 1fr auto auto;
12295
12284
  align-items: center;
@@ -12305,7 +12294,7 @@ var ActivityRow = styled25__default.default.div`
12305
12294
  background: rgba(255, 255, 255, 0.015);
12306
12295
  }
12307
12296
  `;
12308
- var ActivitySideBadge = styled25__default.default.span`
12297
+ styled25__default.default.span`
12309
12298
  font-size: 0.6rem;
12310
12299
  font-weight: 700;
12311
12300
  text-transform: uppercase;
@@ -12317,17 +12306,17 @@ var ActivitySideBadge = styled25__default.default.span`
12317
12306
  color: ${({ $side }) => $side === "Buy" ? "#0ecb81" : "#f6465d"};
12318
12307
  background: ${({ $side }) => $side === "Buy" ? "rgba(14, 203, 129, 0.1)" : "rgba(246, 70, 93, 0.1)"};
12319
12308
  `;
12320
- var ActivityInfo = styled25__default.default.div`
12309
+ styled25__default.default.div`
12321
12310
  display: flex;
12322
12311
  flex-direction: column;
12323
12312
  gap: 0.1rem;
12324
12313
  `;
12325
- var ActivityPrimary = styled25__default.default.span`
12314
+ styled25__default.default.span`
12326
12315
  font-size: 0.8rem;
12327
12316
  color: #fff;
12328
12317
  font-weight: 500;
12329
12318
  `;
12330
- var ActivitySecondary = styled25__default.default.span`
12319
+ styled25__default.default.span`
12331
12320
  font-size: 0.6rem;
12332
12321
  color: rgba(255, 255, 255, 0.35);
12333
12322
  `;
@@ -12340,20 +12329,20 @@ var ActivityTag = styled25__default.default.span`
12340
12329
  background: ${({ $bg }) => $bg || "rgba(255, 255, 255, 0.06)"};
12341
12330
  white-space: nowrap;
12342
12331
  `;
12343
- var ActivityAmount = styled25__default.default.span`
12332
+ styled25__default.default.span`
12344
12333
  font-size: 0.8rem;
12345
12334
  font-weight: 600;
12346
12335
  color: #fff;
12347
12336
  text-align: right;
12348
12337
  white-space: nowrap;
12349
12338
  `;
12350
- var ActivityActions = styled25__default.default.div`
12339
+ styled25__default.default.div`
12351
12340
  display: flex;
12352
12341
  align-items: center;
12353
12342
  justify-content: flex-end;
12354
12343
  gap: 0.35rem;
12355
12344
  `;
12356
- var ActivityRedirectButton = styled25__default.default.a`
12345
+ styled25__default.default.a`
12357
12346
  display: inline-flex;
12358
12347
  align-items: center;
12359
12348
  justify-content: center;
@@ -12475,6 +12464,46 @@ var CancelButton = styled25__default.default.button`
12475
12464
  cursor: not-allowed;
12476
12465
  }
12477
12466
  `;
12467
+ var GridHeader = styled25__default.default.div`
12468
+ display: grid;
12469
+ grid-template-columns: ${(p) => p.$columns};
12470
+ gap: 0 0.75rem;
12471
+ padding: 0.4rem 0.5rem;
12472
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
12473
+ `;
12474
+ var GridHeaderCell = styled25__default.default.div`
12475
+ font-size: 0.68rem;
12476
+ font-weight: 500;
12477
+ color: rgba(255, 255, 255, 0.4);
12478
+ white-space: nowrap;
12479
+ `;
12480
+ var GridRow = styled25__default.default.div`
12481
+ display: grid;
12482
+ grid-template-columns: ${(p) => p.$columns};
12483
+ align-items: center;
12484
+ gap: 0 0.75rem;
12485
+ padding: 0.5rem 0.5rem;
12486
+ border-bottom: 1px solid rgba(255, 255, 255, 0.03);
12487
+ &:last-child { border-bottom: none; }
12488
+ `;
12489
+ var GridCell = styled25__default.default.div`
12490
+ display: flex;
12491
+ align-items: center;
12492
+ min-width: 0;
12493
+ `;
12494
+ var CellText = styled25__default.default.span`
12495
+ font-size: 0.8rem;
12496
+ font-weight: ${(p) => p.$primary ? 600 : 400};
12497
+ color: ${(p) => p.$color || (p.$muted ? "rgba(255,255,255,0.5)" : "#fff")};
12498
+ white-space: nowrap;
12499
+ overflow: hidden;
12500
+ text-overflow: ellipsis;
12501
+ `;
12502
+ var SideBadge = styled25__default.default.span`
12503
+ font-size: 0.68rem;
12504
+ font-weight: 600;
12505
+ color: ${({ $side }) => $side === "Buy" ? "#0ecb81" : "#f6465d"};
12506
+ `;
12478
12507
  var CancelConfirmOverlay = styled25__default.default.div`
12479
12508
  position: fixed;
12480
12509
  inset: 0;