@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.js CHANGED
@@ -8091,8 +8091,9 @@ function GalleryMapSection({
8091
8091
  ] }),
8092
8092
  /* @__PURE__ */ jsxRuntime.jsxs(SuburbProfile, { children: [
8093
8093
  /* @__PURE__ */ jsxRuntime.jsxs(SuburbProfileTitle, { children: [
8094
- "Suburb Profile \u2014 ",
8095
- propertyLocation.split(",")[0]?.trim() || propertyLocation
8094
+ "Suburb Profile (",
8095
+ propertyLocation.split(",")[0]?.trim() || propertyLocation,
8096
+ ")"
8096
8097
  ] }),
8097
8098
  /* @__PURE__ */ jsxRuntime.jsxs(SuburbStatsGrid, { children: [
8098
8099
  /* @__PURE__ */ jsxRuntime.jsxs(SuburbStat, { children: [
@@ -8522,6 +8523,7 @@ function PropertyOverview({
8522
8523
  }) {
8523
8524
  const [isDescExpanded, setDescExpanded] = React5.useState(false);
8524
8525
  const [showDividendHistory, setShowDividendHistory] = React5.useState(false);
8526
+ const [copiedAddress, setCopiedAddress] = React5.useState(false);
8525
8527
  const description = descriptionProp ?? overviewData?.description ?? DEFAULT_DESCRIPTION;
8526
8528
  const landSize = landProp ?? overviewData?.landSizeSqm ?? null;
8527
8529
  const buildingSize = buildingProp ?? overviewData?.buildingSizeSqm ?? null;
@@ -8571,7 +8573,7 @@ function PropertyOverview({
8571
8573
  ] });
8572
8574
  const tokenDetailsItems = [
8573
8575
  { label: "Chain", value: chainValue },
8574
- { label: "On-Chain Address", value: contractAddress ? truncateAddress(contractAddress) : "\u2014", mono: true, link: contractAddress ? `https://basescan.org/address/${contractAddress}` : void 0 },
8576
+ { label: "On-Chain Address", value: contractAddress ? truncateAddress(contractAddress) : "\u2014", mono: true, link: contractAddress ? `https://basescan.org/address/${contractAddress}` : void 0, copyValue: contractAddress },
8575
8577
  { label: "Token Ticker", value: ticker ?? "\u2014" },
8576
8578
  { label: "Total Circulating Tokens", value: isLoading && resolvedTokensIssued == null ? loadingSkeleton : resolvedTokensIssued?.toLocaleString() ?? "\u2014" },
8577
8579
  { label: "Percentage Tokenized", value: percentageTokenized != null ? `${percentageTokenized}%` : "\u2014" },
@@ -8630,7 +8632,24 @@ function PropertyOverview({
8630
8632
  /* @__PURE__ */ jsxRuntime.jsx(TokenDetailsTitle, { children: "Token Details" }),
8631
8633
  tokenDetailsItems.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(TokenDetailRow, { children: [
8632
8634
  /* @__PURE__ */ jsxRuntime.jsx(TokenDetailLabel, { children: item.label }),
8633
- /* @__PURE__ */ jsxRuntime.jsx(TokenDetailValue, { $mono: !!item.mono, children: item.link ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.link, target: "_blank", rel: "noopener noreferrer", style: { color: "#3380FF", textDecoration: "none" }, children: item.value }) : item.value })
8635
+ /* @__PURE__ */ jsxRuntime.jsxs(TokenDetailValue, { $mono: !!item.mono, children: [
8636
+ item.link ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.link, target: "_blank", rel: "noopener noreferrer", style: { color: "#3380FF", textDecoration: "none" }, children: item.value }) : item.value,
8637
+ item.copyValue && /* @__PURE__ */ jsxRuntime.jsx(
8638
+ CopyBtn,
8639
+ {
8640
+ onClick: () => {
8641
+ navigator.clipboard.writeText(item.copyValue);
8642
+ setCopiedAddress(true);
8643
+ setTimeout(() => setCopiedAddress(false), 1500);
8644
+ },
8645
+ title: copiedAddress ? "Copied!" : "Copy address",
8646
+ children: copiedAddress ? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 6L9 17l-5-5" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
8647
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2" }),
8648
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
8649
+ ] })
8650
+ }
8651
+ )
8652
+ ] })
8634
8653
  ] }, item.label))
8635
8654
  ] }),
8636
8655
  /* @__PURE__ */ jsxRuntime.jsxs(TrustBadgesCard, { children: [
@@ -8645,7 +8664,7 @@ function PropertyOverview({
8645
8664
  /* @__PURE__ */ jsxRuntime.jsx(TrustBadgeLabel, { children: "Land Title" })
8646
8665
  ] }),
8647
8666
  /* @__PURE__ */ jsxRuntime.jsxs(TrustBadge, { children: [
8648
- /* @__PURE__ */ jsxRuntime.jsx(TrustBadgeLogoWrap, { children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: "/savills.png", alt: "Savills", style: { height: 38, borderRadius: 3, opacity: 0.85 } }) }),
8667
+ /* @__PURE__ */ jsxRuntime.jsx(TrustBadgeLogoWrap, { children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: "/savills.png", alt: "Savills", style: { height: 38, borderRadius: 3, filter: "grayscale(1) brightness(1.2) contrast(1.6)", opacity: 0.7 } }) }),
8649
8668
  /* @__PURE__ */ jsxRuntime.jsx(TrustBadgeLabel, { children: "Valuation" })
8650
8669
  ] })
8651
8670
  ] })
@@ -9338,6 +9357,18 @@ var TrustBadgeLabel = styled9__default.default.span`
9338
9357
  font-weight: 400;
9339
9358
  text-align: center;
9340
9359
  `;
9360
+ var CopyBtn = styled9__default.default.button`
9361
+ background: none;
9362
+ border: none;
9363
+ color: rgba(255,255,255,0.3);
9364
+ cursor: pointer;
9365
+ padding: 2px;
9366
+ margin-left: 6px;
9367
+ display: inline-flex;
9368
+ align-items: center;
9369
+ transition: color 0.15s;
9370
+ &:hover { color: rgba(255,255,255,0.7); }
9371
+ `;
9341
9372
  var ChainLogos = styled9__default.default.span`
9342
9373
  display: inline-flex;
9343
9374
  align-items: center;