@loafmarkets/ui 0.1.213 → 0.1.214

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
@@ -8557,7 +8557,7 @@ function PropertyOverview({
8557
8557
  { label: "Location", value: location || "\u2014" }
8558
8558
  ];
8559
8559
  const vol24hDollar = volume24h != null && tokenPriceValue ? volume24h * tokenPriceValue : null;
8560
- const holdRatio = (() => {
8560
+ (() => {
8561
8561
  if (!tokenMarketCap || tokenMarketCap <= 0 || vol24hDollar == null) return null;
8562
8562
  const turnover = vol24hDollar / (tokenMarketCap / 2);
8563
8563
  const holdPct = Math.max(0, Math.min(100, (1 - turnover) * 100));
@@ -8631,40 +8631,32 @@ function PropertyOverview({
8631
8631
  ] }),
8632
8632
  /* @__PURE__ */ jsxs(Section, { children: [
8633
8633
  /* @__PURE__ */ jsx(SectionHeader, { children: "Statistics" }),
8634
- /* @__PURE__ */ jsxs(StatsTabbedCard, { children: [
8635
- /* @__PURE__ */ jsxs(StatsTabBar, { children: [
8636
- /* @__PURE__ */ jsx(StatsTab, { $active: statsTab === "token", onClick: () => setStatsTab("token"), children: "Token Performance" }),
8637
- /* @__PURE__ */ jsx(StatsTab, { $active: statsTab === "property", onClick: () => setStatsTab("property"), children: "Property Fundamentals" })
8634
+ /* @__PURE__ */ jsxs(StatsDesktop, { children: [
8635
+ /* @__PURE__ */ jsxs(StatsRowSection, { children: [
8636
+ /* @__PURE__ */ jsx(StatsRowLabel, { children: "Token Performance" }),
8637
+ /* @__PURE__ */ jsx(StatsHRow, { children: tokenStats.map((item) => /* @__PURE__ */ jsxs(StatsHCell, { children: [
8638
+ /* @__PURE__ */ jsx(StatsHCellLabel, { children: item.label }),
8639
+ item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsx(StatsHCellValue, { $gold: !!item.gold, children: item.value })
8640
+ ] }, item.label)) })
8638
8641
  ] }),
8639
- statsTab === "token" && /* @__PURE__ */ jsxs(StatsTabContent, { children: [
8640
- tokenStats.map((item) => /* @__PURE__ */ jsxs(StatRow, { $gold: !!item.gold, children: [
8641
- /* @__PURE__ */ jsx(StatLabel, { children: item.label }),
8642
- item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsx(StatValue, { $gold: !!item.gold, children: item.value })
8643
- ] }, item.label)),
8644
- holdRatio && /* @__PURE__ */ jsxs(HoldRatioWrap, { children: [
8645
- /* @__PURE__ */ jsxs(HoldRatioTitle, { children: [
8646
- /* @__PURE__ */ jsx(HoldRatioTitleText, { children: "Holding Ratio" }),
8647
- /* @__PURE__ */ jsx(HoldRatioInfo, { "data-tip": "Proportion of token holders vs active traders over the last 24 hours, measured by trading volume against market capitalisation.", children: "?" })
8648
- ] }),
8649
- /* @__PURE__ */ jsxs(HoldRatioHeader, { children: [
8650
- /* @__PURE__ */ jsxs("div", { children: [
8651
- /* @__PURE__ */ jsx(HoldRatioLabel, { $side: "hold", children: "Holding " }),
8652
- /* @__PURE__ */ jsxs(HoldRatioValue, { $side: "hold", children: [
8653
- holdRatio.holdPct.toFixed(1),
8654
- "%"
8655
- ] })
8656
- ] }),
8657
- /* @__PURE__ */ jsxs("div", { children: [
8658
- /* @__PURE__ */ jsxs(HoldRatioValue, { $side: "trade", children: [
8659
- holdRatio.tradePct,
8660
- "%"
8661
- ] }),
8662
- /* @__PURE__ */ jsx(HoldRatioLabel, { $side: "trade", children: " Trading" })
8663
- ] })
8664
- ] }),
8665
- /* @__PURE__ */ jsx(HoldRatioTrack, { children: /* @__PURE__ */ jsx(HoldRatioFill, { $pct: holdRatio.holdPct }) })
8666
- ] })
8642
+ /* @__PURE__ */ jsxs(StatsRowSection, { children: [
8643
+ /* @__PURE__ */ jsx(StatsRowLabel, { children: "Property Fundamentals" }),
8644
+ /* @__PURE__ */ jsx(StatsHRow, { children: propertyStats.map((item) => /* @__PURE__ */ jsxs(StatsHCell, { children: [
8645
+ /* @__PURE__ */ jsx(StatsHCellLabel, { children: item.label }),
8646
+ /* @__PURE__ */ jsx(StatsHCellValue, { children: item.value })
8647
+ ] }, item.label)) }),
8648
+ /* @__PURE__ */ jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
8649
+ ] })
8650
+ ] }),
8651
+ /* @__PURE__ */ jsx(StatsMobile, { children: /* @__PURE__ */ jsxs(StatsTabbedCard, { children: [
8652
+ /* @__PURE__ */ jsxs(StatsTabBar, { children: [
8653
+ /* @__PURE__ */ jsx(StatsTab, { $active: statsTab === "token", onClick: () => setStatsTab("token"), children: "Token" }),
8654
+ /* @__PURE__ */ jsx(StatsTab, { $active: statsTab === "property", onClick: () => setStatsTab("property"), children: "Property" })
8667
8655
  ] }),
8656
+ statsTab === "token" && /* @__PURE__ */ jsx(StatsTabContent, { children: tokenStats.map((item) => /* @__PURE__ */ jsxs(StatRow, { $gold: !!item.gold, children: [
8657
+ /* @__PURE__ */ jsx(StatLabel, { children: item.label }),
8658
+ item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsx(StatValue, { $gold: !!item.gold, children: item.value })
8659
+ ] }, item.label)) }),
8668
8660
  statsTab === "property" && /* @__PURE__ */ jsxs(StatsTabContent, { children: [
8669
8661
  propertyStats.map((item) => /* @__PURE__ */ jsxs(StatRow, { children: [
8670
8662
  /* @__PURE__ */ jsx(StatLabel, { children: item.label }),
@@ -8672,7 +8664,7 @@ function PropertyOverview({
8672
8664
  ] }, item.label)),
8673
8665
  /* @__PURE__ */ jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
8674
8666
  ] })
8675
- ] })
8667
+ ] }) })
8676
8668
  ] }),
8677
8669
  showDividendHistory && /* @__PURE__ */ jsx(
8678
8670
  DividendHistoryPopup,
@@ -9333,6 +9325,60 @@ var ChainLogoImg = styled9.img`
9333
9325
  width: auto;
9334
9326
  vertical-align: middle;
9335
9327
  `;
9328
+ var StatsDesktop = styled9.div`
9329
+ display: flex;
9330
+ flex-direction: column;
9331
+ gap: 1.5rem;
9332
+ @media (max-width: 768px) { display: none; }
9333
+ `;
9334
+ var StatsMobile = styled9.div`
9335
+ display: none;
9336
+ @media (max-width: 768px) { display: block; }
9337
+ `;
9338
+ var StatsRowSection = styled9.div`
9339
+ display: flex;
9340
+ flex-direction: column;
9341
+ gap: 0.5rem;
9342
+ `;
9343
+ var StatsRowLabel = styled9.div`
9344
+ font-size: 0.65rem;
9345
+ color: #D4AF37;
9346
+ text-transform: uppercase;
9347
+ letter-spacing: 0.12em;
9348
+ font-weight: 600;
9349
+ `;
9350
+ var StatsHRow = styled9.div`
9351
+ display: flex;
9352
+ gap: 0;
9353
+ background: rgba(255,255,255,0.025);
9354
+ border: 1px solid rgba(255,255,255,0.06);
9355
+ border-radius: 10px;
9356
+ overflow: hidden;
9357
+ `;
9358
+ var StatsHCell = styled9.div`
9359
+ flex: 1;
9360
+ display: flex;
9361
+ flex-direction: column;
9362
+ align-items: center;
9363
+ gap: 6px;
9364
+ padding: 1rem 0.75rem;
9365
+ border-right: 1px solid rgba(255,255,255,0.04);
9366
+ &:last-child { border-right: none; }
9367
+ transition: background 0.15s;
9368
+ &:hover { background: rgba(255,255,255,0.03); }
9369
+ `;
9370
+ var StatsHCellLabel = styled9.span`
9371
+ font-size: 0.7rem;
9372
+ color: rgba(255,255,255,0.4);
9373
+ font-weight: 400;
9374
+ white-space: nowrap;
9375
+ `;
9376
+ var StatsHCellValue = styled9.span`
9377
+ font-size: 0.92rem;
9378
+ font-weight: 500;
9379
+ color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
9380
+ font-variant-numeric: tabular-nums;
9381
+ `;
9336
9382
  var StatsTabbedCard = styled9.div`
9337
9383
  background: rgba(255,255,255,0.025);
9338
9384
  border: 1px solid rgba(255,255,255,0.06);
@@ -9744,7 +9790,7 @@ var SecurityDocLink = styled9.a`
9744
9790
  color: rgba(212,175,55,0.9);
9745
9791
  }
9746
9792
  `;
9747
- var HoldRatioWrap = styled9.div`
9793
+ styled9.div`
9748
9794
  display: flex;
9749
9795
  flex-direction: column;
9750
9796
  gap: 6px;
@@ -9752,19 +9798,19 @@ var HoldRatioWrap = styled9.div`
9752
9798
  margin-top: 0.5rem;
9753
9799
  border-top: 1px solid rgba(255,255,255,0.04);
9754
9800
  `;
9755
- var HoldRatioTitle = styled9.div`
9801
+ styled9.div`
9756
9802
  display: flex;
9757
9803
  align-items: center;
9758
9804
  gap: 5px;
9759
9805
  `;
9760
- var HoldRatioTitleText = styled9.span`
9806
+ styled9.span`
9761
9807
  font-size: 0.65rem;
9762
9808
  font-weight: 600;
9763
9809
  text-transform: uppercase;
9764
9810
  letter-spacing: 0.06em;
9765
9811
  color: rgba(255,255,255,0.4);
9766
9812
  `;
9767
- var HoldRatioInfo = styled9.span`
9813
+ styled9.span`
9768
9814
  position: relative;
9769
9815
  display: inline-flex;
9770
9816
  align-items: center;
@@ -9807,32 +9853,32 @@ var HoldRatioInfo = styled9.span`
9807
9853
  opacity: 1;
9808
9854
  }
9809
9855
  `;
9810
- var HoldRatioHeader = styled9.div`
9856
+ styled9.div`
9811
9857
  display: flex;
9812
9858
  align-items: center;
9813
9859
  justify-content: space-between;
9814
9860
  `;
9815
- var HoldRatioLabel = styled9.span`
9861
+ styled9.span`
9816
9862
  font-size: 0.7rem;
9817
9863
  font-weight: 600;
9818
9864
  text-transform: uppercase;
9819
9865
  letter-spacing: 0.05em;
9820
9866
  color: ${(p) => p.$side === "trade" ? "rgba(246, 70, 93, 0.6)" : "rgba(14, 203, 129, 0.6)"};
9821
9867
  `;
9822
- var HoldRatioValue = styled9.span`
9868
+ styled9.span`
9823
9869
  font-size: 0.75rem;
9824
9870
  font-weight: 600;
9825
9871
  font-variant-numeric: tabular-nums;
9826
9872
  color: ${(p) => p.$side === "trade" ? "rgba(246, 70, 93, 0.7)" : "rgba(14, 203, 129, 0.7)"};
9827
9873
  `;
9828
- var HoldRatioTrack = styled9.div`
9874
+ styled9.div`
9829
9875
  height: 6px;
9830
9876
  border-radius: 3px;
9831
9877
  background: rgba(246, 70, 93, 0.15);
9832
9878
  overflow: hidden;
9833
9879
  position: relative;
9834
9880
  `;
9835
- var HoldRatioFill = styled9.div`
9881
+ styled9.div`
9836
9882
  height: 100%;
9837
9883
  width: ${(p) => p.$pct}%;
9838
9884
  border-radius: 3px;