@loafmarkets/ui 0.1.153 → 0.1.155

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
@@ -8410,29 +8410,6 @@ var GymIcon = /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "16", height: "16"
8410
8410
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 6h4" }),
8411
8411
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10 18h4" })
8412
8412
  ] });
8413
- var ShieldIcon = /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) });
8414
- var LockIcon = /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8415
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }),
8416
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
8417
- ] });
8418
- var FileCheckIcon = /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8419
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
8420
- /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "14 2 14 8 20 8" }),
8421
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 15l2 2 4-4" })
8422
- ] });
8423
- var BuildingIcon = /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8424
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", ry: "2" }),
8425
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 22v-4h6v4" }),
8426
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 6h.01" }),
8427
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 6h.01" }),
8428
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 6h.01" }),
8429
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 10h.01" }),
8430
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 14h.01" }),
8431
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 10h.01" }),
8432
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 14h.01" }),
8433
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 10h.01" }),
8434
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 14h.01" })
8435
- ] });
8436
8413
  var DEFAULT_FEATURES = [
8437
8414
  { icon: BedIcon, value: "\u2014", label: "Beds" },
8438
8415
  { icon: BathIcon, value: "\u2014", label: "Baths" },
@@ -8450,12 +8427,6 @@ var DEFAULT_PROPERTY_INFO = [
8450
8427
  { label: "Status", value: "N/A" }
8451
8428
  ];
8452
8429
  var DEFAULT_DESCRIPTION = "Property description not available.";
8453
- var TOKENHOLDER_PROTECTIONS = [
8454
- { icon: ShieldIcon, title: "SPV Structure", desc: "Each property is held in a dedicated Special Purpose Vehicle, isolating investor assets from platform risk." },
8455
- { icon: LockIcon, title: "Smart Contract Audit", desc: "All token contracts are audited by independent security firms before deployment." },
8456
- { icon: FileCheckIcon, title: "Title Insurance", desc: "Full title insurance coverage protects token holders against title defects and encumbrances." },
8457
- { icon: BuildingIcon, title: "Regulated Exchange", desc: "Trading occurs on a regulated marketplace with KYC/AML compliance and investor protections." }
8458
- ];
8459
8430
  function truncateAddress(addr) {
8460
8431
  if (addr.length <= 12) return addr;
8461
8432
  return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
@@ -8593,7 +8564,6 @@ function PropertyOverview({
8593
8564
  { label: "Last Valuation", value: isLoading && resolvedValuation == null ? loadingSkeleton : resolvedValuation ? resolvedValuation >= 1e6 ? `$${(resolvedValuation / 1e6).toFixed(2)}M` : `$${resolvedValuation.toLocaleString()}` : "\u2014" },
8594
8565
  { label: "Number of Offers", value: "\u2014" },
8595
8566
  { label: "Growth (Past 5 Years)", value: "\u2014" },
8596
- { label: "Security Interest in Asset", value: "Yes, secured to Land Registry" },
8597
8567
  { label: "Last Dividend", value: isLoading && monthlyDivPerShare == null ? loadingSkeleton : monthlyDivPerShare != null ? `${(monthlyDivPerShare * 100).toFixed(1)} cents` : "\u2014" },
8598
8568
  { label: "Upcoming Dividend", value: (() => {
8599
8569
  const now = /* @__PURE__ */ new Date();
@@ -8756,12 +8726,59 @@ function PropertyOverview({
8756
8726
  ] })
8757
8727
  ] }),
8758
8728
  /* @__PURE__ */ jsxRuntime.jsxs(Section, { children: [
8759
- /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { children: "Tokenholder Protections" }),
8760
- /* @__PURE__ */ jsxRuntime.jsx(ProtectionsGrid, { children: TOKENHOLDER_PROTECTIONS.map((p) => /* @__PURE__ */ jsxRuntime.jsxs(ProtectionCard, { children: [
8761
- /* @__PURE__ */ jsxRuntime.jsx(ProtectionIconWrap, { children: p.icon }),
8762
- /* @__PURE__ */ jsxRuntime.jsx(ProtectionTitle, { children: p.title }),
8763
- /* @__PURE__ */ jsxRuntime.jsx(ProtectionDesc, { children: p.desc })
8764
- ] }, p.title)) })
8729
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { children: "Tokenholder Security" }),
8730
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityTable, { children: [
8731
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRow, { children: [
8732
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowLeft, { children: [
8733
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLabel, { children: "Legal Structuring" }),
8734
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLogo, { children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: "/Baker_McKenzie.png", alt: "Baker McKenzie", style: { height: "22px", filter: "brightness(0) invert(1)", opacity: 0.8 } }) })
8735
+ ] }),
8736
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowLinks, { children: [
8737
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityDocLink, { href: "#documents", children: "Legal Opinion" }),
8738
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityDocLink, { href: "#documents", children: "Structuring Memo" })
8739
+ ] }) })
8740
+ ] }),
8741
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRow, { children: [
8742
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowLeft, { children: [
8743
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLabel, { children: "Security Interest in Asset" }),
8744
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowValue, { children: [
8745
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityStatusDot, {}),
8746
+ "Secured \u2014 NSW Land Registry"
8747
+ ] })
8748
+ ] }),
8749
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowLinks, { children: [
8750
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityDocLink, { href: "#documents", children: "Mortgage Agreement" }),
8751
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityDocLink, { href: "#documents", children: "Registry Filing" })
8752
+ ] }) })
8753
+ ] }),
8754
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRow, { children: [
8755
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowLeft, { children: [
8756
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLabel, { children: "Bankruptcy Remote" }),
8757
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowValue, { children: [
8758
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityStatusDot, {}),
8759
+ "Active \u2014 Dedicated SPV"
8760
+ ] })
8761
+ ] }),
8762
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsxRuntime.jsx(SecurityDocLink, { href: "#documents", children: "SPV Constitution" }) }) })
8763
+ ] }),
8764
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRow, { children: [
8765
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowLeft, { children: [
8766
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLabel, { children: "Independent Valuation" }),
8767
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowValue, { children: "CBRE & Savills" })
8768
+ ] }),
8769
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsxRuntime.jsx(SecurityDocLink, { href: "#documents", children: "Valuation Report" }) }) })
8770
+ ] }),
8771
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRow, { $noBorder: true, children: [
8772
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowLeft, { children: [
8773
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLabel, { children: "Data Protection" }),
8774
+ /* @__PURE__ */ jsxRuntime.jsxs(SecurityRowValue, { children: [
8775
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityStatusDot, {}),
8776
+ "Compliant \u2014 Australian Privacy Act"
8777
+ ] })
8778
+ ] }),
8779
+ /* @__PURE__ */ jsxRuntime.jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxRuntime.jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsxRuntime.jsx(SecurityDocLink, { href: "#documents", children: "DPA Agreement" }) }) })
8780
+ ] })
8781
+ ] })
8765
8782
  ] })
8766
8783
  ] });
8767
8784
  }
@@ -9135,38 +9152,70 @@ var TradingHoursNote = styled9__default.default.div`
9135
9152
  color: rgba(255,255,255,0.35);
9136
9153
  border-top: 1px solid rgba(255,255,255,0.04);
9137
9154
  `;
9138
- var ProtectionsGrid = styled9__default.default.div`
9139
- display: grid;
9140
- grid-template-columns: 1fr 1fr;
9141
- gap: 1rem;
9142
- @media (max-width: 768px) { grid-template-columns: 1fr; }
9143
- `;
9144
- var ProtectionCard = styled9__default.default.div`
9145
- background: rgba(255,255,255,0.025);
9146
- border: 1px solid rgba(255,255,255,0.06);
9147
- border-radius: 10px;
9148
- padding: 1.25rem;
9155
+ var SecurityTable = styled9__default.default.div`
9156
+ display: flex;
9157
+ flex-direction: column;
9149
9158
  `;
9150
- var ProtectionIconWrap = styled9__default.default.div`
9151
- width: 36px;
9152
- height: 36px;
9153
- border-radius: 8px;
9154
- background: rgba(212,175,55,0.1);
9159
+ var SecurityRow = styled9__default.default.div`
9155
9160
  display: flex;
9156
9161
  align-items: center;
9157
- justify-content: center;
9158
- margin-bottom: 0.75rem;
9162
+ justify-content: space-between;
9163
+ padding: 1rem 0;
9164
+ border-bottom: ${({ $noBorder }) => $noBorder ? "none" : "1px solid rgba(255,255,255,0.06)"};
9165
+ gap: 1rem;
9166
+ @media (max-width: 640px) { flex-direction: column; align-items: flex-start; }
9159
9167
  `;
9160
- var ProtectionTitle = styled9__default.default.div`
9161
- font-size: 0.92rem;
9168
+ var SecurityRowLeft = styled9__default.default.div`
9169
+ display: flex;
9170
+ flex-direction: column;
9171
+ gap: 4px;
9172
+ `;
9173
+ var SecurityRowLabel = styled9__default.default.div`
9174
+ font-size: 0.88rem;
9162
9175
  font-weight: 600;
9163
9176
  color: #fff;
9164
- margin-bottom: 0.4rem;
9165
9177
  `;
9166
- var ProtectionDesc = styled9__default.default.div`
9167
- font-size: 0.8rem;
9178
+ var SecurityRowValue = styled9__default.default.div`
9179
+ display: flex;
9180
+ align-items: center;
9181
+ gap: 6px;
9182
+ font-size: 0.78rem;
9168
9183
  color: rgba(255,255,255,0.5);
9169
- line-height: 1.5;
9184
+ `;
9185
+ var SecurityRowLogo = styled9__default.default.div`
9186
+ display: flex;
9187
+ align-items: center;
9188
+ margin-top: 2px;
9189
+ `;
9190
+ var SecurityStatusDot = styled9__default.default.span`
9191
+ width: 6px;
9192
+ height: 6px;
9193
+ border-radius: 50%;
9194
+ background: #4ade80;
9195
+ display: inline-block;
9196
+ flex-shrink: 0;
9197
+ `;
9198
+ var SecurityRowRight = styled9__default.default.div`
9199
+ display: flex;
9200
+ align-items: center;
9201
+ flex-shrink: 0;
9202
+ `;
9203
+ var SecurityRowLinks = styled9__default.default.div`
9204
+ display: flex;
9205
+ gap: 1.25rem;
9206
+ `;
9207
+ var SecurityDocLink = styled9__default.default.a`
9208
+ font-size: 0.78rem;
9209
+ color: rgba(255,255,255,0.45);
9210
+ text-decoration: underline;
9211
+ text-underline-offset: 3px;
9212
+ text-decoration-color: rgba(255,255,255,0.2);
9213
+ cursor: pointer;
9214
+ transition: color 0.15s, text-decoration-color 0.15s;
9215
+ &:hover {
9216
+ color: rgba(212,175,55,0.9);
9217
+ text-decoration-color: rgba(212,175,55,0.5);
9218
+ }
9170
9219
  `;
9171
9220
  var HoldRatioWrap = styled9__default.default.div`
9172
9221
  display: flex;