@loafmarkets/ui 0.1.192 → 0.1.193

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
@@ -8496,6 +8496,7 @@ function PropertyOverview({
8496
8496
  }) {
8497
8497
  const [isDescExpanded, setDescExpanded] = useState(false);
8498
8498
  const [showDividendHistory, setShowDividendHistory] = useState(false);
8499
+ const [copiedAddress, setCopiedAddress] = useState(false);
8499
8500
  const description = descriptionProp ?? overviewData?.description ?? DEFAULT_DESCRIPTION;
8500
8501
  const landSize = landProp ?? overviewData?.landSizeSqm ?? null;
8501
8502
  const buildingSize = buildingProp ?? overviewData?.buildingSizeSqm ?? null;
@@ -8545,7 +8546,7 @@ function PropertyOverview({
8545
8546
  ] });
8546
8547
  const tokenDetailsItems = [
8547
8548
  { label: "Chain", value: chainValue },
8548
- { label: "On-Chain Address", value: contractAddress ? truncateAddress(contractAddress) : "\u2014", mono: true, link: contractAddress ? `https://basescan.org/address/${contractAddress}` : void 0 },
8549
+ { label: "On-Chain Address", value: contractAddress ? truncateAddress(contractAddress) : "\u2014", mono: true, link: contractAddress ? `https://basescan.org/address/${contractAddress}` : void 0, copyValue: contractAddress },
8549
8550
  { label: "Token Ticker", value: ticker ?? "\u2014" },
8550
8551
  { label: "Total Circulating Tokens", value: isLoading && resolvedTokensIssued == null ? loadingSkeleton : resolvedTokensIssued?.toLocaleString() ?? "\u2014" },
8551
8552
  { label: "Percentage Tokenized", value: percentageTokenized != null ? `${percentageTokenized}%` : "\u2014" },
@@ -8604,7 +8605,24 @@ function PropertyOverview({
8604
8605
  /* @__PURE__ */ jsx(TokenDetailsTitle, { children: "Token Details" }),
8605
8606
  tokenDetailsItems.map((item) => /* @__PURE__ */ jsxs(TokenDetailRow, { children: [
8606
8607
  /* @__PURE__ */ jsx(TokenDetailLabel, { children: item.label }),
8607
- /* @__PURE__ */ jsx(TokenDetailValue, { $mono: !!item.mono, children: item.link ? /* @__PURE__ */ jsx("a", { href: item.link, target: "_blank", rel: "noopener noreferrer", style: { color: "#3380FF", textDecoration: "none" }, children: item.value }) : item.value })
8608
+ /* @__PURE__ */ jsxs(TokenDetailValue, { $mono: !!item.mono, children: [
8609
+ item.link ? /* @__PURE__ */ jsx("a", { href: item.link, target: "_blank", rel: "noopener noreferrer", style: { color: "#3380FF", textDecoration: "none" }, children: item.value }) : item.value,
8610
+ item.copyValue && /* @__PURE__ */ jsx(
8611
+ CopyBtn,
8612
+ {
8613
+ onClick: () => {
8614
+ navigator.clipboard.writeText(item.copyValue);
8615
+ setCopiedAddress(true);
8616
+ setTimeout(() => setCopiedAddress(false), 1500);
8617
+ },
8618
+ title: copiedAddress ? "Copied!" : "Copy address",
8619
+ children: copiedAddress ? /* @__PURE__ */ jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M20 6L9 17l-5-5" }) }) : /* @__PURE__ */ jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
8620
+ /* @__PURE__ */ jsx("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2" }),
8621
+ /* @__PURE__ */ jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
8622
+ ] })
8623
+ }
8624
+ )
8625
+ ] })
8608
8626
  ] }, item.label))
8609
8627
  ] }),
8610
8628
  /* @__PURE__ */ jsxs(TrustBadgesCard, { children: [
@@ -8619,7 +8637,7 @@ function PropertyOverview({
8619
8637
  /* @__PURE__ */ jsx(TrustBadgeLabel, { children: "Land Title" })
8620
8638
  ] }),
8621
8639
  /* @__PURE__ */ jsxs(TrustBadge, { children: [
8622
- /* @__PURE__ */ jsx(TrustBadgeLogoWrap, { children: /* @__PURE__ */ jsx("img", { src: "/savills.png", alt: "Savills", style: { height: 38, borderRadius: 3, opacity: 0.85 } }) }),
8640
+ /* @__PURE__ */ jsx(TrustBadgeLogoWrap, { children: /* @__PURE__ */ jsx("img", { src: "/savills.png", alt: "Savills", style: { height: 38, borderRadius: 3, filter: "grayscale(1) brightness(1.2) contrast(1.6)", opacity: 0.7 } }) }),
8623
8641
  /* @__PURE__ */ jsx(TrustBadgeLabel, { children: "Valuation" })
8624
8642
  ] })
8625
8643
  ] })
@@ -9312,6 +9330,18 @@ var TrustBadgeLabel = styled9.span`
9312
9330
  font-weight: 400;
9313
9331
  text-align: center;
9314
9332
  `;
9333
+ var CopyBtn = styled9.button`
9334
+ background: none;
9335
+ border: none;
9336
+ color: rgba(255,255,255,0.3);
9337
+ cursor: pointer;
9338
+ padding: 2px;
9339
+ margin-left: 6px;
9340
+ display: inline-flex;
9341
+ align-items: center;
9342
+ transition: color 0.15s;
9343
+ &:hover { color: rgba(255,255,255,0.7); }
9344
+ `;
9315
9345
  var ChainLogos = styled9.span`
9316
9346
  display: inline-flex;
9317
9347
  align-items: center;