@loafmarkets/ui 0.1.192 → 0.1.194

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