@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.js CHANGED
@@ -8583,7 +8583,7 @@ function PropertyOverview({
8583
8583
  { label: "Location", value: location || "\u2014" }
8584
8584
  ];
8585
8585
  const vol24hDollar = volume24h != null && tokenPriceValue ? volume24h * tokenPriceValue : null;
8586
- const holdRatio = (() => {
8586
+ (() => {
8587
8587
  if (!tokenMarketCap || tokenMarketCap <= 0 || vol24hDollar == null) return null;
8588
8588
  const turnover = vol24hDollar / (tokenMarketCap / 2);
8589
8589
  const holdPct = Math.max(0, Math.min(100, (1 - turnover) * 100));
@@ -8657,40 +8657,32 @@ function PropertyOverview({
8657
8657
  ] }),
8658
8658
  /* @__PURE__ */ jsxRuntime.jsxs(Section, { children: [
8659
8659
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { children: "Statistics" }),
8660
- /* @__PURE__ */ jsxRuntime.jsxs(StatsTabbedCard, { children: [
8661
- /* @__PURE__ */ jsxRuntime.jsxs(StatsTabBar, { children: [
8662
- /* @__PURE__ */ jsxRuntime.jsx(StatsTab, { $active: statsTab === "token", onClick: () => setStatsTab("token"), children: "Token Performance" }),
8663
- /* @__PURE__ */ jsxRuntime.jsx(StatsTab, { $active: statsTab === "property", onClick: () => setStatsTab("property"), children: "Property Fundamentals" })
8660
+ /* @__PURE__ */ jsxRuntime.jsxs(StatsDesktop, { children: [
8661
+ /* @__PURE__ */ jsxRuntime.jsxs(StatsRowSection, { children: [
8662
+ /* @__PURE__ */ jsxRuntime.jsx(StatsRowLabel, { children: "Token Performance" }),
8663
+ /* @__PURE__ */ jsxRuntime.jsx(StatsHRow, { children: tokenStats.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(StatsHCell, { children: [
8664
+ /* @__PURE__ */ jsxRuntime.jsx(StatsHCellLabel, { children: item.label }),
8665
+ item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsxRuntime.jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsxRuntime.jsx(StatsHCellValue, { $gold: !!item.gold, children: item.value })
8666
+ ] }, item.label)) })
8664
8667
  ] }),
8665
- statsTab === "token" && /* @__PURE__ */ jsxRuntime.jsxs(StatsTabContent, { children: [
8666
- tokenStats.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { $gold: !!item.gold, children: [
8667
- /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: item.label }),
8668
- item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsxRuntime.jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsxRuntime.jsx(StatValue, { $gold: !!item.gold, children: item.value })
8669
- ] }, item.label)),
8670
- holdRatio && /* @__PURE__ */ jsxRuntime.jsxs(HoldRatioWrap, { children: [
8671
- /* @__PURE__ */ jsxRuntime.jsxs(HoldRatioTitle, { children: [
8672
- /* @__PURE__ */ jsxRuntime.jsx(HoldRatioTitleText, { children: "Holding Ratio" }),
8673
- /* @__PURE__ */ jsxRuntime.jsx(HoldRatioInfo, { "data-tip": "Proportion of token holders vs active traders over the last 24 hours, measured by trading volume against market capitalisation.", children: "?" })
8674
- ] }),
8675
- /* @__PURE__ */ jsxRuntime.jsxs(HoldRatioHeader, { children: [
8676
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
8677
- /* @__PURE__ */ jsxRuntime.jsx(HoldRatioLabel, { $side: "hold", children: "Holding " }),
8678
- /* @__PURE__ */ jsxRuntime.jsxs(HoldRatioValue, { $side: "hold", children: [
8679
- holdRatio.holdPct.toFixed(1),
8680
- "%"
8681
- ] })
8682
- ] }),
8683
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
8684
- /* @__PURE__ */ jsxRuntime.jsxs(HoldRatioValue, { $side: "trade", children: [
8685
- holdRatio.tradePct,
8686
- "%"
8687
- ] }),
8688
- /* @__PURE__ */ jsxRuntime.jsx(HoldRatioLabel, { $side: "trade", children: " Trading" })
8689
- ] })
8690
- ] }),
8691
- /* @__PURE__ */ jsxRuntime.jsx(HoldRatioTrack, { children: /* @__PURE__ */ jsxRuntime.jsx(HoldRatioFill, { $pct: holdRatio.holdPct }) })
8692
- ] })
8668
+ /* @__PURE__ */ jsxRuntime.jsxs(StatsRowSection, { children: [
8669
+ /* @__PURE__ */ jsxRuntime.jsx(StatsRowLabel, { children: "Property Fundamentals" }),
8670
+ /* @__PURE__ */ jsxRuntime.jsx(StatsHRow, { children: propertyStats.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(StatsHCell, { children: [
8671
+ /* @__PURE__ */ jsxRuntime.jsx(StatsHCellLabel, { children: item.label }),
8672
+ /* @__PURE__ */ jsxRuntime.jsx(StatsHCellValue, { children: item.value })
8673
+ ] }, item.label)) }),
8674
+ /* @__PURE__ */ jsxRuntime.jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
8675
+ ] })
8676
+ ] }),
8677
+ /* @__PURE__ */ jsxRuntime.jsx(StatsMobile, { children: /* @__PURE__ */ jsxRuntime.jsxs(StatsTabbedCard, { children: [
8678
+ /* @__PURE__ */ jsxRuntime.jsxs(StatsTabBar, { children: [
8679
+ /* @__PURE__ */ jsxRuntime.jsx(StatsTab, { $active: statsTab === "token", onClick: () => setStatsTab("token"), children: "Token" }),
8680
+ /* @__PURE__ */ jsxRuntime.jsx(StatsTab, { $active: statsTab === "property", onClick: () => setStatsTab("property"), children: "Property" })
8693
8681
  ] }),
8682
+ statsTab === "token" && /* @__PURE__ */ jsxRuntime.jsx(StatsTabContent, { children: tokenStats.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { $gold: !!item.gold, children: [
8683
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: item.label }),
8684
+ item.label === "Holders" && holderCount != null ? /* @__PURE__ */ jsxRuntime.jsx(StatValueClickable, { onClick: () => setShowHolders(true), children: item.value }) : /* @__PURE__ */ jsxRuntime.jsx(StatValue, { $gold: !!item.gold, children: item.value })
8685
+ ] }, item.label)) }),
8694
8686
  statsTab === "property" && /* @__PURE__ */ jsxRuntime.jsxs(StatsTabContent, { children: [
8695
8687
  propertyStats.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8696
8688
  /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: item.label }),
@@ -8698,7 +8690,7 @@ function PropertyOverview({
8698
8690
  ] }, item.label)),
8699
8691
  /* @__PURE__ */ jsxRuntime.jsx(DividendHistoryBtn, { onClick: () => setShowDividendHistory(true), children: "See Dividend History \u2192" })
8700
8692
  ] })
8701
- ] })
8693
+ ] }) })
8702
8694
  ] }),
8703
8695
  showDividendHistory && /* @__PURE__ */ jsxRuntime.jsx(
8704
8696
  DividendHistoryPopup,
@@ -9359,6 +9351,60 @@ var ChainLogoImg = styled9__default.default.img`
9359
9351
  width: auto;
9360
9352
  vertical-align: middle;
9361
9353
  `;
9354
+ var StatsDesktop = styled9__default.default.div`
9355
+ display: flex;
9356
+ flex-direction: column;
9357
+ gap: 1.5rem;
9358
+ @media (max-width: 768px) { display: none; }
9359
+ `;
9360
+ var StatsMobile = styled9__default.default.div`
9361
+ display: none;
9362
+ @media (max-width: 768px) { display: block; }
9363
+ `;
9364
+ var StatsRowSection = styled9__default.default.div`
9365
+ display: flex;
9366
+ flex-direction: column;
9367
+ gap: 0.5rem;
9368
+ `;
9369
+ var StatsRowLabel = styled9__default.default.div`
9370
+ font-size: 0.65rem;
9371
+ color: #D4AF37;
9372
+ text-transform: uppercase;
9373
+ letter-spacing: 0.12em;
9374
+ font-weight: 600;
9375
+ `;
9376
+ var StatsHRow = styled9__default.default.div`
9377
+ display: flex;
9378
+ gap: 0;
9379
+ background: rgba(255,255,255,0.025);
9380
+ border: 1px solid rgba(255,255,255,0.06);
9381
+ border-radius: 10px;
9382
+ overflow: hidden;
9383
+ `;
9384
+ var StatsHCell = styled9__default.default.div`
9385
+ flex: 1;
9386
+ display: flex;
9387
+ flex-direction: column;
9388
+ align-items: center;
9389
+ gap: 6px;
9390
+ padding: 1rem 0.75rem;
9391
+ border-right: 1px solid rgba(255,255,255,0.04);
9392
+ &:last-child { border-right: none; }
9393
+ transition: background 0.15s;
9394
+ &:hover { background: rgba(255,255,255,0.03); }
9395
+ `;
9396
+ var StatsHCellLabel = styled9__default.default.span`
9397
+ font-size: 0.7rem;
9398
+ color: rgba(255,255,255,0.4);
9399
+ font-weight: 400;
9400
+ white-space: nowrap;
9401
+ `;
9402
+ var StatsHCellValue = styled9__default.default.span`
9403
+ font-size: 0.92rem;
9404
+ font-weight: 500;
9405
+ color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
9406
+ font-variant-numeric: tabular-nums;
9407
+ `;
9362
9408
  var StatsTabbedCard = styled9__default.default.div`
9363
9409
  background: rgba(255,255,255,0.025);
9364
9410
  border: 1px solid rgba(255,255,255,0.06);
@@ -9770,7 +9816,7 @@ var SecurityDocLink = styled9__default.default.a`
9770
9816
  color: rgba(212,175,55,0.9);
9771
9817
  }
9772
9818
  `;
9773
- var HoldRatioWrap = styled9__default.default.div`
9819
+ styled9__default.default.div`
9774
9820
  display: flex;
9775
9821
  flex-direction: column;
9776
9822
  gap: 6px;
@@ -9778,19 +9824,19 @@ var HoldRatioWrap = styled9__default.default.div`
9778
9824
  margin-top: 0.5rem;
9779
9825
  border-top: 1px solid rgba(255,255,255,0.04);
9780
9826
  `;
9781
- var HoldRatioTitle = styled9__default.default.div`
9827
+ styled9__default.default.div`
9782
9828
  display: flex;
9783
9829
  align-items: center;
9784
9830
  gap: 5px;
9785
9831
  `;
9786
- var HoldRatioTitleText = styled9__default.default.span`
9832
+ styled9__default.default.span`
9787
9833
  font-size: 0.65rem;
9788
9834
  font-weight: 600;
9789
9835
  text-transform: uppercase;
9790
9836
  letter-spacing: 0.06em;
9791
9837
  color: rgba(255,255,255,0.4);
9792
9838
  `;
9793
- var HoldRatioInfo = styled9__default.default.span`
9839
+ styled9__default.default.span`
9794
9840
  position: relative;
9795
9841
  display: inline-flex;
9796
9842
  align-items: center;
@@ -9833,32 +9879,32 @@ var HoldRatioInfo = styled9__default.default.span`
9833
9879
  opacity: 1;
9834
9880
  }
9835
9881
  `;
9836
- var HoldRatioHeader = styled9__default.default.div`
9882
+ styled9__default.default.div`
9837
9883
  display: flex;
9838
9884
  align-items: center;
9839
9885
  justify-content: space-between;
9840
9886
  `;
9841
- var HoldRatioLabel = styled9__default.default.span`
9887
+ styled9__default.default.span`
9842
9888
  font-size: 0.7rem;
9843
9889
  font-weight: 600;
9844
9890
  text-transform: uppercase;
9845
9891
  letter-spacing: 0.05em;
9846
9892
  color: ${(p) => p.$side === "trade" ? "rgba(246, 70, 93, 0.6)" : "rgba(14, 203, 129, 0.6)"};
9847
9893
  `;
9848
- var HoldRatioValue = styled9__default.default.span`
9894
+ styled9__default.default.span`
9849
9895
  font-size: 0.75rem;
9850
9896
  font-weight: 600;
9851
9897
  font-variant-numeric: tabular-nums;
9852
9898
  color: ${(p) => p.$side === "trade" ? "rgba(246, 70, 93, 0.7)" : "rgba(14, 203, 129, 0.7)"};
9853
9899
  `;
9854
- var HoldRatioTrack = styled9__default.default.div`
9900
+ styled9__default.default.div`
9855
9901
  height: 6px;
9856
9902
  border-radius: 3px;
9857
9903
  background: rgba(246, 70, 93, 0.15);
9858
9904
  overflow: hidden;
9859
9905
  position: relative;
9860
9906
  `;
9861
- var HoldRatioFill = styled9__default.default.div`
9907
+ styled9__default.default.div`
9862
9908
  height: 100%;
9863
9909
  width: ${(p) => p.$pct}%;
9864
9910
  border-radius: 3px;